routeJump.js 5.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175
  1. import store from '../store/index.js';
  2. import user from '../core/user.js';
  3. import { clearStorage } from '../core/cache.js';
  4. const jump = function(data) {
  5. if (!data.open_type && !data.params && !data.page_url) return;
  6. let open_type = data.open_type;
  7. let params = data.params;
  8. let page_url = data.page_url;
  9. if (!Array.isArray(params) && Object.prototype.toString.call(params) ==="[object String]" && params) {
  10. params = JSON.parse(params);
  11. }
  12. switch (open_type) {
  13. case 'reLaunch':
  14. uni.reLaunch({
  15. url: params[0].value,
  16. });
  17. break;
  18. case 'redirect':
  19. uni.redirectTo({
  20. url: params[0].value,
  21. });
  22. break;
  23. case 'navigate':
  24. let new_page_url = page_url.split('?')[0];
  25. let options = `?`;
  26. for (let i = 0; i < params.length; i++) {
  27. options += `${params[i].key}=${params[i].value}&`;
  28. }
  29. new_page_url += options.slice(0, options.length - 1);
  30. if (options === '?') {
  31. new_page_url = page_url;
  32. }
  33. /* #ifdef MP-BAIDU || MP-TOUTIAO */
  34. if (page_url.split('?')[0] !== '/plugins/step/index/index') {
  35. uni.navigateTo({
  36. url: new_page_url
  37. });
  38. }
  39. /* #endif */
  40. /* #ifdef MP-WEIXIN || MP-ALIPAY */
  41. uni.navigateTo({
  42. url: new_page_url
  43. });
  44. /* #endif */
  45. break;
  46. case 'app_admin':
  47. if (store.state.user.info.identity.is_admin == 1) {
  48. uni.navigateTo({
  49. url: data.url,
  50. });
  51. }
  52. break;
  53. case 'back':
  54. uni.navigateBack({});
  55. break;
  56. case 'tel':
  57. uni.makePhoneCall({
  58. phoneNumber: params[0].value,
  59. });
  60. break;
  61. case 'web':
  62. uni.navigateTo({
  63. url: `${page_url.split('?')[0]}?url=${encodeURIComponent(params[0].value)}`
  64. });
  65. break;
  66. case 'app':
  67. let originalPath = '';
  68. for (let i = 0; i < params.length; i++) {
  69. originalPath += `${params[i].key}=${params[i].value}&`;
  70. }
  71. if (typeof originalPath !== 'string') return;
  72. let groups = originalPath.split('&');
  73. let obj = {};
  74. for (let i in groups) {
  75. if (typeof groups[i] !== 'string') continue;
  76. if (!groups[i].length) continue;
  77. let kvs = groups[i].split('=');
  78. if (kvs.length !== 2) {
  79. let s = '';
  80. for (let i = 1; i < kvs.length; i++) {
  81. if (i+1 === kvs.length) {
  82. continue;
  83. } else {
  84. s += `${kvs[i]}=${kvs[i+1]}`
  85. }
  86. }
  87. obj[kvs[0]] = s;
  88. } else {
  89. obj[kvs[0]] = kvs[1];
  90. }
  91. }
  92. let new_params = obj;
  93. let appId = '';
  94. let path = '';
  95. // #ifdef MP-WEIXIN
  96. appId = new_params.app_id || '';
  97. path = new_params.path || '';
  98. // #endif
  99. // #ifdef MP-ALIPAY
  100. appId = new_params.ali_app_id || '';
  101. path = new_params.ali_path || '';
  102. // #endif
  103. // #ifdef MP-TOUTIAO
  104. appId = new_params.tt_app_id || '';
  105. path = new_params.tt_path || '';
  106. // #endif
  107. // #ifdef MP-BAIDU
  108. appId = new_params.bd_app_key || '';
  109. path = new_params.bd_path || '';
  110. // #endif
  111. uni.navigateToMiniProgram({
  112. appId: appId,
  113. path: path
  114. });
  115. break;
  116. case 'clear_cache':
  117. uni.showModal({
  118. title: '提示',
  119. content: '确认清理缓存?',
  120. cancelText: '取消',
  121. confirmText: '确认',
  122. success: (e) => {
  123. if (e.confirm) {
  124. uni.showLoading({
  125. title: '清理缓存...',
  126. });
  127. clearStorage();
  128. if (user && store && store.state.user.accessToken) {
  129. user.loginByToken(store.state.user.accessToken);
  130. }
  131. store.dispatch('mallConfig/actionResetConfig');
  132. uni.hideLoading();
  133. uni.showToast({
  134. title: '清理完成',
  135. duration: 1000,
  136. });
  137. }
  138. },
  139. });
  140. break;
  141. case 'map':
  142. // uni.openLocation({
  143. // latitude: Number(this.latitude),
  144. // longitude: Number(this.longitude),
  145. // name: this.address,
  146. // address: this.address,
  147. // success: function () {
  148. // },
  149. // fail: function () {
  150. // }
  151. // });
  152. break;
  153. // case 'share':
  154. }
  155. };
  156. export default jump;