新的tabBar

2020-08-04 11:25:51 阅读:11 编辑
js/pages/zhy/component/comFooter/comFooter.vue
 if (url == '/pages/define/define' || url == '/pages/diyhome/diyhome') {
                       // this.setData({ show: true });
                        if(this.app_type != "app" || !wx.isTabBarWithUrl(url)){
                            this.setData({ show: true });
                        }
                    } else {
                        if(this.app_type != "app" || !wx.isTabBarWithUrl(url)){
                            this.setData({
                                [`nav[${ i }].choose`]: true,
                                  show: true
                            });
                        }

                    }

js/pages/common/publish.js

import wx from './wx';
import app from './../app.js'
import siteinfo from './../siteinfo'

var publish = {
    data: function () {
        return {
            app_type: 'app',
            route: '',
            curHomeBackTriggerTimes: 1,
            maxHomeBackTriggerTimes: 2,
            systemPullDownRefreshing: false,
            isAndroid: false,
            w_loading_show: false,
            w_loading_tile: "加载中",
        }
    },
    created: function () {
        this.data = this.$data;
        this.isAndroid = wx.isAndroid();
        this.curHomeBackTriggerTimes = 1;
        this.route = wx._getCurrentPath().substr(1);
        this.__route__ = this.route;
        app.setCurrentInstance(this);

        wx.removeStorageSync("w_system_hide_home_button");

        wx.setNavigationBarColor({
            frontColor: siteinfo.window.navigationBarTextStyle == "black" ? "#000000" : "#ffffff",
            backgroundColor: siteinfo.window.navigationBarBackgroundColor
        })
        var currentVersion = WXEnvironment.appVersion;
        var minVersion = "1.0.0";
        if (wx._compareVersion(currentVersion, minVersion) != -1) {
            var w_system_navigation_bar = wx.getStorageSync("w_system_navigation_bar");
            if (w_system_navigation_bar == 1) {
                wx.setHomeIcon();
            }
            if (wx.isAndroid()) {
                this.androidFinishApp();
            }

        }
        this.handleTabBar();

    },
    computed: {
        page_style: function () {
            if (this.isTabBar()) {
                var statusBarHeight = weex.config.eros.statusBarHeight ? weex.config.eros.statusBarHeight : 40;
                return {paddingTop: statusBarHeight};
            }

            return {};
        },
        webview_style: function () {
            return {
                position: "fixed",
                left: 0,
                right: 0,
                top: 0,
                bottom: 0,
            };
        }
    },
    methods: {
        isTabBar() {
            var getHomePage = weex.isRegisteredModule('siteinfo', 'getHomePage');
            if(!getHomePage){
                return this.isHomePage();
            }
            var current_page = weex.config.bundleUrl;
            var pos = current_page.indexOf("pages");
            current_page = "/" + current_page.substr(pos);
            var _tabBarInfo = wx.getStorageSync('w_system_tabbar');
            if (_tabBarInfo.native_tabbar) {
                var list = _tabBarInfo.tabInfo.list;
                for (var i = 0; i < list.length; ++i) {
                    if (current_page == list[i].pagePath) {
                        return true;
                    }
                }
            }else{
                return this.isHomePage();
            }
            return false;
        },
        handleTabBar() {
            var getHomePage = weex.isRegisteredModule('siteinfo', 'getHomePage');
            if(!getHomePage) return;
            if (this.isHomePage()) {
                wx.getTabBarInfo(function (tabBarInfo) {
                    if (tabBarInfo === true) return;
                    if (tabBarInfo.native_tabbar) {
                        var tabbar = weex.requireModule('bmTabbar');
                        tabbar.setInfo(tabBarInfo.tabInfo);
                        var router = weex.requireModule('bmRouter');
                        router.setHomePage("tabBar");

                    } else {
                        //如果当前首页是tabBar,则切换至原有模式
                        if (wx.currentHomePageIsTabBar()) {
                            var router = weex.requireModule('bmRouter');
                            var home = "/pages/" + siteinfo.app_set.setting.home + ".js";
                            router.setHomePage(home);
                        }
                    }
                })
            }

        },
        showLoading(data) {
            this.w_loading_tile = data.title;
            this.w_loading_show = true;
            if (data.success) data.success();
            if (data.complete) data.complete();
        },
        hideLoading(data) {
            this.w_loading_show = false;
            if(data){
                if (data.success) data.success();
                if (data.complete) data.complete();
            }

        },
        handleBack(){
            var current = wx._getCurrentPath().substr(1).replace(/\//g, "_");
            var prev = wx.getStorageSync("w_system_prev_page_flag");
            if(prev != "" && current != prev){
                wx._decPageLevel();
            }
        },
        doClickStop(e, method) {
            e.stopPropagation();
            this[method](e);
        },
        weOnPageScroll(e) {
            if (this.onPageScroll) this.onPageScroll({scrollTop: Math.abs(e.contentOffset.y)});
        },
        onSystemPullDownRefresh() {
            this.startSystemPullDownRefresh();
        },
        startSystemPullDownRefresh() {
            this.systemPullDownRefreshing = true;
            if (this.onPullDownRefresh) {
                this.onPullDownRefresh();
            }
        },
        stopSystemPullDownRefresh() {
            setTimeout(() => {
                this.systemPullDownRefreshing = false;
            }, 100)
        },
        isHomePage() {
            var current_page = weex.config.bundleUrl;
            var pos = current_page.indexOf("pages");
            current_page = "/" + current_page.substr(pos);
            var home = "/pages/" + siteinfo.app_set.setting.home + ".js";
            return current_page == home;
        },
        androidFinishApp() {
            var that = this;
            const globalEvent = weex.requireModule('globalEvent');
            globalEvent.addEventListener('homeBack', options => {
                //wx.alert("homeBack");
                if (this.curHomeBackTriggerTimes === this.maxHomeBackTriggerTimes) {
                    this.$router.finish();
                } else {
                    this.curHomeBackTriggerTimes++
                    wx.showToast({title: "再按一次退出APP"});
                    setTimeout(function () {
                        that.curHomeBackTriggerTimes = 1;
                    }, 3000)
                }

            })
        },
        setData: function (obj) {

            let that = this;
            let keys = [];
            let val, data;
            Object.keys(obj).forEach(function (key) {
                if (obj == null) return;
                keys = key.split('.');
                val = obj[key];
                data = that.$data;
                keys.forEach(function (key2, index) {
                    if (key2.indexOf("[") != -1) {
                        const arr = key2.replace(/\]\[|\]\.|\[/g, '.').replace(/\]/g, '').split('.');
                        for (let i = 0; i < arr.length; i++) {
                            if (i + 1 == arr.length && index + 1 == keys.length) {
                                if (val != null) {
                                    that.$set(data, arr[i], val);
                                }

                            }
                            data = data[arr[i]];
                        }
                    } else {
                        if (index + 1 == keys.length) {
                            if (val != null) {
                                that.$set(data, key2, val);
                            }

                        } else {
                            if (!data[key2]) {
                                if (val != null) {
                                    that.$set(data, key2, {});
                                }

                            }
                        }
                        data = data[key2];
                    }
                })
            });
        },

        getRouterParams: function () {
            return wx.getStorageSync("router_last_params") || {};
        },
        triggerEvent(event, args) {

            var value = {detail: args};
            return this.$emit(event, value);

        },
        getApp() {
            return app;
        },
        bindEventBus() {
            let prevPage = this;
            this.$event.on(wx._getCurrentPath().substr(1).replace(/\//g, "_"), function (params) {
                prevPage.runPrevPageCode(params, prevPage);
            }) // 监听事件
        },
        setPrevData(data) {
            let pages = wx.getCurrentPages();
            let prevPage = pages[pages.length - 2];
            var _code = {
                method: 'setData',
                param: data
            };
            this.$event.emit(prevPage, _code);
        },
        doPrevMethod(fun, ...arg) {
            let pages = wx.getCurrentPages();
            let prevPage = pages[pages.length - 2];
            var _code = {
                method: fun,
                param: JSON.stringify(arg),
            };
            this.$event.emit(prevPage, _code);
        },
        runPrevPageCode(params, prevPage) {
            var method = params.method;
            switch (method) {
                case "setData": {
                    if (prevPage && params.param) prevPage.setData(params.param);
                    break;
                }
                default: {
                    var code = JSON.parse(params.param);
                    if (prevPage && prevPage[method]) prevPage[method](...code);
                    break;
                }
            }
        },
        wChooseLocation(obj) {
            this.$event.once("choose_location_event", function (params) {

                wx.navigateBack({delta: 1});
                // wx.setStorageSync("system_choose_location", JSON.parse(params));
                if (obj.success != undefined) {
                    return obj.success(JSON.parse(params));
                }
            }) // 监听事件
            var router = weex.requireModule('bmRouter');
            var options = {};
            options.navShow = true;
            options.statusBarStyle = 'default';
            options.canBack = true;
            // options.backCallback = obj.success;
            options.params = {
                latitude: obj.latitude,
                longitude: obj.longitude,
            };
            var currentPageInfo = {
                url: '/pages/system/chooselocation.js',
                title: '选择地理位置',
            };
            wx.setStorageSync("router_last_params", options.params);
            let preOptions = {
                url: currentPageInfo.url,
                type: options.type || 'PUSH',
                params: options.params || {},
                canBack: options.canBack != undefined ? options.canBack : false,
                gesBack: options.gesBack != undefined ? options.gesBack : false,
                navShow: options.navShow != undefined ? options.navShow : !!currentPageInfo.title,
                navTitle: options.navTitle != undefined ? options.navTitle : currentPageInfo.title,
                // isRunBackCallback: _isFunction(options.backCallback)
            }

            if (!!options.statusBarStyle) preOptions.statusBarStyle = options.statusBarStyle
            //alert(preOptions);
            router.open(preOptions, (data) => {
            })
        }
    }
}
module.exports = {
    publish
}

社交电商后台

    public function appTabTar()
    {
        global $_W;
        $_W['return']=1;
        $system=$this->systemSet();
        $nav=$this->navIcon();
        $index_arr = ["首页","商家列表","会员卡","我的","云客"];
        $img_root = "https://zhyframe.fzh.fun/attachment/";
        $lists = [];
        foreach ($nav as $index => $item) {

            if (in_array($item["title"], $index_arr)) {
                $lists[] = [
                    "pagePath" =>  $item["url"],
                    "text" => $item["title"],
                    "icon" => $img_root . $item["clickago_icon"],
                    "selectedIcon" => $img_root . $item["clickafter_icon"],
                ];
            }
        }
        $tabInfo = [
            'color' => $system["bottom_fontcolor_a"],
            'selectedColor' => $system["bottom_fontcolor_b"],
            'backgroundColor' => $system["bottom_color"],
            'list' => $lists,
        ];
        $arr = [
            "native" => true,
            "tabInfo" => $tabInfo
        ];
         echo json_encode($arr);
               exit;
        //exit($arr);
    }