Browse Source

更新购物车回调链接(默认打开热点)

tremble 3 years ago
parent
commit
acb7d02f0f
3 changed files with 56 additions and 28 deletions
  1. 14 3
      src/app.vue
  2. 37 25
      src/components/Tags/goods-list.vue
  3. 5 0
      src/utils/browser.js

+ 14 - 3
src/app.vue

@@ -54,7 +54,7 @@ import Information from "@/components/Information";
 import Control from "@/components/Controls/Control.Mobile.vue";
 import LoadingLogo from "@/components/shared/Loading.vue";
 import OpenVideo from "@/components/openVideo/";
-import Guide from '@/components/shared/Guide.vue'
+import Guide from "@/components/shared/Guide.vue";
 
 import { createApp } from "@/app";
 import { ref, onMounted, computed, nextTick, watch } from "vue";
@@ -68,6 +68,8 @@ const musicPlayer = useMusicPlayer();
 
 let app = null;
 
+let tagid = browser.getURLParam("tagid");
+
 const closetagtype = () => {
   store.commit("tag/setTagClickType", {
     type: "",
@@ -222,11 +224,11 @@ onMounted(async () => {
           let priceMin = isFinite(Math.min.apply(null, arr)) ? Math.min.apply(null, arr) : 0;
           let priceMax = isFinite(Math.max.apply(null, arr)) ? Math.max.apply(null, arr) : 0;
           let price = priceMin == priceMax ? priceMax : `${priceMin}-${priceMax}`;
-          let range = `${data.products[0]?data.products[0].symbol:'MOP$'} ${price}`;
+          let range = `${data.products[0] ? data.products[0].symbol : "MOP$"} ${price}`;
           return `<span class="tag-icon animate" style="background-image:url({{icon}})"></span>
                       <div class="tag-body">
                         <div data-id="${data.sid}" class="tag-commodity">
-                          <div  style="background-image:url(${data.products[0]?data.products[0].pic:''})" class='tag-avatar'>
+                          <div  style="background-image:url(${data.products[0] ? data.products[0].pic : ""})" class='tag-avatar'>
                           </div>
                           <p class="tag-title">${data.title}</p>
                           <p class="tag-info">${range} | 查看 ></p>
@@ -275,8 +277,17 @@ onMounted(async () => {
           e.target.querySelector(".tag-body").classList.add("show");
           e.target.querySelector(".tag-commodity").removeEventListener("click", onClickTagInfo);
           e.target.querySelector(".tag-commodity").addEventListener("click", onClickTagInfo);
+
+          if (tagid) {
+            document.querySelector(`[data-id="${tagid}"]`)&&document.querySelector(`[data-id="${tagid}"]`).click();
+            tagid = null;
+          }
         }
       });
+
+      view.on("rendered", (e) => {
+        tagid && view.focus(tagid);
+      }); //dom渲染完成
     });
 
   app.use("TourPlayer");

+ 37 - 25
src/components/Tags/goods-list.vue

@@ -11,8 +11,8 @@
       <div class="swiper-container" id="goodlist">
         <ul class="swiper-wrapper">
           <li class="swiper-slide" v-for="(i, index) in tagclick.data.products" :key="index">
-            <viewimg :list="i.pics" :keyid="`viewimg_${index+1}`"/>
-            
+            <viewimg :list="i.pics" :keyid="`viewimg_${index + 1}`" />
+
             <div class="info">
               <p>{{ i.name }}</p>
               <div v-if="i.skus">
@@ -72,11 +72,10 @@ import { onMounted, watch, toRaw, computed, defineEmits, ref, defineProps, nextT
 import { useApp, getApp } from "@/app";
 import { useStore } from "vuex";
 import * as apis from "@/apis/index.js";
-import { Loading,Dialog } from "@/global_components/";
+import { Loading, Dialog } from "@/global_components/";
 import browser from "@/utils/browser";
 import viewimg from "@/views/viewimg";
 
-
 // get_product_info
 const store = useStore();
 
@@ -86,11 +85,9 @@ const emit = defineEmits(["close"]);
 
 const current = ref(0);
 
-
-
 const viewDetail = (item) => {
-    apis.burying_point({type:3});
-    browser.openLink(`/pages/item/item?productId=${item.id}`,`https://m.cdfmembers.com/shop/600667208/item?productId=${item.id}`)
+  apis.burying_point({ type: 3 });
+  browser.openLink(`/pages/item/item?productId=${item.id}`, `https://m.cdfmembers.com/shop/600667208/item?productId=${item.id}`);
 };
 
 const onClickSku = (item) => {
@@ -116,27 +113,43 @@ const addCart = async (item) => {
     num: item.cartnum,
   });
 
-
   Loading.hide();
-  if (result.data.status==200) {
-   return Dialog.toast({ content: `添加成功`, type: 'success' })
-  } else{
-  //  Dialog.toast({ content: `登录状态失效,请重新登录`, type: 'error' })
-    browser.openLink(`/pages/login/login`,`https://m.cdfmembers.com/shop/600667208/h5login?redirectUrl=${encodeURIComponent(window.location.href)}`)
-   return
+  if (result.data.status == 200) {
+    return Dialog.toast({ content: `添加成功`, type: "success" });
+  } else {
+    let callbackUrl = "";
+    if (!browser.hasURLParam("pose")) {
+      callbackUrl = window.location.href + `&${getApp().Camera.getPoseUrlParams()}`;
+    } else {
+      callbackUrl = browser.replaceQueryString(window.location.href, "pose", getApp().Camera.getPoseUrlParams().replace("pose=", ""));
+    }
+
+    if (!browser.hasURLParam("tagid")) {
+      callbackUrl += `&tagid=${tagclick.value.data.sid}`;
+    } else {
+      callbackUrl = browser.replaceQueryString(callbackUrl, "tagid", tagclick.value.data.sid);
+    }
+
+    console.log(callbackUrl);
+    //  Dialog.toast({ content: `登录状态失效,请重新登录`, type: 'error' })
+    browser.openLink(
+      `/pages/login/login?callbackHttpUrl=${encodeURIComponent(callbackUrl)}`,
+      `https://m.cdfmembers.com/shop/600667208/h5login?redirectUrl=${encodeURIComponent(callbackUrl)}`,
+      `/pages/login/login?callbackHttpUrl=${encodeURIComponent(callbackUrl)}`
+    );
+    return;
   }
-  
 };
 
-const close = ()=>{
-    emit('close')
-}
+const close = () => {
+  emit("close");
+};
 
 const updateProductsById = async (idx) => {
-  if(!tagclick.value.data.products[idx]){
-    Dialog.toast({ content: `获取商品详情失败,请稍后再试`, type: 'error' })
-    close()
-    return
+  if (!tagclick.value.data.products[idx]) {
+    Dialog.toast({ content: `获取商品详情失败,请稍后再试`, type: "error" });
+    close();
+    return;
   }
   Loading.show();
   let res = await apis.get_product_info({
@@ -258,8 +271,7 @@ onMounted(() => {
         overflow: hidden;
         background: #fff;
         padding-bottom: 14px;
-        
-      
+
         .info {
           font-size: 14px;
           color: #131d34;

+ 5 - 0
src/utils/browser.js

@@ -352,6 +352,11 @@ var browser = {
     }
     return "";
   },
+
+  replaceQueryString (url, name, value) {
+    const re = new RegExp(name + '=[^&]*', 'gi')
+    return url.replace(re, name + '=' + value)
+  },
   openLink(mglink, h5link, appLink) {
     if (this.detectWeixin()) {
       //ios的ua中无miniProgram,但都有MicroMessenger(表示是微信浏览器)