App.vue 6.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193
  1. <script>
  2. import store from '@/store'
  3. import { mapMutations, mapActions, mapGetters } from 'vuex'
  4. //import { setTimeout } from 'timers'
  5. import { getDictionaries } from '@/api/mini'
  6. import util from "./utils/util"
  7. import priceSocket from "./mixins/priceSocket";
  8. //https://ext.dcloud.net.cn/plugin?id=22675
  9. import permissionListener from "@/uni_modules/c-permission-listener";
  10. export default {
  11. mixins:[priceSocket],
  12. // 全端,数据共享,还可以解决页面初始化模板访问不到值得
  13. // 有坑 分包里的页面访问不到
  14. globalData: {},
  15. onLaunch () {
  16. uni.removeStorageSync('suitInfoList');
  17. uni.removeStorageSync('productInfoList');
  18. uni.removeStorageSync('pxClassInfoList');
  19. // #ifdef APP-PLUS
  20. // 清除角标数字
  21. plus.runtime.setBadgeNumber(0);
  22. // #endif
  23. uni.onPushMessage((res) => {
  24. console.log("收到推送消息:",res) //监听推送消息
  25. let message = res.data;
  26. // 提取页面路径(支持 pagesOrder/detail 这样的格式)
  27. let pagePath = message.payload && message.payload.page;
  28. // 用户点击查看详情,跳转到指定页面
  29. // 检查是否需要添加 / 前缀
  30. let url = pagePath.startsWith('/') ? pagePath : `/${pagePath}`;
  31. // 如果有额外参数,拼接到URL
  32. if (message.params || (message.payload && message.payload.params)) {
  33. let params = message.params || message.payload.params;
  34. let queryString = Object.keys(params).map(key => `${key}=${params[key]}`).join('&');
  35. url = `${url}?${queryString}`;
  36. }
  37. console.log('推送消息跳转页面:', url);
  38. // 使用 navigateTo 跳转
  39. uni.navigateTo({
  40. url: url,
  41. fail: (err) => {
  42. console.error('页面跳转失败:', err);
  43. }
  44. });
  45. // 设置角标
  46. let badgeNumber = message.aps && message.aps.badge ? message.aps.badge - 1 : false;
  47. if (badgeNumber !== false) {
  48. //plus.runtime.setBadgeNumber(badgeNumber);
  49. // 清除数字
  50. plus.runtime.setBadgeNumber(0);
  51. } else {
  52. // 清除数字
  53. plus.runtime.setBadgeNumber(0);
  54. }
  55. })
  56. // #ifdef H5
  57. // H5开发环境无法微信授权,使用固定的用户 shish 2020.4.30
  58. if (process.env.NODE_ENV == "development") {
  59. uni.setStorageSync("token","eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiIsImp0aSI6IjBfNTIifQ.eyJpc3MiOiJodHRwczpcL1wvYXBpLnNob3AuaHpnaGQuY29tIiwiYXVkIjoiaHR0cHM6XC9cL2FwaS5zaG9wLmh6Z2hkLmNvbSIsImp0aSI6IjBfNTIiLCJpYXQiOjE2MTYxNTc2NjQsIm5iZiI6MTYxNjE1NzY2NCwiZXhwIjoxNjI0Nzk3NjY0LCJ1bmlxdWVJZCI6IjUyIiwic291cmNlSWQiOjB9.VzSekbSwSczMWsfdPVdrm3gZ-v9o3p01NbMVNT4nGZ4")
  60. uni.setStorageSync("account", "0")
  61. getDictionaries({ token: uni.getStorageSync('token') }).then(res => {
  62. if (util.isEmpty(res)) {
  63. return false
  64. }
  65. store.commit('setDictionariesInfo', {
  66. ...res.data.dict,
  67. ...res.data
  68. })
  69. store.commit('setMyShopInfo', {
  70. ...res.data.shop,
  71. ...res.data
  72. })
  73. })
  74. }
  75. // #endif
  76. // 删除缓存
  77. if (process.env.NODE_ENV == 'production') {
  78. uni.removeStorageSync('shopUser')
  79. }
  80. // #ifdef MP-WEIXIN
  81. // wxLoginFn()
  82. // uni.clearStorage()
  83. const extConfig = wx.getExtConfigSync ? wx.getExtConfigSync() : {}
  84. uni.setStorageSync('account', extConfig.account)
  85. // #endif
  86. },
  87. onLoad () {
  88. // const pages = getCurrentPages();
  89. // const currentPage = pages[pages.length - 1];
  90. // const url = `/${currentPage.route}`;
  91. // console.log(1111,url)
  92. },
  93. onShow (extraData) {
  94. // #ifdef APP-PLUS
  95. // 清除角标数字
  96. plus.runtime.setBadgeNumber(0);
  97. // #endif
  98. if(extraData){
  99. uni.setStorageSync('extraData',extraData)
  100. }
  101. // permissionEnums枚举建议单独一个js文件,然后引入
  102. const permissionEnums = {
  103. // 取android.permission.ACCESS_COARSE_LOCATION后面那个
  104. "ACCESS_COARSE_LOCATION": {
  105. name: "定位", // 当前权限的名称
  106. explain: "展示附近店铺、填写收货地址等相关功能" // 权限说明
  107. },
  108. "CALL_PHONE": {
  109. name: "电话", // 当前权限的名称
  110. explain: "为了方便联系客服, 我们需要申请您设备的拨打电话权限" // 权限说明
  111. },
  112. "CAMERA":{
  113. name:"使用摄像头",
  114. explain: "为了方便给花材拍照片,上传花材图片等"
  115. },
  116. "READ_EXTERNAL_STORAGE":{
  117. name:"读取外部存储空间",
  118. explain:"为了修改个人头像和上传花材图片, 我们需要申请您设备的相机和存储权限",
  119. },
  120. "WRITE_EXTERNAL_STORAGE":{
  121. name:"写入外部存储空间",
  122. explain:"为了保存推广海报和小程序码到手机相册, 我们需要申请您设备的存储权限",
  123. },
  124. "READ_MEDIA_IMAGES":{
  125. name:"读取外部存储空间",
  126. explain:"为了修改个人头像和上传花材图片, 我们需要申请您设备的相机和存储权限",
  127. },
  128. "READ_MEDIA_VIDEO":{
  129. name:"读取外部存储空间",
  130. explain:"为了修改个人头像和上传花材图片, 我们需要申请您设备的相机和存储权限",
  131. },
  132. "READ_MEDIA_AUDIO":{
  133. name:"读取外部存储空间",
  134. explain:"为了修改个人头像和上传花材图片, 我们需要申请您设备的相机和存储权限",
  135. },
  136. }
  137. // 唤起权限会触发onHide,所以listenerFunc须在onShow生命周期调用
  138. permissionListener && permissionListener.listenerFunc(permissionEnums)
  139. },
  140. onHide () { },
  141. onError (err) {
  142. console.error(err, '错误捕获')
  143. },
  144. methods: {
  145. ...mapActions(['setUserShopAll'])
  146. }
  147. }
  148. </script>
  149. <style lang="scss">
  150. //没有scss变量方法的,主要引入 这样打包的时候就不会所有的组件都打包进去
  151. @import "./static/iconfont/iconfont.css";
  152. @import "./static/css/uni2.css";
  153. @import "./static/css/base.scss";
  154. @import "./static/css/common.scss";
  155. @import "./static/css/reset.scss";
  156. page {
  157. height: 100%;
  158. }
  159. /**开单-扎和支切换样式**/
  160. .switchover-unit{
  161. position: fixed;
  162. left: calc(170upx / 2 - 50upx);
  163. bottom: 140upx;
  164. display: flex;
  165. align-items: center;
  166. justify-content: center;
  167. width: 100upx;
  168. height: 100upx;
  169. color: #FFFFFF;
  170. background: #4b8cf4;
  171. border-radius: 50%;
  172. font-size: 42upx;
  173. font-weight: 700;
  174. z-index: 2;
  175. }
  176. /**开单-增加减少动画**/
  177. .animation{animation:imgmove 0.3s 1;animation-iteration-count:1}
  178. @-webkit-keyframes imgmove{0%{transform: scale(0.7);}100%{transform: scale(1);}}
  179. </style>