9f841b376834574a59a1d3e2476c529f7afb13cd.svn-base 26 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827828829830831832
  1. <!-- -->
  2. <template>
  3. <div style="display: flex;">
  4. <div style="width:65%;" :style="{'height': colHeight - 40 + 'px'}" ref="bar_chart"></div>
  5. <div style="width:35%;" :style="{'height': colHeight - 40 + 'px'}" ref="pie_chart"></div>
  6. </div>
  7. </template>
  8. <script>
  9. //这里可以导入其他文件(比如:组件,工具js,第三方插件js,json文件,图片文件等等)
  10. //例如:import 《组件名称》 from '《组件路径》';
  11. import echarts from 'echarts'
  12. import request from "@util/gw_ajax_request"
  13. export default {
  14. //import引入的组件需要注入到对象中才能使用
  15. props: ['addForm', 'addForms', 'addFormt', 'isClear', 'testBool','singleOrMach'],
  16. components: {},
  17. data() {
  18. //这里存放数据
  19. return {
  20. colHeight: window.innerHeight - 90,
  21. //责任主体柱状体
  22. zrtz_mainBodyNum_list: [],//主体个数
  23. zrtz_normal_list: [],//一般
  24. zrtz_heavier_list: [],//较重
  25. zrtz_serious_list: [],//严重
  26. zrtz_nh_list: [],
  27. zrtz_ns_list: [],
  28. zrtz_hs_list: [],
  29. xName: [],//横轴
  30. barData_zrzt: {},//
  31. barData: [],
  32. scale: 1,
  33. selectNum: 1,
  34. chart: {},
  35. mySeries: [],
  36. rich: {
  37. yellow: {
  38. color: "#ffc72b",
  39. fontSize: 30 * this.scale,
  40. padding: [5, 4],
  41. align: 'center'
  42. },
  43. black: {
  44. // color: "#3a3a3a",
  45. fontSize: 30 * this.scale,
  46. padding: [5, 4],
  47. align: 'center'
  48. },
  49. blackSmall: {
  50. // color: "#3a3a3a",
  51. fontSize: 16 * this.scale,
  52. padding: [5, 4],
  53. align: 'center'
  54. },
  55. total: {
  56. // color: "#ffc72b",
  57. fontSize: 40 * this.scale,
  58. align: 'center'
  59. },
  60. white: {
  61. // color: "#fff",
  62. align: 'center',
  63. fontSize: 14 * this.scale,
  64. padding: [21, 0]
  65. },
  66. blue: {
  67. color: '#49dff0',
  68. fontSize: 16 * this.scale,
  69. align: 'center'
  70. },
  71. hr: {
  72. borderColor: '#3a3a3a',
  73. width: '100%',
  74. borderWidth: 1,
  75. height: 0,
  76. }
  77. },
  78. selectLegend: null,
  79. mainBody: null,
  80. zrzt_n: null,
  81. zrzt_h: null,
  82. zrzt_s: null,
  83. zrzt_nh: null,
  84. zrzt_ns: null,
  85. zrzt_hs: null,
  86. pieData_zy: [],
  87. standSize: document.body.clientWidth,
  88. isMuch:null
  89. };
  90. },
  91. //监听属性 类似于data概念
  92. computed: {},
  93. //监控data中的数据变化
  94. watch: {
  95. isClear(n, o) {//从多批次切换到单批次时数据回归
  96. this.testBool = !this.testBool;
  97. this.chart.clear();
  98. this.clearData();
  99. this.barData = [];
  100. this.mySeries = [];
  101. this.selectLegend = null;
  102. this.getResponsibilityData(this.addForm, 1)
  103. },
  104. "singleOrMach": {
  105. handler(newVal, oldVal) {
  106. //debugger
  107. var _self = this;
  108. _self.isMuch = false;
  109. if(newVal=="much"){
  110. _self.isMuch = true
  111. }
  112. if (this.testBool) {
  113. _self.getResponsibilityData(_self.addForm, _self.selectNum)
  114. }
  115. },
  116. deep: true
  117. },
  118. "addForm.year": {
  119. handler(newVal, oldVal) {
  120. // if(newVal) {
  121. var _self = this;
  122. console.log("newVal:" + newVal + ", oldVal:" + oldVal)
  123. this.selectNum = 1;
  124. this.clearData();
  125. this.barData = [];
  126. this.mySeries = [];
  127. this.selectLegend = null;
  128. // this.getResponsibilityData(this.addForm,this.selectNum)
  129. if (this.testBool) {
  130. _self.getResponsibilityData(_self.addForm, _self.selectNum)
  131. }
  132. // }
  133. },
  134. deep: true
  135. },
  136. "addForm.years": {
  137. handler(newVal, oldVal) {
  138. // if(newVal) {
  139. var _self = this;
  140. console.log("newVal:" + newVal + ", oldVal:" + oldVal)
  141. this.selectNum = 1;
  142. this.clearData();
  143. this.barData = [];
  144. this.mySeries = [];
  145. this.selectLegend = null;
  146. // this.getResponsibilityData(this.addForm,this.selectNum)
  147. if (this.testBool) {
  148. _self.getResponsibilityData(_self.addForm, _self.selectNum)
  149. }
  150. },
  151. deep: true
  152. },
  153. "addForm.batch": {
  154. handler(newVal, oldVal) {
  155. // if(newVal) {
  156. var _self = this;
  157. console.log("newVal:" + newVal + ", oldVal:" + oldVal)
  158. this.selectNum = 1;
  159. this.clearData();
  160. this.barData = [];
  161. this.mySeries = [];
  162. this.selectLegend = null;
  163. // this.getResponsibilityData(this.addForm,this.selectNum)
  164. if (this.testBool) {
  165. _self.getResponsibilityData(_self.addForm, _self.selectNum)
  166. }
  167. // }
  168. },
  169. deep: true
  170. },
  171. "addForm.rgstrId": {
  172. handler(newVal, oldVal) {
  173. if (newVal) {
  174. var _self = this;
  175. console.log("newVal:" + newVal + ", oldVal:" + oldVal)
  176. this.selectNum = 1;
  177. this.clearData();
  178. this.barData = [];
  179. this.mySeries = [];
  180. this.selectLegend = null;
  181. // this.getResponsibilityData(this.addForm,this.selectNum)
  182. if (this.testBool) {
  183. _self.getResponsibilityData(_self.addForm, _self.selectNum)
  184. }
  185. }
  186. },
  187. deep: true
  188. },
  189. // "addForms.year": {
  190. // handler(newVal, oldVal) {
  191. // if (newVal) {
  192. // var _self = this;
  193. // console.log("newVal:" + newVal + ", oldVal:" + oldVal)
  194. // this.selectNum = 2;
  195. // this.clearData();
  196. // this.mySeries = [];
  197. // this.selectLegend = null;
  198. // if (this.testBool) {
  199. // _self.getResponsibilityData(_self.addForms, _self.selectNum)
  200. // }
  201. // }
  202. // },
  203. // deep: true
  204. // },
  205. // "addForms.batch": {
  206. // handler(newVal, oldVal) {
  207. // if (newVal) {
  208. // var _self = this;
  209. // console.log("newVal:" + newVal + ", oldVal:" + oldVal)
  210. // this.selectNum = 2;
  211. // this.clearData();
  212. // this.mySeries = [];
  213. // this.selectLegend = null;
  214. // if (this.testBool) {
  215. // _self.getResponsibilityData(_self.addForms, _self.selectNum)
  216. // }
  217. // }
  218. // },
  219. // deep: true
  220. // },
  221. // "addForms.rgstrId": {
  222. // handler(newVal, oldVal) {
  223. // if (newVal) {
  224. // var _self = this;
  225. // console.log("newVal:" + newVal + ", oldVal:" + oldVal)
  226. // this.selectNum = 2;
  227. // this.clearData();
  228. // this.barData = [];
  229. // this.mySeries = [];
  230. // this.selectLegend = null;
  231. // // this.getResponsibilityData(this.addForm,this.selectNum)
  232. // if (this.testBool) {
  233. // _self.getResponsibilityData(_self.addForms, _self.selectNum)
  234. // }
  235. // }
  236. // },
  237. // deep: true
  238. // },
  239. // "addFormt.year": {
  240. // handler(newVal, oldVal) {
  241. // if (newVal) {
  242. // var _self = this;
  243. // console.log("newVal:" + newVal + ", oldVal:" + oldVal)
  244. // this.selectNum = 3;
  245. // this.clearData();
  246. // this.mySeries = [];
  247. // this.selectLegend = null;
  248. // if (this.testBool) {
  249. // _self.getResponsibilityData(_self.addFormt, _self.selectNum)
  250. // }
  251. // }
  252. // },
  253. // deep: true
  254. // },
  255. // "addFormt.batch": {
  256. // handler(newVal, oldVal) {
  257. // if (newVal) {
  258. // var _self = this;
  259. // console.log("newVal:" + newVal + ", oldVal:" + oldVal)
  260. // this.selectNum = 3;
  261. // this.clearData();
  262. // this.mySeries = [];
  263. // this.selectLegend = null;
  264. // if (this.testBool) {
  265. // _self.getResponsibilityData(_self.addFormt, _self.selectNum)
  266. // }
  267. // }
  268. // },
  269. // deep: true
  270. // },
  271. // "addFormt.rgstrId": {
  272. // handler(newVal, oldVal) {
  273. // if (newVal) {
  274. // var _self = this;
  275. // console.log("newVal:" + newVal + ", oldVal:" + oldVal)
  276. // this.selectNum = 3;
  277. // this.clearData();
  278. // this.barData = [];
  279. // this.mySeries = [];
  280. // this.selectLegend = null;
  281. // // this.getResponsibilityData(this.addForm,this.selectNum)
  282. // if (this.testBool) {
  283. // _self.getResponsibilityData(_self.addFormt, _self.selectNum)
  284. // }
  285. // }
  286. // },
  287. // deep: true
  288. // },
  289. selectLegend(val) {
  290. if (val) {
  291. this.mySeries = [];
  292. this.init_Serious_BarLineChart()
  293. }
  294. }
  295. },
  296. //方法集合
  297. methods: {
  298. //责任主体
  299. getResponsibilityData(params, item) {
  300. //debugger
  301. var _self = this;
  302. _self.loading = true;
  303. var obj = {};
  304. if(this.isMuch==true){
  305. obj.rgstrId = params.rgstrId;
  306. if(params.years instanceof Array){
  307. obj.years = params.years.length>0?params.years.join(","):"";
  308. obj.year = params.year;
  309. }else{
  310. obj.years = params.years;
  311. }
  312. }else{
  313. obj.year = params.year;
  314. obj.years = params.year;
  315. obj.batch = params.batch
  316. obj.rgstrId = params.rgstrId;
  317. }
  318. request.post(`/tac/pblm/info/countPblmInfoBySubNew`, obj).then(res => {
  319. if (res.success) {
  320. let count = 0;
  321. _self.clearData();
  322. res.data.forEach(ele => {
  323. //主体个数
  324. _self.zrtz_mainBodyNum_list.push(Number(ele.count));
  325. _self.zrtz_normal_list.push(Number(ele.normal));
  326. _self.zrtz_heavier_list.push(Number(ele.heavier));
  327. _self.zrtz_serious_list.push(Number(ele.serious));
  328. _self.zrtz_nh_list.push(Number(ele.normal) + Number(ele.heavier));
  329. _self.zrtz_ns_list.push(Number(ele.normal) + Number(ele.serious));
  330. _self.zrtz_hs_list.push(Number(ele.serious) + Number(ele.heavier));
  331. _self.xName.push(ele.name);
  332. count += Number(ele.count);
  333. _self.pieData_zy.push(
  334. {
  335. name: ele.name,
  336. value: Number(ele.normal) + Number(ele.heavier) + Number(ele.serious)
  337. }
  338. );
  339. });
  340. let countN = 0, countH = 0, countS = 0, countNh = 0, countNs = 0, countHs = 0
  341. _self.zrtz_normal_list.forEach(ele => {
  342. countN += Number(ele)
  343. })
  344. _self.zrtz_heavier_list.forEach(ele => {
  345. countH += Number(ele)
  346. })
  347. _self.zrtz_serious_list.forEach(ele => {
  348. countS += Number(ele)
  349. })
  350. _self.zrtz_nh_list.forEach(ele => {
  351. countNh += Number(ele)
  352. })
  353. _self.zrtz_ns_list.forEach(ele => {
  354. countNs += Number(ele)
  355. })
  356. _self.zrtz_hs_list.forEach(ele => {
  357. countHs += Number(ele)
  358. })
  359. _self.mainBody = _self.zrtz_mainBodyNum_list.map(item => {
  360. return ((item / count) * 100).toFixed(2);
  361. })
  362. _self.zrzt_n = _self.zrtz_normal_list.map(item => {
  363. return ((item / countN) * 100).toFixed(2);
  364. })
  365. _self.zrzt_h = _self.zrtz_heavier_list.map(item => {
  366. return ((item / countH) * 100).toFixed(2);
  367. })
  368. _self.zrzt_s = _self.zrtz_serious_list.map(item => {
  369. return ((item / countS) * 100).toFixed(2);
  370. })
  371. _self.zrzt_nh = _self.zrtz_nh_list.map(item => {
  372. return ((item / countNh) * 100).toFixed(2);
  373. })
  374. _self.zrzt_ns = _self.zrtz_ns_list.map(item => {
  375. return ((item / countNs) * 100).toFixed(2);
  376. })
  377. _self.zrzt_hs = _self.zrtz_hs_list.map(item => {
  378. return ((item / countHs) * 100).toFixed(2);
  379. })
  380. _self.barData_zrzt = {
  381. "mainBody": _self.mainBody,
  382. "normal": _self.zrtz_normal_list,
  383. "heavier": _self.zrtz_heavier_list,
  384. "serious": _self.zrtz_serious_list,
  385. "xName": _self.xName,
  386. "pcNum": item,
  387. "countNum": _self.zrtz_mainBodyNum_list
  388. };
  389. if (_self.barData.length != 0) {
  390. var index = _self.functiontofindIndexByKeyValue(_self.barData, "pcNum", _self.barData_zrzt.pcNum);
  391. if (index == null) {
  392. _self.barData.push(_self.barData_zrzt)
  393. } else {
  394. _self.mySeries = [];
  395. _self.barData[index] = _self.barData_zrzt;
  396. }
  397. } else {
  398. _self.barData.push(_self.barData_zrzt)
  399. }
  400. console.log(_self.barData_zrzt);
  401. this.init_Serious_BarLineChart();
  402. }
  403. });
  404. },
  405. functiontofindIndexByKeyValue(arraytosearch, key, valuetosearch) {
  406. for (var i = 0; i < arraytosearch.length; i++) {
  407. if (arraytosearch[i][key] == valuetosearch) {
  408. return i;
  409. }
  410. }
  411. return null;
  412. },
  413. init_Serious_BarLineChart: function () {
  414. var _self = this;
  415. this.chart = echarts.init(this.$refs['bar_chart']);
  416. this.selectLegend = this.selectLegend || _self.mainBody
  417. this.chart.on("legendselectchanged", function (obj) {
  418. // let series = _self.mySeries;
  419. // var b = obj.selected, d = [];
  420. // for (var key in b) {
  421. // if (b[key]) {
  422. // for (var i = 0, l = series.length; i < l; i++) {
  423. // var changename = series[i]["name"];
  424. // if (changename == key) {
  425. // d.push(i);
  426. // }
  427. // }
  428. // }
  429. // }
  430. // for (var i = 0; i < series.length; i++) {
  431. // series[i]["label"]["show"] = false;
  432. // }
  433. // for (var i = series.length - 1; i >= 0; i--) {
  434. // var name = series[i]["name"];
  435. // if (obj["selected"][name]) {
  436. // series[i]["label"]["formatter"] = fun1
  437. // series[i]["label"]["show"] = true
  438. // break;
  439. // }
  440. // }
  441. console.log(obj)
  442. if (obj.selected['一般问题'] && obj.selected['较重问题'] && obj.selected['严重问题']) {
  443. _self.selectLegend = _self.mainBody
  444. } else if (obj.selected['一般问题'] && obj.selected['较重问题']) {
  445. _self.selectLegend = _self.zrzt_nh
  446. } else if (obj.selected['一般问题'] && obj.selected['严重问题']) {
  447. _self.selectLegend = _self.zrzt_ns
  448. } else if (obj.selected['较重问题'] && obj.selected['严重问题']) {
  449. _self.selectLegend = _self.zrzt_hs
  450. } else if (obj.selected['一般问题']) {
  451. _self.selectLegend = _self.zrzt_n
  452. } else if (obj.selected['较重问题']) {
  453. _self.selectLegend = _self.zrzt_h
  454. } else if (obj.selected['严重问题']) {
  455. _self.selectLegend = _self.zrzt_s
  456. }
  457. console.log(_self.selectLegend)
  458. })
  459. this.barData.forEach(ele => {
  460. ele.mainBody = _self.selectLegend
  461. let line = {
  462. // name: "主体个数",
  463. name: "主体个数占比",
  464. type: "line",
  465. yAxisIndex: 1, //使用的 y 轴的 index,在单个图表实例中存在多个 y轴的时候有用
  466. showAllSymbol: true, //显示所有图形。
  467. symbol: "circle", //标记的图形为实心圆
  468. symbolSize: 5, //标记的大小
  469. itemStyle: {
  470. //折线拐点标志的样式
  471. color: "#49dff0"
  472. },
  473. lineStyle: {
  474. color: "#49dff0"
  475. },
  476. areaStyle: {
  477. color: "rgba(5,140,255, 0.2)"
  478. },
  479. data: ele.mainBody
  480. };
  481. let barNormal = {
  482. name: "一般问题",
  483. // stack: "总量",
  484. stack: "pc" + ele.pcNum,
  485. type: "bar",
  486. barWidth: 25,
  487. itemStyle: {
  488. normal: {
  489. color: "#5ce9c7"
  490. }
  491. },
  492. data: ele.normal,
  493. label: {
  494. normal: {
  495. show: true,
  496. position: 'inside'
  497. }
  498. }
  499. };
  500. let barHeavier = {
  501. name: "较重问题",
  502. // stack: "总量",
  503. stack: "pc" + ele.pcNum,
  504. type: "bar",
  505. barWidth: 25,
  506. itemStyle: {
  507. normal: {
  508. color: "#fed172"
  509. }
  510. },
  511. data: ele.heavier,
  512. label: {
  513. normal: {
  514. show: true,
  515. position: 'inside'
  516. }
  517. }
  518. };
  519. let barSerious = {
  520. name: "严重问题",
  521. // stack: "总量",
  522. stack: "pc" + ele.pcNum,
  523. type: "bar",
  524. barWidth: 25,
  525. itemStyle: {
  526. normal: {
  527. color: "#fb6086"
  528. }
  529. },
  530. data: ele.serious,
  531. label: {
  532. normal: {
  533. show: true,
  534. position: 'inside'
  535. }
  536. }
  537. };
  538. let count = {
  539. name: '问题总数',
  540. type: 'bar',
  541. barWidth: 25,
  542. barGap: '-100%',
  543. data: ele.countNum,
  544. itemStyle: {
  545. normal: {
  546. color: "#0195f2"
  547. }
  548. },
  549. label: {
  550. show: true,
  551. normal: {
  552. show: true,
  553. fontSize: 16,
  554. fontWeight: 'bold',
  555. color: '#333',
  556. position: 'top',
  557. },
  558. formatter: function (params) {
  559. return params.value
  560. }
  561. }
  562. };
  563. this.mySeries.push(line, count, barNormal, barHeavier, barSerious);
  564. })
  565. let option = {
  566. toolbox: {
  567. show: true,
  568. orient: "vertical",
  569. left: "right",
  570. top: "top",
  571. feature: {
  572. saveAsImage: { show: true }, // 保存图表
  573. },
  574. },
  575. title: {
  576. text: '相关责任主体问题分布情况',
  577. textStyle: {
  578. align: 'center',
  579. // color: '#fff',
  580. fontSize: 20,
  581. },
  582. top: '3%',
  583. left: '5%',
  584. },
  585. grid: {
  586. top: "15%",
  587. bottom: "15%",
  588. left: "5%",
  589. right: "5%",
  590. containLabel: true
  591. },
  592. tooltip: {
  593. trigger: "axis",
  594. axisPointer: {
  595. type: "shadow",
  596. label: {
  597. show: true
  598. }
  599. },
  600. formatter: function (params) {
  601. var relVal = params[0].name;
  602. for (var i = 0, l = params.length; i < l; i++) {
  603. i === 0 ? relVal += '<br/>' + params[i].marker + params[i].seriesName + ': ' + params[i].value + "%" : relVal += '<br/>' + params[i].marker + params[i].seriesName + ': ' + params[i].value + "个";
  604. }
  605. return relVal;
  606. }
  607. },
  608. legend: {
  609. data: ["主体个数占比", "一般问题", "较重问题", "严重问题", "问题总数"],
  610. top: "5%",
  611. textStyle: {
  612. // color: "#ffffff"
  613. },
  614. selected: {
  615. "问题总数": false //图例为‘全部’的一项默认置灰
  616. }
  617. },
  618. xAxis: {
  619. data: _self.barData[0].xName,
  620. axisLine: {
  621. show: true //隐藏X轴轴线
  622. },
  623. axisTick: {
  624. show: true //隐藏X轴刻度
  625. },
  626. axisLabel: {
  627. rotate: 15,
  628. show: true,
  629. textStyle: {
  630. // color: "#ebf8ac" //X轴文字颜色
  631. }
  632. },
  633. },
  634. yAxis: [
  635. {
  636. type: "value",
  637. name: "个",
  638. nameTextStyle: {
  639. // color: "#ebf8ac"
  640. },
  641. splitLine: {
  642. show: false
  643. },
  644. axisTick: {
  645. show: true
  646. },
  647. axisLine: {
  648. show: true
  649. },
  650. axisLabel: {
  651. show: true,
  652. textStyle: {
  653. // color: "#ebf8ac"
  654. }
  655. },
  656. },
  657. {
  658. type: "value",
  659. name: "主体个数占比",
  660. nameTextStyle: {
  661. // color: "#ebf8ac"
  662. },
  663. position: "right",
  664. splitLine: {
  665. show: false
  666. },
  667. axisTick: {
  668. show: true
  669. },
  670. axisLine: {
  671. show: true
  672. },
  673. axisLabel: {
  674. show: true,
  675. formatter: "{value} %", //右侧Y轴文字显示
  676. textStyle: {
  677. // color: "#ebf8ac"
  678. }
  679. }
  680. },
  681. {
  682. type: "value",
  683. gridIndex: 0,
  684. min: 50,
  685. max: 100,
  686. splitNumber: 8,
  687. splitLine: {
  688. show: false
  689. },
  690. axisLine: {
  691. show: false
  692. },
  693. axisTick: {
  694. show: false
  695. },
  696. axisLabel: {
  697. show: false
  698. },
  699. splitArea: {
  700. show: true,
  701. areaStyle: {
  702. color: ["rgba(250,250,250,0.0)", "rgba(250,250,250,0.05)"]
  703. }
  704. }
  705. }
  706. ],
  707. series: _self.mySeries,
  708. };
  709. var chart1 = echarts.init(this.$refs['pie_chart']);
  710. let option1 = {
  711. toolbox: {
  712. show: true,
  713. orient: "vertical",
  714. left: "right",
  715. top: "top",
  716. feature: {
  717. saveAsImage: { show: true }, // 保存图表
  718. },
  719. },
  720. color: [
  721. '#fed172', '#fb6086', '#0195f2', '#A5A5A5',
  722. '#FFC000', '#5B9BD5', '#679ccd', '#41afff', '#40e0d0',
  723. '#4b3eff', '#0cffd5', '#afeea7', '#05d089', '#ffd700',
  724. '#6c8e37', '#4ea397', '#3cb371', '#6db8a9', '#7bd9a5',
  725. '#15a7ff', '#9de0ff', '#9da7ff', '#4cbbfe', '#7dc3fe',
  726. '#1658bb', '#433e7c', '#11ddf4', '#009db2', '#024b51',
  727. '#0d61cf', '#127619', '#e7be36', '#26ccd8', '#3685fe',
  728. '#4065ef', '#5160f5', '#f7b13f', '#f9e264', '#50c48f'
  729. ],
  730. tooltip: {
  731. trigger: "item",
  732. formatter: "{b}({d}%)"
  733. },
  734. legend: {
  735. type: 'scroll',
  736. orient: 'vertical',
  737. top: '15%',
  738. bottom: '15%',
  739. right: '5%',
  740. itemWidth: 10, // 图例标记的图形宽度。[ default: 25 ]
  741. itemHeight: 10, // 图例标记的图形高度。[ default: 14 ]
  742. itemGap: 10, // 图例每项之间的间隔。[ default: 10 ]横向布局时为水平间隔,纵向布局时为纵向间隔。
  743. textStyle: {
  744. fontSize: 14,
  745. color: '#3b3b3b',
  746. },
  747. pageButtonPosition: 'start',
  748. pageIconColor: '#31586C', //翻页下一页的三角按钮颜色
  749. pageIconInactiveColor: '#31586C', //翻页(即翻页到头时)
  750. pageIconSize: 10, //翻页按钮大小
  751. pageFormatter: '',//隐藏翻页的数字
  752. pageButtonItemGap: -6,//翻页按钮的两个之间的间距
  753. },
  754. series: [{
  755. type: "pie",
  756. data: _self.pieData_zy,
  757. radius: '40%',
  758. center: ['30%', '50%'],
  759. labelLine: {
  760. normal: {
  761. show: true,
  762. position: 'outside',
  763. formatter: '{c}'
  764. }
  765. },
  766. label: {
  767. normal: {
  768. show: true,
  769. formatter: "{d}% ",
  770. textStyle: {
  771. fontSize: this.standSize / 150,
  772. },
  773. }
  774. }
  775. }]
  776. };
  777. this.chart.setOption(option);
  778. chart1.setOption(option1);
  779. window.addEventListener("resize", () => {
  780. this.chart.resize();
  781. chart1.resize();
  782. });
  783. },
  784. //置空数据
  785. clearData() {
  786. this.zrtz_mainBodyNum_list = [];
  787. this.zrtz_normal_list = [];
  788. this.zrtz_heavier_list = [];
  789. this.zrtz_serious_list = [];
  790. this.zrtz_nh_list = [];
  791. this.zrtz_ns_list = [];
  792. this.zrtz_hs_list = [];
  793. this.xName = [];
  794. this.mainBody = [];
  795. this.pieData_zy = [];
  796. },
  797. },
  798. //生命周期 - 创建完成(可以访问当前this实例)
  799. created() {
  800. },
  801. //生命周期 - 挂载完成(可以访问DOM元素)
  802. mounted() {
  803. this.getResponsibilityData(this.addForm, this.selectNum);
  804. },
  805. beforeCreate() {
  806. }, //生命周期 - 创建之前
  807. beforeMount() {
  808. }, //生命周期 - 挂载之前
  809. beforeUpdate() {
  810. }, //生命周期 - 更新之前
  811. updated() {
  812. }, //生命周期 - 更新之后
  813. beforeDestroy() {
  814. }, //生命周期 - 销毁之前
  815. destroyed() {
  816. }, //生命周期 - 销毁完成
  817. activated() {
  818. }, //如果页面有keep-alive缓存功能,这个函数会触发
  819. }
  820. </script>
  821. <style scoped>
  822. </style>