app/App.vue

293 lines
6.2 KiB
Vue
Raw Normal View History

2025-04-21 17:35:54 +08:00
<script>
/**
* vuex管理登录状态具体可以参考官方登录模板示例
*/
import { mapMutations } from 'vuex';
import APPUpdate from '@/plugins/APPUpdate';
import { getClipboardData } from '@/js_sdk/h5-copy/h5-copy.js';
import config from '@/config/config';
// 区域code
import provinceList from './json/area_province.js';
import cityList from './json/area_city.js';
import districtList from './json/area_district.js';
import storage from '@/utils/storage.js'; //缓存
2025-04-30 14:28:07 +08:00
//初始化im
import { TUIChatKit } from '@/TUIKit';
import { loginIm } from '@/utils/handleim.js';
2025-04-21 17:35:54 +08:00
export default {
2025-04-30 14:28:07 +08:00
// 全局属性
globalData: {
chat: null
},
2025-04-21 17:35:54 +08:00
data() {
return {
config
};
},
/**
* 监听返回
*/
onBackPress(e) {
if (e.from == 'backbutton') {
let routes = getCurrentPages();
let curRoute = routes[routes.length - 1].options;
routes.forEach((item) => {
if (item.route == 'pages/tabbar/cart/cartList' || item.route.indexOf('pages/product/goods') != -1) {
uni.redirectTo({
url: item.route
});
}
});
if (curRoute.addId) {
uni.reLaunch({
url: '/pages/tabbar/cart/cartList'
});
} else {
uni.navigateBack();
}
return true; //阻止默认返回行为
}
},
methods: {
...mapMutations(['login'])
},
onLaunch: function () {
// #ifdef APP-PLUS
this.checkArguments(); // 检测启动参数
APPUpdate();
this.hanleTabCenter();
// 重点是以下: 一定要监听后台恢复 !一定要
plus.globalEvent.addEventListener('newintent', (e) => {
this.checkArguments(); // 检测启动参数
});
2025-04-30 14:28:07 +08:00
// init im
var ddd = TUIChatKit.init();
console.log('dasjdlasjdlajsldjaslkdjasljdklasdljasldadjaldjlkasdlkasjdalsdjl', ddd);
// 如果有缓存登录信息
console.log('是否登录', storage.getHasLogin());
if (storage.getHasLogin()) {
loginIm();
}
2025-04-21 17:35:54 +08:00
// #endif
// #ifdef MP-WEIXIN
this.applyUpdateWeChat();
// #endif
},
onShow() {
// #ifndef H5
this.getClipboard();
// #endif
},
methods: {
//
hanleTabCenter() {
// 点击中间的➕
uni.onTabBarMidButtonTap(() => {
console.log('center');
// 未登录不能发布视频
let myUserInfo = storage.getVlogUserInfo();
if (myUserInfo == null) {
uni.navigateTo({
// url: "../loginRegist/loginRegist",
url: '/pages/passport/login',
animationType: 'slide-in-bottom',
success() {
this.loginWords = '请登录';
}
});
return;
}
uni.chooseVideo({
sourceType: ['album'],
compressed: false,
success(e) {
2025-04-25 18:10:54 +08:00
console.log(e);
if (e.duration <= 30) {
uni.navigateTo({
url: '/pages/publish/publish?fileObjectEvent=' + JSON.stringify(e)
});
} else {
uni.showToast({
title: '时长不能超过30秒',
icon: 'none',
duration: 3000
});
}
2025-04-21 17:35:54 +08:00
}
});
});
},
/**
* 微信小程序版本提交更新版本 解决缓存问题
*/
applyUpdateWeChat() {
const updateManager = uni.getUpdateManager();
updateManager.onCheckForUpdate(function (res) {
// 请求完新版本信息的回调
});
updateManager.onUpdateReady(function (res) {
uni.showModal({
title: '更新提示',
content: '发现新版本,是否重启应用?',
success(res) {
if (res.confirm) {
// 新的版本已经下载好,调用 applyUpdate 应用新版本并重启
updateManager.applyUpdate();
}
}
});
});
updateManager.onUpdateFailed(function (res) {
// 新的版本下载失败
});
},
// TODO 开屏广告 后续优化添加
launch() {
try {
// 获取本地存储中launchFlag标识 开屏广告
const value = uni.getStorageSync('launchFlag');
if (!value) {
// this.$u.route("/pages/index/agreement");
} else {
//app启动时打开启动广告页
var w = plus.webview.open(
'/hybrid/html/advertise/advertise.html',
'本地地址',
{
top: 0,
bottom: 0,
zindex: 999
},
'fade-in',
500
);
//设置定时器4s后关闭启动广告页
setTimeout(function () {
plus.webview.close(w);
APPUpdate();
}, 3000);
}
} catch (e) {
// error
uni.setStorage({
key: 'launchFlag',
data: true,
success: function () {
console.log('error时存储launchFlag');
}
});
}
},
/**
* 获取粘贴板数据
*/
async getClipboard() {
let res = await getClipboardData();
/**
* 解析粘贴板数据
*/
if (res.indexOf(config.shareLink) != -1) {
uni.showModal({
title: '提示',
content: '检测到一个分享链接是否跳转?',
confirmText: '跳转',
success: function (callback) {
if (callback.confirm) {
const path = res.split(config.shareLink)[1];
if (path.indexOf('tabbar') != -1) {
uni.switchTab({
url: path
});
} else {
uni.navigateTo({
url: path
});
}
}
}
});
}
},
/**
* h5中打开app获取跳转app的链接并跳转
*/
checkArguments() {
// #ifdef APP-PLUS
setTimeout(() => {
const args = plus.runtime.arguments;
if (args) {
const argsStr = decodeURIComponent(args);
const path = argsStr.split('//')[1];
if (path.indexOf('tabbar') != -1) {
uni.switchTab({
url: `/${path}`
});
} else {
uni.navigateTo({
url: `/${path}`
});
}
}
});
// #endif
}
}
};
</script>
2025-03-28 15:46:11 +08:00
<style lang="scss">
/* #ifndef APP-NVUE */
2025-04-21 17:35:54 +08:00
@import 'uview-ui/index.scss';
/* #endif */
// -------适配底部安全区 苹果x系列刘海屏
// #ifdef MP-WEIXIN
.mp-iphonex-bottom {
padding-bottom: constant(safe-area-inset-bottom);
padding-bottom: env(safe-area-inset-bottom);
box-sizing: content-box;
height: auto !important;
padding-top: 10rpx;
}
// #endif
2025-03-28 15:46:11 +08:00
/* #ifndef APP-NVUE */
2025-04-21 17:35:54 +08:00
body {
background-color: $bg-color;
}
2025-03-28 15:46:11 +08:00
/* #endif */
2025-04-21 17:35:54 +08:00
/************************ */
.w200 {
width: 200rpx !important;
}
.flex1 {
flex: 1; //必须父级设置flex
}
.activate-line {
background-color: #ffffff;
transition-duration: 300ms;
}
// uni-page-body,
// html,
// body,
// page {
// width: 100% ;
// height: 100% ;
// overflow: hidden;
// }
</style>