Browse Source

更新需求

tremble 3 years ago
parent
commit
385afab0e3

+ 2 - 1
src/app.vue

@@ -1,7 +1,7 @@
 <template>
   <LoadingLogo v-if="hadVideo" :thumb="true" />
   <OpenVideo v-else @close="hadVideo = true" />
-    <Guide />
+  <Guide />
 
   <div class="ui-view-layout" :class="{ show: show }" is-mobile="true">
     <div class="scene" ref="scene$"></div>
@@ -195,6 +195,7 @@ onMounted(async () => {
     mobile: true,
     isLoadTags: false,
     scene: {
+      markerOpacity: 1,
       markerURL: "https://eurs3.4dkankan.com/cdf/file/43aa29799bfd472298a47cc6370b10cc.png",
     },
   });

File diff suppressed because it is too large
+ 12 - 0
src/assets/images/icon/help.svg


+ 11 - 7
src/components/Controls/Panel/Main.vue

@@ -1,6 +1,6 @@
 <template>
   <Panel v-show="player.showWidgets" :isOpen="isOpen" >
-    <div @click="hanldeOpen" class="menu color">
+    <div @click="toggleOpen" class="menu color">
       <div class="logo">
         <img :src="require('@/assets/images/icon/logo.png')" alt="" />
         <p>CDF澳門上葡京</p>
@@ -78,11 +78,8 @@ const store = useStore();
 
 const isOpen = ref(false);
 
-const hanldeOpen = ()=>{
-  isOpen.value = true
-  setTimeout(() => {
-    isOpen.value = false
-  }, 200);
+const toggleOpen = ()=>{
+  isOpen.value = !isOpen.value
 }
 
 const currentCategory = ref({
@@ -93,7 +90,6 @@ const currentCategory = ref({
 const currentM = computed(()=>(browser.getURLParam("m")))
 const currentPose = computed(()=>(browser.getURLParam("pose")))
 
-console.log(currentPose.value,'=============================');
 
 const isPlay = computed(() => {
   let status = store.getters["tour/isPlay"];
@@ -130,6 +126,11 @@ const tours = computed(() => store.getters["tour/tours"]);
 const menulist = computed(() => {
   let fff = [
     {
+      icon: "help",
+      id: "help",
+      name: "幫助",
+    },
+    {
       icon: "customer_service",
       id: "kefu",
       name: "客服",
@@ -247,6 +248,9 @@ const onClickMenu = (item) => {
 
   } else if (item.id == "shopping") {
     browser.openLink("/subPackage/pages/shoppingcart/shoppingcart", "https://m.cdfmembers.com/shop/600667208/shoppingcart", "/pages/shoppingcart/main");
+  } else if (item.id == "help") {
+    store.commit("showUserGuide", true);
+
   }
 };
 

+ 9 - 4
src/components/Tags/goods-list.vue

@@ -6,7 +6,7 @@
           <span>{{ current + 1 }}</span
           ><span>/{{ tagclick.data.products ? tagclick.data.products.length : "-" }}</span>
         </div>
-        <ui-icon @click.stop="emit('close')" type="state_f"></ui-icon>
+        <ui-icon @click.stop="close" type="state_f"></ui-icon>
       </div>
       <div class="swiper-container" id="goodlist">
         <ul class="swiper-wrapper">
@@ -86,6 +86,8 @@ 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}`)
@@ -121,18 +123,21 @@ const addCart = async (item) => {
   } else{
    Dialog.toast({ content: `登录状态失效,请重新登录`, type: 'error' })
    setTimeout(() => {
-    browser.openLink(`/pages/login/login`)
+    browser.openLink(`/pages/login/login`,`https://m.cdfmembers.com/shop/600667208/h5login?redirectUrl=${encodeURIComponent(window.location.href)}`)
    }, 700);
    return
   }
   
 };
 
+const close = ()=>{
+    emit('close')
+}
+
 const updateProductsById = async (idx) => {
-  console.log();
   if(!tagclick.value.data.products[idx]){
     Dialog.toast({ content: `获取商品详情失败,请稍后再试`, type: 'error' })
-    emit('close')
+    close()
     return
   }
   Loading.show();

+ 2 - 2
src/components/Tags/treasure.vue

@@ -6,7 +6,7 @@
         <img :src="require('@/assets/images/icon/gifts_on.png')" alt="" />
         <div @click.stop="goto_now" class="btn">立即前往</div>
       </div>
-      <ui-icon class="close" @click.stop="emit('close')" type="state_f"></ui-icon>
+      <ui-icon class="close" @click.stop="emit('close')" type="close"></ui-icon>
 
     </div>
   </transition>
@@ -96,7 +96,7 @@ const goto_now = () => {
     right: 30px;
     font-size: 20px;
     top: 50px;
-    color: #000;
+    color: #fff;
   }
 }
 </style>

+ 9 - 2
src/components/Tags/waterfall.vue

@@ -77,8 +77,8 @@ const gotoGoods = (item) => {
     .wfcon {
       color: #fff;
       width: 100%;
-      padding-left: 10%;
-      max-height: 35vh;
+      padding-left: 6%;
+      max-height: 50vh;
       overflow-y: auto;
       > li {
         display: flex;
@@ -88,6 +88,7 @@ const gotoGoods = (item) => {
         > span {
           display: inline-block;
           width: 20px;
+          flex-shrink: 0;
         }
         .wfavatar {
           width: 36px;
@@ -100,8 +101,14 @@ const gotoGoods = (item) => {
         }
         .wfinfo {
           text-align: left;
+          width: calc(90% - 60px);
           > p {
             font-size: 16px;
+            text-overflow: ellipsis;
+            overflow: hidden;
+            white-space: nowrap;
+            display: inline-block;
+            width: 100%;
             &:last-of-type {
               color: rgba(255, 255, 255, 0.8);
               font-size: 12px;

+ 3 - 2
src/components/openVideo/index.vue

@@ -3,7 +3,7 @@
     <div class="open-video">
       <!-- <div class="vmask"></div> -->
       <video x5-playsinline="true" playsinline="true" webkit-playsinline="true" class="video" ref="openvideo$" preload autoplay :src="videourl"></video>
-      <div v-show="videourl" @click.stop="countdown==0&&emit('close')" class="jump">{{countdown>0?countdown+'秒後可跳過':'跳過'}}</div>
+      <div v-show="videourl" @click.stop="countdown==0&&emit('close')" class="jump">{{countdown>0?countdown+'s 後可跳過視頻':'跳過'}}</div>
       <img v-show="videourl && bofanging" @click.stop="bofang" class="bofang" :src="require('@/assets/images/icon/bofang.png')" alt="" />
     </div>
   </transition>
@@ -118,11 +118,12 @@ onMounted(() => {
     position: absolute;
     right: 15px;
     top: 20px;
-    background: rgba(0, 0, 0, 0.5);
+    background: rgba(255, 255, 255, 0.5);;
     text-align: center;
     line-height: 28px;
     font-size: 20px;
     z-index: 999;
+    color: #333333;
     border-radius: 1px;
     padding: 10px 16px;
   }

+ 5 - 3
src/components/shared/Guide.vue

@@ -11,12 +11,14 @@
 import { onMounted, watch, computed, ref, nextTick } from 'vue'
 import { useApp } from '@/app'
 import browser from "@/utils/browser";
+import { useStore } from "vuex";
 
 const isMobile = browser.isMobile()
+const show = computed(() => store.getters["player"].showUserGuide);
+const store = useStore();
 
-const show = ref(false)
 const onSet = () => {
-    show.value = false
+    store.commit("showUserGuide", false);
     localStorage.setItem('user_guide', Date.now())
 }
 const getTips = tips => {
@@ -26,7 +28,7 @@ const getTips = tips => {
 useApp().then(app => {
     app.Scene.on('loaded', () => {
         if (!localStorage.getItem('user_guide')) {
-            show.value = true
+            store.commit("showUserGuide", true);
         }
     })
 })

+ 6 - 1
src/store/index.js

@@ -15,7 +15,7 @@ const store = createStore({
                 showToolbar: true,
                 showMap: true,
                 showShare: false,
-                showUserGuide: true,
+                showUserGuide: false,
                 showWidgets: true,
             },
             router: {},
@@ -101,6 +101,11 @@ const store = createStore({
             state.player.showWidgets = !state.player.showWidgets
             getApp().Camera.vr()
         },
+
+        showUserGuide(state,payload) {
+            state.player.showUserGuide = payload
+        },
+        
         setControlsBottom(state, payload) {
             state.controlsBottom = payload
         },

+ 24 - 25
src/views/Panel.vue

@@ -1,6 +1,6 @@
 <template>
   <div class="panel" @mousemove.prevent @touchmove.prevent :style="{ top: panelNewTop == null ? null : `${panelNewTop}px` }">
-    <slot :isOpen="props.isOpen" @openPanel="clickaa"></slot>
+    <slot></slot>
   </div>
 </template>
 
@@ -16,9 +16,15 @@ const props = defineProps({
 
 watch(
   () => props.isOpen,
-  (val, old) => {
-    if (val) {
-      openPanel();
+  () => {
+    const $panel = document.querySelector(".panel");
+    let orgTop = $panel.offsetTop;
+    let newTop = window.innerHeight - $panel.clientHeight;
+    let value = orgTop - newTop;
+    if (value > 0) {
+      openPanel($panel, orgTop, value);
+    } else {
+      resetPanel();
     }
   }
 );
@@ -46,28 +52,21 @@ const resetPanel = () => {
   }
 };
 
-const openPanel = () => {
-  const $panel = document.querySelector(".panel");
-
-  let orgTop = $panel.offsetTop;
-  let newTop = window.innerHeight - $panel.clientHeight;
-  let value = orgTop - newTop;
-  if (value > 0) {
-    KanKan.Animate.transitions.start((progress) => {
-      panelNewTop.value = orgTop - value * progress;
-      let opc = progress;
-      if (opc < 0.2) {
-        opc = 0.2;
-      } else if (opc > 0.5) {
-        opc = 0.5;
-      }
+const openPanel = ($panel, orgTop, value) => {
+  KanKan.Animate.transitions.start((progress) => {
+    panelNewTop.value = orgTop - value * progress;
+    let opc = progress;
+    if (opc < 0.2) {
+      opc = 0.2;
+    } else if (opc > 0.5) {
+      opc = 0.5;
+    }
 
-      const $color = $panel.querySelectorAll(".color");
-      $color.forEach((item) => {
-        item.style.backgroundColor = `rgba(0, 0, 0, ${opc})`;
-      });
-    }, 200);
-  }
+    const $color = $panel.querySelectorAll(".color");
+    $color.forEach((item) => {
+      item.style.backgroundColor = `rgba(0, 0, 0, ${opc})`;
+    });
+  }, 200);
 };
 
 onMounted(() => {