mall_client/zyhs_app_java/zyhs3_uniapp/pages/index/index.vue

243 lines
7.5 KiB
Vue
Raw Permalink Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

<template>
<view class="index">
<TabHome v-if="actived === 'TabHome'" ref="TabHome"></TabHome>
<!-- <TabTrade v-if="actived === 'TabTrade'" ref="TabTrade"></TabTrade> -->
<!-- <TabInteraction v-if="actived === 'TabInteraction'" ref="TabInteraction"></TabInteraction> -->
<Msg v-if="actived === 'Msg'" ref="Msg"></Msg>
<TabUser v-if="actived === 'TabUser'" ref="TabUser"></TabUser>
<!-- <view class="tabbar-placeholder">
</view> -->
<tabbar :list="tabPages" :actived="actived" @change="onChanged"></tabbar>
</view>
</template>
<script>
import {
getUUID,
versionCompare,
getMacAddress,
} from "@/common/utils/index.js";
import tabbar from "./components/tabbar.vue";
import TabHome from "../home/index.vue";
// import TabTrade from "../trade/index.vue";
import TabInteraction from "../interaction/index.vue";
import TabUser from "../user/index.vue";
import url from "@/common/http/url.js";
import Msg from "../chat/index.vue";
import {
mapMutations
} from "vuex";
let userInfo = uni.getStorageSync("userInfo");
const upDater = uni.requireNativePlugin("CL-UpDater"); // 版本升级
export default {
components: {
tabbar,
TabHome,
// TabTrade,
TabInteraction,
TabUser,
Msg
},
data() {
return {
actived: "TabHome",
tabPages: [{
name: "首页",
url: "/pages/home/index",
iconPath: "/static/home-page/home.png",
selectedIconPath: "/static/home-page/home-use.png",
component: "TabHome",
activeColor: '#22bd5e',
inactiveColor: '#333333'
},
{
name: "我的",
url: "/pages/user/index",
iconPath: "/static/home-page/my.png",
selectedIconPath: "/static/home-page/my-use.png",
component: "TabUser",
activeColor: '#22bd5e',
inactiveColor: '#333333'
},
],
};
},
onShow() {
if (this.$refs["TabUser"]) {
this.$refs["TabUser"].reset();
}
},
onLoad(e) {
if (e.tab) this.actived = e.tab;
},
methods: {
...mapMutations(["logout"]),
getArrayValueByCode(array, code) {
let value = "";
array.forEach((v) => {
if (v.keyCode === code) {
value = v.keyValue;
return false;
}
});
return value;
},
async versionApp(showLoad) {
let version = null; // 当前版本
await plus.runtime.getProperty(plus.runtime.appid, function(widgetInfo) {
console.log("widgetInfo", widgetInfo);
version = widgetInfo.version;
});
let res = await this.$http("GET", url.common.getAppVersion);
console.log("res**********", res);
// let version = plus.runtime.version; // 当前版本
let iosVersion = res.data["IOS"].keyValue; // ios版本
let androidVersion = res.data["Android"].keyValue; // android版本
console.log(
uni.getSystemInfoSync().platform,
"当前版本=====version",
version,
iosVersion,
"安卓版本=====androidVersion",
androidVersion
);
if (uni.getSystemInfoSync().platform === "ios") {
if (!versionCompare(version, iosVersion)) {
let list = res.data["IOS"].children;
// 1-选择升级 2-强制升级 3-个人中心手动升级 4-忽略升级
let type = this.getArrayValueByCode(list, "app_version_ios_upgrade");
let con = this.getArrayValueByCode(list, "app_version_ios_detail");
let downUrl = this.getArrayValueByCode(list, "app_version_ios_url");
let options = {
title: "发现新版本",
con: con,
downUrl: downUrl,
hidCancelbtn: false, //是否隐藏取消按钮;
btnBgColor: "#F8D247", //设置按钮背景色颜色
updateBtnText: "立即更新", //升级按钮文字,默认为立即升级
hidBackBtn: true, //可选 默认为false即会显示后台更新按钮 设置android 整包更新弹框是否显示后台更新按钮这个只有android整包更新才有这个参数热更新是是无法设置的。
// verCode:"1.0.1",//最新apk版本号 可选 用于Android整包升级,避免用户取消安装apk时,重复下载问题,如果不传的话,apk将会重新下载
};
if (type === "1" || type === "2" || (showLoad && type === "3")) {
upDater.startUpdate(options, () => {
if (type === "2") {
plus.runtime.restart();
}
});
}
}
if (showLoad) {
this.$msg("当前已是最新版~");
}
} else if (uni.getSystemInfoSync().platform === "android") {
console.log(
"versionCompare(version, androidVersion*********",
versionCompare(version, androidVersion)
);
if (!versionCompare(version, androidVersion)) {
let list = res.data["Android"].children;
// 1-选择升级 2-强制升级 3-浏览器升级(暂不用) 4-个人中心手动升级 5-忽略升级
let type = this.getArrayValueByCode(
list,
"app_version_android_upgrade"
);
let con = this.getArrayValueByCode(
list,
"app_version_android_detail"
);
let isMust = this.getArrayValueByCode(list, "qzgx");
console.log("type***********", type);
console.log("con**************", con);
if (type === "1" || type === "2" || (showLoad && type === "4")) {
let downUrl = this.getArrayValueByCode(
list,
"app_version_android_url"
);
let options = {
title: "发现新版本",
con: con,
downUrl: downUrl,
hidCancelbtn: isMust == 0 ? false : true, //是否隐藏取消按钮;
btnBgColor: "#F8D247", //设置按钮背景色颜色
updateBtnText: "立即更新", //升级按钮文字,默认为立即升级
hidBackBtn: false, //可选 默认为false即会显示后台更新按钮 设置android 整包更新弹框是否显示后台更新按钮这个只有android整包更新才有这个参数热更新是是无法设置的。
// verCode:"1.0.1",//最新apk版本号 可选 用于Android整包升级,避免用户取消安装apk时,重复下载问题,如果不传的话,apk将会重新下载
};
upDater.startUpdate(options, () => {
if (type === "2") {
plus.runtime.quit();
}
});
}
}
if (showLoad) {
this.$msg("当前已是最新版~");
}
}
},
async onChanged(tab) {
// 中间短视频
if (tab.midButton) {
uni.navigateTo({
url: tab.url,
});
return;
}
// #ifdef APP-PLUS
this.versionApp();
// #endif
// #ifndef APP-PLUS
// this.$msg("当前版本不支持检测更新~");
// #endif
this.actived = tab.component;
this.checkToken()
},
//就是点击下边四个tab的时候调用一下这个接口返回false的话就调用一下退出登录给他退掉
checkToken() {
this.$http("GET", "/user/userCache").then((res) => {
if (!res.data) {
this.logout();
}
});
},
},
onLoad() {
this.checkToken();
},
onPullDownRefresh() {
const component = this.$refs[this.actived] || {};
component.pullDownRefresh ?
component.pullDownRefresh() :
uni.stopPullDownRefresh();
},
onReachBottom() {
const component = this.$refs[this.actived] || {};
component.reachBottom && component.reachBottom();
},
onBackPress() {
const component = this.$refs[this.actived] || {};
component.backPress && component.backPress();
},
onPageScroll(e) {
const component = this.$refs[this.actived] || {};
component.pageScroll && component.pageScroll(e);
},
};
</script>
<style lang="scss">
.index {
.tabbar-placeholder {
display: block;
width: 100%;
height: 98upx;
background: transparent;
}
}
</style>