tools.js 3.2 KB

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