merchapp/java-mall-app-shop-admin/App.vue
2025-07-19 15:25:11 +08:00

157 lines
4.0 KiB
Vue
Raw 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.

<script>
// #ifdef APP-PLUS
import APPUpdate, { getCurrentNo } from "@/config/appUpdate";
// #endif
import { mapState, mapActions } from "vuex";
export default {
data() {
return {
version: "",
};
},
onLaunch: function () {
uni.setStorageSync("isImSound", true);
this.globalData.isAppActive = true;
// #ifdef APP-PLUS
getCurrentNo((res) => {
this.version = res.version;
});
const hasAgreed = uni.getStorageSync("isNeedAgreementDialog");
if (hasAgreed) {
this.onAPPUpdate();
}
this.initAppOrderPush();
// #endif
},
computed: {
...mapState("user", ["uid", "userInfo", "socket"]),
},
onShow: function () {
this.globalData.isAppActive = true;
setTimeout(() => {
if (this.userInfo && Object.keys(this.userInfo).length > 0) {
this.connectSocket(this.userInfo);
}
});
},
onHide: function () {
this.globalData.isAppActive = false;
},
globalData: {
isAppActive: false,
},
onBackPress: function () {},
methods: {
...mapActions("user", ["connectSocket"]),
onAPPUpdate() {
APPUpdate(this.version);
},
getCidAsync() {
return new Promise(function (resolve, reject) {
// 获取客户端推送信息
plus.push.getClientInfoAsync(
function (clientInfo) {
// 获取CID
var cid = clientInfo.clientid;
// 调用resolve方法返回CID
resolve(cid);
},
function (error) {
// 获取CID失败调用reject方法返回错误信息
reject(error);
}
);
});
},
initAppOrderPush() {
uni.getPushClientId({
success: (res) => {
var push_clientid = res.cid;
console.log("客户端推送标识cid:", push_clientid);
uni.showToast({
title: push_clientid,
icon: "success",
duration: 1000,
});
console.log(push_clientid);
uni.setClipboardData({
data: push_clientid, // 需要复制的内容
success: () => {
// 成功提示框显示 1 秒钟
// uni.showToast({
// title: "复制成功",
// icon: "success",
// duration: 1000,
// });
},
fail: () => {
// 失败提示框显示 1 秒钟
uni.showToast({
title: "复制失败,请重试",
icon: "none",
duration: 1000,
});
},
});
},
fail(err) {
console.log(err);
},
});
uni.onPushMessage((res) => {
console.log("收到推送消息:", res); //监听推送消息
if (res.data) {
const app = getApp();
if (!app.globalData.isAppActive) {
// 读取历史数据
const ordrPushHistoryList =
uni.getStorageSync("PUSH_MSG_DATA") || [];
// 追加新数据(确保 historyList 是数组)
const newList = Array.isArray(ordrPushHistoryList)
? [...ordrPushHistoryList, res.data]
: [res.data];
// 存储更新后的数组
uni.setStorageSync("PUSH_MSG_DATA", newList);
// 创建通知
uni.createPushMessage(res.data);
} else {
console.log("应用已打开,直接处理消息");
// 可以在这里直接更新 UI
this.$store.dispatch("order/orderPush", res.data);
}
}
});
const _self = this;
//监听系统通知栏消息点击事件
},
},
};
</script>
<style lang="scss">
// @import "./uni_modules/uview-ui/index.scss";
// @import "./uni_modules/uview-ui/theme.scss";
/*每个页面公共css */
@import "@/static/reset.css";
@import "@/styles/myui.scss";
@import "@/static/font/iconfont.css";
::v-deep.uni-tabbar-bottom {
display: none;
}
::v-deep.uni-navbar {
min-height: 110rpx;
}
</style>