hookehuyr

✨ feat(书籍详情页,视频列表播放全屏优化,细节优化):

...@@ -22,6 +22,7 @@ ...@@ -22,6 +22,7 @@
22 </div> 22 </div>
23 </div> 23 </div>
24 24
25 + <van-sticky>
25 <div class="book-video-title"> 26 <div class="book-video-title">
26 <van-row> 27 <van-row>
27 <van-col span="12"> 28 <van-col span="12">
...@@ -36,7 +37,6 @@ ...@@ -36,7 +37,6 @@
36 </van-col> 37 </van-col>
37 </van-row> 38 </van-row>
38 </div> 39 </div>
39 -
40 <div class="book-video-language"> 40 <div class="book-video-language">
41 <van-row> 41 <van-row>
42 <van-col span="6"> 42 <van-col span="6">
...@@ -65,10 +65,13 @@ ...@@ -65,10 +65,13 @@
65 /> 65 />
66 </van-popup> 66 </van-popup>
67 </div> 67 </div>
68 + </van-sticky>
68 69
69 <div class="book-video-list"> 70 <div class="book-video-list">
70 <van-list v-model:loading="loading" :finished="finished" finished-text="没有更多了" @load="onLoad"> 71 <van-list v-model:loading="loading" :finished="finished" finished-text="没有更多了" @load="onLoad">
71 - <div v-for="item in list" :key="item" style="height: 3rem;">{{ item }}</div> 72 + <template v-for="item in dataList" :key="item" style="height: 3rem;">
73 + <video-card :item="item"></video-card>
74 + </template>
72 </van-list> 75 </van-list>
73 </div> 76 </div>
74 </div> 77 </div>
...@@ -91,7 +94,10 @@ ...@@ -91,7 +94,10 @@
91 </template> 94 </template>
92 95
93 <script setup> 96 <script setup>
97 +import dataList from '@/mock/video_list'
98 +
94 import MyButton from '@/components/MyButton/index.vue' 99 import MyButton from '@/components/MyButton/index.vue'
100 +import VideoCard from '@/components/VideoCard/index.vue'
95 101
96 import icon_video from '@images/video.png' 102 import icon_video from '@images/video.png'
97 import icon_up from '@images/icon-guanbi@2x.png' 103 import icon_up from '@images/icon-guanbi@2x.png'
...@@ -105,6 +111,7 @@ import { ref, reactive, onMounted } from 'vue' ...@@ -105,6 +111,7 @@ import { ref, reactive, onMounted } from 'vue'
105 import { useRoute, useRouter } from 'vue-router' 111 import { useRoute, useRouter } from 'vue-router'
106 import axios from '@/utils/axios'; 112 import axios from '@/utils/axios';
107 import $ from 'jquery' 113 import $ from 'jquery'
114 +import _ from 'lodash'
108 import { Toast } from 'vant'; 115 import { Toast } from 'vant';
109 const $route = useRoute(); 116 const $route = useRoute();
110 const $router = useRouter(); 117 const $router = useRouter();
...@@ -220,6 +227,10 @@ const uploadVideo = () => { ...@@ -220,6 +227,10 @@ const uploadVideo = () => {
220 <script> 227 <script>
221 import mixin from 'common/mixin'; 228 import mixin from 'common/mixin';
222 229
230 +function transCaseList (url, pic) {
231 + return { url, pic }
232 +}
233 +
223 export default { 234 export default {
224 mixins: [mixin.init], 235 mixins: [mixin.init],
225 data() { 236 data() {
...@@ -227,11 +238,17 @@ export default { ...@@ -227,11 +238,17 @@ export default {
227 238
228 } 239 }
229 }, 240 },
230 - mounted() { 241 + created() {
231 - 242 + this.getList()
232 }, 243 },
233 methods: { 244 methods: {
234 - 245 + getList () {
246 + _.each(this.dataList, item => {
247 + let video = item.video && item.video.url ? item.video.url : 'http://static.smartisanos.cn/common/video/t1-ui.mp4';
248 + let cover = item.cover && item.cover.url ? item.cover.url : 'http://static.smartisanos.cn/pr/img/video/video_03_cc87ce5bdb.jpg';
249 + item.options = { video: transCaseList(video, cover), autoplay: false, preload: 'none' }
250 + })
251 + }
235 } 252 }
236 } 253 }
237 </script> 254 </script>
...@@ -240,11 +257,12 @@ export default { ...@@ -240,11 +257,12 @@ export default {
240 @import url('@css/content-bg.less'); 257 @import url('@css/content-bg.less');
241 258
242 .book-detail-page { 259 .book-detail-page {
243 - overflow: auto; 260 + // overflow: auto;
244 261
245 .book-detail { 262 .book-detail {
246 margin: 1rem; 263 margin: 1rem;
247 - margin-top: 1.25rem; 264 + // margin-top: 1.25rem;
265 + margin-top: 0;
248 padding-top: 1rem; 266 padding-top: 1rem;
249 border-radius: 10px; 267 border-radius: 10px;
250 background-color: rgba(255, 255, 255, 1); 268 background-color: rgba(255, 255, 255, 1);
...@@ -278,7 +296,7 @@ export default { ...@@ -278,7 +296,7 @@ export default {
278 296
279 .book-video-language { 297 .book-video-language {
280 padding: 1rem; 298 padding: 1rem;
281 - 299 + background-color: white;
282 .uncheck { 300 .uncheck {
283 background: #F7F7F7; 301 background: #F7F7F7;
284 border-radius: 15px; 302 border-radius: 15px;
...@@ -320,12 +338,13 @@ export default { ...@@ -320,12 +338,13 @@ export default {
320 } 338 }
321 339
322 .book-video-list { 340 .book-video-list {
323 - height: 20rem; 341 + // height: 20rem;
324 - overflow: scroll; 342 + // overflow: scroll;
325 } 343 }
326 } 344 }
327 345
328 .book-bar { 346 .book-bar {
347 + z-index: 999;
329 position: fixed; 348 position: fixed;
330 right: 0; 349 right: 0;
331 bottom: 0; 350 bottom: 0;
......