HomeView.vue 24 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827828829830831832833834835836837838839840841842843844845846847848849850851852853854855856857858859860861862863864865866867868869870871872873874875876877878879880881882883884885886887888889890891892893894895896897898899900901902903904905906907908909910911912913914915
  1. <template>
  2. <div id="LayoutContent">
  3. <MapHolder ref="mapLoaderRef"></MapHolder>
  4. <Header @navSelect="navSelect"></Header>
  5. <!-- 镇域专题 -->
  6. <div id="TownContainer" v-if="$ifMenu('2', '5')">
  7. <Legend
  8. id="TownContainer_bottomLegend"
  9. :legendData="{
  10. boxWidth: '150',
  11. boxHeight: '180',
  12. menuIndex: '2',
  13. subMenuIndex: '5',
  14. legendIcon: legendIcon,
  15. legendTitle: legendTitle,
  16. }"
  17. />
  18. <div class="select-title">所属街道</div>
  19. <NewSelect
  20. class="select-container"
  21. @selectEvent="specialTownSelect"
  22. v-model="streetSelectVal"
  23. :options="streetOptions"
  24. :value="streetSelectVal"
  25. />
  26. <div class="town-problems">
  27. <div class="town-problems-top">
  28. <MenuCard
  29. :menuData="{
  30. type: 'card',
  31. title: streetSelectVal + '资源问题',
  32. titleWidth: 40,
  33. boxWidth: '780',
  34. }"
  35. >
  36. <template slot="top">
  37. <div class="town-problems-top-inner">
  38. <TagProblemCard class="problem-item" v-for="n in 4" :key="n" />
  39. </div>
  40. </template>
  41. </MenuCard>
  42. </div>
  43. <div class="town-problems-bottom">
  44. <MenuCard
  45. :menuData="{
  46. type: 'card',
  47. title: '资金投入TOP10',
  48. titleWidth: 85,
  49. boxWidth: '400',
  50. }"
  51. ><template slot="top"><TopCard :dataSize="10" /></template
  52. ></MenuCard>
  53. <MenuCard
  54. :menuData="{
  55. type: 'card',
  56. title: '历年频发问题TOP10',
  57. titleWidth: 85,
  58. boxWidth: '400',
  59. }"
  60. ><template slot="top"><TopCard :dataSize="10" /></template
  61. ></MenuCard>
  62. </div>
  63. </div>
  64. </div>
  65. <!-- 综合分析 -->
  66. <ComprehensiveAnalysis
  67. id="ComprehensiveContainer"
  68. v-if="$ifMenu('3', '')"
  69. />
  70. <!-- 法律法规 -->
  71. <LawView id="LawContainer" v-if="$ifMenu('5', '1')" />
  72. <!-- 频发问题 -->
  73. <FrequencyView id="FrequencyContainer" v-if="$ifMenu('5', '2')" />
  74. <!-- Home页面 -->
  75. <!-- 左侧菜单列 1 -- 首页 -->
  76. <div id="leftMenus">
  77. <MenuCard :menuData="menus.left[0]">
  78. <template slot="top">
  79. <TagTableCard :data="tagCardData2" />
  80. </template>
  81. <template slot="bottom">
  82. <ChartCard :title="'近三年农田面积变化'" />
  83. </template>
  84. </MenuCard>
  85. <MenuCard :menuData="menus.left[1]">
  86. <template slot="top">
  87. <div class="menuCardFlex">
  88. <TagCard :data="tagCardData"></TagCard>
  89. <TagCard :data="tagCardData"></TagCard>
  90. <TagCard :data="tagCardData"></TagCard>
  91. </div>
  92. </template>
  93. <template slot="bottom">
  94. <ChartCard :title="'近三年水域面积变化'" />
  95. </template>
  96. </MenuCard>
  97. <MenuCard :menuData="menus.left[2]">
  98. <template slot="top">
  99. <div class="menuCardFlex">
  100. <TagCard :data="tagCardData3"></TagCard>
  101. <TagCard :data="tagCardData3"></TagCard>
  102. </div>
  103. </template>
  104. <template slot="bottom">
  105. <ChartCard :title="'近三年林地面积变化'" />
  106. </template>
  107. </MenuCard>
  108. </div>
  109. <!-- 左侧菜单列 2 -- 疑点筛查 -->
  110. <div id="leftMenusW">
  111. <MenuCard :menuData="menus.left[3]"> </MenuCard>
  112. <MenuCard :menuData="menus.left[4]"> </MenuCard>
  113. <MenuCard :menuData="menus.left[5]"> </MenuCard>
  114. <MenuCard :menuData="menus.left[6]"> </MenuCard>
  115. <MenuCard :menuData="menus.left[7]"> </MenuCard>
  116. <MenuCard :menuData="menus.left[8]"> </MenuCard>
  117. <MenuCard :menuData="menus.left[9]"> </MenuCard>
  118. <MenuCard :menuData="menus.left[10]"> </MenuCard>
  119. </div>
  120. <!-- 中部菜单列 -->
  121. <div id="mainMenus">
  122. <div id="mainMenus_topLeft" v-if="$ifMenu('1', '')">所属街道</div>
  123. <NewSelect
  124. id="mainMenus_topSelect"
  125. v-model="streetSelectVal"
  126. :options="streetOptions"
  127. :value="streetSelectVal"
  128. @selectEvent="homeSelect"
  129. v-if="$ifMenu('1', '')"
  130. />
  131. <div id="mainMenus_topRight">
  132. <MenuCard :menuData="menus.main[0]">
  133. <div class="bar-btn">
  134. <div
  135. class="btn-style"
  136. v-for="item in buttonData"
  137. :key="item"
  138. @click="clickEvent(item)"
  139. :class="{ 'button-selected': item === btnChecked }"
  140. >
  141. {{ item }}
  142. </div>
  143. </div>
  144. <div class="bar-content">
  145. <BarChart
  146. class="bar"
  147. :categoryData="categoryData"
  148. :soilValueData="soil"
  149. :waterValueData="water"
  150. :forestryValueData="forestry"
  151. :sourceType="btnChecked"
  152. />
  153. </div>
  154. </MenuCard>
  155. </div>
  156. <Legend
  157. id="mainMenus_bottomLegend"
  158. :legendData="{
  159. boxWidth: '150',
  160. boxHeight: '180',
  161. menuIndex: '1',
  162. legendIcon: legendIcon,
  163. legendTitle: legendTitle,
  164. }"
  165. />
  166. </div>
  167. <!-- 右侧菜单列 -->
  168. <div class="rightMenus">
  169. <MenuCard :menuData="menus.right[0]">
  170. <template slot="top">
  171. <div class="menuCardFlex" style="justify-content: center">
  172. <TagCard :data="tagCardData3"></TagCard>
  173. </div>
  174. </template>
  175. <template slot="bottom">
  176. <ChartCard :title="'近三年林地面积变化'" /> </template
  177. ></MenuCard>
  178. <MenuCard :menuData="menus.right[1]">
  179. <template slot="top">
  180. <div class="menuCardFlex">
  181. <TagCard :data="tagCardData"></TagCard>
  182. <TagCard :data="tagCardData"></TagCard>
  183. <TagCard :data="tagCardData"></TagCard>
  184. </div>
  185. </template>
  186. <template slot="bottom">
  187. <ChartCard :title="'近三年审计项目变化'" /> </template
  188. ></MenuCard>
  189. <MenuCard :menuData="menus.right[2]">
  190. <template slot="top">
  191. <TopCard :dataSize="5" />
  192. </template>
  193. </MenuCard>
  194. </div>
  195. <!-- 右侧菜单列 -->
  196. <div class="rightMenus">
  197. <MenuCard :menuData="menus.right[3]">
  198. <template slot="top">
  199. <div class="menuCardFlex" style="justify-content: center">
  200. <TagCard :data="tagCardData3"></TagCard>
  201. </div>
  202. </template>
  203. <template slot="bottom">
  204. <ChartCard :title="'近三年土地类问题变化'" /> </template
  205. ></MenuCard>
  206. <MenuCard :menuData="menus.right[4]">
  207. <template slot="top">
  208. <TopCard :dataSize="5" />
  209. </template>
  210. </MenuCard>
  211. </div>
  212. <!-- 全流程管理 4 -->
  213. <div id="stepsBox" v-if="$ifMenu('4', '')">
  214. <WholeProcessManagement />
  215. </div>
  216. <!-- 底部菜单 2 -- 疑点筛查 -->
  217. <div id="leftMenusB" v-show="$ifMenu('3', '')">
  218. <BottomMenus />
  219. </div>
  220. </div>
  221. </template>
  222. <script>
  223. import MapHolder from "@/components/map/MapHolder.vue";
  224. import Header from "@/components/layout/Header.vue";
  225. import MenuCard from "@/components/layout/MenuCard";
  226. import NewSelect from "@/components/common/NewSelect.vue";
  227. import BarChart from "@/components/chart/BarChart.vue";
  228. import {
  229. street,
  230. streetLocation,
  231. soilData,
  232. waterData,
  233. forestryData,
  234. } from "@/config/common";
  235. import publicFun from "@/utils/publicFunction.js";
  236. import TagCard from "@/components/common/TagCard";
  237. import ChartCard from "@/components/common/ChartCard.vue";
  238. import TagTableCard from "@/components/common/TagTableCard";
  239. import TopCard from "@/components/common/TopCard";
  240. import BottomMenus from "@/components/common/BottomMenus";
  241. // 图例
  242. import Legend from "@/components/map/Legend.vue";
  243. // 综合分析
  244. import ComprehensiveAnalysis from "@/views/ComprehensiveAnalysis.vue";
  245. import TagProblemCard from "@/components/common/TagProblemCard.vue";
  246. // 全流程管理
  247. import WholeProcessManagement from "@/components/common/WholeProcessManagement.vue";
  248. // 智能辅助 -- 频发问题
  249. import FrequencyView from "@/views/FrequencyView.vue";
  250. // 智能辅助 -- 法律法规
  251. import LawView from "@/views/LawView.vue";
  252. export default {
  253. name: "HomeView",
  254. components: {
  255. MapHolder,
  256. Header,
  257. MenuCard,
  258. NewSelect,
  259. BarChart,
  260. TagCard,
  261. ChartCard,
  262. TagTableCard,
  263. TopCard,
  264. BottomMenus,
  265. ComprehensiveAnalysis,
  266. TagProblemCard,
  267. Legend,
  268. WholeProcessManagement,
  269. FrequencyView,
  270. LawView,
  271. },
  272. data() {
  273. return {
  274. tagCardData: {
  275. type: "tb",
  276. title: "土地资源",
  277. value: 100,
  278. unit: "公顷",
  279. },
  280. tagCardData2: {
  281. type: "tb",
  282. title: "土地资源面积",
  283. value: 172,
  284. unit: "公顷",
  285. },
  286. tagCardData3: {
  287. type: "lr",
  288. title: "林地面积",
  289. value: 654,
  290. unit: "公顷",
  291. },
  292. testTitle: "土地资源",
  293. activeIndex: 1,
  294. // 菜单配置,后期最好根据用户权限通过后台动态返回。
  295. menus: {
  296. left: [
  297. {
  298. type: "card",
  299. title: "土地资源",
  300. menuIndex: "1",
  301. position: "left",
  302. minDomWidth: 420,
  303. },
  304. {
  305. type: "card",
  306. title: "水资源",
  307. menuIndex: "1",
  308. position: "left",
  309. minDomWidth: 420,
  310. },
  311. {
  312. type: "card",
  313. title: "林地资源",
  314. menuIndex: "1",
  315. position: "left",
  316. minDomWidth: 420,
  317. },
  318. {
  319. type: "imageMenu",
  320. index: 0,
  321. title: "基本农田被违规占用",
  322. titleWidth: 81,
  323. boxHeight: 236,
  324. imageUrl: "/static/images/2.png",
  325. menuIndex: "2",
  326. subMenuIndex: "1",
  327. position: "left",
  328. },
  329. {
  330. type: "imageMenu",
  331. index: 1,
  332. title: "基本农田种林",
  333. titleWidth: 81,
  334. boxHeight: 236,
  335. imageUrl: "/static/images/3.png",
  336. menuIndex: "2",
  337. subMenuIndex: "1",
  338. position: "left",
  339. },
  340. {
  341. type: "imageMenu",
  342. index: 2,
  343. title: "基本农田抛荒",
  344. titleWidth: 81,
  345. boxHeight: 236,
  346. imageUrl: "/static/images/1.png",
  347. menuIndex: "2",
  348. subMenuIndex: "1",
  349. position: "left",
  350. },
  351. {
  352. type: "imageMenu",
  353. index: 3,
  354. title: "一般耕地被违规占用",
  355. titleWidth: 81,
  356. boxHeight: 236,
  357. imageUrl: "/static/images/4.png",
  358. menuIndex: "2",
  359. subMenuIndex: "1",
  360. position: "left",
  361. },
  362. {
  363. type: "imageMenu",
  364. index: 4,
  365. title: "基本农田被违规占用",
  366. titleWidth: 81,
  367. boxHeight: 236,
  368. imageUrl: "/static/images/2.png",
  369. menuIndex: "2",
  370. subMenuIndex: "1",
  371. position: "left",
  372. },
  373. {
  374. type: "imageMenu",
  375. index: 5,
  376. title: "基本农田种林",
  377. titleWidth: 81,
  378. boxHeight: 236,
  379. imageUrl: "/static/images/3.png",
  380. menuIndex: "2",
  381. subMenuIndex: "1",
  382. position: "left",
  383. },
  384. {
  385. type: "imageMenu",
  386. index: 6,
  387. title: "基本农田抛荒",
  388. titleWidth: 81,
  389. boxHeight: 236,
  390. imageUrl: "/static/images/1.png",
  391. menuIndex: "2",
  392. subMenuIndex: "1",
  393. position: "left",
  394. },
  395. {
  396. type: "imageMenu",
  397. index: 7,
  398. title: "一般耕地被违规占用",
  399. titleWidth: 81,
  400. boxHeight: 236,
  401. imageUrl: "/static/images/4.png",
  402. menuIndex: "2",
  403. subMenuIndex: "1",
  404. position: "left",
  405. },
  406. ],
  407. main: [
  408. {
  409. type: "chart",
  410. title: "浦东新区自然资源分布TOP10",
  411. boxWidth: "360",
  412. boxHeight: "370",
  413. boxBackground: "rgba(0,39,77,0.6)",
  414. menuIndex: "1",
  415. position: "top",
  416. minDomWidth: 1500,
  417. },
  418. ],
  419. right: [
  420. {
  421. type: "card",
  422. title: "资金投入情况",
  423. titleWidth: 64,
  424. menuIndex: "1",
  425. position: "right",
  426. minDomWidth: 1000,
  427. },
  428. {
  429. type: "card",
  430. title: "资源环境项目",
  431. titleWidth: 64,
  432. menuIndex: "1",
  433. position: "right",
  434. minDomWidth: 1000,
  435. },
  436. {
  437. type: "card",
  438. title: "历年频发问题TOP5",
  439. titleWidth: 81,
  440. menuIndex: "1",
  441. position: "right",
  442. minDomWidth: 1000,
  443. },
  444. {
  445. type: "card",
  446. title: "土地类问题",
  447. titleWidth: 60,
  448. menuIndex: "2",
  449. subMenuIndex: "1",
  450. position: "right",
  451. minDomWidth: 1200,
  452. },
  453. {
  454. type: "card",
  455. title: "土地类问题TOP5",
  456. titleWidth: 81,
  457. menuIndex: "2",
  458. subMenuIndex: "1",
  459. position: "right",
  460. minDomWidth: 1200,
  461. },
  462. ],
  463. },
  464. // 首页饼图相关
  465. buttonData: ["A", "B", "C"],
  466. legendTitle: ["A类", "B类", "C类"],
  467. // legendData: ["#E565FF", "#0055FF", "#00FFD5"],
  468. legendIcon: [
  469. {
  470. background: "#E565FF",
  471. border: "none",
  472. },
  473. {
  474. background: "#0055FF",
  475. border: "none",
  476. },
  477. {
  478. background: "#00FFD5",
  479. border: "none",
  480. },
  481. ],
  482. btnChecked: "A",
  483. AData: {
  484. soil: [],
  485. water: [],
  486. forestry: [],
  487. categoryData: [],
  488. },
  489. BData: {
  490. soil: [],
  491. water: [],
  492. forestry: [],
  493. categoryData: [],
  494. },
  495. CData: {
  496. soil: [],
  497. water: [],
  498. forestry: [],
  499. categoryData: [],
  500. },
  501. streetSelectVal: "全部街道",
  502. streetOptions: [],
  503. // 街镇专题
  504. townCollection: [
  505. { name: "土地资源问题", num: 67 },
  506. { name: "水资源问题", num: 37 },
  507. { name: "林地资源问题", num: 60 },
  508. { name: "生态资源问题", num: 55 },
  509. ],
  510. // 综合分析
  511. analysis: {
  512. searchInput: "",
  513. },
  514. };
  515. },
  516. methods: {
  517. navSelect: function (data) {
  518. console.log(data);
  519. this.$store.commit("changeNavSelect", data);
  520. },
  521. clickEvent(type) {
  522. this.btnChecked = type;
  523. switch (type) {
  524. case "A":
  525. this.soil = this.AData.soil;
  526. this.water = this.AData.water;
  527. this.forestry = this.AData.forestry;
  528. this.categoryData = this.AData.categoryData;
  529. break;
  530. case "B":
  531. this.soil = this.BData.soil;
  532. this.water = this.BData.water;
  533. this.forestry = this.BData.forestry;
  534. this.categoryData = this.BData.categoryData;
  535. break;
  536. case "C":
  537. this.soil = this.CData.soil;
  538. this.water = this.CData.water;
  539. this.forestry = this.CData.forestry;
  540. this.categoryData = this.CData.categoryData;
  541. break;
  542. }
  543. },
  544. // home页面下拉框
  545. homeSelect(val) {
  546. console.log(val, "current street");
  547. this.$refs.mapLoaderRef.setView(streetLocation[val], 11);
  548. },
  549. // 镇域专题下拉框
  550. specialTownSelect(val) {
  551. this.$refs.mapLoaderRef.setView(streetLocation[val], 11);
  552. },
  553. },
  554. created() {
  555. // 目录
  556. let category = Object.keys(street);
  557. // 默认A类
  558. this.soil = [];
  559. this.water = [];
  560. this.forestry = [];
  561. let ADataArr = [];
  562. let BDataArr = [];
  563. let CDataArr = [];
  564. // 街道排序
  565. for (let i in category) {
  566. let ADataSum =
  567. soilData[category[i]].A +
  568. waterData[category[i]].A +
  569. forestryData[category[i]].A;
  570. let BDataSum =
  571. soilData[category[i]].B +
  572. waterData[category[i]].B +
  573. forestryData[category[i]].B;
  574. let CDataSum =
  575. soilData[category[i]].C +
  576. waterData[category[i]].C +
  577. forestryData[category[i]].C;
  578. ADataArr.push({ name: category[i], sum: ADataSum });
  579. BDataArr.push({ name: category[i], sum: BDataSum });
  580. CDataArr.push({ name: category[i], sum: CDataSum });
  581. }
  582. ADataArr.sort(publicFun.compare("sum"));
  583. BDataArr.sort(publicFun.compare("sum"));
  584. CDataArr.sort(publicFun.compare("sum"));
  585. // 按A,B,C分出各自资源的排序数组
  586. ADataArr.forEach((item) => {
  587. this.AData.soil.push(soilData[item.name].A);
  588. this.AData.water.push(waterData[item.name].A);
  589. this.AData.forestry.push(forestryData[item.name].A);
  590. this.AData.categoryData.push(item.name);
  591. });
  592. BDataArr.forEach((item) => {
  593. this.BData.soil.push(soilData[item.name].B);
  594. this.BData.water.push(waterData[item.name].B);
  595. this.BData.forestry.push(forestryData[item.name].B);
  596. this.BData.categoryData.push(item.name);
  597. });
  598. CDataArr.forEach((item) => {
  599. this.CData.soil.push(soilData[item.name].C);
  600. this.CData.water.push(waterData[item.name].C);
  601. this.CData.forestry.push(forestryData[item.name].C);
  602. this.CData.categoryData.push(item.name);
  603. });
  604. this.soil = this.AData.soil;
  605. this.water = this.AData.water;
  606. this.forestry = this.AData.forestry;
  607. this.categoryData = this.AData.categoryData;
  608. // 街道下拉框
  609. for (let key in street) {
  610. this.streetOptions.push({
  611. value: street[key],
  612. label: street[key],
  613. });
  614. }
  615. },
  616. };
  617. </script>
  618. <style lang="less" scoped>
  619. @commonBorderColor: #00aaff;
  620. #LayoutContent {
  621. position: relative;
  622. width: 100%;
  623. height: 100%;
  624. box-sizing: border-box;
  625. overflow: hidden;
  626. }
  627. /* 镇域专题 */
  628. #TownContainer {
  629. position: relative;
  630. height: calc(100% - 60px);
  631. width: 100%;
  632. top: 60px;
  633. z-index: 999;
  634. pointer-events: none;
  635. &_bottomLegend {
  636. position: absolute;
  637. color: #fff;
  638. left: 60px;
  639. bottom: 30px;
  640. pointer-events: auto;
  641. }
  642. .select-title {
  643. position: absolute;
  644. left: 60px;
  645. top: 30px;
  646. width: 80px;
  647. height: 30px;
  648. color: #fff;
  649. line-height: 30px;
  650. font-size: 18px;
  651. cursor: auto;
  652. pointer-events: auto;
  653. }
  654. .select-container {
  655. position: absolute;
  656. left: 150px;
  657. top: 33px;
  658. cursor: pointer;
  659. pointer-events: auto;
  660. }
  661. .town-right-problems {
  662. position: absolute;
  663. right: 10px;
  664. top: 25px;
  665. pointer-events: auto;
  666. }
  667. .town-problems {
  668. position: absolute;
  669. right: 10px;
  670. width: 800px;
  671. height: 100%;
  672. color: #fff;
  673. pointer-events: auto;
  674. &-top {
  675. width: 100%;
  676. height: 220px;
  677. display: flex;
  678. align-items: center;
  679. justify-content: center;
  680. &-inner {
  681. width: 100%;
  682. height: 130px;
  683. display: flex;
  684. align-items: center;
  685. justify-content: space-around;
  686. .problem-item {
  687. width: 170px;
  688. height: 100px;
  689. }
  690. }
  691. }
  692. &-bottom {
  693. // background: plum;
  694. width: 100%;
  695. height: calc(95% - 220px);
  696. display: flex;
  697. align-items: center;
  698. justify-content: space-between;
  699. }
  700. }
  701. }
  702. /* 综合分析 */
  703. #ComprehensiveContainer {
  704. position: relative;
  705. height: calc(100% - 60px);
  706. width: 100%;
  707. top: 60px;
  708. z-index: 999;
  709. pointer-events: none;
  710. }
  711. /* 法律法规 */
  712. #LawContainer {
  713. position: relative;
  714. height: calc(100% - 60px);
  715. width: 100%;
  716. top: 60px;
  717. z-index: 999;
  718. background: rgba(0,0,0,0.9);
  719. }
  720. /* 频发问题 */
  721. #FrequencyContainer {
  722. position: relative;
  723. height: calc(100% - 60px);
  724. width: 100%;
  725. top: 60px;
  726. z-index: 999;
  727. background: rgba(0,0,0,0.9);
  728. }
  729. /* Home目录 -- 左侧菜单列 */
  730. #leftMenus {
  731. position: absolute;
  732. left: 5px;
  733. top: 60px;
  734. width: 420px;
  735. padding-right: 10px;
  736. margin-right: 10px;
  737. height: calc(100% - 60px);
  738. box-sizing: border-box;
  739. overflow-x: hidden;
  740. overflow-y: auto;
  741. scrollbar-width: none; /* Firefox */
  742. -ms-overflow-style: none; /* IE 10+ */
  743. &::-webkit-scrollbar {
  744. display: none; /* Chrome Safari */
  745. }
  746. }
  747. #leftMenusW {
  748. position: absolute;
  749. display: flex;
  750. flex-direction: row;
  751. flex-wrap: wrap;
  752. align-content: flex-start;
  753. left: 5px;
  754. top: 60px;
  755. width: 870px;
  756. padding-right: 10px;
  757. margin-right: 10px;
  758. height: calc(100% - 65px);
  759. float: left;
  760. box-sizing: border-box;
  761. overflow-x: hidden;
  762. overflow-y: auto;
  763. scrollbar-width: none; /* Firefox */
  764. -ms-overflow-style: none; /* IE 10+ */
  765. &::-webkit-scrollbar {
  766. display: none; /* Chrome Safari */
  767. }
  768. }
  769. // 底部菜单定位
  770. #leftMenusB {
  771. position: absolute;
  772. top: 0;
  773. width: 100%;
  774. height: 100%;
  775. }
  776. #stepsBox {
  777. position: absolute;
  778. top: 0;
  779. width: 100%;
  780. height: 100%;
  781. }
  782. #mainMenus {
  783. position: absolute;
  784. left: 430px;
  785. top: 60px;
  786. width: calc(100% - 850px);
  787. height: calc(100% - 60px);
  788. box-sizing: border-box;
  789. &_topLeft {
  790. position: absolute;
  791. left: 20px;
  792. top: 30px;
  793. font-size: 18px;
  794. z-index: 99999;
  795. color: #fff;
  796. }
  797. &_bottomLegend {
  798. position: absolute;
  799. left: 20px;
  800. bottom: 30px;
  801. color: #fff;
  802. }
  803. &_topSelect {
  804. position: absolute;
  805. left: 100px;
  806. top: 30px;
  807. z-index: 3;
  808. }
  809. &_topRight {
  810. position: absolute;
  811. right: 10px;
  812. top: 30px;
  813. z-index: 3;
  814. overflow: hidden;
  815. .bar-btn {
  816. width: 100%;
  817. height: 10%;
  818. display: flex;
  819. align-items: center;
  820. justify-content: center;
  821. .btn-style {
  822. width: 65px;
  823. height: 35px;
  824. background: url("../assets/home/btn_unselected.png") no-repeat center;
  825. margin-bottom: 2px;
  826. cursor: pointer;
  827. border-radius: 3px;
  828. display: flex;
  829. align-items: center;
  830. justify-content: center;
  831. color: #fff;
  832. }
  833. .button-selected {
  834. background: url("../assets/home/btn_selected.png") no-repeat center;
  835. }
  836. }
  837. .bar-content {
  838. width: 100%;
  839. height: 90%;
  840. background: rgba(100, 100, 100, 0);
  841. .bar {
  842. width: 100%;
  843. height: 98%;
  844. }
  845. }
  846. }
  847. }
  848. // 右侧菜单列
  849. .rightMenus {
  850. position: absolute;
  851. right: 10px;
  852. top: 60px;
  853. width: 420px;
  854. height: calc(100% - 60px);
  855. box-sizing: border-box;
  856. overflow-x: hidden;
  857. overflow-y: auto;
  858. scrollbar-width: none; /* Firefox */
  859. -ms-overflow-style: none; /* IE 10+ */
  860. &::-webkit-scrollbar {
  861. display: none; /* Chrome Safari */
  862. }
  863. }
  864. .menuCardFlex {
  865. display: flex;
  866. align-content: center;
  867. align-items: center;
  868. justify-content: space-between;
  869. flex-wrap: nowrap;
  870. position: relative;
  871. .borders {
  872. position: absolute;
  873. left: 50%;
  874. top: 50%;
  875. transform: translate(-50%, -50%) rotate(45deg);
  876. width: 110px;
  877. height: 100px;
  878. background: linear-gradient(to left, @commonBorderColor, @commonBorderColor)
  879. left top no-repeat,
  880. linear-gradient(to bottom, @commonBorderColor, @commonBorderColor) left
  881. top no-repeat,
  882. linear-gradient(to left, @commonBorderColor, @commonBorderColor) right top
  883. no-repeat,
  884. linear-gradient(to bottom, @commonBorderColor, @commonBorderColor) right
  885. top no-repeat,
  886. linear-gradient(to left, @commonBorderColor, @commonBorderColor) left
  887. bottom no-repeat,
  888. linear-gradient(to bottom, @commonBorderColor, @commonBorderColor) left
  889. bottom no-repeat,
  890. linear-gradient(to left, @commonBorderColor, @commonBorderColor) right
  891. bottom no-repeat,
  892. linear-gradient(to left, @commonBorderColor, @commonBorderColor) right
  893. bottom no-repeat;
  894. background-size: 6px 6px, 6px 6px, 6px 6px, 6px 6px;
  895. }
  896. }
  897. </style>