index2.js 21 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633
  1. $(function () {
  2. ceshis();
  3. function ceshis() {
  4. var myChart = echarts.init(document.getElementById('chart_1'));
  5. var namedata = [{name:'张'},{name:'刘'},{name:'李'},{name:'邓'},{name:'熊'},{name:'田'},{name:'周'},{name:'赵'},{name:'钱'},{name:'孙'},
  6. {name:'吴'},{name:'郑'},{name:'王'},{name:'冯'},{name:'陈'},{name:'杨'},{name:'朱'},{name:'秦'},{name:'许'},{name:'徐'},
  7. {name:'何'},{name:'曹'},{name:'陶'},{name:'邹'},{name:'苏'},{name:'范'},{name:'彭'},{name:'鲁'},{name:'马'},{name:'方'},
  8. {name:'唐'},{name:'顾'}];
  9. var option = null;
  10. var geoCoordMap = {
  11. '上海': [119.1803, 31.2891],
  12. "福建": [119.4543, 25.9222],
  13. "重庆": [108.384366, 30.439702],
  14. '北京': [116.4551, 40.2539],
  15. "辽宁": [123.1238, 42.1216],
  16. "河北": [114.4995, 38.1006],
  17. "天津": [117.4219, 39.4189],
  18. "山西": [112.3352, 37.9413],
  19. "陕西": [109.1162, 34.2004],
  20. "甘肃": [103.5901, 36.3043],
  21. "宁夏": [106.3586, 38.1775],
  22. "青海": [101.4038, 36.8207],
  23. "新疆": [87.9236, 43.5883],
  24. "西藏": [91.11, 29.97],
  25. "四川": [103.9526, 30.7617],
  26. "吉林": [125.8154, 44.2584],
  27. "山东": [117.1582, 36.8701],
  28. "河南": [113.4668, 34.6234],
  29. "江苏": [118.8062, 31.9208],
  30. "安徽": [117.29, 32.0581],
  31. "湖北": [114.3896, 30.6628],
  32. "浙江": [119.5313, 29.8773],
  33. '内蒙古': [110.3467, 41.4899],
  34. "江西": [116.0046, 28.6633],
  35. "湖南": [113.0823, 28.2568],
  36. "贵州": [106.6992, 26.7682],
  37. "云南": [102.9199, 25.4663],
  38. "广东": [113.12244, 23.009505],
  39. "广西": [108.479, 23.1152],
  40. "海南": [110.3893, 19.8516],
  41. '黑龙江': [127.9688, 45.368],
  42. '台湾': [121.4648, 25.5630]
  43. };
  44. var chinaDatas = [
  45. {
  46. name: '北京',
  47. value: 86
  48. },
  49. {
  50. name: '福建',
  51. value: 65
  52. },
  53. {
  54. name: '广东',
  55. value: 53
  56. },
  57. {
  58. name: '上海',
  59. value: 48
  60. },
  61. {
  62. name: '河北',
  63. value: 2
  64. },
  65. {
  66. name: '天津',
  67. value: 6
  68. },
  69. {
  70. name: '山西',
  71. value: 12
  72. },
  73. {
  74. name: '陕西',
  75. value: 2
  76. },
  77. {
  78. name: '甘肃',
  79. value: 4
  80. },
  81. {
  82. name: '宁夏',
  83. value: 5
  84. },
  85. {
  86. name: '青海',
  87. value: 3
  88. },
  89. {
  90. name: '新疆',
  91. value: 0.4
  92. },
  93. {
  94. name: '西藏',
  95. value: 0.3
  96. },
  97. {
  98. name: '四川',
  99. value: 22
  100. },
  101. {
  102. name: '重庆',
  103. value: 12
  104. },
  105. {
  106. name: '山东',
  107. value: 9
  108. },
  109. {
  110. name: '河南',
  111. value: 0.9
  112. },
  113. {
  114. name: '江苏',
  115. value: 24
  116. },
  117. {
  118. name: '安徽',
  119. value: 15
  120. },
  121. {
  122. name: '湖北',
  123. value: 6
  124. },
  125. {
  126. name: '浙江',
  127. value: 15
  128. },
  129. {
  130. name: '内蒙古',
  131. value: 0.3
  132. },
  133. {
  134. name: '江西',
  135. value: 34
  136. },
  137. {
  138. name: '湖南',
  139. value: 12
  140. },
  141. {
  142. name: '贵州',
  143. value: 0.8
  144. },
  145. {
  146. name: '广西',
  147. value: 16
  148. },
  149. {
  150. name: '海南',
  151. value: 37
  152. },
  153. {
  154. name: '辽宁',
  155. value: 0.2
  156. },
  157. {
  158. name: '吉林',
  159. value: 0.4
  160. },
  161. {
  162. name: '云南',
  163. value: 34
  164. },
  165. {
  166. name: '黑龙江',
  167. value: 5
  168. },
  169. {
  170. name: '台湾',
  171. value: 43
  172. }
  173. ];
  174. var convertData = function(data, type) {
  175. /*type:1 地图参数;type:2数据参数*/
  176. var res = [];
  177. for (var i = 0; i < data.length; i++) {
  178. var geoCoord = geoCoordMap[data[i].name];
  179. if (geoCoord) {
  180. if (type == 2) {
  181. res.push({
  182. name: data[i].name,
  183. value: geoCoord.concat(data[i].value),
  184. username: data[i].username,
  185. telphone: data[i].telphone,
  186. address: data[i].address
  187. });
  188. } else {
  189. res.push({
  190. name: data[i].name,
  191. value: geoCoord.concat(data[i].value)
  192. });
  193. }
  194. }
  195. }
  196. //console.log(res);
  197. return res;
  198. };
  199. var yData = [];
  200. var barData = chinaDatas;
  201. barData = barData.sort(function(a,b){
  202. return b.value-a.value;
  203. });
  204. for(var j =0;j<barData.length;j++){
  205. if(j<10){
  206. yData.push('0'+j + barData[j].name);
  207. }else{
  208. yData.push(j + barData[j].name);
  209. }
  210. }
  211. option = {
  212. /*backgroundColor: '#00013a',*/
  213. title: [{
  214. show: true,
  215. text: '2019年度销售排行',
  216. subtext: '单位:万辆',
  217. subtextStyle:{
  218. color:'#ffffff',
  219. lineHeight:20
  220. },
  221. textStyle: {
  222. color: '#fff',
  223. fontSize: 18
  224. },
  225. right: 140,
  226. top: 20
  227. }],
  228. grid: {
  229. right: 10,
  230. top: 80,
  231. bottom: 20,
  232. width: '200'
  233. },
  234. xAxis: {
  235. show: false
  236. },
  237. yAxis: {
  238. type: 'category',
  239. inverse: true,
  240. nameGap: 16,
  241. axisLine: {
  242. show: false,
  243. lineStyle: {
  244. color: '#ddd'
  245. }
  246. },
  247. axisTick: {
  248. show: false,
  249. lineStyle: {
  250. color: '#ddd'
  251. }
  252. },
  253. axisLabel: {
  254. interval: 0,
  255. margin: 85,
  256. textStyle: {
  257. color: '#fff',
  258. align: 'left',
  259. fontSize: 14
  260. },
  261. rich: {
  262. a: {
  263. color: '#fff',
  264. backgroundColor: '#f0515e',
  265. width: 15,
  266. height: 15,
  267. align: 'center',
  268. borderRadius: 2
  269. },
  270. b: {
  271. color: '#fff',
  272. backgroundColor: '#24a5cd',
  273. width: 15,
  274. height: 15,
  275. align: 'center',
  276. borderRadius: 2
  277. }
  278. },
  279. formatter: function(params) {
  280. if (parseInt(params.slice(0, 2)) < 3) {
  281. return [
  282. '{a|' + (parseInt(params.slice(0, 2)) + 1) + '}' + ' ' + params.slice(2)
  283. ].join('\n')
  284. } else {
  285. return [
  286. '{b|' + (parseInt(params.slice(0, 2)) + 1) + '}' + ' ' + params.slice(2)
  287. ].join('\n')
  288. }
  289. }
  290. },
  291. data: yData
  292. },
  293. geo: {
  294. map: 'china',
  295. label: {
  296. show: true,
  297. color: '#ffffff',
  298. emphasis: {
  299. color: 'white',
  300. show: false
  301. }
  302. },
  303. roam: true,//是否允许缩放
  304. top: 10,
  305. left: 'left',
  306. right: '200',
  307. width:'66%',
  308. height:'90%',
  309. zoom: 1, //默认显示级别
  310. scaleLimit: {
  311. min: 0,
  312. max: 1
  313. }, //缩放级别
  314. itemStyle: {
  315. normal: {
  316. borderColor: 'rgba(26,82,231, 1)',
  317. borderWidth: 1,
  318. areaColor: {
  319. type: 'radial',
  320. x: 0.5,
  321. y: 0.5,
  322. r: 0.8,
  323. colorStops: [{
  324. offset: 0,
  325. color: 'rgba(14, 101, 247, .1)' // 0% 处的颜色
  326. }, {
  327. offset: 1,
  328. color: 'rgba(125, 183, 252, .1)' // 100% 处的颜色
  329. }],
  330. globalCoord: false // 缺省为 false
  331. },
  332. shadowColor: 'rgba(255, 255, 255, 0)',
  333. shadowOffsetX: -2,
  334. shadowOffsetY: 2,
  335. shadowBlur: 10
  336. },
  337. emphasis: {
  338. areaColor: 'rgba(249,157,51, .2)',
  339. borderWidth: 0
  340. }
  341. },
  342. //是否显示南海诸岛
  343. /*regions: [{
  344. name: "南海诸岛",
  345. value: 0,
  346. itemStyle: {
  347. normal: {
  348. opacity: 0,
  349. label: {
  350. show: false
  351. }
  352. }
  353. }
  354. }],*/
  355. tooltip: {
  356. show: false
  357. }
  358. },
  359. series: [
  360. {
  361. type: 'effectScatter',
  362. coordinateSystem: 'geo',
  363. z: 1,
  364. data: [],
  365. symbolSize: 14,
  366. label: {
  367. normal: {
  368. show: true,
  369. formatter: function(params) {
  370. return '{fline|客户:'+params.data.username+' '+params.data.telphone+'}\n{tline|'+params.data.address+'}';
  371. },
  372. position: 'top',
  373. backgroundColor: 'rgba(254,174,33,.8)',
  374. padding: [0, 0],
  375. borderRadius: 3,
  376. lineHeight: 32,
  377. color: '#f7fafb',
  378. rich:{
  379. fline:{
  380. padding: [0, 10, 10, 10],
  381. color:'#ffffff'
  382. },
  383. tline:{
  384. padding: [10, 10, 0, 10],
  385. color:'#ffffff'
  386. }
  387. }
  388. },
  389. emphasis: {
  390. show: true
  391. }
  392. },
  393. itemStyle: {
  394. color: '#feae21',
  395. }
  396. },
  397. {
  398. type: 'effectScatter',
  399. coordinateSystem: 'geo',
  400. z: 1,
  401. data: [],
  402. symbolSize: 14,
  403. label: {
  404. normal: {
  405. show: true,
  406. formatter: function(params) {
  407. return '{fline|客户:'+params.data.username+' '+params.data.telphone+'}\n{tline|'+params.data.address+'}';
  408. },
  409. position: 'top',
  410. backgroundColor: 'rgba(233,63,66,.9)',
  411. padding: [0, 0],
  412. borderRadius: 3,
  413. lineHeight: 32,
  414. color: '#ffffff',
  415. rich:{
  416. fline:{
  417. padding: [0, 10, 10, 10],
  418. color:'#ffffff'
  419. },
  420. tline:{
  421. padding: [10, 10, 0, 10],
  422. color:'#ffffff'
  423. }
  424. }
  425. },
  426. emphasis: {
  427. show: true
  428. }
  429. },
  430. itemStyle: {
  431. color: '#e93f42',
  432. }
  433. },
  434. {
  435. type: 'effectScatter',
  436. coordinateSystem: 'geo',
  437. z: 1,
  438. data: [],
  439. symbolSize: 14,
  440. label: {
  441. normal: {
  442. show: true,
  443. formatter: function(params) {
  444. return '{fline|客户:'+params.data.username+' '+params.data.telphone+'}\n{tline|'+params.data.address+'}';
  445. },
  446. position: 'top',
  447. backgroundColor: 'rgba(8,186,236,.9)',
  448. padding: [0, 0],
  449. borderRadius: 3,
  450. lineHeight: 32,
  451. color: '#ffffff',
  452. rich:{
  453. fline:{
  454. padding: [0, 10, 10, 10],
  455. color:'#ffffff'
  456. },
  457. tline:{
  458. padding: [10, 10, 0, 10],
  459. color:'#ffffff'
  460. }
  461. }
  462. },
  463. emphasis: {
  464. show: true
  465. }
  466. },
  467. itemStyle: {
  468. color: '#08baec',
  469. }
  470. },
  471. //地图
  472. {
  473. type: 'map',
  474. mapType: 'china',
  475. geoIndex: 0,
  476. z: 0,
  477. data: convertData(chinaDatas, 1)
  478. },
  479. {
  480. name: 'barSer',
  481. type: 'bar',
  482. roam: false,
  483. visualMap: false,
  484. zlevel: 2,
  485. barMaxWidth: 16,
  486. barGap: 0,
  487. itemStyle: {
  488. normal: {
  489. color: function(params) {
  490. var colorList = [{
  491. colorStops: [{
  492. offset: 0,
  493. color: '#f0515e'
  494. }, {
  495. offset: 1,
  496. color: '#ef8554'
  497. }]
  498. },
  499. {
  500. colorStops: [{
  501. offset: 0,
  502. color: '#3c38e4'
  503. }, {
  504. offset: 1,
  505. color: '#24a5cd'
  506. }]
  507. }
  508. ];
  509. if (params.dataIndex < 3) {
  510. return colorList[0]
  511. } else {
  512. return colorList[1]
  513. }
  514. },
  515. barBorderRadius: [0,15,15,0]
  516. }
  517. },
  518. label:{
  519. normal: {
  520. show: true,
  521. textBorderColor: '#333',
  522. textBorderWidth: 2
  523. }
  524. },
  525. data: barData.sort((a,b)=>{
  526. return b.value-a.value;
  527. })
  528. }]
  529. };
  530. if (option && typeof option === "object") {
  531. myChart.setOption(option, true);
  532. }
  533. function getTel(){
  534. var n = 2,telstr = '1';
  535. while(n<12){
  536. if(n<3){
  537. while(1){
  538. var nums = Math.floor(Math.random()*10);
  539. if(nums!==0&&nums!==1&&nums!==2&&nums!==3&&nums!==4&&nums!==6){
  540. telstr+=nums;
  541. break;
  542. }
  543. }
  544. }else if(n>3&&n<8){
  545. telstr+='*';
  546. }else{
  547. telstr+=Math.floor(Math.random()*10);
  548. }
  549. n++;
  550. }
  551. return telstr;
  552. }
  553. function getName(type){
  554. var name = '';
  555. var roundnum = Math.floor(Math.random()*32);
  556. switch (type) {
  557. case 1:
  558. name = namedata[roundnum].name+'先生';
  559. break;
  560. case 2:
  561. name = namedata[roundnum].name+'女士';
  562. break;
  563. default:
  564. name = namedata[roundnum].name+'先生';
  565. break;
  566. }
  567. return name;
  568. }
  569. function getAddress(num,type){
  570. var addstr = '';
  571. switch (type) {
  572. case 1:
  573. addstr = '在'+chinaDatas[num].name+'-保时捷4S店购买车辆';
  574. break;
  575. case 2:
  576. addstr = '在'+chinaDatas[num].name+'-奔驰4S店购买车辆';
  577. break;
  578. default:
  579. addstr = '在'+chinaDatas[num].name+'-法拉利4S店购买车辆';
  580. break;
  581. }
  582. return addstr;
  583. }
  584. var timer = setInterval(()=>{
  585. //数据情况重绘,清除formatter移动效果,也可根据自身需求是否需要,删除这两行代码
  586. /*option.series[seriesjson[runidx].createType-1].data = [];
  587. myChart.setOption(option, true);*/
  588. var runidx = Math.floor(Math.random()*3);
  589. var typeidx = Math.floor(Math.random()*3);
  590. var dataidx = Math.floor(Math.random()*32);
  591. var ranval = Math.floor(Math.random()*10);
  592. chinaDatas[dataidx].value = chinaDatas[dataidx].value+ranval;
  593. var valarr = geoCoordMap[chinaDatas[dataidx].name];
  594. valarr.push(ranval);
  595. option.series[typeidx].data = [{
  596. name:'',
  597. username: getName(runidx),
  598. telphone: getTel(),
  599. address: getAddress(dataidx,typeidx),
  600. value: valarr
  601. }];
  602. option.series[4].data = option.series[4].data.sort(function(a,b){
  603. return b.value-a.value;
  604. });
  605. myChart.setOption(option, true);
  606. },3000);
  607. // 使用刚指定的配置项和数据显示图表。
  608. //myChart.setOption(option);
  609. window.addEventListener("resize",function(){
  610. myChart.resize();
  611. });
  612. }
  613. function ceshis7() {
  614. var myChart = echarts.init(document.getElementById('chart_1'));
  615. // 使用刚指定的配置项和数据显示图表。
  616. myChart.setOption(option);
  617. window.addEventListener("resize",function(){
  618. myChart.resize();
  619. });
  620. }
  621. });