浏览代码

Merge branch 'dev5.8.2' of Software/android-cloud-H5 into master

guocanfeng 1 年之前
父节点
当前提交
db341733de

二进制
assets/image/introductionCloudPhone/back.png


二进制
assets/image/introductionCloudPhone/btn.png


二进制
assets/image/introductionCloudPhone/default.png


二进制
assets/image/introductionCloudPhone/defaultWhite.png


二进制
assets/image/introductionCloudPhone/search.png


+ 18 - 15
components/layout/index.vue

@@ -16,9 +16,9 @@ export default {
   },
   data() {
     return {
-        visible: true,
-        isApp: null,
-        isAndroid: null
+      visible: true,
+      isApp: null,
+      isAndroid: null
     };
   },
   mounted() {
@@ -26,19 +26,19 @@ export default {
     // 如果是H5、微信小程序,不需要显示次按钮
     this.isApp = this.$userAgent.isSzx || this.$userAgent.isSzxBrowser
     this.isAndroid = this.$userAgent.isAndroid;
-    if(!this.isApp) return this.visible = false
-    if(this.isApp && this.isAndroid) {
-      this.visible = !!window.native.goneBack 
+    if (!this.isApp) return this.visible = false
+    if (this.isApp && this.isAndroid) {
+      this.visible = !!window.native.goneBack
       this.visible && window.native.goneBack()
-        return
+      return
     }
   },
   methods: {
     goBack() {
       // 如果为true是最前一页
-      if(this.isGoBack) {
+      if (this.isGoBack) {
         this.isAndroid ? window.native.backClick() : window.webkit.messageHandlers.appGoBack.postMessage({})
-        return 
+        return
       }
       this.$router.go(-1)
     }
@@ -47,11 +47,14 @@ export default {
 </script>
 
 <style lang="less" scoped>
-.go-back{
-    position: fixed;
-    width: 42px;
-    height: 42px;
-    left: 26px;
-    bottom: 98px;
+.layout {
+  height: 100%;
+}
+.go-back {
+  position: fixed;
+  width: 42px;
+  height: 42px;
+  left: 26px;
+  bottom: 98px;
 }
 </style>

+ 120 - 0
pages/introductionCloudPhone/articleDetails.vue

@@ -0,0 +1,120 @@
+<template>
+  <layoutBack :isGoBack='false'>
+    <layout title='福利社区文章' :isRouterBack="true">
+      <div :class="isShowApp?'article':'article article-white'">
+        <div class="article-title" v-if="isShowApp">
+          福利社区文章
+        </div>
+
+        <div class="article-title2">
+          {{ title }}
+        </div>
+
+        <div class="article-content" v-html="content">
+        </div>
+
+      </div>
+    </layout>
+  </layoutBack>
+</template>
+  
+  <script>
+import layout from './components/layout';
+import layoutBack from '@/components/layout';
+export default {
+  auth: false,
+  name: 'articleDetails',
+  head: {
+    title: '福利社区文章',
+  },
+  data() {
+    return {
+      title: '',
+      content: '',
+    };
+  },
+  components: { layout, layoutBack },
+  created() {
+    if (this.$route.query.id) {
+      this.evantDetails(this.$route.query.id)
+    }
+
+  },
+  computed: {
+    isShowApp() {
+      // 是否是APP
+      const isApp = this.$userAgent.isSzx || this.$userAgent.isSzxBrowser;
+      const isAndroid = this.$userAgent.isAndroid;
+      const isIos = this.$userAgent.isIos;
+      const isWx = this.$userAgent.isWx;
+      // 如果是App并且是安卓,就不显示头部, ios显示
+      // 如果微信小程序环境的,也不显示头部
+      // 如果是h5 就显示头部
+      let bool = false;
+      bool = isApp && (isAndroid || isIos) ? true : false;
+      return bool;
+    },
+  },
+  methods: {
+    async evantDetails(id) {
+      await this.$axios.$get('/activity/v1/evant/information/get/evantDetails/' + id).then((res) => {
+        // console.log(res)
+        this.title = res.data.title;
+        this.content = res.data.content;
+      });
+    }
+  },
+};
+  </script>
+  
+  <style lang="less" scoped>
+.article {
+  height: 100%;
+  box-sizing: border-box;
+  .article-title {
+    margin-left: 10px;
+    font-family: PingFangSC, PingFang SC;
+    font-weight: 500;
+    font-size: 18px;
+    color: #cfd1d4;
+    line-height: 25px;
+    text-align: left;
+    font-style: normal;
+    margin-bottom: 24px;
+  }
+
+  .article-title2 {
+    font-family: PingFangSC, PingFang SC;
+    font-weight: 500;
+    font-size: 20px;
+    color: #ffffff;
+    line-height: 30px;
+    text-align: left;
+    font-style: normal;
+  }
+
+  .article-content {
+    margin-top: 24px;
+    color: #ffffff;
+    ::v-deep img{
+      max-width: 100% !important;
+      height: auto !important;
+    }
+  }
+}
+
+.article-white {
+  .article-title {
+    color: #0a132b;
+  }
+
+  .article-title2 {
+    color: #0a132b;
+  }
+
+  .article-content {
+    color: #0a132b;
+  }
+}
+</style>
+  

+ 141 - 0
pages/introductionCloudPhone/components/layout.vue

@@ -0,0 +1,141 @@
+<template>
+  <div :class="isShowApp?'layout':'layout layout-white'">
+    <div style="height: 12.2666666667vw" v-if="isShowNavBar">
+      <van-nav-bar :title="title" left-arrow fixed @click-left="goBackFun" />
+    </div>
+    <div class="layout-container" :style="containerStyle">
+      <slot></slot>
+    </div>
+
+  </div>
+</template>
+  
+  <script>
+export default {
+  name: 'layout',
+  props: {
+    // 是否显示头部
+    title: {
+      type: String,
+      default: '推荐云手机',
+    },
+    // 是否强制像是头部
+    forceShowNavBar: {
+      type: Boolean,
+      default: false
+    },
+    padding: {
+      type: String,
+      default: ''
+    },
+    isRouterBack: {
+      type: Boolean,
+      default: false
+    }
+  },
+  data() {
+    return {};
+  },
+  mounted() { },
+  computed: {
+    containerStyle() {
+      if (this.isShowApp) {
+        return { backgroundColor: '#1C1C1E', padding: this.padding ? this.padding : '16px' };
+      }
+      return { backgroundColor: '#F2F4F7', padding: this.padding ? this.padding : '16px' };
+    },
+    isShowApp() {
+      // 是否是APP
+      const isApp = this.$userAgent.isSzx || this.$userAgent.isSzxBrowser;
+      const isAndroid = this.$userAgent.isAndroid;
+      const isIos = this.$userAgent.isIos;
+      const isWx = this.$userAgent.isWx;
+
+      console.log('isApp:' + isApp)
+      console.log('isAndroid:' + isAndroid)
+      console.log('isIos:' + isIos)
+      console.log('isWx:' + isWx)
+
+      // 如果是App并且是安卓,就不显示头部, ios显示
+      // 如果微信小程序环境的,也不显示头部
+      // 如果是h5 就显示头部
+      let bool = false;
+      bool = isApp && (isAndroid || isIos) ? true : false;
+      return bool;
+    },
+    isShowNavBar() {
+      // 是否是APP
+      const isApp = this.$userAgent.isSzx || this.$userAgent.isSzxBrowser;
+      const isAndroid = this.$userAgent.isAndroid;
+      const isIos = this.$userAgent.isIos;
+      const isWx = this.$userAgent.isWx;
+      // 如果是App并且是安卓,就不显示头部, ios显示
+      // 如果微信小程序环境的,也不显示头部
+      // 如果是h5 就显示头部
+      let bool = false;
+      // bool = isApp ? (isAndroid ? !isAndroid : isIos) : (isWx ? !isWx : !isWx);
+
+      bool = (isApp && (isAndroid || isIos)) || isWx ? false : true;
+
+      // console.log()
+      return bool || this.forceShowNavBar;
+    },
+
+  },
+  methods: {
+    goBackFun() {
+      if (this.$listeners.goBack) {
+        this.$emit('goBack');
+        return;
+      }
+      this.$router.go(-1);
+    },// 退出相关逻辑
+  },
+};
+  </script>
+  
+  <style lang="less" scoped>
+.layout {
+  height: 100%;
+  display: flex;
+  flex-direction: column;
+  .layout-container {
+    flex: 1;
+    overflow-y: auto;
+  }
+
+  ::v-deep .van-nav-bar__arrow {
+    color: #000000;
+    font-size: 24px;
+  }
+
+  ::v-deep .van-nav-bar__title {
+    font-weight: bold !important;
+    font-size: 17px !important;
+    color: #0a132b !important;
+    line-height: 24px !important;
+  }
+
+  .van-nav-bar {
+    z-index: 0;
+  }
+
+  .floating-back {
+    position: fixed; /* 设定定位为固定 */
+    left: 26px; /* 距离右侧10像素 */
+    bottom: 98px; /* 距离底部10像素 */
+    background-color: transparent; /* 背景颜色 */
+    z-index: 1000; /* 确保悬浮在其他内容之上 */
+  }
+}
+.layout-white {
+  .van-nav-bar {
+    background-color: #f2f4f7;
+  }
+
+  ::v-deep [class*='van-hairline']::after {
+    border: 0px;
+  }
+}
+</style>
+  

+ 388 - 0
pages/introductionCloudPhone/index.vue

@@ -0,0 +1,388 @@
+<template>
+  <layoutBack :isGoBack='true'>
+    <layout title='推荐云手机'>
+      <div :class="isShowApp?'introduction':'introduction introduction-white'">
+        <div class="introduction-title" v-if="isShowApp">
+          推荐云手机
+        </div>
+
+        <div class="introduction-tips">
+          请搜索您在云手机内希望使用的应用!
+        </div>
+
+        <div class="introduction-search">
+          <img src="@/assets/image/introductionCloudPhone/search.png" alt="" />
+          <input ref="inputField" v-model="searchText" type="search" placeholder="请输入应用名" />
+          <div @click="search">搜索</div>
+        </div>
+
+        <div v-if="applicationList.length && isShow">
+          <div class="introduction-tips" style="margin-top: 24px;">
+            以下推荐应用选您需要使用的应用
+          </div>
+          <div>
+            <div class="application">
+              <div v-for="(item,index) in applicationList" :key="index" @click="selectApplication(item)">
+                {{ item }}
+              </div>
+            </div>
+          </div>
+        </div>
+
+        <div style="margin-top: 24px;" v-if="appSeatchList.length && !isShow">
+          <div class="application-list" v-for="(item,index) in appSeatchList" :key="index">
+            <div class="application-list-top">
+              <img class="application-list-img" width="42" height="42" :src="item.img" alt="" />
+              <div class="application-list-rigth">
+                <div class="application-list-title">{{item.appName}} <span v-if="item.articleId>0" @click="goArticleDetails(item)">点击阅读</span></div>
+                <div class="application-list-tips">游戏名称云手机使用教程</div>
+              </div>
+              <div class="application-list-btn" @click="pay(item)">购买云手机 <img width="12" src="@/assets/image/introductionCloudPhone/btn.png" /></div>
+
+            </div>
+
+            <div class="application-list-bottom">推荐机型:{{item.list?item.list.map(o=>o.phoneTypeStr).join('/'):''}}</div>
+          </div>
+
+        </div>
+
+        <div class="application-default" v-if="!appSeatchList.length && !isShow">
+          <img v-if="isShowApp" width="305" src="@/assets/image/introductionCloudPhone/default.png" />
+
+          <img v-else width="305" src="@/assets/image/introductionCloudPhone/defaultWhite.png" />
+          <div>很遗憾,没有搜索到您想要的应用</div>
+        </div>
+
+      </div>
+    </layout>
+  </layoutBack>
+</template>
+
+<script>
+import layoutBack from '@/components/layout';
+import layout from './components/layout';
+import { fileKeyToUrl } from '@/plugins/file-center.js';
+import uni from '@/static/static/js/uni.webview.1.5.2';
+export default {
+  auth: false,
+  name: 'introductionCloudPhone',
+  head: {
+    title: '推荐云手机',
+  },
+  data() {
+    return {
+      searchText: '',
+      isShow: true,
+      applicationList: [], //  推荐应用数组
+      appSeatchList: [], //  应用数组
+    };
+  },
+  components: { layout, layoutBack },
+  created() {
+    this.getSuggestApp()
+
+    let _this = this
+    document.addEventListener('keydown', function (e) {
+      // 检查是否是搜索键(通常是“Enter”键)
+      if (e.keyCode === 13) { // Enter key
+        // 执行搜索操作
+        _this.search();
+
+        // 调用原生方法隐藏软键盘
+        _this.$refs.inputField.blur();
+      }
+    });
+  },
+  watch: {
+    searchText(value) {
+      if (!value)
+        this.isShow = true
+    }
+  },
+  computed: {
+    isShowApp() {
+      // 是否是APP
+      const isApp = this.$userAgent.isSzx || this.$userAgent.isSzxBrowser;
+      const isAndroid = this.$userAgent.isAndroid;
+      const isIos = this.$userAgent.isIos;
+      const isWx = this.$userAgent.isWx;
+      // 如果是App并且是安卓,就不显示头部, ios显示
+      // 如果微信小程序环境的,也不显示头部
+      // 如果是h5 就显示头部
+      let bool = false;
+      bool = isApp && (isAndroid || isIos) ? true : false;
+      return bool;
+    },
+  },
+  methods: {
+    pay() {
+      this.isApp = this.$userAgent.isSzx || this.$userAgent.isSzxBrowser
+      if (this.isApp && this.$userAgent.isAndroid) {
+        window.native.startPurchase();
+      } else if (this.isApp && this.$userAgent.isIos) {
+        window.webkit.messageHandlers.startPurchase.postMessage({});
+      } else if (this.$userAgent.isMiniProgram) {
+        this.$wx.miniProgram.navigateTo({
+          url: '/package/purchase/purchase',
+        });
+      } else {
+        uni.navigateTo({
+          url: '/package/purchase/purchase',
+        });
+      }
+    },
+    goArticleDetails(item) {
+      this.$router.push({ path: '/introductionCloudPhone/articleDetails?token=needToken', query: { id: item.articleId } })
+    },
+    getSuggestApp() {
+      this.$axios.$post('/public/v1/market/getSuggestApp', {
+        pageNum: 1, pageSize: -1
+      }).then((res) => {
+        this.applicationList = res.data
+      });
+    },
+    selectApplication(name) {
+      this.searchText = name
+      this.search()
+    },
+    search() {
+      if (!this.searchText) return
+      this.appSeatchList.slice(0, this.appSeatchList.length)
+      this.isShow = false
+      this.$axios.$post('/public/v1/market/clientSearchSuggestApp', { pageSize: 100, pageNum: 1, appName: this.searchText }).then((res) => {
+        this.appSeatchList = res.data.list
+        this.appSeatchList.forEach(element => {
+          element.img = fileKeyToUrl(element.imageId)
+        });
+      });
+    },
+  },
+};
+</script>
+
+<style lang="less" scoped>
+.introduction {
+  height: 100%;
+  box-sizing: border-box;
+  .introduction-title {
+    margin-left: 10px;
+    font-family: PingFangSC, PingFang SC;
+    font-weight: 500;
+    font-size: 18px;
+    color: #cfd1d4;
+    font-style: normal;
+    margin-bottom: 24px;
+  }
+  .introduction-tips {
+    font-family: PingFangSC, PingFang SC;
+    font-weight: bold;
+    font-size: 14px;
+    color: #fefefe;
+    font-style: normal;
+  }
+
+  .introduction-search {
+    margin-top: 16px;
+    height: 42px;
+    width: 100%;
+    background: #2c2c2d;
+    border-radius: 8px;
+    border: 1px solid #545660;
+    display: flex;
+    align-items: center;
+    // padding: 12px 4px 4px 12px;
+    img {
+      margin: 12px 4px 12px 12px;
+      vertical-align: top;
+      width: 16px;
+    }
+    input {
+      // margin-top: 8px;
+      // vertical-align: top;
+      height: 42px;
+      line-height: 42px;
+      font-size: 14px;
+      color: #ffffff;
+      flex: 1;
+    }
+    div {
+      font-family: PingFangSC, PingFang SC;
+      font-weight: 500;
+      font-size: 14px;
+      color: #ffffff;
+      line-height: 34px;
+      width: 60px;
+      height: 34px;
+      background: linear-gradient(90deg, #38aefc 0%, #3b7fff 100%);
+      float: right;
+      text-align: center;
+      border-radius: 8px;
+      // margin: 4px 4px 0 0;
+      margin: 0 4px;
+    }
+  }
+
+  .application {
+    padding: 0 16px;
+    margin-top: 24px;
+    display: grid;
+    grid-gap: 16px;
+    grid-template-columns: repeat(3, 1fr);
+    & > div {
+      font-family: PingFangSC, PingFang SC;
+      font-weight: 400;
+      font-size: 14px;
+      color: #ffffff;
+      line-height: 20px;
+      text-align: center;
+      font-style: normal;
+      background: #2c2c2d;
+      border-radius: 14px;
+      padding: 11px 0;
+    }
+  }
+
+  .application-list {
+    width: 100%;
+    background: #2c2c2d;
+    border-radius: 12px;
+    color: #ffffff;
+    margin-bottom: 15px;
+
+    .application-list-top {
+      padding: 16px;
+    }
+    .application-list-img {
+      width: 42px;
+      margin-right: 8px;
+      border-radius: 12px;
+    }
+
+    .application-list-rigth {
+      display: inline-block;
+      overflow: hidden;
+    }
+    .application-list-title {
+      vertical-align: top;
+      font-weight: 500;
+      font-size: 14px;
+      color: #ffffff;
+      font-style: normal;
+      margin-right: 4px;
+
+      span {
+        font-family: PingFangSC, PingFang SC;
+        font-weight: 400;
+        font-size: 10px;
+        color: #3b7fff;
+        line-height: 14px;
+        text-align: left;
+        font-style: normal;
+      }
+    }
+
+    .application-list-tips {
+      font-family: PingFangSC, PingFang SC;
+      font-weight: 400;
+      font-size: 12px;
+      color: #999999;
+      line-height: 16px;
+      text-align: left;
+      font-style: normal;
+      margin-right: 4px;
+    }
+    .application-list-btn {
+      width: 82px;
+      height: 32px;
+      background: linear-gradient(90deg, #38aefc 0%, #3b7fff 100%);
+      border-radius: 8px;
+      color: #ffffff;
+      line-height: 32px;
+      padding: 0  0  0 8px;
+      float: right;
+      font-size: 10px;
+      img {
+        vertical-align: middle;
+        margin-top: -1px;
+      }
+    }
+
+    .application-list-bottom {
+      padding: 12px;
+      font-family: PingFangSC, PingFang SC;
+      font-weight: 400;
+      font-size: 14px;
+      color: #ffffff;
+      line-height: 20px;
+      text-align: left;
+      font-style: normal;
+      background: #333333;
+      border-radius: 0px 0px 12px 12px;
+    }
+  }
+
+  .application-default {
+    width: 100%;
+    text-align: center;
+    font-family: PingFangSC, PingFang SC;
+    font-weight: 400;
+    font-size: 12px;
+    color: #999999;
+    line-height: 18px;
+    font-style: normal;
+    margin-top: 42px;
+  }
+}
+
+.introduction-white {
+  .introduction-title {
+    color: #0a132b;
+  }
+  .introduction-tips {
+    color: #0a132b;
+  }
+
+  .introduction-search {
+    background: #ffffff;
+    border: 1px solid #ffffff;
+    input {
+      color: #0a132b;
+    }
+    div {
+      color: #ffffff;
+    }
+  }
+
+  .application {
+    & > div {
+      color: #0a132b;
+      background: #ffffff;
+    }
+  }
+
+  .application-list {
+    background: #ffffff;
+
+    .application-list-title {
+      color: #0a132b;
+      span {
+        color: #3b7fff;
+      }
+    }
+
+    .application-list-tips {
+      color: #666666;
+    }
+    .application-list-btn {
+      background: linear-gradient(90deg, #38aefc 0%, #3b7fff 100%);
+      color: #ffffff;
+      overflow: hidden;
+    }
+
+    .application-list-bottom {
+      color: #0a132b;
+      background: #edeef0;
+    }
+  }
+}
+</style>

+ 1 - 1
plugins/axios.js

@@ -15,7 +15,7 @@ export default function ({ $axios, $auth, $userAgent, query, redirect }) {
     } else {
       config.headers.client = 7;
     }
-    config.headers.versionname = '5.8.1'
+    config.headers.versionname = '5.8.2'
     return config;
   });
   $axios.onResponse(async (response) => {

+ 3 - 1
static/webRtcYJ/WXtrialInterface.html

@@ -38,6 +38,7 @@
   <link rel="stylesheet" href="../static/css/jquery-weui.min.css" />
   <!-- <link rel="stylesheet" href="../static/lib/swiper/swiper-bundle.min.css" />
     <script src="../static/lib/swiper/swiper-bundle.js"></script> -->
+  <!-- <script type="text/javascript" src="https://cdn.bootcss.com/vConsole/3.2.0/vconsole.min.js"></script> -->
   <script src="../static/lib/doT-1.1.3/doT.min.js"></script>
   <script src="../static/lib/qs.js"></script>
   <script src="../static/lib/copy-to-clipboard.js"></script>
@@ -386,6 +387,7 @@
     var username = parameters['username'];
     var connectStatus = parameters['connectStatus'];
     var isTips = +parameters['isTips'];
+    var isWeixin = +parameters['isWeixin'];
     var videoTimer = null,
       videoTime = 0,
       adType = 0,
@@ -1242,7 +1244,7 @@
     }
     let extranetIp, extranetPort, connectClearSetInterval, numberOfTimes = 1;
     function doConnectBusiness(res) {
-      if (isVideo && !isShowiPhoneWebRTC) {
+      if (isVideo && !isShowiPhoneWebRTC && !isWeixin) {
         var url0 = url[0]; //协议
         let ip = res.data.internetIp; //服务器拿到的ip
         let port = res.data.internetVideoPort; //服务器拿到的端口