util.js 3.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171
  1. import config from './config'
  2. const formatTime = (time, format = 'yyyy-mm-dd HH:MM') => {
  3. let date;
  4. if(time.toString().length == 13){
  5. date = new Date(time);
  6. }else{
  7. date = new Date(time * 1000);
  8. }
  9. const year = date.getFullYear()
  10. const month = formatNumber(date.getMonth() + 1)
  11. const day = formatNumber(date.getDate())
  12. const hour = formatNumber(date.getHours())
  13. const minute = formatNumber(date.getMinutes())
  14. const second = formatNumber(date.getSeconds())
  15. format = format.replace('yyyy',year)
  16. format = format.replace('mm',month)
  17. format = format.replace('dd',day)
  18. format = format.replace('HH',hour)
  19. format = format.replace('MM',minute)
  20. format = format.replace('ss',second)
  21. return format
  22. }
  23. const formatNumber = n => {
  24. n = n.toString()
  25. return n[1] ? n : `0${n}`
  26. }
  27. const cdn = (url) => {
  28. if (!url) {
  29. return ''
  30. }
  31. if (typeof url === 'string') {
  32. if ((/^(http|https):\/\/.+/.test(url))) {
  33. return url
  34. } else{
  35. return config.cdn + url
  36. }
  37. } else {
  38. let arr = []
  39. for (let i = 0; i < url.length; i++) {
  40. if ((/^(http|https):\/\/.+/.test(url[i]))) {
  41. arr.push(url[i])
  42. } else {
  43. arr.push(config.cdn + url[i])
  44. }
  45. }
  46. return arr
  47. }
  48. }
  49. const cdn2 = (url) => {
  50. if (!url) {
  51. return ''
  52. }
  53. if (typeof url === 'string') {
  54. if ((/^(http|https):\/\/.+/.test(url))) {
  55. return url
  56. } else{
  57. return config.domain + url
  58. }
  59. } else {
  60. let arr = []
  61. for (let i = 0; i < url.length; i++) {
  62. if ((/^(http|https):\/\/.+/.test(url[i]))) {
  63. arr.push(url[i])
  64. } else {
  65. arr.push(config.domain + url[i])
  66. }
  67. }
  68. return arr
  69. }
  70. }
  71. const skip = (url, events = {}, success)=>{
  72. wx.navigateTo({
  73. url,
  74. events,
  75. success
  76. })
  77. }
  78. const authSkip = (url, events = {})=>{
  79. if(wx.getStorageSync('token')){
  80. wx.navigateTo({
  81. url,
  82. events
  83. })
  84. }else{
  85. wx.navigateTo({
  86. url: '/service/login/login',
  87. events
  88. })
  89. }
  90. }
  91. const back = (delta = 1) => {
  92. wx.navigateBack({
  93. delta: delta
  94. })
  95. }
  96. const toast = (msg, time = 2000) =>{
  97. wx.showToast({
  98. title: msg,
  99. icon: 'none',
  100. duration: time
  101. })
  102. }
  103. function setWatcher(page) {
  104. let data = page.data;
  105. let watch = page.watch;
  106. Object.keys(watch).forEach(v => {
  107. let key = v.split('.');
  108. let nowData = data;
  109. for (let i = 0; i < key.length - 1; i++) {
  110. nowData = nowData[key[i]];
  111. }
  112. let lastKey = key[key.length - 1];
  113. let watchFun = watch[v].handler || watch[v];
  114. let deep = watch[v].deep;
  115. observe(nowData, lastKey, watchFun, deep, page);
  116. })
  117. }
  118. function observe(obj, key, watchFun, deep, page) {
  119. var val = obj[key];
  120. if (deep && val != null && typeof val === 'object') {
  121. Object.keys(val).forEach(childKey => {
  122. observe(val, childKey, watchFun, deep, page);
  123. })
  124. }
  125. Object.defineProperty(obj, key, {
  126. configurable: true,
  127. enumerable: true,
  128. set: function(newVal) {
  129. watchFun.call(page, newVal, val);
  130. val = newVal;
  131. if (deep) {
  132. observe(obj, key, watchFun, deep, page);
  133. }
  134. },
  135. get: function() {
  136. return val;
  137. }
  138. })
  139. }
  140. const previewImage = (arr,index=0)=>{
  141. wx.previewImage({
  142. urls: cdn(arr),
  143. current: cdn(arr)[index]
  144. })
  145. }
  146. module.exports = {
  147. formatTime : formatTime,
  148. cdn : cdn,
  149. cdn2 : cdn2,
  150. skip : skip,
  151. authSkip: authSkip,
  152. back : back,
  153. toast : toast,
  154. setWatcher: setWatcher,
  155. previewImage: previewImage
  156. }