@quicktvui/ai 1.0.9 → 1.1.0

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 (345) hide show
  1. package/package.json +1 -1
  2. package/rules/.clinerules +1 -0
  3. package/rules/.cursorrules +1 -0
  4. package/rules/.github/copilot-instructions.md +1 -0
  5. package/rules/.source/hellotv/PROJECT-README.md +52 -0
  6. package/rules/.source/hellotv/app.d.ts +11 -0
  7. package/rules/.source/hellotv/package.json +146 -0
  8. package/rules/.source/hellotv/scripts/build-apk.ts +12 -0
  9. package/rules/.source/hellotv/scripts/build.ts +35 -0
  10. package/rules/.source/hellotv/scripts/dev.ts +12 -0
  11. package/rules/.source/hellotv/scripts/pack.ts +24 -0
  12. package/rules/.source/hellotv/scripts/process.ts +37 -0
  13. package/rules/.source/hellotv/scripts/quicktvui-webpack.android.ts +187 -0
  14. package/rules/.source/hellotv/scripts/quicktvui-webpack.dev.ts +147 -0
  15. package/rules/.source/hellotv/scripts/webpack-watch.ts +24 -0
  16. package/rules/.source/hellotv/src/App.vue +192 -0
  17. package/rules/.source/hellotv/src/api/my/index.ts +198 -0
  18. package/rules/.source/hellotv/src/api/user/impl-user.ts +52 -0
  19. package/rules/.source/hellotv/src/api/user/qr-code-mock.ts +2 -0
  20. package/rules/.source/hellotv/src/api/user/request-url.ts +11 -0
  21. package/rules/.source/hellotv/src/api/user/user-manager.ts +258 -0
  22. package/rules/.source/hellotv/src/app.scss +8 -0
  23. package/rules/.source/hellotv/src/assets/component-media/ic_media_btn_pause.png +0 -0
  24. package/rules/.source/hellotv/src/assets/component-media/ic_media_btn_play.png +0 -0
  25. package/rules/.source/hellotv/src/assets/component-media/ic_media_menu_setting_focused.png +0 -0
  26. package/rules/.source/hellotv/src/assets/component-media/ic_media_menu_setting_normal.png +0 -0
  27. package/rules/.source/hellotv/src/assets/component-media/ic_media_menu_xuanji_focused.png +0 -0
  28. package/rules/.source/hellotv/src/assets/component-media/ic_media_menu_xuanji_normal.png +0 -0
  29. package/rules/.source/hellotv/src/assets/component-media/ic_media_ok_focused.png +0 -0
  30. package/rules/.source/hellotv/src/assets/component-media/ic_media_ok_selected.png +0 -0
  31. package/rules/.source/hellotv/src/assets/detail/ic_collect_focused.png +0 -0
  32. package/rules/.source/hellotv/src/assets/detail/ic_collect_normal.png +0 -0
  33. package/rules/.source/hellotv/src/assets/detail/ic_full_focused.png +0 -0
  34. package/rules/.source/hellotv/src/assets/detail/ic_full_normal.png +0 -0
  35. package/rules/.source/hellotv/src/assets/detail/ic_info_focused.png +0 -0
  36. package/rules/.source/hellotv/src/assets/detail/ic_info_normal.png +0 -0
  37. package/rules/.source/hellotv/src/assets/detail/ic_introduction_bg.png +0 -0
  38. package/rules/.source/hellotv/src/assets/detail/ic_media_list_item_normal.png +0 -0
  39. package/rules/.source/hellotv/src/assets/detail/ic_media_list_item_selected.png +0 -0
  40. package/rules/.source/hellotv/src/assets/detail/ic_media_player_pause.png +0 -0
  41. package/rules/.source/hellotv/src/assets/detail/ic_media_player_placeholder.png +0 -0
  42. package/rules/.source/hellotv/src/assets/detail/ic_media_player_play.png +0 -0
  43. package/rules/.source/hellotv/src/assets/detail/ic_vip_focused.png +0 -0
  44. package/rules/.source/hellotv/src/assets/detail/ic_vip_normal.png +0 -0
  45. package/rules/.source/hellotv/src/assets/detail/skeleton.png +0 -0
  46. package/rules/.source/hellotv/src/assets/filter/ic_empty.png +0 -0
  47. package/rules/.source/hellotv/src/assets/filter/ic_filter_focused.png +0 -0
  48. package/rules/.source/hellotv/src/assets/filter/ic_filter_normal.png +0 -0
  49. package/rules/.source/hellotv/src/assets/filter/ic_filter_selected.png +0 -0
  50. package/rules/.source/hellotv/src/assets/filter/ic_left_focused.png +0 -0
  51. package/rules/.source/hellotv/src/assets/filter/ic_left_normal.png +0 -0
  52. package/rules/.source/hellotv/src/assets/filter/ic_left_selected.png +0 -0
  53. package/rules/.source/hellotv/src/assets/history/ic_delete.png +0 -0
  54. package/rules/.source/hellotv/src/assets/history/ic_empty.png +0 -0
  55. package/rules/.source/hellotv/src/assets/home/bg_history_item.png +0 -0
  56. package/rules/.source/hellotv/src/assets/home/bg_shadow.png +0 -0
  57. package/rules/.source/hellotv/src/assets/home/ic_4k_logo.png +0 -0
  58. package/rules/.source/hellotv/src/assets/home/ic_4k_play_focused.png +0 -0
  59. package/rules/.source/hellotv/src/assets/home/ic_4k_subtitle_normal.png +0 -0
  60. package/rules/.source/hellotv/src/assets/home/ic_arrow_focused.png +0 -0
  61. package/rules/.source/hellotv/src/assets/home/ic_arrow_normal.png +0 -0
  62. package/rules/.source/hellotv/src/assets/home/ic_exit_corner.png +0 -0
  63. package/rules/.source/hellotv/src/assets/home/ic_exit_header.png +0 -0
  64. package/rules/.source/hellotv/src/assets/home/ic_play.png +0 -0
  65. package/rules/.source/hellotv/src/assets/live/bg-error.png +0 -0
  66. package/rules/.source/hellotv/src/assets/live/bg-play-info.png +0 -0
  67. package/rules/.source/hellotv/src/assets/live/ic-arrow-left.png +0 -0
  68. package/rules/.source/hellotv/src/assets/live/ic-arrow-right.png +0 -0
  69. package/rules/.source/hellotv/src/assets/live/ic-back.png +0 -0
  70. package/rules/.source/hellotv/src/assets/live/ic-change.png +0 -0
  71. package/rules/.source/hellotv/src/assets/live/ic-corner-vip-tips.png +0 -0
  72. package/rules/.source/hellotv/src/assets/live/ic-corner-vip.png +0 -0
  73. package/rules/.source/hellotv/src/assets/live/ic-key.png +0 -0
  74. package/rules/.source/hellotv/src/assets/live/ic-loading-error.png +0 -0
  75. package/rules/.source/hellotv/src/assets/live/ic-menu-ext-arrow.png +0 -0
  76. package/rules/.source/hellotv/src/assets/live/ic-menu-ext.png +0 -0
  77. package/rules/.source/hellotv/src/assets/live/ic-menu.png +0 -0
  78. package/rules/.source/hellotv/src/assets/live/ic-mine.png +0 -0
  79. package/rules/.source/hellotv/src/assets/live/ic-network-error.png +0 -0
  80. package/rules/.source/hellotv/src/assets/live/ic-ok.png +0 -0
  81. package/rules/.source/hellotv/src/assets/live/ic-playing.png +0 -0
  82. package/rules/.source/hellotv/src/assets/live/ic-playing2.png +0 -0
  83. package/rules/.source/hellotv/src/assets/live/ic-playing3.png +0 -0
  84. package/rules/.source/hellotv/src/assets/live/ic-service.png +0 -0
  85. package/rules/.source/hellotv/src/assets/live/ic_live_broadcast.png +0 -0
  86. package/rules/.source/hellotv/src/assets/live/ic_live_broadcast_focused.png +0 -0
  87. package/rules/.source/hellotv/src/assets/my/ic_collect_focus.png +0 -0
  88. package/rules/.source/hellotv/src/assets/my/ic_collect_normal.png +0 -0
  89. package/rules/.source/hellotv/src/assets/my/ic_order_focus.png +0 -0
  90. package/rules/.source/hellotv/src/assets/my/ic_order_normal.png +0 -0
  91. package/rules/.source/hellotv/src/assets/my/ic_record_focus.png +0 -0
  92. package/rules/.source/hellotv/src/assets/my/ic_record_normal.png +0 -0
  93. package/rules/.source/hellotv/src/assets/my/ic_user.png +0 -0
  94. package/rules/.source/hellotv/src/assets/my/ic_vip_normal.png +0 -0
  95. package/rules/.source/hellotv/src/assets/search/ic_back.png +0 -0
  96. package/rules/.source/hellotv/src/assets/search/ic_back_focused.png +0 -0
  97. package/rules/.source/hellotv/src/assets/search/ic_clear.png +0 -0
  98. package/rules/.source/hellotv/src/assets/search/ic_clear_dark.png +0 -0
  99. package/rules/.source/hellotv/src/assets/search/ic_clear_focused.png +0 -0
  100. package/rules/.source/hellotv/src/assets/search/ic_search.png +0 -0
  101. package/rules/.source/hellotv/src/assets/top-view/ic_logo.png +0 -0
  102. package/rules/.source/hellotv/src/assets/top-view/ic_top_search_focused.png +0 -0
  103. package/rules/.source/hellotv/src/assets/top-view/ic_top_search_normal.png +0 -0
  104. package/rules/.source/hellotv/src/assets/top-view/ic_top_user_focused.png +0 -0
  105. package/rules/.source/hellotv/src/assets/top-view/ic_top_user_normal.png +0 -0
  106. package/rules/.source/hellotv/src/components/bg-animation.scss +14 -0
  107. package/rules/.source/hellotv/src/components/bg-animation.vue +176 -0
  108. package/rules/.source/hellotv/src/components/btn-pack-view.vue +172 -0
  109. package/rules/.source/hellotv/src/components/btn-pack.scss +53 -0
  110. package/rules/.source/hellotv/src/components/grid-item-horizontal.vue +203 -0
  111. package/rules/.source/hellotv/src/components/grid-item-vertical.vue +201 -0
  112. package/rules/.source/hellotv/src/components/media/build-data/media-config.ts +4 -0
  113. package/rules/.source/hellotv/src/components/media/build-data/media-control-adapter.ts +378 -0
  114. package/rules/.source/hellotv/src/components/media/build-data/media-imp.ts +44 -0
  115. package/rules/.source/hellotv/src/components/media/view/media-loading-component.vue +50 -0
  116. package/rules/.source/hellotv/src/components/media/view/media-loading-view.vue +154 -0
  117. package/rules/.source/hellotv/src/components/media/view/media-manager-view.vue +931 -0
  118. package/rules/.source/hellotv/src/components/media/view/media-menu-detail-item.vue +42 -0
  119. package/rules/.source/hellotv/src/components/media/view/media-menu-detail-view.vue +109 -0
  120. package/rules/.source/hellotv/src/components/media/view/media-menu-icon-item.vue +43 -0
  121. package/rules/.source/hellotv/src/components/media/view/media-menu-text-item.vue +27 -0
  122. package/rules/.source/hellotv/src/components/media/view/media-menu-view.vue +88 -0
  123. package/rules/.source/hellotv/src/components/media/view/media-player-view.vue +408 -0
  124. package/rules/.source/hellotv/src/components/media/view/scss/media-loading.scss +51 -0
  125. package/rules/.source/hellotv/src/components/media/view/scss/media-manager.scss +79 -0
  126. package/rules/.source/hellotv/src/components/media/view/scss/media-menu.scss +114 -0
  127. package/rules/.source/hellotv/src/components/media/view/scss/media-player.scss +6 -0
  128. package/rules/.source/hellotv/src/components/qt-tabs-component.ts +268 -0
  129. package/rules/.source/hellotv/src/components/qt-ul-component.ts +792 -0
  130. package/rules/.source/hellotv/src/components/top-view.scss +38 -0
  131. package/rules/.source/hellotv/src/components/top-view.vue +114 -0
  132. package/rules/.source/hellotv/src/config/README.md +22 -0
  133. package/rules/.source/hellotv/src/config/build-config.ts +22 -0
  134. package/rules/.source/hellotv/src/config/private-theme-config.ts +21 -0
  135. package/rules/.source/hellotv/src/config/public-config.scss +16 -0
  136. package/rules/.source/hellotv/src/config/test.scss +45 -0
  137. package/rules/.source/hellotv/src/config/theme-config.ts +51 -0
  138. package/rules/.source/hellotv/src/main.ts +45 -0
  139. package/rules/.source/hellotv/src/pages/activity/adapter/config.ts +37 -0
  140. package/rules/.source/hellotv/src/pages/activity/adapter/index.ts +849 -0
  141. package/rules/.source/hellotv/src/pages/activity/adapter/interface.ts +173 -0
  142. package/rules/.source/hellotv/src/pages/activity/api/index.ts +36 -0
  143. package/rules/.source/hellotv/src/pages/activity/api/interface.ts +11 -0
  144. package/rules/.source/hellotv/src/pages/activity/api/request-url.ts +10 -0
  145. package/rules/.source/hellotv/src/pages/activity/components/item/focus-change-img-item.vue +40 -0
  146. package/rules/.source/hellotv/src/pages/activity/components/item/inner-out-title-item.vue +59 -0
  147. package/rules/.source/hellotv/src/pages/activity/components/item/no-title-item.vue +45 -0
  148. package/rules/.source/hellotv/src/pages/activity/components/item/placeholder-item.vue +25 -0
  149. package/rules/.source/hellotv/src/pages/activity/index.vue +219 -0
  150. package/rules/.source/hellotv/src/pages/activity/scss/index.scss +46 -0
  151. package/rules/.source/hellotv/src/pages/activity/scss/item.scss +69 -0
  152. package/rules/.source/hellotv/src/pages/detail/adapter/index.ts +317 -0
  153. package/rules/.source/hellotv/src/pages/detail/adapter/interface.ts +150 -0
  154. package/rules/.source/hellotv/src/pages/detail/adapter/media-player.ts +378 -0
  155. package/rules/.source/hellotv/src/pages/detail/api/index.ts +77 -0
  156. package/rules/.source/hellotv/src/pages/detail/api/request-url.ts +8 -0
  157. package/rules/.source/hellotv/src/pages/detail/components/media-player/collapse/media-collapse-definition.vue +192 -0
  158. package/rules/.source/hellotv/src/pages/detail/components/media-player/collapse/media-collapse-list-item.vue +108 -0
  159. package/rules/.source/hellotv/src/pages/detail/components/media-player/collapse/media-collapse-media-series.vue +349 -0
  160. package/rules/.source/hellotv/src/pages/detail/components/media-player/collapse/media-collapse-order.vue +194 -0
  161. package/rules/.source/hellotv/src/pages/detail/components/media-player/collapse/media-collapse-speed.vue +192 -0
  162. package/rules/.source/hellotv/src/pages/detail/components/media-player/index.vue +404 -0
  163. package/rules/.source/hellotv/src/pages/detail/components/media-player/media-player-small-view.vue +382 -0
  164. package/rules/.source/hellotv/src/pages/detail/components/media-player/media-player-view.vue +1099 -0
  165. package/rules/.source/hellotv/src/pages/detail/components/recommend-item.vue +167 -0
  166. package/rules/.source/hellotv/src/pages/detail/components/section/basic-section.vue +218 -0
  167. package/rules/.source/hellotv/src/pages/detail/components/section/config.ts +6 -0
  168. package/rules/.source/hellotv/src/pages/detail/components/section/header-section.vue +15 -0
  169. package/rules/.source/hellotv/src/pages/detail/components/section/item/button-menu.vue +259 -0
  170. package/rules/.source/hellotv/src/pages/detail/components/section/item/media-introduction.vue +238 -0
  171. package/rules/.source/hellotv/src/pages/detail/components/section/item/media-series.vue +308 -0
  172. package/rules/.source/hellotv/src/pages/detail/components/section/item/player-placeholder.vue +88 -0
  173. package/rules/.source/hellotv/src/pages/detail/index.vue +571 -0
  174. package/rules/.source/hellotv/src/pages/detail/scss/index.scss +22 -0
  175. package/rules/.source/hellotv/src/pages/detail-full-player/components/media-player/full-player-loading.vue +78 -0
  176. package/rules/.source/hellotv/src/pages/detail-full-player/components/media-player/full-player-menu-view.vue +803 -0
  177. package/rules/.source/hellotv/src/pages/detail-full-player/components/media-player/full-player-view.vue +219 -0
  178. package/rules/.source/hellotv/src/pages/detail-full-player/index.vue +101 -0
  179. package/rules/.source/hellotv/src/pages/detail-full-player/scss/full-player-view.scss +6 -0
  180. package/rules/.source/hellotv/src/pages/detail-full-screen/adapter/index.ts +0 -0
  181. package/rules/.source/hellotv/src/pages/detail-full-screen/adapter/interface.ts +133 -0
  182. package/rules/.source/hellotv/src/pages/detail-full-screen/api/index.ts +77 -0
  183. package/rules/.source/hellotv/src/pages/detail-full-screen/api/request-url.ts +8 -0
  184. package/rules/.source/hellotv/src/pages/detail-full-screen/components/media-info.vue +263 -0
  185. package/rules/.source/hellotv/src/pages/detail-full-screen/components/media-player.vue +42 -0
  186. package/rules/.source/hellotv/src/pages/detail-full-screen/components/media-series-section.vue +26 -0
  187. package/rules/.source/hellotv/src/pages/detail-full-screen/components/recommend-item.vue +167 -0
  188. package/rules/.source/hellotv/src/pages/detail-full-screen/index.vue +163 -0
  189. package/rules/.source/hellotv/src/pages/detail-full-screen/scss/index.scss +41 -0
  190. package/rules/.source/hellotv/src/pages/device-info/index.vue +106 -0
  191. package/rules/.source/hellotv/src/pages/device-info/scss/device-info.scss +49 -0
  192. package/rules/.source/hellotv/src/pages/filter/README.md +66 -0
  193. package/rules/.source/hellotv/src/pages/filter/adapter/index.ts +180 -0
  194. package/rules/.source/hellotv/src/pages/filter/adapter/interface.ts +111 -0
  195. package/rules/.source/hellotv/src/pages/filter/api/index.ts +38 -0
  196. package/rules/.source/hellotv/src/pages/filter/api/interface.ts +44 -0
  197. package/rules/.source/hellotv/src/pages/filter/api/request-url.ts +8 -0
  198. package/rules/.source/hellotv/src/pages/filter/components/content/index.vue +469 -0
  199. package/rules/.source/hellotv/src/pages/filter/components/content/list-item-record.vue +16 -0
  200. package/rules/.source/hellotv/src/pages/filter/components/content/list-item.vue +78 -0
  201. package/rules/.source/hellotv/src/pages/filter/components/expand/index.vue +83 -0
  202. package/rules/.source/hellotv/src/pages/filter/components/sidebar/index.vue +81 -0
  203. package/rules/.source/hellotv/src/pages/filter/components/sidebar/list-item-filter-title.vue +78 -0
  204. package/rules/.source/hellotv/src/pages/filter/components/sidebar/list-item-filter.vue +68 -0
  205. package/rules/.source/hellotv/src/pages/filter/components/sidebar/list-item-line.vue +11 -0
  206. package/rules/.source/hellotv/src/pages/filter/components/sidebar/list-item-text.vue +43 -0
  207. package/rules/.source/hellotv/src/pages/filter/components/sidebar/list-item-title.vue +14 -0
  208. package/rules/.source/hellotv/src/pages/filter/config.ts +10 -0
  209. package/rules/.source/hellotv/src/pages/filter/expand-sidebar-contents.vue +203 -0
  210. package/rules/.source/hellotv/src/pages/filter/scss/filter-content-list-item.scss +42 -0
  211. package/rules/.source/hellotv/src/pages/filter/scss/filter-content.scss +60 -0
  212. package/rules/.source/hellotv/src/pages/filter/scss/filter-expand.scss +30 -0
  213. package/rules/.source/hellotv/src/pages/filter/scss/filter-sidebar.scss +45 -0
  214. package/rules/.source/hellotv/src/pages/filter/scss/filter.scss +21 -0
  215. package/rules/.source/hellotv/src/pages/filter/sidebar-contents.vue +145 -0
  216. package/rules/.source/hellotv/src/pages/filter/single-contents.vue +61 -0
  217. package/rules/.source/hellotv/src/pages/history/adapter/index.ts +51 -0
  218. package/rules/.source/hellotv/src/pages/history/adapter/interface.ts +22 -0
  219. package/rules/.source/hellotv/src/pages/history/api/index.ts +54 -0
  220. package/rules/.source/hellotv/src/pages/history/api/interface.ts +41 -0
  221. package/rules/.source/hellotv/src/pages/history/api/request-url.ts +10 -0
  222. package/rules/.source/hellotv/src/pages/history/components/confirm-dialog.vue +155 -0
  223. package/rules/.source/hellotv/src/pages/history/config.ts +8 -0
  224. package/rules/.source/hellotv/src/pages/history/index-raw.vue +540 -0
  225. package/rules/.source/hellotv/src/pages/history/index.vue +431 -0
  226. package/rules/.source/hellotv/src/pages/history/mock.ts +32 -0
  227. package/rules/.source/hellotv/src/pages/history/scss/history-raw.scss +181 -0
  228. package/rules/.source/hellotv/src/pages/history/scss/history.scss +148 -0
  229. package/rules/.source/hellotv/src/pages/home/adapter/exit/home-exit-adapter.ts +20 -0
  230. package/rules/.source/hellotv/src/pages/home/adapter/exit/home-exit-imp.ts +13 -0
  231. package/rules/.source/hellotv/src/pages/home/adapter/media/create-home-player-interceptor.ts +50 -0
  232. package/rules/.source/hellotv/src/pages/home/adapter/media/home-media-imp.ts +74 -0
  233. package/rules/.source/hellotv/src/pages/home/adapter/tab-bar/tab-bar-adapter.ts +151 -0
  234. package/rules/.source/hellotv/src/pages/home/adapter/tab-bar/tab-bar-config.ts +17 -0
  235. package/rules/.source/hellotv/src/pages/home/adapter/tab-bar/tab-bar-imp.ts +53 -0
  236. package/rules/.source/hellotv/src/pages/home/adapter/tab-bar/tab-bar-item-type.ts +6 -0
  237. package/rules/.source/hellotv/src/pages/home/adapter/tab-content/tab-content-adapter.ts +1304 -0
  238. package/rules/.source/hellotv/src/pages/home/adapter/tab-content/tab-content-config.ts +30 -0
  239. package/rules/.source/hellotv/src/pages/home/adapter/tab-content/tab-content-imp.ts +173 -0
  240. package/rules/.source/hellotv/src/pages/home/adapter/tab-content/tab-content-item-type.ts +17 -0
  241. package/rules/.source/hellotv/src/pages/home/api/index.ts +157 -0
  242. package/rules/.source/hellotv/src/pages/home/api/interface.ts +56 -0
  243. package/rules/.source/hellotv/src/pages/home/api/request-url.ts +22 -0
  244. package/rules/.source/hellotv/src/pages/home/components/exit-dialog.vue +148 -0
  245. package/rules/.source/hellotv/src/pages/home/components/media/bg-player.vue +440 -0
  246. package/rules/.source/hellotv/src/pages/home/components/nav-bar/bar-img-item.vue +39 -0
  247. package/rules/.source/hellotv/src/pages/home/components/nav-bar/bar-text-item.vue +100 -0
  248. package/rules/.source/hellotv/src/pages/home/components/tab-content/bg-player-cell-list-item-img.vue +54 -0
  249. package/rules/.source/hellotv/src/pages/home/components/tab-content/bg-player-cell-list-item-text.vue +67 -0
  250. package/rules/.source/hellotv/src/pages/home/components/tab-content/cell-list-player-item.vue +74 -0
  251. package/rules/.source/hellotv/src/pages/home/components/tab-content/cell-player-item.vue +40 -0
  252. package/rules/.source/hellotv/src/pages/home/components/tab-content/focus-change-img-item.vue +41 -0
  253. package/rules/.source/hellotv/src/pages/home/components/tab-content/history-item.vue +362 -0
  254. package/rules/.source/hellotv/src/pages/home/components/tab-content/inner-out-title-item.vue +60 -0
  255. package/rules/.source/hellotv/src/pages/home/components/tab-content/no-title-item.vue +46 -0
  256. package/rules/.source/hellotv/src/pages/home/components/tab-content/placeholder-item.vue +25 -0
  257. package/rules/.source/hellotv/src/pages/home/components/tab-content/short-video/short-video-section-item.vue +80 -0
  258. package/rules/.source/hellotv/src/pages/home/components/tab-content/short-video/short-video-section.vue +70 -0
  259. package/rules/.source/hellotv/src/pages/home/components/tab-content/small-4k/small-four-section.vue +76 -0
  260. package/rules/.source/hellotv/src/pages/home/components/tab-content/world-4k/world-four-section-item.vue +90 -0
  261. package/rules/.source/hellotv/src/pages/home/components/tab-content/world-4k/world-four-section.vue +57 -0
  262. package/rules/.source/hellotv/src/pages/home/components/waterfall-tabs.vue +1307 -0
  263. package/rules/.source/hellotv/src/pages/home/index.vue +117 -0
  264. package/rules/.source/hellotv/src/pages/home/scss/bar-img-item.scss +11 -0
  265. package/rules/.source/hellotv/src/pages/home/scss/bar-text-item.scss +80 -0
  266. package/rules/.source/hellotv/src/pages/home/scss/base.scss +8 -0
  267. package/rules/.source/hellotv/src/pages/home/scss/bg-player-cell-list-item.scss +24 -0
  268. package/rules/.source/hellotv/src/pages/home/scss/bg-player.scss +50 -0
  269. package/rules/.source/hellotv/src/pages/home/scss/cell-player-item.scss +24 -0
  270. package/rules/.source/hellotv/src/pages/home/scss/exit-dialog.scss +89 -0
  271. package/rules/.source/hellotv/src/pages/home/scss/focus-change-img-item.scss +12 -0
  272. package/rules/.source/hellotv/src/pages/home/scss/home.scss +32 -0
  273. package/rules/.source/hellotv/src/pages/home/scss/inner-out-title-item.scss +24 -0
  274. package/rules/.source/hellotv/src/pages/home/scss/no-title-item.scss +15 -0
  275. package/rules/.source/hellotv/src/pages/home/scss/placeholder-item.scss +14 -0
  276. package/rules/.source/hellotv/src/pages/home/scss/short-video-section.scss +59 -0
  277. package/rules/.source/hellotv/src/pages/home/scss/small-four-section.scss +14 -0
  278. package/rules/.source/hellotv/src/pages/home/scss/waterfall-tabs.scss +50 -0
  279. package/rules/.source/hellotv/src/pages/home/scss/world-four-section.scss +106 -0
  280. package/rules/.source/hellotv/src/pages/introduction/index.vue +227 -0
  281. package/rules/.source/hellotv/src/pages/live/components/menu/first-list-item-icon-text.vue +35 -0
  282. package/rules/.source/hellotv/src/pages/live/components/menu/first-list-item-img.vue +16 -0
  283. package/rules/.source/hellotv/src/pages/live/components/menu/first-list-item-text.vue +16 -0
  284. package/rules/.source/hellotv/src/pages/live/components/menu/index.vue +266 -0
  285. package/rules/.source/hellotv/src/pages/live/components/menu/second-list-item.vue +80 -0
  286. package/rules/.source/hellotv/src/pages/live/components/menu/third-list-item.vue +68 -0
  287. package/rules/.source/hellotv/src/pages/live/components/player/index.vue +168 -0
  288. package/rules/.source/hellotv/src/pages/live/components/player/player-error.vue +48 -0
  289. package/rules/.source/hellotv/src/pages/live/components/player/player-loading.vue +50 -0
  290. package/rules/.source/hellotv/src/pages/live/components/player/player-tips.vue +125 -0
  291. package/rules/.source/hellotv/src/pages/live/components/player/tips-icon-text.vue +27 -0
  292. package/rules/.source/hellotv/src/pages/live/css/menu.css +109 -0
  293. package/rules/.source/hellotv/src/pages/live/css/player.css +56 -0
  294. package/rules/.source/hellotv/src/pages/live/index.vue +128 -0
  295. package/rules/.source/hellotv/src/pages/live/mock/index.ts +263 -0
  296. package/rules/.source/hellotv/src/pages/live/types/index.ts +42 -0
  297. package/rules/.source/hellotv/src/pages/login/index.vue +116 -0
  298. package/rules/.source/hellotv/src/pages/login/scss/login.scss +61 -0
  299. package/rules/.source/hellotv/src/pages/m-test.vue +84 -0
  300. package/rules/.source/hellotv/src/pages/my/README.md +87 -0
  301. package/rules/.source/hellotv/src/pages/my/index.vue +177 -0
  302. package/rules/.source/hellotv/src/pages/my/my-data-manager.ts +606 -0
  303. package/rules/.source/hellotv/src/pages/my/my-templates.vue +24 -0
  304. package/rules/.source/hellotv/src/pages/my/poster/index.vue +98 -0
  305. package/rules/.source/hellotv/src/pages/my/poster/my-card2.vue +90 -0
  306. package/rules/.source/hellotv/src/pages/my/poster/my-icon-title-col.vue +72 -0
  307. package/rules/.source/hellotv/src/pages/my/poster/my-icon-title-row.vue +72 -0
  308. package/rules/.source/hellotv/src/pages/my/poster/my-info.vue +50 -0
  309. package/rules/.source/hellotv/src/pages/my/poster/my-user.vue +126 -0
  310. package/rules/.source/hellotv/src/pages/play-test.vue +95 -0
  311. package/rules/.source/hellotv/src/pages/search/README.md +57 -0
  312. package/rules/.source/hellotv/src/pages/search/adapter/index.ts +285 -0
  313. package/rules/.source/hellotv/src/pages/search/adapter/interface.ts +60 -0
  314. package/rules/.source/hellotv/src/pages/search/api/index.ts +100 -0
  315. package/rules/.source/hellotv/src/pages/search/api/interface.ts +64 -0
  316. package/rules/.source/hellotv/src/pages/search/api/request-url.ts +20 -0
  317. package/rules/.source/hellotv/src/pages/search/components/search-content-tabs.vue +153 -0
  318. package/rules/.source/hellotv/src/pages/search/components/search-content.vue +282 -0
  319. package/rules/.source/hellotv/src/pages/search/components/search-keyboard.vue +252 -0
  320. package/rules/.source/hellotv/src/pages/search/components/search-keyword-grid.vue +85 -0
  321. package/rules/.source/hellotv/src/pages/search/components/search-keyword.vue +346 -0
  322. package/rules/.source/hellotv/src/pages/search/config.ts +10 -0
  323. package/rules/.source/hellotv/src/pages/search/scss/search-content.scss +130 -0
  324. package/rules/.source/hellotv/src/pages/search/scss/search-keyboard.scss +91 -0
  325. package/rules/.source/hellotv/src/pages/search/scss/search-keyword-grid.scss +30 -0
  326. package/rules/.source/hellotv/src/pages/search/scss/search-keyword.scss +104 -0
  327. package/rules/.source/hellotv/src/pages/search/scss/search.scss +18 -0
  328. package/rules/.source/hellotv/src/pages/search/three-columns.vue +164 -0
  329. package/rules/.source/hellotv/src/pages/search/two-columns.vue +128 -0
  330. package/rules/.source/hellotv/src/pages/tabs-test.vue +339 -0
  331. package/rules/.source/hellotv/src/pages/webview/load-web-view.vue +44 -0
  332. package/rules/.source/hellotv/src/routes.ts +142 -0
  333. package/rules/.source/hellotv/src/tools/common.ts +18 -0
  334. package/rules/.source/hellotv/src/tools/format-date.ts +16 -0
  335. package/rules/.source/hellotv/src/tools/index.ts +58 -0
  336. package/rules/.source/hellotv/src/tools/launch.ts +339 -0
  337. package/rules/.source/hellotv/src/tools/request/index.ts +206 -0
  338. package/rules/.source/hellotv/src/tools/request/interface.ts +64 -0
  339. package/rules/.source/hellotv/src/typings/shims-vue.d.ts +6 -0
  340. package/rules/.source/hellotv/src/vue.config.js +3 -0
  341. package/rules/.source/hellotv/tsconfig.json +34 -0
  342. package/rules/.windsurfrules +1 -0
  343. package/rules/AGENTS.md +1 -0
  344. package/rules/CLAUDE.md +1 -0
  345. package/rules/GEMINI.md +1 -0
@@ -0,0 +1,18 @@
1
+ .search {
2
+ width: 1920px;
3
+ height: 1080px;
4
+ background-color: transparent;
5
+ }
6
+
7
+ .search-columns-body {
8
+ background-color: transparent;
9
+ flex-direction: row;
10
+ }
11
+
12
+ .search-columns-body-loading {
13
+ height: 1080px;
14
+ background-color: transparent;
15
+ align-items: center;
16
+ justify-content: center;
17
+ position: absolute;
18
+ }
@@ -0,0 +1,164 @@
1
+ <template>
2
+ <qt-view
3
+ class="search"
4
+ :gradientBackground="{
5
+ colors: themeConfig.bgGradientColor,
6
+ orientation: 4,
7
+ }"
8
+ >
9
+ <scroll-view
10
+ name="searchScroll"
11
+ makeChildVisibleType="none"
12
+ :horizontal="true"
13
+ :onScrollEnable="true"
14
+ >
15
+ <qt-view
16
+ class="search-columns-body"
17
+ style="width: 3072px"
18
+ :clipChildren="true"
19
+ >
20
+ <!-- 键盘区域 -->
21
+ <search-keyboard ref="keyboardRef" @updateInput="updateInput" />
22
+ <!-- 搜索关键词区域 -->
23
+ <search-keyword
24
+ ref="keywordRef"
25
+ :inputText="inputText"
26
+ @setLoading="setLoading"
27
+ @updateFocusName="updateFocusName"
28
+ @updateFocusDeny="updateFocusDeny"
29
+ @updateKeyword="updateKeyword"
30
+ />
31
+ <!-- 搜索内容区域 -->
32
+ <search-content
33
+ ref="contentRef"
34
+ :descendantFocusability="contentDeny"
35
+ :keyword="keyword"
36
+ :triggerTask="triggerTask"
37
+ @setLoading="setLoading"
38
+ @updateFocusName="updateFocusName"
39
+ @updateFocusDeny="updateFocusDeny"
40
+ />
41
+ </qt-view>
42
+ </scroll-view>
43
+ <!-- 搜索关键词、内容区域loading -->
44
+ <qt-view
45
+ v-if="isLoading"
46
+ class="search-columns-body-loading"
47
+ :style="{ width: `${loadingWidth}px`, left: `${loadingLeft}px` }"
48
+ :gradientBackground="{
49
+ colors: themeConfig.bgGradientColor,
50
+ orientation: 4,
51
+ }"
52
+ >
53
+ <qt-loading-view
54
+ style="height: 100px; width: 100px"
55
+ color="rgba(21,122,252,0.3)"
56
+ :focusable="false"
57
+ ></qt-loading-view>
58
+ </qt-view>
59
+ </qt-view>
60
+ </template>
61
+
62
+ <script setup lang="ts">
63
+ import { ref } from "vue";
64
+ import { useESRouter } from "@extscreen/es3-router";
65
+ import themeConfig from "../../config/theme-config";
66
+ import searchKeyboard from "./components/search-keyboard.vue";
67
+ import searchKeyword from "./components/search-keyword.vue";
68
+ import searchContent from "./components/search-content.vue";
69
+
70
+ const router = useESRouter();
71
+ // 键盘
72
+ const keyboardRef = ref();
73
+ const inputText = ref<string>("");
74
+ const isLoading = ref<boolean>(false);
75
+ const loadingLeft = ref<number>(634);
76
+ const loadingWidth = ref<number>(1286);
77
+ // 关键词
78
+ const keywordRef = ref();
79
+ const keyword = ref<string>("");
80
+ // 内容
81
+ const contentRef = ref();
82
+ const contentDeny = ref<number>(1);
83
+ const triggerTask = [
84
+ {
85
+ event: "onFocusAcquired",
86
+ target: "searchScroll",
87
+ function: "scrollToWithOptions",
88
+ params: [{ x: 1152, y: 0, duration: 300 }],
89
+ },
90
+ {
91
+ event: "onFocusLost",
92
+ target: "searchScroll",
93
+ function: "scrollToWithOptions",
94
+ params: [{ x: -1152, y: 0, duration: 300 }],
95
+ },
96
+ ];
97
+ // 焦点
98
+ const curFocusName = ref<string>("searchKeyboard");
99
+
100
+ /**
101
+ * 输入数据更新
102
+ */
103
+ function updateInput(val: string) {
104
+ isLoading.value = true;
105
+ inputText.value = val;
106
+ }
107
+
108
+ /**
109
+ * 搜索关键词更新
110
+ */
111
+ function updateKeyword(val: string) {
112
+ keyword.value = val;
113
+ // 设置左侧键盘向右焦点方向
114
+ keyboardRef.value?.updateKeyboardFocusRight(
115
+ val.length > 0 ? "keywordList" : "gridItem",
116
+ );
117
+ }
118
+
119
+ /**
120
+ * 当前焦点位置更新
121
+ */
122
+ function updateFocusName(val: string) {
123
+ curFocusName.value = val;
124
+ }
125
+
126
+ function updateFocusDeny(bool: boolean) {
127
+ contentDeny.value = bool ? 2 : 1;
128
+ }
129
+
130
+ /**
131
+ * loading状态、位置控制
132
+ */
133
+ function setLoading(b: boolean, full: boolean): void {
134
+ if (full) {
135
+ isLoading.value = b;
136
+ return;
137
+ }
138
+
139
+ if (b) {
140
+ loadingLeft.value = 1152;
141
+ loadingWidth.value = 768;
142
+ } else {
143
+ loadingLeft.value = 634;
144
+ loadingWidth.value = 1286;
145
+ }
146
+ isLoading.value = b;
147
+ }
148
+
149
+ /**
150
+ * 返回按键处理
151
+ */
152
+ function onBackPressed() {
153
+ if (curFocusName.value === "searchKeyboard") {
154
+ router.back();
155
+ } else {
156
+ keyboardRef.value?.onBackPressed();
157
+ curFocusName.value = "searchKeyboard";
158
+ }
159
+ }
160
+
161
+ defineExpose({ onBackPressed });
162
+ </script>
163
+
164
+ <style scoped lang="scss" src="./scss/search.scss"></style>
@@ -0,0 +1,128 @@
1
+ <template>
2
+ <qt-view
3
+ class="search"
4
+ :gradientBackground="{
5
+ colors: themeConfig.bgGradientColor,
6
+ orientation: 4,
7
+ }"
8
+ >
9
+ <scroll-view
10
+ name="searchScroll"
11
+ makeChildVisibleType="none"
12
+ :horizontal="true"
13
+ :onScrollEnable="true"
14
+ >
15
+ <qt-view
16
+ class="search-columns-body"
17
+ style="width: 2554px"
18
+ :clipChildren="true"
19
+ >
20
+ <!-- 键盘区域 -->
21
+ <search-keyboard ref="keyboardRef" @updateInput="updateInput" />
22
+ <!-- 搜索关键词 -->
23
+ <search-keyword-grid
24
+ v-if="inputText.length === 0"
25
+ :blockFocusDirections="['up', 'down', 'right']"
26
+ @setLoading="setLoading"
27
+ />
28
+ <!-- 搜索内容区域 -->
29
+ <search-content-tabs
30
+ ref="contentRef"
31
+ :triggerTask="triggerTask"
32
+ :keyword="inputText"
33
+ @setLoading="setLoading"
34
+ @updateFocusName="updateFocusName"
35
+ />
36
+ </qt-view>
37
+ </scroll-view>
38
+ <!-- 搜索内容区域loading -->
39
+ <qt-view
40
+ v-if="isLoading"
41
+ class="search-columns-body-loading"
42
+ :style="{ width: `${loadingWidth}px`, left: `${loadingLeft}px` }"
43
+ :gradientBackground="{
44
+ colors: themeConfig.bgGradientColor,
45
+ orientation: 4,
46
+ }"
47
+ >
48
+ <qt-loading-view
49
+ style="height: 100px; width: 100px"
50
+ color="rgba(21,122,252,0.3)"
51
+ :focusable="false"
52
+ ></qt-loading-view>
53
+ </qt-view>
54
+ </qt-view>
55
+ </template>
56
+
57
+ <script setup lang="ts">
58
+ import { ref } from "vue";
59
+ import { useESRouter } from "@extscreen/es3-router";
60
+ import themeConfig from "../../config/theme-config";
61
+ import searchKeyboard from "./components/search-keyboard.vue";
62
+ import searchKeywordGrid from "./components/search-keyword-grid.vue";
63
+ import searchContentTabs from "./components/search-content-tabs.vue";
64
+
65
+ const router = useESRouter();
66
+ // 键盘
67
+ const keyboardRef = ref();
68
+ const inputText = ref<string>("");
69
+ const isLoading = ref<boolean>(false);
70
+ const loadingLeft = ref<number>(634);
71
+ const loadingWidth = ref<number>(1286);
72
+ // 内容
73
+ const contentRef = ref();
74
+ const triggerTask = [
75
+ {
76
+ event: "onFocusAcquired",
77
+ target: "searchScroll",
78
+ function: "scrollToWithOptions",
79
+ params: [{ x: 634, y: 0, duration: 300 }],
80
+ },
81
+ {
82
+ event: "onFocusLost",
83
+ target: "searchScroll",
84
+ function: "scrollToWithOptions",
85
+ params: [{ x: -634, y: 0, duration: 300 }],
86
+ },
87
+ ];
88
+ // 焦点
89
+ const curFocusName = ref<string>("searchKeyboard");
90
+
91
+ /**
92
+ * 输入数据更新
93
+ */
94
+ function updateInput(val: string) {
95
+ inputText.value = val;
96
+ isLoading.value = true;
97
+ }
98
+
99
+ /**
100
+ * 当前焦点位置更新
101
+ */
102
+ function updateFocusName(val: string) {
103
+ curFocusName.value = val;
104
+ }
105
+
106
+ /**
107
+ * loading状态、位置控制
108
+ */
109
+ function setLoading(b: boolean): void {
110
+ isLoading.value = b;
111
+ }
112
+
113
+ /**
114
+ * 返回按键处理
115
+ */
116
+ function onBackPressed() {
117
+ if (curFocusName.value === "searchKeyboard") {
118
+ router.back();
119
+ } else {
120
+ keyboardRef.value?.onBackPressed();
121
+ curFocusName.value = "searchKeyboard";
122
+ }
123
+ }
124
+
125
+ defineExpose({ onBackPressed });
126
+ </script>
127
+
128
+ <style scoped lang="scss" src="./scss/search.scss"></style>
@@ -0,0 +1,339 @@
1
+ <template>
2
+ <div class="tab-test">
3
+ <!-- <el-tabs class="tabs" name="tabs" :tab-position="tabPosition" @tab-focus="tabFocus" active-name="tab1">
4
+ <tab-pane v-for="(item, index) in tabHeaderData" :key="index"
5
+ :label="`tab${item}`" :name="`tab${item}`" :class="`tab tab${item}`">
6
+ </tab-pane>
7
+ </el-tabs> -->
8
+ <ul class="tabs-header tabs-header-top" horizontal :focusable="false">
9
+ <li
10
+ v-for="(item, index) in tabHeaderData"
11
+ class="tabs-header-item"
12
+ :focusable="true"
13
+ :key="index"
14
+ @focus="(e) => onLiFocus(e, item, index)"
15
+ >
16
+ <span
17
+ style="height: 60px"
18
+ :focusable="false"
19
+ class="tabs-header-item-text"
20
+ >{{ `tab${item}` }}</span
21
+ >
22
+ </li>
23
+ </ul>
24
+ <qt-ul
25
+ class="qt-ul"
26
+ ref="qtulRef"
27
+ name="qt-ul"
28
+ :data="cData"
29
+ :padding="'90,130,90,30'"
30
+ :clipChildren="false"
31
+ :spanCount="spanCount"
32
+ >
33
+ <template #default="{ item }">
34
+ <div
35
+ class="qt-ul-item"
36
+ v-if="item.type == 1"
37
+ :focusable="true"
38
+ :enableFocusBorder="true"
39
+ @focus="(e) => onFocus(e)"
40
+ :style="item.style"
41
+ >
42
+ <img
43
+ :src="item ? item.img : ''"
44
+ class="tv_item_img"
45
+ :style="{ width: `${item.style.width}px` }"
46
+ />
47
+ <p class="tv_item_title">
48
+ {{ item ? `tab${currentTabIndex}-${item.text}` : "" }}
49
+ </p>
50
+ </div>
51
+ <qt-ul
52
+ class="qt-ul-list-section"
53
+ :type="2"
54
+ v-else
55
+ :data="item.list"
56
+ :style="item.style"
57
+ :padding="'90,10,0,30'"
58
+ :clipChildren="false"
59
+ >
60
+ <template #default="{ sItem }">
61
+ <div
62
+ class="qt-ul-item"
63
+ :type="22"
64
+ :focusable="true"
65
+ :enableFocusBorder="true"
66
+ @focus="(e) => onFocus(e)"
67
+ :style="sItem.style"
68
+ >
69
+ <img
70
+ :src="sItem ? sItem.img : ''"
71
+ class="tv_item_img"
72
+ :style="{ width: `${sItem.style.width}px` }"
73
+ />
74
+ <p class="tv_item_title">
75
+ {{ sItem ? `tab${currentTabIndex}-${sItem.text}` : "" }}
76
+ </p>
77
+ </div>
78
+ </template>
79
+ </qt-ul>
80
+ </template>
81
+ </qt-ul>
82
+ </div>
83
+ </template>
84
+
85
+ <script lang="ts" setup>
86
+ import { ref, nextTick, onMounted, reactive } from "vue";
87
+ const img = ref<string>(
88
+ "https://img1.baidu.com/it/u=1726075624,1307327070&fm=253&fmt=auto&app=120&f=JPEG?w=500&h=667",
89
+ );
90
+ // let tabPosition = ref('top')
91
+ // const tabFocus = (e) => {
92
+ // cData.value = arr
93
+ // }
94
+ let currentTabIndex = ref(0);
95
+ let spanCount = ref(0);
96
+ let tabHeaderData = ref([0, 1, 2, 3, 4, 5, 6, 7, 8, 9]);
97
+
98
+ let cData = ref<any[]>([]);
99
+ let arr: Array<any> = [];
100
+
101
+ const buildData0 = () => {
102
+ arr = [];
103
+ for (let i = 0; i < 24; i++) {
104
+ arr.push({
105
+ id: "id" + i,
106
+ name: "name" + Math.random(),
107
+ itemSize: 300,
108
+ type: 1,
109
+ img: img,
110
+ tag: i % 2 == 0 ? "" : "VIP",
111
+ style: {
112
+ width: 300,
113
+ height: 250,
114
+ },
115
+ text: `pos:${i}`,
116
+ decoration: {
117
+ top: 20,
118
+ bottom: 20,
119
+ },
120
+ });
121
+ }
122
+ arr[0].itemSize = 780;
123
+ arr[0].style = {
124
+ width: 780,
125
+ height: 250,
126
+ };
127
+ arr[1].itemSize = 780;
128
+ arr[1].style = {
129
+ width: 780,
130
+ height: 250,
131
+ };
132
+ // arr[1].itemSize = 780
133
+ // arr[8].itemSize = 780
134
+ // arr[9].itemSize = 780
135
+ };
136
+ const buildData1 = () => {
137
+ arr = [];
138
+ for (let i = 0; i < 24; i++) {
139
+ arr.push({
140
+ id: "id" + i,
141
+ name: "name" + Math.random(),
142
+ itemSize: 300,
143
+ type: 1,
144
+ img: img,
145
+ tag: i % 2 == 0 ? "" : "VIP",
146
+ style: {
147
+ width: 300,
148
+ height: 250,
149
+ },
150
+ text: `pos:${i}`,
151
+ decoration: {
152
+ bottom: 20,
153
+ },
154
+ });
155
+ }
156
+ };
157
+ const buildData2 = () => {
158
+ arr = [];
159
+ arr.push({
160
+ type: 2,
161
+ id: "id" + 22,
162
+ name: "name" + Math.random(),
163
+ itemSize: 1920,
164
+ style: {
165
+ width: 1920,
166
+ height: 300,
167
+ },
168
+ list: [],
169
+ });
170
+ for (let i = 0; i < 12; i++) {
171
+ arr[0].list.push({
172
+ id: "id" + i,
173
+ name: "name" + Math.random(),
174
+ itemSize: 300,
175
+ type: 22,
176
+ img: img,
177
+ tag: i % 2 == 0 ? "" : "VIP",
178
+ style: {
179
+ width: 300,
180
+ height: 250,
181
+ },
182
+ text: `pos:${i}`,
183
+ decoration: {
184
+ bottom: 20,
185
+ },
186
+ });
187
+ }
188
+ for (let i = 0; i < 24; i++) {
189
+ arr.push({
190
+ id: "id" + i,
191
+ name: "name" + Math.random(),
192
+ itemSize: 300,
193
+ type: 1,
194
+ img: img,
195
+ tag: i % 2 == 0 ? "" : "VIP",
196
+ style: {
197
+ width: 300,
198
+ height: 250,
199
+ },
200
+ text: `pos:${i}`,
201
+ decoration: {
202
+ bottom: 20,
203
+ },
204
+ });
205
+ }
206
+ console.log(arr, "3434344444");
207
+ };
208
+ onMounted(() => {
209
+ buildData0();
210
+ cData.value = arr;
211
+ });
212
+ const onFocus = (e) => {};
213
+ const onLiFocus = (e, item, index) => {
214
+ if (index != currentTabIndex.value && e.isFocused) {
215
+ currentTabIndex.value = index;
216
+ if (currentTabIndex.value % 3 == 0) {
217
+ buildData0();
218
+ } else if (currentTabIndex.value % 3 == 1) {
219
+ buildData1();
220
+ } else if (currentTabIndex.value % 3 == 2) {
221
+ buildData2();
222
+ }
223
+ cData.value = arr;
224
+ }
225
+ };
226
+ </script>
227
+
228
+ <style lang="scss">
229
+ .tabs {
230
+ width: 1920px;
231
+ height: 80px;
232
+ background-color: red;
233
+ }
234
+ .tab-test {
235
+ .tabs-header-top {
236
+ position: absolute;
237
+ top: 0;
238
+ left: 0;
239
+ display: flex;
240
+ width: 1830px;
241
+ height: 60px;
242
+ background-color: rgba(0, 0, 0, 0.5);
243
+ flex-direction: row;
244
+ margin-left: 90px;
245
+ margin-top: 30px;
246
+ z-index: 2222;
247
+ }
248
+ .tabs-header-bottom {
249
+ width: 1920px;
250
+ height: 60px;
251
+ background-color: transparent;
252
+ flex-direction: row;
253
+ }
254
+ .tabs-header-item {
255
+ height: 60px;
256
+ padding-left: 16px;
257
+ padding-right: 16px;
258
+ text-align: center;
259
+ line-height: 60px;
260
+ background-color: yellow;
261
+ margin-right: 50px;
262
+ }
263
+ .tabs-header-item-text {
264
+ color: #333;
265
+ font-size: 42;
266
+ }
267
+ .tabs-content {
268
+ width: 1920px;
269
+ height: 1080px;
270
+ background-color: aqua;
271
+ padding-top: 120px;
272
+ }
273
+ .tabs-content-item {
274
+ width: 1920px;
275
+ height: 1080px;
276
+ padding-top: 120px;
277
+ background-color: burlywood;
278
+ }
279
+ .qt-ul {
280
+ width: 1920px;
281
+ height: 1080px;
282
+ position: absolute;
283
+ padding-top: 30px;
284
+ background-color: red;
285
+ }
286
+ .qt-ul-item {
287
+ position: relative;
288
+ // width: 300px;
289
+ // height: 250px;
290
+ border-radius: 20px;
291
+ background-color: pink;
292
+ focus-background-color: blue;
293
+ }
294
+ .tv_item_img {
295
+ // width: 300px;
296
+ height: 200px;
297
+ background-color: red;
298
+ }
299
+ .tv_item_title {
300
+ // width: 300px;
301
+ height: 50px;
302
+ line-height: 50px;
303
+ font-size: 30px;
304
+ color: #000000;
305
+ background-color: transparent;
306
+ }
307
+ .tv_item_tag {
308
+ position: absolute;
309
+ right: 0;
310
+ top: 0;
311
+ width: 60px;
312
+ height: 30px;
313
+ text-align: center;
314
+ line-height: 30px;
315
+ background-color: gold;
316
+ color: #000000;
317
+ font-size: 22px;
318
+ background-color: transparent;
319
+ }
320
+ .qt-ul-list-section {
321
+ background-color: aqua;
322
+ }
323
+
324
+ .tab {
325
+ width: 1920px;
326
+ height: 1080px;
327
+ p {
328
+ font-size: 30px;
329
+ text-align: center;
330
+ }
331
+ }
332
+ .tab1 {
333
+ background-color: red;
334
+ }
335
+ .tab2 {
336
+ background-color: blue;
337
+ }
338
+ }
339
+ </style>
@@ -0,0 +1,44 @@
1
+ <template>
2
+ <qt-x5web-view
3
+ ref="loadWebView"
4
+ :requestFocus="true"
5
+ class="loadWebViewRootStyle"
6
+ />
7
+ </template>
8
+
9
+ <script>
10
+ import { defineComponent, ref } from "vue";
11
+
12
+ import { useESRouter } from "@extscreen/es3-router";
13
+
14
+ export default defineComponent({
15
+ name: "load-web-view",
16
+ setup() {
17
+ const loadWebView = ref();
18
+ const router = useESRouter();
19
+ const html = ref("");
20
+ const onESCreate = (params) => {
21
+ if (params) {
22
+ html.value = params.html;
23
+ loadWebView.value.loadUrl(html.value);
24
+ }
25
+ };
26
+ const onBackPressed = () => {
27
+ router.back();
28
+ };
29
+ return {
30
+ loadWebView,
31
+ onBackPressed,
32
+ onESCreate,
33
+ };
34
+ },
35
+ });
36
+ </script>
37
+
38
+ <style scoped>
39
+ .loadWebViewRootStyle {
40
+ width: 1920px;
41
+ height: 1080px;
42
+ background-color: #252930;
43
+ }
44
+ </style>