aiyushanuninew/App.vue
yindongqi b09939848c feat: 新增发票申请功能并优化多个页面
- 新增发票申请页面,支持企业和个人发票类型
- 优化订单页面,增加取消订单功能
- 修改分享标题为"爱愈膳汤铺"
- 调整首页布局和样式,新增弹窗功能
- 修复购物车数据存储问题
- 优化优惠券领取逻辑,过滤已领取优惠券
- 调整支付页面打包费选项和配送费显示
- 新增小程序更新检查功能
- 优化店铺选择逻辑,切换店铺时清空购物车
- 调整图片资源和样式细节
2025-05-26 19:44:04 +08:00

172 lines
3.6 KiB
Vue

<script setup>
import { onHide, onLaunch, onShow } from '@dcloudio/uni-app'
import { storeToRefs } from 'pinia'
import { useMainStore } from '@/store/store'
const main = useMainStore()
import { isWeixin, parseQuery } from '@/utils/util'
import cookie from '@/utils/cookie'
import {
userAuthSession,
wechatAuth
} from '@/api/auth'
import { APP_ID } from '@/config'
// 检查更新逻辑
const checkUpdate = () => {
// 兼容性检查(非必须,但建议)
if (!uni.canIUse('getUpdateManager')) {
uni.showModal({
title: '提示',
content: '当前微信版本过低,请升级后使用',
showCancel: false
});
return;
}
const updateManager = uni.getUpdateManager();
// 检测是否有新版本
updateManager.onCheckForUpdate((res) => {
if (res.hasUpdate) {
uni.showLoading({ title: '检测到新版本,下载中...' });
}
});
// 新版本下载完成
updateManager.onUpdateReady(() => {
uni.hideLoading();
uni.showModal({
title: '更新提示',
content: '新版本已准备好,立即重启应用?',
showCancel: false,
success: (res) => {
if (res.confirm) {
// 强制应用新版本并重启
updateManager.applyUpdate();
}
}
});
});
// 下载失败处理
updateManager.onUpdateFailed(() => {
uni.hideLoading();
uni.showModal({
title: '提示',
content: '更新失败,请删除小程序后重新搜索打开',
showCancel: false
});
});
};
onLaunch(() => {
checkUpdate();
console.log('App Launch')
})
onShow(() => {
console.log('App Show')
// 检查用户登录情况
// #ifdef H5
if (isWeixin()) {
oAuth()
// H5编译的代码
// 判断是否是微信浏览器
}
// #endif
// #ifdef MP-WEIXIN
wechatMiniLogin();
// #endif
})
onHide(() => {
console.log('App Hide')
})
const wechatMiniLogin = () => {
//this.$u.toast('登录中');
uni.login({
provider: 'weixin'
}).then(async (res) => {
let data = await userAuthSession({
code: res.code
});
if (data) {
main.SET_OPENID(data.openId)
if (data.hasOwnProperty('userInfo') && data.accessToken && data.accessToken != '') {
main.SET_MEMBER(data.userInfo);
main.SET_TOKEN(data.accessToken);
}
}
});
}
const getAuthUrl = (appId) => {
// #ifdef H5
// #endif
cookie.set('redirect', window.location.href)
const url = `${location.origin}/h5/#/pages/index/index`
cookie.set('index_url', url)
let redirect_uri = encodeURIComponent(url)
const state = 'STATE'
return `https://open.weixin.qq.com/connect/oauth2/authorize?appid=${appId}&redirect_uri=${redirect_uri}&response_type=code&scope=snsapi_userinfo&state=STATE#wechat_redirect`
}
const oAuth = async () => {
const WX_AUTH = 'wx_auth'
return new Promise((resolve, reject) => {
const accessToken = uni.getStorageSync('accessToken');
if (cookie.has('wx_auth') && accessToken && main.isLogin) {
reject()
return
}
const { code } = parseQuery()
if (!code) {
//公众号appid
const appid = APP_ID;
location.href = getAuthUrl(appid)
return
} else {
auth(code)
}
resolve()
}).catch(error => {
console.log(error)
})
}
const auth = async (code) => {
console.log('获取微信授权:', code)
let data = await wechatAuth({ 'code': code })
cookie.set('wx_auth', code)
if (data) {
main.SET_OPENID(data.openId)
main.SET_MEMBER(data.userInfo);
main.SET_TOKEN(data.accessToken);
}
}
</script>
<style lang="scss">
@import '~@/static/style/app.scss';
//@import 'static/iconfont/iconfont.scss';
//@import url('./static/style/style.less');
@import 'static/style/yshop.css';
// /*每个页面公共css */
// page {
// background-color: #f5f5f5;
// }</style>