App.vue 6.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175
  1. <script setup>
  2. /*----------------------------------依赖引入-----------------------------------*/
  3. import { onLoad, onShow, onHide, onLaunch, onReady, onBackPress } from "@dcloudio/uni-app";
  4. import { defineComponent, getCurrentInstance, inject, nextTick, onMounted, watchEffect, ref } from "vue";
  5. /*----------------------------------接口引入-----------------------------------*/
  6. /*----------------------------------组件引入-----------------------------------*/
  7. /*----------------------------------store引入-----------------------------------*/
  8. /*----------------------------------公共方法引入-----------------------------------*/
  9. import config from "./config";
  10. import { storageSystem } from "@/utils/storage";
  11. /*----------------------------------公共变量-----------------------------------*/
  12. const { proxy } = getCurrentInstance();
  13. /*----------------------------------变量声明-----------------------------------*/
  14. function initApp() {
  15. proxy.$settingStore.initThemeColor(storageSystem.get("themeColor")); //初始化默认主题
  16. proxy.$settingStore.systemHeightTop(); //初始化获取安全区高度
  17. //#ifdef APP-PLUS
  18. stteingInit();
  19. //#endif
  20. }
  21. //设置初始化
  22. function stteingInit() {
  23. plus.screen.unlockOrientation(); //解除屏幕方向的锁定,但是不一定是竖屏;
  24. // 综合智慧云
  25. if (config.appInfo.appid === "__UNI__36DE3A0") {
  26. plus.screen.lockOrientation("portrait-primary"); //设置屏幕方向(1.竖屏正方向:portrait-primary 2.竖屏反方向:portrait-secondary 3.横屏正方向:landscape-primary 4.横屏反方向:landscape-secondary 5.自然方向:default)
  27. }
  28. // 智能巡更
  29. else if (config.appInfo.appid === "__UNI__BF1A1F0") {
  30. plus.screen.lockOrientation("portrait-primary"); //设置屏幕方向(1.竖屏正方向:portrait-primary 2.竖屏反方向:portrait-secondary 3.横屏正方向:landscape-primary 4.横屏反方向:landscape-secondary 5.自然方向:default)
  31. proxy.$keyListen.startListen(true); //开启物理按钮监听
  32. }
  33. // 智能会议
  34. else if (config.appInfo.appid === "__UNI__F3963F8") {
  35. plus.screen.lockOrientation("landscape-primary"); //设置屏幕方向(1.竖屏正方向:portrait-primary 2.竖屏反方向:portrait-secondary 3.横屏正方向:landscape-primary 4.横屏反方向:landscape-secondary 5.自然方向:default)
  36. }
  37. // 智能门禁
  38. else if (config.appInfo.appid === "__UNI__8D6E9FD") {
  39. plus.screen.lockOrientation("portrait-primary"); //设置屏幕方向(1.竖屏正方向:portrait-primary 2.竖屏反方向:portrait-secondary 3.横屏正方向:landscape-primary 4.横屏反方向:landscape-secondary 5.自然方向:default)
  40. plus.navigator.hideSystemNavigation(); //隐藏安卓底部虚拟导航键
  41. }
  42. proxy.$settingStore.pushListener(); //开启消息推送监听
  43. }
  44. // 设置手机通知权限
  45. function setPermissions() {
  46. // #ifdef APP-PLUS
  47. if (plus.os.name == "Android") {
  48. // 判断是Android
  49. var main = plus.android.runtimeMainActivity();
  50. var pkName = main.getPackageName();
  51. var uid = main.getApplicationInfo().plusGetAttribute("uid");
  52. var NotificationManagerCompat = plus.android.importClass("android.support.v4.app.NotificationManagerCompat");
  53. //android.support.v4升级为androidx
  54. if (NotificationManagerCompat == null) {
  55. NotificationManagerCompat = plus.android.importClass("androidx.core.app.NotificationManagerCompat");
  56. }
  57. var areNotificationsEnabled = NotificationManagerCompat.from(main).areNotificationsEnabled();
  58. // 未开通‘允许通知’权限,则弹窗提醒开通,并点击确认后,跳转到系统设置页面进行设置
  59. if (!areNotificationsEnabled) {
  60. uni.showModal({
  61. title: "通知权限开启提醒",
  62. content: "您还没有开启通知权限,无法接受到消息通知,请前往设置!",
  63. showCancel: false,
  64. confirmText: "去设置",
  65. success: function (res) {
  66. if (res.confirm) {
  67. var Intent = plus.android.importClass("android.content.Intent");
  68. var Build = plus.android.importClass("android.os.Build");
  69. //android 8.0引导
  70. if (Build.VERSION.SDK_INT >= 26) {
  71. var intent = new Intent("android.settings.APP_NOTIFICATION_SETTINGS");
  72. intent.putExtra("android.provider.extra.APP_PACKAGE", pkName);
  73. } else if (Build.VERSION.SDK_INT >= 21) {
  74. //android 5.0-7.0
  75. var intent = new Intent("android.settings.APP_NOTIFICATION_SETTINGS");
  76. intent.putExtra("app_package", pkName);
  77. intent.putExtra("app_uid", uid);
  78. } else {
  79. //(<21)其他--跳转到该应用管理的详情页
  80. intent.setAction(Settings.ACTION_APPLICATION_DETAILS_SETTINGS);
  81. var uri = Uri.fromParts("package", mainActivity.getPackageName(), null);
  82. intent.setData(uri);
  83. }
  84. // 跳转到该应用的系统通知设置页
  85. main.startActivity(intent);
  86. }
  87. },
  88. });
  89. }
  90. } else if (plus.os.name == "iOS") {
  91. // 判断是ISO
  92. var isOn = undefined;
  93. var types = 0;
  94. var app = plus.ios.invoke("UIApplication", "sharedApplication");
  95. var settings = plus.ios.invoke(app, "currentUserNotificationSettings");
  96. if (settings) {
  97. types = settings.plusGetAttribute("types");
  98. plus.ios.deleteObject(settings);
  99. } else {
  100. types = plus.ios.invoke(app, "enabledRemoteNotificationTypes");
  101. }
  102. plus.ios.deleteObject(app);
  103. isOn = 0 != types;
  104. if (isOn == false) {
  105. uni.showModal({
  106. title: "通知权限开启提醒",
  107. content: "您还没有开启通知权限,无法接受到消息通知,请前往设置!",
  108. showCancel: false,
  109. confirmText: "去设置",
  110. success: function (res) {
  111. if (res.confirm) {
  112. var app = plus.ios.invoke("UIApplication", "sharedApplication");
  113. var setting = plus.ios.invoke("NSURL", "URLWithString:", "app-settings:");
  114. plus.ios.invoke(app, "openURL:", setting);
  115. plus.ios.deleteObject(setting);
  116. plus.ios.deleteObject(app);
  117. }
  118. },
  119. });
  120. }
  121. }
  122. // #endif
  123. }
  124. watchEffect(() => {
  125. //#ifdef APP-PLUS || MP-WEIXIN
  126. if (uni.getStorageSync("serveUrl")) {
  127. config.baseUrl = "http://" + uni.getStorageSync("serveUrl") + "/prod-api";
  128. }
  129. //#endif
  130. });
  131. onLaunch(() => {
  132. console.log("App Launch");
  133. initApp();
  134. });
  135. onReady(() => {});
  136. onShow(() => {
  137. console.log("App Show");
  138. });
  139. onHide(() => {
  140. console.log("App Hide");
  141. });
  142. </script>
  143. <style lang="scss">
  144. @import "@/static/scss/index.scss";
  145. </style>
  146. <style lang="scss">
  147. @import "@/uni_modules/uview-plus/index.scss";
  148. uni-page-body,
  149. uni-page-refresh {
  150. height: 100%;
  151. }
  152. //默认返回按钮样式
  153. :deep(.uni-page-head-btn) {
  154. background-color: rgba(0, 0, 0, 0) !important;
  155. }
  156. //默认头部导航title样式
  157. :deep(.uni-page-head__title) {
  158. font-size: $uni-font-size-lg;
  159. font-weight: bold;
  160. }
  161. </style>