index.js 9.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408
  1. function formatNumber(n) {
  2. const str = n.toString()
  3. return str[1] ? str : `0${str}`
  4. }
  5. export function formatTime(date) {
  6. if (date.length <= 11) {
  7. date = date * 1000
  8. }
  9. var date = new Date(date)
  10. const year = date.getFullYear()
  11. const month = date.getMonth() + 1
  12. const day = date.getDate()
  13. const hour = date.getHours()
  14. return year + "/" + month + "/" + day
  15. }
  16. export function formatAllTime(date) {
  17. if (date.length <= 11) {
  18. date = date * 1000
  19. }
  20. var date = new Date(date)
  21. const year = date.getFullYear()
  22. const month = date.getMonth() + 1
  23. const day = date.getDate()
  24. const hour = date.getHours()
  25. const minutes = date.getMinutes()
  26. return year + "/" + month + "/" + day + " " + hour + ":" + minutes
  27. }
  28. export function formatTimeForSeconds(date) {
  29. if (date.length <= 11) {
  30. date = date * 1000
  31. }
  32. var date = new Date(date)
  33. const year = date.getFullYear()
  34. const month = date.getMonth() + 1
  35. const day = date.getDate()
  36. const hour = date.getHours()
  37. const minute = date.getMinutes()
  38. return year + "/" + month + "/" + day + " " + hour + ":" + minute
  39. }
  40. export function formatValidityTime(date) {
  41. if (date.toString().length <= 11) {
  42. date = date * 1000
  43. }
  44. var date = new Date(date)
  45. const year = date.getFullYear()
  46. const month = date.getMonth() + 1
  47. const day = date.getDate()
  48. const hour = date.getHours()
  49. return year + "/" + month + "/" + day + " " + hour + "时"
  50. }
  51. export function formatBirthday(date) {
  52. var date = new Date(date * 1000)
  53. const year = date.getFullYear()
  54. const month = date.getMonth() + 1
  55. const day = date.getDate()
  56. const hour = date.getHours()
  57. const t1 = [year, month, day].map(formatNumber).join('-')
  58. return `${t1}`
  59. }
  60. // 专注力与放松力图表
  61. function getLineOption(lineData_att, lineData_med) {
  62. const that = this
  63. var option = {
  64. color: ["#FFB400", "#D4327A"],
  65. legend: {
  66. data: ["Att(专注度)", "Med(放松度)"],
  67. top: -5,
  68. left: 210,
  69. // left: 'center',
  70. orient: "horizontal",
  71. icon: "circle",
  72. itemWidth: 8,
  73. itemGap: 5,
  74. // 解决部分安卓手机图例字体显示太小的问题
  75. textStyle: {
  76. // fontWeight: 'bold',
  77. fontSize: 10,
  78. color: "#CFCFCF"
  79. },
  80. selectedMode: false,
  81. show: false
  82. },
  83. grid: {
  84. left: 20,
  85. right: 20,
  86. bottom: 16,
  87. top: 16,
  88. // show:true,
  89. containLabel: true,
  90. zlevel: 1
  91. },
  92. tooltip: {
  93. show: true,
  94. trigger: 'axis'
  95. },
  96. yAxis: {
  97. x: 'center',
  98. type: 'value',
  99. splitLine: {
  100. lineStyle: {
  101. type: 'dashed'
  102. }
  103. },
  104. axisLine: {
  105. lineStyle: {
  106. color: '#ccc'
  107. },
  108. show: false
  109. },
  110. axisLabel: {
  111. color: '#ccc'
  112. },
  113. max: 100,
  114. // data: ["0", "20", "40", "60", "80", "100"]
  115. // show: false
  116. },
  117. xAxis: {
  118. type: 'category',
  119. boundaryGap: false,
  120. splitLine: {
  121. lineStyle: {
  122. type: 'dashed'
  123. }
  124. },
  125. axisLine: {
  126. lineStyle: {
  127. color: '#ccc'
  128. }
  129. },
  130. axisLabel: {
  131. color: '#ccc'
  132. },
  133. show: false
  134. },
  135. series: [{
  136. name: "Att(专注度)",
  137. symbol: 'none', //取消折点圆圈
  138. type: 'line',
  139. smooth: true,
  140. data: lineData_att
  141. },
  142. {
  143. name: "Med(放松度)",
  144. symbol: 'none', //取消折点圆圈
  145. type: 'line',
  146. smooth: true,
  147. data: lineData_med
  148. },
  149. ],
  150. animation: false
  151. }
  152. return option
  153. }
  154. // 基本脑波图
  155. function getBaseOption(delta, theta, alpha, beta) {
  156. const that = this
  157. var option = {
  158. color: ["#4b8cb4", "#ed4b59", "#fdb64b", "#F6CB90"],
  159. legend: {
  160. data: ["Delta", "Theta", "Alpha", "Beta"],
  161. left: 'center',
  162. bottom: 20,
  163. icon: "circle",
  164. itemWidth: 8,
  165. itemGap: 25,
  166. // 解决部分安卓手机图例字体显示太小的问题
  167. textStyle: {
  168. // fontWeight: 'bold',
  169. fontSize: 10,
  170. color: "#CFCFCF",
  171. },
  172. show: false
  173. },
  174. grid: {
  175. left: 20,
  176. right: 20,
  177. bottom: 16,
  178. top: 16,
  179. // show:false,
  180. containLabel: true
  181. },
  182. tooltip: {
  183. show: true,
  184. trigger: 'axis'
  185. },
  186. yAxis: {
  187. x: 'center',
  188. type: 'value',
  189. splitLine: {
  190. lineStyle: {
  191. type: 'dashed'
  192. }
  193. },
  194. axisLine: {
  195. lineStyle: {
  196. color: '#ccc'
  197. },
  198. show: false
  199. },
  200. axisLabel: {
  201. color: '#ccc'
  202. },
  203. // max: 100,
  204. // data: ["0", "20", "40", "60", "80", "100"]
  205. // show: false
  206. },
  207. xAxis: {
  208. type: 'category',
  209. boundaryGap: false,
  210. splitLine: {
  211. lineStyle: {
  212. type: 'dashed'
  213. }
  214. },
  215. axisLine: {
  216. lineStyle: {
  217. color: '#ccc'
  218. }
  219. },
  220. axisLabel: {
  221. color: '#ccc'
  222. },
  223. show: false
  224. },
  225. series: [{
  226. name: "Delta",
  227. symbol: 'none', //取消折点圆圈
  228. type: 'line',
  229. smooth: true,
  230. data: delta
  231. },
  232. {
  233. name: "Theta",
  234. symbol: 'none', //取消折点圆圈
  235. type: 'line',
  236. smooth: true,
  237. data: theta
  238. },
  239. {
  240. name: "Alpha",
  241. symbol: 'none', //取消折点圆圈
  242. type: 'line',
  243. smooth: true,
  244. data: alpha
  245. },
  246. {
  247. name: "Beta",
  248. symbol: 'none', //取消折点圆圈
  249. type: 'line',
  250. smooth: true,
  251. data: beta,
  252. },
  253. ],
  254. animation: false
  255. }
  256. return option
  257. }
  258. export function formatSeconds(value) {
  259. var secondTime = parseInt(value);// 秒
  260. var minuteTime = 0;// 分
  261. var hourTime = 0;// 小时
  262. if (secondTime > 60) {//如果秒数大于60,将秒数转换成整数
  263. //获取分钟,除以60取整数,得到整数分钟
  264. minuteTime = parseInt(secondTime / 60);
  265. //获取秒数,秒数取佘,得到整数秒数
  266. secondTime = parseInt(secondTime % 60);
  267. //如果分钟大于60,将分钟转换成小时
  268. if (minuteTime > 60) {
  269. //获取小时,获取分钟除以60,得到整数小时
  270. hourTime = parseInt(minuteTime / 60);
  271. //获取小时后取佘的分,获取分钟除以60取佘的分
  272. minuteTime = parseInt(minuteTime % 60);
  273. }
  274. }
  275. var result = "" + parseInt(secondTime) + "秒";
  276. if (minuteTime > 0) {
  277. result = "" + parseInt(minuteTime) + "分" + result;
  278. }
  279. if (hourTime > 0) {
  280. result = "" + parseInt(hourTime) + "小时" + result;
  281. }
  282. return result;
  283. }
  284. //获取等级名称
  285. function get_level_name($level_id) {
  286. let $level = ['普通用户', '体验会员', '黄金会员', '白金会员', '钻石会员', '创客代理', '区域代理', '合伙人', '店员', '店长', '老师']
  287. return $level[$level_id]
  288. }
  289. export function cal_down_time($final_time) {
  290. let $today = new Date().getTime()
  291. let $differ = $final_time * 1000 - $today
  292. //计算出相差天数
  293. var days = Math.floor($differ / (24 * 3600 * 1000))
  294. //计算出小时数
  295. var leave1 = $differ % (24 * 3600 * 1000) //计算天数后剩余的毫秒数
  296. var hours = Math.floor(leave1 / (3600 * 1000))
  297. //计算相差分钟数
  298. var leave2 = leave1 % (3600 * 1000) //计算小时数后剩余的毫秒数
  299. var minutes = Math.floor(leave2 / (60 * 1000))
  300. //计算相差秒数
  301. var leave3 = leave2 % (60 * 1000) //计算分钟数后剩余的毫秒数
  302. var seconds = Math.round(leave3 / 1000)
  303. return {
  304. differ: $differ, days, hours, minutes, seconds
  305. }
  306. }
  307. export function getHightPieChartOption($params) {
  308. let $option = {
  309. tooltip: {
  310. trigger: 'item'
  311. },
  312. series: [
  313. {
  314. name: '访问来源',
  315. type: 'pie',
  316. radius: '50%',
  317. labelLine: {
  318. show: false
  319. },
  320. data: [
  321. // {value: $params, name: '高专注占比'},
  322. // {value: Math.abs(100-$params), name: '直接访问'},
  323. {value: $params, name: '高专注占比'},
  324. {value: Math.abs(100 - $params), name: '直接访问'},
  325. ]
  326. }
  327. ]
  328. };
  329. return $option
  330. }
  331. export function getRadarChartOption($params) {
  332. let $option = {
  333. tooltip: {},
  334. radar: {
  335. // shape: 'circle',
  336. radius: '55%',
  337. name: {
  338. textStyle: {
  339. color: '#fff',
  340. backgroundColor: '#999',
  341. borderRadius: 3,
  342. padding: [3, 5]
  343. }
  344. },
  345. indicator: [
  346. {name: '专注力平均值指数', max: 6500},
  347. {name: '专注力广度指数', max: 16000},
  348. {name: '专注力爆发指数', max: 30000},
  349. {name: '专注力抗性指数', max: 38000},
  350. {name: '专注力启动指数', max: 52000},
  351. {name: '高专注力占比指数', max: 25000}
  352. ]
  353. },
  354. series: [{
  355. name: '预算 vs 开销(Budget vs spending)',
  356. type: 'radar',
  357. // areaStyle: {normal: {}},
  358. lineStyle: {
  359. color: "#D28885"
  360. },
  361. data: [
  362. {
  363. value: [5000, 14000, 28000, 31000, 42000, 21000],
  364. name: '实际开销(Actual Spending)'
  365. }
  366. ]
  367. }]
  368. };
  369. return $option
  370. }
  371. export default {
  372. formatNumber,
  373. formatTime,
  374. getLineOption,
  375. getBaseOption,
  376. get_level_name
  377. }