You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 
 
 

670 lines
12 KiB

<script>
import index from '@/store/index.js';
import Api from '@/common/api';
// #ifdef APP-PLUS
import APPUpdate from "plugins/APPUpdate/index.js";
// #endif
/**
* vuex管理登陆状态,具体可以参考官方登陆模板示例
*/
import {
mapMutations
} from 'vuex';
export default {
methods: {
...mapMutations(['login']),
// util.js
// 微信公众号授权
wxAuthorize() {
let link = window.location.href;
let params = this._getUrlParams(link); // 地址解析
// 已经授权登录过的就不用再授权了
if (store.state.token) return;
// 如果拿到code,调用授权接口,没有拿到就跳转微信授权链接获取
if (params.code) {
api.wxAuth(params.code); // 调用后台接口,授权
} else {
let appid = 'wx8321531c6046c924';
let uri = encodeURIComponent(link);
let authURL =
`https://open.weixin.qq.com/connect/oauth2/authorize?appid=${appid}&redirect_uri=${uri}&response_type=code&scope=snsapi_userinfo&state=123#wechat_redirect`;
window.location.href = authURL;
}
},
async typeGoodsList() {
let params = {};
let list = await Api.apiCall('get', Api.goods.typeGoodsList, params);
this.$db.set('categoryList', list)
},
async areaGoodsList() {
let params = {};
let list = await Api.apiCall('get', Api.goods.areaGoodsList, params);
this.$db.set('areaGoodsList', list)
},
async sysInfoMethod() {
console.log('sysInfo11111111>>>>>')
let params = {};
let list = await Api.apiCall('get', Api.index.sysInfo, params);
console.log('sysInfo222222222>>>>>', sysInfo)
this.$db.set('sysInfo', list)
},
// 获取CID
getCid() {
// #ifdef APP-PLUS
var t1_time = 0;
let that = this;
var t1 = setInterval(function() {
var cid = plus.push.getClientInfo().clientid;
console.log(cid != undefined, cid != "undefined", cid)
console.log("cid>>>>>>>>>>", cid)
if (cid != null || cid != "null") {
that.pushCid(cid);
uni.setStorageSync('cid', cid);
clearInterval(t1);
return
}
}, 130);
// #endif
},
async pushCid(val) {
console.log('pushCid1111111>>>>>', val)
let params = {
cid: val
};
console.log("pushCid>>>>", params);
let data = await Api.apiCall('post', Api.index.pushCid, params);
console.log('pushCid22222222>>>>>', data)
},
// 监听通知信息
handlePush() {
let that = this;
// #ifdef APP-PLUS
const _handlePush = function(message) {
console.log("message>>>>>>>>>>", message)
console.log("payload>>>>>>>>>>", message.payload.code)
// uni.setStorageSync('message', message);
//获取自定义信息
// let payload = message.payload;
// console.log("payload>>>>>>>>>>", payload.code)
if ("系统消息" == message.payload.code) {
// 系统消息
console.log("系统消息>>>>>>>>>>", message.payload.code)
that.goToMessageDetail(message.payload)
} else {
// 非系统消息
if (index.state.hasLogin) {
// 登录状态
console.log("登录状态>>>>>>>>>>", message.payload.code)
that.goToMessageDetail(message.payload)
} else {
// 非登录状态
console.log("非登录状态>>>>>>>>>>", message.payload.code)
// uni.navigateTo({
// url: "/pages/public/login"
// });
uni.showToast({
title: '请先登录',
icon: 'none'
});
uni.switchTab({
url: '/pages/index/messageList'
})
}
}
}
// 事件处理
// 从系统消息中心点击消息启动应用事件
// plus.push.addEventListener('click', _handlePush)
// 应用从推送服务器接收到推送消息事件
plus.push.addEventListener('receive', _handlePush)
// #endif
},
goToMessageDetail(payload) {
let item = {
params: payload.params,
code: payload.code,
ctime: payload.ctime,
content: payload.content,
}
console.log("goToMessageDetail>>>>>>>>>>", item)
uni.navigateTo({
url: '/pages/index/messageDetail',
// 版本2.8.9+ 支持
success: (res) => {
// 和上面其实没差什么,但是这种方式是可以的 这里不是$emit
res.eventChannel.emit('sendTestValue', {
info: item
})
}
});
}
},
onLaunch: function() {
// uni.removeStorageSync('userInfo');
// uni.removeStorageSync('token');
console.log('App onLaunch')
let userInfo = uni.getStorageSync('userInfo') || '';
let token = uni.getStorageSync('token') || '';
console.log('App onLaunch>>>', userInfo)
console.log('App onLaunch>>>', token)
if (token) {
index.state.hasLogin = true
//更新登陆状态
uni.getStorage({
key: 'userInfo',
data: userInfo
});
console.log('hasLogin>>>', index.state.hasLogin)
}
if (userInfo) {
index.state.hasVip = userInfo.memberLevelId == 1 ? false : true;
}
let isWeiXin = this.$common.isWeiXinBrowser()
if (isWeiXin) {
this.wxAuthorize()
}
this.typeGoodsList();
this.areaGoodsList();
this.sysInfoMethod();
// #ifdef APP-PLUS
APPUpdate();
// uni.showToast({
// title: "正式版本新版本哦2",
// icon: "none"
// });
// #endif
this.handlePush();
this.getCid();
// console.log('App onLaunch111111111111>>>', token)
// let sss = {
// "url": "http://mall.yyundong.com/portalapi/api/appVersion/versioninfo",
// "resolve": {
// "data": {
// "code": 200,
// "data": "{\"id\":null,\"appName\":null,\"versionCode\":1010,\"versionName\":\"1.0.1.0\",\"downloadUrl\":\"http://mall.yyundong.com/apks/mall-1010.apk\",\"versionInfo\":\"BUG修复。\",\"isAlpha\":null,\"fileName\":\"mall-1010.apk\",\"forceUpdate\":false}"
// },
// "statusCode": 200,
// "header": {
// "X-XSS-Protection": "1; mode=block",
// "Connection": "keep-alive",
// "Content-Length": "268",
// "X-Content-Type-Options": "nosniff",
// "Cache-Control": "no-cache, no-store, max-age=0, must-revalidate",
// "Date": "Thu, 16 Mar 2023 05:48:35 GMT",
// "Expires": "0",
// "X-Frame-Options": "DENY",
// "Content-Type": "application/json;charset=UTF-8",
// "Server": "nginx/1.20.2",
// "Pragma": "no-cache"
// },
// "errMsg": "request:ok",
// "cookies": []
// },
// "header": {
// "Content-Type": "application/json;charset=UTF-8"
// },
// "data": {
// "version": "1010",
// "type": 1101
// },
// "method": "GET"
// }
// uni.setStorageSync('message', sss);
},
onShow: function() {
console.log('App Show')
},
onHide: function() {
console.log('App Hide')
},
}
</script>
<style lang='scss'>
/*
全局公共样式和字体图标
*/
@font-face {
font-family: yticon;
font-weight: normal;
font-style: normal;
src: url('https://at.alicdn.com/t/font_1078604_w4kpxh0rafi.ttf') format('truetype');
}
.yticon {
font-family: "yticon" !important;
font-size: 16px;
font-style: normal;
-webkit-font-smoothing: antialiased;
-moz-osx-font-smoothing: grayscale;
}
.icon-yiguoqi1:before {
content: "\e700";
}
.icon-iconfontshanchu1:before {
content: "\e619";
}
.icon-iconfontweixin:before {
content: "\e611";
}
.icon-alipay:before {
content: "\e636";
}
.icon-shang:before {
content: "\e624";
}
.icon-shouye:before {
content: "\e626";
}
.icon-shanchu4:before {
content: "\e622";
}
.icon-xiaoxi:before {
content: "\e618";
}
.icon-jiantour-copy:before {
content: "\e600";
}
.icon-fenxiang2:before {
content: "\e61e";
}
.icon-pingjia:before {
content: "\e67b";
}
.icon-daifukuan:before {
content: "\e68f";
}
.icon-pinglun-copy:before {
content: "\e612";
}
.icon-dianhua-copy:before {
content: "\e621";
}
.icon-shoucang:before {
content: "\e645";
}
.icon-xuanzhong2:before {
content: "\e62f";
}
.icon-gouwuche_:before {
content: "\e630";
}
.icon-icon-test:before {
content: "\e60c";
}
.icon-icon-test1:before {
content: "\e632";
}
.icon-bianji:before {
content: "\e646";
}
.icon-jiazailoading-A:before {
content: "\e8fc";
}
.icon-zuoshang:before {
content: "\e613";
}
.icon-jia2:before {
content: "\e60a";
}
.icon-huifu:before {
content: "\e68b";
}
.icon-sousuo:before {
content: "\e7ce";
}
.icon-arrow-fine-up:before {
content: "\e601";
}
.icon-hot:before {
content: "\e60e";
}
.icon-lishijilu:before {
content: "\e6b9";
}
.icon-zhengxinchaxun-zhifubaoceping-:before {
content: "\e616";
}
.icon-naozhong:before {
content: "\e64a";
}
.icon-xiatubiao--copy:before {
content: "\e608";
}
.icon-shoucang_xuanzhongzhuangtai:before {
content: "\e6a9";
}
.icon-jia1:before {
content: "\e61c";
}
.icon-bangzhu1:before {
content: "\e63d";
}
.icon-arrow-left-bottom:before {
content: "\e602";
}
.icon-arrow-right-bottom:before {
content: "\e603";
}
.icon-arrow-left-top:before {
content: "\e604";
}
.icon-icon--:before {
content: "\e744";
}
.icon-zuojiantou-up:before {
content: "\e605";
}
.icon-xia:before {
content: "\e62d";
}
.icon--jianhao:before {
content: "\e60b";
}
.icon-weixinzhifu:before {
content: "\e61a";
}
.icon-comment:before {
content: "\e64f";
}
.icon-weixin:before {
content: "\e61f";
}
.icon-fenlei1:before {
content: "\e620";
}
.icon-erjiye-yucunkuan:before {
content: "\e623";
}
.icon-Group-:before {
content: "\e688";
}
.icon-you:before {
content: "\e606";
}
.icon-forward:before {
content: "\e607";
}
.icon-tuijian:before {
content: "\e610";
}
.icon-bangzhu:before {
content: "\e679";
}
.icon-share:before {
content: "\e656";
}
.icon-yiguoqi:before {
content: "\e997";
}
.icon-shezhi1:before {
content: "\e61d";
}
.icon-fork:before {
content: "\e61b";
}
.icon-kafei:before {
content: "\e66a";
}
.icon-iLinkapp-:before {
content: "\e654";
}
.icon-saomiao:before {
content: "\e60d";
}
.icon-shezhi:before {
content: "\e60f";
}
.icon-shouhoutuikuan:before {
content: "\e631";
}
.icon-gouwuche:before {
content: "\e609";
}
.icon-dizhi:before {
content: "\e614";
}
.icon-fenlei:before {
content: "\e706";
}
.icon-xingxing:before {
content: "\e70b";
}
.icon-tuandui:before {
content: "\e633";
}
.icon-zuanshi:before {
content: "\e615";
}
.icon-zuo:before {
content: "\e63c";
}
.icon-shoucang2:before {
content: "\e62e";
}
.icon-shouhuodizhi:before {
content: "\e712";
}
.icon-yishouhuo:before {
content: "\e71a";
}
.icon-dianzan-ash:before {
content: "\e617";
}
view,
scroll-view,
swiper,
swiper-item,
cover-view,
cover-image,
icon,
text,
rich-text,
progress,
button,
checkbox,
form,
input,
label,
radio,
slider,
switch,
textarea,
navigator,
audio,
camera,
image,
video {
box-sizing: border-box;
}
html,
body,
#app {
height: 100%;
}
/* 骨架屏替代方案 */
.Skeleton {
background: #f3f3f3;
padding: 20upx 0;
border-radius: 8upx;
}
/* 图片载入替代方案 */
.image-wrapper {
font-size: 0;
background: #f3f3f3;
border-radius: 4px;
image {
width: 100%;
height: 100%;
transition: .6s;
opacity: 0;
&.loaded {
opacity: 1;
}
}
}
.clamp {
overflow: hidden;
text-overflow: ellipsis;
white-space: nowrap;
display: block;
}
.common-hover {
background: #f5f5f5;
}
/*边框*/
.b-b:after,
.b-t:after {
position: absolute;
z-index: 3;
left: 0;
right: 0;
height: 0;
content: '';
transform: scaleY(.5);
border-bottom: 1px solid $border-color-base;
}
.b-b:after {
bottom: 0;
}
.b-t:after {
top: 0;
}
/* button样式改写 */
uni-button,
button {
height: 80upx;
line-height: 80upx;
font-size: $font-lg + 2upx;
font-weight: normal;
&.no-border:before,
&.no-border:after {
border: 0;
}
}
uni-button[type=default],
button[type=default] {
color: $font-color-dark;
}
/* input 样式 */
.input-placeholder {
color: #999999;
}
.placeholder {
color: #999999;
}
</style>