Commit 86f16d0c authored by wangzhujun's avatar wangzhujun

排行榜+开奖

parent ed94117f
......@@ -23,6 +23,9 @@ importers:
'@pixi/ui':
specifier: ^2.2.3
version: 2.2.3(pixi.js@8.9.1)
'@spark/api-common':
specifier: ^2.0.22
version: 2.0.22
'@spark/circle-turntable':
specifier: ^1.0.3
version: 1.0.3(less@4.3.0)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(webpack@5.98.0(esbuild@0.25.3))
......@@ -1049,56 +1052,67 @@ packages:
resolution: {integrity: sha512-ehSKrewwsESPt1TgSE/na9nIhWCosfGSFqv7vwEtjyAqZcvbGIg4JAcV7ZEh2tfj/IlfBeZjgOXm35iOOjadcg==}
cpu: [arm]
os: [linux]
libc: [glibc]
'@rollup/rollup-linux-arm-musleabihf@4.40.1':
resolution: {integrity: sha512-m39iO/aaurh5FVIu/F4/Zsl8xppd76S4qoID8E+dSRQvTyZTOI2gVk3T4oqzfq1PtcvOfAVlwLMK3KRQMaR8lg==}
cpu: [arm]
os: [linux]
libc: [musl]
'@rollup/rollup-linux-arm64-gnu@4.40.1':
resolution: {integrity: sha512-Y+GHnGaku4aVLSgrT0uWe2o2Rq8te9hi+MwqGF9r9ORgXhmHK5Q71N757u0F8yU1OIwUIFy6YiJtKjtyktk5hg==}
cpu: [arm64]
os: [linux]
libc: [glibc]
'@rollup/rollup-linux-arm64-musl@4.40.1':
resolution: {integrity: sha512-jEwjn3jCA+tQGswK3aEWcD09/7M5wGwc6+flhva7dsQNRZZTe30vkalgIzV4tjkopsTS9Jd7Y1Bsj6a4lzz8gQ==}
cpu: [arm64]
os: [linux]
libc: [musl]
'@rollup/rollup-linux-loongarch64-gnu@4.40.1':
resolution: {integrity: sha512-ySyWikVhNzv+BV/IDCsrraOAZ3UaC8SZB67FZlqVwXwnFhPihOso9rPOxzZbjp81suB1O2Topw+6Ug3JNegejQ==}
cpu: [loong64]
os: [linux]
libc: [glibc]
'@rollup/rollup-linux-powerpc64le-gnu@4.40.1':
resolution: {integrity: sha512-BvvA64QxZlh7WZWqDPPdt0GH4bznuL6uOO1pmgPnnv86rpUpc8ZxgZwcEgXvo02GRIZX1hQ0j0pAnhwkhwPqWg==}
cpu: [ppc64]
os: [linux]
libc: [glibc]
'@rollup/rollup-linux-riscv64-gnu@4.40.1':
resolution: {integrity: sha512-EQSP+8+1VuSulm9RKSMKitTav89fKbHymTf25n5+Yr6gAPZxYWpj3DzAsQqoaHAk9YX2lwEyAf9S4W8F4l3VBQ==}
cpu: [riscv64]
os: [linux]
libc: [glibc]
'@rollup/rollup-linux-riscv64-musl@4.40.1':
resolution: {integrity: sha512-n/vQ4xRZXKuIpqukkMXZt9RWdl+2zgGNx7Uda8NtmLJ06NL8jiHxUawbwC+hdSq1rrw/9CghCpEONor+l1e2gA==}
cpu: [riscv64]
os: [linux]
libc: [musl]
'@rollup/rollup-linux-s390x-gnu@4.40.1':
resolution: {integrity: sha512-h8d28xzYb98fMQKUz0w2fMc1XuGzLLjdyxVIbhbil4ELfk5/orZlSTpF/xdI9C8K0I8lCkq+1En2RJsawZekkg==}
cpu: [s390x]
os: [linux]
libc: [glibc]
'@rollup/rollup-linux-x64-gnu@4.40.1':
resolution: {integrity: sha512-XiK5z70PEFEFqcNj3/zRSz/qX4bp4QIraTy9QjwJAb/Z8GM7kVUsD0Uk8maIPeTyPCP03ChdI+VVmJriKYbRHQ==}
cpu: [x64]
os: [linux]
libc: [glibc]
'@rollup/rollup-linux-x64-musl@4.40.1':
resolution: {integrity: sha512-2BRORitq5rQ4Da9blVovzNCMaUlyKrzMSvkVR0D4qPuOy/+pMCrh1d7o01RATwVy+6Fa1WBw+da7QPeLWU/1mQ==}
cpu: [x64]
os: [linux]
libc: [musl]
'@rollup/rollup-win32-arm64-msvc@4.40.1':
resolution: {integrity: sha512-b2bcNm9Kbde03H+q+Jjw9tSfhYkzrDUf2d5MAd1bOJuVplXvFhWz7tRtWvD8/ORZi7qSCy0idW6tf2HgxSXQSg==}
......@@ -1115,15 +1129,30 @@ packages:
cpu: [x64]
os: [win32]
'@spark/api-base@2.0.36':
resolution: {integrity: sha512-2LXzILQqpLyxUIp+cly1s2MJF1n4qIpMLypwh0kO4l3r+vX1lsfUGmwaxLZaTGDdSPTpgpbgIXyX8FhFAdHcbw==}
'@spark/api-common@2.0.22':
resolution: {integrity: sha512-lKTdfDhS38NrgEJaNagk1zgVX69hH8ZAi9vdpD3+G20EI5S+4W7bB/L+G9BpwsltJpeKAhOxnK0d31DGgD2zRg==}
'@spark/circle-turntable@1.0.3':
resolution: {integrity: sha512-oJBskZlBFmuNQRmg7/OfkZ+T903f9+XMosWklbhnRNKBEwckYXR+ml+c8m1YVhgGjixFwdxtGaIY8BHtYUxBbg==}
peerDependencies:
react: ^17.0.2
react-dom: 17.0.2
'@spark/common-helpers@1.0.26':
resolution: {integrity: sha512-bMBx2kLGgEyy4t8B6Ui5GsPxmdJmDSkoerQ8wypxZZv69pCLk39AFErZ3KqCnF1HR6FvyPl9JGOIqYcUhEEenw==}
'@spark/dbdomain@1.0.25':
resolution: {integrity: sha512-sOiwm3ihBJYpv97SFFfc2EHMCWws8xAxxAx5Q5yTteokvJMQKfoCzWXEm2q42zeITgzEjcoT5BjljnKb/qayGA==}
'@spark/projectx@2.0.13':
resolution: {integrity: sha512-ow8ATHzlq7SXVJveP4LdLpF+k2eGwKpKrDTr2scfp+LMtlxbLQIXZL/D7RQVwTwJnk7zIYw6gKlpaTKmdXqfmg==}
'@spark/utils@2.0.88':
resolution: {integrity: sha512-+wxYTWja1p1ndOr/Ui+AdnlcGMhWYckm9Ona2wBaw56M71EHMQ/8oU0fWT0QKiOYO8NEiOhM7UiORvQldg5hTQ==}
'@tailwindcss/node@4.0.6':
resolution: {integrity: sha512-jb6E0WeSq7OQbVYcIJ6LxnZTeC4HjMvbzFBMCrQff4R50HBlo/obmYNk6V2GCUXDeqiXtvtrQgcIbT+/boB03Q==}
......@@ -1162,24 +1191,28 @@ packages:
engines: {node: '>= 10'}
cpu: [arm64]
os: [linux]
libc: [glibc]
'@tailwindcss/oxide-linux-arm64-musl@4.0.6':
resolution: {integrity: sha512-IoArz1vfuTR4rALXMUXI/GWWfx2EaO4gFNtBNkDNOYhlTD4NVEwE45nbBoojYiTulajI4c2XH8UmVEVJTOJKxA==}
engines: {node: '>= 10'}
cpu: [arm64]
os: [linux]
libc: [musl]
'@tailwindcss/oxide-linux-x64-gnu@4.0.6':
resolution: {integrity: sha512-QtsUfLkEAeWAC3Owx9Kg+7JdzE+k9drPhwTAXbXugYB9RZUnEWWx5x3q/au6TvUYcL+n0RBqDEO2gucZRvRFgQ==}
engines: {node: '>= 10'}
cpu: [x64]
os: [linux]
libc: [glibc]
'@tailwindcss/oxide-linux-x64-musl@4.0.6':
resolution: {integrity: sha512-QthvJqIji2KlGNwLcK/PPYo7w1Wsi/8NK0wAtRGbv4eOPdZHkQ9KUk+oCoP20oPO7i2a6X1aBAFQEL7i08nNMA==}
engines: {node: '>= 10'}
cpu: [x64]
os: [linux]
libc: [musl]
'@tailwindcss/oxide-win32-arm64-msvc@4.0.6':
resolution: {integrity: sha512-+oka+dYX8jy9iP00DJ9Y100XsqvbqR5s0yfMZJuPR1H/lDVtDfsZiSix1UFBQ3X1HWxoEEl6iXNJHWd56TocVw==}
......@@ -1388,10 +1421,10 @@ packages:
engines: {node: '>=10.0.0'}
'@xtuc/ieee754@1.2.0':
resolution: {integrity: sha512-DX8nKgqcGwsc0eJSqYt5lwP4DH5FlHnmuWWBRy7X0NcaGR0ZtuyeESgMwTYVEtxmsNGY+qit4QYT/MIYTOTPeA==}
resolution: {integrity: sha1-7vAUoxRa5Hehy8AM0eVSM23Ot5A=}
'@xtuc/long@4.2.2':
resolution: {integrity: sha512-NuHqBY1PB/D8xU6s/thBgOAiAP7HOYDQ32+BFZILJ8ivkUkAHQnWfn6WhL79Owj1qmUnoN/YPhktdIoucipkAQ==}
resolution: {integrity: sha1-0pHGpOl5ibXGHZrPOWrk/hM6cY0=}
acorn-jsx@5.3.2:
resolution: {integrity: sha1-ftW7VZCLOy8bxVxq8WU7rafweTc=}
......@@ -1412,7 +1445,7 @@ packages:
engines: {node: '>= 4.0.0'}
ajv-formats@2.1.1:
resolution: {integrity: sha512-Wx0Kx52hxE7C18hkMEggYlEifqWZtYaRgouJor+WMdPnQyEK13vgEWyVNup7SoeeoLMsr4kf5h6dOW11I15MUA==}
resolution: {integrity: sha1-bmaUAGWet0lzu/LjMycYCgmWtSA=}
peerDependencies:
ajv: ^8.0.0
peerDependenciesMeta:
......@@ -1420,7 +1453,7 @@ packages:
optional: true
ajv-keywords@5.1.0:
resolution: {integrity: sha512-YCS/JNFAUyr5vAuhk1DWm1CBxRHW9LbJ2ozWeemrIqpbsqKjHVxYPyi5GC0rjZIT5JxJ3virVTS8wk4i/Z+krw==}
resolution: {integrity: sha1-adTThaRzPNvqtElkoRcKiPh/DhY=}
peerDependencies:
ajv: ^8.8.2
......@@ -1739,6 +1772,9 @@ packages:
resolution: {integrity: sha512-47qPchRCykZC03FhkYAhrvwU4xDBFIj1QPqaarj6mdM/hgUzfPHcpkHJOn3mJAufFeeAxAzeGsr5X0M4k6fLZQ==}
engines: {node: '>=12'}
duiba-utils@1.0.13:
resolution: {integrity: sha512-VEFzmfiujSZcl40jgRhkuv1lAsvLxhfArENFbI1NXxAz9iihdGOH1SdTektWaH5hrwsWvy/6kB088KzxJ+QvtA==}
duiba-utils@2.0.2:
resolution: {integrity: sha512-xik6sEQfyiUBYhJZV96AYzy6/p7bYZAzHUBCPfHOFe6iHHUIibvBW2bA/NgSpvRdQ3+Sb5oWtOoLPGPH5+dtzQ==}
......@@ -1779,7 +1815,7 @@ packages:
engines: {node: '>=0.12'}
errno@0.1.8:
resolution: {integrity: sha512-dJ6oBr5SQ1VSd9qkk7ByRgb/1SH4JZjCHSW/mr63/QcXO9zLVxvJ6Oy13nio03rxpSnVDDjFor75SjVeZWPW/A==}
resolution: {integrity: sha1-i7Ppx9Rjvkl2/4iPdrSAnrwugR8=}
hasBin: true
es-define-property@1.0.1:
......@@ -1829,7 +1865,7 @@ packages:
eslint: '>=8.40'
eslint-scope@5.1.1:
resolution: {integrity: sha512-2NxwbF/hZ0KpepYN0cNbo+FN6XoK7GaHlQhgx/hIZl6Va0bF45RQOOwhLIy8lQDbuCiadSLCBnH2CFYquit5bw==}
resolution: {integrity: sha1-54blmmbLkrP2wfsNUIqrF0hI9Iw=}
engines: {node: '>=8.0.0'}
eslint-scope@8.2.0:
......@@ -1867,7 +1903,7 @@ packages:
engines: {node: '>=4.0'}
estraverse@4.3.0:
resolution: {integrity: sha512-39nnKffWz8xN1BU/2c79n9nB9HDzo0niYUqx6xyqUnyoAnQyyWpOTdZEeiCch8BBu515t4wp9ZmgVfVhn9EBpw==}
resolution: {integrity: sha1-OYrT88WiSUi+dyXoPRGn3ijNvR0=}
engines: {node: '>=4.0'}
estraverse@5.3.0:
......@@ -1882,7 +1918,7 @@ packages:
resolution: {integrity: sha512-GWkBvjiSZK87ELrYOSESUYeVIc9mvLLf/nXalMOS5dYrgZq9o5OVkbZAVM06CVxYsCwH9BDZFPlQTlPA1j4ahA==}
events@3.3.0:
resolution: {integrity: sha512-mQw+2fkQbALzQ7V0MY0IqdnXNOeTtP4r0lN9z7AAawCXgqea7bDii20AYrIBrFd/Hx0M2Ocz6S111CaFkUcb0Q==}
resolution: {integrity: sha1-Mala0Kkk4tLEGagTrrLE6HjqdAA=}
engines: {node: '>=0.8.x'}
extend-shallow@2.0.1:
......@@ -1993,7 +2029,7 @@ packages:
engines: {node: '>=10.13.0'}
glob-to-regexp@0.4.1:
resolution: {integrity: sha512-lkX1HJXwyMcprw/5YUZc2s7DrpAiHB21/V+E1rHUrVNokkvB6bqMzT0VfV6/86ZNabt1k14YOIaT7nDvOX3Iiw==}
resolution: {integrity: sha1-x1KXCHyFG5pXi9IX3VmpL1n+VG4=}
globals@11.12.0:
resolution: {integrity: sha1-q4eVM4hooLq9hSV1gBjCp+uVxC4=}
......@@ -2039,6 +2075,12 @@ packages:
howler@2.2.4:
resolution: {integrity: sha512-iARIBPgcQrwtEr+tALF+rapJ8qSc+Set2GJQl7xT1MQzWaVkFebdJhR3alVlSiUf5U7nAANKuj3aWpwerocD5w==}
html-observer@1.0.5:
resolution: {integrity: sha512-mAEB5Pu/AxJl0cRrK2HB37h7U98FHy7vungNJSFvczNjx6Rd81YUkDLT6aAGLaX37+ulDwwLqJmY1r01A22aQQ==}
html-shot@1.0.32:
resolution: {integrity: sha512-to8GOLqWSskBLd1b7AMGIyK/KWNi+b+fWpYsL3xfZiLtVqVp4o7a8MhNIsVgDTLL0MnUphyS+3eaRi+fY2jt2w==}
humanize-ms@1.2.1:
resolution: {integrity: sha1-xG4xWaKT9riW2ikxbYtv6Lt5u+0=}
......@@ -2051,7 +2093,7 @@ packages:
engines: {node: '>= 4'}
image-size@0.5.5:
resolution: {integrity: sha512-6TDAlDPZxUFCv+fuOkIoXT/V/f3Qbq8e37p+YOiYrUv3v9cc3/6x78VdfPgFVaB9dZYeLUfKgHRebpkm/oP2VQ==}
resolution: {integrity: sha1-Cd/Uq50g4p6xw+gLiZA3jfnjy5w=}
engines: {node: '>=0.10.0'}
hasBin: true
......@@ -2128,6 +2170,9 @@ packages:
js-binary-schema-parser@2.0.3:
resolution: {integrity: sha512-xezGJmOb4lk/M1ZZLTR/jaBHQ4gG/lqQnJqdIv4721DMggsa1bDVlHXNeHYogaIEHD9vCRv0fcL4hMA+Coarkg==}
js-md5@0.7.3:
resolution: {integrity: sha1-tPL7sLMnRV9ZjWcn447Ccs0Jw/I=}
js-tokens@4.0.0:
resolution: {integrity: sha1-GSA/tZmR35jjoocFDUZHzerzJJk=}
......@@ -2149,13 +2194,13 @@ packages:
resolution: {integrity: sha1-kziAKjDTtmBfvgYT4JQAjKjAWhM=}
json-parse-even-better-errors@2.3.1:
resolution: {integrity: sha512-xyFwyhro/JEof6Ghe2iz2NcXoj2sloNsWr/XsERDK/oiPCfaNhl5ONfp+jQdAZRQQ0IJWNzH9zIZF7li91kh2w==}
resolution: {integrity: sha1-fEeAWpQxmSjgV3dAXcEuH3pO4C0=}
json-schema-traverse@0.4.1:
resolution: {integrity: sha1-afaofZUTq4u4/mO9sJecRI5oRmA=}
json-schema-traverse@1.0.0:
resolution: {integrity: sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug==}
resolution: {integrity: sha1-rnvLNlard6c7pcSb9lTzjmtoYOI=}
json-stable-stringify-without-jsonify@1.0.1:
resolution: {integrity: sha1-nbe1lJatPzz+8wp1FC0tkwrXJlE=}
......@@ -2219,24 +2264,28 @@ packages:
engines: {node: '>= 12.0.0'}
cpu: [arm64]
os: [linux]
libc: [glibc]
lightningcss-linux-arm64-musl@1.29.1:
resolution: {integrity: sha512-UKMFrG4rL/uHNgelBsDwJcBqVpzNJbzsKkbI3Ja5fg00sgQnHw/VrzUTEc4jhZ+AN2BvQYz/tkHu4vt1kLuJyw==}
engines: {node: '>= 12.0.0'}
cpu: [arm64]
os: [linux]
libc: [musl]
lightningcss-linux-x64-gnu@1.29.1:
resolution: {integrity: sha512-u1S+xdODy/eEtjADqirA774y3jLcm8RPtYztwReEXoZKdzgsHYPl0s5V52Tst+GKzqjebkULT86XMSxejzfISw==}
engines: {node: '>= 12.0.0'}
cpu: [x64]
os: [linux]
libc: [glibc]
lightningcss-linux-x64-musl@1.29.1:
resolution: {integrity: sha512-L0Tx0DtaNUTzXv0lbGCLB/c/qEADanHbu4QdcNOXLIe1i8i22rZRpbT3gpWYsCh9aSL9zFujY/WmEXIatWvXbw==}
engines: {node: '>= 12.0.0'}
cpu: [x64]
os: [linux]
libc: [musl]
lightningcss-win32-arm64-msvc@1.29.1:
resolution: {integrity: sha512-QoOVnkIEFfbW4xPi+dpdft/zAKmgLgsRHfJalEPYuJDOWf7cLQzYg0DEh8/sn737FaeMJxHZRc1oBreiwZCjog==}
......@@ -2299,7 +2348,7 @@ packages:
resolution: {integrity: sha512-sNPKHvyjVf7gyjwS4xGTaW/mCnF8wnjtifKBEhxfZ7E/S8tQ0rssrwGNn6q8JH/ohItJfSQp9mBtQYuTlH5QnA==}
make-dir@2.1.0:
resolution: {integrity: sha512-LS9X+dc8KLxXCb8dni79fLIIUA5VyZoyjSMCwTluaXA0o27cCK0bhXkpgw+sTXVpPy/lSO57ilRixqk0vDmtRA==}
resolution: {integrity: sha1-XwMQ4YuL6JjMBwCSlaMK5B6R5vU=}
engines: {node: '>=6'}
math-intrinsics@1.1.0:
......@@ -2320,7 +2369,7 @@ packages:
resolution: {integrity: sha512-gaNvAS7TZ897/rVaZ0nMtAyxNyi/pdbjbAwUpFQpN70GqnVfOiXpeUUMKRBmzXaSQ8DdTX4/0ms62r2K+hE6mQ==}
merge-stream@2.0.0:
resolution: {integrity: sha512-abv/qOcuPfk3URPfDzmZU1LKmuw8kT+0nIHvKrKgFrwifol/doWcdA4ZqsWQ8ENrFKkd67Mfpo/LovbIUsbt3w==}
resolution: {integrity: sha1-UoI2KaFN0AyXcPtq1H3GMQ8sH2A=}
merge2@1.4.1:
resolution: {integrity: sha1-Q2iJL4hekHRVpv19xVwMnUBJkK4=}
......@@ -2339,7 +2388,7 @@ packages:
engines: {node: '>= 0.6'}
mime@1.6.0:
resolution: {integrity: sha512-x0Vn8spI+wuJ1O6S7gnbaQg8Pxh4NNHb7KSINmEWKiPE4RKOplvijn+NkmYmmRgP68mc70j2EbeTFRsrswaQeg==}
resolution: {integrity: sha1-Ms2eXGRVO9WNGaVor0Uqz/BJgbE=}
engines: {node: '>=4'}
hasBin: true
......@@ -2421,7 +2470,7 @@ packages:
hasBin: true
neo-async@2.6.2:
resolution: {integrity: sha512-Yd3UES5mWCSqR+qNT93S3UoYUkqAZ9lLg8a7g9rimsWmYGK8cVToA4/sF3RrshdyV3sAGMXVUmpMYOw+dLpOuw==}
resolution: {integrity: sha1-tKr7k+OustgXTKU88WOrfXMIMF8=}
node-hex@1.0.1:
resolution: {integrity: sha512-iwpZdvW6Umz12ICmu9IYPRxg0tOLGmU3Tq2tKetejCj3oZd7b2nUXwP3a7QA5M9glWy8wlPS1G3RwM/CdsUbdQ==}
......@@ -2758,7 +2807,7 @@ packages:
resolution: {integrity: sha1-SSkii7xyTfrEPg77BYyve2z7YkM=}
randombytes@2.1.0:
resolution: {integrity: sha512-vYl3iOX+4CKUWuxGi9Ukhie6fsqXqS9FE2Zaic4tNFD2N2QQaXOMFbuKK4QmDHC0JO6B1Zp41J0LpT0oR68amQ==}
resolution: {integrity: sha1-32+ENy8CcNxlzfYpE0mrekc9Tyo=}
react-dom@18.3.1:
resolution: {integrity: sha512-5m4nQKp+rZRb09LNH59GM4BxTh9251/ylbKIbpe7TpGxfJ+9kv6BLkLBXIjjspbgbnIBNqlI23tRnTWT0snUIw==}
......@@ -2805,7 +2854,7 @@ packages:
hasBin: true
require-from-string@2.0.2:
resolution: {integrity: sha512-Xf0nWe6RseziFMu+Ap9biiUbmplq6S9/p+7w7YXP/JBHhrUDDUhwa+vANyubuqfZWTveU//DYVGsDG7RKL/vEw==}
resolution: {integrity: sha1-iaf92TgmEmcxjq/hT5wy5ZjDaQk=}
engines: {node: '>=0.10.0'}
resolve-from@4.0.0:
......@@ -2899,7 +2948,7 @@ packages:
resolution: {integrity: sha1-BP58f54e0tZiIzwoyys1ufY/bk8=}
source-map@0.6.1:
resolution: {integrity: sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==}
resolution: {integrity: sha1-dHIq8y6WFOnCh6jQu95IteLxomM=}
engines: {node: '>=0.10.0'}
spark-utils@1.1.10:
......@@ -2934,7 +2983,7 @@ packages:
engines: {node: '>=8'}
supports-color@8.1.1:
resolution: {integrity: sha512-MpUEN2OodtUzxvKQl72cUF7RQ5EiHsGvSsVG0ia9c5RbWGL2CI4C7EpPS8UTBIplnlzZiNuV56w+FuNxy3ty2Q==}
resolution: {integrity: sha1-zW/BfihQDP9WwbhsCn/UpUpzAFw=}
engines: {node: '>=10'}
supports-preserve-symlinks-flag@1.0.0:
......@@ -4154,6 +4203,18 @@ snapshots:
'@rollup/rollup-win32-x64-msvc@4.40.1':
optional: true
'@spark/api-base@2.0.36':
dependencies:
'@spark/common-helpers': 1.0.26
'@spark/utils': 2.0.88
'@spark/api-common@2.0.22':
dependencies:
'@spark/api-base': 2.0.36
'@spark/common-helpers': 1.0.26
'@spark/utils': 2.0.88
duiba-utils: 1.0.13
'@spark/circle-turntable@1.0.3(less@4.3.0)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(webpack@5.98.0(esbuild@0.25.3))':
dependencies:
'@babel/core': 7.26.9
......@@ -4166,8 +4227,30 @@ snapshots:
- supports-color
- webpack
'@spark/common-helpers@1.0.26':
dependencies:
'@babel/runtime': 7.26.9
'@spark/api-base': 2.0.36
'@spark/projectx': 2.0.13
duiba-utils: 1.0.13
'@spark/dbdomain@1.0.25': {}
'@spark/projectx@2.0.13':
dependencies:
'@spark/api-base': 2.0.36
'@spark/common-helpers': 1.0.26
'@spark/utils': 2.0.88
'@spark/utils@2.0.88':
dependencies:
'@spark/api-base': 2.0.36
duiba-utils: 1.0.13
howler: 2.2.4
html-observer: 1.0.5
html-shot: 1.0.32
js-md5: 0.7.3
'@tailwindcss/node@4.0.6':
dependencies:
enhanced-resolve: 5.18.1
......@@ -4887,6 +4970,8 @@ snapshots:
dotenv@16.4.7: {}
duiba-utils@1.0.13: {}
duiba-utils@2.0.2: {}
dunder-proto@1.0.1:
......@@ -5208,6 +5293,12 @@ snapshots:
howler@2.2.4: {}
html-observer@1.0.5:
dependencies:
tslib: 2.8.1
html-shot@1.0.32: {}
humanize-ms@1.2.1:
dependencies:
ms: 2.1.3
......@@ -5280,6 +5371,8 @@ snapshots:
js-binary-schema-parser@2.0.3: {}
js-md5@0.7.3: {}
js-tokens@4.0.0: {}
js-yaml@4.1.0:
......
......@@ -27,7 +27,7 @@ class App extends Component {
const defaultPage = {
myPrize: MyPrize, // TODO 举例子 新宿台奖品页
index: HomePage,
}[skinId] || GamePage;
}[skinId] || HomePage;
PageCtrl.changePage(defaultPage);
}
......
......@@ -3,11 +3,18 @@
import React from 'react';
import { observer } from 'mobx-react';
import './posterpop.less';
import { makeQrcode } from "@spark/api-common";
@observer
class Posterpop extends React.Component {
constructor(props) {
super(props);
}
async componentDidMount() {
// https://98570-activity.m.dexfu.cn/projectx/p6534784b/index.html?appKey=2vujqg1MJ4A4vogq9e22RzTa7C8S&openBs=openbs&appID=98570
let url = location.origin + "/projectx/"+CFG.projectId+"/index.html?appKey=2vujqg1MJ4A4vogq9e22RzTa7C8S&openBs=openbs&appID="+CFG.appID;
const qrcodeSrc = await makeQrcode(url);
console.info(qrcodeSrc);
}
render() {
return (
......
......@@ -30,10 +30,11 @@
.sparkBg("rankNoPrizePop/btn.png");
}
.lab {
width: 319px;
width: 564px;
height: 43px;
left: 219px;
left: 92px;
top: 681px;
text-align: center;
position: absolute;
font-size: 41px;
line-height: 43px;
......
......@@ -3,19 +3,29 @@
import React from 'react';
import { observer } from 'mobx-react';
import './ranknoprizepop.less';
import { ModalCtrl } from '@/core/ctrls/ModalCtrl';
import { Button } from '@grace/ui';
type RanknoprizepopProps = {
prizeImg: string;
prizeName: string;
rank: number;
};
@observer
class Ranknoprizepop extends React.Component {
class Ranknoprizepop extends React.Component<RanknoprizepopProps> {
constructor(props) {
super(props);
console.log(props)
}
closePop = () => {
ModalCtrl.closeModal();
}
render() {
return (
<div className="ranknoprizepop modal_center">
<span className="bg"></span>
<span className="close"></span>
<span className="btn"></span>
<span className="lab">最终排名为123</span>
<Button className="close" onClick={this.closePop}></Button>
<Button className="btn" onClick={this.closePop}></Button>
<span className="lab">最终排名为{this.props.rank}</span>
</div>
);
}
......
......@@ -44,39 +44,50 @@
.sparkBg("rankPrizePop/prizelight.png");
}
.prizeimg {
width: 163px;
width: 245px;
height: 245px;
left: 150px;
left: 109px;
top: 155px;
position: absolute;
.sparkBg("rankPrizePop/prizeImg.png");
// .sparkBg("rankPrizePop/prizeImg.png");
img{
width: 245px;
height: 245px;
left: 0px;
top: 0px;
position: absolute;
object-fit: contain;
}
}
}
.name {
width: 147px;
width: 504px;
height: 33px;
left: 309px;
left: 122px;
top: 887px;
text-align: center;
position: absolute;
font-size: 35px;
line-height: 33px;
color: rgba(255, 255, 255, 1);
}
.ranklab {
width: 273px;
width: 504px;
height: 37px;
left: 241px;
left: 122px;
top: 548px;
text-align: center;
position: absolute;
font-size: 35px;
line-height: 37px;
color: rgba(255, 255, 255, 1);
}
.tips {
width: 340px;
width: 504px;
height: 23px;
left: 209px;
left: 122px;
top: 1049px;
text-align: center;
position: absolute;
opacity: 0.6;
font-size: 23px;
......
......@@ -3,25 +3,44 @@
import React from 'react';
import { observer } from 'mobx-react';
import './rankprizepop.less';
import { PageCtrl } from '@/core/ctrls/PageCtrl';
import Prizepage from '@/pages/prizepage/prizepage';
import { ModalCtrl } from '@/core/ctrls/ModalCtrl';
import { Button } from '@grace/ui';
type RankprizepopProps = {
prizeImg: string;
prizeName: string;
rank: number;
};
@observer
class Rankprizepop extends React.Component {
class Rankprizepop extends React.Component<RankprizepopProps> {
constructor(props) {
super(props);
}
goPrize = () => {
ModalCtrl.closeModal();
PageCtrl.changePage(Prizepage);
}
closePop = () => {
ModalCtrl.closeModal();
}
render() {
return (
<div className="rankprizepop modal_center">
<span className="bg"></span>
<span className="close"></span>
<span className="btn"></span>
<div className="prizeitem">
<span className="prizelight"></span>
<span className="prizeimg"></span>
<span className="prizeimg">
<img
src={this.props.prizeImg}
alt="" />
</span>
</div>
<span className="name">奖品名称</span>
<span className="ranklab">最终排名为123</span>
<span className="name">{this.props.prizeName}</span>
<span className="ranklab">最终排名为{this.props.rank}</span>
<span className="tips">奖品可在首页 我的奖品 中查看</span>
<Button className="close" onClick={this.closePop}></Button>
<Button className="btn" onClick={this.goPrize}></Button>
</div>
);
}
......
......@@ -4,7 +4,7 @@
bottom: 0;
right: 0;
left: 0;
background-color: rgba(0, 0, 0, 0.8);
background-color: rgba(0, 0, 0, 0.9);
z-index: 2000;
display: flex;
align-items: center;
......
......@@ -233,7 +233,8 @@
height: 172px;
left: 0px;
top: 0px;
position: absolute;
position: relative;
margin-bottom: 10px;
.taskbg {
width: 695px;
height: 172px;
......@@ -275,7 +276,7 @@
.sparkBg("homePage/taskfinishbtn.png");
}
.tasktit {
width: 149px;
width: 260px;
height: 29px;
left: 168px;
top: 56px;
......@@ -283,9 +284,11 @@
font-size: 34px;
line-height: 29px;
color: rgba(255, 255, 255, 1);
font-weight: bold;
// .lineClamp1();
}
.tasksub {
width: 121px;
width: 260px;
height: 21px;
left: 170px;
top: 95px;
......@@ -301,6 +304,13 @@
top: 49px;
position: absolute;
.sparkBg("homePage/taskicon.png");
img {
width: 65px;
height: 69px;
left: 0px;
top: 0px;
position: absolute;
}
}
}
.taskitem2 {
......
import React from 'react';
import { observer } from 'mobx-react';
import './HomePage.less';
import { Button } from "@grace/ui";
import { Button, Toast } from "@grace/ui";
import { _asyncThrottle, miniGoUrl } from "@/utils/utils.ts";
import store from "@/store/store.ts";
import { SvgaPlayer } from "@grace/svgaplayer";
......@@ -15,6 +15,9 @@ import { PageCtrl } from "@/core/ctrls/PageCtrl.tsx";
import GamePage from "@/pages/GamePage/GamePage.tsx";
import musicStore from '@/store/musicStore';
import Drawpop from '@/components/drawpop/drawpop';
import Posterpop from '@/components/posterpop/posterpop';
import API from '@/api';
import Rankpage from '../rankpage/rankpage';
@observer
class HomePage extends React.Component<any, any> {
......@@ -23,6 +26,7 @@ class HomePage extends React.Component<any, any> {
componentDidMount() {
store.updateIndex();
store.queryTask()
}
/** 开始游戏按钮*/
......@@ -38,6 +42,7 @@ class HomePage extends React.Component<any, any> {
/** 奖品按钮*/
clickPrize = _asyncThrottle(() => {
if (!store.judgeActTime(true, false)) return;
ModalCtrl.showModal(PrizePanel, {
prizeVO: {},
});
......@@ -45,14 +50,45 @@ class HomePage extends React.Component<any, any> {
/** 规则按钮*/
clickRule = () => {
if (!store.judgeActTime(true, false)) return;
ModalCtrl.showModal(RulePanel);
}
clickDraw = () => {
if (!store.judgeActTime()) return;
ModalCtrl.showModal(Drawpop, {});
}
clickShop = () => {
if (!store.judgeActTime()) return;
miniGoUrl(store.frontVariable.shopUrl)
}
doTask = _asyncThrottle((item: { code: string; }) => {
if (!store.judgeActTime()) return;
if (item.code == "invite") {
// 分享
ModalCtrl.showModal(Posterpop)
return;
} else if (item.code == "scan") {
miniGoUrl(store.frontVariable.scanUrl)
return;
}
})
getTaskPrize = _asyncThrottle(async (item) => {
if (!store.judgeActTime()) return;
const { success, data } = await API.sendPrize({
prizePendingCode: item.prizePendingCode,
taskId: item.id,
taskCode: item.code
})
if (success) {
Toast.show("游戏次数+" + data.options[0].sendCount)
}
})
clickRank = _asyncThrottle(() => {
if (!store.judgeActTime()) return;
PageCtrl.changePage(Rankpage);
})
render() {
const { remainTimes, remainDrawTimes, rank } = store.indexData
......@@ -67,7 +103,7 @@ class HomePage extends React.Component<any, any> {
<img src={rank?.prizeImg}></img>
</span>
</div>
<div className="rankinfo">
<div className="rankinfo" onClick={this.clickRank}>
<span className="rankarr"></span>
<span className="ranklab">我的排名</span>
<span className="ranknum">{rank?.rank == -1 ? "未上榜" : rank?.rank + "名"}</span>
......@@ -92,17 +128,27 @@ class HomePage extends React.Component<any, any> {
</div>
</Button>
<div className="tasklist">
<div className="taskitem">
<span className="taskbg"></span>
<span className="taskscanbtn"></span>
<span className="taskinvitebtn"></span>
<span className="taskgetbtn"></span>
<span className="taskfinishbtn"></span>
<span className="tasktit">每日登录</span>
<span className="tasksub">游戏次数*1</span>
<span className="taskicon"></span>
</div>
<span className="taskitem2"></span>
{
store.taskList?.map((item: any, index) => {
return (
<div className="taskitem" key={"task" + index}>
<span className="taskbg"></span>
{
item.taskStatus == 2 ? <span className="taskfinishbtn"></span>
: item.taskStatus == 1 ? <span className="taskgetbtn" onClick={() => this.getTaskPrize(item)}></span>
: item.code == "invite" ? <span className="taskinvitebtn" onClick={() => this.doTask(item)}></span>
: item.code == "scan" ? <span className="taskscanbtn" onClick={() => this.doTask(item)}></span>
: <span className="taskgetbtn"></span>
}
<span className="tasktit">{item.title}({item.completedSize}/{item.intervalLimitSize})</span>
<span className="tasksub">{item.subTitle}</span>
<span className="taskicon">
<img src={item.icon}></img>
</span>
</div>
)
})
}
</div>
<span className="tasktitle"></span>
<span className="ip"></span>
......
'use strict';
import React from 'react';
import { observer } from 'mobx-react';
import './rankpage.less';
@observer
class Rankpage extends React.Component {
constructor(props) {
super(props);
}
render() {
return (
<div className="rankpage modal_center">
<span className="bg"></span>
<div className="countdown">
<span className="cdbg"></span>
<span className="day">01</span>
<span className="hour">01</span>
<span className="min">59</span>
<span className="sec">59</span>
</div>
<span className="ranktitle"></span>
<div className="list">
<div className="myinfo">
<span className="myrank">999+</span>
<span className="myname">用户昵称(我)</span>
<span className="myscore">614</span>
<span className="mybg"></span>
</div>
<div className="item">
<span className="itemrank">1</span>
<span className="itemname">用户昵称</span>
<span className="itemscore">614</span>
<span className="itembg"></span>
</div>
<span className="item2"></span>
</div>
<div className="prizeitem">
<span className="prizebg"></span>
<span className="prizelight"></span>
<span className="prizeimg"></span>
</div>
<span className="title"></span>
<span className="back"></span>
</div>
);
}
}
export default Rankpage;
......@@ -28,43 +28,47 @@
.sparkBg("rankPage/cdbg.png");
}
.day {
width: 45px;
width: 54px;
height: 27px;
left: 18px;
top: 20px;
left: 10px;
top: 15px;
text-align: center;
position: absolute;
font-size: 34px;
line-height: 27px;
line-height: 34px;
color: rgba(29, 238, 251, 1);
}
.hour {
width: 45px;
height: 27px;
left: 131px;
top: 20px;
width: 54px;
height: 36px;
left: 123px;
top: 15px;
text-align: center;
position: absolute;
font-size: 34px;
line-height: 27px;
line-height: 34px;
color: rgba(29, 238, 251, 1);
}
.min {
width: 46px;
width: 54px;
height: 27px;
left: 214px;
top: 20px;
left: 206px;
top: 15px;
text-align: center;
position: absolute;
font-size: 34px;
line-height: 27px;
line-height: 34px;
color: rgba(29, 238, 251, 1);
}
.sec {
width: 47px;
width: 54px;
height: 27px;
left: 297px;
top: 20px;
left: 289px;
top: 15px;
text-align: center;
position: absolute;
font-size: 34px;
line-height: 27px;
line-height: 34px;
color: rgba(29, 238, 251, 1);
}
}
......@@ -82,6 +86,7 @@
left: 20px;
top: 925px;
position: absolute;
overflow-y: scroll;
.myinfo {
width: 716px;
height: 116px;
......@@ -89,33 +94,36 @@
top: 0px;
position: absolute;
.myrank {
width: 94px;
height: 28px;
left: 28px;
top: 44px;
width: 100px;
height: 36px;
left: 25px;
top: 40px;
text-align: center;
position: absolute;
font-size: 36px;
line-height: 28px;
line-height: 36px;
color: rgba(18, 240, 243, 1);
}
.myname {
width: 224px;
height: 35px;
width: 324px;
height: 50px;
left: 204px;
top: 41px;
position: absolute;
font-size: 36px;
line-height: 35px;
line-height: 36px;
color: rgba(18, 240, 243, 1);
.lineClamp1();
}
.myscore {
width: 71px;
height: 28px;
height: 36px;
left: 632px;
top: 45px;
top: 40px;
text-align: right;
position: absolute;
font-size: 36px;
line-height: 28px;
line-height: 36px;
color: rgba(18, 240, 243, 1);
}
.mybg {
......@@ -132,35 +140,39 @@
height: 116px;
left: 0px;
top: 127px;
position: absolute;
position: relative;
margin-top: 6px;
.itemrank {
width: 26px;
width: 100px;
height: 28px;
left: 58px;
top: 44px;
left: 25px;
top: 40px;
text-align: center;
position: absolute;
font-size: 36px;
line-height: 28px;
line-height: 36px;
color: rgba(255, 255, 255, 1);
}
.itemname {
width: 154px;
height: 35px;
width: 324px;
height: 50px;
left: 204px;
top: 41px;
position: absolute;
font-size: 36px;
line-height: 35px;
line-height: 36px;
color: rgba(255, 255, 255, 1);
.lineClamp1()
}
.itemscore {
width: 71px;
height: 28px;
height: 36px;
left: 632px;
top: 45px;
top: 40px;
text-align: right;
position: absolute;
font-size: 36px;
line-height: 28px;
line-height: 36px;
color: rgba(255, 255, 255, 1);
}
.itembg {
......@@ -181,6 +193,18 @@
.sparkBg("rankPage/item2.png");
}
}
.empty {
width: 750px;
height: 40px;
left: 0px;
top: 1150px;
position: absolute;
text-align: center;
font-size: 38px;
line-height: 36px;
font-weight: bold;
color: rgba(255, 255, 255, 1);
}
.prizeitem {
width: 581px;
height: 500px;
......@@ -204,12 +228,20 @@
.sparkBg("rankPage/prizelight.png");
}
.prizeimg {
width: 142px;
width: 214px;
height: 214px;
left: 131px;
left: 95px;
top: 135px;
position: absolute;
.sparkBg("rankPage/prizeImg.png");
// .sparkBg("rankPage/prizeImg.png");
img {
width: 214px;
height: 214px;
left: 0px;
top: 0px;
position: absolute;
object-fit: contain;
}
}
}
.title {
......
'use strict';
import React from 'react';
import { observer } from 'mobx-react';
import './rankpage.less';
import { PageCtrl } from '@/core/ctrls/PageCtrl';
import { Button } from '@grace/ui';
import API from '@/api';
import { dealTime2 } from '@/utils/utils';
// 定义 RankInfo 类型
type RankInfo = {
index: number;
score: number;
userName: string;
meFlag: boolean;
};
// 定义 MyRank 类型
type MyRank = {
index: number;
score: number;
userName: string;
};
// 定义 RankOption 类型
type RankOption = {
ranking: number;
name: string;
image: string;
};
// 定义 Rankpage 组件的 state 类型
type RankpageState = {
day: string;
hour: string;
min: string;
sec: string;
timeStamp: number;
openTime: number;
rankInfos: RankInfo[];
myRank: MyRank;
rankOptions: RankOption[];
};
@observer
class Rankpage extends React.Component<{}, RankpageState> {
constructor(props) {
super(props);
this.state = {
day: '00',
hour: '00',
min: '00',
sec: '00',
timeStamp: 0,
openTime: 0,
rankInfos: [],
myRank: {
index: 0,
score: 0,
userName: ''
},
rankOptions: [],
}
}
back() {
PageCtrl.backPage();
}
timeStamp: number = 1746688893175;
async componentDidMount() {
if (this.state.openTime > this.timeStamp) {
clearTimeout(this.timeCtn)
this.countdown()
}
this.flushRank()
}
async flushRank() {
const { success, data, timeStamp } = await API.rankInfo();
if (success) {
this.timeStamp = timeStamp
this.setState({
timeStamp,
openTime: data.openTime,
rankInfos: data.rankInfos,
myRank: data.myRank,
rankOptions: data.rankOptions,
})
if (data.openTime > timeStamp) {
clearTimeout(this.timeCtn)
this.countdown()
}
}
}
timeCtn
countdown() {
console.log("!@@@@!@@",this.state.openTime - this.timeStamp)
let res = dealTime2(this.state.openTime - this.timeStamp)
this.setState({
day: String(res.day),
hour: String(res.hour),
min: String(res.minute),
sec: String(res.second),
})
clearTimeout(this.timeCtn)
this.timeCtn = setTimeout(() => {
const { openTime } = this.state;
if (openTime > this.timeStamp) {
this.timeStamp += 1000
this.countdown()
} else {
this.flushRank()
}
}, 1000)
}
componentWillUnmount(): void {
clearTimeout(this.timeCtn)
}
render() {
const { rankInfos, myRank, rankOptions,day,hour,min,sec } = this.state;
return (
<div className="rankpage modal_center">
<span className="bg"></span>
<div className="countdown">
<span className="cdbg"></span>
<span className="day">{day}</span>
<span className="hour">{hour}</span>
<span className="min">{min}</span>
<span className="sec">{sec}</span>
</div>
<span className="ranktitle"></span>
<div className="list" style={{ height: `${(689 - (1624 - document.body.clientHeight * 750 / document.body.clientWidth) / 2) / 100}rem` }}>
<div className="myinfo">
<span className="myrank">{myRank.index > 999 ? '999+' : myRank.index}</span>
<span className="myname">{myRank.userName}(我)</span>
<span className="myscore">{myRank.score}</span>
<span className="mybg"></span>
</div>
{
rankInfos.map((item, index) => {
return (
<div className="item" key={'rank' + index}>
<span className="itemrank">{item.index}</span>
<span className="itemname">{item.userName}</span>
<span className="itemscore">{item.score}</span>
<span className="itembg"></span>
</div>
)
})
}
</div>
{
rankInfos.length == 0 && <span className='empty'>暂无数据哦</span>
}
<div className="prizeitem">
<span className="prizebg"></span>
<span className="prizelight"></span>
<span className="prizeimg">
<img src={rankOptions?.[0]?.image}></img>
</span>
</div>
<span className="title"></span>
<Button className="back" onClick={this.back}></Button>
</div>
);
}
}
export default Rankpage;
......@@ -2,6 +2,9 @@ import { makeAutoObservable, } from 'mobx';
import API from '../api/index';
import { Toast } from "@grace/ui";
import { IWxShareInfo } from "@/built-in/share/weixin/weixin.ts";
import { ModalCtrl } from '@/core/ctrls/ModalCtrl';
import Ranknoprizepop from '@/components/ranknoprizepop/ranknoprizepop';
import Rankprizepop from '@/components/rankprizepop/rankprizepop';
class Store {
......@@ -15,6 +18,7 @@ class Store {
prizeInfoAuthTxt: string,
shareInfo: IWxShareInfo,
shopUrl?: string,
scanUrl?: string,
} = {
privacyTxt: "",
prizeInfoAuthTxt: "",
......@@ -71,6 +75,14 @@ class Store {
}
this.indexData = data;
this.indexData.timeStamp = timeStamp;
if (data.rankPopInfo) {
if (data.rankPopInfo.sendPrize) {
ModalCtrl.showModal(Rankprizepop, { ...data.rankPopInfo })
} else {
ModalCtrl.showModal(Ranknoprizepop, { ...data.rankPopInfo })
}
}
}
judgeActTime(brakeStart = true, brakeEnd = true) {
......@@ -83,6 +95,13 @@ class Store {
}
return true;
}
taskList: [];
async queryTask() {
const { success, data } = await API.queryTasks();
if (success) {
this.taskList = data.item;
}
}
}
......
......@@ -47,10 +47,10 @@ export const _throttle = (fun, delay = 2000) => {
* @param fun
* @param delay
*/
export const _asyncThrottle = (fun, delay = 2000) => {
export const _asyncThrottle = <T extends any[], R>(fun, delay = 2000) => {
let last: number;
let canClick = true;
return function () {
return function (...args: T): R {
const now = Date.now();
if (!canClick) return;
......@@ -74,7 +74,7 @@ export const _asyncThrottle = (fun, delay = 2000) => {
export function useThrottle(fn, delay = 2000, dep = []) {
const {current} = useRef({fn, timer: null});
const { current } = useRef({ fn, timer: null });
useEffect(function () {
current.fn = fn;
}, [fn]);
......@@ -202,6 +202,19 @@ export const dealTime = (msTime) => {
second = second > 9 ? second : "0" + second;
return `${hour}:${minute}:${second}`;
}
/** 时间格式化 */
export const dealTime2 = (msTime) => {
const time = msTime / 1000;
let day: number | string = Math.floor(time / 60 / 60 / 24);
let hour: number | string = Math.floor(time / 60 / 60) % 24;
let minute: number | string = Math.floor(time / 60) % 60;
let second: number | string = Math.floor(time) % 60;
day = day > 9? day : "0" + day;
hour = hour > 9 ? hour : "0" + hour;
minute = minute > 9 ? minute : "0" + minute;
second = second > 9 ? second : "0" + second;
return { day, hour, minute, second };
}
/**
* 转换k
......@@ -338,7 +351,7 @@ export const second2Date = (totalSecond) => {
// 格式化的键值
const includesKey = ['month', 'day', 'hour', 'minute', 'second', 'totalHour', 'totalMinute']
// 日期对象
const dateObj = {day, hour, minute, second, millisecond, totalHour, totalMinute}
const dateObj = { day, hour, minute, second, millisecond, totalHour, totalMinute }
return Object.keys(dateObj).reduce((preVal, key) => {
// 值取整
......@@ -376,7 +389,7 @@ export const bodyScroll = (event) => {
}
export const onCtrScroll = (flag = true) => {
if (flag) { // 禁止滚动
document.body.addEventListener('touchmove', bodyScroll, {passive: false});
document.body.addEventListener('touchmove', bodyScroll, { passive: false });
} else { // 开启滚动
document.body.removeEventListener('touchmove', bodyScroll);
}
......@@ -424,5 +437,6 @@ export function prefixInteger(num: number, length: number) {
* @return {*}
*/
export const miniGoUrl = (url) => {
// @ts-ignore
wx.miniProgram.navigateTo({ url: url });
}
\ No newline at end of file
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