wxsUtil.wxs 4.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148
  1. // /utils/wxsUtil.wxs
  2. // 分隔字符串
  3. var split = function (input, sep) {
  4. sep === undefined && (sep = ',')
  5. return input.toString().split(sep)
  6. }
  7. /**
  8. * 计算汇总价格
  9. * @param price 项目价格
  10. * @param selectCardId 选中需要购买的会员卡ID
  11. * @param memberCard 会员卡对象
  12. * @param currentDiscount 勾选了会员折扣(字段定义比较奇怪,猜测会员折扣是直接抵扣)0 选择 1 选择
  13. * @param currentChangeCoupon 优惠券对象
  14. * @param productData 项目耗材
  15. * @returns
  16. */
  17. var calculateOrderPayMoney = function (
  18. price,
  19. selectCardId,
  20. memberCard,
  21. currentDiscount,
  22. currentChangeCoupon,
  23. productData
  24. ) {
  25. var payMoney = price ? parseFloat(price) : 0
  26. // 勾选了购买会员卡
  27. if (selectCardId) {
  28. var memberCardSaveMoney = memberCard.save_money
  29. ? parseFloat(memberCard.save_money)
  30. : 0
  31. var memberCardPrice = memberCard.price ? parseFloat(memberCard.price) : 0
  32. payMoney -= memberCardSaveMoney
  33. payMoney += memberCardPrice
  34. }
  35. // 勾选了会员折扣(字段定义比较奇怪,猜测会员折扣是直接抵扣)
  36. if (currentDiscount == 0) {
  37. payMoney = 0
  38. }
  39. // 选择了优惠券
  40. if (currentChangeCoupon) {
  41. // 类型,1抵扣券,2满减券,3全额券
  42. var couponType = currentChangeCoupon.type
  43. var couponMoney = payMoney
  44. if (couponType == 1) {
  45. couponMoney = currentChangeCoupon.price
  46. ? parseFloat(currentChangeCoupon.price)
  47. : 0
  48. } else if (couponType == 2) {
  49. couponMoney = currentChangeCoupon.full_price
  50. ? parseFloat(currentChangeCoupon.full_price)
  51. : 0
  52. }
  53. payMoney -= couponMoney
  54. }
  55. // 存在其他项的价格(升级产品不支持优惠券和会员)
  56. if (productData) {
  57. payMoney += parseFloat(productData.price ? productData.price : 0.0)
  58. }
  59. payMoney = payMoney >= 0 ? payMoney.toFixed(2) : '0.00'
  60. console.log('calculateOrderPayMoney===', payMoney)
  61. return payMoney
  62. }
  63. /**
  64. * 计算合计金额
  65. * @param args
  66. * @returns
  67. */
  68. var calculateMoney = function (args) {
  69. var sum = 0.0
  70. var argsList = args.toString().split(',')
  71. for (var i = 0; i < argsList.length; i++) {
  72. if (argsList[i]) {
  73. sum += parseFloat(argsList[i])
  74. }
  75. }
  76. sum = sum >= 0 ? sum.toFixed(2) : '0.00'
  77. console.log('calculateMoney===', sum)
  78. return sum
  79. }
  80. /**
  81. * 两点之间距离计算
  82. * @param {*} lat1
  83. * @param {*} lng1
  84. * @param {*} lat2
  85. * @param {*} lng2
  86. */
  87. var getDistance = function (lat1, lng1, lat2, lng2) {
  88. lat1 = lat1 || 0;
  89. lng1 = lng1 || 0;
  90. lat2 = lat2 || 0;
  91. lng2 = lng2 || 0;
  92. var rad1 = lat1 * Math.PI / 180.0;
  93. var rad2 = lat2 * Math.PI / 180.0;
  94. var a = rad1 - rad2;
  95. var b = lng1 * Math.PI / 180.0 - lng2 * Math.PI / 180.0;
  96. var r = 6378137;
  97. var distance = r * 2 * Math.asin(Math.sqrt(Math.pow(Math.sin(a / 2), 2) + Math.cos(rad1) * Math.cos(rad2) * Math.pow(Math.sin(b / 2), 2)));
  98. // console.log(distance)
  99. return (distance/1000).toFixed(1);
  100. }
  101. /* 封装一个格式转换的方法(购物车价格小数点前后大小) */
  102. var formatValue = function (value, type) {
  103. if (typeof value === 'string') {
  104. if (value.match('¥')) {
  105. /* 使用getRegExp函数处理正则表达式 start */
  106. var reg = getRegExp('¥', 'g')
  107. value = value.replace(reg, '')
  108. /* 使用getRegExp函数处理正则表达式 end */
  109. }
  110. }
  111. var result = value
  112. switch (type) {
  113. case 'split': /* 分割 */
  114. result = ('' + result).split('.')
  115. break
  116. case 'price': /* 普通价格 */
  117. /* ...... 完整代码见文章末尾的github分支 */
  118. break
  119. case 'sold': /* 已售*/
  120. /* ...... 完整代码见文章末尾的github分支 */
  121. break
  122. case 'commission': /* 佣金 */
  123. /* ...... 完整代码见文章末尾的github分支 */
  124. break
  125. case 'coupon': /* 优惠券 */
  126. /* ...... 完整代码见文章末尾的github分支 */
  127. break
  128. }
  129. return result
  130. }
  131. module.exports = {
  132. split: split,
  133. calculateOrderPayMoney: calculateOrderPayMoney,
  134. calculateMoney: calculateMoney,
  135. getDistance:getDistance,
  136. formatValue:formatValue
  137. }