App.vue 3.1 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788
  1. <script>
  2. import { mapState, mapMutations } from 'vuex';
  3. import BaseTool from '@/utils/tool';
  4. // 需要登录才能访问的 tabBar 页面路径(首页允许未登录浏览)
  5. const TAB_NEED_LOGIN = ['/pages/operate/operate', '/pages/middle/middle', '/pages/tidings/tidings', '/pages/my/my'];
  6. // 免登录可查看的普通页面白名单(扫码查看设备详情等场景)
  7. const PUBLIC_PAGES = ['/pages/equipment-detail/equipment-detail'];
  8. export default {
  9. mixins: [{
  10. onShow() {
  11. // 全局页面鉴权:未登录时记录来源页面并跳转登录
  12. const pages = getCurrentPages();
  13. if (!pages || pages.length === 0) return;
  14. const page = pages[pages.length - 1];
  15. const route = '/' + page.route;
  16. // 登录页本身不做鉴权
  17. if (route === '/pages/login/login') return;
  18. // 首页、白名单页面允许未登录浏览,其他页面需要登录
  19. if (route === '/pages/home/home') return;
  20. if (PUBLIC_PAGES.indexOf(route) !== -1) return;
  21. if (!BaseTool.UserUtil.isLogin()) {
  22. // 记录当前页面路径(含参数),登录成功后回跳
  23. try {
  24. const opts = page.options || (page.$page && page.$page.options) || {};
  25. const query = Object.keys(opts)
  26. .map(k => k + '=' + encodeURIComponent(opts[k]))
  27. .join('&');
  28. const isTab = TAB_NEED_LOGIN.indexOf(route) !== -1;
  29. uni.setStorageSync('login_back_url', route + (query ? '?' + query : ''));
  30. uni.setStorageSync('login_back_is_tab', isTab);
  31. } catch (e) {}
  32. uni.navigateTo({ url: '/pages/login/login' });
  33. }
  34. }
  35. }],
  36. methods: {
  37. ...mapMutations(['_login', '_userInfo'])
  38. },
  39. onLaunch: function () {
  40. const token = uni.getStorageSync('token');
  41. if (token) {
  42. this._login(token);
  43. }
  44. const userInfo = uni.getStorageSync('userInfo');
  45. if (userInfo) {
  46. this._userInfo(userInfo);
  47. }
  48. // #ifdef MP-WEIXIN
  49. const updateManager = uni.getUpdateManager();
  50. updateManager.onCheckForUpdate(function (res) {
  51. // 请求完新版本信息的回调
  52. console.log(res.hasUpdate);
  53. });
  54. updateManager.onUpdateReady(function (res) {
  55. uni.showModal({
  56. title: '更新提示',
  57. content: '新版本已经准备好,是否重启应用?',
  58. success(res) {
  59. if (res.confirm) {
  60. // 新的版本已经下载好,调用 applyUpdate 应用新版本并重启
  61. updateManager.applyUpdate();
  62. }
  63. }
  64. });
  65. });
  66. updateManager.onUpdateFailed(function (res) {
  67. // 新的版本下载失败
  68. });
  69. // #endif
  70. // uni.navigateTo({
  71. // url:'pages/login/login'
  72. // })
  73. },
  74. onShow: function () {},
  75. onHide: function () {}
  76. };
  77. </script>
  78. <style lang="scss">
  79. @import 'uview-ui/index.scss';
  80. /*每个页面公共css */
  81. @import '/static/common/css/main.css';
  82. @import '/static/common/css/icon.css';
  83. @import '/static/common/css/state.css';
  84. </style>