Commit 58688f7b by haojie

1

parent 66f872bc
No preview for this file type
...@@ -214,6 +214,8 @@ const cn = { ...@@ -214,6 +214,8 @@ const cn = {
}, },
Search: { Search: {
search: '搜索', search: '搜索',
searchRecords: '搜索记录',
clearRecord: '清除记录',
TokenName: 'Name', TokenName: 'Name',
TokenPrice: 'Price', TokenPrice: 'Price',
up_down: '24H', up_down: '24H',
...@@ -300,7 +302,7 @@ const cn = { ...@@ -300,7 +302,7 @@ const cn = {
CurrentTotal: '当前总人数:', CurrentTotal: '当前总人数:',
Currentpeopleonline: '当前在线人数:', Currentpeopleonline: '当前在线人数:',
Totaladditions: '新增总人数:', Totaladditions: '新增总人数:',
peopleaddedonline: '新增在线人数:', peopleaddedonline: '在线人数:',
// hoder // hoder
Holders: '持有人', Holders: '持有人',
TotalHolder: '总持有人:', TotalHolder: '总持有人:',
...@@ -332,7 +334,7 @@ const cn = { ...@@ -332,7 +334,7 @@ const cn = {
tgCurrentTotal: '当前总人数:', tgCurrentTotal: '当前总人数:',
tgCurrentPeople: '当前在线人数:', tgCurrentPeople: '当前在线人数:',
TotalNumberofAdditions: '新增总人数', TotalNumberofAdditions: '新增总人数',
Numberofpeopleaddedonline: '新增在线人数', Numberofpeopleaddedonline: '在线人数',
// 流动池 // 流动池
poolTitle: '流动池', poolTitle: '流动池',
curPool: '当前流动池:', curPool: '当前流动池:',
......
...@@ -210,6 +210,8 @@ const cn = { ...@@ -210,6 +210,8 @@ const cn = {
}, },
Search: { Search: {
search: 'Search', search: 'Search',
clearRecord: 'Clear records',
searchRecords: 'Search records',
TokenName: 'Name', TokenName: 'Name',
TokenPrice: 'Price', TokenPrice: 'Price',
up_down: '24H', up_down: '24H',
...@@ -297,7 +299,7 @@ const cn = { ...@@ -297,7 +299,7 @@ const cn = {
CurrentTotal: 'Members:', CurrentTotal: 'Members:',
Currentpeopleonline: 'Online Members:', Currentpeopleonline: 'Online Members:',
Totaladditions: 'Total number of additions Online Change:', Totaladditions: 'Total number of additions Online Change:',
peopleaddedonline: 'Number of people added online:', peopleaddedonline: 'Number of people online:',
// hoder // hoder
Holders: 'Holders', Holders: 'Holders',
TotalHolder: 'Total Holder:', TotalHolder: 'Total Holder:',
......
<svg width="23" height="23" viewBox="0 0 23 23" fill="" xmlns="http://www.w3.org/2000/svg">
<path d="M21.792 19.1066C22.1829 19.497 22.1831 20.1306 21.7924 20.5213L21.5208 20.7929C21.1303 21.1834 20.4971 21.1834 20.1066 20.7929L17.384 18.0702C13.2243 21.3009 7.23197 20.5459 4.00355 16.3839C0.77514 12.222 1.5279 6.23184 5.68754 3.0034C9.84719 -0.225037 15.8395 0.527732 19.068 4.68969C21.7381 8.13092 21.7381 12.945 19.068 16.3862L21.792 19.1066ZM17.0202 5.06265C13.9931 2.03784 9.08756 2.03784 6.06278 5.06265C3.038 8.08974 3.038 12.9953 6.06278 16.0201C9.08985 19.0449 13.9954 19.0449 17.0202 16.0201C20.0449 12.993 20.0427 8.08745 17.0179 5.06265H17.0202Z" fill=""/>
<path d="M21.792 19.1066C22.1829 19.497 22.1831 20.1306 21.7924 20.5213L21.5208 20.7929C21.1303 21.1834 20.4971 21.1834 20.1066 20.7929L17.384 18.0702C13.2243 21.3009 7.23197 20.5459 4.00355 16.3839C0.77514 12.222 1.5279 6.23184 5.68754 3.0034C9.84719 -0.225037 15.8395 0.527732 19.068 4.68969C21.7381 8.13092 21.7381 12.945 19.068 16.3862L21.792 19.1066ZM17.0202 5.06265C13.9931 2.03784 9.08756 2.03784 6.06278 5.06265C3.038 8.08974 3.038 12.9953 6.06278 16.0201C9.08985 19.0449 13.9954 19.0449 17.0202 16.0201C20.0449 12.993 20.0427 8.08745 17.0179 5.06265H17.0202Z" stroke=""/>
</svg>
\ No newline at end of file
<svg width="30" height="30" viewBox="0 0 30 30" fill="none" xmlns="http://www.w3.org/2000/svg">
<circle cx="15" cy="15" r="15" fill="white"/>
<path d="M15.5001 4.07153L25.3975 9.78582V21.2144L20.1809 24.6072L15.6786 27.2858H13.8929L5.06689 22.2858L5.60262 9.78582L15.5001 4.07153Z" fill="#2D374B"/>
<path d="M25.1642 19.0473L25.1667 20.6222C25.1614 20.7298 25.1335 20.835 25.0848 20.9311C25.0361 21.0271 24.9677 21.1118 24.884 21.1797L23.1559 22.1806L18.3788 14.4546L20.2157 11.3398L25.1642 19.0473Z" fill="#28A0F0"/>
<path d="M19.0798 24.5432L15.6313 19.1311L17.7366 15.5592L22.2652 22.6971L19.0798 24.5432Z" fill="#28A0F0"/>
<path d="M4.43058 21.9216L6.86884 23.3266L14.9857 10.3097L13.6082 10.2741C12.4345 10.2575 11.1701 10.5625 10.5898 11.51L5.98055 18.6541L4.43058 21.0366V21.9216Z" fill="white"/>
<path d="M16.0399 10.3227L19.6704 10.3095L10.6968 25.5306L7.82577 23.8775L16.0399 10.3227Z" fill="white"/>
<path d="M26.6961 10.2907C26.6795 9.916 26.572 9.55099 26.3829 9.22712C26.1938 8.90325 25.9287 8.63023 25.6106 8.4316L16.5848 3.24116C16.2625 3.08282 15.9083 3.00049 15.5493 3.00049C15.1903 3.00049 14.8361 3.08282 14.5139 3.24116C14.4385 3.27911 5.73639 8.32613 5.73639 8.32613C5.61548 8.38419 5.49984 8.45262 5.39076 8.53066C5.1082 8.7316 4.87484 8.99395 4.70822 9.29801C4.54159 9.60207 4.44603 9.93993 4.42871 10.2862V21.0359L5.97868 18.6534L5.96674 10.3594C5.974 10.2457 6.00638 10.135 6.06155 10.0354C6.11673 9.93567 6.19332 9.84946 6.28582 9.78293C6.3268 9.75353 15.1775 4.63043 15.2056 4.61636C15.3116 4.56478 15.4278 4.53772 15.5456 4.53716C15.6635 4.53661 15.7799 4.56258 15.8864 4.61315L24.7955 9.73786C24.8993 9.80375 24.9856 9.89363 25.0473 9.99993C25.109 10.1062 25.1443 10.2258 25.15 10.3486V20.6233C25.1479 20.7298 25.123 20.8346 25.0771 20.9308C25.0312 21.0269 24.9652 21.1121 24.8837 21.1807L23.1556 22.1816L22.2648 22.6983L19.0793 24.5444L15.8488 26.4166C15.6702 26.4796 15.4748 26.4758 15.2988 26.4057L11.4768 24.2075L10.6961 25.5315L14.131 27.5091C14.2447 27.5736 14.3459 27.6309 14.4289 27.6776C14.5575 27.7489 14.6452 27.7979 14.676 27.8128C14.9634 27.9388 15.274 28.0027 15.5878 28.0004C15.8755 28.0008 16.1608 27.9472 16.4287 27.8422L25.8117 22.4084C26.0764 22.2025 26.2928 21.941 26.4455 21.6425C26.5983 21.3439 26.6837 21.0155 26.6957 20.6803L26.6961 10.2907Z" fill="#96BEDC"/>
</svg>
\ No newline at end of file
<svg width="30" height="30" viewBox="0 0 30 30" fill="none" xmlns="http://www.w3.org/2000/svg">
<circle cx="15" cy="15" r="15" fill="white"/>
<path d="M15 5.52778C15.4128 5.52646 15.8178 5.64077 16.1691 5.85775C16.5203 6.07475 16.8038 6.38575 16.9874 6.75555L23.2372 19.2555C23.4067 19.5943 23.4867 19.9709 23.4698 20.3494C23.4528 20.7278 23.3395 21.0958 23.1404 21.4181C22.9411 21.7404 22.663 22.0064 22.332 22.1909C22.0011 22.3754 21.6285 22.4723 21.2497 22.4722H8.75027C8.37142 22.4723 7.99884 22.3754 7.66794 22.1909C7.33704 22.0064 7.05881 21.7404 6.85967 21.4181C6.66054 21.0958 6.54711 20.7278 6.53016 20.3494C6.51321 19.9709 6.59332 19.5943 6.76285 19.2555L13.0126 6.75555C13.1962 6.38575 13.4797 6.07475 13.8309 5.85775C14.1821 5.64077 14.5871 5.52646 15 5.52778ZM15 4C14.3037 3.99992 13.6211 4.19374 13.0287 4.55973C12.4363 4.92573 11.9575 5.44945 11.646 6.07222L5.39624 18.5722C5.11022 19.1439 4.97512 19.7794 5.00377 20.4181C5.03242 21.0567 5.22387 21.6775 5.55993 22.2213C5.896 22.7652 6.36552 23.2141 6.9239 23.5254C7.48228 23.8367 8.11098 24.0001 8.75027 24H21.2497C21.889 24.0001 22.5176 23.8367 23.076 23.5254C23.6344 23.2141 24.1039 22.7652 24.44 22.2213C24.7761 21.6775 24.9675 21.0567 24.9962 20.4181C25.0249 19.7794 24.8897 19.1439 24.6038 18.5722L18.354 6.07222C18.0425 5.44945 17.5637 4.92573 16.9713 4.55973C16.3789 4.19374 15.6963 3.99992 15 4Z" fill="#70D44B"/>
</svg>
\ No newline at end of file
<svg width="30" height="30" viewBox="0 0 30 30" fill="none" xmlns="http://www.w3.org/2000/svg">
<circle cx="15" cy="15" r="15" fill="white"/>
<path d="M14.926 2L4 8.49295V21.4746L14.926 27.9631L25.8436 21.4746V8.49295L14.926 2ZM22.6089 19.551L14.926 24.1161L7.23891 19.551V10.4121L14.926 5.84703L22.6089 10.4121V19.551Z" fill="#002D74"/>
<path style="mix-blend-mode:multiply" d="M14.9263 27.9631L25.8439 21.4746V8.49295L14.9263 2V5.85139L22.6091 10.4165V19.5553L14.9263 24.1161V27.9631Z" fill="url(#paint0_linear_4746_31309)"/>
<path style="mix-blend-mode:multiply" d="M14.9175 2L4 8.48861V21.4703L14.9175 27.9631V24.1118L7.23467 19.5466V10.4078L14.9175 5.84703V2Z" fill="url(#paint1_linear_4746_31309)"/>
<path d="M20.0213 18.0148L14.922 21.0438L9.81836 18.0148V11.9527L14.922 8.91943L20.0213 11.9527L17.8987 13.2147L14.922 11.4435L11.9452 13.2147V16.7484L14.922 18.5196L17.8987 16.7484L20.0213 18.0148Z" fill="#002D74"/>
<defs>
<linearGradient id="paint0_linear_4746_31309" x1="20.385" y1="27.9631" x2="20.385" y2="14.9816" gradientUnits="userSpaceOnUse">
<stop stop-color="#002D74"/>
<stop offset="1" stop-color="#002D74" stop-opacity="0"/>
</linearGradient>
<linearGradient id="paint1_linear_4746_31309" x1="9.45878" y1="2" x2="9.45878" y2="14.9816" gradientUnits="userSpaceOnUse">
<stop stop-color="#002D74"/>
<stop offset="1" stop-color="#002D74" stop-opacity="0"/>
</linearGradient>
</defs>
</svg>
\ No newline at end of file
<svg width="30" height="30" viewBox="0 0 30 30" fill="none" xmlns="http://www.w3.org/2000/svg">
<circle cx="15" cy="15" r="15" fill="white"/>
<g clip-path="url(#clip0_945_26681)">
<path d="M8.9073 17.0458C9.79222 17.0458 10.6091 16.7497 11.2672 16.2372L5.86665 10.8159C5.35609 11.4651 5.06109 12.2851 5.06109 13.1849C5.04976 15.3147 6.7743 17.0458 8.9073 17.0458Z" fill="#04795B"/>
<path d="M24.9727 13.1735C24.9727 12.2852 24.6777 11.4652 24.1671 10.8046L18.7666 16.2258C19.4134 16.7383 20.2302 17.0344 21.1265 17.0344C23.2481 17.0458 24.9727 15.3147 24.9727 13.1735Z" fill="#04795B"/>
<path d="M27.6958 7.2854L25.3019 9.68855C26.0961 10.6452 26.5727 11.8525 26.5727 13.1964C26.5727 16.2145 24.1333 18.6632 21.1267 18.6632C19.7993 18.6632 18.5853 18.1848 17.6323 17.3876L15.0114 20.0185L12.3906 17.3876C11.4375 18.1848 10.2349 18.6632 8.8961 18.6632C5.88947 18.6632 3.45016 16.2145 3.45016 13.1964C3.45016 11.8638 3.9267 10.6452 4.72091 9.68855L3.49558 8.45851L2.32695 7.2854C0.965488 9.54046 0.182617 12.1714 0.182617 14.9959C0.182617 23.2188 6.81981 29.8702 15.0001 29.8702C23.1802 29.8702 29.8175 23.2075 29.8175 14.9959C29.8402 12.16 29.0573 9.52909 27.6958 7.2854Z" fill="#04795B"/>
<path d="M25.7328 4.7227C23.0438 1.88681 19.2316 0.110107 15.0111 0.110107C10.7905 0.110107 6.98969 1.88681 4.2894 4.7227C3.92636 5.10997 3.57467 5.52 3.24561 5.94137L14.9997 17.7405L26.7538 5.92998C26.4588 5.51994 26.1071 5.09858 25.7328 4.7227ZM15.0111 2.04626C18.4828 2.04626 21.7051 3.39019 24.1215 5.83888L15.0111 14.9844L5.90048 5.83888C8.32846 3.39019 11.5393 2.04626 15.0111 2.04626Z" fill="#04795B"/>
</g>
<defs>
<clipPath id="clip0_945_26681">
<rect width="30" height="30" fill="white"/>
</clipPath>
</defs>
</svg>
\ No newline at end of file
<svg width="30" height="30" viewBox="0 0 30 30" fill="none" xmlns="http://www.w3.org/2000/svg">
<circle cx="15" cy="15" r="15" fill="white"/>
<path d="M29.9967 15.0542C29.8211 6.49018 22.8591 -0.286429 14.4795 0.00932479C6.3007 0.292219 -0.172129 7.31315 0.00349072 15.71C0.128933 21.9079 3.82948 27.1801 9.03534 29.4947C9.77545 28.5302 10.3901 26.8072 10.6912 25.8427C10.9922 25.0584 11.3184 24.2868 11.6571 23.541C13.1749 24.0811 15.2196 23.5667 16.3486 22.3194L16.3988 22.268C15.044 21.6636 13.1749 21.9722 11.9456 22.9495C12.3596 22.0622 12.8112 21.2007 13.2753 20.3649C14.7681 20.9821 16.8378 20.5578 18.0045 19.3747L18.0546 19.3233C16.75 18.6675 14.906 18.8732 13.6391 19.7477C14.1032 18.9633 14.5799 18.1917 15.0817 17.4716C16.6371 17.9603 18.6819 17.3559 19.7481 16.0572L19.7857 16.0057C18.5188 15.5042 16.8629 15.8 15.6838 16.6487C15.7214 16.5972 15.7716 16.5329 15.8092 16.4815C16.1103 16.0829 16.4239 15.6843 16.7375 15.2985C18.569 14.7713 20.1997 12.8553 20.4631 10.875L20.4757 10.7979H20.4631C18.569 11.1837 16.8128 13.0996 16.4615 15.1185C16.1605 15.4914 15.8594 15.8643 15.5709 16.25C16.0476 14.9384 15.9598 13.3311 15.2698 12.2252L15.2322 12.2767C14.191 13.6268 14.0279 15.8257 14.8308 17.2916C14.3541 17.986 13.89 18.6932 13.4509 19.439C13.7269 17.9474 13.2627 16.2115 12.2341 15.2342L12.209 15.2985C11.5316 16.8544 11.8954 19.0018 13.0119 20.2234C12.5728 21.0078 12.1588 21.8179 11.7574 22.6538C11.9958 21.0978 11.4564 19.2976 10.3776 18.3332L10.3525 18.3975C9.73781 20.0305 10.2145 22.2423 11.4062 23.4253C11.1428 24.0039 10.8919 24.5826 10.6535 25.1869C10.5908 25.1226 10.5156 25.0841 10.4277 25.0455C10.1141 24.9555 9.68764 24.7883 9.21096 24.4926C8.89735 24.2997 8.55866 24.1454 8.21996 24.0296C6.86518 23.5796 7.06589 22.9109 6.36342 21.5607C6.31324 21.4707 5.76129 20.8792 5.63585 20.7635C5.61076 20.7378 5.24698 20.5192 5.07136 20.1334C4.90829 19.7734 4.80793 19.439 4.78284 19.1176C4.73267 18.6804 4.55705 18.3975 4.14309 18.2432C2.14855 17.5359 3.0392 14.887 3.11446 14.5398C3.17718 14.2441 2.91375 13.5883 2.82594 13.2282C2.8134 13.1896 2.80085 13.1382 2.78831 13.0611C2.65032 12.3538 2.96393 11.7494 3.20227 11.5051C3.44061 11.2608 4.26853 10.8622 4.44415 10.6307C4.61977 10.3993 4.74521 10.1421 4.92083 9.9235C5.15917 9.62774 5.86165 9.04909 6.82755 8.52188C7.40459 8.20041 7.50494 7.37744 7.73074 7.12027C8.10707 6.68307 8.6841 6.68307 9.1106 6.2973C9.32385 6.10442 9.63746 6.00155 9.83817 5.79581C10.8292 4.75424 12.1463 4.34276 13.4509 4.08558C14.329 3.91841 15.3075 4.17559 16.2357 4.34276C16.3737 4.36847 16.4992 4.39419 16.6246 4.43277C18.6944 4.50992 21.1782 4.94712 22.0813 5.84724C22.6458 6.41303 22.9218 7.0174 23.0472 7.44174C23.1978 7.91752 23.3985 8.36757 23.6494 8.77906L24.2013 9.70489C24.5526 10.2835 24.6655 10.9908 24.5149 11.6594C24.4271 12.0452 24.3895 12.4438 24.4898 12.6624C24.6654 13.0096 25.1923 13.5754 25.5059 13.8969C25.6564 14.0512 25.8321 14.1926 26.0077 14.3084C26.4342 14.5784 27.237 15.1185 27.237 15.157C27.237 15.2213 27.2997 15.4785 26.9485 15.8C26.5973 16.1215 25.9199 16.623 25.9199 16.623C25.9199 16.623 25.9575 16.8544 26.0453 17.0344C26.1457 17.2145 26.3715 17.4974 26.2962 17.7417C26.2209 17.986 25.7317 18.1917 25.8697 18.4618C26.0077 18.7447 26.3589 18.8218 26.2586 19.079C26.1582 19.3233 25.669 19.7605 25.7192 19.9405C25.7693 20.1206 26.1708 21.8436 25.2425 22.1394C24.5526 22.3709 22.6458 22.4866 21.7552 22.538C21.3663 22.5637 21.0276 22.7823 20.8395 23.1295C20.7015 23.3867 20.5635 23.7468 20.5008 24.2225C20.3251 25.4313 19.1585 28.2216 19.1585 28.2216C19.1585 28.2216 19.1209 28.2988 19.0707 28.4145C18.9704 28.6717 18.8198 29.0575 18.8449 29.2246C18.8575 29.3275 18.9955 29.5332 19.1962 29.7776C19.3592 29.9704 19.6227 30.0476 19.861 29.9704C25.8697 27.8101 30.1347 21.9079 29.9967 15.0542Z" fill="#00DACC"/>
</svg>
\ No newline at end of file
<svg width="32" height="32" viewBox="0 0 32 32" fill="none" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
<circle cx="16" cy="16" r="15" fill="black" stroke="white"/>
<rect x="5" y="6" width="21" height="21" fill="url(#pattern0)"/>
<defs>
<pattern id="pattern0" patternContentUnits="objectBoundingBox" width="1" height="1">
<use xlink:href="#image0_4747_31405" transform="scale(0.0078125)"/>
</pattern>
<image id="image0_4747_31405" width="128" height="128" xlink:href="data:image/png;base64,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"/>
</defs>
</svg>
\ No newline at end of file
<svg width="31" height="31" viewBox="0 0 31 31" fill="none" xmlns="http://www.w3.org/2000/svg">
<path d="M15.5 31C24.0606 31 31 24.0606 31 15.5C31 6.93935 24.0606 0 15.5 0C6.93935 0 0 6.93935 0 15.5C0 24.0606 6.93935 31 15.5 31Z" fill="#863FF8"/>
<path d="M11.8989 6.4287C11.3847 6.1237 10.7469 6.1237 10.2326 6.4287L6.12453 8.86515C5.62263 9.16282 5.31445 9.70608 5.31445 10.2932V15.1841C5.31445 15.7712 5.62263 16.3145 6.12453 16.6121L10.2326 19.0486C10.7469 19.3536 11.3847 19.3536 11.8989 19.0486L20.3774 14.0201L23.9378 16.1317V20.3908L20.3774 22.5024L16.8171 20.3908V17.709L14.6261 19.0897V20.7067C14.6261 21.2938 14.9343 21.8371 15.4362 22.1348L19.5443 24.5712C20.0585 24.8762 20.6963 24.8762 21.2106 24.5712L25.3187 22.1348C25.8206 21.8371 26.1287 21.2938 26.1287 20.7067V15.8158C26.1287 15.2287 25.8206 14.6854 25.3187 14.3878L21.2106 11.9513C20.6963 11.6463 20.0585 11.6463 19.5443 11.9513L11.0658 16.9798L7.50543 14.8682V10.6091L11.0658 8.49746L14.6261 10.6091V13.2909L16.8171 11.9103V10.2932C16.8171 9.70608 16.5089 9.16282 16.007 8.86515L11.8989 6.4287Z" fill="white"/>
</svg>
\ No newline at end of file
// import Web3 from "web3"; import { ethers } from 'ethers';
import { ethers } from "ethers";
export const WebS = (token) => { export const WebS = (token) => {
// let web3 = null; let obj = {
// let newToken = ""; token: '',
// if (typeof Web3 !== "undefined") { type: 1,
// web3 = new Web3(Web3.ethereum); };
// }
// try {
// newToken = web3.utils.toChecksumAddress(token);
// } catch (e) {
// newToken = token;
// }
// return newToken;
let newToken = "";
try { try {
newToken = ethers.utils.getAddress(token); obj.token = ethers.utils.getAddress(token);
obj.type = 1;
} catch (e) { } catch (e) {
newToken = token; obj.token = token;
obj.type = 0;
} }
return newToken; return obj;
}; };
...@@ -26,7 +26,7 @@ const readDirSync = (path) => { ...@@ -26,7 +26,7 @@ const readDirSync = (path) => {
// 这一层是png // 这一层是png
newfs.forEach((it) => { newfs.forEach((it) => {
obj[file].push({ obj[file].push({
img: `${dirName}/${it}`, img: `${dirName}/${item}/${it}`,
name: it.replace('.png', ''), name: it.replace('.png', ''),
}); });
}); });
...@@ -34,6 +34,7 @@ const readDirSync = (path) => { ...@@ -34,6 +34,7 @@ const readDirSync = (path) => {
}); });
}; };
readDirSync(root); readDirSync(root);
console.log(obj);
console.log(JSON.stringify(obj)); console.log(JSON.stringify(obj));
// 写不进去---0.0 // 写不进去---0.0
// fs.writeFileSync('./text.js', JSON.stringify(obj), function (err) { // fs.writeFileSync('./text.js', JSON.stringify(obj), function (err) {
......
...@@ -494,3 +494,18 @@ export const ArraySpecifiedPosition = ( ...@@ -494,3 +494,18 @@ export const ArraySpecifiedPosition = (
list.splice(newIndex, 0, obj); list.splice(newIndex, 0, obj);
return list; return list;
}; };
/**
* 数组去重
*/
export const Arrayduplication = (list: any) => {
let newList: any = [list[0]];
list.forEach((item: any) => {
let index = newList.find((it: any) => item === it);
if (!index) {
newList.push(item);
}
});
return newList;
};
...@@ -14,7 +14,11 @@ ...@@ -14,7 +14,11 @@
:currentPath="currentPath" :currentPath="currentPath"
> >
<template #chartSwitch> <template #chartSwitch>
<radio-group type="analysisDate" v-model:current="date" @change="getData"> <radio-group
type="analysisDate"
v-model:current="date"
@change="getData('')"
>
</radio-group> </radio-group>
<TimeFilter @change="onChange"></TimeFilter> <TimeFilter @change="onChange"></TimeFilter>
</template> </template>
...@@ -115,7 +119,7 @@ onMounted(() => { ...@@ -115,7 +119,7 @@ onMounted(() => {
}); });
// 提交时间戳 // 提交时间戳
const onChange = (value: number) => { const onChange = (value: number) => {
console.log(value); getData(value);
}; };
const changeEchart = () => { const changeEchart = () => {
onInit(); onInit();
...@@ -124,13 +128,14 @@ const changeEchart = () => { ...@@ -124,13 +128,14 @@ const changeEchart = () => {
const onInit = () => { const onInit = () => {
initChart('chart-box-2', props.theme); initChart('chart-box-2', props.theme);
}; };
const getData = () => { const getData = (timestamp: number) => {
ShowLoading(myChart); ShowLoading(myChart);
request request
.get(`/v1${chain.value}/analysis/getBuyAndSellNumber`, { .get(`/v1${chain.value}/analysis/getBuyAndSellNumberV1`, {
params: { params: {
tag: props.tb, tag: props.tb,
date: date.value, date: date.value,
timestamp: timestamp ? timestamp : undefined,
}, },
}) })
.then((res: any) => { .then((res: any) => {
......
...@@ -13,7 +13,11 @@ ...@@ -13,7 +13,11 @@
:currentPath="currentPath" :currentPath="currentPath"
> >
<template #chartSwitch> <template #chartSwitch>
<radio-group type="analysisDate" v-model:current="date" @change="getData"> <radio-group
type="analysisDate"
v-model:current="date"
@change="getData('')"
>
</radio-group> </radio-group>
<TimeFilter @change="onChange"></TimeFilter> <TimeFilter @change="onChange"></TimeFilter>
</template> </template>
...@@ -70,7 +74,7 @@ watch( ...@@ -70,7 +74,7 @@ watch(
); );
// 提交时间戳 // 提交时间戳
const onChange = (value: number) => { const onChange = (value: number) => {
console.log(value); getData(value);
}; };
// 当前链 // 当前链
const chain = useChain(); const chain = useChain();
...@@ -119,13 +123,14 @@ const initChart = (id: string, theme: string, height: string = '212px') => { ...@@ -119,13 +123,14 @@ const initChart = (id: string, theme: string, height: string = '212px') => {
chartDom.style.height = height; chartDom.style.height = height;
myChart = echarts.init(chartDom, theme); myChart = echarts.init(chartDom, theme);
}; };
const getData = () => { const getData = (timestamp: number) => {
ShowLoading(myChart); ShowLoading(myChart);
request request
.get(`/v1${chain.value}/analysis/getDiscordData`, { .get(`/v1${chain.value}/analysis/getDiscordData`, {
params: { params: {
tag: props.token, tag: props.token,
date: date.value, date: date.value,
timestamp: timestamp ? timestamp : undefined,
}, },
}) })
.then((res: any) => { .then((res: any) => {
......
...@@ -13,7 +13,11 @@ ...@@ -13,7 +13,11 @@
:currentPath="currentPath" :currentPath="currentPath"
> >
<template #chartSwitch> <template #chartSwitch>
<radio-group type="analysisDate" v-model:current="date" @change="getData"> <radio-group
type="analysisDate"
v-model:current="date"
@change="getData('')"
>
</radio-group> </radio-group>
<TimeFilter @change="onChange"></TimeFilter> <TimeFilter @change="onChange"></TimeFilter>
</template> </template>
...@@ -83,7 +87,8 @@ watch( ...@@ -83,7 +87,8 @@ watch(
const chain = useChain(); const chain = useChain();
// 提交时间戳 // 提交时间戳
const onChange = (value: number) => { const onChange = (value: number) => {
console.log(value); // 请求接口
getData(value);
}; };
let myChart: any = null; let myChart: any = null;
// 头部数据 // 头部数据
...@@ -130,13 +135,14 @@ watch( ...@@ -130,13 +135,14 @@ watch(
changeEchart(); changeEchart();
} }
); );
const getData = () => { const getData = (timestamp: number) => {
ShowLoading(myChart); ShowLoading(myChart);
request request
.get(`/v1${chain.value}/analysis/getNhData`, { .get(`/v1${chain.value}/analysis/getNhDataV1`, {
params: { params: {
tag: props.tb, tag: props.tb,
date: date.value, date: date.value,
timestamp: timestamp ? timestamp : undefined,
}, },
}) })
.then((res: any) => { .then((res: any) => {
......
...@@ -13,7 +13,11 @@ ...@@ -13,7 +13,11 @@
:currentPath="currentPath" :currentPath="currentPath"
> >
<template #chartSwitch> <template #chartSwitch>
<radio-group type="analysisDate" v-model:current="date" @change="getData"> <radio-group
type="analysisDate"
v-model:current="date"
@change="getData('')"
>
</radio-group> </radio-group>
<TimeFilter @change="onChange"></TimeFilter> <TimeFilter @change="onChange"></TimeFilter>
</template> </template>
...@@ -115,7 +119,7 @@ const changeEchart = () => { ...@@ -115,7 +119,7 @@ const changeEchart = () => {
}; };
// 提交时间戳 // 提交时间戳
const onChange = (value: number) => { const onChange = (value: number) => {
console.log(value); getData(value);
}; };
const initChart = (id: string, theme: string, height: string = '212px') => { const initChart = (id: string, theme: string, height: string = '212px') => {
if (myChart) { if (myChart) {
...@@ -129,13 +133,14 @@ const initChart = (id: string, theme: string, height: string = '212px') => { ...@@ -129,13 +133,14 @@ const initChart = (id: string, theme: string, height: string = '212px') => {
const onInit = () => { const onInit = () => {
initChart('chart-box-3', props.theme); initChart('chart-box-3', props.theme);
}; };
const getData = () => { const getData = (timestamp: number) => {
ShowLoading(myChart); ShowLoading(myChart);
request request
.get(`/v1${chain.value}/analysis/getTurnover`, { .get(`/v1${chain.value}/analysis/getTurnoverV1`, {
params: { params: {
tag: props.tb, tag: props.tb,
date: date.value, date: date.value,
timestamp: timestamp ? timestamp : undefined,
}, },
}) })
.then((res: any) => { .then((res: any) => {
......
...@@ -13,7 +13,11 @@ ...@@ -13,7 +13,11 @@
:currentPath="currentPath" :currentPath="currentPath"
> >
<template #chartSwitch> <template #chartSwitch>
<RadioGroup type="analysisDate" v-model:current="date" @change="getData"> <RadioGroup
type="analysisDate"
v-model:current="date"
@change="getData('')"
>
</RadioGroup> </RadioGroup>
<TimeFilter @change="onChange"></TimeFilter> <TimeFilter @change="onChange"></TimeFilter>
</template> </template>
...@@ -72,7 +76,7 @@ watch( ...@@ -72,7 +76,7 @@ watch(
); );
// 提交时间戳 // 提交时间戳
const onChange = (value: number) => { const onChange = (value: number) => {
console.log(value); getData(value);
}; };
const chain = useChain(); const chain = useChain();
const formData = reactive({ const formData = reactive({
...@@ -115,13 +119,14 @@ const initChart = (id: string, theme: string, height: string = '212px') => { ...@@ -115,13 +119,14 @@ const initChart = (id: string, theme: string, height: string = '212px') => {
chartDom.style.height = height; chartDom.style.height = height;
myChart = echarts.init(chartDom, theme); myChart = echarts.init(chartDom, theme);
}; };
const getData = () => { const getData = (timestamp: number) => {
ShowLoading(myChart); ShowLoading(myChart);
request request
.get(`/v1${chain.value}/analysis/getUbData`, { .get(`/v1${chain.value}/analysis/getUbDataV1`, {
params: { params: {
tb: props.tb, tb: props.tb,
date: date.value, date: date.value,
timestamp: timestamp ? timestamp : undefined,
}, },
}) })
.then((res: any) => { .then((res: any) => {
......
...@@ -13,7 +13,11 @@ ...@@ -13,7 +13,11 @@
:currentPath="currentPath" :currentPath="currentPath"
> >
<template #chartSwitch> <template #chartSwitch>
<radio-group type="analysisDate" v-model:current="date" @change="getData"> <radio-group
type="analysisDate"
v-model:current="date"
@change="getData('')"
>
</radio-group> </radio-group>
<TimeFilter @change="onChange"></TimeFilter> <TimeFilter @change="onChange"></TimeFilter>
</template> </template>
...@@ -83,7 +87,7 @@ onMounted(async () => { ...@@ -83,7 +87,7 @@ onMounted(async () => {
}); });
// 提交时间戳 // 提交时间戳
const onChange = (value: number) => { const onChange = (value: number) => {
console.log(value); getData(value);
}; };
watch( watch(
() => props.token, () => props.token,
...@@ -119,13 +123,14 @@ const initChart = (id: string, theme: string, height: string = '212px') => { ...@@ -119,13 +123,14 @@ const initChart = (id: string, theme: string, height: string = '212px') => {
chartDom.style.height = height; chartDom.style.height = height;
myChart = echarts.init(chartDom, theme); myChart = echarts.init(chartDom, theme);
}; };
const getData = () => { const getData = (timestamp: number) => {
ShowLoading(myChart); ShowLoading(myChart);
request request
.get(`/v1${chain.value}/analysis/getTelegramData`, { .get(`/v1${chain.value}/analysis/getTelegramDataV1`, {
params: { params: {
tag: props.token, tag: props.token,
date: date.value, date: date.value,
timestamp: timestamp ? timestamp : undefined,
}, },
}) })
.then((res: any) => { .then((res: any) => {
......
<template> <template>
<div class="custom-ana-time-filter"> <div class="custom-ana-time-filter">
<div v-if="route.name == 'tokenAnalysis'" class="custom-ana-time-filter-cl">
<div class="dividing-line"></div> <div class="dividing-line"></div>
<t-tooltip :content="$t('tooltip.historyData')"> <t-tooltip :content="$t('tooltip.historyData')">
<span class="openIcon" @click="openDialog"> <span class="openIcon" @click="openDialog">
<Timefilter></Timefilter> <Timefilter></Timefilter>
</span> </span>
</t-tooltip> </t-tooltip>
<t-dialog v-model:visible="visible" placement="center" @Close="closeDialog"> <t-dialog
v-model:visible="visible"
placement="center"
@Close="closeDialog"
>
<template #header> <template #header>
{{ $t('tooltip.DataFilter') }} {{ $t('tooltip.DataFilter') }}
</template> </template>
...@@ -46,12 +51,14 @@ ...@@ -46,12 +51,14 @@
</template> </template>
</t-dialog> </t-dialog>
</div> </div>
</div>
</template> </template>
<script lang="ts" setup> <script lang="ts" setup>
import { MessagePlugin } from 'tdesign-vue-next'; import { MessagePlugin } from 'tdesign-vue-next';
import { useI18n } from 'vue-i18n'; import { useI18n } from 'vue-i18n';
import Timefilter from '/public/images/svg/analysis/timefilter.svg'; import Timefilter from '/public/images/svg/analysis/timefilter.svg';
const route = useRoute();
const emit = defineEmits(['change']); const emit = defineEmits(['change']);
const { t } = useI18n(); const { t } = useI18n();
const visible = ref(false); const visible = ref(false);
...@@ -131,6 +138,7 @@ const submit = () => { ...@@ -131,6 +138,7 @@ const submit = () => {
.custom-ana-time-filter { .custom-ana-time-filter {
position: absolute; position: absolute;
right: 12px; right: 12px;
.custom-ana-time-filter-cl {
display: flex; display: flex;
align-items: center; align-items: center;
.dividing-line { .dividing-line {
...@@ -188,6 +196,7 @@ const submit = () => { ...@@ -188,6 +196,7 @@ const submit = () => {
.t-date-picker { .t-date-picker {
width: 150px; width: 150px;
} }
}
} }
.custom_chose_time_popup2 { .custom_chose_time_popup2 {
.t-time-picker__panel-section-footer { .t-time-picker__panel-section-footer {
......
...@@ -128,7 +128,7 @@ const getData = () => { ...@@ -128,7 +128,7 @@ const getData = () => {
let newtb = let newtb =
props.tb[0] == 'd' ? props.tb.slice(1, props.tb.length) : props.tb; props.tb[0] == 'd' ? props.tb.slice(1, props.tb.length) : props.tb;
request request
.get(`/v1${chain.value}/analysis/getTop100Change`, { .get(`/v1${chain.value}/analysis/getTop100ChangeV1`, {
params: { params: {
tag: newtb, tag: newtb,
date: date.value, date: date.value,
......
...@@ -13,7 +13,11 @@ ...@@ -13,7 +13,11 @@
:currentPath="currentPath" :currentPath="currentPath"
> >
<template #chartSwitch> <template #chartSwitch>
<radio-group type="analysisDate" v-model:current="date" @change="getData"> <radio-group
type="analysisDate"
v-model:current="date"
@change="getData('')"
>
</radio-group> </radio-group>
<TimeFilter @change="onChange"></TimeFilter> <TimeFilter @change="onChange"></TimeFilter>
</template> </template>
...@@ -89,7 +93,7 @@ onMounted(() => { ...@@ -89,7 +93,7 @@ onMounted(() => {
}); });
// 提交时间戳 // 提交时间戳
const onChange = (value: number) => { const onChange = (value: number) => {
console.log(value); getData(value);
}; };
const changeEchart = () => { const changeEchart = () => {
onInit(); onInit();
...@@ -118,13 +122,14 @@ const initChart = (id: string, theme: string, height: string = '212px') => { ...@@ -118,13 +122,14 @@ const initChart = (id: string, theme: string, height: string = '212px') => {
chartDom.style.height = height; chartDom.style.height = height;
myChart = echarts.init(chartDom, theme); myChart = echarts.init(chartDom, theme);
}; };
const getData = () => { const getData = (timestamp: number) => {
ShowLoading(myChart); ShowLoading(myChart);
request request
.get(`/v1${chain.value}/analysis/getTwitter`, { .get(`/v1${chain.value}/analysis/getTwitterV1`, {
params: { params: {
tag: props.token, tag: props.token,
date: date.value, date: date.value,
timestamp: timestamp ? timestamp : undefined,
}, },
}) })
.then((res: any) => { .then((res: any) => {
......
...@@ -157,10 +157,11 @@ onBeforeMount(() => { ...@@ -157,10 +157,11 @@ onBeforeMount(() => {
if (currentPath.value) { if (currentPath.value) {
chain.value = currentPath.value; chain.value = currentPath.value;
} }
let obj = WebS(tb.value);
request request
.get(`/v1/${currentPath.value}/getConfig`, { .get(`/v1/${currentPath.value}/getConfig`, {
params: { params: {
tag: WebS(tb.value), tag: obj.token,
}, },
}) })
.then((res: any) => { .then((res: any) => {
...@@ -185,7 +186,7 @@ const SettwitterRul = (value: string) => { ...@@ -185,7 +186,7 @@ const SettwitterRul = (value: string) => {
@import '@/style/variables.less'; @import '@/style/variables.less';
.token-analysis-wrapper { .token-analysis-wrapper {
box-sizing: border-box; box-sizing: border-box;
padding: 6px 0 0 6px; padding: 12px 0px 0 12px;
position: relative; position: relative;
height: calc(100vh - 70px); height: calc(100vh - 70px);
display: flex; display: flex;
...@@ -221,7 +222,7 @@ const SettwitterRul = (value: string) => { ...@@ -221,7 +222,7 @@ const SettwitterRul = (value: string) => {
.right-wrapper { .right-wrapper {
flex: 1; flex: 1;
position: sticky; position: sticky;
top: 0; top: 4px;
.right-detail-wrapper { .right-detail-wrapper {
margin-right: 0; margin-right: 0;
} }
......
...@@ -179,10 +179,11 @@ onMounted(() => { ...@@ -179,10 +179,11 @@ onMounted(() => {
if (currentPath.value) { if (currentPath.value) {
chain.value = currentPath.value; chain.value = currentPath.value;
} }
let obj = WebS(tb.value);
request request
.get(`/v1/${currentPath.value}/getConfig`, { .get(`/v1/${currentPath.value}/getConfig`, {
params: { params: {
tag: WebS(tb.value), tag: obj.token,
}, },
}) })
.then((res: any) => { .then((res: any) => {
......
<template>
<div class=""></div>
</template>
<script lang="ts" setup></script>
<style lang="less"></style>
<template> <template>
<div> <div class="custom-scroll-token">
<span class="close-scroll_box" @click="changeScrollBox"> <span class="close-scroll_box" @click="changeScrollBox">
<CloseScrollToken></CloseScrollToken> <CloseScrollToken></CloseScrollToken>
</span> </span>
<div
v-show="!ScrollList.list.length"
class="custom-substitute-scroll"
></div>
<transition name="scroll-change"> <transition name="scroll-change">
<div class="header-scroll_box-fa" v-show="srcollType == 'open'"> <div class="header-scroll_box-fa" v-show="srcollType == 'open'">
<div <div
...@@ -60,8 +56,30 @@ ...@@ -60,8 +56,30 @@
</div> </div>
</div> </div>
</div> </div>
<div
class="scroll-box-fa"
ref="scroll_box_3"
:style="{
'-webkit-animation': animationSpeed,
animation: animationSpeed,
}"
>
<div
class="scroll-token-box"
v-for="item in ScrollList.list"
:key="item.title"
>
<div class="left-img">
<img :src="item.img" alt="" />
<span class="span-1">{{ item.sy }}</span>
</div>
<div class="right-info">
<span class="span-3"> $ </span>
<span class="span-2">{{ item.up }}</span>
</div>
</div>
</div>
</div> </div>
<ScrollTest></ScrollTest>
</div> </div>
</transition> </transition>
</div> </div>
...@@ -70,7 +88,6 @@ ...@@ -70,7 +88,6 @@
<script lang="ts" setup> <script lang="ts" setup>
import request from '@/utils/request'; import request from '@/utils/request';
import { publicTokenImg } from '@/constants/UnifiedManagementChain'; import { publicTokenImg } from '@/constants/UnifiedManagementChain';
import ScrollTest from './ScrollTest.vue';
import CloseScrollToken from '/public/images/svg/filter/CloseScrollToken.svg'; import CloseScrollToken from '/public/images/svg/filter/CloseScrollToken.svg';
const ScrollList = reactive({ const ScrollList = reactive({
list: [], list: [],
...@@ -137,37 +154,39 @@ const getPublicToken = async () => { ...@@ -137,37 +154,39 @@ const getPublicToken = async () => {
const doubt = { const doubt = {
img: '/images/svg/header/doubt.svg', img: '/images/svg/header/doubt.svg',
}; };
let scroll_box_1 = ref(null); const scroll_box_1 = ref(null);
let scroll_box_2 = ref(null); const scroll_box_2 = ref(null);
const scroll_box_3 = ref(null);
// 鼠标移入暂停 // 鼠标移入暂停
const stopAn = () => { const stopAn = () => {
scroll_box_1.value.style.animationPlayState = 'paused'; scroll_box_1.value.style.animationPlayState = 'paused';
scroll_box_2.value.style.animationPlayState = 'paused'; scroll_box_2.value.style.animationPlayState = 'paused';
scroll_box_3.value.style.animationPlayState = 'paused';
}; };
// 鼠标移出继续滚动 // 鼠标移出继续滚动
const leaveAn = () => { const leaveAn = () => {
scroll_box_1.value.style.animationPlayState = 'running'; scroll_box_1.value.style.animationPlayState = 'running';
scroll_box_2.value.style.animationPlayState = 'running'; scroll_box_2.value.style.animationPlayState = 'running';
scroll_box_3.value.style.animationPlayState = 'running';
}; };
</script> </script>
<style lang="less"> <style lang="less">
@import '@/style/variables.less'; @import '@/style/variables.less';
@import '@/style/flex.less'; @import '@/style/flex.less';
.header-scroll_box-fa { .custom-scroll-token {
.header-scroll_box-fa {
user-select: none; user-select: none;
height: 57px; height: 57px;
.header-scroll_box { .header-scroll_box {
width: 100%; width: 100%;
box-sizing: border-box; box-sizing: border-box;
.da(); .da();
// 滚动模块始终居中于导航栏剩余内容
overflow: hidden; overflow: hidden;
// overflow-x: auto; scrollbar-width: none;
scrollbar-width: none; /* firefox */ -ms-overflow-style: none;
-ms-overflow-style: none; /* IE 10+ */
&::-webkit-scrollbar { &::-webkit-scrollbar {
display: none; /* Chrome Safari */ display: none;
} }
padding-left: 12px; padding-left: 12px;
.scroll-box-fa { .scroll-box-fa {
...@@ -210,15 +229,13 @@ const leaveAn = () => { ...@@ -210,15 +229,13 @@ const leaveAn = () => {
} }
} }
} }
} }
.custom-substitute-scroll { .close-scroll_box {
height: 57px;
}
.close-scroll_box {
position: fixed; position: fixed;
top: 82px; top: 82px;
left: 0; left: 0;
cursor: pointer; cursor: pointer;
}
} }
</style> </style>
...@@ -233,32 +250,12 @@ const leaveAn = () => { ...@@ -233,32 +250,12 @@ const leaveAn = () => {
transform: translate3d(-100%, 0, 0); transform: translate3d(-100%, 0, 0);
} }
} }
.scroll-change-leave-active { .scroll-change-leave-active {
// ok animation: move2 0.7s ease;
transition: all 0.7s ease-in-out;
} }
.scroll-change-enter-active { .scroll-change-enter-active {
// animation: move 0.7s ease;
animation: move 0.7s ease-in;
}
.scroll-change-leave {
opacity: 1;
height: 57px;
}
.scroll-change-leave-to {
opacity: 0;
height: 0px;
} }
// ------------
// .scroll-change-enter {
// opacity: 0;
// height: 0px;
// }
// .scroll-change-enter-to {
// opacity: 1;
// height: 57px;
// }
@keyframes move { @keyframes move {
from { from {
height: 0px; height: 0px;
...@@ -269,4 +266,14 @@ const leaveAn = () => { ...@@ -269,4 +266,14 @@ const leaveAn = () => {
opacity: 1; opacity: 1;
} }
} }
@keyframes move2 {
from {
height: 57px;
opacity: 1;
}
to {
height: 0px;
opacity: 0;
}
}
</style> </style>
<template>
<div class="total-token-info" v-for="item in options" :key="item.pool">
<div class="header-pro"></div>
<div class="token-information">
<div class="token-name">
<span>Name: </span>
<span>&nbsp;{{ item.name }}</span>
<span>/{{ item.pool }}</span>
<span>&nbsp;-&nbsp;{{ item.symbol }}</span>
<div class="collection-box" @click.stop="collectData(item)">
<star-filled-icon
size="22px"
v-if="item.isStar"
class="filled-star"
/>
<star-icon v-else size="22px"></star-icon>
</div>
</div>
<div class="price-and-time">
<div class="token">
<span>Price: </span>
<span>&nbsp;{{ item.up }}</span>
</div>
<div class="token not_first">
<span>24H Price Change: </span>
<span :style="{ color: monitor(item.Newr24h) }">{{
item.Newr24h
}}</span>
</div>
<div class="token not_first">
<span>Holders: </span>
<span>&nbsp;{{ item.holders }}</span>
</div>
<div class="token not_first">
<span>Tx: </span>
<span>&nbsp;{{ item.tx }}</span>
</div>
</div>
<div class="price-and-time">
<div class="token">
<span>Pool: </span>
<span>&nbsp;{{ item.filterPool }}</span>
</div>
<div class="token not_first">
<span>Token: </span>
<span>&nbsp;{{ item.filterToken }}</span>
</div>
</div>
</div>
<div class="right-btns">
<JumpOther :tb="item.tb_name" type="detail" content="K Line">
<template #svg> <KLink class="k-link"></KLink> </template
></JumpOther>
<JumpOther :tb="item.tb_name" type="analysis" content="analysis">
<template #svg>
<analysisSvg class="to-analysis"></analysisSvg>
</template>
</JumpOther>
</div>
</div>
</template>
<script lang="ts" setup>
import * as Cache from '@/utils/cache';
import { StarIcon, StarFilledIcon } from 'tdesign-icons-vue-next';
import JumpOther from '/views/token/JumpOther.vue';
import analysisSvg from '/public/images/svg/table/media.svg';
import KLink from '/public/images/svg/table/k_link.svg';
import { chain_options } from '@/constants/UnifiedManagementChain';
const props = withDefaults(
defineProps<{
options: any[];
}>(),
{
options: [],
}
);
const goDetail = (row) => {
// 找到链id对应的路由名称
let Obj = chain_options.find((item: any) => item.chain_id == row.chain);
let params: any = {
tb: row.tb_name,
path: Obj.name,
};
};
const collectData = (item) => {
if (item.isStar) {
Cache.deleteCollection(item.tb_name);
item.isStar = false;
} else {
Cache.setCollection({
hash: item.tb_name,
symbol: item.symbol,
});
item.isStar = true;
}
};
// 监听正负改变颜色
const monitor = (item) => {
if (item[0] === '-') {
return '#f85260';
} else {
return '#23ab94';
}
};
</script>
<style lang="less">
@import '@/style/variables.less';
@import '@/style/flex.less';
.total-token-info {
position: relative;
width: 98%;
min-width: 600px;
height: 100px;
font-size: @font-size-base;
overflow: hidden;
border: 1px solid @td-Search-box-border-color-2;
margin: 12px;
border-radius: 10px;
background: @td-Search-box-line-back-color;
box-shadow: 1px 3px 5px @td-Search-shadow-color;
display: flex;
.header-pro {
width: 10%;
height: 100%;
.dja();
}
.token-information {
width: 90%;
height: 100%;
padding-left: 6px;
flex-direction: column;
.dj(space-around);
.token-name {
height: 20px;
width: 70%;
position: relative;
:nth-child(1) {
color: @td-search-btn-back-1;
font-family: 'Regular';
}
:nth-child(2) {
overflow: hidden;
text-overflow: ellipsis;
}
:nth-child(3) {
color: @td-search-btn-back-1;
}
& > :not(:first-child) {
font-weight: bold;
font-family: 'Medium';
}
.collection-box {
position: absolute;
top: 0;
right: 0;
width: 20px;
height: 20px;
margin-top: -5px;
.filled-star {
color: var(--td-brand-color);
}
}
}
.price-and-time {
font-family: fiveFont !important;
height: 20px;
display: flex;
font-size: @font-size-s;
.token {
:nth-child(1) {
color: @td-search-btn-back-1;
font-family: 'Regular';
}
:nth-child(2) {
font-weight: bold;
font-family: 'Medium';
}
}
.not_first {
margin-left: 20px;
}
}
}
.right-btns {
position: absolute;
right: 0;
.dja();
height: 100%;
div {
margin-right: 12px;
}
}
&:hover {
cursor: pointer;
border: 1px solid @main-theme-color;
transition: all 0.5s;
}
}
</style>
<template>
<div class="search-records">
<div class="label">
{{ $t('Search.searchRecords') }}
<!-- clear -->
<div
class="record-clear"
@click="clearRecord"
v-show="SearchRecordList.list.length"
>
{{ $t('Search.clearRecord') }}
</div>
</div>
<div class="record-box">
<template
v-for="(item, index) in SearchRecordList.list"
:key="item.index"
>
<button class="value" v-if="index < 6" @click="toSearch(item)">
{{ item }}
</button>
</template>
</div>
</div>
</template>
<script lang="ts" setup>
import { Arrayduplication } from '@/utils/tool';
const props = defineProps({
successValue: String,
});
const emit = defineEmits(['onChange']);
// 搜索记录.从本地取
const SearchRecordList = reactive({
list: JSON.parse(window.localStorage.getItem('recordlist')) || [],
});
// 监听搜索记录--存到本地
watch(
() => props.successValue,
(v) => {
let recordList = window.localStorage.getItem('recordlist');
if (recordList) {
// 有数据--转为数组
recordList = JSON.parse(recordList);
recordList.unshift(v);
// 先去重
recordList = Arrayduplication(recordList);
if (recordList.length > 6) {
recordList = recordList.slice(0, 6);
}
window.localStorage.setItem('recordlist', JSON.stringify(recordList));
} else {
// 没数据
window.localStorage.setItem('recordlist', JSON.stringify([v]));
}
SearchRecordList.list =
JSON.parse(window.localStorage.getItem('recordlist')) || [];
}
);
const toSearch = (item: string) => {
emit('onChange', item);
};
// 清除记录
const clearRecord = () => {
window.localStorage.setItem('recordlist', JSON.stringify([]));
SearchRecordList.list = [];
};
</script>
<style lang="less">
@import '@/style/flex.less';
.search-records {
font-family: 'Medium';
.label {
font-family: 'Medium';
padding: 12px 0;
font-weight: 500;
font-size: 15px;
color: var(--td-Search-info-color-1);
.record-clear {
float: right;
font-size: 11px;
border-radius: 8px;
background: #f4f5f7;
color: var(--td-Search-info-color-1);
height: 22px;
.dja();
padding: 0 12px;
cursor: pointer;
}
}
.record-box {
display: flex;
flex-wrap: wrap;
.value {
border: none;
padding: 4px 12px;
margin: 6px 10px;
border-radius: 18px;
background: #f4f5f7;
cursor: pointer;
}
}
}
</style>
import { defineComponent, ref, reactive } from 'vue'; <template>
<t-popup
placement="bottom-left"
trigger="click"
v-model:visible="DialogVisible"
:content="popupContent()"
:VisibleChange="onVisibleChange"
>
<div class="custom-chose-chain-box" @click="ChangeDialog">
<img :src="chain_options[ChainImgIndex].img" alt="" class="left-icon" />
<span class="current-chain-text">{{ chainName }}</span>
<span class="right-icon">
<ChevronDownIcon
:class="[
'select-icon',
DialogVisible.value ? 'active' : '',
DialogVisible.value
? 't-fake-arrow--active'
: 't-fake-arrow--leave',
]"
></ChevronDownIcon>
</span>
</div>
</t-popup>
</template>
<script lang="tsx" setup>
import { import {
chain_options, chain_options,
filterChainObj, filterChainObj,
} from '@/constants/UnifiedManagementChain'; } from '@/constants/UnifiedManagementChain';
import SelectSvg from '/public/images/svg/filter/select.svg';
import ChainSearch from '/public/images/svg/filter/chainSearch.svg'; import ChainSearch from '/public/images/svg/filter/chainSearch.svg';
import { ChevronDownIcon } from 'tdesign-icons-vue-next'; import { ChevronDownIcon } from 'tdesign-icons-vue-next';
import './index.less';
import { useI18n } from 'vue-i18n'; import { useI18n } from 'vue-i18n';
export default defineComponent({ const { t } = useI18n();
setup(props) { const route = useRoute();
const { t } = useI18n(); const router = useRouter();
const route = useRoute(); const ChainImgIndex = ref(0);
const router = useRouter(); const ChainObj = ref<any>({});
const ChainImgIndex = ref(0); const chain = useChain();
const ChainObj = ref<any>({}); const chainName = ref('');
const chain = useChain(); // 筛选后的列表
const chainName = ref(''); const filterList = reactive({
// 筛选后的列表
const filterList = reactive({
list: chain_options, list: chain_options,
}); });
// 弹窗是否打开 // 弹窗是否打开
const DialogVisible = ref<boolean>(false); const DialogVisible = ref<boolean>(false);
let Scopedchain = ''; let Scopedchain = '';
if (typeof route.params.chain == 'string') { if (typeof route.params.chain == 'string') {
Scopedchain = route.params.chain; Scopedchain = route.params.chain;
} }
if (Scopedchain) { if (Scopedchain) {
let Obj = filterChainObj('name', Scopedchain, true); let Obj = filterChainObj('name', Scopedchain, true);
if (Obj) { if (Obj) {
ChainObj.value = Obj; ChainObj.value = Obj;
...@@ -35,24 +57,24 @@ export default defineComponent({ ...@@ -35,24 +57,24 @@ export default defineComponent({
ChainImgIndex.value = ChainObj.value.index; ChainImgIndex.value = ChainObj.value.index;
chain.value = Obj.value; chain.value = Obj.value;
} }
} else { } else {
ChainObj.value = filterChainObj('value', chain.value, true); ChainObj.value = filterChainObj('value', chain.value, true);
chainName.value = ChainObj.value.name; chainName.value = ChainObj.value.name;
ChainImgIndex.value = ChainObj.value.index; ChainImgIndex.value = ChainObj.value.index;
chain.value = ChainObj.value.value; chain.value = ChainObj.value.value;
} }
const ChangeDialog = () => { const ChangeDialog = () => {
// DialogVisible.value = !DialogVisible.value; // DialogVisible.value = !DialogVisible.value;
}; };
const onVisibleChange = (visible: any, e: any) => { const onVisibleChange = (visible: any, e: any) => {
DialogVisible.value = visible; DialogVisible.value = visible;
}; };
// 关闭弹窗 // 关闭弹窗
const ClosePopup = () => { const ClosePopup = () => {
DialogVisible.value = false; DialogVisible.value = false;
}; };
// 切换事件 // 切换事件
const selectChange = (v: string) => { const selectChange = (v: string) => {
ChainObj.value = filterChainObj('value', v, true); ChainObj.value = filterChainObj('value', v, true);
// 当前链保存到本地 // 当前链保存到本地
window.localStorage.setItem('chain', v); window.localStorage.setItem('chain', v);
...@@ -64,9 +86,9 @@ export default defineComponent({ ...@@ -64,9 +86,9 @@ export default defineComponent({
path: `/${ChainObj.value.name}/1`, path: `/${ChainObj.value.name}/1`,
}); });
ClosePopup(); ClosePopup();
}; };
// 输入框内容改变 // 输入框内容改变
const InputChange = (value: string) => { const InputChange = (value: string) => {
if (value) { if (value) {
// 循环链列表,判断是否包含搜索的字符 // 循环链列表,判断是否包含搜索的字符
let list = []; let list = [];
...@@ -90,9 +112,9 @@ export default defineComponent({ ...@@ -90,9 +112,9 @@ export default defineComponent({
} else { } else {
filterList.list = JSON.parse(JSON.stringify(chain_options)); filterList.list = JSON.parse(JSON.stringify(chain_options));
} }
}; };
// 弹窗内容 // 弹窗内容
const popupContent = () => { const popupContent = () => {
return ( return (
<div class="custom-chose-chain-content"> <div class="custom-chose-chain-content">
<div class="search-box"> <div class="search-box">
...@@ -104,10 +126,7 @@ export default defineComponent({ ...@@ -104,10 +126,7 @@ export default defineComponent({
</div> </div>
<div class="chain-box-body narrow-scrollbar"> <div class="chain-box-body narrow-scrollbar">
{filterList.list.map((item: any) => ( {filterList.list.map((item: any) => (
<div <div class="chain-box" onClick={selectChange.bind(this, item.value)}>
class="chain-box"
onClick={selectChange.bind(this, item.value)}
>
<img src={item.img} alt="" /> <img src={item.img} alt="" />
<span>{item.fullName}</span> <span>{item.fullName}</span>
</div> </div>
...@@ -115,35 +134,118 @@ export default defineComponent({ ...@@ -115,35 +134,118 @@ export default defineComponent({
</div> </div>
</div> </div>
); );
}; };
return () => ( </script>
<t-popup
placement="bottom-left" <style lang="less">
trigger="click" @import '@/style/variables.less';
v-model:visible={DialogVisible.value} @import '@/style/flex.less';
content={popupContent} .custom-chose-chain-box {
onVisibleChange={onVisibleChange} display: flex;
> justify-content: space-between;
<div class="custom-chose-chain-box" onClick={ChangeDialog}> align-items: center;
<img height: 34px;
src={chain_options[ChainImgIndex.value].img} border: var(--new-border-2);
alt="" border-radius: @border-radius;
class="left-icon" padding: 0 10px;
/> cursor: pointer;
<span class="current-chain-text">{chainName.value}</span> .left-icon {
<span class="right-icon"> height: 70%;
<ChevronDownIcon }
class={[ .current-chain-text {
'select-icon', font-weight: 700;
DialogVisible.value ? 'active' : '', font-size: 15px;
DialogVisible.value user-select: none;
? 't-fake-arrow--active' font-family: 'bold';
: 't-fake-arrow--leave', }
]} .right-icon {
></ChevronDownIcon> .select-icon {
</span> stroke: #838383;
</div> color: #838383;
</t-popup> }
); .active {
}, stroke: var(--td--main-btn-color-1);
}); color: var(--td--main-btn-color-1);
}
@keyframes customAnimation1 {
0% {
transform: rotateX(180deg);
}
100% {
transform: rotateX(0deg);
}
}
@keyframes customAnimation2 {
0% {
transform: rotateX(180deg);
}
100% {
transform: rotateX(0deg);
}
}
// 旋转样式
.t-fake-arrow--active {
animation: customAnimation1 400ms;
// animation-fill-mode: forwards;
}
// 恢复
.t-fake-arrow--leave {
animation: customAnimation2 400ms;
// animation-fill-mode: forwards;
}
}
& > * {
padding: 0 4px;
}
}
.custom-chose-chain-content {
width: 380px;
padding: 12px;
.search-box {
.t-input {
background: #f9fafb;
border: 1px solid #f0f1f5;
box-shadow: 0px 0px 2px rgba(0, 0, 0, 0.25);
border-radius: 10px;
.t-input__inner {
font-family: 'Medium';
}
}
}
.chain-box-body {
display: flex;
flex-wrap: wrap;
justify-content: space-between;
margin-top: 12px;
max-height: 500px;
overflow-y: auto;
&::after {
content: '';
display: block;
flex: 1; /* 与flex: auto;等效都是自适应剩余空间*/
margin: 10px;
}
.chain-box {
box-sizing: border-box;
width: 27%;
height: 80px;
margin: 10px;
background: var(--new-background-4);
border: 1px solid var(--new-border-6);
border-radius: 14px;
.dja(space-evenly,center);
flex-direction: column;
font-weight: 700;
color: var(--home-page-color-1);
cursor: pointer;
font-size: 12px;
white-space: nowrap;
font-family: 'bold';
img {
width: 27px;
height: 27px;
}
}
}
}
</style>
...@@ -64,20 +64,6 @@ ...@@ -64,20 +64,6 @@
</div> </div>
<div class="custom-home-table narrow-scrollbar" ref="CustomTable"> <div class="custom-home-table narrow-scrollbar" ref="CustomTable">
<table class="filter-table-home"> <table class="filter-table-home">
<colgroup>
<col style="width: auto" />
<col style="" />
<col style="" />
<col style="" />
<col style="" />
<col style="" />
<col style="" />
<col style="" />
<col style="" />
<col style="" />
<col style="" />
<col style="" />
</colgroup>
<thead ref="CustomHead"> <thead ref="CustomHead">
<tr class="firstHead"> <tr class="firstHead">
<template v-for="item in columns" :key="item.title"> <template v-for="item in columns" :key="item.title">
...@@ -120,13 +106,13 @@ ...@@ -120,13 +106,13 @@
<td align="center" class="index">{{ item.index }}</td> <td align="center" class="index">{{ item.index }}</td>
<td class="tn"> <td class="tn">
<div class="token-name"> <div class="token-name">
<div class="custom-avatar"> <div class="custom-avatar" v-if="getCurSwap(item.swap)">
<!-- <img :src="getCurSwap()" alt="" /> --> <img class="img1" :src="getCurSwap(item.swap)" alt="" />
<!-- {{ item.swap }} --> <img class="img2" :src="getCurChainImg()" alt="" />
</div> </div>
<!-- <div class="avatar-icon"> <template v-else>
{{ getTokenInitials(item.tn) }} <CustomAvatar :value="item.tn"></CustomAvatar>
</div> --> </template>
<div class="name-block"> <div class="name-block">
<div class="tn">{{ item.tn }}</div> <div class="tn">{{ item.tn }}</div>
<div class="symbol">{{ item.sy }}/{{ item.ps }}</div> <div class="symbol">{{ item.sy }}/{{ item.ps }}</div>
...@@ -217,6 +203,7 @@ import { TableSort, TableSortAsc } from '@/utils/tool'; ...@@ -217,6 +203,7 @@ import { TableSort, TableSortAsc } from '@/utils/tool';
import CustomRadio from '../CustomComponent/radio.vue'; import CustomRadio from '../CustomComponent/radio.vue';
import BscChain from '/public/images/svg/selectChain/bsc.svg'; import BscChain from '/public/images/svg/selectChain/bsc.svg';
import SwapSvg from '/public/images/svg/socialInfoWrapper/bscTransaction.svg'; import SwapSvg from '/public/images/svg/socialInfoWrapper/bscTransaction.svg';
import CustomAvatar from './avatar.vue';
const route = useRoute(); const route = useRoute();
const LoadHead = ref(false); const LoadHead = ref(false);
const CustomHead = ref(null); const CustomHead = ref(null);
...@@ -351,6 +338,26 @@ const onFilterChange = (value: string) => { ...@@ -351,6 +338,26 @@ const onFilterChange = (value: string) => {
} }
getTableList(); getTableList();
}; };
// 获取当前行的swap
const getCurSwap = (swap: string) => {
if (ChainObj.value.fullName && swap) {
let obj = getSwap(ChainObj.value.fullName, swap);
if (obj) {
return obj.img;
}
return '';
}
};
// 获取当前链图标
const getCurChainImg = () => {
// 链图标
if (ChainObj.value.newImg) {
return ChainObj.value.newImg;
} else {
return ChainObj.value.img;
}
};
// 获取涨跌幅 // 获取涨跌幅
const getUpDown = (value: string) => { const getUpDown = (value: string) => {
if (value && value[0] == '-') { if (value && value[0] == '-') {
...@@ -375,13 +382,6 @@ const getTableWidth = () => { ...@@ -375,13 +382,6 @@ const getTableWidth = () => {
affixedHead.width = width + 'px'; affixedHead.width = width + 'px';
} }
}; };
// 获取token首字母
const getTokenInitials = (value: string) => {
if (value) {
return value[0];
}
return '';
};
// 排序事件 // 排序事件
const submitSort = ({ sort, field }: any) => { const submitSort = ({ sort, field }: any) => {
// 先将其他th的筛选关闭 // 先将其他th的筛选关闭
...@@ -429,6 +429,8 @@ const TableFilter = (result: any) => { ...@@ -429,6 +429,8 @@ const TableFilter = (result: any) => {
item.n_r1h = getUpDown(item.n_r1h); item.n_r1h = getUpDown(item.n_r1h);
item.n_r4h = getUpDown(item.n_r4h); item.n_r4h = getUpDown(item.n_r4h);
item.n_r24h = getUpDown(item.n_r24h); item.n_r24h = getUpDown(item.n_r24h);
// console.log(item.swapImg);
// console.log('swap名称', item.swap);
}); });
resultData.list = JSON.parse(JSON.stringify(result.list)); resultData.list = JSON.parse(JSON.stringify(result.list));
resultData.filterList = JSON.parse(JSON.stringify(result.list)); resultData.filterList = JSON.parse(JSON.stringify(result.list));
...@@ -986,27 +988,16 @@ for (let i = 0; i < arr1.length; i++) { ...@@ -986,27 +988,16 @@ for (let i = 0; i < arr1.length; i++) {
} }
.token-name { .token-name {
.da(); .da();
.avatar-icon {
width: 30px;
height: 30px;
border-radius: 50%;
background: #5f6e78;
color: white;
.dja();
font-weight: 500;
font-size: 17px;
font-family: 'Medium';
margin-right: 12px;
}
.custom-avatar { .custom-avatar {
position: relative; position: relative;
.da(); .da();
margin-right: 12px;
img { img {
border-radius: 50%; border-radius: 50%;
} }
.img1 { .img1 {
width: 30px; width: 35px;
height: 30px; height: 35px;
} }
.img2 { .img2 {
position: absolute; position: absolute;
...@@ -1014,7 +1005,6 @@ for (let i = 0; i < arr1.length; i++) { ...@@ -1014,7 +1005,6 @@ for (let i = 0; i < arr1.length; i++) {
right: -3px; right: -3px;
width: 15px; width: 15px;
height: 15px; height: 15px;
margin-right: 12px;
} }
} }
.name-block { .name-block {
......
...@@ -232,7 +232,7 @@ import QuestionSvg from '/public/images/svg/filter/Question.svg'; ...@@ -232,7 +232,7 @@ import QuestionSvg from '/public/images/svg/filter/Question.svg';
import { MessagePlugin } from 'tdesign-vue-next'; import { MessagePlugin } from 'tdesign-vue-next';
import SmartAlerts from './SmartAlerts.vue'; import SmartAlerts from './SmartAlerts.vue';
import { useI18n } from 'vue-i18n'; import { useI18n } from 'vue-i18n';
import ChoseChain from './choseChain'; import ChoseChain from './ChoseChain.vue';
import CustomCheckBox from '../CustomComponent/CheckBox2.vue'; import CustomCheckBox from '../CustomComponent/CheckBox2.vue';
import FilterRadio from './filterRadio.vue'; import FilterRadio from './filterRadio.vue';
const { t } = useI18n(); const { t } = useI18n();
......
...@@ -147,7 +147,9 @@ const getPoolToken = async () => { ...@@ -147,7 +147,9 @@ const getPoolToken = async () => {
let index = res.list.findIndex((item: any, index: number) => { let index = res.list.findIndex((item: any, index: number) => {
let tb = let tb =
props.tb[0] === 'd' ? props.tb.slice(1, props.tb.length) : props.tb; props.tb[0] === 'd' ? props.tb.slice(1, props.tb.length) : props.tb;
return WebS(item.address) === WebS(tb); let obj1 = WebS(item.address);
let obj2 = WebS(tb);
return obj1.token === obj2.token;
}); });
currentPoolValue.value = index; currentPoolValue.value = index;
} else { } else {
......
<template>
<div class="avatar-icon">
{{ getTokenInitials() }}
</div>
</template>
<script lang="ts" setup>
const props = defineProps<{
value: string;
}>();
// 获取token首字母
const getTokenInitials = () => {
const { value } = props;
if (value) {
return value[0];
}
return '';
};
</script>
<style lang="less">
@import '@/style/flex.less';
.avatar-icon {
width: 30px;
height: 30px;
border-radius: 50%;
background: #5f6e78;
color: white;
.dja();
font-weight: 500;
font-size: 17px;
font-family: 'Medium';
margin-right: 12px;
}
</style>
@import '@/style/variables.less';
@import '@/style/flex.less';
.custom-chose-chain-box {
display: flex;
justify-content: space-between;
align-items: center;
height: 34px;
border: var(--new-border-2);
border-radius: @border-radius;
padding: 0 10px;
cursor: pointer;
.left-icon {
height: 70%;
}
.current-chain-text {
font-weight: 700;
font-size: 15px;
user-select: none;
font-family: 'bold';
}
.right-icon {
.select-icon {
stroke: #838383;
color: #838383;
}
.active {
stroke: var(--td--main-btn-color-1);
color: var(--td--main-btn-color-1);
}
@keyframes customAnimation1 {
0% {
transform: rotateX(180deg);
}
100% {
transform: rotateX(0deg);
}
}
@keyframes customAnimation2 {
0% {
transform: rotateX(180deg);
}
100% {
transform: rotateX(0deg);
}
}
// 旋转样式
.t-fake-arrow--active {
animation: customAnimation1 400ms;
// animation-fill-mode: forwards;
}
// 恢复
.t-fake-arrow--leave {
animation: customAnimation2 400ms;
// animation-fill-mode: forwards;
}
}
& > * {
padding: 0 4px;
}
}
.custom-chose-chain-content {
width: 380px;
padding: 12px;
.search-box {
.t-input {
background: #f9fafb;
border: 1px solid #f0f1f5;
box-shadow: 0px 0px 2px rgba(0, 0, 0, 0.25);
border-radius: 10px;
.t-input__inner {
font-family: 'Medium';
}
}
}
.chain-box-body {
display: flex;
flex-wrap: wrap;
justify-content: space-between;
margin-top: 12px;
max-height: 500px;
overflow-y: auto;
&::after {
content: '';
display: block;
flex: 1; /* 与flex: auto;等效都是自适应剩余空间*/
margin: 10px;
}
.chain-box {
box-sizing: border-box;
width: 27%;
height: 80px;
margin: 10px;
background: var(--new-background-4);
border: 1px solid var(--new-border-6);
border-radius: 14px;
.dja(space-evenly,center);
flex-direction: column;
font-weight: 700;
color: var(--home-page-color-1);
cursor: pointer;
font-size: 12px;
white-space: nowrap;
font-family: 'bold';
img {
width: 27px;
height: 27px;
}
}
}
}
...@@ -22,6 +22,7 @@ import { ...@@ -22,6 +22,7 @@ import {
ArraySpecifiedPosition, ArraySpecifiedPosition,
} from '@/utils/tool'; } from '@/utils/tool';
import CustomTableSort from '../tableSort.vue'; import CustomTableSort from '../tableSort.vue';
import { filterChainObj } from '@/constants/UnifiedManagementChain';
import { import {
deleteCollection, deleteCollection,
changeCollection, changeCollection,
...@@ -32,6 +33,7 @@ export default defineComponent({ ...@@ -32,6 +33,7 @@ export default defineComponent({
const { t } = useI18n(); const { t } = useI18n();
const router = useRouter(); const router = useRouter();
const chain = useChain(); const chain = useChain();
const ChainObj = ref<any>({});
// 收藏模块的高度 // 收藏模块的高度
const CollectHeight = ref(''); const CollectHeight = ref('');
// 收藏表格是否更新 // 收藏表格是否更新
...@@ -62,6 +64,13 @@ export default defineComponent({ ...@@ -62,6 +64,13 @@ export default defineComponent({
list: [], list: [],
filterlist: [], filterlist: [],
}); });
const getChainObj = () => {
let obj = filterChainObj('value', chain.value);
if (obj) {
ChainObj.value = obj;
}
};
getChainObj();
const LatestStatus = () => { const LatestStatus = () => {
return currentType.value == 'default'; return currentType.value == 'default';
}; };
......
import { defineComponent } from 'vue'; import { defineComponent, computed } from 'vue';
import { useI18n } from 'vue-i18n'; import { useI18n } from 'vue-i18n';
import { StarFilledIcon } from 'tdesign-icons-vue-next'; import { StarFilledIcon } from 'tdesign-icons-vue-next';
import CopySvg from '/public/images/svg/rightDetail/copy.svg'; import CopySvg from '/public/images/svg/rightDetail/copy.svg';
...@@ -55,13 +55,26 @@ export default defineComponent({ ...@@ -55,13 +55,26 @@ export default defineComponent({
} }
} }
}; };
const getImg = computed(() => {
const { tokenInfo } = props;
try {
if (tokenInfo.chat.img) {
return tokenInfo.chat.img;
} else {
return '/images/img/default-avatar.png';
}
} catch (e) {
console.log(e);
return '/images/img/default-avatar.png';
}
});
return () => ( return () => (
<div class="header-token-box"> <div class="header-token-box">
<div class="header-token-info"> <div class="header-token-info">
<div class="pro-tokeninfo-header"> <div class="pro-tokeninfo-header">
<div class="left-token-name"> <div class="left-token-name">
<div class="token-name-child"> <div class="token-name-child">
<img src="/images/img/default-avatar.png" alt="swap" /> <img src={getImg.value} alt="swap" />
<span class="title">{props.tokenInfo.symbol}</span> <span class="title">{props.tokenInfo.symbol}</span>
</div> </div>
<div class="address-info"> <div class="address-info">
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment