newIndex.js 76 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091929394959697989910010110210310410510610710810911011111211311411511611711811912012112212312412512612712812913013113213313413513613713813914014114214314414514614714814915015115215315415515615715815916016116216316416516616716816917017117217317417517617717817918018118218318418518618718818919019119219319419519619719819920020120220320420520620720820921021121221321421521621721821922022122222322422522622722822923023123223323423523623723823924024124224324424524624724824925025125225325425525625725825926026126226326426526626726826927027127227327427527627727827928028128228328428528628728828929029129229329429529629729829930030130230330430530630730830931031131231331431531631731831932032132232332432532632732832933033133233333433533633733833934034134234334434534634734834935035135235335435535635735835936036136236336436536636736836937037137237337437537637737837938038138238338438538638738838939039139239339439539639739839940040140240340440540640740840941041141241341441541641741841942042142242342442542642742842943043143243343443543643743843944044144244344444544644744844945045145245345445545645745845946046146246346446546646746846947047147247347447547647747847948048148248348448548648748848949049149249349449549649749849950050150250350450550650750850951051151251351451551651751851952052152252352452552652752852953053153253353453553653753853954054154254354454554654754854955055155255355455555655755855956056156256356456556656756856957057157257357457557657757857958058158258358458558658758858959059159259359459559659759859960060160260360460560660760860961061161261361461561661761861962062162262362462562662762862963063163263363463563663763863964064164264364464564664764864965065165265365465565665765865966066166266366466566666766866967067167267367467567667767867968068168268368468568668768868969069169269369469569669769869970070170270370470570670770870971071171271371471571671771871972072172272372472572672772872973073173273373473573673773873974074174274374474574674774874975075175275375475575675775875976076176276376476576676776876977077177277377477577677777877978078178278378478578678778878979079179279379479579679779879980080180280380480580680780880981081181281381481581681781881982082182282382482582682782882983083183283383483583683783883984084184284384484584684784884985085185285385485585685785885986086186286386486586686786886987087187287387487587687787887988088188288388488588688788888989089189289389489589689789889990090190290390490590690790890991091191291391491591691791891992092192292392492592692792892993093193293393493593693793893994094194294394494594694794894995095195295395495595695795895996096196296396496596696796896997097197297397497597697797897998098198298398498598698798898999099199299399499599699799899910001001100210031004100510061007100810091010101110121013101410151016101710181019102010211022102310241025102610271028102910301031103210331034103510361037103810391040104110421043104410451046104710481049105010511052105310541055105610571058105910601061106210631064106510661067106810691070107110721073107410751076107710781079108010811082108310841085108610871088108910901091109210931094109510961097109810991100110111021103110411051106110711081109111011111112111311141115111611171118111911201121112211231124112511261127112811291130113111321133113411351136113711381139114011411142114311441145114611471148114911501151115211531154115511561157115811591160116111621163116411651166116711681169117011711172117311741175117611771178117911801181118211831184118511861187118811891190119111921193119411951196119711981199120012011202120312041205120612071208120912101211121212131214121512161217121812191220122112221223122412251226122712281229123012311232123312341235123612371238123912401241124212431244124512461247124812491250125112521253125412551256125712581259126012611262126312641265126612671268126912701271127212731274127512761277127812791280128112821283128412851286128712881289129012911292129312941295129612971298129913001301130213031304130513061307130813091310131113121313131413151316131713181319132013211322132313241325132613271328132913301331133213331334133513361337133813391340134113421343134413451346134713481349135013511352135313541355135613571358135913601361136213631364136513661367136813691370137113721373137413751376137713781379138013811382138313841385138613871388138913901391139213931394139513961397139813991400140114021403140414051406140714081409141014111412141314141415141614171418141914201421142214231424142514261427142814291430143114321433143414351436143714381439144014411442144314441445144614471448144914501451145214531454145514561457145814591460146114621463146414651466146714681469147014711472147314741475147614771478147914801481148214831484148514861487148814891490149114921493149414951496149714981499150015011502150315041505150615071508150915101511151215131514151515161517151815191520152115221523152415251526152715281529153015311532153315341535153615371538153915401541154215431544154515461547154815491550155115521553155415551556155715581559156015611562156315641565156615671568156915701571157215731574157515761577157815791580158115821583158415851586158715881589159015911592159315941595159615971598159916001601160216031604160516061607160816091610161116121613161416151616161716181619162016211622162316241625162616271628162916301631163216331634163516361637163816391640164116421643164416451646164716481649165016511652165316541655165616571658165916601661166216631664166516661667166816691670167116721673167416751676167716781679168016811682168316841685168616871688168916901691169216931694169516961697169816991700170117021703170417051706170717081709171017111712171317141715171617171718171917201721172217231724172517261727172817291730173117321733173417351736173717381739174017411742174317441745174617471748174917501751175217531754175517561757175817591760176117621763176417651766176717681769177017711772177317741775177617771778177917801781178217831784178517861787178817891790179117921793179417951796179717981799180018011802180318041805180618071808180918101811181218131814181518161817181818191820182118221823182418251826182718281829183018311832183318341835183618371838183918401841184218431844184518461847184818491850185118521853185418551856185718581859186018611862186318641865186618671868186918701871187218731874187518761877187818791880188118821883188418851886188718881889189018911892189318941895189618971898189919001901190219031904190519061907190819091910191119121913191419151916191719181919192019211922192319241925192619271928192919301931193219331934193519361937193819391940194119421943194419451946194719481949195019511952195319541955195619571958195919601961196219631964196519661967196819691970197119721973197419751976197719781979198019811982198319841985198619871988198919901991199219931994199519961997199819992000200120022003200420052006200720082009201020112012201320142015201620172018201920202021202220232024202520262027202820292030203120322033203420352036203720382039204020412042204320442045204620472048204920502051205220532054205520562057205820592060206120622063206420652066206720682069207020712072207320742075207620772078207920802081208220832084208520862087208820892090209120922093209420952096209720982099210021012102210321042105210621072108210921102111211221132114211521162117211821192120212121222123212421252126212721282129213021312132213321342135213621372138213921402141214221432144214521462147214821492150215121522153215421552156215721582159216021612162216321642165216621672168216921702171217221732174217521762177217821792180218121822183218421852186218721882189219021912192219321942195219621972198219922002201220222032204220522062207220822092210221122122213221422152216221722182219222022212222222322242225222622272228222922302231223222332234223522362237223822392240224122422243224422452246224722482249225022512252225322542255225622572258225922602261226222632264226522662267226822692270227122722273
  1. let app = new Vue({
  2. el: "#app",
  3. data() {
  4. return {
  5. config5: {
  6. waitTime: 2000,
  7. rowNum: 4,
  8. header: ["单位名称", "平均工资涨幅", ''],
  9. data: [
  10. ["山焦财务", '<span class="red"><span class="listText">-12%</span><span class="redImg"></span></span>'],
  11. ["山焦担保", '<span class="green"><span class="listText">4%</span><span class="greedImg"></span></span>'],
  12. ["山焦股份", '<span class="green"><span class="listText">6%</span><span class="greedImg"></span></span>'],
  13. ["山焦国华", '<span class="green"><span class="listText">20%</span><span class="greedImg"></span></span>'],
  14. ["山焦国华", '<span class="green"><span class="listText">9%</span><span class="greedImg"></span></span>'],
  15. ["山焦财务", '<span class="red"><span class="listText">-1%</span><span class="redImg"></span></span>'],
  16. ["山焦担保", '<span class="green"><span class="listText">4%</span><span class="greedImg"></span></span>'],
  17. ["山焦股份", '<span class="green"><span class="listText">6%</span><span class="greedImg"></span></span>'],
  18. ["山焦国华", '<span class="green"><span class="listText">20%</span><span class="greedImg"></span></span>'],
  19. ["山焦国华", '<span class="green"><span class="listText">9%</span><span class="greedImg"></span></span>']
  20. ],
  21. align: ["center", "center"],
  22. headerBGC: "#153A62",
  23. oddRowBGC: "#061F42",
  24. evenRowBGC: "#0C284A",
  25. },
  26. config1: {
  27. waitTime: 2000,
  28. rowNum: 1,
  29. data: [
  30. ["山焦财务", '<span class="red"><span class="listText">-12%</span><span class="redImg"></span></span>'],
  31. ["山焦担保", '<span class="green"><span class="listText">4%</span><span class="greedImg"></span></span>'],
  32. ["山焦股份", '<span class="green"><span class="listText">6%</span><span class="greedImg"></span></span>'],
  33. ["山焦国华", '<span class="green"><span class="listText">20%</span><span class="greedImg"></span></span>'],
  34. ["山焦国华", '<span class="green"><span class="listText">9%</span><span class="greedImg"></span></span>'],
  35. ["山焦财务", '<span class="red"><span class="listText">-1%</span><span class="redImg"></span></span>'],
  36. ["山焦担保", '<span class="green"><span class="listText">4%</span><span class="greedImg"></span></span>'],
  37. ["山焦股份", '<span class="green"><span class="listText">6%</span><span class="greedImg"></span></span>'],
  38. ["山焦国华", '<span class="green"><span class="listText">20%</span><span class="greedImg"></span></span>'],
  39. ["山焦国华", '<span class="green"><span class="listText">9%</span><span class="greedImg"></span></span>']
  40. ],
  41. align: ["center", "center"],
  42. headerBGC: "#153A62",
  43. oddRowBGC: "#061F42",
  44. evenRowBGC: "#0C284A",
  45. },
  46. eChartsBig: undefined,
  47. time2: undefined,
  48. leftEcharts5: undefined,
  49. industry: {
  50. x: ["矿井", "选煤厂", "火电厂", "清洁能源厂", "焦化厂"],
  51. y: [151, 50, 6, 32, 4]
  52. },
  53. twoBar: undefined,
  54. echartTwoList: {
  55. x: ["回采", "掘进", "开拓工人", "运输", "机电", "通风安全", "安拆", "露天", "其他"],
  56. y: [11556, 15008, 6073, 10562, 8492, 10776, 1553, 119, 3668]
  57. },
  58. echartTwoList2: {
  59. x: ["煤炭洗选人员", "焦炭化工人员", "民爆人员", "金融人员", "煤炭销售人员"],
  60. y: [10115, 6327, 2301, 104, 2604]
  61. },
  62. twoIndex: 1,
  63. time2: 1,
  64. time3: 1,
  65. }
  66. },
  67. mounted() {
  68. this.$nextTick(() => {
  69. let organization = this.$refs.organization
  70. this.initOrganization(organization, "")
  71. let mobilize = this.$refs.mobilize
  72. this.initOrganization(mobilize,)
  73. let industry = this.$refs.industry
  74. this.initOrganization(industry, "", this.industry, "")
  75. let sequence = this.$refs.sequence
  76. this.initOrganization(sequence, "", { x: ["管理序列", "技术序列", "操作序列"], y: [1200, 680, 562] })
  77. let serviceAge = this.$refs.serviceAge
  78. this.initLineEcharts(serviceAge)
  79. let level = this.$refs.level
  80. this.initLineElseEcharts(level)
  81. let initChartR1 = this.$refs.initChartR1
  82. this.initChartR1(initChartR1)
  83. let initChartsBig = this.$refs.initChartsBig
  84. this.initChartsBig(initChartsBig)
  85. let leftEnd = this.$refs.leftEnd
  86. this.initOrganization(leftEnd)
  87. let echarts90 = this.$refs.echarts90
  88. this.initLineElseEcharts(echarts90)
  89. let student = this.$refs.student
  90. this.initOrganization(student, "")
  91. let works = this.$refs.works
  92. this.initBarCharts(works)
  93. let efficiency = this.$refs.efficiency
  94. this.initBarCharts(efficiency)
  95. let whole = this.$refs.whole
  96. this.initBarCharts(whole)
  97. let buffer = this.$refs.buffer
  98. this.initStereoscopic(buffer)
  99. let share = this.$refs.share
  100. this.initHorizontalBar(share)
  101. let el = this.$refs.container
  102. this.initProvinceChart(el)
  103. let echartTwo = this.$refs.echartTwo
  104. this.initTwoBarEcharts(echartTwo, this.echartTwoList)
  105. this.timeNs()
  106. this.timePractice()
  107. })
  108. },
  109. methods: {
  110. // 针对学历结构的定时器
  111. timeNs() {
  112. let that = this;
  113. this.time2 = setInterval(() => {
  114. this.time2 && clearInterval(this.time2);
  115. this.timeNs();
  116. that.leftEcharts5.dispose();
  117. let initChartsBig = that.$refs.initChartsBig
  118. that.initChartsBig(initChartsBig)
  119. }, 15000);
  120. },
  121. // 针对从业人员类别的定时器
  122. timePractice() {
  123. let that = this;
  124. this.time3 = setInterval(() => {
  125. this.time3 && clearInterval(this.time3);
  126. this.timePractice();
  127. that.twoBar.dispose();
  128. let echartTwo = that.$refs.echartTwo
  129. if (that.twoIndex == 1) {
  130. that.initTwoBarEcharts(echartTwo, that.echartTwoList)
  131. that.twoIndex = 2
  132. } else {
  133. that.initTwoBarEcharts(echartTwo, that.echartTwoList2)
  134. that.twoIndex = 1
  135. }
  136. }, 15000);
  137. },
  138. initOrganization(el, title = "", data = { x: ["集团本部", "山焦财务", "山焦担保", "山焦股份", "山焦国华", "山焦机电", "山焦人力", "山焦民爆", "山焦事业", "山焦投资"], y: [0, 680, 562, 268, 717, 843, 987, 126, 723, 569] }, unit = "") {
  139. let chart = echarts.init(el);
  140. let option = {
  141. title: {
  142. show: false,
  143. top: 5,
  144. left: "center",
  145. text: title,
  146. textStyle: {
  147. color: "#5EB7FF",
  148. fontWeight: "normal",
  149. fontSize: 32
  150. }
  151. },
  152. grid: {
  153. top: 10,
  154. right: 40,
  155. left: 105,
  156. bottom: 40,
  157. },
  158. tooltip: {
  159. show: true,
  160. trigger: "axis",
  161. axisPointer: {
  162. // 坐标轴指示器,坐标轴触发有效
  163. type: "shadow", // 默认为直线,可选为:'line' | 'shadow'
  164. },
  165. },
  166. xAxis: {
  167. data: data.x,
  168. axisTick: {
  169. show: false,
  170. },
  171. // x轴的字体颜色
  172. axisLabel: {
  173. interval: 0,
  174. // rotate: 40,
  175. textStyle: {
  176. color: "white",
  177. fontSize: 30,
  178. },
  179. },
  180. //y轴线的颜色以及宽度
  181. axisLine: {
  182. show: true,
  183. lineStyle: {
  184. color: "#1E5389",
  185. width: 1,
  186. type: "solid",
  187. },
  188. },
  189. },
  190. yAxis: {
  191. name: unit,
  192. axisTick: {
  193. lineStyle: {
  194. color: "#18416F",
  195. },
  196. },
  197. // y轴的字体颜色
  198. axisLabel: {
  199. textStyle: {
  200. color: "white",
  201. fontSize: 30,
  202. },
  203. },
  204. nameTextStyle: {
  205. fontSize: 30,
  206. },
  207. splitLine: {
  208. show: true,
  209. lineStyle: {
  210. color: "#204561",
  211. width: 1,
  212. type: "dotted",
  213. },
  214. },
  215. //y轴线的颜色以及宽度
  216. axisLine: {
  217. show: true,
  218. lineStyle: {
  219. color: "#1E5389",
  220. width: 1,
  221. type: "solid",
  222. },
  223. },
  224. },
  225. series: [
  226. {
  227. name: "",
  228. type: "bar",
  229. data: data.y,
  230. showBackground: true,
  231. backgroundStyle: {
  232. color: "#18416F",
  233. },
  234. barWidth: "10%",
  235. itemStyle: {
  236. barBorderRadius: [30, 30, 0, 0],
  237. color: new echarts.graphic.LinearGradient(0, 1, 0, 0, [
  238. {
  239. offset: 0,
  240. color: "#02355C",
  241. }, //柱图渐变色
  242. {
  243. offset: 1,
  244. color: "#40A9FF",
  245. },
  246. ]),
  247. },
  248. }
  249. ],
  250. legend: {
  251. data: ["入池人数", "出池人数"],
  252. textStyle: {
  253. // 图列内容样式
  254. color: "#fff", // 字体颜色
  255. // fontSize: "10",
  256. },
  257. right: 30,
  258. icon: "roundRect",
  259. // 小图标的宽高
  260. itemHeight: 5,
  261. },
  262. };
  263. chart.setOption(option);
  264. tools.loopShowTooltip(chart, option, {
  265. nterval: 2000,
  266. loopSeries: true,
  267. });
  268. },
  269. initLineEcharts(el) {
  270. let chart = echarts.init(el);
  271. let option = {
  272. grid: {
  273. top: 15,
  274. right: 15,
  275. left: 45,
  276. bottom: 45,
  277. },
  278. tooltip: {
  279. show: true,
  280. trigger: "axis",
  281. axisPointer: {
  282. lineStyle: {
  283. color: "#ddd",
  284. },
  285. },
  286. },
  287. legend: {
  288. textStyle: {
  289. // 图列内容样式
  290. color: "#fff", // 字体颜色
  291. // fontSize: "10",
  292. },
  293. right: 30,
  294. icon: "roundRect",
  295. // 小图标的宽高
  296. itemHeight: 5
  297. },
  298. xAxis: {
  299. type: "category",
  300. data: ["5年以下", "6-10年", "11-15年", "16-20年", '21-25年', '26-30年', '30年以上'],
  301. boundaryGap: false,
  302. splitLine: {
  303. show: false,
  304. interval: "auto",
  305. },
  306. axisTick: {
  307. show: false,
  308. },
  309. axisLine: {
  310. lineStyle: {
  311. color: "#7ECEF4",
  312. },
  313. },
  314. axisLabel: {
  315. interval: 0,
  316. rotate: 40,
  317. margin: 10,
  318. textStyle: {
  319. // fontSize: 10,
  320. color: "#fff",
  321. },
  322. },
  323. },
  324. yAxis: {
  325. type: "value",
  326. splitLine: {
  327. show: true,
  328. lineStyle: {
  329. color: "#204561",
  330. width: 1,
  331. type: "dotted",
  332. },
  333. },
  334. axisTick: {
  335. show: false,
  336. },
  337. axisLine: {
  338. lineStyle: {
  339. color: "#7ECEF4",
  340. },
  341. },
  342. axisLabel: {
  343. margin: 10,
  344. textStyle: {
  345. fontSize: 10,
  346. color: "#fff",
  347. },
  348. },
  349. },
  350. series: [
  351. {
  352. name: "",
  353. type: "line",
  354. smooth: false,
  355. showSymbol: true, // 节点长显
  356. symbol: 'image://' + 'data:image/png;base64,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',
  357. symbolSize: 30,
  358. data: ["1100", "400", "608", "811", '358', '698', '125', '765'],
  359. areaStyle: {
  360. normal: {
  361. color: new echarts.graphic.LinearGradient(
  362. 0,
  363. 0,
  364. 0,
  365. 1,
  366. [
  367. {
  368. offset: 0,
  369. color: "#40A9FF",
  370. },
  371. {
  372. offset: 1,
  373. color: "#051F41",
  374. },
  375. ],
  376. false
  377. ),
  378. },
  379. },
  380. itemStyle: {
  381. normal: {
  382. color: "#40A9FF",
  383. },
  384. },
  385. lineStyle: {
  386. normal: {
  387. width: 2,
  388. },
  389. },
  390. }, {
  391. name: "",
  392. type: "line",
  393. smooth: false,
  394. showSymbol: true, // 节点长显
  395. symbol: 'image://' + 'data:image/png;base64,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',
  396. symbolSize: 30,
  397. data: ["100", "900", "68", "981", '1358', '628', '525', '565'],
  398. areaStyle: {
  399. normal: {
  400. color: new echarts.graphic.LinearGradient(
  401. 0,
  402. 0,
  403. 0,
  404. 1,
  405. [
  406. {
  407. offset: 0,
  408. color: "#45DAD1",
  409. },
  410. {
  411. offset: 1,
  412. color: "#051F41",
  413. },
  414. ],
  415. false
  416. ),
  417. },
  418. },
  419. itemStyle: {
  420. normal: {
  421. color: "#45DAD1",
  422. },
  423. },
  424. lineStyle: {
  425. normal: {
  426. width: 2,
  427. },
  428. },
  429. }
  430. ],
  431. };
  432. chart.setOption(option);
  433. tools.loopShowTooltip(chart, option, {
  434. nterval: 2000,
  435. loopSeries: true,
  436. });
  437. },
  438. initLineElseEcharts(el) {
  439. let chart = echarts.init(el);
  440. let option = {
  441. grid: {
  442. top: 15,
  443. right: 15,
  444. left: 45,
  445. bottom: 45,
  446. },
  447. tooltip: {
  448. show: true,
  449. trigger: "axis",
  450. axisPointer: {
  451. lineStyle: {
  452. color: "#ddd",
  453. },
  454. },
  455. },
  456. legend: {
  457. textStyle: {
  458. // 图列内容样式
  459. color: "#fff", // 字体颜色
  460. // fontSize: "10",
  461. },
  462. right: 30,
  463. icon: "roundRect",
  464. // 小图标的宽高
  465. itemHeight: 5
  466. },
  467. xAxis: {
  468. type: "category",
  469. data: ["5年以下", "6-10年", "11-15年", "16-20年", '21-25年', '26-30年', '30年以上'],
  470. boundaryGap: false,
  471. splitLine: {
  472. show: false,
  473. interval: "auto",
  474. },
  475. axisTick: {
  476. show: false,
  477. },
  478. axisLine: {
  479. lineStyle: {
  480. color: "#7ECEF4",
  481. },
  482. },
  483. axisLabel: {
  484. interval: 0,
  485. rotate: 40,
  486. margin: 10,
  487. textStyle: {
  488. // fontSize: 10,
  489. color: "#fff",
  490. },
  491. },
  492. },
  493. yAxis: {
  494. type: "value",
  495. splitLine: {
  496. show: true,
  497. lineStyle: {
  498. color: "#204561",
  499. width: 1,
  500. type: "dotted",
  501. },
  502. },
  503. axisTick: {
  504. show: false,
  505. },
  506. axisLine: {
  507. lineStyle: {
  508. color: "#7ECEF4",
  509. },
  510. },
  511. axisLabel: {
  512. margin: 10,
  513. textStyle: {
  514. fontSize: 10,
  515. color: "#fff",
  516. },
  517. },
  518. },
  519. series: [
  520. {
  521. name: "",
  522. type: "line",
  523. smooth: false,
  524. showSymbol: true, // 节点长显
  525. symbol: 'image://' + 'data:image/png;base64,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',
  526. symbolSize: 30,
  527. data: ["1100", "400", "608", "811", '358', '698', '125', '765'],
  528. areaStyle: {
  529. normal: {
  530. color: new echarts.graphic.LinearGradient(
  531. 0,
  532. 0,
  533. 0,
  534. 1,
  535. [
  536. {
  537. offset: 0,
  538. color: "#40A9FF",
  539. },
  540. {
  541. offset: 1,
  542. color: "#051F41",
  543. },
  544. ],
  545. false
  546. ),
  547. },
  548. },
  549. itemStyle: {
  550. normal: {
  551. color: "#40A9FF",
  552. },
  553. },
  554. lineStyle: {
  555. normal: {
  556. width: 2,
  557. },
  558. },
  559. }
  560. ],
  561. };
  562. chart.setOption(option);
  563. tools.loopShowTooltip(chart, option, {
  564. nterval: 2000,
  565. loopSeries: true,
  566. });
  567. },
  568. initChartR1(el) {
  569. let myChart = echarts.init(el)
  570. data = echarts2;
  571. arrName = getArrayValue(data, "name");
  572. arrValue = getArrayValue(data, "value");
  573. sumValue = eval(arrValue.join("+"));
  574. objData = array2obj(data, "name");
  575. optionData = getData(data);
  576. function getArrayValue(array, key) {
  577. var key = key || "value";
  578. var res = [];
  579. if (array) {
  580. array.forEach(function (t) {
  581. res.push(t[key]);
  582. });
  583. }
  584. return res;
  585. }
  586. function array2obj(array, key) {
  587. var resObj = {};
  588. for (var i = 0; i < array.length; i++) {
  589. resObj[array[i][key]] = array[i];
  590. }
  591. return resObj;
  592. }
  593. function getData(data) {
  594. var res = {
  595. series: [],
  596. yAxis: [],
  597. };
  598. for (let i = 0; i < data.length; i++) {
  599. // console.log([70 - i * 15 + '%', 67 - i * 15 + '%']);
  600. res.series.push({
  601. name: "",
  602. type: "pie",
  603. clockWise: false, //顺时加载
  604. hoverAnimation: false, //鼠标移入变大
  605. radius: [53 - i * 15 + "%", 48 - i * 15 + "%"],
  606. center: ["35%", "50%"],
  607. label: {
  608. show: false,
  609. },
  610. itemStyle: {
  611. label: {
  612. show: false,
  613. },
  614. labelLine: {
  615. show: false,
  616. },
  617. borderWidth: 5,
  618. },
  619. data: [
  620. {
  621. value: data[i].value,
  622. name: data[i].name,
  623. },
  624. {
  625. value: sumValue - data[i].value,
  626. name: "",
  627. itemStyle: {
  628. color: "rgba(0,0,0,0)",
  629. borderWidth: 0,
  630. },
  631. tooltip: {
  632. show: false,
  633. },
  634. hoverAnimation: false,
  635. },
  636. ],
  637. });
  638. res.series.push({
  639. name: "",
  640. type: "pie",
  641. silent: true,
  642. z: 1,
  643. clockWise: false, //顺时加载
  644. hoverAnimation: false, //鼠标移入变大
  645. radius: [53 - i * 15 + "%", 48 - i * 15 + "%"],
  646. center: ["35%", "50%"],
  647. label: {
  648. show: false,
  649. },
  650. itemStyle: {
  651. label: {
  652. show: false,
  653. },
  654. labelLine: {
  655. show: false,
  656. },
  657. borderWidth: 5,
  658. },
  659. data: [
  660. {
  661. value: 7.5,
  662. itemStyle: {
  663. color: "rgb(3, 31, 62)",
  664. borderWidth: 0,
  665. },
  666. tooltip: {
  667. show: false,
  668. },
  669. hoverAnimation: false,
  670. },
  671. {
  672. value: 2.5,
  673. name: "",
  674. itemStyle: {
  675. color: "rgba(0,0,0,0)",
  676. borderWidth: 0,
  677. },
  678. tooltip: {
  679. show: false,
  680. },
  681. hoverAnimation: false,
  682. },
  683. ],
  684. });
  685. res.yAxis.push(((data[i].value / sumValue) * 100).toFixed(2) + "%");
  686. }
  687. return res;
  688. }
  689. let option = {
  690. graphic: {
  691. elements: [{
  692. type: 'image',//需要填充图片,配置image,如果不需要图片可以配置其他的, text, circle, sector, ring, polygon, polyline, rect, line, bezierCurve, arc, group,
  693. style: {
  694. image: './images/loop.png', //这里添加图片地址
  695. width: 320,
  696. height: 320
  697. },
  698. left: '150',//
  699. top: 'middle' //配置图片居中
  700. }]
  701. },
  702. legend: {
  703. show: true,
  704. icon: "circle",
  705. top: "center",
  706. left: "70%",
  707. data: arrName,
  708. width: 50,
  709. formatter: function (name) {
  710. return (
  711. "{title|" + name + "}\n{value|" + objData[name].value + "} {title|项}"
  712. );
  713. },
  714. textStyle: {
  715. rich: {
  716. title: {
  717. fontSize: 32,
  718. lineHeight: 30,
  719. color: "rgb(0, 178, 246)",
  720. },
  721. value: {
  722. fontSize: 32,
  723. lineHeight: 40,
  724. color: "#fff",
  725. },
  726. },
  727. },
  728. },
  729. tooltip: {
  730. show: false,
  731. normal: {
  732. show: false,
  733. trigger: "item",
  734. label: {
  735. margin: 10, // label 距离轴的距离
  736. color: '#FFF', // 文字的颜色
  737. fontStyle: 'normal', // 文字字体的风格('normal',无样式;'italic',斜体;'oblique',倾斜字体)
  738. fontWeight: 'normal', // 文字字体的粗细('normal',无样式;'bold',加粗;'bolder',加粗的基础上再加粗;'lighter',变细;数字定义粗细也可以,取值范围100至700)
  739. fontSize: '30', // 文字字体大小
  740. lineHeight: '50', // 行高
  741. },
  742. },
  743. // formatter: "{a}<br>{b}:{c}({d}%)666",
  744. textStyle: {
  745. color: '#FFF', // 文字的颜色
  746. fontStyle: 'normal', // 文字字体的风格('normal',无样式;'italic',斜体;'oblique',倾斜字体)
  747. fontWeight: 'normal', // 文字字体的粗细('normal',无样式;'bold',加粗;'bolder',加粗的基础上再加粗;'lighter',变细;数字定义粗细也可以,取值范围100至700)
  748. },
  749. formatter: data => {
  750. console.log(data)
  751. // 小圆点
  752. return `<br /><span style="display:inline-block;border-radius:50%;margin-right:10px; width:7px;height:7px;background-color:blue"></span>${data.name}:${data.percent}`
  753. },
  754. },
  755. color: [
  756. "rgb(24, 183, 142)",
  757. "rgb(1, 179, 238)",
  758. "rgb(22, 75, 205)",
  759. "rgb(52, 52, 176)",
  760. ],
  761. grid: {
  762. top: "21%",
  763. bottom: "48%",
  764. left: "36%",
  765. containLabel: false,
  766. },
  767. yAxis: [
  768. {
  769. type: "category",
  770. inverse: true,
  771. axisLine: {
  772. show: false,
  773. },
  774. axisTick: {
  775. show: false,
  776. },
  777. axisLabel: {
  778. interval: 0,
  779. inside: true,
  780. textStyle: {
  781. color: "#fff",
  782. fontSize: 24,
  783. },
  784. show: true,
  785. },
  786. data: optionData.yAxis,
  787. },
  788. ],
  789. xAxis: [
  790. {
  791. show: false,
  792. },
  793. ],
  794. series: optionData.series,
  795. }
  796. myChart.setOption(option)
  797. tools.loopShowTooltip(myChart, option, {
  798. nterval: 2000,
  799. loopSeries: true,
  800. });
  801. },
  802. initChartsBig(el) {
  803. this.leftEcharts5 = echarts.init(el);
  804. let option = {
  805. color: ["#EAEA26", "#906BF9", "#FE5656", "#01E17E", "#3DD1F9", "#FFAD05"],
  806. grid: {
  807. left: -100,
  808. top: 50,
  809. bottom: 10,
  810. right: 10,
  811. containLabel: true
  812. },
  813. tooltip: {
  814. trigger: 'item',
  815. textStyle: {
  816. fontSize: 50
  817. },
  818. formatter: "{b} : {c} ({d}%)"
  819. },
  820. legend: {
  821. type: "scroll",
  822. orient: "vartical",
  823. // x: "right",
  824. top: "center",
  825. right: "15",
  826. // bottom: "0%",
  827. itemWidth: 30,
  828. itemHeight: 12,
  829. itemGap: 16,
  830. textStyle: {
  831. color: '#A3E2F4',
  832. fontSize: 30,
  833. fontWeight: 0
  834. },
  835. data: ['IDS', 'VPN', '交换机', '防火墙', 'WAF', '堡垒机']
  836. },
  837. polar: {},
  838. angleAxis: {
  839. interval: 1,
  840. type: 'category',
  841. data: [],
  842. z: 10,
  843. axisLine: {
  844. show: false,
  845. lineStyle: {
  846. color: "#0B4A6B",
  847. width: 1,
  848. type: "solid"
  849. },
  850. },
  851. axisLabel: {
  852. interval: 0,
  853. show: true,
  854. color: "#0B4A6B",
  855. margin: 8,
  856. fontSize: 16
  857. },
  858. },
  859. radiusAxis: {
  860. min: 40,
  861. max: 120,
  862. interval: 20,
  863. axisLine: {
  864. show: false,
  865. lineStyle: {
  866. color: "#0B3E5E",
  867. width: 1,
  868. type: "solid"
  869. },
  870. },
  871. axisLabel: {
  872. formatter: '{value} %',
  873. show: false,
  874. padding: [0, 0, 20, 0],
  875. color: "#0B3E5E",
  876. fontSize: 30
  877. },
  878. splitLine: {
  879. lineStyle: {
  880. color: "#0B3E5E",
  881. width: 2,
  882. type: "solid"
  883. }
  884. }
  885. },
  886. calculable: true,
  887. series: [{
  888. type: 'pie',
  889. radius: ["5%", "10%"],
  890. hoverAnimation: false,
  891. labelLine: {
  892. normal: {
  893. show: false,
  894. length: 30,
  895. length2: 55
  896. },
  897. emphasis: {
  898. show: false
  899. }
  900. },
  901. data: [{
  902. name: '',
  903. value: 0,
  904. tooltip: { show: false },
  905. itemStyle: {
  906. normal: {
  907. color: "#0B4A6B"
  908. }
  909. }
  910. }]
  911. }, {
  912. type: 'pie',
  913. radius: ["90%", "95%"],
  914. hoverAnimation: false,
  915. labelLine: {
  916. normal: {
  917. show: false,
  918. length: 30,
  919. length2: 55
  920. },
  921. emphasis: {
  922. show: false
  923. }
  924. },
  925. name: "",
  926. data: [{
  927. name: '',
  928. value: 0,
  929. tooltip: { show: false },
  930. itemStyle: {
  931. normal: {
  932. color: "#0B4A6B"
  933. }
  934. }
  935. }]
  936. }, {
  937. stack: 'a',
  938. type: 'pie',
  939. radius: ['20%', '80%'],
  940. roseType: 'area',
  941. zlevel: 10,
  942. label: {
  943. normal: {
  944. show: true,
  945. formatter: "{c}",
  946. textStyle: {
  947. fontSize: 35,
  948. },
  949. position: 'outside'
  950. },
  951. emphasis: {
  952. show: true
  953. }
  954. },
  955. labelLine: {
  956. normal: {
  957. show: true,
  958. length: 20,
  959. length2: 55
  960. },
  961. emphasis: {
  962. show: false
  963. }
  964. },
  965. data: [{
  966. value: 10,
  967. name: 'IDS'
  968. },
  969. {
  970. value: 5,
  971. name: 'VPN'
  972. },
  973. {
  974. value: 15,
  975. name: '交换机'
  976. },
  977. {
  978. value: 25,
  979. name: '防火墙'
  980. },
  981. {
  982. value: 20,
  983. name: 'WAF'
  984. },
  985. {
  986. value: 35,
  987. name: '堡垒机'
  988. }
  989. ]
  990. },]
  991. }
  992. this.leftEcharts5.setOption(option, {
  993. notMerge: true,
  994. notMerge: false,
  995. });
  996. tools.loopShowTooltip(this.leftEcharts5, option, {
  997. nterval: 2000,
  998. loopSeries: true,
  999. });
  1000. },
  1001. initBarCharts(el) {
  1002. let chart = echarts.init(el);
  1003. var option = {
  1004. tooltip: { //提示框组件
  1005. trigger: 'axis',
  1006. formatter: '{b}<br />{a0}: {c0}<br />{a1}: {c1}',
  1007. axisPointer: {
  1008. type: 'shadow',
  1009. label: {
  1010. backgroundColor: '#6a7985'
  1011. }
  1012. },
  1013. textStyle: {
  1014. color: '#fff',
  1015. fontStyle: 'normal',
  1016. fontFamily: '微软雅黑',
  1017. fontSize: 30,
  1018. }
  1019. },
  1020. grid: {
  1021. left: '9%',
  1022. right: '15%',
  1023. bottom: '10%',
  1024. top: 30,
  1025. },
  1026. legend: {//图例组件,颜色和名字
  1027. right: 10,
  1028. top: 0,
  1029. itemGap: 16,
  1030. itemWidth: 18,
  1031. itemHeight: 10,
  1032. data: [{
  1033. name: '流入',
  1034. //icon:'image://../wwwroot/js/url2.png', //路径
  1035. },
  1036. {
  1037. name: '流出',
  1038. }],
  1039. textStyle: {
  1040. color: '#a8aab0',
  1041. fontStyle: 'normal',
  1042. fontFamily: '微软雅黑',
  1043. fontSize: 30,
  1044. }
  1045. },
  1046. xAxis: [
  1047. {
  1048. type: 'category',
  1049. boundaryGap: true,//坐标轴两边留白
  1050. data: ['7:00', '8:00', '9:00', '10:00', '11:00', '12:00', '13:00', '14:00', '15:00', '16:00'],
  1051. axisLabel: { //坐标轴刻度标签的相关设置。
  1052. interval: 0,//设置为 1,表示『隔一个标签显示一个标签』
  1053. margin: 15,
  1054. textStyle: {
  1055. color: '#078ceb',
  1056. fontStyle: 'normal',
  1057. fontFamily: '微软雅黑',
  1058. fontSize: 30,
  1059. }
  1060. },
  1061. axisTick: {//坐标轴刻度相关设置。
  1062. show: false,
  1063. },
  1064. axisLine: {//坐标轴轴线相关设置
  1065. lineStyle: {
  1066. color: '#fff',
  1067. opacity: 0.2
  1068. }
  1069. },
  1070. splitLine: { //坐标轴在 grid 区域中的分隔线。
  1071. show: false,
  1072. }
  1073. }
  1074. ],
  1075. yAxis: [
  1076. {
  1077. type: 'value',
  1078. splitNumber: 5,
  1079. axisLabel: {
  1080. textStyle: {
  1081. color: '#a8aab0',
  1082. fontStyle: 'normal',
  1083. fontFamily: '微软雅黑',
  1084. fontSize: 30,
  1085. }
  1086. },
  1087. axisLine: {
  1088. show: false
  1089. },
  1090. axisTick: {
  1091. show: false
  1092. },
  1093. splitLine: {
  1094. show: true,
  1095. lineStyle: {
  1096. color: ['#fff'],
  1097. opacity: 0.06
  1098. }
  1099. }
  1100. }
  1101. ],
  1102. series: [
  1103. {
  1104. name: '流入',
  1105. type: 'bar',
  1106. data: [4.9, 7.3, 9.2, 5.6, 7.7, 5.6, 4.2, 3.6, 6, 6.4],
  1107. barWidth: 10,
  1108. barGap: 0,//柱间距离
  1109. label: {//图形上的文本标签
  1110. normal: {
  1111. show: true,
  1112. position: 'top',
  1113. textStyle: {
  1114. color: '#a8aab0',
  1115. fontStyle: 'normal',
  1116. fontFamily: '微软雅黑',
  1117. fontSize: 30,
  1118. },
  1119. },
  1120. },
  1121. itemStyle: {//图形样式
  1122. normal: {
  1123. barBorderRadius: [5, 5, 0, 0],
  1124. color: new echarts.graphic.LinearGradient(0, 0, 0, 1, [{
  1125. offset: 1, color: 'rgba(127, 128, 225, 0.7)'
  1126. }, {
  1127. offset: 0.9, color: 'rgba(72, 73, 181, 0.7)'
  1128. }, {
  1129. offset: 0.31, color: 'rgba(0, 208, 208, 0.7)'
  1130. }, {
  1131. offset: 0.15, color: 'rgba(0, 208, 208, 0.7)'
  1132. }, {
  1133. offset: 0, color: 'rgba(104, 253, 255, 0.7)'
  1134. }], false),
  1135. },
  1136. },
  1137. markLine: {
  1138. symbol: ['none'],
  1139. silent: true,
  1140. data: [{
  1141. yAxis: 5.3,
  1142. name: "社会劳动生产率",
  1143. lineStyle: {
  1144. normal: {
  1145. type: "dashed",
  1146. width: 3,
  1147. color: '#3E7DFE'
  1148. }
  1149. },
  1150. label: {
  1151. show: true,
  1152. distance: 20,
  1153. fontWeight: "lighter",
  1154. formatter: "社会劳动生产率",
  1155. },
  1156. }, {
  1157. yAxis: 5.64,
  1158. lineStyle: {
  1159. normal: {
  1160. type: "dashed",
  1161. width: 3,
  1162. color: 'red'
  1163. }
  1164. },
  1165. label: {
  1166. show: true,
  1167. distance: 20,
  1168. fontWeight: "lighter",
  1169. formatter: "省属企业平均劳动生产率",
  1170. },
  1171. },{
  1172. yAxis: 1.64,
  1173. lineStyle: {
  1174. normal: {
  1175. type: "dashed",
  1176. width: 3,
  1177. color: 'rgba(127, 128, 225, 0.7)'
  1178. }
  1179. },
  1180. label: {
  1181. show: true,
  1182. distance: 20,
  1183. fontWeight: "lighter",
  1184. formatter: "央企平均劳动生产率",
  1185. },
  1186. },]
  1187. },
  1188. },
  1189. {
  1190. name: '流出',
  1191. type: 'bar',
  1192. data: [2.9, 5, 4.4, 2.7, 5.7, 4.6, 1.2, 2.7, 4.8, 6.0],
  1193. barWidth: 10,
  1194. barGap: 0.2,//柱间距离
  1195. label: {//图形上的文本标签
  1196. normal: {
  1197. show: true,
  1198. position: 'top',
  1199. textStyle: {
  1200. color: '#a8aab0',
  1201. fontStyle: 'normal',
  1202. fontFamily: '微软雅黑',
  1203. fontSize: 30,
  1204. },
  1205. },
  1206. },
  1207. itemStyle: {//图形样式
  1208. normal: {
  1209. barBorderRadius: [5, 5, 0, 0],
  1210. color: new echarts.graphic.LinearGradient(0, 0, 0, 1, [{
  1211. offset: 1, color: 'rgba(127, 128, 225, 0.7)'
  1212. }, {
  1213. offset: 0.9, color: 'rgba(72, 73, 181, 0.7)'
  1214. }, {
  1215. offset: 0.25, color: 'rgba(226, 99, 74, 0.7)'
  1216. }, {
  1217. offset: 0, color: 'rgba(253, 200, 106, 0.7)'
  1218. }], false),
  1219. },
  1220. },
  1221. }
  1222. ]
  1223. };
  1224. chart.setOption(option);
  1225. tools.loopShowTooltip(chart, option, {
  1226. nterval: 2000,
  1227. loopSeries: true,
  1228. });
  1229. },
  1230. initBarEcharts(el) {
  1231. let chart = echarts.init(el);
  1232. var scale = 2;
  1233. var singleData = [224, 220, 335];
  1234. var multipleData = [442, 440, 220];
  1235. var judgeData = [110, 220, 115];
  1236. var color = "#189cbb";
  1237. option = {
  1238. tooltip: {
  1239. show: false,
  1240. trigger: 'axis',
  1241. axisPointer: { // 坐标轴指示器,坐标轴触发有效
  1242. type: 'shadow' // 默认为直线,可选为:'line' | 'shadow'
  1243. }
  1244. },
  1245. legend: {
  1246. data: ['单选题', '多选题', '判断题'],
  1247. align: 'left',
  1248. itemGap: 50,
  1249. // x: 'right',
  1250. right: '10%',
  1251. y: '1%',
  1252. icon: 'rect',
  1253. itemWidth: 15 * scale, // 图例图形宽度
  1254. itemHeight: 15 * scale, // 图例图形高度
  1255. textStyle: {
  1256. color: "#3fdaff",
  1257. fontSize: 16 * scale
  1258. }
  1259. },
  1260. grid: {
  1261. left: '3%',
  1262. right: '4%',
  1263. bottom: '3%',
  1264. containLabel: true
  1265. },
  1266. xAxis: [{
  1267. type: 'category',
  1268. data: ['高等教育学', '高等教育心理学', '综合学科'],
  1269. axisLabel: {
  1270. // inside: true,
  1271. padding: [15, 0, 0, 0],
  1272. textStyle: {
  1273. color: "#fff",
  1274. fontSize: 13 * scale,
  1275. }
  1276. },
  1277. axisTick: {
  1278. inside: true,
  1279. length: 8 * scale,
  1280. lineStyle: {
  1281. color: color,
  1282. }
  1283. },
  1284. axisLine: {
  1285. lineStyle: {
  1286. color: color,
  1287. }
  1288. },
  1289. splitLine: {
  1290. lineStyle: {
  1291. color: 'rgba(80,224,255,0.3)',
  1292. type: 'dashed'
  1293. }
  1294. }
  1295. }],
  1296. yAxis: [{
  1297. type: 'value',
  1298. max: 600,
  1299. axisLabel: {
  1300. // inside: true,
  1301. padding: [0, 15, 0, 0],
  1302. textStyle: {
  1303. color: color,
  1304. fontSize: 16 * scale,
  1305. }
  1306. },
  1307. axisTick: {
  1308. lineStyle: {
  1309. color: color,
  1310. }
  1311. },
  1312. axisLine: {
  1313. lineStyle: {
  1314. color: color,
  1315. }
  1316. },
  1317. splitLine: {
  1318. lineStyle: {
  1319. color: 'rgba(80,224,255,0.3)',
  1320. type: 'dashed'
  1321. },
  1322. show: false,
  1323. },
  1324. name: '题数(答对)',
  1325. nameTextStyle: {
  1326. color: "#fff",
  1327. fontSize: 16 * scale,
  1328. padding: [0, 0, 10, 0]
  1329. }
  1330. }],
  1331. series: [{
  1332. name: '单选题',
  1333. type: 'bar',
  1334. stack: '单选题',
  1335. barWidth: '15%',
  1336. barGap: '40%',
  1337. label: {
  1338. normal: {
  1339. show: true,
  1340. position: "top",
  1341. distance: 20 * scale,
  1342. formatter: function (params) {
  1343. return params.data.value;
  1344. },
  1345. textStyle: {
  1346. color: "#ffc72b",
  1347. fontSize: 20 * scale
  1348. }
  1349. }
  1350. },
  1351. itemStyle: {
  1352. normal: {
  1353. color: 'rgba(94,218,255,0.4)',
  1354. }
  1355. },
  1356. data: singleData
  1357. },
  1358. {
  1359. name: '单选题',
  1360. type: 'bar',
  1361. stack: '单选题',
  1362. barWidth: '15%',
  1363. barGap: '40%',
  1364. itemStyle: {
  1365. normal: {
  1366. color: '#83e0fc',
  1367. }
  1368. },
  1369. data: [2 * scale, 2 * scale, 2 * scale]
  1370. }, {
  1371. name: '多选题',
  1372. type: 'bar',
  1373. stack: '多选题',
  1374. barWidth: '15%',
  1375. barGap: '40%',
  1376. label: {
  1377. normal: {
  1378. show: true,
  1379. position: "top",
  1380. distance: 20 * scale,
  1381. formatter: function (params) {
  1382. return params.data.value;
  1383. },
  1384. textStyle: {
  1385. color: "#ffc72b",
  1386. fontSize: 20 * scale
  1387. }
  1388. }
  1389. },
  1390. itemStyle: {
  1391. normal: {
  1392. color: 'rgba(20,124,146,0.4)',
  1393. }
  1394. },
  1395. data: multipleData
  1396. },
  1397. {
  1398. name: '多选题',
  1399. type: 'bar',
  1400. stack: '多选题',
  1401. barWidth: '15%',
  1402. barGap: '40%',
  1403. itemStyle: {
  1404. normal: {
  1405. color: '#23aecb',
  1406. }
  1407. },
  1408. data: [2 * scale, 2 * scale, 2 * scale]
  1409. }, {
  1410. name: '判断题',
  1411. type: 'bar',
  1412. stack: '判断题',
  1413. barWidth: '15%',
  1414. barGap: '40%',
  1415. label: {
  1416. normal: {
  1417. show: true,
  1418. position: "top",
  1419. distance: 20 * scale,
  1420. formatter: function (params) {
  1421. return params.data.value;
  1422. },
  1423. textStyle: {
  1424. color: "#ffc72b",
  1425. fontSize: 20 * scale
  1426. }
  1427. }
  1428. },
  1429. itemStyle: {
  1430. normal: {
  1431. color: 'rgba(9,149,124,0.4)',
  1432. }
  1433. },
  1434. data: judgeData
  1435. },
  1436. {
  1437. name: '判断题',
  1438. type: 'bar',
  1439. stack: '判断题',
  1440. barWidth: '15%',
  1441. barGap: '40%',
  1442. itemStyle: {
  1443. normal: {
  1444. color: '#10c8a7',
  1445. }
  1446. },
  1447. data: [2 * scale, 2 * scale, 2 * scale]
  1448. },]
  1449. };
  1450. chart.setOption(option);
  1451. tools.loopShowTooltip(chart, option, {
  1452. nterval: 2000,
  1453. loopSeries: true,
  1454. });
  1455. },
  1456. initStereoscopic(el) {
  1457. let chart = echarts.init(el);
  1458. // 绘制左侧面
  1459. const CubeLeft = echarts.graphic.extendShape({
  1460. shape: {
  1461. x: 0,
  1462. y: 0
  1463. },
  1464. buildPath: function (ctx, shape) {
  1465. // 会canvas的应该都能看得懂,shape是从custom传入的
  1466. const xAxisPoint = shape.xAxisPoint
  1467. const c0 = [shape.x + 17, shape.y]
  1468. const c1 = [shape.x - 23, shape.y - 6]
  1469. const c2 = [xAxisPoint[0] - 23, xAxisPoint[1] - 13]
  1470. const c3 = [xAxisPoint[0] + 17, xAxisPoint[1]]
  1471. ctx.moveTo(c0[0], c0[1]).lineTo(c1[0], c1[1]).lineTo(c2[0], c2[1]).lineTo(c3[0], c3[1]).closePath()
  1472. }
  1473. })
  1474. // 绘制右侧面
  1475. const CubeRight = echarts.graphic.extendShape({
  1476. shape: {
  1477. x: 0,
  1478. y: 0
  1479. },
  1480. buildPath: function (ctx, shape) {
  1481. const xAxisPoint = shape.xAxisPoint
  1482. const c1 = [shape.x + 17, shape.y]
  1483. const c2 = [xAxisPoint[0] + 17, xAxisPoint[1]]
  1484. const c3 = [xAxisPoint[0] + 35, xAxisPoint[1] - 15]
  1485. const c4 = [shape.x + 35, shape.y - 15]
  1486. ctx.moveTo(c1[0], c1[1]).lineTo(c2[0], c2[1]).lineTo(c3[0], c3[1]).lineTo(c4[0], c4[1]).closePath()
  1487. }
  1488. })
  1489. // 绘制顶面
  1490. const CubeTop = echarts.graphic.extendShape({
  1491. shape: {
  1492. x: 0,
  1493. y: 0
  1494. },
  1495. buildPath: function (ctx, shape) {
  1496. const c1 = [shape.x + 17, shape.y]
  1497. const c2 = [shape.x + 35, shape.y - 15] //右点
  1498. const c3 = [shape.x - 5, shape.y - 20]
  1499. const c4 = [shape.x - 23, shape.y - 6]
  1500. ctx.moveTo(c1[0], c1[1]).lineTo(c2[0], c2[1]).lineTo(c3[0], c3[1]).lineTo(c4[0], c4[1]).closePath()
  1501. }
  1502. })
  1503. // 注册三个面图形
  1504. echarts.graphic.registerShape('CubeLeft', CubeLeft)
  1505. echarts.graphic.registerShape('CubeRight', CubeRight)
  1506. echarts.graphic.registerShape('CubeTop', CubeTop)
  1507. const VALUE = [2016, 1230, 3790]
  1508. option = {
  1509. tooltip: {
  1510. trigger: 'axis',
  1511. axisPointer: {
  1512. type: 'shadow'
  1513. },
  1514. formatter: function (params, ticket, callback) {
  1515. const item = params[1]
  1516. return item.name + ' : ' + item.value;
  1517. }
  1518. },
  1519. grid: {
  1520. left: '10%',
  1521. right: '10%',
  1522. top: '15%',
  1523. bottom: '12%',
  1524. },
  1525. xAxis: {
  1526. type: 'category',
  1527. data: ['雄县', '安新', '容城'],
  1528. axisLine: {
  1529. show: false,
  1530. lineStyle: {
  1531. color: 'white'
  1532. }
  1533. },
  1534. axisTick: {
  1535. show: false,
  1536. length: 9,
  1537. alignWithLabel: true,
  1538. lineStyle: {
  1539. color: '#7DFFFD',
  1540. fontSize: 35,
  1541. }
  1542. },
  1543. axisLabel: {
  1544. fontSize: 35
  1545. }
  1546. },
  1547. yAxis: {
  1548. show: false,
  1549. type: 'value',
  1550. axisLine: {
  1551. show: true,
  1552. lineStyle: {
  1553. color: 'white'
  1554. }
  1555. },
  1556. splitLine: {
  1557. show: false
  1558. },
  1559. axisTick: {
  1560. show: false
  1561. },
  1562. axisLabel: {
  1563. fontSize: 30
  1564. },
  1565. boundaryGap: ['20%', '20%']
  1566. },
  1567. series: [{
  1568. type: 'custom',
  1569. renderItem: (params, api) => {
  1570. const location = api.coord([api.value(0), api.value(1)])
  1571. return {
  1572. type: 'group',
  1573. children: [{
  1574. type: 'CubeLeft',
  1575. shape: {
  1576. api,
  1577. xValue: api.value(0),
  1578. yValue: api.value(1),
  1579. x: location[0],
  1580. y: location[1],
  1581. xAxisPoint: api.coord([api.value(0), 0])
  1582. },
  1583. style: {
  1584. fill: new echarts.graphic.LinearGradient(0, 0, 0, 1, [{
  1585. offset: 0,
  1586. color: '#1BC9F1'
  1587. },
  1588. {
  1589. offset: 1,
  1590. color: '#1C7084'
  1591. }
  1592. ])
  1593. }
  1594. }, {
  1595. type: 'CubeRight',
  1596. shape: {
  1597. api,
  1598. xValue: api.value(0),
  1599. yValue: api.value(1),
  1600. x: location[0],
  1601. y: location[1],
  1602. xAxisPoint: api.coord([api.value(0), 0])
  1603. },
  1604. style: {
  1605. fill: new echarts.graphic.LinearGradient(0, 0, 0, 1, [{
  1606. offset: 0,
  1607. color: '#1C7287'
  1608. },
  1609. {
  1610. offset: 1,
  1611. color: '#1BC3EB'
  1612. }
  1613. ])
  1614. }
  1615. }, {
  1616. type: 'CubeTop',
  1617. shape: {
  1618. api,
  1619. xValue: api.value(0),
  1620. yValue: api.value(1),
  1621. x: location[0],
  1622. y: location[1],
  1623. xAxisPoint: api.coord([api.value(0), 0])
  1624. },
  1625. style: {
  1626. fill: new echarts.graphic.LinearGradient(0, 0, 0, 1, [{
  1627. offset: 0,
  1628. color: '#06728A'
  1629. },
  1630. {
  1631. offset: 1,
  1632. color: '#06728A'
  1633. }
  1634. ])
  1635. }
  1636. }]
  1637. }
  1638. },
  1639. data: VALUE
  1640. }, {
  1641. type: 'bar',
  1642. label: {
  1643. normal: {
  1644. show: true,
  1645. position: 'top',
  1646. formatter: (e) => {
  1647. switch (e.name) {
  1648. case '雄县':
  1649. return VALUE[0]
  1650. case '安新':
  1651. return VALUE[1]
  1652. case '容城':
  1653. return VALUE[2]
  1654. }
  1655. },
  1656. fontSize: 30,
  1657. color: '#fff',
  1658. offset: [2, -25]
  1659. }
  1660. },
  1661. itemStyle: {
  1662. color: 'transparent'
  1663. },
  1664. tooltip: {
  1665. },
  1666. data: VALUE
  1667. }]
  1668. }
  1669. chart.setOption(option);
  1670. tools.loopShowTooltip(chart, option, {
  1671. nterval: 2000,
  1672. loopSeries: true,
  1673. });
  1674. },
  1675. initHorizontalBar(el) {
  1676. let chart = echarts.init(el);
  1677. var bg =
  1678. 'image://data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAARYAAAAUCAMAAAB/LOLCAAAAAXNSR0IB2cksfwAAAAlwSFlzAAALEwAACxMBAJqcGAAAAD9QTFRFAABwAAAAAABwAABwAABwAABwAABwAABwAABwAABwAABwAABwAABwAABwAABwAABwAABwAABwAABwAABwAABwrxv9agAAABV0Uk5T/wA1p053q7yaZs0QRIlVJ++IId4ydKfDYQAAAFtJREFUeJzt0McNwDAQwLBzutPb/rMG/gbawOIIjCQQqYtoqxYxckv1BlvQZAvabEG9LSjbgnZb0GoLOV9byHPbQubFFjLaggZb0GQLumxBvS0ol5aj0U9pEfgA+DsJLXE1TzAAAAAASUVORK5CYII=';
  1679. var bar =
  1680. 'image://data:image/png;base64,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';
  1681. var data = [220, 182, 191];
  1682. var barWidth = 20;
  1683. var maxNum = 0;
  1684. for (var i = 0; i < data.length; i++) {
  1685. if (data[i] > maxNum) {
  1686. maxNum = data[i];
  1687. }
  1688. }
  1689. option = {
  1690. grid: {
  1691. top: '10%',
  1692. left: '10%',
  1693. right: '8%',
  1694. bottom: '0%',
  1695. },
  1696. xAxis: {
  1697. show: false,
  1698. },
  1699. yAxis: {
  1700. data: data.map((item, index) => `data ${index}`),
  1701. splitLine: {
  1702. show: false,
  1703. },
  1704. axisLabel: {
  1705. textStyle: { fontSize: 35, color: '#fff' },
  1706. },
  1707. axisLine: {
  1708. show: false,
  1709. },
  1710. axisTick: false,
  1711. },
  1712. series: [
  1713. {
  1714. type: 'pictorialBar',
  1715. barWidth: barWidth,
  1716. zlevel: 2,
  1717. data: data.map(function (item) {
  1718. return {
  1719. value: item,
  1720. symbol: bar,
  1721. };
  1722. }),
  1723. },
  1724. {
  1725. type: 'pictorialBar',
  1726. barWidth: barWidth,
  1727. data: data.map(function (item) {
  1728. return {
  1729. realValue: item,
  1730. value: maxNum,
  1731. symbol: bg,
  1732. };
  1733. }),
  1734. label: {
  1735. show: true,
  1736. position: 'right',
  1737. distance: 150,
  1738. align: "right",
  1739. formatter: function (params) {
  1740. return params.data.realValue + ' 件';
  1741. },
  1742. color: '#fff',
  1743. fontSize: 35,
  1744. },
  1745. },
  1746. ],
  1747. };
  1748. chart.setOption(option);
  1749. tools.loopShowTooltip(chart, option, {
  1750. nterval: 2000,
  1751. loopSeries: true,
  1752. });
  1753. },
  1754. initProvinceChart(el, mapData = [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]) {
  1755. var data = [
  1756. {
  1757. name: '大同市',
  1758. value: mapData[0].value,
  1759. value2: mapData[0].value
  1760. },
  1761. {
  1762. name: '朔州市',
  1763. value: mapData[1].value,
  1764. value2: mapData[1].value
  1765. },
  1766. {
  1767. name: '忻州市',
  1768. value: mapData[2].value,
  1769. value2: mapData[2].value
  1770. },
  1771. {
  1772. name: '吕梁市',
  1773. value: mapData[3].value,
  1774. value2: mapData[3].value
  1775. },
  1776. {
  1777. name: '太原市',
  1778. value: mapData[4].value,
  1779. value2: mapData[4].value
  1780. },
  1781. {
  1782. name: '阳泉市',
  1783. value: mapData[5].value,
  1784. value2: mapData[5].value
  1785. },
  1786. {
  1787. name: '晋中市',
  1788. value: mapData[6].value,
  1789. value2: mapData[6].value
  1790. },
  1791. {
  1792. name: '长治市',
  1793. value: mapData[7].value,
  1794. value2: mapData[7].value
  1795. },
  1796. {
  1797. name: '临汾市',
  1798. value: mapData[8].value,
  1799. value2: mapData[8].value
  1800. },
  1801. {
  1802. name: '晋城市',
  1803. value: mapData[9].value,
  1804. value2: mapData[9].value
  1805. },
  1806. {
  1807. name: '运城市',
  1808. value: mapData[10].value,
  1809. value2: mapData[10].value
  1810. }
  1811. ]
  1812. for (let i = 0; i < data.length; i++) {
  1813. const name = data[i].name;
  1814. const mapDataObj = mapData.find(obj => obj.name === name);
  1815. if (mapDataObj) {
  1816. data[i].value = mapDataObj.value;
  1817. data[i].value2 = mapDataObj.value;
  1818. }
  1819. }
  1820. console.log(data)
  1821. let formdata = '太原' // 中心点
  1822. this.geoCoordMap = []
  1823. /*获取地图数据*/
  1824. this.mapChart = echarts.init(el)
  1825. echarts.registerMap('shanxi', jsonData)
  1826. var mapFeatures = echarts.getMap('shanxi').geoJson.features
  1827. mapFeatures.forEach(v => {
  1828. // 地区名称
  1829. var name = v.properties.name
  1830. // 地区经纬度
  1831. this.geoCoordMap[name] = v.properties.centroid
  1832. // 按照地图乱序
  1833. // data.push({ name: v.properties.name, value: v.properties.centroid[0], value2: v.properties.centroid[1] })
  1834. })
  1835. // 地图数据
  1836. var chinaGeoCoordMap = {
  1837. 太原市: [112.149248, 37.957014],
  1838. 大同市: [113.295259, 40.29031],
  1839. 阳泉市: [113.505474, 38.064652],
  1840. 长治市: [113.113556, 36.191112],
  1841. 晋城市: [112.551274, 35.577553],
  1842. 朔州市: [112.433387, 39.531261],
  1843. 晋中市: [112.936465, 37.696495],
  1844. 运城市: [111.003957, 35.222778],
  1845. 忻州市: [112.733538, 38.8769],
  1846. 临汾市: [111.517973, 36.08415],
  1847. 吕梁市: [111.134335, 37.524366],
  1848. }
  1849. // 飞线点数据
  1850. var chinaDatas = [
  1851. [{
  1852. name: '太原市',
  1853. value: 0,
  1854. },],
  1855. [{
  1856. name: '大同市',
  1857. value: 0,
  1858. },],
  1859. [{
  1860. name: '阳泉市',
  1861. value: 0,
  1862. },],
  1863. [{
  1864. name: '长治市',
  1865. value: 0,
  1866. },],
  1867. [{
  1868. name: '晋城市',
  1869. value: 0,
  1870. },],
  1871. [{
  1872. name: '朔州市',
  1873. value: 0,
  1874. },],
  1875. [{
  1876. name: '晋中市',
  1877. value: 9,
  1878. },],
  1879. [{
  1880. name: '运城市',
  1881. value: 0,
  1882. },],
  1883. [{
  1884. name: '忻州市',
  1885. value: 0,
  1886. },],
  1887. [{
  1888. name: '临汾市',
  1889. value: 0,
  1890. },],
  1891. [{
  1892. name: '吕梁市',
  1893. value: 0,
  1894. },],
  1895. ]
  1896. var convertData = function (data) {
  1897. var res = []
  1898. for (var i = 0; i < data.length; i++) {
  1899. var dataItem = data[i]
  1900. var fromCoord = chinaGeoCoordMap[dataItem[0].name]
  1901. var toCoord = [112.549248, 37.857014] //中心点地理坐标
  1902. if (fromCoord && toCoord) {
  1903. res.push([{
  1904. // 飞线从哪里出发
  1905. coord: toCoord,
  1906. },
  1907. {
  1908. // 飞线去往哪里
  1909. coord: fromCoord,
  1910. value: dataItem[0].value,
  1911. },
  1912. ])
  1913. }
  1914. }
  1915. return res
  1916. }
  1917. var series = [];
  1918. [
  1919. [formdata, chinaDatas]
  1920. ].forEach(function (item) {
  1921. series.push({
  1922. type: 'lines',
  1923. name: "模拟数据",
  1924. coordinateSystem: 'geo',
  1925. zlevel: 2,
  1926. effect: {
  1927. show: true,
  1928. period: 5, //值越小 速度越快
  1929. trailLength: 0.3, // 0-1 值越大,越拖
  1930. symbol: 'pin', //箭头图标
  1931. symbolSize: 8, //图标大小
  1932. color: "#E6C50B"
  1933. },
  1934. lineStyle: {
  1935. normal: {
  1936. show: true,
  1937. type: 'dashed',
  1938. width: 2, //尾迹线条宽度
  1939. opacity: 0.1, //尾迹线条透明度
  1940. curveness: 0.3, //尾迹线条曲直度
  1941. color: '#E6C50B', // 飞线颜色
  1942. },
  1943. },
  1944. data: convertData(item[1]),
  1945. }, {
  1946. type: 'effectScatter',
  1947. coordinateSystem: 'geo',
  1948. zlevel: 2,
  1949. rippleEffect: {
  1950. //涟漪特效
  1951. period: 10, //动画时间,值越小速度越快
  1952. brushType: 'stroke', //波纹绘制方式 stroke, fill
  1953. scale: 1, //波纹圆环最大限制,值越大波纹越大
  1954. color: '#E6C50B',
  1955. },
  1956. itemStyle: {
  1957. normal: {
  1958. color: '#E6C50B',
  1959. shadowBlur: 10,
  1960. shadowColor: '#E6C50B',
  1961. },
  1962. },
  1963. label: {
  1964. normal: {
  1965. formatter: '{b}',
  1966. position: 'right',
  1967. offset: [15, 0],
  1968. color: '#fff',
  1969. show: true
  1970. },
  1971. },
  1972. symbol: 'circle',
  1973. symbolSize: 9,
  1974. data: item[1].map(function (dataItem) {
  1975. return {
  1976. itemStyle: {
  1977. color: '#fff' // 修改标点的颜色
  1978. },
  1979. //在这里定义你所要展示的数据
  1980. name: dataItem[0].name,
  1981. value: chinaGeoCoordMap[dataItem[0].name].concat([dataItem[0].value]),
  1982. }
  1983. }),
  1984. })
  1985. })
  1986. let option = {
  1987. tooltip: {
  1988. trigger: "item",
  1989. padding: 15,
  1990. backgroundColor: 'rgba(0, 0, 0, 0)',
  1991. enterable: true,
  1992. transitionDuration: 1,
  1993. formatter: (params, ticket, callback) => {
  1994. // 清空所有轮播
  1995. for (var k in this.geoCoordMap) {
  1996. this.mapChart.dispatchAction({
  1997. // type: 'geoUnSelect',
  1998. type: 'downplay',
  1999. name: k,
  2000. })
  2001. }
  2002. // 如果鼠标滑动到线线上面,则返回空
  2003. this.mapChart.dispatchAction({
  2004. // type: 'geoSelect',
  2005. type: 'highlight',
  2006. name: params.name,
  2007. })
  2008. if (params.componentSubType == 'lines') {
  2009. return
  2010. }
  2011. if (params.componentSubType == 'scatter') {
  2012. let tipHtml = `
  2013. <div class="tooltip-cont">
  2014. <p>数量:<span>${data[params.dataIndex].value2}</span></p>
  2015. </div>`
  2016. callback(ticket, tipHtml)
  2017. return tipHtml
  2018. }
  2019. if (params.componentSubType == 'map') {
  2020. let tipHtml = `
  2021. <div class="tooltip-cont">
  2022. <p>数量:<span>${data[params.dataIndex].value2}</span></p>
  2023. </div>`
  2024. callback(ticket, tipHtml)
  2025. return tipHtml
  2026. }
  2027. },
  2028. },
  2029. geo: {
  2030. show: true,
  2031. map: 'shanxi',
  2032. layoutCenter: ['50.5%', '52%'], //地图位置
  2033. layoutSize: '100%',
  2034. layoutCenter: ["50%", "50%"], //地图位置
  2035. layoutSize: '100%',
  2036. zoom: 1.1, //当前视角的缩放比例
  2037. // roam: true, //是否开启平游或缩放
  2038. scaleLimit: { //滚轮缩放的极限控制
  2039. min: 1,
  2040. max: 2
  2041. },
  2042. roam: false,
  2043. itemStyle: {
  2044. normal: {
  2045. areaColor: '#25B9E9',
  2046. shadowColor: '#25B9E9',
  2047. borderWidth: 6, //设置外层边框
  2048. borderColor: '#00FFFF',
  2049. shadowOffsetX: 5,
  2050. shadowOffsetY: 5,
  2051. shadowBlur: 5,
  2052. },
  2053. emphasis: {
  2054. areaColor: '#013d95',
  2055. borderColor: '#e7e1a0',
  2056. borderWidth: 4, //设置外层边框
  2057. },
  2058. },
  2059. },
  2060. series: [{
  2061. type: 'map',
  2062. mapType: 'shanxi',
  2063. aspectScale: 0.75,
  2064. layoutCenter: ["50%", "50%"], //地图位置
  2065. layoutSize: '100%',
  2066. zoom: 1.1, //当前视角的缩放比例
  2067. // roam: true, //是否开启平游或缩放
  2068. scaleLimit: { //滚轮缩放的极限控制
  2069. min: 1,
  2070. max: 2
  2071. },
  2072. label: {
  2073. normal: {
  2074. show: true,
  2075. position: 'right',
  2076. formatter: '{b}',
  2077. color: '#fff',
  2078. fontSize: 32,
  2079. fontWeight: "bolder"
  2080. }
  2081. },
  2082. itemStyle: {
  2083. normal: {
  2084. areaColor: '#1C4FBB',
  2085. borderColor: 'rgba(5,216,252,0.7)',
  2086. borderWidth: 6,//隐藏省界线
  2087. shadowColor: 'rgba(5,216,252,0.7)',
  2088. shadowBlur: 90
  2089. },
  2090. emphasis: {
  2091. areaColor: 'rgba(25,79,183,0.6)',
  2092. borderColor: '#d4bc1d',
  2093. borderWidth: 8, //设置外层边框
  2094. label: {
  2095. color: "#fff"
  2096. }
  2097. }
  2098. },
  2099. data: data,
  2100. },
  2101. // 区域散点图
  2102. {
  2103. type: 'effectScatter',
  2104. coordinateSystem: 'geo',
  2105. zlevel: 2,
  2106. rippleEffect: {
  2107. //涟漪特效
  2108. period: 2, //动画时间,值越小速度越快
  2109. brushType: 'stroke', //波纹绘制方式 stroke, fill
  2110. scale: 8, //波纹圆环最大限制,值越大波纹越大
  2111. color: '#d4bc1d',
  2112. },
  2113. emphasis: {
  2114. itemStyle: {
  2115. color: '#d4bc1d'
  2116. }
  2117. },
  2118. label: {
  2119. show: true,
  2120. normal: {
  2121. show: false
  2122. },
  2123. },
  2124. symbol: 'circle',
  2125. symbolSize: 30,
  2126. data: series[1].data,
  2127. },
  2128. // 线 和 点
  2129. {
  2130. type: 'lines',
  2131. zlevel: 1, //设置这个才会有轨迹线的小尾巴
  2132. effect: {
  2133. show: true,
  2134. period: 3,
  2135. trailLength: 0.1,
  2136. color: '#d4bc1d', //流动点颜色
  2137. symbol: 'arrow',
  2138. symbolSize: 15
  2139. },
  2140. lineStyle: {
  2141. color: '#d4bc1d', //线条颜色
  2142. show: true,
  2143. type: "dashed",
  2144. width: 5,
  2145. opacity: 0.4,
  2146. curveness: 0.2
  2147. },
  2148. data: series[0].data
  2149. },
  2150. ],
  2151. }
  2152. let that = this
  2153. this.mapChart.on('click', function (params) {
  2154. if (params.name == '太原市') {
  2155. that.showChartLTipDouble('太原市')
  2156. }
  2157. })
  2158. tools.loopShowTooltip(this.mapChart, option, {
  2159. interval: 2000,
  2160. loopSeries: false,
  2161. });
  2162. this.mapChart.setOption(option)
  2163. },
  2164. initTwoBarEcharts(el, data) {
  2165. this.twoBar = echarts.init(el);
  2166. option = {
  2167. tooltip: {
  2168. trigger: 'axis',
  2169. axisPointer: {
  2170. type: 'shadow'
  2171. }
  2172. },
  2173. grid: {
  2174. top: '15%',
  2175. right: '3%',
  2176. left: '14%',
  2177. bottom: '15%'
  2178. },
  2179. xAxis: [{
  2180. type: 'category',
  2181. data: data.x,
  2182. axisLine: {
  2183. lineStyle: {
  2184. color: 'rgba(255,255,255,0.12)'
  2185. }
  2186. },
  2187. axisLabel: {
  2188. color: '#e2e9ff',
  2189. textStyle: {
  2190. fontSize: 26
  2191. },
  2192. },
  2193. }],
  2194. yAxis: [{
  2195. name: '',
  2196. axisLabel: {
  2197. formatter: '{value}',
  2198. color: '#e2e9ff',
  2199. textStyle: {
  2200. fontSize: 26
  2201. },
  2202. },
  2203. axisLine: {
  2204. show: false,
  2205. lineStyle: {
  2206. color: 'rgba(255,255,255,1)'
  2207. }
  2208. },
  2209. splitLine: {
  2210. lineStyle: {
  2211. color: 'rgba(255,255,255,0.12)'
  2212. }
  2213. }
  2214. }],
  2215. series: [{
  2216. type: 'bar',
  2217. data: data.y,
  2218. barWidth: '20px',
  2219. itemStyle: {
  2220. normal: {
  2221. color: new echarts.graphic.LinearGradient(0, 0, 0, 1, [{
  2222. offset: 0,
  2223. color: 'rgba(0,244,255,1)' // 0% 处的颜色
  2224. }, {
  2225. offset: 1,
  2226. color: 'rgba(0,77,167,1)' // 100% 处的颜色
  2227. }], false),
  2228. barBorderRadius: [30, 30, 30, 30],
  2229. shadowColor: 'rgba(0,160,221,1)',
  2230. shadowBlur: 4,
  2231. }
  2232. },
  2233. }]
  2234. };
  2235. this.twoBar.setOption(option);
  2236. tools.loopShowTooltip(this.twoBar, option, {
  2237. nterval: 2000,
  2238. loopSeries: true,
  2239. });
  2240. },
  2241. handleWarning(){
  2242. console.log(12312312);
  2243. },
  2244. },
  2245. })