common.js 7.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298
  1. import config from '@/config'
  2. import uma from 'umtrack-wx'
  3. function umaInit() {
  4. config.appKey &&
  5. uma.init({
  6. appKey: config.appKey, // 由友盟分配的APP_KEY
  7. // 使用Openid进行统计,此项为false时将使用友盟+uuid进行用户统计。
  8. // 使用Openid来统计微信小程序的用户,会使统计的指标更为准确,对系统准确性要求高的应用推荐使用Openid。
  9. useOpenid: false,
  10. // 使用openid进行统计时,是否授权友盟自动获取Openid,
  11. // 如若需要,请到友盟后台"设置管理-应用信息"(https://mp.umeng.com/setting/appset)中设置appId及secret
  12. autoGetOpenid: false
  13. // debug: true, // 是否打开调试模式
  14. // uploadUserInfo: true // 自动上传用户信息,设为false取消上传,默认为false
  15. })
  16. }
  17. const SliderUnit = 0.5 // 一个色块代表0.5个小时
  18. const TimeStart = 0
  19. const TimeEnd = 24
  20. function generateTimeSliders(openStartTime, openEndTime, disabledPast = true) {
  21. let start = TimeStart,
  22. end = TimeEnd
  23. let duration = end - start
  24. let times = []
  25. let { juggeValue } = getNowTime()
  26. for (let i = 0; i < duration / SliderUnit; i++) {
  27. let value = start + i * SliderUnit
  28. let values = value.toString().split('.')
  29. let status = ''
  30. let label = ''
  31. if (values.length == 1) {
  32. // 代表是整数
  33. label =
  34. parseInt(values[0]) < 10 ? '0' + values[0] + ':00' : values[0] + ':00'
  35. } else {
  36. // 代表是有分钟
  37. let mniuts = SliderUnit * 60 // 转化分钟;
  38. label =
  39. parseInt(values[0]) < 10
  40. ? '0' + values[0] + ':' + mniuts
  41. : values[0] + ':' + mniuts
  42. }
  43. if (disabledPast && value < juggeValue) {
  44. status = 'past' // 过去时间
  45. }
  46. if (openEndTime && value >= openStartTime && value <= openEndTime) {
  47. status = 'unOpened' // 不在开放时间内
  48. }
  49. times.push({
  50. value,
  51. label,
  52. status
  53. })
  54. }
  55. return times
  56. }
  57. function getNowTime() {
  58. let now = new Date()
  59. let hour = now.getHours()
  60. let minuts = now.getMinutes()
  61. // let hour = 16;
  62. // let minuts = 30;
  63. let minutsValue = 0
  64. if (minuts < 30) {
  65. // 在30分钟内,都可以预约当前小时,故取0
  66. minutsValue = 0
  67. } else {
  68. minutsValue = 0.5 // 在30分钟-59分钟内,都可以预约当前小时+半小时之后,故取0.5
  69. }
  70. let juggeValue = hour + minutsValue
  71. return {
  72. juggeValue,
  73. trueValue: {
  74. hour,
  75. minuts
  76. }
  77. }
  78. }
  79. function getNowDate(date) {
  80. let now = new Date()
  81. return getDate(now)
  82. }
  83. function getDate(now) {
  84. let year = now.getFullYear()
  85. let month = now.getMonth() + 1
  86. let date = now.getDate()
  87. return [year, getTowNum(month), getTowNum(date)].join('')
  88. }
  89. function getTowNum(num) {
  90. num = parseInt(num)
  91. return num < 10 ? '0' + num : num
  92. }
  93. function formateTimeValue(timeValue) {
  94. let value = parseFloat(timeValue)
  95. let hour = parseInt(timeValue)
  96. let minits = (value - hour) * 60
  97. return `${getTowNum(hour)}${getTowNum(minits)}00`
  98. }
  99. function formateDateValue(dateValue) {
  100. return dateValue.replace(/-/g, '')
  101. }
  102. function formateTimeToValue(time) {
  103. if (time === '') return 0
  104. let hours = time.substring(0, 2)
  105. let mins = time.substring(2, 4)
  106. let hoursValue = parseInt(hours)
  107. let mintusValue = parseInt(mins) / 60
  108. return hoursValue + mintusValue
  109. }
  110. function formateTimeToColon(time) {
  111. let hours = time.substring(0, 2)
  112. let mins = time.substring(2, 4)
  113. return `${hours}:${mins}`
  114. }
  115. function endtimeToUnitTime(time) {
  116. let hours = time.substring(0, 2)
  117. let mins = time.substring(2, 4)
  118. if (mins < 30) {
  119. mins = '00'
  120. } else {
  121. mins = '30'
  122. }
  123. return `${hours}${mins}00`
  124. }
  125. function startimeToUnitTime(time) {
  126. let hours = time.substring(0, 2)
  127. let mins = time.substring(2, 4)
  128. if (mins < 30 && mins !== '00') {
  129. mins = '30'
  130. } else if (mins > 30) {
  131. mins = '00'
  132. hours = parseInt(hours) + 1
  133. hours = hours < 10 ? `0${hours}` : hours
  134. } else {
  135. }
  136. return `${hours}${mins}00`
  137. }
  138. function formateBookedList(bookedList) {
  139. let list = {}
  140. if (!bookedList || (bookedList && bookedList.length == 0)) {
  141. return list
  142. }
  143. bookedList.forEach((item) => {
  144. let { startTime, endTime, startDate } = item
  145. let key = startDate
  146. let data = {
  147. start: formateTimeToValue(endtimeToUnitTime(startTime)),
  148. end: formateTimeToValue(startimeToUnitTime(endTime)),
  149. ...item
  150. }
  151. if (!list[key]) {
  152. list[key] = [data]
  153. } else {
  154. list[key].push(data)
  155. }
  156. })
  157. return list
  158. }
  159. function dateToDate(val) {
  160. const year = val.slice(0, 4)
  161. const month = val.slice(4, 6)
  162. const day = val.slice(6, 8)
  163. return `${year}-${month}-${day}`
  164. }
  165. function getWeekDay(date) {
  166. let week = date.getDay()
  167. let weekday = ['周日', '周一', '周二', '周三', '周四', '周五', '周六']
  168. return weekday[week]
  169. }
  170. function checkSpaceControl(val) {
  171. if (!val) {
  172. wx.showToast({
  173. title: '您没有权限!',
  174. icon: 'none',
  175. duration: 1500
  176. })
  177. return false
  178. } else {
  179. return true
  180. }
  181. }
  182. function carbonCredit(projectId) {
  183. return '碳积分'
  184. }
  185. function carbonCreditExplain(params) {
  186. const arr = [
  187. {
  188. id: '',
  189. sty: '',
  190. text: '空调加时积分规则:'
  191. },
  192. {
  193. id: '1.',
  194. sty: '',
  195. text: '空调/照明加时申请,增加积分1.5;'
  196. },
  197. {
  198. id: '2.',
  199. sty: '',
  200. text: '空调/照明加时时段内,点击“我要离开”主动结束加时,增加积分0.5。'
  201. },
  202. {
  203. id: '',
  204. sty: '',
  205. text: '空调&照明操作积分规则:'
  206. },
  207. {
  208. id: '1.',
  209. sty: '',
  210. text: '当日主动关闭空调或照明设备,且持续时间大于1小时,空调积2分,照明积0.3分;'
  211. },
  212. {
  213. id: '2.',
  214. sty: '',
  215. text: '夏季,空调调节温度大于等于26℃,且持续时间大于30分钟,积0.3分;'
  216. },
  217. {
  218. id: '3.',
  219. sty: '',
  220. text: '冬季,空调调节温度小于等于21℃,且持续时间大于30分钟,积0.3分;'
  221. },
  222. {
  223. id: '4.',
  224. sty: '',
  225. text: '办公室出现大于等于2个空调或照明设备时,用户开启空调或照明30分钟后,未开启的空调或照明数量大于等于1个时,空调积1分,照明积0.2分。'
  226. },
  227. {
  228. id: '',
  229. sty: '',
  230. text: '会议场景积分规则:'
  231. },
  232. {
  233. id: '1.',
  234. sty: '',
  235. text: '会议期间提前结束会议,从讨论或投影场景切换至散会场景时,积2分。'
  236. },
  237. {
  238. id: '',
  239. sty: 'color:#9FA3AF;padding-top:20rpx;',
  240. text: '说明:'
  241. },
  242. {
  243. id: '1.',
  244. sty: 'color:#9FA3AF;font-size:24rpx',
  245. text: '以上低碳行为会根据系统规则在正常使用空调/照明等设备的合理范围内限制积分次数;'
  246. },
  247. {
  248. id: '2.',
  249. sty: 'color:#9FA3AF;font-size:24rpx',
  250. text: '低碳积分将同时计入个人和企业积分账户。'
  251. }
  252. ]
  253. return arr
  254. }
  255. export {
  256. carbonCreditExplain,
  257. carbonCredit,
  258. checkSpaceControl,
  259. umaInit,
  260. generateTimeSliders,
  261. getNowTime,
  262. formateBookedList,
  263. formateTimeValue,
  264. formateTimeToValue,
  265. formateDateValue,
  266. getNowDate,
  267. formateTimeToColon,
  268. dateToDate,
  269. getWeekDay,
  270. endtimeToUnitTime,
  271. startimeToUnitTime,
  272. TimeEnd,
  273. TimeStart,
  274. SliderUnit
  275. }