| | |
| | | <script> |
| | | import WebSocketServices from "./utils/WebSocketServices"; |
| | | import { |
| | | getOpenId, |
| | | setUserInfo, |
| | | setToken, |
| | | getToken |
| | | getToken, |
| | | getUserInfo |
| | | } from "./utils/auth"; |
| | | import getuiUtils from "./utils/getuiUtils"; |
| | | export default { |
| | | onLaunch: function() { |
| | | console.log('App Launch') |
| | | // #ifdef H5 |
| | | // 测试时,H5页面刷新会丢失WebSocket连接,需触发重连 (需要测试的时候再解除注释,否则会影响热更新) |
| | | // if (uni.getStorageSync("userinfo")) { |
| | | // if (WebSocketServices.wsInstance) { // 假设你的 WebSocket 实例存在 wsInstance 中 |
| | | // WebSocketServices.closeConnect(); // 调用你封装的“关闭连接”方法 |
| | | // } |
| | | |
| | | // setTimeout(() => { |
| | | // WebSocketServices.createConnect( |
| | | // getUserInfo()["Czybm"], |
| | | // getUserInfo()["Czymc"], |
| | | // ) |
| | | // }, 500) |
| | | |
| | | // } |
| | | |
| | | // // 关键:监听热更新模块替换,销毁旧连接 |
| | | // if (module.hot) { |
| | | // module.hot.accept(); // 允许当前模块热更新 |
| | | // module.hot.dispose(() => { |
| | | // // 热更新替换模块前,销毁 WebSocket 连接 |
| | | // if (WebSocketServices.wsInstance) { |
| | | // WebSocketServices.closeConnect(); |
| | | // WebSocketServices.wsInstance = null; // 重置实例 |
| | | // } |
| | | // }); |
| | | // } |
| | | // #endif |
| | | |
| | | // #ifdef APP-PLUS || APP |
| | | // 监听 App 启动时的推送参数(冷启动:App 关闭后点击通知启动) |
| | | const launchOpts = plus.runtime.launchArguments; |
| | | if (launchOpts && launchOpts.payload) { |
| | | this.handlePushJump(launchOpts.payload); // 处理跳转 |
| | | } |
| | | |
| | | // 监听通知点击事件(热启动:App 后台运行时点击通知) |
| | | plus.push.addEventListener("click", (msg) => { |
| | | let payload = {}; |
| | | console.log('msg: ', msg); |
| | | // 兼容不同格式的 payload(本地推送 vs 远程推送) |
| | | if (typeof msg.payload === "string") { |
| | | payload = JSON.parse(msg.payload); // 远程推送可能是字符串,需解析 |
| | | } else { |
| | | payload = msg.payload; // 本地推送是对象 |
| | | } |
| | | this.handlePushJump(payload); // 处理跳转 |
| | | }); |
| | | |
| | | // 个推v1版本只能通过透传传参 |
| | | plus.push.addEventListener('receive', (msg) => { |
| | | console.log('收到 V1 版本透传消息:', msg); |
| | | // 仅透传模板需要(通知模板无需处理) |
| | | if (msg.payload) { |
| | | this.handlePushJump(msg.payload); |
| | | } |
| | | }, false); |
| | | // #endif |
| | | }, |
| | | onShow: function() { |
| | | console.log('App Show') |
| | | |
| | | |
| | | }, |
| | | onHide: function() { |
| | | console.log('App Hide') |
| | | }, |
| | | methods: { |
| | | // 处理通知跳转逻辑 |
| | | handlePushJump(payload) { |
| | | console.log('payload-enter: ', payload); |
| | | if (!payload || !payload.pagePath) return; |
| | | |
| | | // 确保 App 处于前台 |
| | | // plus.runtime.foreground(); |
| | | |
| | | // 跳转到指定页面 |
| | | setTimeout(() => { |
| | | uni.navigateTo({ |
| | | url: `${payload.pagePath}?itemId=${payload.itemId}`, // 携带参数 |
| | | fail: (err) => { |
| | | // 若页面栈满(最多10层),使用 redirectTo 替换当前页面 |
| | | uni.redirectTo({ |
| | | url: `${payload.pagePath}?itemId=${payload.itemId}`, |
| | | }); |
| | | } |
| | | }); |
| | | }, 300) |
| | | } |
| | | } |
| | | } |
| | | </script> |
| | |
| | | |
| | | /* 用于解决picker内部设置 disabled input 时不响应的问题 */ |
| | | .picker-overlay { |
| | | box-sizing: border-box; |
| | | box-sizing: border-box; |
| | | position: absolute; |
| | | top: 0; |
| | | left: 0; |