WXtrialInterface.html 14 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265
  1. <!DOCTYPE html>
  2. <html lang="en">
  3. <head>
  4. <meta charset="utf-8" />
  5. <title>云手机</title>
  6. <!-- 告诉 IE 浏览器使用最新的渲染引擎(Edge 模式)来渲染页面,而不是使用旧的兼容模式。这可以确保页面在 IE 浏览器中以最佳方式显示。 -->
  7. <meta http-equiv="X-UA-Compatible" content="IE=edge" />
  8. <!-- 强制页面在移动设备上以竖屏模式显示 portrait 表示页面只能以竖屏模式显示 -->
  9. <meta name="x5-orientation" content="portrait" />
  10. <!-- 与 x5-orientation 类似,用于指定页面的方向 -->
  11. <meta name="screen-orientation" content="portrait" />
  12. <!-- 控制页面在移动设备上的视口(viewport)行为 -->
  13. <meta name="viewport" content="width=device-width,initial-scale=1,minimum-scale=1,maximum-scale=1,user-scalable=no,shrink-to-fit=no,viewport-fit=cover" />
  14. <!-- 允许网页应用以全屏模式运行 当用户将网页添加到主屏幕后,点击图标打开时,页面会以全屏模式显示,隐藏浏览器的地址栏和导航栏。适用于将网页应用伪装成原生应用的场景-->
  15. <meta name="apple-mobile-web-app-capable" content="yes" />
  16. <!-- 控制页面在 iOS 设备上的全屏模式和状态栏颜色 -->
  17. <meta name="apple-mobile-web-app-status-bar-style" content="black" />
  18. <!-- 禁止自动识别电话号码和邮箱地址 -->
  19. <meta name="format-detection" content="telphone=no, email=no" />
  20. <!-- 忽略页面中的数字识别为电话,忽略email识别 -->
  21. <!-- 启用360浏览器的极速模?(webkit) -->
  22. <meta name="renderer" content="webkit" />
  23. <!-- 针对手持设备优化,主要是针对一些老的不识别viewport的浏览器,比如黑? -->
  24. <meta name="HandheldFriendly" content="true" />
  25. <!-- 微软的老式浏览? -->
  26. <meta name="MobileOptimized" content="320" />
  27. <!-- 不能旋转,问题出在这 -->
  28. <!-- UC强制全屏 -->
  29. <meta name="full-screen" content="yes" />
  30. <!-- QQ强制全屏 -->
  31. <meta name="x5-fullscreen" content="true" />
  32. <!-- UC应用模式 -->
  33. <meta name="browsermode" content="application" />
  34. <!-- QQ应用模式 -->
  35. <meta name="x5-page-mode" content="app" />
  36. <!-- 禁用 Windows Phone 8 及更高版本中的灰色点击高亮 -->
  37. <meta name="msapplication-tap-highlight" content="no" />
  38. <link rel="stylesheet" href="./config/css/vant.css">
  39. <link rel="stylesheet" href="./css/WXtrialInterface.css">
  40. <!-- <script src="https://lf9-cdn-tos.bytecdntp.com/cdn/expire-1-M/vConsole/3.12.1/vconsole.min.js"></script>
  41. <script>
  42. const vConsole = new VConsole();
  43. </script> -->
  44. </head>
  45. <body @touchmove.prevent @mousemove.prevent>
  46. <div id="app" v-cloak>
  47. <!-- 计时卡计时 -->
  48. <div class="pfi flex timing" v-if="timingVisible" v-cloak>
  49. <div>{{countdownTime}}</div>
  50. <img class="wh22" src="../static/img/close.png" alt="" @click="handlecountdownTimeClose" />
  51. </div>
  52. <!-- 悬浮框 -->
  53. <div class="levitated-sphere" :style="levitatedSpherePositionData" v-cloak
  54. @click="onSphere">
  55. <img src="../static/img/xuanfu_icon.png" alt=""
  56. @mousedown.prevent="onSphereDown"
  57. @mouseup.prevent.stop="onSphereUp"
  58. @touchmove.prevent="touchmoveLevitatedSphere"
  59. @mousemove.prevent="touchmoveLevitatedSphere"
  60. @touchend="touchendLevitatedSphere"
  61. @mouseup="touchendLevitatedSphere"
  62. @mouseleave="touchendLevitatedSphere">
  63. </div>
  64. <div class="layout" :style="{height: height + 'px'}" v-cloak @touchmove.prevent @mousemove.prevent>
  65. <!-- 云机位置 -->
  66. <div class="layout-view" v-cloak @touchmove.prevent @mousemove.prevent>
  67. <video ref="rtcMediaPlayer" :style="rtcMediaPlayerStyle" width="100%" height="100%" autoplay
  68. webkit-playsinline="true" playsinline x-webkit-airplay="allow" x5-video-player-type="h5"
  69. x5-video-player-fullscreen="true" x5-video-orientation="portraint" id="playerVideo"
  70. class="videoRotate" :controls="false"
  71. @touchmove.prevent="(event) => {engine.touchClick(event, 2)}"
  72. @mousemove.prevent="(event) => {engine.touchClick(event, 2)}"
  73. @touchstart.prevent="(event) => {engine.touchClick(event, 0)}"
  74. @mousedown.prevent="(event) => {engine.touchClick(event, 0)}"
  75. @mouseup.prevent="touchendRtcMediaPlayer"
  76. @mouseleave.prevent="touchendRtcMediaPlayer"
  77. @touchend.prevent="touchendRtcMediaPlayer"
  78. v-show="isShowVideo">
  79. 当前浏览器暂不支持、请使用谷歌浏览器或前往双子星客户端使用</video>
  80. </div>
  81. <!-- 底部按钮 -->
  82. <div class="layout-footer" v-cloak @touchmove.prevent @mousemove.prevent>
  83. <template v-for="item in footerBtn">
  84. <img :src="item.img" alt="" @click="footerBtnFun(item.key)">
  85. </template>
  86. </div>
  87. <!-- 右侧弹框 -->
  88. <van-popup v-model="levitatedSphereVisible" position="right" class="levitated-sphere-drawer"
  89. overlay-class="levitated-sphere-overlay" v-cloak>
  90. <div class="flex-column">
  91. <div class="flex-column-container">
  92. <div>
  93. <div v-for="item in definitionList" :key="item.key"
  94. :class="['tc drawer-item mb-15', {active: definitionValue === item.value}]"
  95. @click.prevent="definitionFun(item.value)">
  96. {{item.name}}
  97. </div>
  98. <!-- <div class="tc drawer-item mb-15" @click.prevent="resolutionRatio">
  99. 分辨率
  100. </div> -->
  101. <div class="tc drawer-item mb-15" @click.prevent="volumeControl(24)">
  102. 音量 +
  103. </div>
  104. <div class="tc drawer-item" @click.prevent="volumeControl(25)">
  105. 音量 -
  106. </div>
  107. </div>
  108. </div>
  109. <div class="exit">
  110. <template v-for="(item, index) in exitList">
  111. <div :key="item.key" :class="['tc', {'mb-15': index !== exitList.length - 1}, item.key]"
  112. @click.prevent="exitFun(item.key)">
  113. <img :src="item.img" alt="">
  114. <div class="drawer-item">
  115. {{item.name}}
  116. </div>
  117. </div>
  118. </template>
  119. </div>
  120. </div>
  121. </van-popup>
  122. <!-- 分辨率 -->
  123. <van-dialog v-model="resolutionRatioVisible" :show-confirm-button="false" class="resolution-ratio-modal"
  124. v-cloak>
  125. <div>
  126. <div>
  127. <div class="flex-jub resolution-ratio-btn">
  128. <div @click="resolutionRatioVisible = false">取消</div>
  129. <div @click="confirmResolution">确定</div>
  130. </div>
  131. <div class="resolution-ratio-list">
  132. <div v-for="(item, index) in resolutionRatioList" :key="item"
  133. :class="{active: phoneSize.dpi === item.dpi}" @click="phoneSize = item">
  134. <div class="tc">
  135. {{item.width}} x {{item.height}}
  136. </div>
  137. </div>
  138. </div>
  139. </div>
  140. </div>
  141. </van-dialog>
  142. <!-- 粘贴板 -->
  143. <van-dialog v-model="pasteVersionVisible" :show-confirm-button="false" class="paste-version-modal" v-cloak>
  144. <template v-if="pasteVersionList.length">
  145. <div class="tc paste-version-title pre">
  146. <span class="pab">粘贴版</span>
  147. <span class="pab paste-version-clear" @click="deletePasteVersion()">
  148. 清空
  149. </span>
  150. </div>
  151. <div class="paste-version-list">
  152. <div v-for="(item,index) in pasteVersionList" :key="item"
  153. :class="[{'mb-5': index!==pasteVersionList.length - 1}]">
  154. <van-swipe-cell>
  155. <div :class="`copy-value-${index}, ellipsis`" @click="copyPasteVersiontext">
  156. {{item.content}}
  157. </div>
  158. <template #right>
  159. <div class="paste-version-delete" @click="deletePasteVersion(item.id)">
  160. 删除
  161. </div>
  162. </template>
  163. </van-swipe-cell>
  164. </div>
  165. </div>
  166. </template>
  167. <template v-else>
  168. <div class="paste-version-empty flex-center-all h100">
  169. <div>
  170. <img src="./img/jianqieban_pic@2x.png" alt="">
  171. <div class="tc">
  172. 剪贴板为空
  173. </div>
  174. </div>
  175. </div>
  176. </template>
  177. <img class="pab paste-version-close" src="./img/guanbi_icon@2x.png" alt=""
  178. @click="pasteVersionVisible = false" />
  179. </van-dialog>
  180. <!-- 增加复制粘贴板 -->
  181. <van-dialog v-model="copyTextVisible" class="copy-text-modal" confirm-button-text="确定" show-cancel-button
  182. confirm-button-color="#3cc51f" v-cloak :before-close="beforeCloseCopy">
  183. <div class="tc">
  184. 读取剪贴板失败
  185. </div>
  186. <div>
  187. <van-field v-model="copyTextValue" placeholder="请输入复制到剪切板的内容" />
  188. </div>
  189. </van-dialog>
  190. <!-- 计费规则 -->
  191. <van-dialog v-model="billingRulesVisible" :show-confirm-button="false" class="billing-rules-modal" v-cloak>
  192. <div class="tc">
  193. <img class="billing-rules-img" src="./img/countdown.png" />
  194. </div>
  195. <div class="tc billing-rules-title">
  196. 计费规则
  197. </div>
  198. <div class="tc">进入云机开始计时,点击退出并下机停止计时。点击退出云机仍处于计时状态。</div>
  199. <div class="tc billing-rules-tips">云机时长剩余:<span class="billing-rules-time">{{countdownTime}}</span>
  200. </div>
  201. <div class="billing-rules-btn" @click="getRecommend">我知道了</div>
  202. </van-dialog>
  203. <!-- 应用推荐 -->
  204. <van-dialog v-model="applyRecommendVisible" :show-confirm-button="false" class="apply-recommend-modal"
  205. v-cloak>
  206. <div>
  207. <div class="tc apply-recommend-title">
  208. 应用推荐
  209. </div>
  210. <div class="apply-recommend-list">
  211. <div v-for="(item, index) in recommendList" :key="item.id"
  212. :class="['flex w100', {'mt-16': index !== 0}]">
  213. <div class="left flex-align-c">
  214. <img :src="item.imageUrl" alt="">
  215. <div>
  216. <div class="title ellipsis">{{item.filename}}</div>
  217. <div class="download-num">有{{item.installNum}}个人下载</div>
  218. </div>
  219. </div>
  220. <div class="right flex-align-c" @click="downAndInstallApk(item)">
  221. <div>
  222. 下载
  223. </div>
  224. </div>
  225. </div>
  226. </div>
  227. <div class="apply-recommend-btn tc" @click="getRecommend">
  228. 换一批
  229. </div>
  230. </div>
  231. <img class="apply-recommend-close pab" src="./img/close.png" alt=""
  232. @click="applyRecommendVisible = false" />
  233. </van-dialog>
  234. <!-- 超过指定触碰时间的弹窗提示 -->
  235. <van-dialog v-model="noOperationSetTimeoutTimeVisible" title="提示" show-cancel-button
  236. message="由于您长时间未操作,将自动断开视频链接(不影响云手机内应用运行)" :confirm-button-text="confirmButtonText"
  237. confirm-button-color="#3cc51f" cancel-button-text="继续操作" @cancel="noOperationSetTimeout('cancel')"
  238. @confirm="noOperationSetTimeout('cancel'), exit(), noOperationSetTimeoutTimeVisible = false" v-cloak>
  239. </van-dialog>
  240. </div>
  241. </div>
  242. </body>
  243. <script src="./config/js/jweixin.js"></script>
  244. <script src="./config/js/clipboard.js"></script>
  245. <script type="text/javascript" src="../static/js/uni.webview.1.5.2.js"></script>
  246. <script src="./config/js/vue.js"></script>
  247. <script src="./config/js/vant.js"></script>
  248. <script src="./config/js/axios.js"></script>
  249. <script src="./config/js/rtcEngine.min.js"></script>
  250. <script src="../static/lib/qs.js"></script>
  251. <script type="module" src="./js/WXtrialInterface.js"></script>
  252. </html>