Sfoglia il codice sorgente

Merge branch 'dev' into xqy_h5

谢杰标 2 anni fa
parent
commit
52586a65ce

+ 0 - 14
App.vue

@@ -1,16 +1,11 @@
 <script>
 import plv from "./pages3/static/polyv-sdk/index";
-// #ifdef H5
-import vconsole from "vconsole";
-// #endif
 export default {
   onLaunch: function (option) {
     let inviteCode = option.inviteCode;
     if (inviteCode && inviteCode != "") {
-      console.log(inviteCode);
       uni.setStorageSync("inviteCode", inviteCode);
     }
-    console.log(plv);
     plv.setApp({
       apiId: "ezl5uy4zei",
       apiSecret: "2bf5bb3c31d34531943df10284edd50b",
@@ -20,15 +15,6 @@ export default {
   methods: {},
   onShow: function (option) {
     this.$store.commit("setScene", option.scene || 0);
-    // #ifdef H5
-    if (process.env.NODE_ENV === "development") {
-      console.log("开发环境");
-      const consoleObj = new vconsole();
-    } else {
-      // console.log('生产环境')
-      // const consoleObj = new vconsole()
-    }
-    // #endif
   },
   onHide: function () {
     uni.$emit("playPause");

+ 8 - 2
common/config.js

@@ -4,10 +4,10 @@ const test = {
   BASE_IMG_URL: "https://file-dev.xyyxt.net/",
   domain: "h.xyyxt.net",
   tenantId: "867735392558919680", //详粤云学堂
-  appid: "wxd3c8ae80cf43a305"
+  appid: "wxd3c8ae80cf43a305",
 };
 const index = 0; // 测试环境
-// const index = 1 // 祥粤云学堂
+// const index = 1; // 祥粤云学堂
 // const index = 2 // 祥粤学堂
 // const index = 3 // 勘设云学堂
 // const index = 4 // 中正云学堂
@@ -56,3 +56,9 @@ const set = [
   },
 ];
 export default set[index];
+// #ifdef H5
+import vconsole from "vconsole";
+if (index == 0) {
+  new vconsole();
+}
+// #endif

+ 8 - 1
common/httpList/system.js

@@ -10,5 +10,12 @@ export default {
 			noToken: true
 		})
 	},
-	
+	getWxConfig(data) {
+		return myRequest({
+			url: '/app/common/wx/config',
+			method: 'get',
+			data: data,
+			noToken: true
+		})
+	},
 }

+ 14 - 1
common/httpList/wxpay.js

@@ -25,5 +25,18 @@ export default {
 			data: data
 		})
 	},
-	
+	checkBindGzh(data) {
+		return myRequest({
+			url: '/app/user/checkBindGzh',
+			method: 'get',
+			data: data
+		})
+	},
+	OfficialLogin(data) {
+		return myRequest({
+			url: '/app/user/gzh_bind',
+			method: 'post',
+			data: data
+		})
+	},
 }

+ 1 - 1
common/methodTool.js

@@ -641,5 +641,5 @@ export default {
     let domain =
       /^([\w-]+\.)+((com)|(net)|(org)|(gov\.cn)|(info)|(cc)|(com\.cn)|(net\.cn)|(org\.cn)|(name)|(biz)|(tv)|(cn)|(mobi)|(name)|(sh)|(ac)|   (io)|(tw)|(com\.tw)|(hk)|(com\.hk)|(ws)|(travel)|(us)|(tm)|(la)|(me\.uk)|(org\.uk)|(ltd\.uk)|(plc\.uk)|(in)|(eu)|(it)|(jp))$/;
     return domain.test(str);
-  },
+  }
 };

+ 30 - 14
common/navTo.js

@@ -1,18 +1,34 @@
-const togo = function(url, data) {
-	url += (url.indexOf('?') < 0 ? '?' : '&') + param(data)
-	
-	uni.navigateTo({
-		url: url
-	})
-}
+const togo = function (url, data) {
+  url += (url.indexOf("?") < 0 ? "?" : "&") + param(data);
+
+  uni.navigateTo({
+    url: url,
+  });
+};
 
 export function param(data) {
-	let url = ''
-	for (var k in data) {
-		let value = data[k] !== undefined ? data[k] : ''
-		url += '&' + k + '=' + encodeURIComponent(value)
-	}
-	return url ? url.substring(1) : ''
+  let url = "";
+  for (var k in data) {
+    let value = data[k] !== undefined ? data[k] : "";
+    url += "&" + k + "=" + encodeURIComponent(value);
+  }
+  return url ? url.substring(1) : "";
+}
+
+export function getQueryString(name) {
+  const url = location.search; //获取url中"?"符后的字串
+  let theRequest = new Object();
+  if (url.indexOf("?") != -1) {
+    let str = url.substr(1);
+    let strs = str.split("&");
+    for (let i = 0; i < strs.length; i++) {
+      theRequest[strs[i].split("=")[0]] = unescape(strs[i].split("=")[1]);
+    }
+  }
+  if (name) {
+    return theRequest[name];
+  }
+  return theRequest;
 }
 
-export {togo}
+export { togo };

+ 48 - 0
index.html

@@ -0,0 +1,48 @@
+<!DOCTYPE html>
+<html lang="zh-CN">
+  <head>
+    <meta charset="utf-8" />
+    <meta http-equiv="X-UA-Compatible" content="IE=edge" />
+    <title><%= htmlWebpackPlugin.options.title %></title>
+    <!-- Open Graph data -->
+    <!-- <meta property="og:title" content="Title Here" /> -->
+    <!-- <meta property="og:url" content="http://www.example.com/" /> -->
+    <!-- <meta property="og:image" content="http://example.com/image.jpg" /> -->
+    <!-- <meta property="og:description" content="Description Here" /> -->
+    <script>
+      var coverSupport =
+        "CSS" in window &&
+        typeof CSS.supports === "function" &&
+        (CSS.supports("top: env(a)") || CSS.supports("top: constant(a)"));
+      document.write(
+        '<meta name="viewport" content="width=device-width, user-scalable=no, initial-scale=1.0, maximum-scale=1.0, minimum-scale=1.0' +
+          (coverSupport ? ", viewport-fit=cover" : "") +
+          '" />'
+      );
+    </script>
+    <link
+      rel="stylesheet"
+      href="<%= BASE_URL %>static/index.<%= VUE_APP_INDEX_CSS_HASH %>.css"
+    />
+    <link rel="stylesheet" href="<%= BASE_URL %>static/adapt-pc/pc.css" />
+  </head>
+  <body>
+    <noscript>
+      <strong>Please enable JavaScript to continue.</strong>
+    </noscript>
+    <div id="app"></div>
+    <!-- built files will be auto injected -->
+    <uni-adapt-pc></uni-adapt-pc>
+    <!--  -->
+    <script type="text/html" id="tpl-adapt-pc">
+      <div class="container">
+        <iframe src="helang-mobile-href"></iframe>
+      </div>
+    </script>
+
+    <script
+      type="text/JavaScript"
+      src="<%= BASE_URL %>static/adapt-pc/pc.js"
+    ></script>
+  </body>
+</html>

+ 2 - 2
manifest.json

@@ -105,7 +105,7 @@
         "enable" : false
     },
     "h5" : {
-        "title" : "祥粤云学堂",
+        "title" : "",
         "domain" : "",
         "router" : {
             "base" : "",
@@ -118,7 +118,7 @@
                 }
             }
         },
-        "template" : "",
+        "template" : "index.html",
         "devServer" : {
             "https" : false
         }

+ 1 - 1
pages.json

@@ -3,7 +3,7 @@
 		{
 			"path": "pages/index/index",
 			"style": {
-				"navigationBarTitleText": "云学堂",
+				"navigationBarTitleText": "首页",
 				"onReachBottomDistance": 50,
 				"app-plus": {
 					"titleNView": false //禁用原生导航栏  

+ 0 - 24
pages/index/index.vue

@@ -446,30 +446,6 @@ export default {
     });
   },
   onShow() {
-    // #ifdef H5
-    if (location.search) {
-      console.log("url值:", location.search);
-      let arrs = location.search.slice(1).split("&");
-      for (let i = 0; i < arrs.length; i++) {
-        this.optObj[arrs[i].split("=")[0]] = arrs[i].split("=")[1];
-      }
-      console.log("获取的optObj:", this.optObj);
-      uni.setStorageSync("h5_code", this.optObj.code);
-      this.OfficialLogin();
-    } else {
-      // 没有code,就重定向到地址https://www.xyyxt.net?ask_type=h.xyyxt.net 去获取code,授权后就会把code带上然后访问域名
-      // h.gdzzkj.net
-      // !uni.getStorageSync("h5_code") &&
-      if (process.env.NODE_ENV !== "development") {
-        location.replace(
-          "https://" +
-            window.location.host +
-            "/?ask_type=" +
-            window.location.host
-        );
-      }
-    }
-    // #endif
     this.getInfo(); // 判断有没有关注公众号
     this.isClickOff(); //关注公众号,每天最多显示1次;当天学员关闭弹窗后,无需再显示
     uni.removeStorageSync("goPath");

+ 6 - 0
pages/questionBank/index.vue

@@ -158,6 +158,12 @@ export default {
   },
   onLoad(options) {
     this.options = options;
+    if (this.options.isAct && !this.$method.isLogin()) {
+      uni.navigateTo({
+        url: "/pages4/login/login?isBack=" + true + "&isAct=1",
+      });
+      return;
+    }
   },
   async onShow() {
     if (this.options.skipPort) {

+ 3 - 3
pages/wd/index.vue

@@ -1,5 +1,5 @@
 <template>
-  <view>
+  <view style="height:100%">
     <!-- <image mode="widthFix" :src="isLogin ? '/static/wd_bg_login.jpg' : '/static/wd_bg.jpg'" :class="isLogin ? 'login_full_img' : 'full_img'"></image> -->
     <u-navbar
       :is-back="false"
@@ -269,6 +269,7 @@ export default {
   color: transparent;
 }
 page {
+  height: 100%;
   background-color: #f0f1f5;
 }
 </style>
@@ -376,10 +377,9 @@ page {
 }
 .loginBox {
   position: relative;
-  padding: 0 30rpx 50rpx 30rpx;
+  padding: 0 30rpx 150rpx 30rpx;
   top: 430rpx;
   width: 100%;
-  height: 100%;
   margin-top: 30rpx;
   .contents {
     width: 100%;

+ 61 - 15
pages2/order/confirm_pay.vue

@@ -108,6 +108,7 @@
 
 <script>
 import { mapGetters } from "vuex";
+import { getQueryString } from "../../common/navTo";
 import ClassTimeTip from "../../components/common/ClassTimeTip.vue";
 export default {
   data() {
@@ -138,28 +139,65 @@ export default {
       fromCart: "",
       hasPaying: false,
       showConfirmButton: false,
-      totalPrice: 0,
       confirmText: "",
     };
   },
   onPullDownRefresh() {},
   onLoad(option) {
-    console.log(this.sac, 666);
-    let self = this;
     this.fromCart = option.fromCart;
-    console.log(self.shoppingCartList, 6);
-    let list = self.shoppingCartList;
-    console.log(list, 66);
     this.isBK = option.isBK;
-    for (let i = 0; i < list.length; i++) {
-      this.totalPrice += Number(list[i].standPrice);
-    }
-    console.log(this.isBK == "1");
   },
-  onShow() {},
+  onShow() {
+    // #ifdef H5
+    this.authorize();
+    // #endif
+  },
   methods: {
+    authorize() {
+      if (location.search.includes("code")) {
+        const code = getQueryString("code");
+        this.$store.commit("setShoppingCartList", {
+          shoppingCartList: uni.getStorageSync("shopList"),
+        });
+        uni.setStorageSync("h5_code", code);
+        this.OfficialLogin(code);
+      } else {
+        // 没有code,就重定向到地址https://www.xyyxt.net?ask_type=https://api.xyyxt.net/pages2/order/confirm_pay 去获取code,授权后就会把code带上然后访问域名
+        // ?fromCart=&code=061F5a1w3aolh03SLe1w3sMsCF4F5a16&state=STATE
+        this.$api.checkBindGzh().then((res) => {
+          if (!res.data.data && process.env.NODE_ENV !== "development") {
+            uni.setStorageSync("shopList", this.shoppingCartList);
+            const url = window.location.host + "/pages2/order/confirm_pay";
+            // 跳自己授权
+            if (this.config.gzhSelfLicense) {
+              this.$api.getWxConfig().then((res) => {
+                location.replace(
+                  `https://open.weixin.qq.com/connect/oauth2/authorize?appid=${
+                    res.data.data.gzhAppId
+                  }&redirect_uri=${encodeURIComponent(
+                    "https://" + url
+                  )}&response_type=code&scope=snsapi_userinfo&state=STATE#wechat_redirect`
+                );
+              });
+            } else {
+              location.replace("https://www.xyyxt.net/?ask_type=" + url);
+            }
+          }
+        });
+      }
+    },
+    OfficialLogin(code) {
+      this.$api
+        .OfficialLogin({
+          code,
+        })
+        .then((res) => {
+          if (res.data.code !== 200) {
+            this.$u.toast(res.data.msg);
+          }
+        });
+    },
     postOrder() {
-      console.log(12312312321);
       let list = this.shoppingCartList;
       for (let i = 0; i < list.length; i++) {
         let item = list[i];
@@ -403,11 +441,19 @@ export default {
     },
   },
   onReachBottom() {},
-  computed: { ...mapGetters(["userInfo", "shoppingCartList", "sac"]) },
+  computed: {
+    ...mapGetters(["userInfo", "shoppingCartList", "sac", "config"]),
+    totalPrice() {
+      return this.shoppingCartList.reduce(
+        (a, b) => a + Number(b.standPrice),
+        0
+      );
+    },
+  },
   components: { ClassTimeTip },
 };
 </script>
-<style >
+<style>
 ::-webkit-scrollbar {
   width: 0;
   height: 0;
@@ -576,4 +622,4 @@ page {
     color: #fff;
   }
 }
-</style>
+</style>

+ 2 - 2
pages2/register/register.vue

@@ -39,7 +39,7 @@
               v-model="form.pwd"
               type="password"
               placeholder-style="color:#999999"
-              placeholder="请输入登录密码"
+              placeholder="请设置登录密码"
           /></u-form-item>
           <u-form-item prop="idcard" v-if="!isAct"
             ><u-input
@@ -624,7 +624,7 @@ export default {
         pwd: [
           {
             required: true,
-            message: "请输入密码",
+            message: "请设置密码",
             // 可以单个或者同时写两个触发验证方式
             trigger: ["change"],
           },

+ 19 - 6
pages3/course/detail.vue

@@ -270,7 +270,7 @@
     </view>
 
     <view class="bottomBox" v-if="!hideBuyState">
-      <template v-if="!isAct">
+      <template v-if="!options.isAct">
         <view class="icons">
           <view class="icon_item ones">
             <image src="/static/index/share.png" class="share"></image>
@@ -449,7 +449,7 @@ export default {
       checkedAttrs: [],
       selectGoodIndex: 0,
       specAttrPriceList: [],
-      isAct: undefined, //活动 区分是否隐藏身份证注册
+      options: {},
     };
   },
   computed: {
@@ -484,7 +484,6 @@ export default {
     },
   },
   onLoad(option) {
-    console.log("option:", option);
     if (option.scene) {
       // scene 生成二维码扫码进来的
       let optObj = {};
@@ -505,7 +504,7 @@ export default {
       // this.id => goodsId
       this.id = option.id;
       this.goodsType = option.goodsType || option.gt;
-      this.isAct = option.isAct;
+      this.options = option;
       if (option.sac) {
         uni.setStorageSync("shareActivityCode", option.sac);
         if (this.$method.isLogin()) {
@@ -949,7 +948,7 @@ export default {
     drawBuy() {
       if (!this.$method.isLogin()) {
         uni.navigateTo({
-          url: "/pages4/login/login?isBack=" + true + "&isAct=" + this.isAct,
+          url: "/pages4/login/login?isBack=" + true + "&isAct=1",
         });
         return;
       }
@@ -957,10 +956,24 @@ export default {
         .drowActGoods({
           url: location.href,
           goodsList: [this.detail],
+          sellerName: this.options.sale,
         })
         .then((res) => {
           if (res.data.code == 200) {
-            this.$u.toast("领取成功");
+            // this.$u.toast("领取成功");
+            uni.showModal({
+              title: "提示",
+              content: "领取成功,是否现在去做题?",
+              cancelText: "取消",
+              confirmText: "确定",
+              success: (res) => {
+                if (res.confirm) {
+                  uni.switchTab({
+                    url: "/pages/questionBank/index",
+                  });
+                }
+              },
+            });
           } else {
             this.$u.toast(res.data.msg);
           }

+ 5 - 2
pages4/login/login.vue

@@ -229,14 +229,17 @@ export default {
       shareActivityCode: "", // 用户扫码进来详情页获取的
       isBack: false,
       isDualAuth: false,
-      isAct: undefined,
+      isAct: "",
     };
   },
   onLoad(option) {
     if (option.isBack) {
       this.isBack = option.isBack;
     }
-    this.isAct = option.isAct;
+    if (option.isAct) {
+      this.isAct = option.isAct;
+    }
+
     if (uni.getStorageSync("newUser_sc")) {
       this.newUser_sc = uni.getStorageSync("newUser_sc");
     }

+ 113 - 25
pages5/scan/examact.vue

@@ -2,20 +2,36 @@
   <view class="examact">
     <view class="examact-tname">{{ tenantInfo.name }}</view>
     <img
-      :src="$method.splitImgHost('oss/images/file/20230317/1679036853309.png')"
+      :src="$method.splitImgHost('oss/images/file/20230320/1679298401443.png')"
       alt=""
       srcset=""
     />
     <view class="examact-btn" @click="collectMerch"> 点击领取真题题库 </view>
-    <img
-      class="examact-qrcode"
-      :src="'../../static/qrcode/' + tenantInfo.qrcodeUrl"
-      alt=""
-      srcset=""
-    />
-    <view class="examact-phone" v-if="tenantInfo.phone">{{
-      tenantInfo.phone
-    }}</view>
+
+    <view class="examact-phone" v-if="tenantInfo.phone">
+      报名热线:
+      <view>{{ tenantInfo.phone1 }}</view>
+      <view>{{ tenantInfo.phone2 }}</view>
+    </view>
+    <view class="examact-qrcode">
+      <tki-qrcode
+        :show="true"
+        :size="160"
+        cid="qrcode1"
+        ref="qrcode"
+        :val="val"
+        :showLoading="false"
+        :loadMake="true"
+        :usingComponents="true"
+      />
+
+      <img
+        class="examact-qrcode111"
+        :src="'../../static/qrcode/' + tenantInfo.qrcodeUrl"
+        alt=""
+        srcset=""
+      />
+    </view>
   </view>
 </template>
 
@@ -24,63 +40,94 @@ const map = {
   "test.jqbao.net": {
     name: "测试云学堂",
     qrcodeUrl: "hnjsxt_act.png",
+    goodsId: "7722",
   },
-  "120.79.166.78:19012": {
+  "120.79.166.78:19006": {
     name: "广东省祥粤建设职业培训学校",
     qrcodeUrl: "h_act.png",
-    phone: "报名热线: 020-87085982/87085983",
+    phone: true,
+    phone1: "020-87085982",
+    phone2: "020-87085983",
+    goodsId: "16370",
   },
   "h.xyyxt.net": {
     name: "广东省祥粤建设职业培训学校",
     qrcodeUrl: "h_act.png",
-    phone: "报名热线: 020-87085982/87085983",
+    phone: true,
+    phone1: "020-87085982",
+    phone2: "020-87085983",
+    goodsId: "7798",
   },
   "www.hnjsxt.cn": {
     name: "企帮(广州)工程建设咨询服务有限公司",
     qrcodeUrl: "hnjsxt_act.png",
     scheme: "http://",
+    learnUrl: "",
+    goodsId: "8673",
   },
   "zsh5.zzyxt.net": {
     name: "中山市勘设工程咨询有限公司",
     qrcodeUrl: "zsh5_act.png",
+    goodsId: "8678",
   },
   "zh5.zzyxt.net": {
     name: "肇庆市建筑业协会",
     qrcodeUrl: "zh5_act.png",
+    goodsId: "8677",
+    phone: true,
+    phone1: "0758—2285500",
+    phone2: "13600220253",
   },
   "sdyxt.gdzzkj.net": {
     name: "佛山市顺德区市政建设工程协会",
     qrcodeUrl: "sdyxt_act.png",
+    goodsId: "8673",
   },
   "mh5.zzyxt.net": {
     name: "茂名市建设培训学校",
     qrcodeUrl: "mh5_act.png",
+    goodsId: "8679",
   },
   "sxh5.zzyxt.net": {
     name: "山西晋锦建族教育咨询有限公司",
     qrcodeUrl: "sxh5_act.png",
+    goodsId: "8676",
   },
-  "yf.zzyxt.net": {
+  "yfh5.zzyxt.net": {
     name: "云浮市建筑业协会",
     qrcodeUrl: "yf_act.png",
+    goodsId: "8672",
+  },
+  "h.kw-xy.com": {
+    name: "深圳市凯文云学堂",
+    qrcodeUrl: "kw-xy.png",
+    goodsId: "8680",
   },
 };
 import { actCheck } from "../../common/httpList/act";
+import tkiQrcode from "tki-qrcode";
+import { tenantId, BASE_URL } from "@/common/request.js";
 export default {
   name: "SaasMiniprogramExamact",
   data() {
     return {
-      goodsId: "16370",
+      goodsId: "",
       goodsType: "2",
       example:
         "http://localhost:8080/pages5/scan/examact?jump=www.hnjsxt.cn/detail/6",
       jump: undefined,
+      sale: "",
       tenantInfo: {},
+      t: "",
     };
   },
   onLoad(option) {
     this.jump = option.jump;
+    this.sale = option.sale;
     this.tenantInfo = this.backInfo();
+    this.goodsId = this.tenantInfo.goodsId;
+    this.t = option.t;
+    this.t && this.statistics();
   },
   methods: {
     collectMerch() {
@@ -88,14 +135,15 @@ export default {
         if (res.data.code === 200) {
           //跳转去对应域名
           this.toDatail();
+        } else {
+          this.$u.toast(res.data.msg);
         }
       });
     },
     toDatail() {
       if (this.jump) {
-        window.location.href = this.tenantInfo.scheme
-          ? this.tenantInfo.scheme
-          : "https://" + this.jump;
+        window.location.href =
+          this.scheme + this.jump + "?sale=" + (this.sale || "");
         return;
       }
       uni.navigateTo({
@@ -104,6 +152,8 @@ export default {
           this.goodsId +
           "&goodsType=" +
           this.goodsType +
+          "&sale=" +
+          (this.sale || "") +
           "&isAct=" +
           1,
       });
@@ -112,9 +162,35 @@ export default {
       let domain = this.jump ? this.jump.split("/")[0] : window.location.host;
       domain = this.$method.checkDomain(domain)
         ? domain
-        : "120.79.166.78:19012";
+        : "120.79.166.78:19006";
       return map[domain];
     },
+    statistics() {
+      uni.request({
+        url: BASE_URL + "/app/common/save/activity/record/" + this.t,
+        method: "get",
+        header: {
+          TenantId: tenantId,
+        },
+        success: (res) => {},
+        fail: (err) => {},
+      });
+    },
+  },
+  components: {
+    tkiQrcode,
+  },
+  computed: {
+    scheme() {
+      return this.tenantInfo.scheme || "https://";
+    },
+    val() {
+      return (
+        this.scheme +
+        (this.jump ||
+          window.location.host + "/pages/questionBank/index?isAct=1")
+      );
+    },
   },
 };
 </script>
@@ -137,7 +213,7 @@ export default {
     width: 620rpx;
     height: 102rpx;
     position: absolute;
-    top: 806rpx;
+    top: 786rpx;
     left: 50%;
     margin-left: -310rpx;
     background: linear-gradient(90deg, #1762ff 0%, #4af7da 100%);
@@ -150,18 +226,30 @@ export default {
     font-size: 36rpx;
   }
   .examact-qrcode {
-    width: 180rpx;
-    height: 180rpx;
+    width: 396rpx;
+    display: flex;
     position: absolute;
+    justify-content: space-between;
     right: 32rpx;
-    bottom: 52rpx;
+    bottom: 122rpx;
+    img {
+      width: 180rpx;
+      height: 180rpx;
+    }
+    view {
+      background: #ffffff;
+      width: 180rpx;
+      height: 180rpx;
+      padding: 10rpx;
+    }
   }
   .examact-phone {
     position: absolute;
-    bottom: 52rpx;
+    bottom: 46rpx;
     left: 33rpx;
     color: #222222;
-    font-size: 28rpx;
+    font-size: 30rpx;
+    line-height: 40rpx;
   }
 }
 </style>

+ 37 - 0
static/adapt-pc/pc.css

@@ -0,0 +1,37 @@
+
+body[adapt='pc']>*{
+	display: none !important;
+}
+ 
+body[adapt='pc']>uni-adapt-pc{
+	display: block !important;
+}
+ 
+body[adapt='pc'] {
+	margin: 0;
+	background-color: #fff;
+	width: 100vw;
+	height: 100vh;
+}
+ 
+body[adapt='pc'] uni-adapt-pc .container{
+	position: fixed;
+	width: 375px;
+	height: 100%;
+	z-index: 1;
+	top: 0;
+	right: 0;
+	bottom: 0;
+	left: 0;
+	margin: auto;
+	max-height: 680px;
+	box-sizing: border-box;
+	border: 1px solid #ddd;
+	box-shadow: 0 0 10px #ddd;
+}
+ 
+body[adapt='pc'] uni-adapt-pc iframe{
+	width: 100%;
+	height: 100%;
+	border: none;
+}

+ 9 - 0
static/adapt-pc/pc.js

@@ -0,0 +1,9 @@
+;(function(){
+	if(window.innerWidth < 768){
+		return;
+	}
+	var tpl = document.querySelector("#tpl-adapt-pc").innerHTML || '';
+	tpl = tpl.replace('helang-mobile-href',window.location.href);
+	document.querySelector("uni-adapt-pc").innerHTML = tpl;
+	document.body.setAttribute("adapt","pc");
+})();

BIN
static/qrcode/kw-xy.png