index.js 15 KB

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