platDiff.js 3.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101
  1. import * as utils from './utils.js';
  2. export default {
  3. // 获取不带options的路由
  4. route(page = null) {
  5. if (!page) {
  6. let pages = getCurrentPages();
  7. if (pages.length) {
  8. page = pages[pages.length - 1];
  9. }
  10. }
  11. let route = '';
  12. // #ifndef MP-TOUTIAO
  13. route = `/${page.route.split('?')[0]}`;
  14. // #endif
  15. // #ifdef MP-TOUTIAO
  16. route = `/${page.__route__.split('?')[0]}`;
  17. // #endif
  18. return route;
  19. },
  20. // 获取带options的路由
  21. routeWithOption(page = null) {
  22. if (!page) {
  23. let pages = getCurrentPages();
  24. if (pages.length) {
  25. page = pages[pages.length - 1];
  26. }
  27. }
  28. let route = '';
  29. // #ifndef MP-TOUTIAO
  30. route = `/${page.route.split('?')[0]}`;
  31. // #endif
  32. // #ifdef MP-TOUTIAO
  33. route = `/${page.__route__.split('?')[0]}`;
  34. // #endif
  35. if (page.options) {
  36. route += '?' + utils.objectToUrlParams(page.options);
  37. }
  38. return route;
  39. },
  40. // 获取带options(去除某些特定参数的)的路由 page_count--created时总页面数量
  41. tabBarUrl(page = null, page_count = 0) {
  42. if (!page) {
  43. let pages = getCurrentPages();
  44. if (pages.length) {
  45. let diff = (pages.length - page_count) > 0 && page_count > 0 ? pages.length - page_count : 0;
  46. page = pages[pages.length - 1 - diff];
  47. }
  48. }
  49. let route = '';
  50. // #ifndef MP-TOUTIAO
  51. route = `/${page.route.split('?')[0]}`;
  52. // #endif
  53. // #ifdef MP-TOUTIAO
  54. route = `/${page.__route__.split('?')[0]}`;
  55. // #endif
  56. let options = {};
  57. // #ifdef MP-ALIPAY
  58. if (route === '/pages/index/index') {
  59. options = {
  60. page_id: page.data.page_id
  61. };
  62. }
  63. if (route === '/pages/cats/cats' && typeof page.data.options.cat_id !== 'undefined') {
  64. options = {
  65. cat_id: page.data.options.cat_id
  66. };
  67. }
  68. // #endif
  69. // #ifndef MP-ALIPAY
  70. options = page.options;
  71. // #endif
  72. if (options) {
  73. let params = {};
  74. for (let key in options) {
  75. if (!(key == 'user_id' || key == 'scene' || key == 'params' || key == 'first_id' || key == 'select_cat_id' || key == 'path'
  76. || key == 'share_openid' || key == 'custom_params' || key == 'room_id' || key == 'openid'
  77. || key == 'multipleSlots' || key == 'addGlobalClass')) {
  78. if (key == 'page_id') {
  79. if (options[key] > 0) {
  80. params[key] = options[key];
  81. }
  82. } else {
  83. params[key] = options[key];
  84. }
  85. }
  86. }
  87. params = utils.objectToUrlParams(params);
  88. if (params) {
  89. route += '?' + params;
  90. }
  91. }
  92. return route;
  93. },
  94. }