play.vue 6.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274
  1. <template>
  2. <view class="view" v-if="showView">
  3. <!-- #ifdef APP-PLUS -->
  4. <video class="video" v-if="showView" :initial-time="currentTime" :src="videoUrl" :controls="false" :show-center-play-btn="false" autoplay id="video"></video>
  5. <!-- #endif -->
  6. <cover-view class="top es es-ac es-h-100" :style="'top:'+top+'px'">
  7. <cover-view class="es-w-40 es-h-60" @tap="close()"></cover-view>
  8. <cover-image style="background-color: red;" mode="aspectFit" class="es-w-18 es-h-31" src="/static/images/other/ret-white.png"
  9. @tap="close()"></cover-image>
  10. <cover-view class="es-w-30 es-h-60" @tap="close()"></cover-view>
  11. <cover-view class="es-c-white es-fw-500 es-fs-34 es-mb-4 es-h-44" style="line-height: 1em;">名字</cover-view>
  12. </cover-view>
  13. <view class="center es es-ac es-pc" v-if="showToolBar">
  14. <cover-image class="es-icon-52 es-icon-play-last"
  15. src="/static/images/other/video/play-last.png"></cover-image>
  16. <cover-image class="es-icon-88 es-icon-play-stop es-ml-30 es-mr-30"
  17. src="/static/images/other/video/play-stop.png"></cover-image>
  18. <cover-image class="es-icon-52 es-icon-play-next"
  19. src="/static/images/other/video/play-next.png"></cover-image>
  20. </view>
  21. <cover-view class="bottom" >
  22. <cover-view class="es-view-w-x">
  23. <cover-view class="es es-fs-22 es-c-white">
  24. <cover-view class="es-ml-30">00:37</cover-view>
  25. <cover-view class="es-p-r load-con es-f1 es-h-30 es-ml-12 es-mr-12">
  26. <cover-view class="es es-ac line1">
  27. <cover-view class="es-h-4 es-f1 line-bc es-br"></cover-view>
  28. </cover-view>
  29. <cover-view class="es es-ac line2">
  30. <cover-view class="es-h-4 es-br line-bc es-p-r" :style="'width: '+video.percent+'%;'"></cover-view>
  31. </cover-view>
  32. <cover-view class="es es-ac line3">
  33. <cover-view :style="'width: '+video.percent+'%;'"></cover-view>
  34. <cover-view class="white-bloack"></cover-view>
  35. </cover-view>
  36. </cover-view>
  37. <cover-view class="es-mr-30">00:37</cover-view>
  38. </cover-view>
  39. <cover-view class="es-pt-40 es es-fs-22 es-c-white">
  40. <cover-view class="es es-ver es-ac es-pc es-mr-50 es-ml-30">
  41. <cover-image class="es-icon-41" src="/static/images/other/video/1.png"></cover-image>
  42. <cover-view class="">写评论</cover-view>
  43. </cover-view>
  44. <cover-view class="es es-ver es-ac es-pc es-mr-50">
  45. <cover-image class="es-icon-41" src="/static/images/other/video/2.png"></cover-image>
  46. <cover-view class="">收藏</cover-view>
  47. </cover-view>
  48. <cover-view class="es es-ver es-ac es-pc es-mr-50">
  49. <cover-image class="es-icon-41" src="/static/images/other/video/3.png"></cover-image>
  50. <cover-view class="">分享</cover-view>
  51. </cover-view>
  52. <cover-view class="es es-ac es-pc es-mr-50">
  53. <cover-view class="es-icon-33 es-w-63 es-icon-play-dan"></cover-view>
  54. </cover-view>
  55. <cover-view class="es es-ac">
  56. <cover-view class="es-f1 es es-ac es-h-40 es-bc-white es-br" style="width: 400rpx;">
  57. <cover-view class="es-c-99 es-ml-30">发个弹幕见证下</cover-view>
  58. </cover-view>
  59. </cover-view>
  60. <cover-view class="es-f1"></cover-view>
  61. <cover-view class="es-fs-28 es es-ac es-mr-30">
  62. <cover-view>选集</cover-view>
  63. <cover-view class="es-ml-30">4K·全网独家</cover-view>
  64. </cover-view>
  65. </cover-view>
  66. <cover-view class="es-pt-41 es-auto-bottom"></cover-view>
  67. </cover-view>
  68. </cover-view>
  69. </view>
  70. </template>
  71. <script>
  72. export default {
  73. data() {
  74. return {
  75. showView: false,
  76. top: 23,
  77. video: {
  78. percent: 10,
  79. },
  80. videoUrl:'',
  81. status: 0,
  82. course:{},
  83. catalog:{},
  84. showToolBar:false,
  85. currentTime:0,
  86. }
  87. },
  88. onLoad(options) {
  89. console.log('qxj videoUrl', options.videoUrl);
  90. this.videoUrl=options.videoUrl;
  91. this.currentTime=options.currentTime;
  92. this.catalogIdx=options.catalogIdx;
  93. uni.getSystemInfo({
  94. success: (res) => {
  95. this.top = res.safeArea.top/2;
  96. console.log("qxj top:"+this.top);
  97. }
  98. });
  99. this.spin(1);
  100. //video
  101. // setTimeout(e=>{
  102. // uni.createVideoContext('video',this).play()
  103. // },500)
  104. },
  105. onShow: function() {
  106. },
  107. onReady(){
  108. this.adjustLayout();
  109. },
  110. onUnload: function() {
  111. },
  112. methods: {
  113. // 1-横屏 2-恢复
  114. spin: function(type = 1) {
  115. if (type == 1) {
  116. //满足条件转换为横屏
  117. setTimeout(e => {
  118. //#ifdef APP-PLUS
  119. plus.navigator.setFullscreen(true)
  120. plus.screen.lockOrientation("landscape-primary");
  121. this.status = 1;
  122. //#endif
  123. })
  124. } else {
  125. //#ifdef APP-PLUS
  126. // plus.navigator.setFullscreen(false)
  127. // plus.screen.lockOrientation('portrait-primary');
  128. //#endif
  129. }
  130. },
  131. close: function() {
  132. // uni.navigateBack();
  133. console.log("qxj close");
  134. this.showView = false;
  135. this.spin(2);
  136. uni.redirectTo({
  137. url: '/pages/course/video/playClose'
  138. })
  139. },
  140. adjustLayout() {
  141. this.showView=true;
  142. const query = uni.createSelectorQuery().in(this);
  143. query.select('.view').boundingClientRect((data) => {
  144. if (data) {
  145. console.log('Container height:', data.height);
  146. }
  147. }).exec();
  148. },
  149. }
  150. }
  151. </script>
  152. <style>
  153. page {
  154. background-color: #000;
  155. }
  156. .view {
  157. width: 100%;
  158. height: 100%;
  159. position: fixed;
  160. left: 0;
  161. top: 0;
  162. background-color: #000;
  163. /* background-color: yellow; */
  164. }
  165. .video {
  166. width: 100%;
  167. height: 100%;
  168. position: absolute;
  169. left: 0;
  170. top: 0;
  171. background-color: yellow;
  172. }
  173. .top {
  174. position: absolute;
  175. top: 0;
  176. left: 0;
  177. z-index: 2;
  178. }
  179. .top image {
  180. width: 18rpx;
  181. height: 31rpx;
  182. margin-left: 30rpx;
  183. }
  184. .bottom {
  185. position: absolute;
  186. left: 0;
  187. bottom: 0;
  188. width: 100%;
  189. z-index: 2;
  190. /* background-color: red; */
  191. }
  192. .load-con .line1,.load-con .line2,.load-con .line3 {
  193. position: absolute;
  194. left: 0;
  195. top: 0;
  196. height: 30rpx;
  197. width: 100%;
  198. }
  199. .load-con .line1 .line-bc {
  200. background-color: rgba(255, 255, 255, 0.3);
  201. }
  202. .load-con .line2 .line-bc {
  203. background-color: #FC8957;
  204. }
  205. .white-bloack {
  206. background-color: #F45510;
  207. width: 24rpx;
  208. height: 10rpx;
  209. margin-left: -12rpx;
  210. border-radius: 100rpx;
  211. box-shadow: 2px 6px 10px 0px rgba(153, 153, 153, 0.22);
  212. }
  213. .center {
  214. width: 100%;
  215. height: 100%;
  216. position: fixed;
  217. position: absolute;
  218. left: 0;
  219. top: 0;
  220. z-index: 1;
  221. }
  222. .es-icon-play-1 {
  223. background-image: url(/static/images/other/video/1.png);
  224. }
  225. .es-icon-play-2 {
  226. background-image: url(/static/images/other/video/2.png);
  227. }
  228. .es-icon-play-3 {
  229. background-image: url(/static/images/other/video/3.png);
  230. }
  231. .es-icon-play-last {
  232. background-image: url(/static/images/other/video/play-last.png);
  233. }
  234. .es-icon-play-stop {
  235. background-image: url(/static/images/other/video/play-stop.png);
  236. }
  237. .es-icon-play-next {
  238. background-image: url(/static/images/other/video/play-next.png);
  239. }
  240. .es-icon-play-dan {
  241. background-image: url(/static/images/other/video/dan.png);
  242. }
  243. </style>