shop_app/App.vue

249 lines
7.1 KiB
Vue

<script>
import { get, post } from './api/request.js'
import { compareVersion } from './utils/index.js'
import { getShopInfo } from './components/common.js'
import api from "./api/index.js"
export default {
onLaunch: function(options) {
// this.authLogin(options.scene, options.query.source || '')
getShopInfo()
// this.isLogin()
// this.judgeLogin()
// plus.runtime.quit()
},
methods: {
judgeLogin() {
let saveTime = uni.getStorageSync('saveTime')
let expires_in = uni.getStorageSync('expires_in')
let token = uni.getStorageSync('token')
if((saveTime && expires_in && Date.now() > saveTime + expires_in) || !expires_in || !saveTime || !token) {
uni.navigateTo({
url: '/pages/user/login'
})
} else {
getShopInfo().then((ress) => {
uni.switchTab({
url: '/pages/index/index'
})
})
this.getMsgNum()
}
},
isLogin() {
let val = {
data: {
access_token: 'eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJpc3MiOiJodHRwOlwvXC9zaG9wLmNodXRhbmc2Ni5jb21cL2FwaVwvdjFcL2F1dGhcL2xvZ2luIiwiaWF0IjoxNzQzOTkwODEyLCJleHAiOjE3NDQwNzcyMTIsIm5iZiI6MTc0Mzk5MDgxMiwianRpIjoiQmY1ZWk4VUF2YXV5VlRibSIsInN1YiI6MTUsInBydiI6IjIzYmQ1Yzg5NDlmNjAwYWRiMzllNzAxYzQwMDg3MmRiN2E1OTc2ZjcifQ.E-be6v6i7_zFKijrzDhkZ7K5-IWQKsqTIKZ8ntK7oF4',
avatar: 'https://ct-upimg.yx090.com/ju8hn6/shop/image/2024/07/13/19DnMNnjGlwKrBlPafc6gtLyrS9aqw3hb5xHYc7q.jpg',
crop_user: true,
expires_in: 86400,
has_sale: true,
is_authorized: 1,
is_default_avatar: false,
is_new: false,
is_subscribe: 0,
is_vip: false,
nickname: "Van",
role: 0,
token_type: "Bearer"
}
}
let token = val.data.token_type + ' ' + val.data.access_token
uni.setStorageSync('token', token)
uni.setStorageSync('subscribe', val.data.is_subscribe)
uni.setStorageSync('avatar', val.data.avatar)
uni.setStorageSync('nickname', val.data.nickname)
uni.setStorageSync('role', val.data.role)
uni.setStorageSync('is_vip', val.data.is_vip)
uni.setStorageSync('is_new', val.data.is_new)
uni.setStorageSync('is_authorized', val.data.is_authorized)
uni.setStorageSync('is_default_avatar', val.data.is_default_avatar)
uni.setStorageSync('sessionKey', val.data.session_key)
uni.setStorageSync('has_sale', val.data.has_sale)
uni.setStorageSync('saveTime', Date.now()) // 存储时间
uni.setStorageSync('expires_in', val.data.expires_in * 1000) // 失效时间
getShopInfo()
this.getMsgNum()
// let saveTime = uni.getStorageSync('saveTime')
// let expires_in = uni.getStorageSync('expires_in')
// if((saveTime && expires_in && Date.now() > saveTime + expires_in) || !expires_in || !saveTime) {
// uni.navigateTo({
// url: '/pages/user/login'
// })
// }
},
authLogin(scene, source) {
console.log('authLogin')
const _this = this
uni.login({
provider: 'weixin',
success: res => {
let { code } = res
uni.request({
method: 'POST',
url: api.url + '/api/v1/auth/login',
data: {code, from: 0, source: source},
header: {
Authorization: uni.getStorageSync('token') || '',
accept: "application/json",
appid: api.appId
},
success: (val) => {
console.log('wx-login')
if(!Array.isArray(val.data)) {
let token = val.data.token_type + ' ' + val.data.access_token
uni.setStorageSync('token', token)
uni.setStorageSync('subscribe', val.data.is_subscribe)
uni.setStorageSync('avatar', val.data.avatar)
uni.setStorageSync('nickname', val.data.nickname)
uni.setStorageSync('role', 0)
uni.setStorageSync('login_type', 'mini-app')
uni.setStorageSync('is_vip', val.data.is_vip)
uni.setStorageSync('is_new', val.data.is_new)
uni.setStorageSync('is_authorized', val.data.is_authorized)
uni.setStorageSync('is_default_avatar', val.data.is_default_avatar)
uni.setStorageSync('sessionKey', val.data.session_key)
uni.setStorageSync('has_sale', val.data.has_sale)
uni.setStorageSync('saveTime', Date.now()) // 存储时间
uni.setStorageSync('expires_in', val.data.expires_in * 1000) // 失效时间
uni.setStorageSync('is_crop_user', val.data.crop_user)
getShopInfo()
// 如果是普通用户-则在onLaunch向后台发送opengid
if(val.data.role === 0) {
if(!val.data.crop_user) {
setTimeout(() => {
_this.getUserHome()
}, 30000)
}
}
_this.getMsgNum()
}
_this.$isResolve()
}
})
}
})
},
getMsgNum() {
get('/api/v1/messages/count').then((res) => {
uni.setStorageSync('msgNum', res.data.total)
})
},
getUserHome() {
get('/api/v1/user/home').then((res) => {
uni.setStorageSync('is_crop_user', res.data.is_crop_user)
})
}
},
onShow: function(options) {
// #ifdef APP-PLUS
uni.hideTabBar()
// #endif
},
onHide: function() {
}
}
</script>
<style lang="scss">
/*每个页面公共css */
@import "@/uni_modules/uview-plus/index.scss";
@import url("/static/icon/iconfont.css");
page {
width: 100%;
height: 100%;
background: $uni-bg-color;
overflow: auto;
-webkit-text-size-adjust: 100%;
font-family: 'Microsoft YaHei';
position: static !important;
}
.tabbar .u-badge{
position: absolute;
left: 50%;
margin-left: 4px;
top: 4px;
}
uni-view uni-button, button {
padding: 0;
margin: 0;
background-color: #fff;
}
button:after, uni-view uni-button:after{
border:none;
}
.u-icon{
display: inline-flex !important;
}
.u-transition{
display: inline-block;
}
.u-tag-wrapper{
display: inline-block;
}
.u-tag{
display: inline-flex;
}
.u-tag+.u-tag {
margin-left: 4px;
}
.u-tag--mini{
height: 18px !important;
line-height: 18px !important;
margin-right: 4px !important;
}
.scrollbar::-webkit-scrollbar {
width: 12px;
height: 4px;
color:#ffffff;
display: block;
}
/*定义滚动条轨道 内阴影+圆角*/
.scrollbar::-webkit-scrollbar-track {
-webkit-box-shadow: inset 0 0 10px rgba(0, 0, 0, 0.3);
box-shadow: inset 0 0 6px rgba(0, 0, 0, 0.1);
border-radius: 6px;
background-color:#FFFFFF;
display: block;
}
/*定义滑块 内阴影+圆角*/
.scrollbar::-webkit-scrollbar-thumb {
border-radius: 6px;
-webkit-box-shadow: inset 0 0 10px rgba(0, 0, 0, 0.3);
box-shadow: inset 0 0 6px rgba(0, 0, 0, 0.1);
background-color: #F14939;
display: block;
}
.kuajing{
background: linear-gradient(to bottom , #A500FF, #63009B);
color: #fff;
font-size: 22rpx;
margin-right: 10rpx;
display: inline-block;
height: 32rpx;
vertical-align: middle;
width: 100rpx;
border-radius: 6rpx;
text-align: center;
line-height: 32rpx;
}
.u-button{
width: auto !important;
}
.u-number-box__plus, .u-number-box__minus{
width: 25px !important;
height: 25px !important;
}
.u-number-box__plus .u-icon__icon, .u-number-box__minus .u-icon__icon{
font-size: 12px !important;
}
.u-number-box__input{
background-color: #fff !important;
height: 25px !important;
}
</style>