Эх сурвалжийг харах

feat: 支持app消息页面切换 app tabbar

zhangyuhan 2 жил өмнө
parent
commit
e115026ce1

+ 1 - 1
src/jfw/modules/app/src/web/templates/frontRouter/messageCenter/sess/index.html

@@ -57,7 +57,7 @@
                       <span>{imgSrcs[ite.type - 1].title}</span>
                       <span v-if="ite.newMsg">{dateMatter(ite.newMsg.createtime, 'out')}</span>
                   </div>
-                  <p class="p3" v-if="ite.newMsg">{ite.newMsg.content}</p>
+                  <p class="p3" v-if="ite.newMsg">{ite.newMsg.title}</p>
               </div>
             </div>
           </div>

+ 16 - 12
src/web/staticres/common-module/messageCenter/js/detail.js

@@ -64,7 +64,7 @@ var vm = new Vue({
           // try {
           //   JyObj.refreshAppointTab('search', 1)
           // } catch (error) {
-          //   console.log(error) 
+          //   console.log(error)
           // }
         }
       })
@@ -124,7 +124,7 @@ var vm = new Vue({
             } else {
               _this.tabsList.finished = true
             }
-    
+
             // _this.tabsList.loading = false
             if (_this.tabsList.total !== -1 && _this.tabsList.total <= _this.lists.length) {
               _this.tabsList.finished = true
@@ -145,19 +145,23 @@ var vm = new Vue({
           return
         }
       } else {
-        if (appType == 'android') {
-          if (url.androidUrl) {
-            location.href = url.androidUrl
-          } else {
-            return
-          }
-        } else {
-          if (url.iosUrl) {
-            location.href = url.iosUrl
+        const toLink = appType == 'android' ? url.androidUrl : url.iosUrl
+        if (toLink) {
+          // 检查是否 tabbar 页面
+          const tabbarKey = utils.checkNowInAppTabbarPage(toLink)
+          if (tabbarKey) {
+            try {
+              // 刷新对应 tabbar 并切换
+              JyObj.refreshAppointTab(tabbarKey,1)
+              JyObj.skipAppointTab(tabbarKey)
+            } catch (e) {
+              console.warn(e)
+            }
           } else {
-            return
+            location.href = toLink
           }
         }
+        return
       }
     }
   }

+ 28 - 1
src/web/staticres/common-module/public/js/utils.js

@@ -94,12 +94,13 @@ var versionChangeLog = {
   '0.0.1': ['init'],
   '0.0.2': ['utils.dateFromNow 函数逻辑修改,具体修改内容查看函数注释'],
   '0.0.3': ['utils.formatMoney 新增不使用,分割返回值的选项'],
+  '0.0.4': ['utils.checkNowInAppTabbarPage 判断是否app tabbar 页面,返回对应的key'],
 }
 
 
 var utils = {
   // utils版本号
-  version: '0.0.3',
+  version: '0.0.4',
   isWeiXinBrowser: navigator.userAgent.toLowerCase().indexOf('micromessenger') !== -1,
   isAndroid: navigator.userAgent.toLowerCase().indexOf('android') !== -1,
   isIos: /iphone|ipod|ipad|ios/.test(navigator.userAgent.toLowerCase()),
@@ -768,5 +769,31 @@ var utils = {
         },delay);
       }
     }
+  },
+  /**
+   * 检查是否 app tabbar页面,并返回对应的key || ''
+   * @param link - 需要检查的地址 || location.href
+   * @returns {string} - 对应的key
+   */
+  checkNowInAppTabbarPage: function (link) {
+    const appTabbars = {
+      search: ['/jyapp/jylab/mainSearch', '/jy_mobile/tabbar/home'],
+      subscribe: ['/jyapp/swordfish/historypush', '/jy_mobile/tabbar/subscribe'],
+      message: ['/jyapp/frontPage/messageCenter/sess/index'],
+      box: ['/jyapp/jylab/index', '/jy_mobile/tabbar/box'],
+      me: ['/jyapp/free/me']
+    }
+
+    let appTabbarName = ''
+    for (const appTabbarsKey in appTabbars) {
+      const hasTabbar = appTabbars[appTabbarsKey].some(function (v) {
+        return (link || location.href).indexOf(v) > -1
+      })
+      if (hasTabbar) {
+        appTabbarName = appTabbarsKey
+        break
+      }
+    }
+    return appTabbarName
   }
 }

+ 1 - 1
src/web/templates/frontRouter/wx/messageCenter/sess/index.html

@@ -65,7 +65,7 @@
                       <span>{imgSrcs[ite.type - 1].title}</span>
                       <span v-if="ite.newMsg">{dateMatter(ite.newMsg.createtime, 'out')}</span>
                   </div>
-                  <p class="p3" v-if="ite.newMsg">{ite.newMsg.content}</p>
+                  <p class="p3" v-if="ite.newMsg">{ite.newMsg.title}</p>
               </div>
             </div>
           </div>