index.js 4.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190
  1. // 格式化数字
  2. function formatNumber(n) {
  3. const str = n.toString();
  4. return str[1] ? str : `0${str}`;
  5. }
  6. // object转url参数
  7. export function objToUrl(obj) {
  8. let uri = '';
  9. let keys = Object.keys(obj);
  10. keys.forEach(item => {
  11. uri += '&' + item + '=' + obj[item];
  12. });
  13. uri = uri.substr(1);
  14. return uri;
  15. }
  16. // 格式化和日期
  17. export function formatTime(date) {
  18. date = new Date(date.substr(0, 19));
  19. let year1 = date.getFullYear();
  20. let month1 = date.getMonth() + 1;
  21. let day1 = date.getDate();
  22. let hour1 = date.getHours();
  23. let minute1 = date.getMinutes();
  24. let second1 = date.getSeconds();
  25. let [year, month, day, hour, minute, second] = [year1, month1, day1, hour1, minute1, second1].map(formatNumber);
  26. return {
  27. year, month, day, hour, minute, second
  28. };
  29. }
  30. // 计算经纬度距离
  31. export function getDistance(lat1, lng1, currentPosition) {
  32. const lat2 = currentPosition.lat;
  33. const lng2 = currentPosition.lng;
  34. if (lat1 && lng1 && lat2 && lng2) {
  35. const radLat1 = lat1 * Math.PI / 180.0;
  36. const radLat2 = lat2 * Math.PI / 180.0;
  37. const a = radLat1 - radLat2;
  38. const b = lng1 * Math.PI / 180.0 - lng2 * Math.PI / 180.0;
  39. let s = 2 * Math.asin(Math.sqrt(Math.pow(Math.sin(a / 2), 2) +
  40. Math.cos(radLat1) * Math.cos(radLat2) * Math.pow(Math.sin(b / 2), 2)));
  41. s = s * 6378.137;// EARTH_RADIUS;
  42. s = Math.round(s * 10000) / 10000;
  43. return s;
  44. }
  45. return null;
  46. }
  47. // 打开位置
  48. export function openLocation(item) {
  49. uni.openLocation({
  50. latitude: item.lat - 0,
  51. longitude: item.lng - 0,
  52. name: item.name,
  53. address: item.addrProvinceName + item.addrCityName + item.addrDistrictName + item.addrDetail
  54. });
  55. }
  56. // 评分
  57. export function getStarNum(level) {
  58. if(level){
  59. const star = level.toString();
  60. return star.indexOf('.') > -1 ? star : star + '.0';
  61. }
  62. return 0
  63. }
  64. // webview 打开新页面
  65. export function openWebView(item){
  66. if (item.url) {
  67. // 外链
  68. if(item.url.indexOf("http")>=0){
  69. uni.navigateTo({
  70. url: '/pagesA/h5Page/index?src='+item.url
  71. })
  72. }else{
  73. uni.navigateTo({
  74. url: '/' + item.url
  75. })
  76. }
  77. }
  78. }
  79. // 去登陆页面
  80. export function toLogin(){
  81. uni.navigateTo({
  82. url: '/pages/login/login'
  83. })
  84. }
  85. // 去认证页面
  86. export function toAuthStore(){
  87. uni.showModal({
  88. title: '提示',
  89. content: '您还未认证门店,暂无法继续使用!',
  90. confirmText: '去认证',
  91. success(ret) {
  92. if(ret.confirm){
  93. uni.navigateTo({
  94. url: '/pages/storeManage/storeAuth'
  95. })
  96. }
  97. }
  98. })
  99. }
  100. // vin 扫码
  101. export function openCamera(hasLogin,sysUserFlag,maxNums){
  102. if(hasLogin){
  103. // 游客身份
  104. if(sysUserFlag){
  105. // 最多扫10次
  106. if(maxNums){
  107. uni.navigateTo({
  108. url: "/pages/scan-frame/scan-frame"
  109. })
  110. }else{
  111. uni.showModal({
  112. title: '提示',
  113. content: '个人用户扫描VIN仅限10次,您的次数已用完!',
  114. confirmText: '好的',
  115. showCancel: false,
  116. success(res) {}
  117. })
  118. }
  119. }else{
  120. // 非游客,直接扫
  121. uni.navigateTo({
  122. url: "/pages/scan-frame/scan-frame"
  123. })
  124. }
  125. }else{
  126. toLogin()
  127. }
  128. }
  129. // 单击底部tab
  130. export function clickTab(row,hasLogin,isNoAuth,isMax){
  131. // 点击促销刷新列表
  132. if(row.text == '促销'){
  133. uni.$emit('refashProm')
  134. }
  135. // 点击购物车
  136. if(row.text == '购物车'){
  137. if(!hasLogin){
  138. toLogin()
  139. return true
  140. }
  141. // 游客去认证
  142. if(isNoAuth){
  143. toAuthStore()
  144. return true
  145. }
  146. // 打开购物车页面
  147. uni.navigateTo({
  148. url:'/pagesB/cart/index',
  149. target: 'page'
  150. })
  151. }
  152. // 打开vin扫码页面
  153. if(row.text == '扫描VIN'){
  154. openCamera(hasLogin,isNoAuth,isMax)
  155. }else{
  156. return true
  157. }
  158. }
  159. // 单击banner
  160. export function clickBannerList(row){
  161. // 红包
  162. if(row.activeType == 'redPacket'){
  163. uni.navigateTo({url:"/pages/morePage/redPacket"})
  164. }
  165. // 图文
  166. if(row.contentType == 'IMAGE_CONTENT'){
  167. uni.navigateTo({url:"/pagesA/activeDetail/index?sn="+row.promoActiveSn})
  168. }
  169. // 视频
  170. if(row.contentType == 'VIDEO'){
  171. uni.navigateTo({url:"/pages/videos/detail?form=banner&&sn="+row.promoActiveSn})
  172. }
  173. // 链接
  174. if(row.contentType == 'LINK'){
  175. // 货架促销活动
  176. if(row.content.indexOf("pagesB/promoDetail") >= 0){
  177. uni.navigateTo({
  178. url: '/pagesB/promoProduct?promoActiveSn='+row.promoActiveSn+'&title='+row.title
  179. })
  180. }else{
  181. // 外网页面
  182. openWebView({url:row.content})
  183. }
  184. }
  185. }