koishi-plugin-rocom 1.0.18 → 1.0.24

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (216) hide show
  1. package/lib/announcement-service.d.ts +21 -0
  2. package/lib/announcement-service.js +63 -0
  3. package/lib/async-control.d.ts +3 -0
  4. package/lib/async-control.js +48 -0
  5. package/lib/atlas-service.js +1 -1
  6. package/lib/client.d.ts +58 -7
  7. package/lib/client.js +282 -127
  8. package/lib/commands/egg.js +66 -4
  9. package/lib/commands/merchant.d.ts +105 -0
  10. package/lib/commands/merchant.js +600 -182
  11. package/lib/commands/query.d.ts +18 -0
  12. package/lib/commands/query.js +585 -145
  13. package/lib/commands/ranking.d.ts +2 -0
  14. package/lib/commands/ranking.js +31 -0
  15. package/lib/commands/share-code.d.ts +2 -0
  16. package/lib/commands/share-code.js +111 -0
  17. package/lib/commands/tools.js +48 -60
  18. package/lib/commands/wiki.js +1 -1
  19. package/lib/egg-service.d.ts +82 -8
  20. package/lib/egg-service.js +235 -19
  21. package/lib/element-colors.d.ts +3 -0
  22. package/lib/element-colors.js +34 -0
  23. package/lib/icon-metrics.d.ts +32 -0
  24. package/lib/icon-metrics.js +255 -0
  25. package/lib/img//345/274/202/350/211/262.png +0 -0
  26. package/lib/img//347/202/253/345/275/251.png +0 -0
  27. package/lib/index.d.ts +10 -0
  28. package/lib/index.js +11857 -175
  29. package/lib/merchant-catalog.d.ts +47 -0
  30. package/lib/merchant-catalog.js +193 -0
  31. package/lib/merchant-clock.d.ts +22 -0
  32. package/lib/merchant-clock.js +95 -0
  33. package/lib/merchant-price-log.d.ts +63 -0
  34. package/lib/merchant-price-log.js +187 -0
  35. package/lib/merchant-service.d.ts +38 -0
  36. package/lib/merchant-service.js +216 -0
  37. package/lib/permissions.d.ts +16 -0
  38. package/lib/permissions.js +66 -0
  39. package/lib/pet-data-service.d.ts +13 -0
  40. package/lib/pet-data-service.js +117 -10
  41. package/lib/pet-size.d.ts +13 -0
  42. package/lib/pet-size.js +54 -0
  43. package/lib/player-service.d.ts +37 -0
  44. package/lib/player-service.js +201 -0
  45. package/lib/ranking-service.d.ts +46 -0
  46. package/lib/ranking-service.js +137 -0
  47. package/lib/render-templates/announcement/detail.html +8 -0
  48. package/lib/render-templates/announcement/list.html +5 -0
  49. package/lib/render-templates/announcement/style.css +1 -0
  50. package/lib/render-templates/home/style.css +15 -14
  51. package/lib/render-templates/home-pets/index.html +80 -0
  52. package/lib/render-templates/home-pets/style.css +338 -0
  53. package/lib/render-templates/pet-detail-classic/index.html +151 -0
  54. package/lib/render-templates/pet-detail-classic/style.css +503 -0
  55. package/lib/render-templates/pet-detail-classic/texture2D/a_title.png +0 -0
  56. package/lib/render-templates/pet-detail-classic/texture2D/bg.jpg +0 -0
  57. package/lib/render-templates/pet-detail-classic/texture2D/footer.png +0 -0
  58. package/lib/render-templates/pet-detail-classic/texture2D/icon.png +0 -0
  59. package/lib/render-templates/pet-detail-classic/texture2D/img_head.png +0 -0
  60. package/lib/render-templates/pet-detail-classic/texture2D/jinhua_bg.png +0 -0
  61. package/lib/render-templates/pet-detail-classic/texture2D/level_icon.png +0 -0
  62. package/lib/render-templates/pet-detail-classic/texture2D/line.png +0 -0
  63. package/lib/render-templates/pet-detail-classic/texture2D/mask_bar.png +0 -0
  64. package/lib/render-templates/pet-detail-classic/texture2D/pet_bg.png +0 -0
  65. package/lib/render-templates/pet-detail-classic/texture2D/pet_rocom.png +0 -0
  66. package/lib/render-templates/pet-detail-classic/texture2D/pet_rocom_bg.png +0 -0
  67. package/lib/render-templates/pet-detail-classic/texture2D/poro_bar.png +0 -0
  68. package/lib/render-templates/pet-detail-classic/texture2D/right_jinhua.png +0 -0
  69. package/lib/render-templates/pet-detail-classic/texture2D/skill_bg.png +0 -0
  70. package/lib/render-templates/pet-detail-classic/texture2D/skill_mask.png +0 -0
  71. package/lib/render-templates/pet-detail-classic/texture2D/star.png +0 -0
  72. package/lib/render-templates/pet-detail-classic/texture2D/star_1.png +0 -0
  73. package/lib/render-templates/pet-detail-classic/texture2D/star_8.png +0 -0
  74. package/lib/render-templates/pet-detail-classic/texture2D/star_9.png +0 -0
  75. package/lib/render-templates/pet-detail-classic/texture2D/table.png +0 -0
  76. package/lib/render-templates/pet-detail-classic/texture2D/tags.png +0 -0
  77. package/lib/render-templates/pet-detail-classic/texture2D/title.png +0 -0
  78. package/lib/render-templates/pet-detail-classic/texture2D/top_bg.png +0 -0
  79. package/lib/render-templates/pet-detail-classic/texture2D/xuancai_overlay.png +0 -0
  80. package/lib/render-templates/pet-detail-classic/texture2D/yise_overlay.png +0 -0
  81. package/lib/render-templates/pet-detail-classic/texture2D/ys_bar.png +0 -0
  82. package/lib/render-templates/pet-detail-classic/texture2D//345/261/236/346/200/247/10.png +0 -0
  83. package/lib/render-templates/pet-detail-classic/texture2D//345/261/236/346/200/247/11.png +0 -0
  84. package/lib/render-templates/pet-detail-classic/texture2D//345/261/236/346/200/247/12.png +0 -0
  85. package/lib/render-templates/pet-detail-classic/texture2D//345/261/236/346/200/247/13.png +0 -0
  86. package/lib/render-templates/pet-detail-classic/texture2D//345/261/236/346/200/247/14.png +0 -0
  87. package/lib/render-templates/pet-detail-classic/texture2D//345/261/236/346/200/247/15.png +0 -0
  88. package/lib/render-templates/pet-detail-classic/texture2D//345/261/236/346/200/247/16.png +0 -0
  89. package/lib/render-templates/pet-detail-classic/texture2D//345/261/236/346/200/247/17.png +0 -0
  90. package/lib/render-templates/pet-detail-classic/texture2D//345/261/236/346/200/247/18.png +0 -0
  91. package/lib/render-templates/pet-detail-classic/texture2D//345/261/236/346/200/247/19.png +0 -0
  92. package/lib/render-templates/pet-detail-classic/texture2D//345/261/236/346/200/247/2.png +0 -0
  93. package/lib/render-templates/pet-detail-classic/texture2D//345/261/236/346/200/247/20.png +0 -0
  94. package/lib/render-templates/pet-detail-classic/texture2D//345/261/236/346/200/247/23.png +0 -0
  95. package/lib/render-templates/pet-detail-classic/texture2D//345/261/236/346/200/247/3.png +0 -0
  96. package/lib/render-templates/pet-detail-classic/texture2D//345/261/236/346/200/247/4.png +0 -0
  97. package/lib/render-templates/pet-detail-classic/texture2D//345/261/236/346/200/247/5.png +0 -0
  98. package/lib/render-templates/pet-detail-classic/texture2D//345/261/236/346/200/247/6.png +0 -0
  99. package/lib/render-templates/pet-detail-classic/texture2D//345/261/236/346/200/247/8.png +0 -0
  100. package/lib/render-templates/pet-detail-classic/texture2D//345/261/236/346/200/247/9.png +0 -0
  101. package/lib/render-templates/pet-detail-classic/texture2D//345/261/236/346/200/247//345/205/211.png +0 -0
  102. package/lib/render-templates/pet-detail-classic/texture2D//345/261/236/346/200/247//345/206/260.png +0 -0
  103. package/lib/render-templates/pet-detail-classic/texture2D//345/261/236/346/200/247//345/234/260.png +0 -0
  104. package/lib/render-templates/pet-detail-classic/texture2D//345/261/236/346/200/247//345/271/273.png +0 -0
  105. package/lib/render-templates/pet-detail-classic/texture2D//345/261/236/346/200/247//345/271/275.png +0 -0
  106. package/lib/render-templates/pet-detail-classic/texture2D//345/261/236/346/200/247//346/201/266.png +0 -0
  107. package/lib/render-templates/pet-detail-classic/texture2D//345/261/236/346/200/247//346/227/240.png +0 -0
  108. package/lib/render-templates/pet-detail-classic/texture2D//345/261/236/346/200/247//346/231/256/351/200/232.png +0 -0
  109. package/lib/render-templates/pet-detail-classic/texture2D//345/261/236/346/200/247//346/234/272/346/242/260.png +0 -0
  110. package/lib/render-templates/pet-detail-classic/texture2D//345/261/236/346/200/247//346/255/246.png +0 -0
  111. package/lib/render-templates/pet-detail-classic/texture2D//345/261/236/346/200/247//346/257/222.png +0 -0
  112. package/lib/render-templates/pet-detail-classic/texture2D//345/261/236/346/200/247//346/260/264.png +0 -0
  113. package/lib/render-templates/pet-detail-classic/texture2D//345/261/236/346/200/247//347/201/253.png +0 -0
  114. package/lib/render-templates/pet-detail-classic/texture2D//345/261/236/346/200/247//347/224/265.png +0 -0
  115. package/lib/render-templates/pet-detail-classic/texture2D//345/261/236/346/200/247//347/277/274.png +0 -0
  116. package/lib/render-templates/pet-detail-classic/texture2D//345/261/236/346/200/247//350/215/211.png +0 -0
  117. package/lib/render-templates/pet-detail-classic/texture2D//345/261/236/346/200/247//350/220/214.png +0 -0
  118. package/lib/render-templates/pet-detail-classic/texture2D//345/261/236/346/200/247//350/231/253.png +0 -0
  119. package/lib/render-templates/pet-detail-classic/texture2D//345/261/236/346/200/247//351/276/231.png +0 -0
  120. package/lib/render-templates/pet-detail-classic/texture2D//350/241/200/350/204/211/1.png +0 -0
  121. package/lib/render-templates/pet-detail-classic/texture2D//350/241/200/350/204/211/10.png +0 -0
  122. package/lib/render-templates/pet-detail-classic/texture2D//350/241/200/350/204/211/11.png +0 -0
  123. package/lib/render-templates/pet-detail-classic/texture2D//350/241/200/350/204/211/12.png +0 -0
  124. package/lib/render-templates/pet-detail-classic/texture2D//350/241/200/350/204/211/13.png +0 -0
  125. package/lib/render-templates/pet-detail-classic/texture2D//350/241/200/350/204/211/14.png +0 -0
  126. package/lib/render-templates/pet-detail-classic/texture2D//350/241/200/350/204/211/15.png +0 -0
  127. package/lib/render-templates/pet-detail-classic/texture2D//350/241/200/350/204/211/16.png +0 -0
  128. package/lib/render-templates/pet-detail-classic/texture2D//350/241/200/350/204/211/17.png +0 -0
  129. package/lib/render-templates/pet-detail-classic/texture2D//350/241/200/350/204/211/18.png +0 -0
  130. package/lib/render-templates/pet-detail-classic/texture2D//350/241/200/350/204/211/19.png +0 -0
  131. package/lib/render-templates/pet-detail-classic/texture2D//350/241/200/350/204/211/2.png +0 -0
  132. package/lib/render-templates/pet-detail-classic/texture2D//350/241/200/350/204/211/21.png +0 -0
  133. package/lib/render-templates/pet-detail-classic/texture2D//350/241/200/350/204/211/23.png +0 -0
  134. package/lib/render-templates/pet-detail-classic/texture2D//350/241/200/350/204/211/24.png +0 -0
  135. package/lib/render-templates/pet-detail-classic/texture2D//350/241/200/350/204/211/3.png +0 -0
  136. package/lib/render-templates/pet-detail-classic/texture2D//350/241/200/350/204/211/4.png +0 -0
  137. package/lib/render-templates/pet-detail-classic/texture2D//350/241/200/350/204/211/5.png +0 -0
  138. package/lib/render-templates/pet-detail-classic/texture2D//350/241/200/350/204/211/6.png +0 -0
  139. package/lib/render-templates/pet-detail-classic/texture2D//350/241/200/350/204/211/7.png +0 -0
  140. package/lib/render-templates/pet-detail-classic/texture2D//350/241/200/350/204/211/8.png +0 -0
  141. package/lib/render-templates/pet-detail-classic/texture2D//350/241/200/350/204/211/9.png +0 -0
  142. package/lib/render-templates/pet-ranking/index.html +99 -0
  143. package/lib/render-templates/pet-ranking/style.css +338 -0
  144. package/lib/render-templates/player-search/index.html +7 -0
  145. package/lib/render-templates/searcheggs/index.html +1 -1
  146. package/lib/render-templates/searcheggs/size.html +70 -68
  147. package/lib/render-templates/share-code-classic/assets/eit-logo.png +0 -0
  148. package/lib/render-templates/share-code-classic/assets/img_xingxingdi.png +0 -0
  149. package/lib/render-templates/share-code-classic/assets/roco_icon.png +0 -0
  150. package/lib/render-templates/share-code-classic/assets//345/255/227/344/275/223/Rocofontblack-Regular .ttf +0 -0
  151. package/lib/render-templates/share-code-classic/assets//345/256/240/347/211/251/345/261/236/346/200/247//345/205/211.png +0 -0
  152. package/lib/render-templates/share-code-classic/assets//345/256/240/347/211/251/345/261/236/346/200/247//345/206/260.png +0 -0
  153. package/lib/render-templates/share-code-classic/assets//345/256/240/347/211/251/345/261/236/346/200/247//345/234/260.png +0 -0
  154. package/lib/render-templates/share-code-classic/assets//345/256/240/347/211/251/345/261/236/346/200/247//345/271/273.png +0 -0
  155. package/lib/render-templates/share-code-classic/assets//345/256/240/347/211/251/345/261/236/346/200/247//345/271/275.png +0 -0
  156. package/lib/render-templates/share-code-classic/assets//345/256/240/347/211/251/345/261/236/346/200/247//346/201/266.png +0 -0
  157. package/lib/render-templates/share-code-classic/assets//345/256/240/347/211/251/345/261/236/346/200/247//346/227/240.png +0 -0
  158. package/lib/render-templates/share-code-classic/assets//345/256/240/347/211/251/345/261/236/346/200/247//346/231/256/351/200/232.png +0 -0
  159. package/lib/render-templates/share-code-classic/assets//345/256/240/347/211/251/345/261/236/346/200/247//346/234/272/346/242/260.png +0 -0
  160. package/lib/render-templates/share-code-classic/assets//345/256/240/347/211/251/345/261/236/346/200/247//346/255/246.png +0 -0
  161. package/lib/render-templates/share-code-classic/assets//345/256/240/347/211/251/345/261/236/346/200/247//346/257/222.png +0 -0
  162. package/lib/render-templates/share-code-classic/assets//345/256/240/347/211/251/345/261/236/346/200/247//346/260/264.png +0 -0
  163. package/lib/render-templates/share-code-classic/assets//345/256/240/347/211/251/345/261/236/346/200/247//347/201/253.png +0 -0
  164. package/lib/render-templates/share-code-classic/assets//345/256/240/347/211/251/345/261/236/346/200/247//347/224/265.png +0 -0
  165. package/lib/render-templates/share-code-classic/assets//345/256/240/347/211/251/345/261/236/346/200/247//347/277/274.png +0 -0
  166. package/lib/render-templates/share-code-classic/assets//345/256/240/347/211/251/345/261/236/346/200/247//350/215/211.png +0 -0
  167. package/lib/render-templates/share-code-classic/assets//345/256/240/347/211/251/345/261/236/346/200/247//350/220/214.png +0 -0
  168. package/lib/render-templates/share-code-classic/assets//345/256/240/347/211/251/345/261/236/346/200/247//350/231/253.png +0 -0
  169. package/lib/render-templates/share-code-classic/assets//345/256/240/347/211/251/345/261/236/346/200/247//351/276/231.png +0 -0
  170. package/lib/render-templates/share-code-classic/assets//347/201/253/346/274/206/345/215/260.png +0 -0
  171. package/lib/render-templates/share-code-classic/assets//347/253/213/347/273/230/350/203/214/346/231/257/346/241/206.png +0 -0
  172. package/lib/render-templates/share-code-classic/assets//350/241/200/350/204/211//345/205/211.png +0 -0
  173. package/lib/render-templates/share-code-classic/assets//350/241/200/350/204/211//345/206/260.png +0 -0
  174. package/lib/render-templates/share-code-classic/assets//350/241/200/350/204/211//345/234/260.png +0 -0
  175. package/lib/render-templates/share-code-classic/assets//350/241/200/350/204/211//345/245/207/345/274/202.png +0 -0
  176. package/lib/render-templates/share-code-classic/assets//350/241/200/350/204/211//345/271/273.png +0 -0
  177. package/lib/render-templates/share-code-classic/assets//350/241/200/350/204/211//345/271/275.png +0 -0
  178. package/lib/render-templates/share-code-classic/assets//350/241/200/350/204/211//346/201/266.png +0 -0
  179. package/lib/render-templates/share-code-classic/assets//350/241/200/350/204/211//346/231/256/351/200/232.png +0 -0
  180. package/lib/render-templates/share-code-classic/assets//350/241/200/350/204/211//346/234/272/346/242/260.png +0 -0
  181. package/lib/render-templates/share-code-classic/assets//350/241/200/350/204/211//346/255/246.png +0 -0
  182. package/lib/render-templates/share-code-classic/assets//350/241/200/350/204/211//346/257/222.png +0 -0
  183. package/lib/render-templates/share-code-classic/assets//350/241/200/350/204/211//346/260/264.png +0 -0
  184. package/lib/render-templates/share-code-classic/assets//350/241/200/350/204/211//346/261/241/346/237/223.png +0 -0
  185. package/lib/render-templates/share-code-classic/assets//350/241/200/350/204/211//347/201/253.png +0 -0
  186. package/lib/render-templates/share-code-classic/assets//350/241/200/350/204/211//347/224/265.png +0 -0
  187. package/lib/render-templates/share-code-classic/assets//350/241/200/350/204/211//347/277/274.png +0 -0
  188. package/lib/render-templates/share-code-classic/assets//350/241/200/350/204/211//350/215/211.png +0 -0
  189. package/lib/render-templates/share-code-classic/assets//350/241/200/350/204/211//350/220/214.png +0 -0
  190. package/lib/render-templates/share-code-classic/assets//350/241/200/350/204/211//350/231/253.png +0 -0
  191. package/lib/render-templates/share-code-classic/assets//350/241/200/350/204/211//351/246/226/351/242/206.png +0 -0
  192. package/lib/render-templates/share-code-classic/assets//350/241/200/350/204/211//351/276/231.png +0 -0
  193. package/lib/render-templates/share-code-classic/index.html +119 -0
  194. package/lib/render-templates/share-code-classic/style.css +646 -0
  195. package/lib/render-templates/share-code-team/index.html +105 -0
  196. package/lib/render-templates/share-code-team/style.css +345 -0
  197. package/lib/render-templates/yuanxing-shangren/merchant.html +479 -461
  198. package/lib/render-templates/yuanxing-shangren/today.html +407 -461
  199. package/lib/render.d.ts +18 -2
  200. package/lib/render.js +138 -39
  201. package/lib/send-image.d.ts +1 -1
  202. package/lib/send-image.js +22 -1
  203. package/lib/share-code-service.d.ts +68 -0
  204. package/lib/share-code-service.js +257 -0
  205. package/lib/subscription-runner.d.ts +6 -0
  206. package/lib/subscription-runner.js +21 -0
  207. package/lib/subscription-send.d.ts +4 -2
  208. package/lib/subscription-send.js +45 -20
  209. package/lib/ttf/rocom_origin.ttf +0 -0
  210. package/lib/types.d.ts +14 -1
  211. package/lib/user.d.ts +11 -0
  212. package/lib/wiki-catalog.js +1 -1
  213. package/lib/wiki-service.js +1 -1
  214. package/package.json +5 -1
  215. package/readme.md +125 -124
  216. package/lib/ttf/rocom_skill_origin.ttf +0 -0
@@ -1,461 +1,407 @@
1
- <!DOCTYPE html>
2
- <html lang="zh-CN">
3
- <head>
4
- <meta charset="UTF-8">
5
- <meta name="viewport" content="width=device-width, initial-scale=1.0">
6
- <title>今日远行商人</title>
7
- <style>
8
- @font-face {
9
- font-family: 'RocoName';
10
- src: url('{{_res_path}}ttf/dundun.xHd_Ee5-.woff2') format('woff2');
11
- font-weight: normal; font-style: normal;
12
- }
13
- @font-face {
14
- font-family: 'RocoProduct';
15
- src: url('{{_res_path}}ttf/造字工房启黑体.ttf') format('truetype');
16
- font-weight: normal; font-style: normal;
17
- }
18
-
19
- *, *::before, *::after { box-sizing: border-box; margin: 0; padding: 0; }
20
-
21
- body {
22
- display: flex;
23
- justify-content: center;
24
- align-items: flex-start;
25
- min-height: 100vh;
26
- background: #1a1a2e;
27
- -webkit-font-smoothing: antialiased;
28
- }
29
-
30
- .page {
31
- position: relative;
32
- width: 1080px;
33
- height: {{pageHeight}}px;
34
- background: #f4eee0;
35
- overflow: visible;
36
- zoom: 0.5;
37
- }
38
-
39
- .title-bg {
40
- position: absolute;
41
- left: 20px;
42
- top: 21px;
43
- width: 1041px;
44
- height: 535px;
45
- object-fit: contain;
46
- z-index: 2;
47
- }
48
-
49
- .time-group {
50
- position: absolute;
51
- left: 372px;
52
- top: 447px;
53
- display: flex;
54
- align-items: flex-end;
55
- gap: 0;
56
- z-index: 3;
57
- overflow: visible;
58
- }
59
- .time-date {
60
- font-family: 'RocoProduct', sans-serif;
61
- font-size: 32px;
62
- color: #817873;
63
- letter-spacing: -0.05em;
64
- line-height: 1;
65
- filter: url(#timeStroke10);
66
- overflow: visible;
67
- position: relative;
68
- left: -30px;
69
- z-index: 2;
70
- }
71
- .time-range {
72
- font-family: 'RocoProduct', sans-serif;
73
- font-size: 50px;
74
- color: #f0c946;
75
- letter-spacing: -0.05em;
76
- line-height: 1;
77
- filter: url(#timeStroke10);
78
- overflow: visible;
79
- position: relative;
80
- z-index: 1;
81
- }
82
-
83
- .goods-card {
84
- position: absolute;
85
- left: 20px;
86
- width: 1043px;
87
- height: 308px;
88
- overflow: visible;
89
- }
90
- .goods-card.ended {
91
- opacity: 0.5;
92
- }
93
- .goods-card.ended .goods-name {
94
- color: #878070;
95
- }
96
- .goods-card.ended .goods-name-shadow {
97
- color: #c8c2b8;
98
- }
99
- .goods-card.ended .price-value {
100
- background: linear-gradient(to bottom, #878070, #878070);
101
- -webkit-background-clip: text;
102
- background-clip: text;
103
- }
104
- .goods-card.ended .price-sep,
105
- .goods-card.ended .price-unit {
106
- color: #878070;
107
- }
108
-
109
- .goods-card-bg {
110
- position: absolute;
111
- left: 0; top: 0;
112
- width: 1043px;
113
- height: 308px;
114
- border-radius: 15px;
115
- background: #cec8bc;
116
- }
117
-
118
- .goods-name-wrap {
119
- position: absolute;
120
- top: -8px;
121
- left: -22px;
122
- width: 800px;
123
- text-align: center;
124
- transform: scaleX(1.1);
125
- transform-origin: center center;
126
- overflow: visible;
127
- }
128
- .goods-name-shadow {
129
- position: absolute;
130
- left: 50%;
131
- top: 4px;
132
- transform: translateX(-50%);
133
- font-family: 'RocoProduct', sans-serif;
134
- font-size: 150px;
135
- color: #f4eee0;
136
- letter-spacing: 2px;
137
- line-height: 1;
138
- white-space: nowrap;
139
- pointer-events: none;
140
- filter: url(#imgStroke11NoOffset);
141
- overflow: visible;
142
- }
143
- .goods-name {
144
- position: relative;
145
- font-family: 'RocoProduct', sans-serif;
146
- font-size: 150px;
147
- color: #3f3832;
148
- letter-spacing: 2px;
149
- line-height: 1;
150
- white-space: nowrap;
151
- }
152
-
153
- .goods-img-wrap {
154
- position: absolute;
155
- left: 725px;
156
- top: 31px;
157
- width: 296px;
158
- height: 246px;
159
- z-index: 1;
160
- overflow: visible;
161
- }
162
- .goods-img {
163
- width: 100%;
164
- height: 100%;
165
- object-fit: contain;
166
- filter: url(#imgStroke11);
167
- overflow: visible;
168
- }
169
- .hot-badge {
170
- position: absolute;
171
- top: 0;
172
- right: 0;
173
- width: 37.5%;
174
- height: 37.5%;
175
- z-index: 2;
176
- object-fit: contain;
177
- }
178
-
179
- .num-badge {
180
- position: absolute;
181
- left: 745px;
182
- top: -15px;
183
- width: 74px;
184
- height: 53px;
185
- z-index: 2;
186
- }
187
- .num-badge-bg {
188
- position: absolute;
189
- left: 0; top: 0;
190
- width: 100%; height: 100%;
191
- object-fit: contain;
192
- }
193
- .num-badge-text {
194
- position: absolute;
195
- left: 0; top: 0;
196
- width: 100%; height: 100%;
197
- display: flex;
198
- align-items: center;
199
- justify-content: center;
200
- font-family: 'RocoName', sans-serif;
201
- font-size: 28px;
202
- color: #f5efe3;
203
- letter-spacing: -0.05em;
204
- z-index: 1;
205
- padding-top: 2px;
206
- }
207
-
208
- .price-group {
209
- position: absolute;
210
- left: 181px;
211
- top: 134px;
212
- width: 393px;
213
- display: flex;
214
- justify-content: center;
215
- align-items: center;
216
- z-index: 1;
217
- }
218
- .price-inner {
219
- display: flex;
220
- align-items: flex-end;
221
- overflow: visible;
222
- }
223
- .coin-icon {
224
- width: 91px;
225
- height: 90px;
226
- object-fit: contain;
227
- position: relative;
228
- filter: url(#imgStroke11NoOffset);
229
- overflow: visible;
230
- }
231
-
232
- .price-value-wrap {
233
- position: relative;
234
- display: inline-block;
235
- margin-left: -2px;
236
- overflow: visible;
237
- z-index: 1;
238
- }
239
- .price-shadow {
240
- position: absolute;
241
- left: 2px; top: 4px;
242
- font-family: 'RocoName', sans-serif;
243
- font-size: 120px;
244
- color: #f4eee0;
245
- line-height: 1;
246
- letter-spacing: -0.1em;
247
- transform: scaleX(1.1);
248
- transform-origin: left center;
249
- white-space: nowrap;
250
- pointer-events: none;
251
- filter: url(#imgStroke11NoOffset);
252
- overflow: visible;
253
- }
254
-
255
- .price-value {
256
- font-family: 'RocoName', sans-serif;
257
- font-size: 120px;
258
- background: linear-gradient(to bottom, #d07338, #dd9036);
259
- -webkit-background-clip: text;
260
- -webkit-text-fill-color: transparent;
261
- background-clip: text;
262
- letter-spacing: -0.1em;
263
- line-height: 1;
264
- transform: scaleX(1.1);
265
- transform-origin: left center;
266
- position: relative;
267
- display: block;
268
- }
269
-
270
- .price-sep {
271
- font-family: 'RocoName', sans-serif;
272
- font-size: 120px;
273
- color: #837f76;
274
- line-height: 1;
275
- margin-left: 9px;
276
- position: relative;
277
- overflow: visible;
278
- z-index: 2;
279
- }
280
- .price-sep::after {
281
- content: attr(data-text);
282
- position: absolute;
283
- left: 2px;
284
- top: 4px;
285
- color: #f4eee0;
286
- z-index: -1;
287
- pointer-events: none;
288
- filter: url(#imgStroke11NoOffset);
289
- }
290
-
291
- .price-unit {
292
- font-family: 'RocoName', sans-serif;
293
- font-size: 50px;
294
- color: #837f76;
295
- line-height: 1;
296
- position: relative;
297
- bottom: 15px;
298
- margin-left: -8px;
299
- overflow: visible;
300
- }
301
- .price-unit::after {
302
- content: attr(data-text);
303
- position: absolute;
304
- left: 2px;
305
- top: 4px;
306
- color: #f4eee0;
307
- z-index: -1;
308
- pointer-events: none;
309
- filter: url(#imgStroke11NoOffset);
310
- }
311
-
312
- .limit-area {
313
- position: absolute;
314
- left: 377px;
315
- top: 243px;
316
- min-width: 393px;
317
- width: auto;
318
- height: 54px;
319
- z-index: 1;
320
- transform: translateX(-50%);
321
- }
322
- .limit-btn {
323
- position: absolute;
324
- left: 0; top: 0;
325
- width: 100%; height: 100%;
326
- border-radius: 14px;
327
- background: #878070;
328
- border: none;
329
- box-shadow: 0 0 0 8px #f4ede5;
330
- }
331
- .limit-text {
332
- position: relative;
333
- left: 0; top: 0;
334
- width: 100%; height: 100%;
335
- display: flex;
336
- align-items: center;
337
- justify-content: center;
338
- font-family: 'RocoName', sans-serif;
339
- font-size: 36px;
340
- color: #fdf7e9;
341
- letter-spacing: 0;
342
- white-space: nowrap;
343
- padding: 0 20px;
344
- }
345
-
346
- .bottom-img {
347
- position: absolute;
348
- left: 0;
349
- width: 1080px;
350
- height: 160px;
351
- object-fit: contain;
352
- z-index: 2;
353
- }
354
-
355
- .goods-card-empty {
356
- display: flex;
357
- align-items: center;
358
- justify-content: center;
359
- }
360
- .goods-empty-text {
361
- position: relative;
362
- z-index: 1;
363
- font-family: 'RocoProduct', sans-serif;
364
- font-size: 64px;
365
- color: #878070;
366
- text-align: center;
367
- letter-spacing: 4px;
368
- }
369
- </style>
370
- </head>
371
- <body>
372
-
373
- <svg style="position:absolute;width:0;height:0;">
374
- <defs>
375
- <filter id="imgStroke11" x="-10%" y="-10%" width="120%" height="120%"
376
- color-interpolation-filters="sRGB">
377
- <feFlood flood-color="#f4eee0" result="color"/>
378
- <feMorphology in="SourceAlpha" operator="dilate" radius="11" result="dilated"/>
379
- <feComposite in="color" in2="dilated" operator="in" result="outline"/>
380
- <feOffset in="outline" dx="3" dy="3" result="offset"/>
381
- <feMerge>
382
- <feMergeNode in="offset"/>
383
- <feMergeNode in="SourceGraphic"/>
384
- </feMerge>
385
- </filter>
386
- <filter id="imgStroke11NoOffset" x="-10%" y="-10%" width="120%" height="120%"
387
- color-interpolation-filters="sRGB">
388
- <feFlood flood-color="#f4eee0" result="color"/>
389
- <feMorphology in="SourceAlpha" operator="dilate" radius="11" result="dilated"/>
390
- <feComposite in="color" in2="dilated" operator="in" result="outline"/>
391
- <feMerge>
392
- <feMergeNode in="outline"/>
393
- <feMergeNode in="SourceGraphic"/>
394
- </feMerge>
395
- </filter>
396
- <filter id="timeStroke10" x="-10%" y="-10%" width="120%" height="120%"
397
- color-interpolation-filters="sRGB">
398
- <feFlood flood-color="#3f3832" result="color"/>
399
- <feMorphology in="SourceAlpha" operator="dilate" radius="10" result="dilated"/>
400
- <feComposite in="color" in2="dilated" operator="in" result="outline"/>
401
- <feMerge>
402
- <feMergeNode in="outline"/>
403
- <feMergeNode in="SourceGraphic"/>
404
- </feMerge>
405
- </filter>
406
- </defs>
407
- </svg>
408
-
409
- <div id="container" class="page">
410
- <img class="title-bg" src="{{_res_path}}render/yuanxing-shangren/img/标题.png" alt="标题">
411
-
412
- <div class="time-group">
413
- <span class="time-date">{{dateStr}}</span>
414
- <span class="time-range">08:00-24:00</span>
415
- </div>
416
-
417
- {{if goods && goods.length > 0}}
418
- {{each goods item}}
419
- <div class="goods-card{{if item.isEnded}} ended{{/if}}" style="top: {{item.top}}px">
420
- <div class="goods-card-bg"></div>
421
- <div class="goods-name-wrap">
422
- <span class="goods-name-shadow">{{item.goods_name}}</span>
423
- <span class="goods-name">{{item.goods_name}}</span>
424
- </div>
425
- <div class="num-badge">
426
- <img class="num-badge-bg" src="{{_res_path}}render/yuanxing-shangren/img/编号背景框.png" alt="">
427
- <div class="num-badge-text">{{item.num}}</div>
428
- </div>
429
- <div class="goods-img-wrap">
430
- <img class="goods-img" src="{{item.iconUrl}}" alt="{{item.goods_name}}">
431
- {{if item.isHot}}<img class="hot-badge" src="{{_res_path}}render/yuanxing-shangren/img/热销.png" alt="热销">{{/if}}
432
- </div>
433
- <div class="price-group">
434
- <img class="coin-icon" src="{{_res_path}}render/yuanxing-shangren/img/coin.png" alt="coin">
435
- <div class="price-inner">
436
- <span class="price-value-wrap">
437
- <span class="price-shadow">{{item.price}}</span>
438
- <span class="price-value">{{item.price}}</span>
439
- </span>
440
- <span class="price-sep" data-text="/">/</span>
441
- <span class="price-unit" data-text="个">个</span>
442
- </div>
443
- </div>
444
- <div class="limit-area">
445
- <div class="limit-btn"></div>
446
- <div class="limit-text">{{item.remainingStr}}</div>
447
- </div>
448
- </div>
449
- {{/each}}
450
- {{else}}
451
- <div class="goods-card goods-card-empty" style="top: 592px">
452
- <div class="goods-card-bg"></div>
453
- <div class="goods-empty-text">暂无商品</div>
454
- </div>
455
- {{/if}}
456
-
457
- <img class="bottom-img" src="{{_res_path}}render/yuanxing-shangren/img/底部信息框.png" alt="底部信息框" style="top: {{bottomFrameTop}}px">
458
- </div>
459
-
460
- </body>
461
- </html>
1
+ <!DOCTYPE html>
2
+ <html lang="zh-CN">
3
+ <head>
4
+ <meta charset="UTF-8">
5
+ <meta name="viewport" content="width={{renderWidth}}, initial-scale=1">
6
+ <title>今日远行商人</title>
7
+ <style>
8
+ @font-face {
9
+ font-family: 'RocoName';
10
+ src: url('{{_res_path}}ttf/dundun.xHd_Ee5-.woff2') format('woff2');
11
+ font-weight: normal; font-style: normal;
12
+ }
13
+ @font-face {
14
+ font-family: 'RocoProduct';
15
+ src: url('{{_res_path}}ttf/造字工房启黑体.ttf') format('truetype');
16
+ font-weight: normal; font-style: normal;
17
+ }
18
+
19
+ *, *::before, *::after { box-sizing: border-box; margin: 0; padding: 0; }
20
+
21
+ :root {
22
+ --render-scale: {{renderScale}};
23
+ }
24
+
25
+ html,
26
+ body {
27
+ width: {{renderWidth}}px;
28
+ min-height: {{renderHeight}}px;
29
+ background: #f4eee0;
30
+ }
31
+
32
+ body {
33
+ -webkit-font-smoothing: antialiased;
34
+ }
35
+
36
+ .page {
37
+ position: relative;
38
+ width: {{renderWidth}}px;
39
+ height: {{renderHeight}}px;
40
+ background: #f4eee0;
41
+ overflow: hidden;
42
+ }
43
+
44
+ .page-canvas {
45
+ position: absolute;
46
+ left: 0;
47
+ top: 0;
48
+ width: {{renderBaseWidth}}px;
49
+ height: {{renderBaseHeight}}px;
50
+ zoom: {{renderZoom}};
51
+ overflow: visible;
52
+ }
53
+
54
+ .title-bg {
55
+ position: absolute;
56
+ left: 5px;
57
+ top: 5.25px;
58
+ width: 260.25px;
59
+ height: 133.75px;
60
+ object-fit: contain;
61
+ z-index: 2;
62
+ }
63
+
64
+ .time-group {
65
+ position: absolute;
66
+ left: 93px;
67
+ top: 111.75px;
68
+ display: flex;
69
+ align-items: flex-end;
70
+ gap: 0;
71
+ z-index: 3;
72
+ overflow: visible;
73
+ }
74
+ .time-date {
75
+ font-family: 'RocoProduct', sans-serif;
76
+ font-size: 8px;
77
+ color: #817873;
78
+ letter-spacing: -0.05em;
79
+ line-height: 1;
80
+ filter: url(#timeStroke10);
81
+ overflow: visible;
82
+ position: relative;
83
+ left: -7.5px;
84
+ z-index: 2;
85
+ }
86
+ .time-range {
87
+ font-family: 'RocoProduct', sans-serif;
88
+ font-size: 12.5px;
89
+ color: #f0c946;
90
+ letter-spacing: -0.05em;
91
+ line-height: 1;
92
+ filter: url(#timeStroke10);
93
+ overflow: visible;
94
+ position: relative;
95
+ z-index: 1;
96
+ }
97
+
98
+ /* ── 一轮一行 ─────────────────────────────────────────── */
99
+ .round-row {
100
+ position: absolute;
101
+ left: 5px;
102
+ width: 260.75px;
103
+ height: 92px;
104
+ overflow: visible;
105
+ }
106
+
107
+ .round-row-bg {
108
+ position: absolute;
109
+ left: 0; top: 0;
110
+ width: 260.75px;
111
+ height: 92px;
112
+ border-radius: 3.75px;
113
+ background: #cec8bc;
114
+ }
115
+ .round-row.is-current .round-row-bg {
116
+ background: #d9d3c6;
117
+ box-shadow: 0 0 0 1.5px #f0c946;
118
+ }
119
+
120
+ .round-tab {
121
+ position: absolute;
122
+ left: 0; top: 0;
123
+ width: 38px;
124
+ height: 92px;
125
+ border-radius: 3.75px 0 0 3.75px;
126
+ background: #b3aa9d;
127
+ display: flex;
128
+ flex-direction: column;
129
+ align-items: center;
130
+ justify-content: center;
131
+ z-index: 1;
132
+ }
133
+ .round-row.is-current .round-tab {
134
+ background: #f0c946;
135
+ }
136
+ .round-tab-label {
137
+ font-family: 'RocoProduct', sans-serif;
138
+ font-size: 11px;
139
+ line-height: 1;
140
+ color: #fdf7e9;
141
+ letter-spacing: -0.02em;
142
+ white-space: nowrap;
143
+ }
144
+ .round-row.is-current .round-tab-label {
145
+ color: #3f3832;
146
+ }
147
+ .round-tab-time {
148
+ font-family: 'RocoName', sans-serif;
149
+ font-size: 7.5px;
150
+ line-height: 1;
151
+ color: #ece4d6;
152
+ margin-top: 3.5px;
153
+ white-space: nowrap;
154
+ }
155
+ .round-row.is-current .round-tab-time {
156
+ color: #6d5c1f;
157
+ }
158
+
159
+ .round-items {
160
+ position: absolute;
161
+ left: 38px; top: 0;
162
+ width: 222.75px;
163
+ height: 92px;
164
+ }
165
+
166
+ .item-cell {
167
+ position: absolute;
168
+ top: 0;
169
+ width: 44.55px;
170
+ height: 92px;
171
+ }
172
+ .item-cell.ended {
173
+ opacity: 0.5;
174
+ }
175
+
176
+ .item-icon-wrap {
177
+ position: absolute;
178
+ overflow: visible;
179
+ }
180
+ .item-icon {
181
+ width: 100%;
182
+ height: 100%;
183
+ object-fit: contain;
184
+ filter: url(#imgStroke11);
185
+ overflow: visible;
186
+ }
187
+ .item-hot-badge {
188
+ position: absolute;
189
+ top: 0;
190
+ right: 0;
191
+ width: 38%;
192
+ height: 38%;
193
+ z-index: 2;
194
+ object-fit: contain;
195
+ }
196
+
197
+ .item-name-wrap {
198
+ position: absolute;
199
+ left: 0; top: 45px;
200
+ width: 100%;
201
+ height: 18px;
202
+ display: flex;
203
+ align-items: center;
204
+ justify-content: center;
205
+ overflow: visible;
206
+ }
207
+ .item-name-box {
208
+ position: relative;
209
+ max-width: 100%;
210
+ }
211
+ .item-name-shadow {
212
+ position: absolute;
213
+ left: 0.5px; top: 1px;
214
+ width: 100%;
215
+ font-family: 'RocoProduct', sans-serif;
216
+ font-size: 8.5px;
217
+ line-height: 9.5px;
218
+ color: #f4eee0;
219
+ text-align: center;
220
+ word-break: break-all;
221
+ pointer-events: none;
222
+ filter: url(#imgStrokeName);
223
+ overflow: visible;
224
+ }
225
+ .item-name {
226
+ position: relative;
227
+ display: block;
228
+ width: 100%;
229
+ font-family: 'RocoProduct', sans-serif;
230
+ font-size: 8.5px;
231
+ line-height: 9.5px;
232
+ color: #3f3832;
233
+ text-align: center;
234
+ word-break: break-all;
235
+ }
236
+
237
+ .item-price {
238
+ position: absolute;
239
+ left: 0; top: 64px;
240
+ width: 100%;
241
+ height: 12px;
242
+ display: flex;
243
+ align-items: center;
244
+ justify-content: center;
245
+ gap: 1px;
246
+ overflow: visible;
247
+ }
248
+ .item-coin {
249
+ width: 9.5px;
250
+ height: 9.5px;
251
+ object-fit: contain;
252
+ filter: url(#imgStrokeName);
253
+ }
254
+ .item-price-value {
255
+ font-family: 'RocoName', sans-serif;
256
+ font-size: 10.5px;
257
+ line-height: 1;
258
+ letter-spacing: -0.08em;
259
+ background: linear-gradient(to bottom, #d07338, #dd9036);
260
+ -webkit-background-clip: text;
261
+ -webkit-text-fill-color: transparent;
262
+ background-clip: text;
263
+ }
264
+
265
+ .item-limit {
266
+ position: absolute;
267
+ left: 0; top: 77px;
268
+ width: 100%;
269
+ height: 10px;
270
+ display: flex;
271
+ align-items: center;
272
+ justify-content: center;
273
+ font-family: 'RocoName', sans-serif;
274
+ font-size: 7px;
275
+ line-height: 1;
276
+ color: #878070;
277
+ letter-spacing: -0.04em;
278
+ white-space: nowrap;
279
+ overflow: visible;
280
+ }
281
+
282
+ .round-row-empty {
283
+ display: flex;
284
+ align-items: center;
285
+ justify-content: center;
286
+ }
287
+ .round-empty-text {
288
+ position: relative;
289
+ z-index: 1;
290
+ font-family: 'RocoProduct', sans-serif;
291
+ font-size: 16px;
292
+ color: #878070;
293
+ text-align: center;
294
+ letter-spacing: 1px;
295
+ }
296
+
297
+ .bottom-img {
298
+ position: absolute;
299
+ left: 0;
300
+ width: 270px;
301
+ height: 40px;
302
+ object-fit: contain;
303
+ z-index: 2;
304
+ }
305
+ </style>
306
+ </head>
307
+ <body>
308
+
309
+ <svg style="position:absolute;width:0;height:0;">
310
+ <defs>
311
+ <filter id="imgStroke11" x="-10%" y="-10%" width="120%" height="120%"
312
+ color-interpolation-filters="sRGB">
313
+ <feFlood flood-color="#f4eee0" result="color"/>
314
+ <feMorphology in="SourceAlpha" operator="dilate" radius="{{renderStroke11}}" result="dilated"/>
315
+ <feComposite in="color" in2="dilated" operator="in" result="outline"/>
316
+ <feOffset in="outline" dx="{{renderOffset3}}" dy="{{renderOffset3}}" result="offset"/>
317
+ <feMerge>
318
+ <feMergeNode in="offset"/>
319
+ <feMergeNode in="SourceGraphic"/>
320
+ </feMerge>
321
+ </filter>
322
+ <filter id="imgStroke11NoOffset" x="-10%" y="-10%" width="120%" height="120%"
323
+ color-interpolation-filters="sRGB">
324
+ <feFlood flood-color="#f4eee0" result="color"/>
325
+ <feMorphology in="SourceAlpha" operator="dilate" radius="{{renderStroke11}}" result="dilated"/>
326
+ <feComposite in="color" in2="dilated" operator="in" result="outline"/>
327
+ <feMerge>
328
+ <feMergeNode in="outline"/>
329
+ <feMergeNode in="SourceGraphic"/>
330
+ </feMerge>
331
+ </filter>
332
+ <filter id="imgStrokeName" x="-10%" y="-10%" width="120%" height="120%"
333
+ color-interpolation-filters="sRGB">
334
+ <feFlood flood-color="#f4eee0" result="color"/>
335
+ <feMorphology in="SourceAlpha" operator="dilate" radius="{{renderStrokeName}}" result="dilated"/>
336
+ <feComposite in="color" in2="dilated" operator="in" result="outline"/>
337
+ <feMerge>
338
+ <feMergeNode in="outline"/>
339
+ <feMergeNode in="SourceGraphic"/>
340
+ </feMerge>
341
+ </filter>
342
+ <filter id="timeStroke10" x="-10%" y="-10%" width="120%" height="120%"
343
+ color-interpolation-filters="sRGB">
344
+ <feFlood flood-color="#3f3832" result="color"/>
345
+ <feMorphology in="SourceAlpha" operator="dilate" radius="{{renderStroke10}}" result="dilated"/>
346
+ <feComposite in="color" in2="dilated" operator="in" result="outline"/>
347
+ <feMerge>
348
+ <feMergeNode in="outline"/>
349
+ <feMergeNode in="SourceGraphic"/>
350
+ </feMerge>
351
+ </filter>
352
+ </defs>
353
+ </svg>
354
+
355
+ <div id="container" class="page">
356
+ <div class="page-canvas">
357
+ <img class="title-bg" src="{{_res_path}}render-templates/yuanxing-shangren/img/标题.png" alt="标题">
358
+
359
+ <div class="time-group">
360
+ <span class="time-date">{{dateStr}}</span>
361
+ <span class="time-range">08:00-24:00</span>
362
+ </div>
363
+
364
+ {{if rows && rows.length > 0}}
365
+ {{each rows row}}
366
+ <div class="round-row{{if row.isCurrent}} is-current{{/if}}" style="top: calc({{row.top}}px * var(--render-scale))">
367
+ <div class="round-row-bg"></div>
368
+ <div class="round-tab">
369
+ <div class="round-tab-label">{{row.label}}</div>
370
+ <div class="round-tab-time">{{row.timeLabel}}</div>
371
+ </div>
372
+ <div class="round-items">
373
+ {{each row.items item index}}
374
+ <div class="item-cell{{if item.isEnded}} ended{{/if}}" style="left: {{index * row.cellWidth}}px; width: {{row.cellWidth}}px">
375
+ <div class="item-icon-wrap" style="left: {{(row.cellWidth - row.iconSize) / 2}}px; top: {{4 + (40 - row.iconSize) / 2}}px; width: {{row.iconSize}}px; height: {{row.iconSize}}px">
376
+ <img class="item-icon" src="{{item.iconUrl}}" alt="{{item.goods_name}}" style="transform: translate({{item.iconOffsetX}}px, {{item.iconOffsetY}}px) scale({{item.iconScale}})">
377
+ {{if item.isHot}}<img class="item-hot-badge" src="{{_res_path}}render-templates/yuanxing-shangren/img/热销.png" alt="热销">{{/if}}
378
+ </div>
379
+ <div class="item-name-wrap">
380
+ <div class="item-name-box">
381
+ <span class="item-name-shadow">{{item.goods_name}}</span>
382
+ <span class="item-name">{{item.goods_name}}</span>
383
+ </div>
384
+ </div>
385
+ <div class="item-price">
386
+ <img class="item-coin" src="{{_res_path}}render-templates/yuanxing-shangren/img/coin.png" alt="coin">
387
+ <span class="item-price-value">{{item.price}}</span>
388
+ </div>
389
+ {{if item.limit}}<div class="item-limit">限购{{item.limit}}</div>{{/if}}
390
+ </div>
391
+ {{/each}}
392
+ </div>
393
+ </div>
394
+ {{/each}}
395
+ {{else}}
396
+ <div class="round-row round-row-empty" style="top: calc({{startTop}}px * var(--render-scale))">
397
+ <div class="round-row-bg"></div>
398
+ <div class="round-empty-text">今日暂无商品</div>
399
+ </div>
400
+ {{/if}}
401
+
402
+ <img class="bottom-img" src="{{_res_path}}render-templates/yuanxing-shangren/img/底部信息框.png" alt="底部信息框" style="top: calc({{bottomFrameTop}}px * var(--render-scale))">
403
+ </div>
404
+ </div>
405
+
406
+ </body>
407
+ </html>