index.vue 32 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827828829830831832833834835836837838839840841842843844845846847848849850851852853854855856857858859860861862863864865866867868869870871872873874875876877878879880881882883884885886887888889890891892893894895896897898899900901902903904905906907908909910911912913914915916917918919920921922923924925926927928929930931932933934935936937938939940941942943944945946947948949950951952953954955956957958959960961962963964965966967968969970971972973974975976977978979980981982983984985986987988989990991992993994995
  1. <template>
  2. <div class="Vbox">
  3. <div class="head">
  4. <div class="VisTitle"></div>
  5. <div class="Vgradation">
  6. <div class="tab" v-for="(item, index) in gradationMun" :key="index" :class="{ active: activeTab === index }"
  7. @click="setActiveTab(index, item)">
  8. {{ item.name }}
  9. </div>
  10. </div>
  11. </div>
  12. <div class="container">
  13. <div class="center">
  14. <div ref="mapContainer" class="allmap"></div>
  15. </div>
  16. <div class="left">
  17. <div class="leftOneBox">
  18. <div class="leftOBTitle">评价分析</div>
  19. <div class="leftOBContent">
  20. <PieEcharts :message="PieChartData"></PieEcharts>
  21. </div>
  22. </div>
  23. <div class="leftTwoBox">
  24. <div class="leftGDPTitle">生产总值</div>
  25. <div class="leftGDPContent">
  26. <baseEcharts></baseEcharts>
  27. </div>
  28. </div>
  29. <div class="leftThreeBox">
  30. <div class="leftTaxationTitle">税收TOP10</div>
  31. <el-scrollbar height="calc(100% - 40px)">
  32. <div class="leftTaxationContent">
  33. <div class="LTCKing" v-for="(item, index) in RanKingData" :key="index">
  34. <div class="ranking">
  35. <img :src=item.mig alt="">
  36. </div>
  37. <div class="companyName">{{ item.name }}</div>
  38. <div class="companyValue">65.21万元</div>
  39. </div>
  40. </div>
  41. </el-scrollbar>
  42. </div>
  43. <!-- <div>2</div> -->
  44. </div>
  45. <div class="boxBottom">
  46. <div class="parkLoan">
  47. <div class="PCFLTitle">园区特色融资贷款</div>
  48. <div class="PCFLContent">
  49. <div class="PCFLNumber">
  50. <div class="RPCBData">
  51. <div class="RPCBDNumber">1000</div>
  52. <div class="RPCBDName">潇湘财银贷</div>
  53. </div>
  54. <div class="RPCBData">
  55. <div class="RPCBDNumber">2000</div>
  56. <div class="RPCBDName">惠园贷</div>
  57. </div>
  58. <div class="RPCBData">
  59. <div class="RPCBDNumber">1500</div>
  60. <div class="RPCBDName">科技贷</div>
  61. </div>
  62. </div>
  63. <div class="PCFLImg">
  64. <div><img src='../../assets/visualizationimg/onepick.png' alt=""></div>
  65. <div><img src='../../assets/visualizationimg/twopack.png' alt=""></div>
  66. <div><img src='../../assets/visualizationimg/threepick.png' alt=""></div>
  67. </div>
  68. </div>
  69. </div>
  70. <div class="boxBttTwo">
  71. <div class="businessManagTitle">企业管理</div>
  72. <div class="businessManagContent">
  73. <div class="RPCBox" v-for="(item, index) in business" :key="index">
  74. <div class="RPCBImg">
  75. <img :src=item.img alt="">
  76. </div>
  77. <div class="RPCBData">
  78. <div class="RPCBDName">{{ item.title }}</div>
  79. <div class="RPCBDNumber">{{ item.value }}</div>
  80. <div class="RPCBDRatio">{{ item.ratio }}</div>
  81. </div>
  82. </div>
  83. </div>
  84. </div>
  85. </div>
  86. <div class="right">
  87. <div class="rightParkBox">
  88. <div class="rightParkTtile">园区概况</div>
  89. <div class="rightParkContent">
  90. <div class="RPCBox" v-for="(item, index) in parkData" :key="index">
  91. <div class="RPCBImg">
  92. <img :src=item.img alt="">
  93. </div>
  94. <div class="RPCBData">
  95. <div class="RPCBDNumber">{{ item.value }}</div>
  96. <div class="RPCBDName">{{ item.title }}</div>
  97. </div>
  98. </div>
  99. </div>
  100. </div>
  101. <div class="rightIndustryComplianceBox">
  102. <div class="RICBTitle">行业合规</div>
  103. <div class="RICBTContent">
  104. <div class="RICBTCBoxOne">
  105. <div class="" style="
  106. margin-left: 20px;">
  107. <div class="proportion">70%</div>
  108. <div class="administrativeS">行政处罚</div>
  109. </div>
  110. <div class="" style="
  111. margin-left: 20px;">
  112. <div class="proportion">119</div>
  113. <div class="administrativeS">企业数量</div>
  114. </div>
  115. <div class="" style="
  116. margin-left: 20px;">
  117. <div class="proportion">70</div>
  118. <div class="administrativeS">被处罚企业数</div>
  119. </div>
  120. <div class="" style="
  121. margin-left: 20px;">
  122. <div class="proportion">20</div>
  123. <div class="administrativeS">行政处罚条数</div>
  124. </div>
  125. </div>
  126. <div class="RICBTCBoxOne">
  127. <div class="" style="
  128. margin-left: 20px;">
  129. <div class="proportion">70%</div>
  130. <div class="administrativeS">行政处罚</div>
  131. </div>
  132. <div class="" style="
  133. margin-left: 20px;">
  134. <div class="proportion">119</div>
  135. <div class="administrativeS">企业数量</div>
  136. </div>
  137. <div class="" style="
  138. margin-left: 20px;">
  139. <div class="proportion">70</div>
  140. <div class="administrativeS">被处罚企业数</div>
  141. </div>
  142. <div class="" style="
  143. margin-left: 20px;">
  144. <div class="proportion">20</div>
  145. <div class="administrativeS">行政处罚条数</div>
  146. </div>
  147. </div>
  148. <!-- <div class="RICBTCBoxTwo"></div> -->
  149. </div>
  150. </div>
  151. <div class="leftOneBox">
  152. <div class="leftOBTitle">风险预警</div>
  153. <div class="leftOBContent">
  154. <baseEcharts></baseEcharts>
  155. </div>
  156. </div>
  157. </div>
  158. </div>
  159. </div>
  160. </template>
  161. <script setup>
  162. import { ref, onMounted } from 'vue';
  163. import baseEcharts from '@/components/baseEcharts/index.vue'
  164. import PieEcharts from '@/components/baseEcharts/pieChart.vue'
  165. import {
  166. getClassificationValueData
  167. , getLngLatValueData
  168. , getCreditScoreList
  169. , getTrossDomesticProduct
  170. , getTopTenTaxation
  171. , getXiaoxiangCaiyinLoan
  172. , getTechnologyLoan
  173. , getHuiyuanLoan
  174. , getNumberOfEnterprises
  175. , getListedCompanies
  176. , getHighTechEnterprises
  177. , getTechnologySmallAndmediumSizedEnterprises
  178. , getPatentInformation
  179. , getAdministrativeSanction
  180. , getAdministrativeEnforcement
  181. , getBusinessAdnormalities
  182. , getDishonestDebtor
  183. , getSocialSecurity
  184. } from '@/api/visualization/index'
  185. const mapContainer = ref(null);
  186. let map = null;
  187. let marker = null
  188. const data = reactive({
  189. form: {},
  190. queryParams: {
  191. pageNum: 1,
  192. pageSize: 100000,
  193. unifiedSocialCreditCode: '',
  194. condition: "",
  195. grade: null,
  196. total: null
  197. },
  198. })
  199. const { queryParams } = toRefs(data)
  200. import one from '@/assets/visualizationimg/one.png';
  201. import two from '@/assets/visualizationimg/two.png';
  202. import three from '@/assets/visualizationimg/three.png';
  203. import four from '@/assets/visualizationimg/four.png';
  204. import five from '@/assets/visualizationimg/five.png';
  205. import six from '@/assets/visualizationimg/six.png';
  206. import seven from '@/assets/visualizationimg/seven.png';
  207. import eight from '@/assets/visualizationimg/eight.png';
  208. import nine from '@/assets/visualizationimg/nine.png';
  209. import ten from '@/assets/visualizationimg/ten.png';
  210. import parkOne from '@/assets/visualizationimg/parkOne.png';
  211. import parktwo from '@/assets/visualizationimg/parktwo.png';
  212. import parkthree from '@/assets/visualizationimg/parkthree.png';
  213. import parkfour from '@/assets/visualizationimg/parkfour.png';
  214. import parkfive from '@/assets/visualizationimg/parkfive.png';
  215. import parksix from '@/assets/visualizationimg/parksix.png';
  216. const parkData = [{
  217. title: '入驻企业',
  218. value: 123,
  219. img: parkOne
  220. }, {
  221. title: '上市企业',
  222. value: 400,
  223. img: parktwo
  224. }, {
  225. title: '高新技术企业',
  226. value: 12,
  227. img: parkthree
  228. }, {
  229. title: '科技型中小企业',
  230. value: 900,
  231. img: parkfour
  232. }, {
  233. title: '占地面积',
  234. value: 12,
  235. img: parkfive
  236. }, {
  237. title: '园区企业专利数',
  238. value: 11,
  239. img: parksix
  240. }]
  241. const RanKingData = [{
  242. name: '湖南骏泰新材料科技有限责任公司',
  243. value: '66.25',
  244. mig: one
  245. }, {
  246. name: '湖南正清制药集团股份有限公司',
  247. value: '66.25',
  248. mig: two
  249. }, {
  250. name: '湖南兴怀新材料科技有限公司',
  251. value: '66.25',
  252. mig: three
  253. }, {
  254. name: '金升阳(怀化)科技有限公司',
  255. value: '66.25',
  256. mig: four
  257. }, {
  258. name: '怀化恒枫饮料有限公司',
  259. value: '66.25',
  260. mig: five
  261. }, {
  262. name: '怀化金弘再生资源有限公司',
  263. value: '66.25',
  264. mig: six
  265. }, {
  266. name: '湖南骏泰生物质发电有限责任公司',
  267. value: '66.25',
  268. mig: seven
  269. }, {
  270. name: '湖南红宝科技开发有限公司',
  271. value: '',
  272. mig: eight
  273. }, {
  274. name: '湖南诚路管业科技有限公司',
  275. value: '66.25',
  276. mig: nine
  277. }, {
  278. name: '湖南湘鹤集团电缆科技股份有限公司',
  279. value: '66.25',
  280. mig: ten
  281. }]
  282. const business = [{
  283. title: '园区纳税企业',
  284. value: 81,
  285. ratio: '70%',
  286. state: 1,
  287. img: parkOne
  288. }, {
  289. title: '园区缴纳社保企业',
  290. value: 91,
  291. ratio: '80%',
  292. state: 0,
  293. img: parktwo
  294. }]
  295. const gradationMun = [{
  296. name: "3A级企业",
  297. state: 3,
  298. type: 'AAA'
  299. }, {
  300. name: "2A级企业",
  301. state: 2,
  302. type: 'AA'
  303. }, {
  304. name: "1A级企业",
  305. state: 1,
  306. type: 'A'
  307. }, {
  308. name: "B级企业",
  309. state: 4,
  310. type: 'B'
  311. }, {
  312. name: "C级企业",
  313. state: 5,
  314. type: 'C'
  315. }, {
  316. name: "D级企业",
  317. state: 6,
  318. type: 'D'
  319. }, {
  320. name: "全部企业",
  321. state: 0,
  322. type: ''
  323. }]
  324. const activeTab = ref(6); // 默认激活第一个tab
  325. // const resultArray = ref;
  326. onMounted(async () => {
  327. // 初始化地图
  328. map = new BMapGL.Map(mapContainer.value);
  329. var point = new BMapGL.Point(109.94211746215822, 27.377939585109653);
  330. map.centerAndZoom(point, 15); // 初始化地图,设置中心点坐标和地图级别
  331. map.enableScrollWheelZoom(true);
  332. map.setMinZoom(15);
  333. map.setMaxZoom(19);
  334. map.setMapStyleV2({
  335. styleId: '62ce43ad2a1362c23e612b783d7406e7'
  336. });
  337. map.setTilt(50);
  338. map.disableInertialDragging();
  339. // 定义允许的拖拽范围
  340. const allowedBounds = new BMapGL.Bounds(
  341. new BMapGL.Point(109.90207672119142, 27.365250190931242), // 西南角
  342. new BMapGL.Point(109.97014045715333, 27.422461872492594) // 东北角
  343. );
  344. // 监听拖拽结束事件
  345. map.addEventListener('dragend', function () {
  346. // 获取当前地图的中心点
  347. const center = map.getCenter();
  348. // 检查中心点是否在允许的范围内
  349. if (!allowedBounds.containsPoint(center)) {
  350. // 如果不在范围内,将地图中心调整回允许范围的中心点
  351. const adjustCenter = allowedBounds.getCenter();
  352. map.panTo(adjustCenter);
  353. }
  354. });
  355. // 导入JSON文件
  356. try {
  357. var path = [];
  358. // await Promise.all(
  359. // 假设你有一个json文件,里面包含了管辖区域的边界数据
  360. fetch('jwdata.json').then(response => response.json()).then(data => {
  361. var points = data
  362. for (var j = 0; j < points.length; j++) {
  363. var lng = points[j].split(',')[0];
  364. var lat = points[j].split(',')[1];
  365. path.push(new BMapGL.Point(lng, lat));
  366. }
  367. var prism = new BMapGL.Prism(path, 10, {
  368. topFillColor: '#5679ea',
  369. topFillOpacity: 0.5,
  370. sideFillColor: '#5679ea',
  371. sideFillOpacity: 0.5
  372. });
  373. map.addOverlay(prism);
  374. })
  375. } catch (error) {
  376. console.error('Error loading JSON data:', error);
  377. }
  378. });
  379. // );
  380. /** 查询用户列表 */
  381. function getClassificationList() {
  382. getLngLatValueData(queryParams.value).then((res) => {
  383. const LNgLatData = res.data;
  384. // console.log("外层", res.data)
  385. getclassData(LNgLatData)
  386. })
  387. }
  388. function getclassData(lngLat) {
  389. getClassificationValueData(queryParams.value).then((res) => {
  390. const array1 = lngLat;
  391. const array2 = res.data.result;
  392. const mergedData = {};
  393. array1.forEach(item => {
  394. mergedData[item.unifiedSocialCreditCode] = { ...item };
  395. });
  396. array2.forEach(item => {
  397. if (mergedData[item.unifiedSocialCreditCode]) {
  398. mergedData[item.unifiedSocialCreditCode] = { ...mergedData[item.unifiedSocialCreditCode], ...item };
  399. } else {
  400. mergedData[item.unifiedSocialCreditCode] = { ...item };
  401. }
  402. });
  403. const resultArray = Object.values(mergedData);
  404. resultArray.forEach(item => {
  405. if (item.grade) {
  406. const markers = new BMapGL.Point(item.longitude, item.latitude)
  407. marker = new BMapGL.Marker(markers)
  408. map.addOverlay(marker);
  409. // 创建信息窗口
  410. var opts = {
  411. width: 300,
  412. // height: 100,
  413. title: item.enterpriseName
  414. };
  415. var infoWindow = new BMapGL.InfoWindow("等级:" + item.grade + "<br/>"
  416. + "统一信用代码:" + item.unifiedSocialCreditCode + "<br/>"
  417. + "总分:" + item.total + "<br/>"
  418. + "负责人:" + item.enterpriseLeader + "<br/>"
  419. + "联系方式:" + item.contactPhone, opts);
  420. // 点标记添加点击事件
  421. marker.addEventListener('click', function () {
  422. map.openInfoWindow(infoWindow, markers); // 开启信息窗口
  423. });
  424. }
  425. })
  426. })
  427. }
  428. const setActiveTab = (index, value) => {
  429. //获取地图上所有的覆盖物
  430. var allOverlay = map.getOverlays();
  431. for (var i = 0; i < allOverlay.length; i++) {
  432. console.log(11, allOverlay[i].toString())
  433. if (allOverlay[i].toString() == "Marker") {
  434. map.removeOverlay(allOverlay[i]);
  435. }
  436. }
  437. queryParams.value.condition = value.type;
  438. getClassificationList();
  439. activeTab.value = index;
  440. };
  441. getClassificationList()
  442. /** 查询评价分析 */
  443. const PieChartData = ref([]);
  444. function obtainCreditScoreList() {
  445. getCreditScoreList(queryParams.value).then((res) => {
  446. console.log("评价分析:", res)
  447. const state1Array = [];
  448. const state2Array = [];
  449. const state3Array = [];
  450. const state4Array = [];
  451. const state5Array = [];
  452. const state6Array = [];
  453. res.data.result.forEach(item => {
  454. if (item.grade === 'AAA') {
  455. state1Array.push(item);
  456. } else if (item.grade === 'AA') {
  457. state2Array.push(item);
  458. } else if (item.grade === 'A') {
  459. state3Array.push(item);
  460. } else if (item.grade === 'B') {
  461. state4Array.push(item);
  462. } else if (item.grade === 'C') {
  463. state5Array.push(item);
  464. } else if (item.grade === 'D') {
  465. state6Array.push(item);
  466. }
  467. PieChartData.value = [
  468. { value: state1Array.length, name: 'AAA' },
  469. { value: state2Array.length, name: 'AA' },
  470. { value: state3Array.length, name: 'A' },
  471. { value: state4Array.length, name: 'B' },
  472. { value: state5Array.length, name: 'C' },
  473. { value: state6Array.length, name: 'D' },
  474. ]
  475. });
  476. console.log(111, PieChartData)
  477. })
  478. }
  479. /** 查询产值 */
  480. function obtaingetTrossDomesticProduct() {
  481. getTrossDomesticProduct(queryParams.value).then((res) => {
  482. console.log("查询产值:", res)
  483. })
  484. }
  485. /** 查询纳税 */
  486. function obtaingetTopTenTaxation() {
  487. getTopTenTaxation(queryParams.value).then((res) => {
  488. console.log("查询纳税:", res)
  489. })
  490. }
  491. /** 查询潇湘财银贷 */
  492. function obtaingetXiaoxiangCaiyinLoan() {
  493. getXiaoxiangCaiyinLoan(queryParams.value).then((res) => {
  494. console.log("查询潇湘财银贷:", res)
  495. })
  496. }
  497. /** 查询评科技贷: */
  498. function obtaingetTechnologyLoan() {
  499. getTechnologyLoan(queryParams.value).then((res) => {
  500. console.log("查询评科技贷", res)
  501. })
  502. }
  503. /** 惠园贷: */
  504. function obtaingetHuiyuanLoan() {
  505. getHuiyuanLoan(queryParams.value).then((res) => {
  506. console.log("惠园贷:", res)
  507. })
  508. }
  509. /** 查询入驻企业、企业数量 */
  510. function obtaingetNumberOfEnterprises() {
  511. getNumberOfEnterprises(queryParams.value).then((res) => {
  512. console.log("入驻企业、企业数量:", res)
  513. })
  514. }
  515. /** 查询上市企业 */
  516. function obtaingetListedCompanies() {
  517. getListedCompanies(queryParams.value).then((res) => {
  518. console.log("查询上市企业:", res)
  519. })
  520. }
  521. /** 查询高新技术企业 */
  522. function obtaingetHighTechEnterprises() {
  523. getHighTechEnterprises(queryParams.value).then((res) => {
  524. console.log("查询高新技术企业:", res)
  525. })
  526. }
  527. /** 查询科技中小型企业 */
  528. function obtaingetTechnologySmallAndmediumSizedEnterprises() {
  529. getTechnologySmallAndmediumSizedEnterprises(queryParams.value).then((res) => {
  530. console.log("查询科技中小型企业:", res)
  531. })
  532. }
  533. /** 查询专利信息 */
  534. function obtaingetPatentInformation() {
  535. getPatentInformation(queryParams.value).then((res) => {
  536. console.log("查询专利信息:", res)
  537. })
  538. }
  539. /** 查询行政处罚 */
  540. function obtaingetAdministrativeSanction() {
  541. getAdministrativeSanction(queryParams.value).then((res) => {
  542. console.log("查询行政处罚:", res)
  543. })
  544. }
  545. /** 查询行政强制执行 */
  546. function obtaingetAdministrativeEnforcement() {
  547. getAdministrativeEnforcement(queryParams.value).then((res) => {
  548. console.log("查询行政强制执行:", res)
  549. })
  550. }
  551. /** 查询经营异常 */
  552. function obtaingetBusinessAdnormalities() {
  553. getBusinessAdnormalities(queryParams.value).then((res) => {
  554. console.log("查询经营异常:", res)
  555. })
  556. }
  557. /** 查询失信被执行人 */
  558. function obtaingetDishonestDebtor() {
  559. getDishonestDebtor(queryParams.value).then((res) => {
  560. console.log("查询失信被执行人:", res)
  561. })
  562. }
  563. /** 查询社保 */
  564. function obtaingetSocialSecurity() {
  565. getSocialSecurity(queryParams.value).then((res) => {
  566. console.log("查询社保:", res)
  567. })
  568. }
  569. obtainCreditScoreList();
  570. obtaingetTrossDomesticProduct();
  571. obtaingetTopTenTaxation();
  572. obtaingetXiaoxiangCaiyinLoan();
  573. obtaingetTechnologyLoan();
  574. obtaingetHuiyuanLoan();
  575. obtaingetNumberOfEnterprises();
  576. obtaingetListedCompanies();
  577. obtaingetHighTechEnterprises();
  578. obtaingetTechnologySmallAndmediumSizedEnterprises();
  579. obtaingetPatentInformation();
  580. obtaingetAdministrativeSanction();
  581. obtaingetAdministrativeEnforcement();
  582. obtaingetBusinessAdnormalities();
  583. obtaingetDishonestDebtor();
  584. obtaingetSocialSecurity();
  585. // 如果需要的话,在beforeUnmount中清理资源
  586. import { onBeforeUnmount } from 'vue';
  587. onBeforeUnmount(() => {
  588. if (map) {
  589. // 清理地图资源
  590. map.dispose();
  591. map = null;
  592. }
  593. });
  594. </script>
  595. <style scoped lang="scss">
  596. .Vbox {
  597. height: 100vh;
  598. overflow: hidden;
  599. .head {
  600. height: 120px;
  601. top: 0;
  602. width: 100%;
  603. position: absolute;
  604. z-index: 999;
  605. // background-color: rgba($color: #0e2a41, $alpha: .5);
  606. .VisTitle {
  607. height: 60px;
  608. background-image: url("../../assets/visualizationimg/title.png");
  609. }
  610. .Vgradation {
  611. height: 60px;
  612. display: flex;
  613. justify-content: center;
  614. align-items: center;
  615. .tab {
  616. width: 100px;
  617. height: 40px;
  618. margin: 0 10px;
  619. text-align: center;
  620. line-height: 40px;
  621. color: white;
  622. font-weight: 500;
  623. background-image: url("../../assets/visualizationimg/headg.png");
  624. background-size: 100% 100%;
  625. }
  626. .active {
  627. background-image: url("../../assets/visualizationimg/headgactive.png");
  628. background-size: 100% 100%;
  629. }
  630. }
  631. }
  632. .container {
  633. height: 100%;
  634. position: relative;
  635. .left {
  636. left: 20px;
  637. float: left;
  638. position: relative;
  639. margin-left: -100%;
  640. width: 500px;
  641. // background-color: rgba($color: #000000, $alpha: 0.2);
  642. height: 100%;
  643. top: 60px;
  644. z-index: 999;
  645. .leftOneBox,
  646. .leftTwoBox,
  647. .leftThreeBox {
  648. height: 30%;
  649. background-color: rgba($color: #000000, $alpha: .6);
  650. margin-bottom: 14px;
  651. .leftOBTitle,
  652. .leftGDPTitle,
  653. .leftTaxationTitle {
  654. height: 40px;
  655. color: white;
  656. line-height: 40px;
  657. padding-left: 60px;
  658. font-weight: bold;
  659. background-image: url("../../assets/visualizationimg/centertitle.png");
  660. background-size: 100% 100%;
  661. }
  662. .leftOBContent,
  663. .leftGDPContent,
  664. .leftTaxationContent {
  665. height: calc(100% - 40px);
  666. .LTCKing {
  667. display: flex;
  668. color: white;
  669. // justify-content: space-between;
  670. align-items: center;
  671. background-image: url("../../assets/visualizationimg/rankingbu.png");
  672. background-size: 100% 100%;
  673. padding: 10px 10px;
  674. .ranking {
  675. width: 25px;
  676. height: 25px;
  677. margin-right: 10px;
  678. img {
  679. width: 25px;
  680. height: 25px;
  681. }
  682. }
  683. .companyName {
  684. flex: 1;
  685. font-size: 16px;
  686. font-weight: 500;
  687. }
  688. .companyValue {
  689. color: #DFD92C;
  690. }
  691. }
  692. }
  693. }
  694. }
  695. .boxBottom {
  696. position: absolute;
  697. z-index: 999;
  698. height: 150px;
  699. bottom: 0;
  700. width: 860px;
  701. left: 530px;
  702. display: flex;
  703. .parkLoan {
  704. width: 50%;
  705. height: 100%;
  706. background-color: rgba($color: #000000, $alpha: .6);
  707. .PCFLTitle {
  708. height: 40px;
  709. color: white;
  710. line-height: 40px;
  711. padding-left: 60px;
  712. font-weight: bold;
  713. background-image: url("../../assets/visualizationimg/centertitle.png");
  714. background-size: 100% 100%;
  715. }
  716. .PCFLContent {
  717. height: calc(100% - 40px);
  718. .PCFLNumber {
  719. height: 50%;
  720. display: flex;
  721. justify-content: space-around;
  722. align-items: center;
  723. .RPCBData {
  724. .RPCBDNumber {
  725. font-weight: normal;
  726. font-size: 24px;
  727. color: #21F2FF;
  728. }
  729. .RPCBDName {
  730. font-weight: 500;
  731. font-size: 14px;
  732. color: #C9E2FF;
  733. }
  734. }
  735. }
  736. .PCFLImg {
  737. margin-top: -40px;
  738. display: flex;
  739. justify-content: space-around;
  740. align-items: center;
  741. }
  742. // .RPCBox {
  743. // width: 100%;
  744. // height: 70%;
  745. // display: flex;
  746. // align-items: center;
  747. // justify-content: center;
  748. // .RPCBImg {
  749. // width: 60px;
  750. // height: 60px;
  751. // }
  752. // }
  753. }
  754. }
  755. .boxBttTwo {
  756. width: 50%;
  757. height: 100%;
  758. margin-left: 10px;
  759. background-color: rgba($color: #000000, $alpha: .6);
  760. .businessManagTitle {
  761. height: 40px;
  762. color: white;
  763. line-height: 40px;
  764. padding-left: 60px;
  765. font-weight: bold;
  766. background-image: url("../../assets/visualizationimg/centertitle.png");
  767. background-size: 100% 100%;
  768. }
  769. .businessManagContent {
  770. height: calc(100% - 40px);
  771. display: flex;
  772. justify-content: center;
  773. align-items: center;
  774. .RPCBox {
  775. width: 100%;
  776. height: 70%;
  777. display: flex;
  778. align-items: center;
  779. justify-content: center;
  780. .RPCBImg {
  781. width: 60px;
  782. height: 60px;
  783. }
  784. .RPCBData {
  785. margin-left: 10px;
  786. .RPCBDNumber {
  787. font-weight: normal;
  788. font-size: 24px;
  789. color: #21F2FF;
  790. }
  791. .RPCBDName {
  792. font-weight: 500;
  793. font-size: 14px;
  794. color: #C9E2FF;
  795. }
  796. .RPCBDRatio {
  797. font-weight: 500;
  798. font-size: 14px;
  799. color: #C9E2FF;
  800. }
  801. }
  802. }
  803. }
  804. }
  805. }
  806. .center {
  807. float: left;
  808. height: 100%;
  809. width: 100%;
  810. background-color: green;
  811. .allmap {
  812. /* // 注意给dom宽高,不然地图不出来 */
  813. width: 100%;
  814. height: 100%;
  815. margin: auto;
  816. padding: 0;
  817. }
  818. }
  819. .right {
  820. right: 20px;
  821. float: left;
  822. position: relative;
  823. margin-left: -500px;
  824. width: 500px;
  825. // background-color: rgba($color: #000000, $alpha: 0.2);
  826. height: 100%;
  827. top: 60px;
  828. z-index: 999;
  829. .leftOneBox,
  830. .rightParkBox,
  831. .rightIndustryComplianceBox {
  832. height: 30%;
  833. background-color: rgba($color: #000000, $alpha: .6);
  834. margin-bottom: 14px;
  835. .leftOBTitle,
  836. .rightParkTtile,
  837. .RICBTitle {
  838. height: 40px;
  839. color: white;
  840. line-height: 40px;
  841. padding-left: 60px;
  842. font-weight: bold;
  843. background-image: url("../../assets/visualizationimg/centertitle.png");
  844. background-size: 100% 100%;
  845. }
  846. .leftOBContent {
  847. height: calc(100% - 40px);
  848. }
  849. .rightParkContent {
  850. height: calc(100% - 40px);
  851. display: grid;
  852. grid-template-columns: repeat(3, 33.33%);
  853. grid-template-rows: repeat(2, 50%);
  854. align-items: center;
  855. .RPCBox {
  856. width: 100%;
  857. height: 70%;
  858. display: flex;
  859. align-items: center;
  860. justify-content: center;
  861. .RPCBImg {
  862. width: 60px;
  863. height: 60px;
  864. }
  865. .RPCBData {
  866. margin-left: 10px;
  867. .RPCBDNumber {
  868. font-weight: normal;
  869. font-size: 24px;
  870. color: #21F2FF;
  871. }
  872. .RPCBDName {
  873. font-weight: 500;
  874. font-size: 14px;
  875. color: #C9E2FF;
  876. }
  877. }
  878. }
  879. }
  880. .RICBTContent {
  881. height: calc(100% - 40px);
  882. display: grid;
  883. grid-template-columns: repeat(1, 100%);
  884. grid-template-rows: repeat(2, 50%);
  885. align-items: center;
  886. justify-content: center;
  887. .RICBTCBoxOne {
  888. width: 100%;
  889. height: 100%;
  890. background-image: url("../../assets/visualizationimg/imdustryCompliance.png");
  891. background-size: 100% 100%;
  892. display: flex;
  893. justify-content: space-around;
  894. align-items: center;
  895. .proportion {
  896. font-weight: bold;
  897. font-size: 34px;
  898. color: #3BA9FF;
  899. line-height: 25px;
  900. }
  901. .administrativeS {
  902. font-weight: normal;
  903. font-size: 14px;
  904. color: #F8FEFF;
  905. line-height: 25px;
  906. }
  907. }
  908. }
  909. }
  910. }
  911. }
  912. }
  913. </style>