index.vue 17 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440
  1. <script setup>
  2. let videosData = $ref({
  3. videos_one: [],
  4. videos_two: [],
  5. videos_three: [],
  6. })
  7. request({
  8. baseURL: window.GLOBAL_CONFIG.api,
  9. url: '/aimooc/spjj/main',
  10. }).then((res) => {
  11. videosData = res.data
  12. })
  13. const router = useRouter()
  14. function viewMore() {
  15. router.push('/frontpage/viewMore')
  16. }
  17. function goDetail(item) {
  18. router.push({
  19. path: '/frontpage/videoDetail',
  20. query: {
  21. as_id: item.as_id,
  22. },
  23. })
  24. }
  25. </script>
  26. <template>
  27. <div style="display: flex;height: 500px;">
  28. <div style="width: 50%;height: 100%;">
  29. <div style="background-color: #f7f6fb;height: 230px;width: 50%;margin-top: 10%;" />
  30. </div>
  31. <div style="width: 50%;height: 100%;background-color: #f7f6fb;" />
  32. </div>
  33. <div style="height: 700px;max-height:700px;margin-top: -500px;">
  34. <div style="display: flex;justify-content: center;width: 100%;padding: 40px 0px">
  35. <img src="../../../assets/divider.png" style="width: 1200px;">
  36. </div>
  37. <div style="display: flex;width: 100%;">
  38. <div style="width: 900px;margin-left: calc((100% - 1200px)/2);">
  39. <div style="display: flex;margin-top: 60px;">
  40. <div
  41. v-if="videosData.videos_one[0]" style="width: 300px;padding: 0 5px;cursor: pointer;"
  42. @click="goDetail(videosData.videos_one[0])"
  43. >
  44. <el-image
  45. :src="videosData.videos_one[0].as_img"
  46. style="width: 100%;border-radius: 12px;width: 290px;height: 188px;"
  47. />
  48. <div style="font-size: 15px;font-weight: Medium;">
  49. {{ videosData.videos_one[0].as_title }}
  50. </div>
  51. </div>
  52. <div
  53. v-if="videosData.videos_one[1]" style="width: 300px;padding: 0 5px;cursor: pointer;"
  54. @click="goDetail(videosData.videos_one[1])"
  55. >
  56. <el-image
  57. :src="videosData.videos_one[1].as_img"
  58. style="width: 100%;border-radius: 12px;width: 290px;height: 188px;"
  59. />
  60. <div style="font-size: 15px;font-weight: Medium;">
  61. {{ videosData.videos_one[1].as_title }}
  62. </div>
  63. </div>
  64. <div
  65. v-if="videosData.videos_one[2]" style="width: 300px;padding: 0 5px;cursor: pointer;"
  66. @click="goDetail(videosData.videos_one[2])"
  67. >
  68. <el-image
  69. :src="videosData.videos_one[2].as_img"
  70. style="width: 100%;border-radius: 12px;width: 290px;height: 188px;"
  71. />
  72. <div style="font-size: 15px;font-weight: Medium;">
  73. {{ videosData.videos_one[2].as_title }}
  74. </div>
  75. </div>
  76. </div>
  77. </div>
  78. <div style="width: 300px;background-color: #9f93cd;height: 300px;">
  79. <div style="display: flex;flex-direction: column;justify-content: center;height: 100%;">
  80. <div style="color: white;font-size: 30px;font-weight: Medium;text-align: center;">
  81. 精品课程
  82. </div>
  83. <div style="color: #c5c3da;font-size: 40px;font-weight: bold;text-align: center;">
  84. PREMIUM
  85. </div>
  86. <div style="color: #c5c3da;font-size: 40px;font-weight: bold;text-align: center;">
  87. COURSES
  88. </div>
  89. <div style="color: white;cursor: pointer;text-align: center;" @click="viewMore()">
  90. 查看更多 》
  91. </div>
  92. </div>
  93. </div>
  94. <div style="width: calc((100% - 1200px)/2);background-color: #9f93cd;height: 300px;" />
  95. </div>
  96. <div>
  97. <div style="display: flex;width: 1200px;margin-left: calc((100% - 1200px)/2);margin-top: 30px;">
  98. <div
  99. v-if="videosData.videos_one[3]" style="width: 300px;padding: 0 5px;cursor: pointer;"
  100. @click="goDetail(videosData.videos_one[3])"
  101. >
  102. <el-image :src="videosData.videos_one[3].as_img" style="border-radius: 12px;width: 290px;height: 188px;" />
  103. <div style="font-size: 15px;font-weight: Medium;">
  104. {{ videosData.videos_one[3].as_title }}
  105. </div>
  106. </div>
  107. <div
  108. v-if="videosData.videos_one[4]" style="width: 300px;padding: 0 5px;cursor: pointer;"
  109. @click="goDetail(videosData.videos_one[4])"
  110. >
  111. <el-image :src="videosData.videos_one[4].as_img" style="border-radius: 12px;width: 290px;height: 188px;" />
  112. <div style="font-size: 15px;font-weight: Medium;">
  113. {{ videosData.videos_one[4].as_title }}
  114. </div>
  115. </div>
  116. <div
  117. v-if="videosData.videos_one[5]" style="width: 300px;padding: 0 5px;cursor: pointer;"
  118. @click="goDetail(videosData.videos_one[5])"
  119. >
  120. <el-image :src="videosData.videos_one[5].as_img" style="border-radius: 12px;width: 290px;height: 188px;" />
  121. <div style="font-size: 15px;font-weight: Medium;">
  122. {{ videosData.videos_one[5].as_title }}
  123. </div>
  124. </div>
  125. <div
  126. v-if="videosData.videos_one[6]" style="width: 300px;padding: 0 5px;cursor: pointer;"
  127. @click="goDetail(videosData.videos_one[6])"
  128. >
  129. <el-image :src="videosData.videos_one[6].as_img" style="border-radius: 12px;width: 290px;height: 188px;" />
  130. <div style="font-size: 15px;font-weight: Medium;">
  131. {{ videosData.videos_one[6].as_title }}
  132. </div>
  133. </div>
  134. </div>
  135. </div>
  136. </div>
  137. <div style="height: 600px;">
  138. <div style="display: flex;justify-content: center;width: 100%;padding: 40px 0px">
  139. <img src="../../../assets/divider.png" style="width: 1200px;">
  140. </div>
  141. <div style="width: 100%;">
  142. <div style="width: 1200px;display: flex;margin-left: calc((100% - 1200px)/2);">
  143. <div
  144. v-if="videosData.videos_two[0]" style="width: 400px;padding: 0 5px;cursor: pointer;"
  145. @click="goDetail(videosData.videos_two[0])"
  146. >
  147. <img src="../../../assets/champion.png" class="cornerMarkImg">
  148. <div class="cornerMark" style="background-color: #f2dc8c;margin-top: -3px;">
  149. 1
  150. </div>
  151. <el-image
  152. :src="videosData.videos_two[0].as_img"
  153. style="border-radius: 12px;width: 390px;height: 253px;margin-top: -40px;"
  154. />
  155. <div style="font-size: 15px;font-weight: Medium;">
  156. {{ videosData.videos_two[0].as_title }}
  157. </div>
  158. </div>
  159. <div
  160. v-if="videosData.videos_two[1]" style="width: 400px;padding: 0 5px;cursor: pointer;"
  161. @click="goDetail(videosData.videos_two[1])"
  162. >
  163. <img src="../../../assets/secondWinner.png" class="cornerMarkImg">
  164. <div class="cornerMark" style="background-color: #d7d8d8;margin-top: -3px;">
  165. 2
  166. </div>
  167. <el-image
  168. :src="videosData.videos_two[1].as_img"
  169. style="border-radius: 12px;width: 390px;height: 253px;margin-top: -40px;"
  170. />
  171. <div style="font-size: 15px;font-weight: Medium;">
  172. {{ videosData.videos_two[1].as_title }}
  173. </div>
  174. </div>
  175. <div
  176. v-if="videosData.videos_two[2]" style="width: 400px;padding: 0 5px;cursor: pointer;"
  177. @click="goDetail(videosData.videos_two[2])"
  178. >
  179. <img src="../../../assets/thirdWinner.png" class="cornerMarkImg">
  180. <div class="cornerMark" style="background-color: #ff4f32;margin-top: -3px;">
  181. 3
  182. </div>
  183. <el-image
  184. :src="videosData.videos_two[2].as_img"
  185. style="border-radius: 12px;width: 390px;height: 253px;margin-top: -40px;"
  186. />
  187. <div style="font-size: 15px;font-weight: Medium;">
  188. {{ videosData.videos_two[2].as_title }}
  189. </div>
  190. </div>
  191. </div>
  192. <div style="display: flex;margin-top: 30px;">
  193. <div
  194. style="background-color: #9f93cd;height: 220px;width: calc((100% - 1200px)/2 + 600px);display: flex;justify-content: flex-end;"
  195. >
  196. <div style="width: 600px;height: 220px;display: flex;flex-direction: column;justify-content: center;">
  197. <div style="color: white;font-size: 30px;font-weight: Medium;text-align: center;">
  198. 热视频排名
  199. </div>
  200. <div style="color: #c5c3da;font-size: 40px;font-weight: bold;text-align: center;">
  201. HOT VIDEO RANKING
  202. </div>
  203. </div>
  204. </div>
  205. <div style="display: flex;">
  206. <div
  207. v-if="videosData.videos_two[3]" style="width: 300px;padding: 0 5px;cursor: pointer;"
  208. @click="goDetail(videosData.videos_two[3])"
  209. >
  210. <div class="cornerMark" style="background-color: #ff8d7a;">
  211. 4
  212. </div>
  213. <el-image
  214. :src="videosData.videos_two[3].as_img"
  215. style="border-radius: 12px;width: 290px;height: 188px;margin-top: -40px;"
  216. />
  217. <div style="font-size: 15px;font-weight: Medium;">
  218. {{ videosData.videos_two[0].as_title }}
  219. </div>
  220. </div>
  221. <div
  222. v-if="videosData.videos_two[4]" style="width: 300px;padding: 0 5px;cursor: pointer;"
  223. @click="goDetail(videosData.videos_two[4])"
  224. >
  225. <div class="cornerMark" style="background-color: #ff8d7a;">
  226. 5
  227. </div>
  228. <el-image
  229. :src="videosData.videos_two[4].as_img"
  230. style="border-radius: 12px;width: 290px;height: 188px;margin-top: -40px;"
  231. />
  232. <div style="font-size: 15px;font-weight: Medium;">
  233. {{ videosData.videos_two[0].as_title }}
  234. </div>
  235. </div>
  236. </div>
  237. </div>
  238. </div>
  239. </div>
  240. <div>
  241. <div style="display: flex;justify-content: center;width: 100%;padding: 40px 0px">
  242. <img src="../../../assets/divider.png" style="width: 1200px;">
  243. </div>
  244. <div style="width: 1200px;margin: auto;display: flex;">
  245. <div
  246. v-if="videosData.videos_three[0]" style="width: 400px;padding: 0 5px;cursor: pointer;"
  247. @click="goDetail(videosData.videos_three[0])"
  248. >
  249. <img src="../../../assets/champion.png" class="cornerMarkImg">
  250. <div class="cornerMark" style="background-color: #f2dc8c;margin-top: -3px;">
  251. 1
  252. </div>
  253. <el-image
  254. :src="videosData.videos_three[0].as_img"
  255. style="width: 390px;height: 253px;border-radius: 12px;margin-top: -40px;"
  256. />
  257. <div style="font-size: 15px;font-weight: Medium;">
  258. {{ videosData.videos_three[0].as_title }}
  259. </div>
  260. </div>
  261. <div
  262. v-if="videosData.videos_three[1]" style="width: 400px;padding: 0 5px;cursor: pointer;"
  263. @click="goDetail(videosData.videos_three[1])"
  264. >
  265. <img src="../../../assets/secondWinner.png" class="cornerMarkImg">
  266. <div class="cornerMark" style="background-color: #d7d8d8;margin-top: -3px;">
  267. 2
  268. </div>
  269. <el-image
  270. :src="videosData.videos_three[1].as_img"
  271. style="width: 390px;height: 253px;border-radius: 12px;margin-top: -40px;"
  272. />
  273. <div style="font-size: 15px;font-weight: Medium;">
  274. {{ videosData.videos_three[1].as_title }}
  275. </div>
  276. </div>
  277. <div
  278. v-if="videosData.videos_three[2]" style="width: 400px;padding: 0 5px;cursor: pointer;"
  279. @click="goDetail(videosData.videos_three[2])"
  280. >
  281. <img src="../../../assets/thirdWinner.png" class="cornerMarkImg">
  282. <div class="cornerMark" style="background-color: #ff4f32;margin-top: -3px;">
  283. 3
  284. </div>
  285. <el-image
  286. :src="videosData.videos_three[2].as_img"
  287. style="width: 390px;height: 253px;border-radius: 12px;margin-top: -40px;"
  288. />
  289. <div style="font-size: 15px;font-weight: Medium;">
  290. {{ videosData.videos_three[2].as_title }}
  291. </div>
  292. </div>
  293. </div>
  294. <div style="width: 1200px;margin:auto;display: flex;margin-top: 30px;">
  295. <div
  296. v-if="videosData.videos_three[3]" style="width: 300px;padding: 0 5px;cursor: pointer;"
  297. @click="goDetail(videosData.videos_three[3])"
  298. >
  299. <div class="cornerMark" style="background-color: #ff8d7a;">
  300. 4
  301. </div>
  302. <el-image
  303. :src="videosData.videos_three[3].as_img"
  304. style="width: 290px;height: 188px;border-radius: 12px;margin-top: -40px;"
  305. />
  306. <div style="font-size: 15px;font-weight: Medium;">
  307. {{ videosData.videos_three[0].as_title }}
  308. </div>
  309. </div>
  310. <div
  311. v-if="videosData.videos_three[4]" style="width: 300px;padding: 0 5px;cursor: pointer;"
  312. @click="goDetail(videosData.videos_three[4])"
  313. >
  314. <div class="cornerMark" style="background-color: #ff8d7a;">
  315. 5
  316. </div>
  317. <el-image
  318. :src="videosData.videos_three[4].as_img"
  319. style="width: 290px;height: 188px;border-radius: 12px;margin-top: -40px;"
  320. />
  321. <div style="font-size: 15px;font-weight: Medium;">
  322. {{ videosData.videos_three[0].as_title }}
  323. </div>
  324. </div>
  325. <div style="background-color: #9f93cd;height: 220px;width: 600px;display: flex;justify-content: flex-end;">
  326. <div style="width: 600px;height: 220px;display: flex;flex-direction: column;justify-content: center;">
  327. <div style="color: white;font-size: 30px;font-weight: Medium;text-align: center;">
  328. 点赞量火爆视频
  329. </div>
  330. <div style="color: #c5c3da;font-size: 40px;font-weight: bold;text-align: center;">
  331. POPULAR
  332. </div>
  333. <div style="color: #c5c3da;font-size: 40px;font-weight: bold;text-align: center;">
  334. LIKES VIDEOS
  335. </div>
  336. </div>
  337. </div>
  338. </div>
  339. <div class="bg">
  340. <div style="width: 1200px;margin: auto;display: flex;align-items: center;height: 100%;display: flex;">
  341. <div
  342. style="background-color:rgba(119,110,151,0.5);border-radius: 10px;width: 290px;height: 335px;display: flex;flex-direction: column;justify-content: center;"
  343. >
  344. <div style="color: white;font-size: 30px;font-weight: Medium;text-align: center;">
  345. 博智AI慕课
  346. </div>
  347. <div style="color: white;font-size: 30px;font-weight: Medium;text-align: center;">
  348. 优势
  349. </div>
  350. <div style="color: #c5c3da;font-size: 33px;font-weight: bold;text-align: center;">
  351. BOZHI AI MUKE
  352. </div>
  353. <div style="color: #c5c3da;font-size: 40px;font-weight: bold;text-align: center;">
  354. Advantages
  355. </div>
  356. </div>
  357. <div style="width: 910px;display: flex;justify-content: space-around;">
  358. <div>
  359. <div style="display: flex;justify-content: center;">
  360. <img src="../../../assets/icon1.png">
  361. </div>
  362. <div style="font-size: 32px;color: white;text-align: center;margin-top: 20px;">
  363. AI驱动
  364. </div>
  365. <div style="font-size: 18px;color:white;text-align: center;">
  366. 支持数字人实时渲染
  367. </div>
  368. <div style="font-size: 18px;color:white;text-align: center;">
  369. 提供PaaS技术支持底座
  370. </div>
  371. </div>
  372. <div>
  373. <div style="display: flex;justify-content: center;">
  374. <img src="../../../assets/icon2.png">
  375. </div>
  376. <div style="font-size: 32px;color: white;text-align: center;margin-top: 20px;">
  377. 智能生产制作
  378. </div>
  379. <div style="font-size: 18px;color:white;text-align: center;">
  380. 支持云剪辑视频与资源文件
  381. </div>
  382. <div style="font-size: 18px;color:white;text-align: center;">
  383. 提供剪辑合成、特效与生产
  384. </div>
  385. </div>
  386. <div>
  387. <div style="display: flex;justify-content: center;">
  388. <img src="../../../assets/icon3.png">
  389. </div>
  390. <div style="font-size: 32px;color: white;text-align: center;margin-top: 20px;">
  391. 成本和效率
  392. </div>
  393. <div style="font-size: 18px;color:white;text-align: center;">
  394. 相比真人出镜更灵活高效
  395. </div>
  396. <div style="font-size: 18px;color:white;text-align: center;">
  397. 大大节省制作成本和时间
  398. </div>
  399. </div>
  400. </div>
  401. </div>
  402. </div>
  403. </div>
  404. <chat-bot />
  405. </template>
  406. <style lang="scss" scoped>
  407. .bg {
  408. margin-top: 70px;
  409. background-image: url('../../../assets/homepageBg.png');
  410. width: 100%;
  411. height: calc(100vw * 0.264);
  412. }
  413. .cornerMarkImg {
  414. position: relative;
  415. z-index: 1000;
  416. width: 50px;
  417. height: 30px;
  418. margin-top: -22px;
  419. }
  420. .cornerMark {
  421. position: relative;
  422. z-index: 999;
  423. color: white;
  424. font-weight: bold;
  425. font-size: 24px;
  426. width: 50px;
  427. height: 40px;
  428. border-radius: 12px 0;
  429. line-height: 40px;
  430. text-align: center;
  431. }
  432. </style>