// /utils/wxsUtil.wxs // 分隔字符串 var split = function (input, sep) { sep === undefined && (sep = ',') return input.toString().split(sep) } /** * 计算汇总价格 * @param price 项目价格 * @param selectCardId 选中需要购买的会员卡ID * @param memberCard 会员卡对象 * @param currentDiscount 勾选了会员折扣(字段定义比较奇怪,猜测会员折扣是直接抵扣)0 选择 1 选择 * @param currentChangeCoupon 优惠券对象 * @param productData 项目耗材 * @returns */ var calculateOrderPayMoney = function ( price, selectCardId, memberCard, currentDiscount, currentChangeCoupon, productData ) { var payMoney = price ? parseFloat(price) : 0 // 勾选了购买会员卡 if (selectCardId) { var memberCardSaveMoney = memberCard.save_money ? parseFloat(memberCard.save_money) : 0 var memberCardPrice = memberCard.price ? parseFloat(memberCard.price) : 0 payMoney -= memberCardSaveMoney payMoney += memberCardPrice } // 勾选了会员折扣(字段定义比较奇怪,猜测会员折扣是直接抵扣) if (currentDiscount == 0) { payMoney = 0 } // 选择了优惠券 if (currentChangeCoupon) { // 类型,1抵扣券,2满减券,3全额券 var couponType = currentChangeCoupon.type var couponMoney = payMoney if (couponType == 1) { couponMoney = currentChangeCoupon.price ? parseFloat(currentChangeCoupon.price) : 0 } else if (couponType == 2) { couponMoney = currentChangeCoupon.full_price ? parseFloat(currentChangeCoupon.full_price) : 0 } payMoney -= couponMoney } // 存在其他项的价格(升级产品不支持优惠券和会员) if (productData) { payMoney += parseFloat(productData.price ? productData.price : 0.0) } payMoney = payMoney >= 0 ? payMoney.toFixed(2) : '0.00' console.log('calculateOrderPayMoney===', payMoney) return payMoney } /** * 计算合计金额 * @param args * @returns */ var calculateMoney = function (args) { var sum = 0.0 var argsList = args.toString().split(',') for (var i = 0; i < argsList.length; i++) { if (argsList[i]) { sum += parseFloat(argsList[i]) } } sum = sum >= 0 ? sum.toFixed(2) : '0.00' console.log('calculateMoney===', sum) return sum } /** * 两点之间距离计算 * @param {*} lat1 * @param {*} lng1 * @param {*} lat2 * @param {*} lng2 */ var getDistance = function (lat1, lng1, lat2, lng2) { lat1 = lat1 || 0; lng1 = lng1 || 0; lat2 = lat2 || 0; lng2 = lng2 || 0; var rad1 = lat1 * Math.PI / 180.0; var rad2 = lat2 * Math.PI / 180.0; var a = rad1 - rad2; var b = lng1 * Math.PI / 180.0 - lng2 * Math.PI / 180.0; var r = 6378137; 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))); // console.log(distance) return (distance/1000).toFixed(1); } /* 封装一个格式转换的方法(购物车价格小数点前后大小) */ var formatValue = function (value, type) { if (typeof value === 'string') { if (value.match('¥')) { /* 使用getRegExp函数处理正则表达式 start */ var reg = getRegExp('¥', 'g') value = value.replace(reg, '') /* 使用getRegExp函数处理正则表达式 end */ } } var result = value switch (type) { case 'split': /* 分割 */ result = ('' + result).split('.') break case 'price': /* 普通价格 */ /* ...... 完整代码见文章末尾的github分支 */ break case 'sold': /* 已售*/ /* ...... 完整代码见文章末尾的github分支 */ break case 'commission': /* 佣金 */ /* ...... 完整代码见文章末尾的github分支 */ break case 'coupon': /* 优惠券 */ /* ...... 完整代码见文章末尾的github分支 */ break } return result } module.exports = { split: split, calculateOrderPayMoney: calculateOrderPayMoney, calculateMoney: calculateMoney, getDistance:getDistance, formatValue:formatValue }