index.js 3.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141
  1. /* eslint-disable arrow-parens */
  2. const {
  3. windowHeight,
  4. titleBarHeight,
  5. statusBarHeight
  6. } = my.getSystemInfoSync();
  7. /**
  8. * 时间搓分开返回日期、时间、星期
  9. * @param time
  10. * @returns {{date: string, time: string, am: (string), day: string}}
  11. */
  12. export function cuttingDate(time = '') {
  13. const d = time ? new Date(time.replace(/-/g, '/')) : new Date();
  14. const hours = d.getHours();
  15. return {
  16. date: d.toLocaleDateString().replace(/\//g, '-'),
  17. day: getWeek(d),
  18. am: hours < 12 ? '上午' : '下午',
  19. type: hours < 12 ? 'am' : 'pm',
  20. time: `${`0${hours}`.slice(-2)}:${`0${d.getMinutes()}`.slice(-2)}`
  21. };
  22. }
  23. /**
  24. * 返回星期
  25. * @param date
  26. * @returns {string}
  27. */
  28. export function getWeek(date) {
  29. const d = Object.prototype.toString.call(date) === '[object Date]' ? date : new Date(date);
  30. return ['周日', '周一', '周二', '周三', '周四', '周五', '周六'][d.getDay()];
  31. }
  32. const excludeEmptyValue = data => {
  33. const obj = {};
  34. Object.keys(data).forEach(key => {
  35. const value = data[key];
  36. if (value !== undefined) obj[key] = value;
  37. });
  38. return obj;
  39. };
  40. export const queryToUrl = query => Object.keys(excludeEmptyValue(query)).reduce((sum, item) => `${sum}&${item}=${query[item]}`, '');
  41. export const getHeaderHeight = () => titleBarHeight + statusBarHeight;
  42. export const getContentHeight = () => windowHeight - getHeaderHeight();
  43. /**
  44. * 判断是否是一个Boolean
  45. * @param val
  46. */
  47. export function isBoolean(val) {
  48. return Object.prototype.toString.call(val) === '[object Boolean]';
  49. }
  50. /**
  51. * deliverType 是否可以结算
  52. * 参数 在售状态,库存状态,库存数量, 限购
  53. * @params { status, stockStatus, stock }
  54. */
  55. export const buyIsAvailable = list => {
  56. const typeObj = {
  57. AUTO: 0,
  58. MANUAL: 0,
  59. DELIVERY: 0
  60. };
  61. list.map(v => {
  62. const {
  63. deliverType = ''
  64. } = v;
  65. Object.keys(typeObj).map(typeValue => {
  66. if (deliverType.indexOf(typeValue) > -1) {
  67. typeObj[typeValue] += 1;
  68. }
  69. return '';
  70. });
  71. return '';
  72. });
  73. console.log(typeObj); // 自动和手动不能一起
  74. if (typeObj.AUTO * typeObj.MANUAL) {
  75. return false;
  76. }
  77. return true;
  78. };
  79. /**
  80. * 是否可买
  81. * 参数 在售状态,库存状态,库存数量, 限购
  82. * @params { status, stockStatus, stock }
  83. */
  84. export const isActive = goodsItem => {
  85. const {
  86. status,
  87. // 是否停售
  88. stockStatus = 'N',
  89. // 是否有库存
  90. stock = 0,
  91. buyLimitCount = 1,
  92. quantity = 0,
  93. buyLimitType = '' // 是否限购
  94. } = goodsItem; // 不在售
  95. if (status === 'N') {
  96. return false;
  97. } // 库存为 0 不能买
  98. if (stockStatus === 'Y' && !stock) {
  99. return false;
  100. } // 限购了
  101. if (buyLimitType === 'GENERAL' && quantity >= buyLimitCount) {
  102. return false;
  103. }
  104. return true;
  105. };
  106. /**
  107. * 获取距离信息
  108. * 参数 meter
  109. * @param
  110. */
  111. export const getMeter = meter => {
  112. const number = Number(meter);
  113. if (Number.isNaN(number)) {
  114. return meter;
  115. }
  116. if (number < 1000) {
  117. return `约${number.toFixed(0)}m`;
  118. } else {
  119. return `约${(number / 1000).toFixed(2)}km`;
  120. }
  121. };