index.js 15 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445
  1. //自调用函数
  2. (function () {
  3. // 1、页面一加载就要知道页面宽度计算
  4. var setFont = function () {
  5. // 因为要定义变量可能和别的变量相互冲突,污染,所有用自调用函数
  6. var html = document.documentElement;// 获取html
  7. // 获取宽度
  8. var width = html.clientWidth;
  9. // 判断
  10. if (width < 1024) width = 1024
  11. if (width > 1920) width = 1920
  12. // 设置html的基准值
  13. var fontSize = width / 80 + 'px';
  14. // 设置给html
  15. html.style.fontSize = fontSize;
  16. }
  17. setFont();
  18. // 2、页面改变的时候也需要设置
  19. // 尺寸改变事件
  20. window.onresize = function () {
  21. setFont();
  22. }
  23. })();
  24. (function () {
  25. //事件委托
  26. $('.monitor').on('click', ' a', function () {
  27. //点击当前的a 加类名 active 他的兄弟删除类名
  28. $(this).addClass('active').siblings().removeClass('active');
  29. //获取一一对应的下标
  30. var index = $(this).index();
  31. //选取content 然后狗日对应下标的 显示 当前的兄弟.content隐藏
  32. $('.content').eq(index).show().siblings('.content').hide();
  33. });
  34. //滚动
  35. //原理:把marquee下面的子盒子都复制一遍 加入到marquee中
  36. // 然后动画向上滚动,滚动到一半重新开始滚动
  37. //因为选取的是两个marquee 所以要遍历
  38. $('.monitor .marquee').each(function (index, dom) {
  39. //将每个 的所有子级都复制一遍
  40. var rows = $(dom).children().clone();
  41. //再将新的到的加入原来的
  42. $(dom).append(rows);
  43. });
  44. })();
  45. (function () {
  46. var myechart = echarts.init($('.pie')[0]);
  47. option = {
  48. // 控制提示
  49. tooltip: {
  50. // 非轴图形,使用item的意思是放到数据对应图形上触发提示
  51. trigger: 'item',
  52. // 格式化提示内容:
  53. // a 代表图表名称 b 代表数据名称 c 代表数据 d代表 当前数据/总数据的比例
  54. formatter: "{a} <br/>{b} : {c} ({d}%)"
  55. },
  56. // 控制图表
  57. series: [
  58. {
  59. // 图表名称
  60. name: '地区',
  61. // 图表类型
  62. type: 'pie',
  63. // 南丁格尔玫瑰图 有两个圆 内圆半径10% 外圆半径70%
  64. // 百分比基于 图表DOM容器的半径
  65. radius: ['10%', '70%'],
  66. // 图表中心位置 left 50% top 50% 距离图表DOM容器
  67. center: ['50%', '50%'],
  68. // 半径模式,另外一种是 area 面积模式
  69. roseType: 'radius',
  70. // 数据集 value 数据的值 name 数据的名称
  71. data: [
  72. { value: 20, name: '云南' },
  73. { value: 5, name: '北京' },
  74. { value: 15, name: '山东' },
  75. { value: 25, name: '河北' },
  76. { value: 20, name: '江苏' },
  77. { value: 35, name: '浙江' },
  78. { value: 30, name: '四川' },
  79. { value: 40, name: '湖北' }
  80. ],
  81. //文字调整
  82. label: {
  83. fontSize: 10
  84. },
  85. //引导线
  86. labelLine: {
  87. length: 8,
  88. length2: 10
  89. }
  90. }
  91. ],
  92. color: ['#006cff', '#60cda0', '#ed8884', '#ff9f7f', '#0096ff', '#9fe6b8', '#32c5e9', '#1d9dff']
  93. };
  94. myechart.setOption(option);
  95. })();
  96. // 用户
  97. (function () {
  98. // 中间省略的数据 准备三项
  99. var item = {
  100. name: '',
  101. value: 1200,
  102. // 柱子颜色
  103. itemStyle: {
  104. color: '#254065'
  105. },
  106. // 鼠标经过柱子颜色
  107. emphasis: {
  108. itemStyle: {
  109. color: '#254065'
  110. }
  111. },
  112. // 工具提示隐藏
  113. tooltip: {
  114. extraCssText: 'opacity:0'
  115. }
  116. };
  117. option = {
  118. // 工具提示
  119. tooltip: {
  120. // 触发类型 经过轴触发axis 经过轴触发item
  121. trigger: 'item',
  122. // 轴触发提示才有效
  123. axisPointer: {
  124. // 默认为直线,可选为:'line' 线效果 | 'shadow' 阴影效果
  125. type: 'shadow'
  126. }
  127. },
  128. // 图表边界控制
  129. grid: {
  130. // 距离 上右下左 的距离
  131. left: '0',
  132. right: '3%',
  133. bottom: '3%',
  134. top: '5%',
  135. // 大小是否包含文本【类似于boxsizing】
  136. containLabel: true,
  137. //显示边框
  138. show: true,
  139. //边框颜色
  140. borderColor: 'rgba(0, 240, 255, 0.3)'
  141. },
  142. // 控制x轴
  143. xAxis: [
  144. {
  145. // 使用类目,必须有data属性
  146. type: 'category',
  147. // 使用 data 中的数据设为刻度文字
  148. data: ['上海', '广州', '北京', '深圳', '合肥', '', '......', '', '杭州', '厦门', '济南', '成都', '重庆'],
  149. // 刻度设置
  150. axisTick: {
  151. // true意思:图形在刻度中间
  152. // false意思:图形在刻度之间
  153. alignWithLabel: false,
  154. show: false
  155. },
  156. //文字
  157. axisLabel: {
  158. color: '#4c9bfd'
  159. }
  160. }
  161. ],
  162. // 控制y轴
  163. yAxis: [
  164. {
  165. // 使用数据的值设为刻度文字
  166. type: 'value',
  167. axisTick: {
  168. // true意思:图形在刻度中间
  169. // false意思:图形在刻度之间
  170. alignWithLabel: false,
  171. show: false
  172. },
  173. //文字
  174. axisLabel: {
  175. color: '#4c9bfd'
  176. },
  177. splitLine: {
  178. lineStyle: {
  179. color: 'rgba(0, 240, 255, 0.3)'
  180. }
  181. },
  182. }
  183. ],
  184. // 控制x轴
  185. series: [
  186. {
  187. // series配置
  188. // 颜色
  189. itemStyle: {
  190. // 提供的工具函数生成渐变颜色
  191. color: new echarts.graphic.LinearGradient(
  192. // (x1,y2) 点到点 (x2,y2) 之间进行渐变
  193. 0, 0, 0, 1,
  194. [
  195. { offset: 0, color: '#00fffb' }, // 0 起始颜色
  196. { offset: 1, color: '#0061ce' } // 1 结束颜色
  197. ]
  198. )
  199. },
  200. // 图表数据名称
  201. name: '用户统计',
  202. // 图表类型
  203. type: 'bar',
  204. // 柱子宽度
  205. barWidth: '60%',
  206. // 数据
  207. data: [2100, 1900, 1700, 1560, 1400, item, item, item, 900, 750, 600, 480, 240]
  208. }
  209. ]
  210. };
  211. var myechart = echarts.init($('.users .bar')[0]);
  212. myechart.setOption(option);
  213. })();
  214. //订单
  215. (function () {
  216. var data = {
  217. day365: { orders: '20,301,987', amount: '99834' },
  218. day90: { orders: '301,987', amount: '9834' },
  219. day30: { orders: '1,987', amount: '3834' },
  220. day1: { orders: '987', amount: '834' }
  221. }
  222. //点击事件
  223. $('.order').on('click', '.filter a', function () {
  224. //点击之后加类名
  225. $(this).addClass('active').siblings().removeClass('active');
  226. // 先获取点击a的 data-key自定义属性
  227. var key = $(this).attr('data-key');
  228. //获取自定义属性
  229. // data{}==>data.shuxing data['shuxing]
  230. key = data[key];//
  231. $('.order .item h4:eq(0)').text(key.orders);
  232. $('.order .item h4:eq(1)').text(key.amount);
  233. });
  234. //定时器
  235. var index = 0;
  236. var aclick = $('.order a');
  237. setInterval(function () {
  238. index++;
  239. if (index > 3) {
  240. index = 0;
  241. }
  242. //每san秒调用点击事件
  243. aclick.eq(index).click();
  244. }, 3000);
  245. })();
  246. //销售
  247. (function () {
  248. var option = {
  249. //鼠标提示工具
  250. tooltip: {
  251. trigger: 'axis'
  252. },
  253. xAxis: {
  254. // 类目类型
  255. type: 'category',
  256. // x轴刻度文字
  257. data: ['1月', '2月', '3月', '4月', '5月', '6月', '7月', '8月', '9月', '10月', '11月', '12月'],
  258. axisTick: {
  259. show: false//去除刻度线
  260. },
  261. axisLabel: {
  262. color: '#4c9bfd'//文本颜色
  263. },
  264. axisLine: {
  265. show: false//去除轴线
  266. },
  267. boundaryGap: false//去除轴内间距
  268. },
  269. yAxis: {
  270. // 数据作为刻度文字
  271. type: 'value',
  272. axisTick: {
  273. show: false//去除刻度线
  274. },
  275. axisLabel: {
  276. color: '#4c9bfd'//文本颜色
  277. },
  278. axisLine: {
  279. show: false//去除轴线
  280. },
  281. boundaryGap: false//去除轴内间距
  282. },
  283. //图例组件
  284. legend: {
  285. textStyle: {
  286. color: '#4c9bfd' // 图例文字颜色
  287. },
  288. right: '10%'//距离右边10%
  289. },
  290. // 设置网格样式
  291. grid: {
  292. show: true,// 显示边框
  293. top: '20%',
  294. left: '3%',
  295. right: '4%',
  296. bottom: '3%',
  297. borderColor: '#012f4a',// 边框颜色
  298. containLabel: true // 包含刻度文字在内
  299. },
  300. series: [{
  301. name: '预期销售额',
  302. // 数据
  303. data: [24, 40, 101, 134, 90, 230, 210, 230, 120, 230, 210, 120],
  304. // 图表类型
  305. type: 'line',
  306. // 圆滑连接
  307. smooth: true,
  308. itemStyle: {
  309. color: '#00f2f1' // 线颜色
  310. }
  311. },
  312. {
  313. name: '实际销售额',
  314. // 数据
  315. data: [40, 64, 191, 324, 290, 330, 310, 213, 180, 200, 180, 79],
  316. // 图表类型
  317. type: 'line',
  318. // 圆滑连接
  319. smooth: true,
  320. itemStyle: {
  321. color: '#ed3f35' // 线颜色
  322. }
  323. }]
  324. };
  325. var myechart = echarts.init($('.line')[0]);
  326. myechart.setOption(option);
  327. //点击效果
  328. var data = {
  329. year: [
  330. [24, 40, 101, 134, 90, 230, 210, 230, 120, 230, 210, 120],
  331. [40, 64, 191, 324, 290, 330, 310, 213, 180, 200, 180, 79]
  332. ],
  333. quarter: [
  334. [23, 75, 12, 97, 21, 67, 98, 21, 43, 64, 76, 38],
  335. [43, 31, 65, 23, 78, 21, 82, 64, 43, 60, 19, 34]
  336. ],
  337. month: [
  338. [34, 87, 32, 76, 98, 12, 32, 87, 39, 36, 29, 36],
  339. [56, 43, 98, 21, 56, 87, 43, 12, 43, 54, 12, 98]
  340. ],
  341. week: [
  342. [43, 73, 62, 54, 91, 54, 84, 43, 86, 43, 54, 53],
  343. [32, 54, 34, 87, 32, 45, 62, 68, 93, 54, 54, 24]
  344. ]
  345. }
  346. $('.sales ').on('click', '.caption a', function () {
  347. $(this).addClass('active').siblings('a').removeClass('active');
  348. //option series data
  349. //获取自定义属性值
  350. var key = $(this).attr('data-type');
  351. //取出对应的值
  352. key = data[key];
  353. //将值设置到 图表中
  354. option.series[0].data = key[0];
  355. option.series[1].data = key[1];
  356. //再次调用才能在页面显示
  357. myechart.setOption(option);
  358. });
  359. //定时器
  360. var index = 0;
  361. var timer = setInterval(function () {
  362. index++;
  363. if (index > 4) {
  364. index = 0;
  365. };
  366. $('.sales .caption a').eq(index).click();
  367. }, 2000);
  368. })();
  369. (function () {
  370. var option = {
  371. series: [
  372. {
  373. type: 'pie',
  374. radius: ['130%', '150%'], // 放大图形
  375. center: ['50%', '80%'], // 往下移动 套住75%文字
  376. label: {
  377. show: false,
  378. },
  379. startAngle: 180,
  380. hoverOffset: 0, // 鼠标经过不变大
  381. data: [
  382. {
  383. value: 100,
  384. itemStyle: { // 颜色渐变#00c9e0->#005fc1
  385. color: {
  386. type: 'linear',
  387. x: 0,
  388. y: 0,
  389. x2: 0,
  390. y2: 1,
  391. colorStops: [
  392. { offset: 0, color: '#00c9e0' },
  393. { offset: 1, color: '#005fc1' }
  394. ]
  395. }
  396. }
  397. },
  398. { value: 100, itemStyle: { color: '#12274d' } }, // 颜色#12274d
  399. { value: 200, itemStyle: { color: 'transparent' } }// 透明隐藏第三块区域
  400. ]
  401. }
  402. ]
  403. };
  404. var myechart = echarts.init($('.gauge')[0]);
  405. myechart.setOption(option);
  406. })();
  407. (function () {
  408. var data = [
  409. { name: '可爱多', num: '9,086' },
  410. { name: '娃哈哈', num: '8,341' },
  411. { name: '喜之郎', num: '7,407' },
  412. { name: '八喜', num: '6,080' },
  413. { name: '小洋人', num: '6,724' },
  414. { name: '好多鱼', num: '2,170' },
  415. ]
  416. $('.inner').on('mouseenter', '.sup li', function () {
  417. $(this).addClass('active').siblings().removeClass('active');
  418. //获取随机的值 sort方法 是给数组排序 a-b是从小到大
  419. //.5-随机0-1的数 可能为正可能为负 排序就会随机
  420. var radomData = data.sort(function (a, b) { return 0.5 - Math.random() });
  421. var html = '';
  422. radomData.forEach(function (item) {
  423. html += `<li><span>${item.name}</span><span>${item.num} <s class="icon-up"></s></span></li>`;
  424. });
  425. //渲染
  426. $('.sub').html(html);
  427. });
  428. $('.province .sup li').eq(0).mouseenter();
  429. var index = 0;
  430. var timer = setInterval(() => {
  431. index++;
  432. if (index > 5) {
  433. index = 0;
  434. }
  435. $('.sup li').eq(index).mouseenter();
  436. }, 2000);
  437. })();