index.vue 46 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495969798991001011021031041051061071081091101111121131141151161171181191201211221231241251261271281291301311321331341351361371381391401411421431441451461471481491501511521531541551561571581591601611621631641651661671681691701711721731741751761771781791801811821831841851861871881891901911921931941951961971981992002012022032042052062072082092102112122132142152162172182192202212222232242252262272282292302312322332342352362372382392402412422432442452462472482492502512522532542552562572582592602612622632642652662672682692702712722732742752762772782792802812822832842852862872882892902912922932942952962972982993003013023033043053063073083093103113123133143153163173183193203213223233243253263273283293303313323333343353363373383393403413423433443453463473483493503513523533543553563573583593603613623633643653663673683693703713723733743753763773783793803813823833843853863873883893903913923933943953963973983994004014024034044054064074084094104114124134144154164174184194204214224234244254264274284294304314324334344354364374384394404414424434444454464474484494504514524534544554564574584594604614624634644654664674684694704714724734744754764774784794804814824834844854864874884894904914924934944954964974984995005015025035045055065075085095105115125135145155165175185195205215225235245255265275285295305315325335345355365375385395405415425435445455465475485495505515525535545555565575585595605615625635645655665675685695705715725735745755765775785795805815825835845855865875885895905915925935945955965975985996006016026036046056066076086096106116126136146156166176186196206216226236246256266276286296306316326336346356366376386396406416426436446456466476486496506516526536546556566576586596606616626636646656666676686696706716726736746756766776786796806816826836846856866876886896906916926936946956966976986997007017027037047057067077087097107117127137147157167177187197207217227237247257267277287297307317327337347357367377387397407417427437447457467477487497507517527537547557567577587597607617627637647657667677687697707717727737747757767777787797807817827837847857867877887897907917927937947957967977987998008018028038048058068078088098108118128138148158168178188198208218228238248258268278288298308318328338348358368378388398408418428438448458468478488498508518528538548558568578588598608618628638648658668678688698708718728738748758768778788798808818828838848858868878888898908918928938948958968978988999009019029039049059069079089099109119129139149159169179189199209219229239249259269279289299309319329339349359369379389399409419429439449459469479489499509519529539549559569579589599609619629639649659669679689699709719729739749759769779789799809819829839849859869879889899909919929939949959969979989991000100110021003100410051006100710081009101010111012101310141015101610171018101910201021102210231024102510261027102810291030103110321033103410351036103710381039104010411042104310441045104610471048104910501051105210531054105510561057105810591060106110621063106410651066106710681069107010711072107310741075107610771078107910801081108210831084108510861087108810891090109110921093109410951096109710981099110011011102110311041105110611071108110911101111111211131114111511161117111811191120112111221123112411251126112711281129113011311132113311341135113611371138113911401141114211431144114511461147114811491150115111521153115411551156115711581159116011611162116311641165116611671168116911701171117211731174117511761177117811791180118111821183118411851186118711881189119011911192119311941195119611971198119912001201120212031204120512061207120812091210121112121213121412151216121712181219122012211222122312241225122612271228122912301231123212331234123512361237123812391240124112421243124412451246124712481249125012511252125312541255125612571258125912601261126212631264126512661267126812691270127112721273127412751276127712781279128012811282128312841285128612871288128912901291129212931294129512961297129812991300130113021303130413051306130713081309131013111312131313141315131613171318131913201321132213231324132513261327132813291330133113321333133413351336133713381339134013411342134313441345134613471348134913501351135213531354135513561357135813591360136113621363136413651366136713681369137013711372137313741375137613771378137913801381138213831384138513861387138813891390139113921393139413951396139713981399140014011402140314041405140614071408140914101411141214131414141514161417141814191420142114221423142414251426142714281429143014311432143314341435143614371438143914401441144214431444
  1. <!--
  2. * @Description:
  3. * @Author: wangcc
  4. * @Date: 2022-07-06 15:56:45
  5. * @LastEditors: wangcc
  6. * @LastEditTime: 2022-11-04 16:15:40
  7. * @FilePath: \castgroup_bigscreen\src\views\index.vue
  8. * @Copyright: Copyright (c) 2016~2022 by wangcc, All Rights Reserved.
  9. -->
  10. <template>
  11. <div class>
  12. <!-- <dv-full-screen-container> -->
  13. <Map></Map>
  14. <Header></Header>
  15. <section class="nav-wrap">
  16. <div
  17. class="nav-item"
  18. :class="{ active: (index + 1) == page }"
  19. v-for="(item,index) in navList"
  20. @click="navClick(index + 1)"
  21. :key="index"
  22. >{{ item.text }}</div>
  23. </section>
  24. <Alarm v-if="page == 6 && alarmData.length >= 1" :data="alarmData" />
  25. <section class="left-wrap" v-if="$store.state.addr.page == 'forest'">
  26. <Numerical class="left-item" :data="page1numerical" pageName="forest" />
  27. <MyEcharts
  28. class="left-item chart-wrap"
  29. mid="page1Char1"
  30. streetTitleText="各小班"
  31. ref="page1Char1"
  32. :option="page1Char1"
  33. style
  34. />
  35. <MyEcharts
  36. class="left-item chart-wrap"
  37. mid="page1Char2"
  38. streetTitleText="各小班"
  39. ref="page1Char2"
  40. :option="page1Char2"
  41. style
  42. />
  43. </section>
  44. <section class="left-wrap" v-if="$store.state.addr.page == 'treeSpecies'">
  45. <Numerical class="left-item" :data="page2numerical" pageName="treeSpecies" />
  46. <!-- <MyEcharts
  47. class="left-item chart-wrap"
  48. mid="page2Char1"
  49. :option="page2Char1"
  50. ref="page2Char1"
  51. />-->
  52. <MyEcharts
  53. class="left-item chart-wrap"
  54. mid="page2Char2"
  55. streetTitleText="各小班"
  56. :option="page2Char2"
  57. ref="page2Char2"
  58. />
  59. <MyEcharts
  60. class="left-item chart-wrap"
  61. mid="page2Char3"
  62. streetTitleText="各小班"
  63. :option="page2Char3"
  64. ref="page2Char3"
  65. />
  66. </section>
  67. <!-- 林业经济 -->
  68. <section class="left-wrap" v-if="$store.state.addr.page == 'economics'">
  69. <!-- <Typeslide :data="typeSlideData" /> -->
  70. <Numerical class="left-item" :data="page5numerical" pageName="economics" />
  71. <MyEcharts
  72. class="left-item chart-wrap"
  73. mid="page5Char2"
  74. ref="page5Char2"
  75. :option="page5Char2"
  76. />
  77. <MyEcharts
  78. class="left-item chart-wrap"
  79. mid="page5Char1"
  80. ref="page5Char1"
  81. :option="page5Char1"
  82. />
  83. </section>
  84. <!-- 事件信息 -->
  85. <section class="left-wrap event-page" v-if="$store.state.addr.page == 'event'">
  86. <Numerical class="left-item" :data="page6numerical" />
  87. <MyEcharts
  88. class="left-item chart-wrap"
  89. mid="page6Char1"
  90. ref="page6Char1"
  91. :option="page6Char1"
  92. />
  93. <!-- <MyEcharts
  94. class="left-item chart-wrap"
  95. mid="page6Char2"
  96. ref="page6Char2"
  97. :option="page6Char2"
  98. />-->
  99. <div class="left-item">
  100. <!-- <div class="ntitle">{{$store.state.addr.selectAddr}}事件发生记录</div> -->
  101. <div class="ntitle">
  102. <span
  103. v-if="$store.state.addr.mapLevel == 'province'"
  104. >{{ $store.state.addr.selectAddr }}各地州(市)事件发生记录</span>
  105. <span
  106. v-if="$store.state.addr.mapLevel == 'city'"
  107. >{{ $store.state.addr.selectAddr }}各县事件发生记录</span>
  108. <span
  109. v-if="$store.state.addr.mapLevel == 'district'"
  110. >{{ $store.state.addr.selectAddr }}各乡镇事件发生记录</span>
  111. <span
  112. v-if="$store.state.addr.mapLevel == 'street'"
  113. >{{ $store.state.addr.selectAddr }}各村事件发生记录</span>
  114. </div>
  115. <dv-scroll-board
  116. :key="scrollBoardKey"
  117. class="scroll-event"
  118. :config="scrollEventConfig"
  119. ref="scrollBoard"
  120. @click="scrollEventClick"
  121. @mouseout="scrollEventOut"
  122. />
  123. </div>
  124. </section>
  125. <section class="right-wrap">
  126. <PickerAddr />
  127. <div v-if="showbase" class="xiaoban u-flex">
  128. <div class="title">基地查询:</div>
  129. <el-input v-model="baseinput" placeholder="请输入基地名称">
  130. <i class="el-icon-search el-input__icon" slot="suffix" @click="basesearch"></i>
  131. </el-input>
  132. </div>
  133. <div class="right_xiaoban">
  134. <div class="tab-box" v-if="showxiaoban">
  135. <div
  136. class="tab-btn"
  137. :class="classFunc(index)"
  138. @click="tabLink(index)"
  139. v-for="(item, index) in tabData"
  140. :key="index"
  141. >
  142. <span class="tab-span">{{ item.name }}</span>
  143. </div>
  144. </div>
  145. <div v-if="showxiaoban" class="xiaoban u-flex">
  146. <div class="tab-class-search" v-if="cur == 1">
  147. <!-- <div class="title">小班查询:</div> -->
  148. <el-input v-model="xiaobaninput" placeholder="请输入小班号">
  149. <i class="el-icon-search el-input__icon" slot="suffix" @click="xiaobansearch"></i>
  150. </el-input>
  151. </div>
  152. <div class="tab-class-search" v-if="cur == 0">
  153. <!-- <div class="title">项目查询:</div> -->
  154. <el-input v-model="projectInput" placeholder="请输入项目名称">
  155. <i class="el-icon-search el-input__icon" slot="suffix" @click="projectSearch"></i>
  156. </el-input>
  157. </div>
  158. </div>
  159. <section
  160. v-if="showxiaoban || showbase"
  161. class="scroll-board-wrap"
  162. :class="{ close: showScrollBoard == true }"
  163. >
  164. <dv-scroll-board
  165. v-if="showbase"
  166. :key="scrollBoardKey"
  167. class="scroll-board-01 scroll-base"
  168. :config="scrollBaseListConfig"
  169. ref="scrollBaseList"
  170. @click="scrollBaseListClick"
  171. @mouseout="baseListClick"
  172. />
  173. <dv-scroll-board
  174. v-if="showxiaoban && cur == 1"
  175. :key="scrollBoardKey"
  176. class="scroll-board-01"
  177. :config="scrollBoardConfig"
  178. ref="scrollBoard"
  179. @click="scrollBoardClick"
  180. :style="scrollBoardStyle"
  181. />
  182. <dv-scroll-board
  183. v-if="showxiaoban && cur == 0"
  184. :key="scrollBoardKey"
  185. class="scroll-board-01"
  186. id="projectId"
  187. :config="scrollPeojectConfig"
  188. ref="scrollProjectBoard"
  189. @click="scrollProjectClick"
  190. @mouseout="scrollOutPro"
  191. :style="scrollBoardStyle"
  192. />
  193. <div class="scroll-board-tool" @click="toggleShowScrollBoard">
  194. <div class="inner">
  195. <img src="../assets/img/jiantou.png" alt />
  196. </div>
  197. </div>
  198. </section>
  199. </div>
  200. </section>
  201. <!-- </dv-full-screen-container> -->
  202. </div>
  203. </template>
  204. <script>
  205. import Map from '../components/amapPow.vue';
  206. import Header from '../components/header';
  207. import MyEcharts from '../components/echarts';
  208. import Numerical from '../components/numerical';
  209. import Alarm from '../components/alarm';
  210. import PickerAddr from '../components/pickerAddr';
  211. import Typeslide from '../components/typeslide';
  212. import { Message } from 'element-ui';
  213. import { debounce } from '@/utils/mdebounce';
  214. import { sliceArray } from '@/utils/sliceArray';
  215. import { mapMutations, mapState, mapGetters } from 'vuex';
  216. import {
  217. page1numerical,
  218. page1echarts01,
  219. page1echarts02,
  220. rightScrollData,
  221. baseList,
  222. alarmDataApi,
  223. page2numerical,
  224. page2echarts01,
  225. page2echarts02,
  226. page2echarts03,
  227. page5numerical,
  228. typeSlideApi,
  229. page5echarts01,
  230. page5echarts02,
  231. page6numerical,
  232. page6echarts01,
  233. page6echarts02,
  234. eventList,
  235. smallClassDetail,
  236. smallInfo,
  237. eventDetail,
  238. financeBaseDetail,
  239. projectList,
  240. projectSmallClass
  241. } from '../service/index';
  242. import scrollBoardSchema from '../dataSchema/scrollBoardSchema';
  243. import scrollPeojectSchema from '../dataSchema/scrollPeojectSchema';
  244. import scrollBaseListSchema from '../dataSchema/scrollBaseListSchema';
  245. import page1Char1Schema from '../dataSchema/page1Char1Schema';
  246. import page1Char2Schema from '../dataSchema/page1Char2Schema';
  247. import page2Char1Schema from '../dataSchema/page2Char1Schema';
  248. import page2Char2Schema from '../dataSchema/page2Char2Schema';
  249. import page2Char3Schema from '../dataSchema/page2Char3Schema';
  250. import page5Char1Schema from '../dataSchema/page5Char1Schema';
  251. import page5Char2Schema from '../dataSchema/page5Char2Schema';
  252. import page6Char1Schema from '../dataSchema/page6Char1Schema';
  253. import page6Char2Schema from '../dataSchema/page6Char2Schema';
  254. import scrollEventSchema from '../dataSchema/scrollEventSchema';
  255. //柱状图颜色
  256. let colorArr = ['#00FAFD', '#FF4E46', '#FFAA00', '#19D800'];
  257. // import { provinceAndCityData, regionData, provinceAndCityDataPlus, regionDataPlus, CodeToText, TextToCode } from 'element-china-area-data';
  258. export default {
  259. name: '',
  260. components: {
  261. Map,
  262. Header,
  263. MyEcharts,
  264. Numerical,
  265. Alarm,
  266. PickerAddr,
  267. Typeslide
  268. },
  269. data() {
  270. return {
  271. tabData: [
  272. {
  273. id: 1,
  274. name: '项目查询'
  275. },
  276. {
  277. id: 2,
  278. name: '小班查询'
  279. }
  280. ],
  281. rowList: [],
  282. cur: 0,
  283. showxiaoban: true,
  284. showbase: false,
  285. showScrollBoard: false,
  286. alarData: {},
  287. page: 1,
  288. // addrOptions: regionDataPlus,
  289. addrSelectedOptions: ['520000', ''],
  290. navList: [
  291. { text: '森林资源', en: 'forest' },
  292. { text: '林木结构', en: 'treeSpecies' },
  293. { text: '碳汇管理', en: 'sink' },
  294. { text: '林下经济', en: 'economics' },
  295. { text: '土地流转', en: 'circulation' },
  296. { text: '事件信息', en: 'event' }
  297. ],
  298. scrollBoardKey: Date.now(),
  299. scrollBoardStyle: {
  300. // width: '100%',
  301. // height: '60vh'
  302. },
  303. scrollBoardConfig: scrollBoardSchema,
  304. scrollBaseListConfig: scrollBaseListSchema,
  305. scrollPeojectConfig: scrollPeojectSchema,
  306. page1numerical: [
  307. { name: '蓄积量', number: '2309', unit: '立方米' },
  308. { name: '占地面积', number: '55.4', unit: '万亩' }
  309. ],
  310. alarmData: [
  311. // {msg:'三都林场01小班于15:00:00发现火情,请尽快处理!'},
  312. // {msg:'测试1!'},
  313. // {msg:'测试22222222!'},
  314. ],
  315. page1Char1: page1Char1Schema,
  316. page1Char2: page1Char2Schema,
  317. page2numerical: [],
  318. page2Char1: page2Char1Schema,
  319. page2Char2: page2Char2Schema,
  320. page2Char3: page2Char3Schema,
  321. page5numerical: [],
  322. typeSlideData: [],
  323. page5Char1: page5Char1Schema,
  324. page5Char2: page5Char2Schema,
  325. page6numerical: [],
  326. page6Char1: page6Char1Schema,
  327. page6Char2: page6Char2Schema,
  328. scrollEventConfig: scrollEventSchema,
  329. xiaobaninput: '',
  330. projectInput: '',
  331. baseinput: ''
  332. };
  333. },
  334. created() {},
  335. computed: {
  336. ...mapGetters(['vuexCityList', 'vuexDistrictList', 'vuexStreetList'])
  337. },
  338. mounted() {
  339. this.getPageData();
  340. // this.getRightScrollData();
  341. setInterval(() => {
  342. this.getPageData();
  343. }, 1160000);
  344. window.onresize = () => {
  345. //图表resize
  346. if (this.$store.state.addr.page == 'forest') {
  347. let page1Char1Uuid = this.$refs.page1Char1.mid;
  348. this.$refs.page1Char1.resizeChar(page1Char1Uuid);
  349. let page1Char2Uuid = this.$refs.page1Char2.mid;
  350. this.$refs.page1Char2.resizeChar(page1Char2Uuid);
  351. } else if (this.$store.state.addr.page == 'treeSpecies') {
  352. let page2Char2Uuid = this.$refs.page2Char2.mid;
  353. this.$refs.page2Char2.resizeChar(page2Char2Uuid);
  354. let page2Char3Uuid = this.$refs.page2Char3.mid;
  355. this.$refs.page2Char3.resizeChar(page2Char3Uuid);
  356. } else if (this.$store.state.addr.page == 'economics') {
  357. let page5Char1Uuid = this.$refs.page5Char1.mid;
  358. this.$refs.page5Char1.resizeChar(page5Char1Uuid);
  359. let page5Char2Uuid = this.$refs.page5Char2.mid;
  360. this.$refs.page5Char2.resizeChar(page5Char2Uuid);
  361. } else if (this.$store.state.addr.page == 'event') {
  362. let page6Char1Uuid = this.$refs.page6Char1.mid;
  363. this.$refs.page6Char1.resizeChar(page6Char1Uuid);
  364. let page6Char2Uuid = this.$refs.page6Char2.mid;
  365. this.$refs.page6Char2.resizeChar(page6Char2Uuid);
  366. }
  367. };
  368. },
  369. watch: {
  370. xiaobaninput: {
  371. handler: function () {
  372. debounce(this.xiaobansearch, 500, false);
  373. }
  374. },
  375. projectInput: {
  376. handler: function () {
  377. debounce(this.projectSearch, 500, false);
  378. }
  379. },
  380. baseinput: {
  381. handler: function () {
  382. debounce(this.basesearch, 500, false);
  383. }
  384. },
  385. '$store.state.addr.selectCity'(val) {
  386. // debounce(this.getPageData(), 1000, false)
  387. this.getPageData();
  388. },
  389. '$store.state.addr.selectDistrict'(val) {
  390. this.getPageData();
  391. },
  392. '$store.state.addr.selectStreet'(val) {
  393. this.getPageData();
  394. },
  395. '$store.state.addr.mapLevel': {
  396. handler(val) {
  397. if (val === 'city' && this.$store.state.addr.selectCity.prop == '2') {
  398. this.jumpDistrict();
  399. }
  400. }
  401. },
  402. '$store.state.addr.selectProject'(val) {
  403. // console.log('addr.selectProject',val);
  404. this.getPageData();
  405. },
  406. },
  407. methods: {
  408. ...mapMutations([
  409. 'changeSearchSmallClass',
  410. 'changeEvenData',
  411. 'changeBaseDetail',
  412. 'changeSelectCity',
  413. 'changeSelectDistrict',
  414. 'changeSelectStreet',
  415. 'getProjectSmallClassMap',
  416. 'changeSelectProject'
  417. ]),
  418. addrChange(value) {
  419. console.log('addrChange', value);
  420. },
  421. navClick(index) {
  422. let pageName = this.navList[index - 1].en;
  423. if (pageName == 'sink' || pageName == 'circulation') {
  424. Message('暂未开放!');
  425. return;
  426. }
  427. this.$store.commit('changePage', this.navList[index - 1].en);
  428. console.log('this.navList[index-1].en', this.navList[index - 1].en);
  429. this.page = index;
  430. console.log('index', index);
  431. if (this.navList[index - 1].en == 'economics') {
  432. this.showbase = true;
  433. this.showxiaoban = false;
  434. } else if (this.navList[index - 1].en == 'event') {
  435. this.showbase = false;
  436. this.showxiaoban = false;
  437. } else {
  438. this.showbase = false;
  439. this.showxiaoban = true;
  440. }
  441. // 切换专题时,重置区域
  442. // this.$store.dispatch('searchArea', {
  443. // parentId: '520000',
  444. // name: '贵州省',
  445. // mapLevel: 'province'
  446. // });
  447. this.getPageData();
  448. },
  449. getPageData() {
  450. debounce(this.debounceGetData, 1000, true);
  451. },
  452. debounceGetData() {
  453. console.log('请求数据');
  454. // console.log('page', this.$store.state.addr.page);
  455. // {text:'森林资源',en:'forest'},
  456. // {text:'林木结构',en:'treeSpecies'},
  457. // {text:'碳汇管理',en:'sink'},
  458. // {text:'林下经济',en:'economics'},
  459. // {text:'土地流转',en:'circulation'},
  460. // {text:'事件信息',en:'event'},
  461. if (this.$store.state.addr.page == 'forest') {
  462. this.getPage1numerical();
  463. this.getPage1echarts01();
  464. this.getPage1echarts02();
  465. this.getRightScrollData();
  466. this.getProjectScrollData();
  467. } else if (this.$store.state.addr.page == 'treeSpecies') {
  468. this.getPage2numerical();
  469. // this.getPage2echarts01();
  470. this.getPage2echarts02();
  471. this.getPage2echarts03();
  472. this.getRightScrollData();
  473. this.getProjectScrollData();
  474. } else if (this.$store.state.addr.page == 'economics') {
  475. this.getPage5numerical();
  476. // this.getTypeSlideData();
  477. this.getPage5echarts01();
  478. this.getPage5echarts02();
  479. this.getBaseList();
  480. } else if (this.$store.state.addr.page == 'event') {
  481. this.getPage6numerical();
  482. this.getPage6echarts01();
  483. this.getEventList();
  484. // this.getPage6echarts02();
  485. this.getAlarmData();
  486. // this.getRightScrollData();
  487. }
  488. },
  489. getPage1numerical() {
  490. let param = {
  491. cityId: this.$store.state.addr.selectCity.areaId,
  492. countyId: this.$store.state.addr.selectDistrict.areaId,
  493. townId: this.$store.state.addr.selectStreet.areaId,
  494. courseId:this.$store.state.addr.selectProject.ProjectID,
  495. };
  496. page1numerical(param)
  497. .then((res) => {
  498. // console.log('res',res);
  499. this.page1numerical = res.data;
  500. })
  501. .catch((err) => {
  502. console.log('echarts01 err', err);
  503. });
  504. },
  505. getPage1echarts01() {
  506. let param = {
  507. cityId: this.$store.state.addr.selectCity.areaId,
  508. countyId: this.$store.state.addr.selectDistrict.areaId,
  509. townId: this.$store.state.addr.selectStreet.areaId,
  510. courseId:this.$store.state.addr.selectProject.ProjectID,
  511. };
  512. // console.log('cityId',param.cityId);
  513. page1echarts01(param)
  514. .then((res) => {
  515. this.page1Char1.xAxis.data = res.data.map((item) => {
  516. return item.name;
  517. });
  518. this.page1Char1.series[0].data = res.data.map((item) => {
  519. return item.number;
  520. });
  521. //数量过小时隐藏滚动
  522. if (this.page1Char1.xAxis.data.length <= 5) {
  523. this.page1Char1.dataZoom[0].show = false;
  524. } else {
  525. this.page1Char1.dataZoom[0].show = true;
  526. }
  527. let charUuid = this.$refs.page1Char1.mid;
  528. this.$refs.page1Char1.intChar(charUuid);
  529. })
  530. .catch((err) => {
  531. console.log('getPage1echarts01 err', err);
  532. });
  533. },
  534. getPage1echarts02() {
  535. let param = {
  536. cityId: this.$store.state.addr.selectCity.areaId,
  537. countyId: this.$store.state.addr.selectDistrict.areaId,
  538. townId: this.$store.state.addr.selectStreet.areaId,
  539. courseId:this.$store.state.addr.selectProject.ProjectID,
  540. };
  541. // console.log('cityId',param.cityId);
  542. page1echarts02(param)
  543. .then((res) => {
  544. this.page1Char2.xAxis.data = res.data.map((item) => {
  545. return item.name;
  546. });
  547. this.page1Char2.series[0].data = res.data.map((item) => {
  548. return item.number;
  549. });
  550. //数量过小时隐藏滚动
  551. if (this.page1Char2.xAxis.data.length <= 5) {
  552. this.page1Char2.dataZoom[0].show = false;
  553. } else {
  554. this.page1Char2.dataZoom[0].show = true;
  555. }
  556. let charUuid = this.$refs.page1Char2.mid;
  557. this.$refs.page1Char2.intChar(charUuid);
  558. })
  559. .catch((err) => {
  560. console.log('getPage1echarts02 err', err);
  561. });
  562. },
  563. getRightScrollData() {
  564. let param = {
  565. smallNumber: this.xiaobaninput,
  566. cityId: this.$store.state.addr.selectCity.areaId,
  567. countyId: this.$store.state.addr.selectDistrict.areaId,
  568. townId: this.$store.state.addr.selectStreet.areaId,
  569. pageNum:1,
  570. pageSize:50,
  571. };
  572. rightScrollData(param)
  573. .then((res) => {
  574. // console.log('res',res.rows.length);
  575. // console.log('this.scrollBoardConfig',this.scrollBoardConfig);
  576. //当小班滚动数据少时重设参数
  577. // if(res.rows.length<=15){
  578. // this.scrollBoardConfig.rowNum = 5;
  579. // this.scrollBoardStyle.height = '25vh'
  580. // }
  581. this.scrollBoardConfig.data = [];
  582. res.rows.forEach((element) => {
  583. this.scrollBoardConfig.data.push([
  584. element.smallNumber,
  585. element.treeComp,
  586. element.perAcreStock + 'm³',
  587. element.landArea + '亩',
  588. element.id
  589. ]);
  590. });
  591. this.scrollBoardKey = Date.now();
  592. this.$refs.scrollBoard&&this.$refs.scrollBoard.updateRows(this.scrollBoardConfig.data);
  593. // console.log('this.scrollBoardConfig.data', this.scrollBoardConfig.data);
  594. // this.scrollBoardConfig = res.data;
  595. })
  596. .catch((err) => {
  597. console.log('scrollBoard err', err);
  598. });
  599. },
  600. getProjectScrollData() {
  601. let param = {
  602. courseName: this.projectInput,
  603. cityId: this.$store.state.addr.selectCity.areaId,
  604. countyId: this.$store.state.addr.selectDistrict.areaId,
  605. townId: this.$store.state.addr.selectStreet.areaId,
  606. pageNum:1,
  607. pageSize:50,
  608. };
  609. projectList(param)
  610. .then((res) => {
  611. // console.log('res',res.rows.length);
  612. // console.log('this.scrollBoardConfig',this.scrollBoardConfig);
  613. //当小班滚动数据少时重设参数
  614. // if(res.rows.length<=15){
  615. // this.scrollBoardConfig.rowNum = 5;
  616. // this.scrollBoardStyle.height = '25vh'
  617. // }
  618. let that = this;
  619. this.scrollPeojectConfig.data = [];
  620. res.rows.forEach((element) => {
  621. this.scrollPeojectConfig.data.push([
  622. element.courseName,
  623. element.smallClassStock + 'm³',
  624. element.landArea + '亩',
  625. element.classNumber,
  626. element.id
  627. ]);
  628. });
  629. this.scrollBoardKey = Date.now();
  630. this.$refs.scrollProjectBoard.updateRows(
  631. this.scrollPeojectConfig.data
  632. );
  633. //监听是否有选中项目,有的话高亮
  634. let timer1 = setInterval(function(){ // 每 10 毫秒检查一下 html 是否已存在
  635. let domId = that.$store.state.addr.selectProject.ProjectID;
  636. let dom = document.getElementById(that.$store.state.addr.selectProject.ProjectID);
  637. // console.log('dom',domId);
  638. if(domId&&dom){
  639. // console.log('dom',dom.classList);
  640. if(dom.classList.contains('active')==true){
  641. // clearInterval(timer1);
  642. }else{
  643. dom.classList.add('active');
  644. }
  645. }
  646. },500);
  647. // setTimeout(() => {
  648. // this.$store.state.addr.selectProject.ProjectID&&document.getElementById(this.$store.state.addr.selectProject.ProjectID).classList.add('active');
  649. // }, 2000);
  650. // console.log('this.scrollBoardConfig.data', this.scrollBoardConfig.data);
  651. // this.scrollBoardConfig = res.data;
  652. })
  653. .catch((err) => {
  654. console.log('scrollProjectBoard err', err);
  655. });
  656. },
  657. getBaseList() {
  658. let param = {
  659. baseName: this.baseinput,
  660. cityId: this.$store.state.addr.selectCity.areaId,
  661. countyId: this.$store.state.addr.selectDistrict.areaId,
  662. townId: this.$store.state.addr.selectStreet.areaId
  663. };
  664. baseList(param)
  665. .then((res) => {
  666. this.scrollBaseListConfig.data = [];
  667. res.rows.forEach((element) => {
  668. let cateInfoList = element.cateInfoList;
  669. let cropName = '';
  670. for (let index = 0; index < cateInfoList.length; index++) {
  671. const item = cateInfoList[index];
  672. cropName += item.cropName + ',';
  673. }
  674. cropName = cropName.substring(0, cropName.lastIndexOf(','));
  675. this.scrollBaseListConfig.data.push([
  676. element.baseName,
  677. cropName || '暂无作物',
  678. element.baseArea + '亩',
  679. element.id
  680. ]);
  681. });
  682. this.scrollBoardKey = Date.now();
  683. })
  684. .catch((err) => {
  685. console.log('echarts01 err', err);
  686. });
  687. },
  688. getEventList() {
  689. let param = {
  690. cityId: this.$store.state.addr.selectCity.areaId,
  691. countyId: this.$store.state.addr.selectDistrict.areaId,
  692. townId: this.$store.state.addr.selectStreet.areaId
  693. };
  694. eventList(param)
  695. .then((res) => {
  696. this.scrollEventConfig.data = [];
  697. res.rows.forEach((element) => {
  698. this.scrollEventConfig.data.push([
  699. element.createTime.slice(5, 16),
  700. element.townName + element.villageName,
  701. this.eventTypeFilter(element.eventType),
  702. // element.createBy,
  703. this.eventStateFilter(element.state),
  704. element.id
  705. ]);
  706. });
  707. this.scrollBoardKey = Date.now();
  708. })
  709. .catch((err) => {
  710. console.log('getEventList err', err);
  711. });
  712. },
  713. eventTypeFilter(e) {
  714. if (e == '1') {
  715. return '火灾';
  716. } else if (e == '2') {
  717. return '砍伐';
  718. } else if (e == '3') {
  719. return '病虫害';
  720. } else if (e == '4') {
  721. return '偷盗林木';
  722. }
  723. },
  724. eventStateFilter(e) {
  725. if (e == '0') {
  726. return '未反馈';
  727. } else if (e == '1') {
  728. return '已反馈';
  729. }
  730. },
  731. getAlarmData() {
  732. alarmDataApi()
  733. .then((res) => {
  734. // console.log('this.page',this.page);
  735. // console.log('res',res);
  736. this.alarmData = res.data;
  737. // console.log('alarmData.length',this.alarmData.length);
  738. })
  739. .catch((err) => {
  740. console.log('echarts01 err', err);
  741. });
  742. },
  743. getPage2numerical() {
  744. let param = {
  745. cityId: this.$store.state.addr.selectCity.areaId,
  746. countyId: this.$store.state.addr.selectDistrict.areaId,
  747. townId: this.$store.state.addr.selectStreet.areaId,
  748. smallNumber: this.xiaobaninput,
  749. courseId:this.$store.state.addr.selectProject.ProjectID,
  750. };
  751. page2numerical(param)
  752. .then((res) => {
  753. // console.log('res',res);
  754. this.page2numerical = res.data;
  755. })
  756. .catch((err) => {
  757. console.log('page2numerical err', err);
  758. });
  759. },
  760. getPage2echarts01() {
  761. let param = {
  762. smallNumber: this.xiaobaninput,
  763. cityId: this.$store.state.addr.selectCity.areaId,
  764. countyId: this.$store.state.addr.selectDistrict.areaId,
  765. townId: this.$store.state.addr.selectStreet.areaId,
  766. courseId:this.$store.state.addr.selectProject.ProjectID,
  767. };
  768. page2echarts01(param)
  769. .then((res) => {
  770. // console.log('res',res);
  771. this.page2Char1.series[0].data = [];
  772. this.page2Char1.series[0].data = res.data;
  773. let charUuid = this.$refs.page2Char1.mid;
  774. this.$refs.page2Char1.intChar(charUuid);
  775. })
  776. .catch((err) => {
  777. console.log('getPage2echarts01 err', err);
  778. });
  779. },
  780. getPage2echarts02() {
  781. let param = {
  782. smallNumber: this.xiaobaninput,
  783. cityId: this.$store.state.addr.selectCity.areaId,
  784. countyId: this.$store.state.addr.selectDistrict.areaId,
  785. townId: this.$store.state.addr.selectStreet.areaId,
  786. courseId:this.$store.state.addr.selectProject.ProjectID,
  787. };
  788. page2echarts02(param)
  789. .then((res) => {
  790. // console.log('res',res);
  791. // this.page2Char2 = res.data;
  792. // console.log('this.page2Char2.series', this.page2Char2.series);
  793. this.page2Char2.xAxis.data = [];
  794. this.page2Char2.series = [];
  795. const rows = res.data;
  796. // console.log(rows)
  797. // x坐标
  798. this.page2Char2.xAxis.data = rows.map((item) => {
  799. return item.smallNumber;
  800. });
  801. // console.log('x坐标', this.page2Char2.xAxis.data)
  802. // 获取所有项
  803. let seriesList = rows.map((item) => {
  804. return item.treeList || [];
  805. });
  806. // 数组扁平化
  807. seriesList = seriesList.flat();
  808. // 去重
  809. let obj = {};
  810. seriesList = seriesList.reduce((newArr, next) => {
  811. // console.log('page2Char2 seriesList',seriesList);
  812. // console.log('page2Char2 next',next);
  813. obj[next.name] ? '' : (obj[next.name] = true && newArr.push(next));
  814. return newArr;
  815. }, []);
  816. seriesList.sort((star, next) => {
  817. // 按name的指定顺序排序,不排序可以删掉
  818. var order = ['杉木', '马尾松', '软阔', '硬阔'];
  819. return order.indexOf(star.name) - order.indexOf(next.name);
  820. });
  821. seriesList = seriesList.map((item, index) => {
  822. let itemColor = null;
  823. if (item.name == '杉木' || item.name == '杉') {
  824. itemColor = colorArr[0];
  825. } else if (item.name == '马尾松' || item.name == '马') {
  826. itemColor = colorArr[1];
  827. } else if (item.name == '软阔' || item.name == '软') {
  828. itemColor = colorArr[2];
  829. } else if (item.name == '硬阔' || item.name == '硬') {
  830. itemColor = colorArr[3];
  831. }
  832. return {
  833. name: item.name,
  834. type: 'bar',
  835. stack: 'total',
  836. label: {
  837. show: false
  838. },
  839. emphasis: {
  840. focus: 'series'
  841. },
  842. data: [],
  843. itemStyle: {
  844. normal: { color: itemColor || 'auto' }
  845. }
  846. };
  847. });
  848. // console.log(seriesList)
  849. rows.forEach((item) => {
  850. seriesList.forEach((jtem, index) => {
  851. let num = 0;
  852. item.treeList &&
  853. item.treeList.map((ktem) => {
  854. if (ktem.name.indexOf(jtem.name) > -1) {
  855. num = ktem.value;
  856. }
  857. });
  858. seriesList[index].data.push(num);
  859. });
  860. });
  861. // console.log('page2echarts02 seriesList',seriesList)
  862. this.page2Char2.series = seriesList;
  863. //数量过小时隐藏滚动
  864. if (this.page2Char2.xAxis.data.length <= 5) {
  865. this.page2Char2.dataZoom[0].show = false;
  866. } else {
  867. this.page2Char2.dataZoom[0].show = true;
  868. }
  869. let charUuid = this.$refs.page2Char2.mid;
  870. this.$refs.page2Char2.intChar(charUuid);
  871. })
  872. .catch((err) => {
  873. console.log('getPage2echarts02 err', err);
  874. });
  875. },
  876. getPage2echarts03() {
  877. let param = {
  878. smallNumber: this.xiaobaninput,
  879. cityId: this.$store.state.addr.selectCity.areaId,
  880. countyId: this.$store.state.addr.selectDistrict.areaId,
  881. townId: this.$store.state.addr.selectStreet.areaId,
  882. courseId:this.$store.state.addr.selectProject.ProjectID,
  883. };
  884. page2echarts03(param)
  885. .then((res) => {
  886. // console.log('res',res);
  887. // this.page2Char2 = res.data;
  888. // console.log('this.page2Char2.series', this.page2Char2.series);
  889. this.page2Char3.xAxis.data = [];
  890. this.page2Char3.series = [];
  891. const rows = res.data;
  892. // console.log(rows)
  893. // x坐标
  894. this.page2Char3.xAxis.data = rows.map((item) => {
  895. return item.smallNumber;
  896. });
  897. // console.log('x坐标', this.page2Char2.xAxis.data)
  898. // 获取所有项
  899. let seriesList = rows.map((item) => {
  900. return item.treeList || [];
  901. });
  902. // 数组扁平化
  903. seriesList = seriesList.flat();
  904. // 去重
  905. let obj = {};
  906. seriesList = seriesList.reduce((newArr, next) => {
  907. obj[next.name] ? '' : (obj[next.name] = true && newArr.push(next));
  908. return newArr;
  909. }, []);
  910. // console.log('seriesList',seriesList);
  911. seriesList.sort((star, next) => {
  912. // 按name的指定顺序排序,不排序可以删掉
  913. var order = ['杉木', '马尾松', '软阔', '硬阔'];
  914. return order.indexOf(star.name) - order.indexOf(next.name);
  915. });
  916. seriesList = seriesList.map((item, index) => {
  917. let itemColor = null;
  918. if (item.name == '杉木' || item.name == '杉') {
  919. itemColor = colorArr[0];
  920. } else if (item.name == '马尾松' || item.name == '马') {
  921. itemColor = colorArr[1];
  922. } else if (item.name == '软阔' || item.name == '软') {
  923. itemColor = colorArr[2];
  924. } else if (item.name == '硬阔' || item.name == '硬') {
  925. itemColor = colorArr[3];
  926. }
  927. return {
  928. name: item.name,
  929. type: 'bar',
  930. stack: 'total',
  931. label: {
  932. show: false
  933. },
  934. emphasis: {
  935. focus: 'series'
  936. },
  937. data: [],
  938. itemStyle: {
  939. normal: { color: itemColor || 'auto' }
  940. }
  941. };
  942. });
  943. // console.log(seriesList)
  944. rows.forEach((item) => {
  945. seriesList.forEach((jtem, index) => {
  946. let num = 0;
  947. item.treeList &&
  948. item.treeList.map((ktem) => {
  949. if (ktem.name.indexOf(jtem.name) > -1) {
  950. num = ktem.value;
  951. }
  952. });
  953. seriesList[index].data.push(num);
  954. });
  955. });
  956. // console.log(seriesList)
  957. this.page2Char3.series = seriesList;
  958. //数量过小时隐藏滚动
  959. if (this.page2Char3.xAxis.data.length <= 5) {
  960. this.page2Char3.dataZoom[0].show = false;
  961. } else {
  962. this.page2Char3.dataZoom[0].show = true;
  963. }
  964. let charUuid = this.$refs.page2Char3.mid;
  965. this.$refs.page2Char3.intChar(charUuid);
  966. })
  967. .catch((err) => {
  968. console.log('getPage2echarts03 err', err);
  969. });
  970. },
  971. getPage5numerical() {
  972. let param = {
  973. cityId: this.$store.state.addr.selectCity.areaId,
  974. countyId: this.$store.state.addr.selectDistrict.areaId,
  975. townId: this.$store.state.addr.selectStreet.areaId
  976. };
  977. page5numerical(param)
  978. .then((res) => {
  979. // console.log('res',res);
  980. this.page5numerical = res.data;
  981. })
  982. .catch((err) => {
  983. console.log('echarts01 err', err);
  984. });
  985. },
  986. getTypeSlideData() {
  987. let param = {
  988. cityId: this.$store.state.addr.selectCity.areaId,
  989. countyId: this.$store.state.addr.selectDistrict.areaId,
  990. townId: this.$store.state.addr.selectStreet.areaId
  991. };
  992. typeSlideApi(param)
  993. .then((res) => {
  994. this.typeSlideData = sliceArray(res.data, 3);
  995. // console.log(' this.typeSlideData', this.typeSlideData);
  996. })
  997. .catch((err) => {
  998. console.log('getTypeSlideData err', err);
  999. });
  1000. },
  1001. getPage5echarts01() {
  1002. let param = {
  1003. cityId: this.$store.state.addr.selectCity.areaId,
  1004. countyId: this.$store.state.addr.selectDistrict.areaId,
  1005. townId: this.$store.state.addr.selectStreet.areaId
  1006. };
  1007. page5echarts01(param)
  1008. .then((res) => {
  1009. // console.log('res',res);
  1010. // this.page5Char1 = res.data;
  1011. this.page5Char1.xAxis.data = res.data.map((item) => {
  1012. return item.baseName;
  1013. });
  1014. this.page5Char1.series[0].data = res.data.map((item) => {
  1015. return item.baseArea;
  1016. });
  1017. //数量过小时隐藏滚动
  1018. if (this.page5Char1.xAxis.data.length <= 5) {
  1019. this.page5Char1.dataZoom[0].show = false;
  1020. } else {
  1021. this.page5Char1.dataZoom[0].show = true;
  1022. }
  1023. let charUuid = this.$refs.page5Char1.mid;
  1024. this.$refs.page5Char1.intChar(charUuid);
  1025. })
  1026. .catch((err) => {
  1027. console.log('getPage5echarts01 err', err);
  1028. });
  1029. },
  1030. getPage5echarts02() {
  1031. let param = {
  1032. cityId: this.$store.state.addr.selectCity.areaId,
  1033. countyId: this.$store.state.addr.selectDistrict.areaId,
  1034. townId: this.$store.state.addr.selectStreet.areaId
  1035. };
  1036. page5echarts02(param)
  1037. .then((res) => {
  1038. // console.log('res',res);
  1039. // this.page5Char2 = res.data;
  1040. this.page5Char2.xAxis.data = res.data.map((item) => {
  1041. return item.name;
  1042. });
  1043. this.page5Char2.series[0].data = res.data.map((item) => {
  1044. return item.number;
  1045. });
  1046. //数量过小时隐藏滚动
  1047. if (this.page5Char2.xAxis.data.length <= 5) {
  1048. this.page5Char2.dataZoom[0].show = false;
  1049. } else {
  1050. this.page5Char2.dataZoom[0].show = true;
  1051. }
  1052. let charUuid = this.$refs.page5Char2.mid;
  1053. this.$refs.page5Char2.intChar(charUuid);
  1054. })
  1055. .catch((err) => {
  1056. console.log('getPage5echarts02 err', err);
  1057. });
  1058. },
  1059. getPage6numerical() {
  1060. let param = {
  1061. cityId: this.$store.state.addr.selectCity.areaId,
  1062. countyId: this.$store.state.addr.selectDistrict.areaId,
  1063. townId: this.$store.state.addr.selectStreet.areaId
  1064. };
  1065. //第一屏统计
  1066. page6numerical(param)
  1067. .then((res) => {
  1068. // console.log('res',res);
  1069. this.page6numerical = res.data;
  1070. })
  1071. .catch((err) => {
  1072. console.log('getPage6numerical err', err);
  1073. });
  1074. },
  1075. getPage6echarts01() {
  1076. let param = {
  1077. cityId: this.$store.state.addr.selectCity.areaId,
  1078. countyId: this.$store.state.addr.selectDistrict.areaId,
  1079. townId: this.$store.state.addr.selectStreet.areaId
  1080. };
  1081. page6echarts01(param)
  1082. .then((res) => {
  1083. // console.log('res',res);
  1084. // this.page6Char1 = res.data;
  1085. // this.page6Char1.xAxis[0].data = [];
  1086. // this.page6Char1.series[0].data = [];
  1087. // this.page6Char1.series[1].data = [];
  1088. // this.page6Char1.series[2].data = [];
  1089. // res.data &&
  1090. // res.data.forEach((element) => {
  1091. // this.page6Char1.xAxis[0].data.push(element.villageName);
  1092. // this.page6Char1.series[0].data.push(element.fireCount);
  1093. // this.page6Char1.series[1].data.push(element.cutCount);
  1094. // this.page6Char1.series[2].data.push(element.pestCount);
  1095. // });
  1096. this.page6Char1.xAxis.data = [];
  1097. this.page6Char1.series[0].data = [];
  1098. this.page6Char1.series[1].data = [];
  1099. this.page6Char1.series[2].data = [];
  1100. this.page6Char1.series[3].data = [];
  1101. const rows = res.data;
  1102. // console.log(rows)
  1103. // x坐标
  1104. this.page6Char1.xAxis.data = rows.map((item) => {
  1105. return item.villageName;
  1106. });
  1107. rows.forEach((element) => {
  1108. this.page6Char1.series[0].data.push(element.pestCount);
  1109. this.page6Char1.series[1].data.push(element.fireCount);
  1110. this.page6Char1.series[2].data.push(element.cutCount);
  1111. this.page6Char1.series[3].data.push(element.stealCount);
  1112. });
  1113. // console.log('x坐标', this.page6Char1.xAxis.data)
  1114. //数量过小时隐藏滚动
  1115. if (this.page6Char1.xAxis.data.length <= 5) {
  1116. this.page6Char1.dataZoom[0].show = false;
  1117. } else {
  1118. this.page6Char1.dataZoom[0].show = true;
  1119. }
  1120. let charUuid = this.$refs.page6Char1.mid;
  1121. this.$refs.page6Char1.intChar(charUuid);
  1122. })
  1123. .catch((err) => {
  1124. console.log('getPage6echarts01 err', err);
  1125. });
  1126. },
  1127. getPage6echarts02() {
  1128. let param = {
  1129. cityId: this.$store.state.addr.selectCity.areaId,
  1130. countyId: this.$store.state.addr.selectDistrict.areaId,
  1131. townId: this.$store.state.addr.selectStreet.areaId
  1132. };
  1133. page6echarts02(param)
  1134. .then((res) => {
  1135. console.log('page6echarts02 res', res);
  1136. const rows = res.data;
  1137. // console.log(rows)
  1138. // x坐标
  1139. this.page6Char2.xAxis.data = [];
  1140. this.page6Char2.series[0].data = [];
  1141. this.page6Char2.series[1].data = [];
  1142. this.page6Char2.series[2].data = [];
  1143. this.page6Char2.xAxis.data = rows.map((item) => {
  1144. return item.month;
  1145. });
  1146. rows.forEach((element) => {
  1147. // console.log('element',element.eventList);
  1148. this.page6Char2.series[0].data.push(element.eventList[0].value);
  1149. this.page6Char2.series[1].data.push(element.eventList[1].value);
  1150. this.page6Char2.series[2].data.push(element.eventList[2].value);
  1151. });
  1152. console.log('this.page6Char2.series', this.page6Char2.series);
  1153. let charUuid = this.$refs.page6Char2.mid;
  1154. this.$refs.page6Char2.intChar(charUuid);
  1155. })
  1156. .catch((err) => {
  1157. console.log('page6echarts02 err', err);
  1158. });
  1159. },
  1160. xiaobansearch() {
  1161. // console.log('xiaobansearch');
  1162. this.getRightScrollData();
  1163. this.getPageData();
  1164. },
  1165. projectSearch() {
  1166. // console.log('projectSearch');
  1167. this.getProjectScrollData();
  1168. // this.getPageData();
  1169. },
  1170. basesearch() {
  1171. // console.log('xiaobansearch');
  1172. this.getBaseList();
  1173. this.getPageData();
  1174. },
  1175. scrollBoardClick(e) {
  1176. let param = {
  1177. id: e.row[4]
  1178. };
  1179. smallClassDetail(param).then((res) => {
  1180. this.changeSearchSmallClass(res.data);
  1181. console.log(res.data);
  1182. this.alarData = res.data;
  1183. // if (this.$store.state.addr.mapLevel == 'city') {
  1184. // this.jumpDistrict();
  1185. // } else {
  1186. // this.vuexCityList.forEach((element) => {
  1187. // if (res.data.cityId === element.areaId) {
  1188. // this.changeSelectCity({
  1189. // value: element.areaCode,
  1190. // label: res.data.cityName,
  1191. // areaId: element.areaId
  1192. // });
  1193. // this.$store.dispatch('searchArea', {
  1194. // parentId: element.areaCode.substring(0, 6),
  1195. // name: res.data.cityName,
  1196. // mapLevel: 'city'
  1197. // });
  1198. // }
  1199. // });
  1200. // }
  1201. });
  1202. },
  1203. removeAllClass(className) {
  1204. //找到所有包含className的结点
  1205. let nodeList = document.querySelectorAll(
  1206. `.dv-scroll-board .${className}`
  1207. );
  1208. // let nodeList = document.getElementsByClassName('row-item');
  1209. //删除这些标签对应的class
  1210. Array.prototype.forEach.call(nodeList, (el) => {
  1211. el&&el.classList.remove(className);
  1212. });
  1213. },
  1214. scrollProjectClick(e) {
  1215. console.log('scrollProjectClick',e);
  1216. // 点击添加class
  1217. // let removeAllClass = (className)=>{
  1218. // //找到所有包含className的结点
  1219. // let nodeList = document.querySelectorAll(`.dv-scroll-board .${className}`);
  1220. // // let nodeList = document.getElementsByClassName('row-item');
  1221. // //删除这些标签对应的class
  1222. // Array.prototype.forEach.call(nodeList,(el)=>{
  1223. // el.classList.remove(className)
  1224. // })
  1225. // }
  1226. let proClass = document.getElementsByClassName('row-item');
  1227. // proClass[e.rowIndex].style.background = 'rgb(4, 145, 110)';
  1228. this.removeAllClass('active');
  1229. // console.log('proClass',proClass);
  1230. // proClass[e.rowIndex]&&proClass[e.rowIndex].classList.add('active');
  1231. let rowId = e.row[4];
  1232. this.changeSelectProject({ProjectID:rowId,ProjectName:e.row[0]});
  1233. document.getElementById(rowId).classList.add('active');
  1234. let param = {
  1235. courseId: rowId
  1236. // pageNum: 1,
  1237. // pageSize: 20
  1238. };
  1239. projectSmallClass(param).then((res) => {
  1240. if (res.code == 200) {
  1241. this.getProjectSmallClassMap(res.rows);
  1242. }
  1243. });
  1244. },
  1245. jumpDistrict() {
  1246. if (this.vuexDistrictList) {
  1247. this.vuexDistrictList.forEach((element) => {
  1248. if (this.alarData.countyId === element.areaId) {
  1249. this.changeSelectDistrict({
  1250. value: element.areaCode,
  1251. label: this.alarData.cityName,
  1252. areaId: element.areaId
  1253. });
  1254. this.$store.dispatch('searchArea', {
  1255. parentId: element.areaCode.substring(0, 6),
  1256. name: element.areaName,
  1257. mapLevel: 'district'
  1258. });
  1259. }
  1260. });
  1261. }
  1262. },
  1263. scrollOut(e) {
  1264. // console.log(e);
  1265. this.changeSearchSmallClass({ name: false });
  1266. },
  1267. scrollOutPro(e) {
  1268. // let proClass = document.getElementsByClassName('row-item')
  1269. // proClass[e.rowIndex].style.background = '';
  1270. },
  1271. scrollBaseListClick(e) {
  1272. console.log('scrollBaseListClick', e);
  1273. let param = {
  1274. baseId: e.row[3]
  1275. };
  1276. financeBaseDetail(param).then((res) => {
  1277. this.changeBaseDetail(res.data);
  1278. });
  1279. },
  1280. baseListClick() {
  1281. this.changeBaseDetail({ name: false });
  1282. },
  1283. scrollEventClick(e) {
  1284. let param = {
  1285. id: e.row[4]
  1286. };
  1287. eventDetail(param).then((res) => {
  1288. this.changeEvenData(res.data);
  1289. });
  1290. },
  1291. scrollEventOut() {
  1292. this.changeEvenData({ name: false });
  1293. },
  1294. toggleShowScrollBoard() {
  1295. this.showScrollBoard = !this.showScrollBoard;
  1296. },
  1297. tabLink(e) {
  1298. this.cur = e;
  1299. if (this.cur == '1') {
  1300. this.removeAllClass('active');
  1301. }
  1302. },
  1303. classFunc(index) {
  1304. if (this.cur == index) {
  1305. return `active active${index}`;
  1306. }
  1307. }
  1308. }
  1309. };
  1310. </script>
  1311. <style lang='scss' scoped>
  1312. @import url(./index.scss);
  1313. .tab-box {
  1314. // background-color: rgba(1, 33, 35, 0.7);
  1315. // background: linear-gradient(90deg, rgba(0,99,113,0.9) 0%, #00ADAF 54%, rgba(0,50,57,0.9) 100%);
  1316. background-color: rgba(0, 161, 173, 0.2);
  1317. box-shadow: inset 0px -2px 9px -3px rgba(0, 250, 253, 0.4);
  1318. width: 100%;
  1319. .tab-btn {
  1320. float: left;
  1321. width: 148px;
  1322. height: 46px;
  1323. line-height: 46px;
  1324. text-align: center;
  1325. color: rgba(255, 255, 255, 0.6);
  1326. &:first-of-type {
  1327. text-indent: -10px;
  1328. }
  1329. cursor: pointer;
  1330. &.active0 {
  1331. background: url(../assets/img/tab-btn-first.png) no-repeat;
  1332. }
  1333. &.active1 {
  1334. background: url(../assets/img/tab-btn-center.png) no-repeat;
  1335. transform: translateX(-22px);
  1336. }
  1337. &.active {
  1338. background-size: 100%;
  1339. color: #00fafd;
  1340. }
  1341. .tab-span {
  1342. display: inline-block;
  1343. }
  1344. }
  1345. }
  1346. .tab-class-search {
  1347. // display: flex;
  1348. height: 40px;
  1349. width: 100%;
  1350. align-items: center;
  1351. margin: 0 15px;
  1352. }
  1353. /deep/ .row-item {
  1354. line-height: normal !important;
  1355. align-items: center;
  1356. }
  1357. /deep/ .dv-scroll-board .rows .ceil {
  1358. white-space: normal;
  1359. overflow: unset;
  1360. text-overflow: unset;
  1361. display: grid;
  1362. height: 100%;
  1363. align-items: center;
  1364. }
  1365. .right_xiaoban {
  1366. background-color: rgba(1, 33, 35, 0.7);
  1367. display: flex;
  1368. flex-direction: column;
  1369. /* justify-content: right; */
  1370. // width: 59%;
  1371. float: right;
  1372. }
  1373. .rowClass {
  1374. box-shadow: inset 0px 0px 31px 1px rgba(0, 250, 253, 0.4);
  1375. border-radius: 0px 0px 0px 0px;
  1376. opacity: 1;
  1377. border: 1px solid rgba(0, 250, 253, 1);
  1378. background: #04916e;
  1379. }
  1380. </style>