util.js 8.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331
  1. var api = require('../config/api.js');
  2. var user = require('../services/user.js');
  3. const formatNumber2 = n => {
  4. n = n.toString()
  5. return n[1] ? n : '0' + n
  6. }
  7. /**
  8. * 时间戳转化为年 月 日 时 分 秒
  9. * ts: 传入时间戳
  10. * format:返回格式,支持自定义,但参数必须与formateArr里保持一致
  11. */
  12. function tsFormatTime(timestamp, format) {
  13. const formateArr = ['Y', 'M', 'D', 'h', 'm', 's'];
  14. let returnArr = [];
  15. let date = new Date(timestamp);
  16. let year = date.getFullYear()
  17. let month = date.getMonth() + 1
  18. let day = date.getDate()
  19. let hour = date.getHours()
  20. let minute = date.getMinutes()
  21. let second = date.getSeconds()
  22. returnArr.push(year, month, day, hour, minute, second);
  23. returnArr = returnArr.map(formatNumber2);
  24. for (var i in returnArr) {
  25. format = format.replace(formateArr[i], returnArr[i]);
  26. }
  27. return format;
  28. }
  29. function formatTime(date) {
  30. var year = date.getFullYear()
  31. var month = date.getMonth() + 1
  32. var day = date.getDate()
  33. var hour = date.getHours()
  34. var minute = date.getMinutes()
  35. var second = date.getSeconds()
  36. return [year, month, day].map(formatNumber).join('-') + ' ' + [hour, minute, second].map(formatNumber).join(':')
  37. }
  38. function formatNumber(n) {
  39. n = n.toString()
  40. return n[1] ? n : '0' + n
  41. }
  42. /**
  43. * 封封微信的的request
  44. */
  45. function request(url, data = {}, method = "GET") {
  46. // if (url == 'https://mp.k1net.cn/api/auth/chooseStoreId' || url == 'https://mp.k1net.cn/api/auth/nearbyLists') {
  47. // console.log(url + '封封微信的的request,isRefusedLogin:' + wx.getStorageSync('isRefusedLogin') + ',token:' + wx.getStorageSync('token'));
  48. // }
  49. return new Promise(function (resolve, reject) {
  50. wx.request({
  51. url: url,
  52. data: data,
  53. method: method,
  54. header: {
  55. 'Content-Type': 'application/json',
  56. 'X-Nideshop-Token': wx.getStorageSync('token'),
  57. 'isRefusedLogin': wx.getStorageSync('isRefusedLogin')
  58. },
  59. success: function (res) {
  60. // console.log(res);
  61. // console.log("res.statusCode" + res.statusCode);
  62. // console.log("res.statusCode" + res.data.errno);
  63. if (res.statusCode == 200) {
  64. if (res.data.errno == 401) {
  65. resolve(res);
  66. //需要登录后才可以操作
  67. // return user.loginByWeixin().then(loginRes => {
  68. // //重新请求
  69. // request(url, data, method).then(res => {
  70. // if (res.errno === 0) {
  71. // resolve(res);
  72. // } else {
  73. // reject(res);
  74. // }
  75. // }).catch((err) => {
  76. // reject(err);
  77. // });
  78. // });
  79. } else {
  80. resolve(res.data);
  81. }
  82. } else {
  83. reject(res.errMsg);
  84. }
  85. },
  86. fail: function (err) {
  87. reject(err)
  88. showErrorToast('网络超时');
  89. console.log("failed")
  90. }
  91. })
  92. });
  93. }
  94. function redirect(url) {
  95. //判断页面是否需要登录
  96. if (false) {
  97. wx.redirectTo({
  98. url: '/pages/auth/login/login'
  99. });
  100. return false;
  101. } else {
  102. wx.redirectTo({
  103. url: url
  104. });
  105. }
  106. }
  107. function showErrorToast(msg) {
  108. wx.showToast({
  109. title: msg,
  110. image: '/static/images/icon_error.png'
  111. })
  112. }
  113. function showSuccessToast(msg) {
  114. wx.showToast({
  115. title: msg,
  116. icon: 'success'
  117. })
  118. }
  119. function countdown(weixin, that, name, index) {
  120. if (index == null) {
  121. var EndTime = that.end_time || [];
  122. } else {
  123. var EndTime = that[index].end_time || [];
  124. }
  125. var NowTime = new Date().getTime();
  126. var total_micro_second = EndTime - NowTime || [];
  127. // console.log('剩余时间:' + total_micro_second);
  128. // 渲染倒计时时钟
  129. var para = {};
  130. if (index == null) {
  131. that.dateformat = dateformat(total_micro_second)
  132. para[name] = that
  133. } else {
  134. let str = `${name}[${index}].dateformat`;
  135. para[str] = dateformat(total_micro_second)
  136. }
  137. weixin.setData(para)
  138. if (total_micro_second <= 0) {
  139. if (index == null) {
  140. that.dateformat = {
  141. day: 0,
  142. hr: 0,
  143. min: 0,
  144. sec: 0
  145. }
  146. para[name] = that
  147. } else {
  148. let str = `${name}[${index}].dateformat`;
  149. para[str] = {
  150. day: 0,
  151. hr: 0,
  152. min: 0,
  153. sec: 0
  154. }
  155. }
  156. weixin.setData(para)
  157. return;
  158. }
  159. setTimeout(function () {
  160. total_micro_second -= 1000;
  161. countdown(weixin, that, name, index);
  162. }
  163. , 1000)
  164. }
  165. // 时间格式化输出,如11:03 25:19 每1s都会调用一次
  166. function dateformat(micro_second) {
  167. // 总秒数
  168. var second = Math.floor(micro_second / 1000);
  169. // 天数
  170. var day = Math.floor(second / 3600 / 24);
  171. // 小时
  172. var hr = Math.floor(second / 3600 % 24);
  173. // 分钟
  174. var min = Math.floor(second / 60 % 60);
  175. // 秒
  176. var sec = Math.floor(second % 60);
  177. return {
  178. day,
  179. hr: hr < 10 ? '0' + hr : hr,
  180. min: min < 10 ? '0' + min : min,
  181. sec: sec < 10 ? '0' + sec : sec
  182. }
  183. }
  184. function getLocation(callback) {
  185. wx.getFuzzyLocation({
  186. type: 'gcj02', //返回可以用于wx.openLocation的经纬度
  187. success: function (res) {
  188. var latitude = res.latitude;
  189. var longitude = res.longitude;
  190. console.log('latitude:'+latitude);
  191. if (latitude == '' || longitude == ''){
  192. wx.showModal({
  193. title: '',
  194. content: '请检查手机是否打开GPS',
  195. success: function (res) {
  196. if (res.confirm) {
  197. }
  198. }
  199. })
  200. }
  201. callback && callback(longitude, latitude)
  202. }
  203. })
  204. }
  205. function chooseLocation(callback) {
  206. wx.chooseLocation({
  207. success: function (res) {
  208. callback && callback(res)
  209. }
  210. })
  211. }
  212. function getNowTime() {
  213. var now = new Date();
  214. var year = now.getFullYear();
  215. var month = now.getMonth() + 1;
  216. var day = now.getDate();
  217. if (month < 10) {
  218. month = '0' + month;
  219. };
  220. if (day < 10) {
  221. day = '0' + day;
  222. };
  223. // 如果需要时分秒,就放开
  224. // var h = now.getHours();
  225. // var m = now.getMinutes();
  226. // var s = now.getSeconds();
  227. var formatDate = year + '-' + month + '-' + day;
  228. return formatDate;
  229. }
  230. function getDateStr(today, addDayCount) {
  231. var dd;
  232. if (today) {
  233. dd = new Date(today);
  234. } else {
  235. dd = new Date();
  236. }
  237. dd.setDate(dd.getDate() + addDayCount);//获取AddDayCount天后的日期
  238. var y = dd.getFullYear();
  239. var m = dd.getMonth() + 1;//获取当前月份的日期
  240. var d = dd.getDate();
  241. if (m < 10) {
  242. m = '0' + m;
  243. };
  244. if (d < 10) {
  245. d = '0' + d;
  246. };
  247. return y + "-" + m + "-" + d;
  248. }
  249. const timeArray = ['9:00-09:30', '09:30-10:00', '10:30-11:00', '11:00-11:30', '11:30-12:00', '12:00-12:30', '12:30-13:00', '13:00-13:30', '13:30-14:00', '14:00-14:30', '14:30-15:00', '15:00-15:30', '15:30-16:00', '16:00-16:30', '16:30-17:00', '17:00-17:30', '17:30-18:00', '18:00-18:30', '18:30-19:00', '19:00-19:30', '19:30-20:00', '20:00-20:30', '20:30-21:00'];
  250. function getNowTimeArray() {
  251. var now = new Date();
  252. var hh = now.getHours(); //获取当前小时数(0-23)
  253. var mm = now.getMinutes(); //获取当前分钟数(0-59)
  254. var index = hh * 2 + (mm >= 30 ? 1 : 0);
  255. var result = timeArray.slice(0); // 深copy
  256. if (index > 17) {
  257. result = result.splice(index - 17 - 1)
  258. }
  259. var startArray = new Array();
  260. startArray.push('尽快送达');
  261. return startArray.concat(result);
  262. }
  263. function uuid() {
  264. var s = [];
  265. var hexDigits = "0123456789abcdef";
  266. for (var i = 0; i < 36; i++) {
  267. s[i] = hexDigits.substr(Math.floor(Math.random() * 0x10), 1);
  268. }
  269. s[14] = "4"; // bits 12-15 of the time_hi_and_version field to 0010
  270. s[19] = hexDigits.substr((s[19] & 0x3) | 0x8, 1); // bits 6-7 of the clock_seq_hi_and_reserved to 01
  271. s[8] = s[13] = s[18] = s[23] = "-";
  272. var uuid = s.join("");
  273. return uuid;
  274. }
  275. Array.prototype.contains = function (obj) {
  276. var i = this.length;
  277. while (i--) {
  278. if (this[i] === obj) {
  279. return true;
  280. }
  281. }
  282. return false;
  283. }
  284. module.exports = {
  285. formatTime,
  286. request,
  287. redirect,
  288. showErrorToast,
  289. showSuccessToast,
  290. countdown,
  291. getLocation,
  292. chooseLocation,
  293. getNowTime,
  294. getDateStr,
  295. timeArray,
  296. getNowTimeArray,
  297. uuid,
  298. tsFormatTime
  299. }