tools.js 3.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157
  1. /**
  2. * http杞琱ttps
  3. */
  4. const toHttps = (url)=>{
  5. if(url.indexOf('http')>-1 && url.indexOf('https') == -1){
  6. url = url.replace('http', 'https');
  7. }
  8. return url;
  9. }
  10. /**
  11. * @param {
  12. jump_type 1.跳转H5 2.跳转新小程序 3.图片 4.跳转内部页面
  13. jump_config string | stringify(object)
  14. @param 其他参数 如:id,nav
  15. }
  16. * 注:jump_type,接口3和4有冲突所以写了兼容
  17. * 注:图片跳转逻辑空缺
  18. */
  19. const jump = ({jump_type, jump_config, ...params} = {})=>{
  20. console.log(params);
  21. return new Promise((resolve, reject)=>{
  22. if(!jump_type) reject(false);
  23. jump_config = jump_config == undefined ? "" : jump_config;
  24. if(jump_type == 1){
  25. const nav = Reflect.has(params, "nav") ? `&nav=${params.nav}` : ``;
  26. const url = `/pages/webview/webview?url=${jump_config+nav}`;
  27. uni.navigateTo({
  28. url: url,
  29. success: () => {
  30. resolve(true)
  31. },
  32. fail: _ => {
  33. uni.reLaunch({
  34. url: url,
  35. fail:(err)=>{
  36. reject(err)
  37. }
  38. })
  39. }
  40. });
  41. }else if(jump_type == 2){
  42. const {appid, path} = JSON.parse(jump_config);
  43. wx.navigateToMiniProgram({
  44. appId: `${appid}`,
  45. path: `${path}`,
  46. extraData: {
  47. foo: 'bar'
  48. },
  49. // envVersion: 'develop', //开发版develop 开发版 trial 体验版 release 正式版
  50. success:() => {
  51. resolve(true)
  52. },
  53. fail:(err) => {
  54. reject(err)
  55. }
  56. })
  57. }else if(jump_type == 3){
  58. if(jump_config.substr(0, 7) == '/pages/'){
  59. jumpInner(jump_config, params)
  60. .then(_=>{
  61. resolve(true)
  62. })
  63. .catch(err=>{
  64. reject(err)
  65. })
  66. }else{
  67. //图片跳转
  68. console.log("图片跳转逻辑空缺")
  69. }
  70. }else if(jump_type == 4){
  71. jumpInner(jump_config, params)
  72. .then(_=>{
  73. resolve(true)
  74. })
  75. .catch(err=>{
  76. reject(err)
  77. })
  78. }else{
  79. reject('unkown error')
  80. }
  81. })
  82. }
  83. /**
  84. * jumpy依赖函数
  85. */
  86. const jumpInner = (url, params)=>{
  87. const tabbarPageList = [
  88. 'pages/index/index',
  89. 'pages/map/map',
  90. 'pages/msg/msg',
  91. 'pages/my/my'
  92. ]
  93. let paramsText = ``;
  94. for(let [k, v] of Object.entries(params)){
  95. paramsText +=`${k}=${v}&`
  96. }
  97. if(paramsText.length>0){
  98. paramsText = paramsText.slice(0,paramsText.length-1);
  99. url = url.indexOf("?") > -1 ? `${url}&${paramsText}` : `${url}?${paramsText}`;
  100. }
  101. let func = uni.switchTab;
  102. const pages = getCurrentPages();
  103. if(pages.length>0){
  104. const {route} = pages[pages.length - 1];
  105. tabbarPageList.includes(route)
  106. func = tabbarPageList.includes(route) ? uni.reLaunch : uni.switchTab;
  107. }
  108. func = uni.reLaunch;
  109. console.log(url, '跳转完整地址');
  110. return new Promise((resolve,reject)=>{
  111. uni.navigateTo({
  112. url: url,
  113. success:()=>{
  114. resolve(true)
  115. },
  116. fail: _=>{
  117. func({
  118. url: url,
  119. success:()=>{
  120. resolve(true)
  121. },
  122. fail:(err)=>{
  123. reject(err)
  124. }
  125. })
  126. }
  127. })
  128. })
  129. }
  130. /**
  131. * 跳转加入会员小程序
  132. */
  133. const jumpJoinVip = () => {
  134. return new Promise((resolve, reject)=>{
  135. wx.navigateToMiniProgram({
  136. appId: 'wx255b58f0992b3c53', //appid
  137. path: 'newUIMain/enrollment/enrollment', //path
  138. extraData: { //参数
  139. foo: 'bar'
  140. },
  141. // envVersion: 'develop', //开发版develop 开发版 trial 体验版 release 正式版
  142. success(res) {
  143. resolve(res)
  144. // 打开成功
  145. },
  146. fail(e) {
  147. reject(e)
  148. }
  149. })
  150. })
  151. }
  152. export default {
  153. toHttps,
  154. jump,
  155. jumpJoinVip
  156. }