lang.js 46 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278
  1. import config from '../config';
  2. const hasOwn = Object.prototype.hasOwnProperty;
  3. export function noop() {
  4. // nothing
  5. }
  6. export function formatLocation(longitude, latitude) {
  7. if (typeof longitude === 'string' && typeof latitude === 'string') {
  8. longitude = parseFloat(longitude);
  9. latitude = parseFloat(latitude);
  10. }
  11. longitude = longitude.toFixed(2);
  12. latitude = latitude.toFixed(2);
  13. return {
  14. longitude: longitude.toString().split('.'),
  15. latitude: latitude.toString().split('.')
  16. }
  17. }
  18. export const dateUtils = {
  19. UNITS: {
  20. '年': 31557600000,
  21. '月': 2629800000,
  22. '天': 86400000,
  23. '小时': 3600000,
  24. '分钟': 60000,
  25. '秒': 1000,
  26. },
  27. humanize(milliseconds) {
  28. let humanize = '';
  29. for (const key in this.UNITS) {
  30. if (milliseconds >= this.UNITS[key]) {
  31. humanize = Math.floor(milliseconds / this.UNITS[key]) + key + '前';
  32. break;
  33. }
  34. }
  35. return humanize || '刚刚';
  36. },
  37. format(dateStr) {
  38. const date = this.parse(dateStr)
  39. const diff = Date.now() - date.getTime()
  40. if (diff < this.UNITS['天']) {
  41. return this.humanize(diff);
  42. }
  43. const _format = function (number) {
  44. return (number < 10 ? ('0' + number) : number)
  45. };
  46. return date.getFullYear() + '/' + _format(date.getMonth() + 1) + '/' + _format(date.getDay()) + '-' +
  47. _format(date.getHours()) + ':' + _format(date.getMinutes())
  48. },
  49. parse(str) { //将"yyyy-mm-dd HH:MM:ss"格式的字符串,转化为一个Date对象
  50. const a = String(str).split(/[^0-9]/)
  51. return new Date(a[0], a[1] - 1, a[2], a[3], a[4], a[5])
  52. },
  53. formatDateTime(timeStamp) {
  54. var unixtimestamp = new Date(timeStamp);
  55. var year = 1900 + unixtimestamp.getYear();
  56. var month = "0" + (unixtimestamp.getMonth() + 1);
  57. var date = "0" + unixtimestamp.getDate();
  58. var hour = "0" + unixtimestamp.getHours();
  59. var minute = "0" + unixtimestamp.getMinutes();
  60. var second = "0" + unixtimestamp.getSeconds();
  61. return /* year + "-" + */month.substring(month.length - 2, month.length) + "/" + date.substring(date.length - 2, date.length)
  62. + " " + hour.substring(hour.length - 2, hour.length) + ":"
  63. + minute.substring(minute.length - 2, minute.length)/* + ":"
  64. + second.substring(second.length-2, second.length) */
  65. }
  66. };
  67. /**
  68. * 将 JSON 数据转换成 QueryString
  69. * @param {Object|Array} object 被转换的JSON数据
  70. * @param {String} [prefix=''] 键名前缀
  71. * @return {String}
  72. */
  73. export function qs(object, prefix = '') {
  74. if (Array.isArray(object)) {
  75. if (!prefix) {
  76. throw new Error('must given a not empty prefix');
  77. }
  78. return object.map(function (val) {
  79. if (val == null) return prefix + '[]=';
  80. switch(typeof val) {
  81. case 'boolean':
  82. return prefix + '[]=' + (val ? 1 : 0);
  83. case 'number':
  84. return prefix + '[]=' + val;
  85. case 'object':
  86. return qs(val, prefix + '[]');
  87. default:
  88. return prefix + '[]=' + encodeURIComponent(val);
  89. }
  90. }).join('&');
  91. }
  92. return Object.keys(object).map(function (prop) {
  93. const value = object[prop];
  94. const key = prefix ? `${prefix}[${prop}]` : prop;
  95. if (value == null) return key + '=';
  96. if (typeof value !== 'object') return key + '=' + encodeURIComponent(value);
  97. return qs(value, key);
  98. }).join('&');
  99. }
  100. const simpleColumns = 'id,nickname,avatar,pinyin,gender,description'.split(',');
  101. const fullColumns = 'id,nickname,tel,idcard,avatar,gold,level,pinyin,gender,description'.split(',');
  102. const girl = 'data:image/jpg;base64,/9j/4AAQSkZJRgABAQAAAQABAAD//gA7Q1JFQVRPUjogZ2QtanBlZyB2MS4wICh1c2luZyBJSkcgSlBFRyB2NjIpLCBxdWFsaXR5ID0gNzUK/9sAQwAIBgYHBgUIBwcHCQkICgwUDQwLCwwZEhMPFB0aHx4dGhwcICQuJyAiLCMcHCg3KSwwMTQ0NB8nOT04MjwuMzQy/9sAQwEJCQkMCwwYDQ0YMiEcITIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIy/8AAEQgBkAGQAwEiAAIRAQMRAf/EAB8AAAEFAQEBAQEBAAAAAAAAAAABAgMEBQYHCAkKC//EALUQAAIBAwMCBAMFBQQEAAABfQECAwAEEQUSITFBBhNRYQcicRQygZGhCCNCscEVUtHwJDNicoIJChYXGBkaJSYnKCkqNDU2Nzg5OkNERUZHSElKU1RVVldYWVpjZGVmZ2hpanN0dXZ3eHl6g4SFhoeIiYqSk5SVlpeYmZqio6Slpqeoqaqys7S1tre4ubrCw8TFxsfIycrS09TV1tfY2drh4uPk5ebn6Onq8fLz9PX29/j5+v/EAB8BAAMBAQEBAQEBAQEAAAAAAAABAgMEBQYHCAkKC//EALURAAIBAgQEAwQHBQQEAAECdwABAgMRBAUhMQYSQVEHYXETIjKBCBRCkaGxwQkjM1LwFWJy0QoWJDThJfEXGBkaJicoKSo1Njc4OTpDREVGR0hJSlNUVVZXWFlaY2RlZmdoaWpzdHV2d3h5eoKDhIWGh4iJipKTlJWWl5iZmqKjpKWmp6ipqrKztLW2t7i5usLDxMXGx8jJytLT1NXW19jZ2uLj5OXm5+jp6vLz9PX29/j5+v/aAAwDAQACEQMRAD8A9/ooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKbmgBaTFUtQ1XT9KtjcahewWsI/jmkCj9a4q8+L3hW33Jb3M97IM7Bbwkhz6An+dAWuehbgKydR8S6LpA/4mGq2dqfSWdQfyzXz/rXifxj4rllNxqkml2LElbS2OCF9GYYyawI/CenE75jNOT1ZnOaj2iLVOTPpGLx74SlfZF4j00t6faFFbVpf2l3GGtbqGdT0Mbhv5V8qv4T0dl4gkXPTDniqv/CJm3ffYajcWzZ4IJ/mCKFJDdKR9fAg0tfL2geO/GfhC8xcXUmr2APzQzMxOP8AZYjg1774Z8Z6N4qsUudPuo95GHt5GAkQ+hFVdGbTW50tFN3ilzTAWiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACkzS1j6/r+n+GdJm1LU5xFbxjr3Y9gB3JoAt3t7bWFpJd3c8cEMYy8kjABR9a8Y8TfGu51C4k0zwZa+aRw2oTD5R7qv9T+VcL4j8U6z8TNULTlrTRYX+SBT1+vq38qu2trDZQiG3jCKOOlRKVi6dO+pTOly3lz9u1u7l1K8Y5MkzZVfoK0wqrwAB+GOKTt04p2T06CsnJs6EkthmR9eKkOM5znFJnPcUnykgbgX+tSMqWl2JZ7iA53xt39KtqeOTisySJ4teilX7s6YOPVT/APXrTAGQc8elNiQo7AdO5xVWewtrmVZXiUyIeG6GrDMueTz78U5emSOh7UgLWna/4i0Jg2marM8a/wDLtdkyxH255H4GvTPCXxQ0/XrkabqUP9maseBE7Zjl/wCubd/pXk46Y7nHSq99Yw38Hkyg56qy9Ub1BrSMmtzN009j6hB96XFeLfDv4kXFreReGvE02ZG4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xlZryOPDNk5xnriu0xS0AIKWiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooA//Z';
  103. const boy = 'data:image/jpg;base64,/9j/4AAQSkZJRgABAQAAAQABAAD//gA7Q1JFQVRPUjogZ2QtanBlZyB2MS4wICh1c2luZyBJSkcgSlBFRyB2NjIpLCBxdWFsaXR5ID0gNzUK/9sAQwAIBgYHBgUIBwcHCQkICgwUDQwLCwwZEhMPFB0aHx4dGhwcICQuJyAiLCMcHCg3KSwwMTQ0NB8nOT04MjwuMzQy/9sAQwEJCQkMCwwYDQ0YMiEcITIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIy/8AAEQgBkAGQAwEiAAIRAQMRAf/EAB8AAAEFAQEBAQEBAAAAAAAAAAABAgMEBQYHCAkKC//EALUQAAIBAwMCBAMFBQQEAAABfQECAwAEEQUSITFBBhNRYQcicRQygZGhCCNCscEVUtHwJDNicoIJChYXGBkaJSYnKCkqNDU2Nzg5OkNERUZHSElKU1RVVldYWVpjZGVmZ2hpanN0dXZ3eHl6g4SFhoeIiYqSk5SVlpeYmZqio6Slpqeoqaqys7S1tre4ubrCw8TFxsfIycrS09TV1tfY2drh4uPk5ebn6Onq8fLz9PX29/j5+v/EAB8BAAMBAQEBAQEBAQEAAAAAAAABAgMEBQYHCAkKC//EALURAAIBAgQEAwQHBQQEAAECdwABAgMRBAUhMQYSQVEHYXETIjKBCBRCkaGxwQkjM1LwFWJy0QoWJDThJfEXGBkaJicoKSo1Njc4OTpDREVGR0hJSlNUVVZXWFlaY2RlZmdoaWpzdHV2d3h5eoKDhIWGh4iJipKTlJWWl5iZmqKjpKWmp6ipqrKztLW2t7i5usLDxMXGx8jJytLT1NXW19jZ2uLj5OXm5+jp6vLz9PX29/j5+v/aAAwDAQACEQMRAD8A9/ooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKTNMZ1jUszAAckmgB2aM1554h+JcFkz22h2w1K4HBlLbYUP+9/F+H515/qGueLNaYm81+S3iP/LGxXyx/wB9ZyalzSKjTkz35544hmSVFHqzAUxby1dtq3MLN6BwTXzO3h6ylYvcPczuerSSkk0h8MaUekLqfUSGo9oi/Ys+oAwz1pc18yWmm3WnHdpms6pZt28u4OPyrpNO8c+NtIKCW7tNWhHVbiPZIR/vD+tUpIl0pI94zRXli/GOyist13pVzb3gYAwSSDaw7lZMYOPTiuv8O+LNP8SB1tfNhuIgDLBMuGUHuOxHuKq5FmjpaKaKdTAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooASq15eW9hayXV1KkUEa5aRjgAVneIfEuneGdLa/wBRm2RjhEXl5G/uqO5rxfWNc1LxZdC41MGK0RswWIbKp6Fv7zfyqJSSQ4wctjrdU+KNzcu8Xh+xXye15d5w3usYwSPckVyt9reu6oCuoarJPG33oUQIh/Af41TFOrFzbOmNNRGgU6iioKEooopjCiiigRHNBFcRvFKiuh6hhmp9Dvrr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KKKKACiiigAooooAKKKKACiiigAooooAKx9U0X+0yGGo6haEDH+iz+Xn9DWxRQB5hrnwlbXZUa58T30qJ/q/tEKSSL7B+DVUfBqdYvL/AOEu1Ax/3WhBH6tXrNFAHlunfCfUdHtzb6d411K1hzny4ogBn/vqrx+HviI/81B1f/v3/wDZV6JRQB51H8ONXOfP8ea3ID2Vtv8AU04fDG5U5Xxp4gB/6716HRQB53/wq92OZfF+vv8A9vGKV/hHpUhzNrWuSE9d13nP6V6HRQB5uvwW8KhAjHUGAGADcnH8qnj+Dvg5VAaxnk92uH/xr0GigDi7T4W+D7Jt0WkKT2LSucfrXUWVhbWEHk2sIijBztBJ/nVyigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKAP/Z';
  104. const secrecy = 'data:image/jpg;base64,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';
  105. const IMG_BASE64_RE = /^data:image\/(jpg|png|jpeg|gif);base64,/;
  106. export function networkImage(url) {
  107. if (IMG_BASE64_RE.test(url)) return url;
  108. if (/^\/\//.test(url)) return url;// 网络协议?
  109. if (/^https?:\/\//.test(url)) return url;
  110. return config.imgUri + '/' + url.replace(/^\/+/, '');
  111. }
  112. export function normalAvatar({gender, avatar}) {
  113. if (!avatar) {
  114. gender = parseInt(gender);
  115. if (isNaN(gender) || gender === 3) return secrecy;// 3=>保密
  116. if (gender === 1) return boy;
  117. if (gender === 2) return girl;
  118. return secrecy;
  119. }
  120. // if (/^\/\//.test(avatar)) {
  121. // return 'http:' + avatar;
  122. // }
  123. //
  124. // if (/^https?:\/\//.test(avatar)) {
  125. // return avatar;
  126. // }
  127. //
  128. // return config.imgUri + '/' + avatar.replace(/^\/+/, '');
  129. return networkImage(avatar);
  130. }
  131. // const x = {
  132. // "user": {
  133. // "member_id": "10001",
  134. // "member_tel": "13060186061",
  135. // "member_open_id": "oicLL0uXVwE6D5UfVx31ma1GR78Q",
  136. // "member_realname": "one123",
  137. // "member_nickname": "one123",
  138. // "member_idcard": "210202198207040714",
  139. // "member_mynum": "48531029",
  140. // "member_renum": "56504952",
  141. // "member_renum_is": "0",
  142. // "member_avatar": "/Public/UploadFiles_s/2019-03-28/5c9c957b1d446.png",
  143. // "member_state": "0",
  144. // "member_gold": "56867540.47",
  145. // "member_frozen_gold": "0.00",
  146. // "member_diamond": "0.00",
  147. // "member_level": "1",
  148. // "member_telphone": null,
  149. // "member_wechat": null,
  150. // "member_qq": null,
  151. // "member_house_level": "4",
  152. // "bank_account_name": null,
  153. // "bank_name": null,
  154. // "bank_card_number": null,
  155. // "pest_god_status": "0",
  156. // "drought_god_status": "0",
  157. // "weed_god_status": "0",
  158. // "bumper_god_status": "0",
  159. // "pest_god_time": null,
  160. // "drought_god_time": null,
  161. // "weed_god_time": null,
  162. // "bumper_god_time": null,
  163. // "member_signin_status": "0",
  164. // "member_signin_time": "1501234588",
  165. // "member_recharge_status": "0",
  166. // "member_recharge_time": "1502421628",
  167. // "member_recharge_num": "6",
  168. // "member_headid": null,
  169. // "scene_id": null,
  170. // "member_scene_middle": null,
  171. // "member_scene_big": null,
  172. // "secret_switch": null,
  173. // "add_time": "1501051184",
  174. // "display": "0",
  175. // "logins": "1",
  176. // "sort": "0",
  177. // "member_pid": "10001",
  178. // "member_gid": "10001",
  179. // "member_from_id": "6",
  180. // "member_crown_id": "6",
  181. // "member_diamond_id": "19",
  182. // "member_tree": null,
  183. // "member_title": "",
  184. // "is_gift": null,
  185. // "gift_name": null,
  186. // "new_gift_has": "1",
  187. // "member_institution": "2",
  188. // "member_room_has": "3",
  189. // "institution_time_crown": null,
  190. // "institution_time_diamond": null,
  191. // "pay_has": "1",
  192. // "pay_first_time": "1502421292",
  193. // "member_is_invited": "1",
  194. // "member_money_today": null,
  195. // "member_money_today_time": null,
  196. // "member_award_count": null,
  197. // "member_award_value": null,
  198. // "member_award_time": null,
  199. // "member_money_week": null,
  200. // "member_money_week_time": null,
  201. // "member_money_consumption": null,
  202. // "member_pinyin": "",
  203. // "member_gender": "0",
  204. // "member_description": "gjbccghh赶快不过分????????????????"
  205. // }
  206. // };
  207. function getMemberInfo(columns, info, fallback) {
  208. const has = col => hasOwn.call(info, col);
  209. const result = columns.reduce(function (map, col) {
  210. if (has('member_' + col)) {
  211. map[col] = info['member_' + col];
  212. } else if (has(col)) {
  213. map[col] = info[col];
  214. } else if (hasOwn.call(fallback, col)) {
  215. map[col] = fallback[col];
  216. }
  217. return map;
  218. }, {});
  219. const gender = parseInt(result.gender);
  220. result.gender = (isNaN(gender) || gender < 1 || gender > 3) ? 3 : gender;
  221. result.id = parseInt(result.id);
  222. result.avatar = normalAvatar(result);
  223. return result;
  224. }
  225. export function fulledMemberInfo(info, fallback = {}) {
  226. const result = getMemberInfo(fullColumns, info, fallback);
  227. result.add_time = info.add_time;// 注册时间
  228. result.login_times = info.logins || 0;// 登录次数
  229. return result;
  230. }
  231. export function simpledMemberInfo(info, fallback = {}) {
  232. return getMemberInfo(simpleColumns, info, fallback);
  233. }
  234. export function normalRoomInfo(info) {
  235. return {
  236. id: +info.room_id,// 群聊ID
  237. name: info.room_name,// 群聊名称
  238. owner: simpledMemberInfo({
  239. id: info.room_m_id,// 群主ID
  240. nickname: info.room_m_name,// 群主昵称
  241. avatar: info.room_m_avatar,// 群主头像
  242. gender: info.room_m_gender,// 群主性别
  243. pinyin: info.room_m_pinyin,// 群主拼音
  244. }),
  245. add_time: info.room_time,// 建群时间
  246. pinyin: info.room_pinyin,// 群聊拼音
  247. notice: info.room_notice,// 群聊公告
  248. members: info.members.map(m => simpledMemberInfo(m)),
  249. };
  250. }