main.vue 24 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827828829830831832833834835836837838839840841842843844845846847848849850851852853854855856857858859860861862863864865866867868869870871872873874875876877878879880881882883884885886887888889890891892893894895896897898899900901902903904905906907908909910911912913914915916917918919920921922923924925926927928929930931932933934935936937938939940
  1. <template>
  2. <div class="main-data data-engineering">
  3. <div class="left">
  4. <div class="left-cont" v-if="leftShow">
  5. <div class="left-top"
  6. @click="showDialog(1)"
  7. @mouseover="showDialog(1)">
  8. <div class="cont-title-area">
  9. <img
  10. class="cont-title-bg"
  11. src="@/assets/images/main/cont_title_bg.png"
  12. alt=""
  13. />
  14. <div class="cont-title">生产辅助基建项目情况</div>
  15. </div>
  16. <div class="components-item bg2">
  17. <unit-access :parest = "parest"
  18. :num = "num"
  19. :key="appOrg"></unit-access>
  20. </div>
  21. <!-- <monitoring v-if="menu === 1"></monitoring>
  22. <monitoring-video v-if="menu === 2"></monitoring-video> -->
  23. </div>
  24. <div class="left-top">
  25. <div class="cont-title-area">
  26. <img
  27. class="cont-title-bg"
  28. src="@/assets/images/main/cont_title_bg.png"
  29. alt=""
  30. />
  31. <div class="cont-title">现场监控接入情况</div>
  32. </div>
  33. <div class="components-item">
  34. <unit-access-to @chooseUnit="onChooseUnit" :app-org="appOrg" :key="appOrg"></unit-access-to>
  35. </div>
  36. <!-- <monitoring v-if="menu === 1"></monitoring>
  37. <monitoring-video v-if="menu === 2"></monitoring-video> -->
  38. </div>
  39. </div>
  40. </div>
  41. <div class="middle flex-column">
  42. <Map @changeMenuFlag="changeMenuFlag" @transmit="transmit" @changeCurCompany="changeCurCompany" v-if="showMap" :list1="list1" :list2="list2" ref="map"></Map>
  43. <!-- 返回按钮 -->
  44. <div class="bottom-area flex-row align-items-center space-between" v-if="menuFlag">
  45. <div class="bottom-left flex-row align-items-center">
  46. <div class="left-item">
  47. <el-cascader
  48. v-model="curCompany"
  49. :options="company"
  50. @change="handleCompanyChange"
  51. placeholder="单位"
  52. :show-all-levels="false"
  53. popper-class="dropDown"
  54. clearable
  55. >
  56. <template slot-scope="{ node, data }">
  57. <div style="display: flex; align-items: center">
  58. <img
  59. v-if="data.label == '山西省公司(本部)'"
  60. src="../../../assets/images/main/tiaozhuanlouyu.png"
  61. style="width: 15px; margin-right: 10px"
  62. />
  63. <span
  64. v-else-if="data.value == '1A001' || data.value == '1A002' || data.value == '1A004' || data.value == '1A005'"
  65. style="
  66. display: inline-block;
  67. width: 10px;
  68. height: 10px;
  69. border-radius: 50%;
  70. margin-right: 10px;
  71. background: rgb(255, 180, 74);
  72. "
  73. ></span>
  74. <span>{{ data.label }}</span>
  75. </div>
  76. </template>
  77. </el-cascader>
  78. </div>
  79. </div>
  80. <div class="bottom-right">
  81. <img
  82. v-if="showBack"
  83. @click="onBack"
  84. src="@/assets/images/main/back.png"
  85. class="back"
  86. />
  87. </div>
  88. </div>
  89. </div>
  90. <div class="right">
  91. <div class="right-cont">
  92. <div class="right-top">
  93. <div class="cont-title-area">
  94. <img
  95. class="cont-title-bg"
  96. src="@/assets/images/main/cont_title_bg.png"
  97. alt=""
  98. />
  99. <div class="cont-title">现场远程检查情况</div>
  100. </div>
  101. <div class="components-item">
  102. <current-area @chooseMonitor="onChooseMonitor" @choose="onChooseIssueList"
  103. :monitorName="monitorName"
  104. :app-org="appOrg"
  105. :key="appOrg"></current-area>
  106. </div>
  107. </div>
  108. </div>
  109. </div>
  110. <!-- 监控区域 -->
  111. <div v-if="showCenter" class="dialog-2">
  112. <div class="dialog-center">
  113. <monitor-live
  114. v-if="showType === 1"
  115. @closeMonitor="onCloseMonitor"
  116. @chooseAllMonitor="onChooseAllMonitor"
  117. @issue="onChooseIssue"
  118. :monitorInfo="this.monitorInfo"
  119. ></monitor-live>
  120. <monitor-live-list
  121. v-if="showType === 2"
  122. @closeMonitor="onCloseMonitor1"
  123. @chooseMonitor="onChooseMonitor"
  124. :monitorInfo="this.monitorInfo"
  125. :monitorName="monitorName"
  126. :curCompanMonth="curCompanMonth"
  127. ></monitor-live-list>
  128. </div>
  129. </div>
  130. <!-- 监控区域 -->
  131. <div v-if="showC" class="dialog-2">
  132. <div class="dialog-center">
  133. <unit-project-dia
  134. v-if="showProject === 1"
  135. @close="onCloseProject()"
  136. :curCompanyear="curCompanyear"
  137. @choose="onChooseProject"
  138. ></unit-project-dia>
  139. <project-camera-dia
  140. v-if="showCamera === 1"
  141. @close="onCloseCamera"
  142. @choose="onChooseCamera"
  143. ></project-camera-dia>
  144. <camera-screen
  145. v-if="showCameraScreen === 1"
  146. @leave="onCloseCameraScreen"
  147. >
  148. </camera-screen>
  149. <issue-list-dia
  150. v-if="showIssue === 1"
  151. @close="onCloseIssue"
  152. @subIssue="onSubIssue"
  153. @dealIssue="onDealIssue"
  154. :monitorInfo="this.monitorInfo">
  155. </issue-list-dia>
  156. <issue-sub-dia
  157. v-if="showIssueSub === 1"
  158. @close="onCloseIssueSub"
  159. :monitorInfo="this.monitorInfo"
  160. :projectId="curCompanMonth"
  161. :imgUrl="this.imgUrl">
  162. </issue-sub-dia>
  163. <issue-deal-dia
  164. v-if="showIssueDeal === 1"
  165. @close="onCloseIssueDeal"
  166. :monitorInfo="this.monitorInfo"
  167. :getProList="getProList"
  168. >
  169. </issue-deal-dia>
  170. </div>
  171. </div>
  172. <!-- 弹出层-->
  173. <div
  174. :class="dialogType < 3 ? 'dialog' : 'dialog-r'"
  175. v-if="dialogShow"
  176. @click="closeDialog"
  177. >
  178. <unit-access-dialog
  179. v-if="dialogType === 1"
  180. :parest = "parest"
  181. :num = "num"
  182. :parest1 = "parest1"
  183. @choose="chooseRes"
  184. @chooseH="chooseHealth"
  185. @closeDialog="closeDialog"
  186. ></unit-access-dialog>
  187. </div>
  188. </div>
  189. </template>
  190. <script>
  191. import IssueSubDia from './issueSubDia.vue'
  192. import IssueDealDia from './issueDealDia.vue'
  193. import CameraScreen from './cameraScreen.vue'
  194. import IssueListDia from "./issueListDia.vue"
  195. import ProjectCameraDia from "./projectCameraDia.vue";
  196. import UnitProjectDia from "./unitProjectDia.vue";
  197. import Province from "../map/province.vue";
  198. import Map from "../map/map.vue";
  199. import UnitAccess from "./unitAccess.vue";
  200. import UnitAccessTo from "./unitAccessto.vue";
  201. import CameraOnline from "./cameraOnline.vue";
  202. import CurrentArea from "./currentArea.vue";
  203. import Monitoring from "./monitoring.vue";
  204. import VideoList from "./videoList.vue";
  205. import MonitoringStatus from "./monitoringStatus.vue";
  206. import MonitoringVideo from "./monitoringVideo.vue";
  207. import MonitorLive from "./monitorLive.vue";
  208. import MonitorLiveList from "./monitorLiveList.vue";
  209. import company from "../data/company.json";
  210. import TerminalDataDialog from "@/views/screen/official/terminalDataDialog.vue";
  211. import CarWarningDialog from "@/views/screen/official/carWarningDialog.vue";
  212. import CarStockDialog from "@/views/screen/logistics/car/carStockDialog.vue";
  213. import unitAccessDialog from "@/views/screen/engineering/unitAccessDialog.vue";
  214. import CarCost from "@/views/screen/official/carCost.vue";
  215. import ResourceList from "@/views/screen/official/resourceList.vue";
  216. import CarHealth from "@/views/screen/official/carHealth.vue";
  217. import {
  218. getProjectNum,
  219. getProjectNumThisWeek,
  220. getProjectNumX,
  221. getProjectNumY,
  222. getProjectNumZ
  223. } from '@/api/screen/service'
  224. export default {
  225. name: "EngineeringMain",
  226. components: {
  227. CarHealth, ResourceList, CarCost,
  228. CarStockDialog, CarWarningDialog, TerminalDataDialog,
  229. IssueSubDia,
  230. IssueDealDia,
  231. CameraScreen,
  232. IssueListDia,
  233. ProjectCameraDia,
  234. UnitProjectDia,
  235. Province,
  236. Map,
  237. UnitAccess,
  238. UnitAccessTo,
  239. CameraOnline,
  240. CurrentArea,
  241. Monitoring,
  242. VideoList,
  243. MonitoringStatus,
  244. MonitoringVideo,
  245. MonitorLive,
  246. MonitorLiveList,
  247. unitAccessDialog,
  248. },
  249. props: {},
  250. data() {
  251. return {
  252. menuFlag: true,
  253. appOrg: "0000",
  254. num: 0,
  255. parest:[
  256. {name:"可研评审",num:0},{name:"初设评审",num:0},
  257. {name:"政府立项备案",num:0},{name:"土地手续",num:0},
  258. {name:"用地规划",num:0},{name:"工程规划",num:0},
  259. {name:"设计招标",num:0},{name:"施工招标",num:0},
  260. {name:"监理招标",num:0},{name:"施工许可",num:0},
  261. ],
  262. parest1:[
  263. {name:"基础施工",num:0},{name:"主体工程",num:0},
  264. {name:"室内外装修",num:0},{name:"室外工程",num:0},
  265. ],
  266. mapArr:[
  267. "1A003",
  268. "1B001",
  269. "1C001",
  270. "1D001",
  271. "1E001",
  272. "1F001",
  273. "1K001",
  274. "1L001",
  275. "1H001",
  276. "1M001",
  277. "1J001",
  278. ],
  279. list1: [],
  280. list2: [],
  281. imgUrl:'',
  282. curCompanyear:'',
  283. getProList:'',
  284. curCompanMonth:null,
  285. showRes:0,
  286. showC:false,
  287. showIssue:0,
  288. showIssueSub:0,
  289. showIssueDeal:0,
  290. showCameraScreen:0,
  291. showCamera:0,
  292. showProject:0,
  293. menu: 0,
  294. showCost:0,
  295. showHealth:0,
  296. leftShow: true,
  297. rightShow: true,
  298. dialogShow: false,
  299. dialogType: 0,
  300. showCenter: false,
  301. showType: 0, //实时监控
  302. curDeep: 1,
  303. showBack: false,
  304. showMap: true,
  305. showLocal: false,
  306. dataList: [
  307. {
  308. name: "接入单位数量",
  309. num: "56",
  310. unit: "个",
  311. },
  312. {
  313. name: "应接入项目数量",
  314. num: "56",
  315. unit: "个",
  316. },
  317. {
  318. name: "已接入项目数量",
  319. num: "56",
  320. unit: "个",
  321. },
  322. {
  323. name: "接入摄像头数量",
  324. num: "56",
  325. unit: "个",
  326. },
  327. {
  328. name: "接入摄像头在线率",
  329. num: "56",
  330. unit: "%",
  331. },
  332. ],
  333. monitorInfo: {},
  334. monitorName: '',
  335. curCompany: [],
  336. company: [
  337. {
  338. "value": "10001",
  339. "label": "国网山西省电力公司",
  340. "children": [
  341. {
  342. "value": "10001",
  343. "label": "山西省公司(本部)",
  344. "poi": [112.316448, 38.000045],
  345. "city": "山西省"
  346. },
  347. {
  348. "value": "1A001",
  349. "label": "国网营销服务中心",
  350. "poi": [112.36677, 37.756826],
  351. "city": "太原市"
  352. },
  353. {
  354. "value": "1A002",
  355. "label": "国网超高压变电分公司",
  356. "poi": [112.555937, 37.785564],
  357. "city": "太原市"
  358. },
  359. {
  360. "value": "1A004",
  361. "label": "国网电力科学技术研究院",
  362. "poi": [112.567029, 37.858831],
  363. "city": "太原市"
  364. },
  365. {
  366. "value": "1A005",
  367. "label": "国网山西省电力公司党校",
  368. "poi": [112.56677, 38.056826],
  369. "city": "太原市"
  370. }
  371. ]
  372. }
  373. ]
  374. };
  375. },
  376. created() {
  377. this.$nextTick(() => {
  378. this.getProjectNum();
  379. this.getProjectNumX();
  380. this.getProjectNumZ();
  381. });
  382. },
  383. destroyed() {},
  384. beforeDestroy() {},
  385. mounted() {},
  386. methods: {
  387. handleCompanyChange(e){
  388. this.$refs.map.getProject(e[1])
  389. if (!e[1]){
  390. this.transmit('0000')
  391. return
  392. }
  393. this.transmit(e[1])
  394. },
  395. transmit(appOrg){
  396. if (appOrg === "0000"){
  397. this.menuFlag = true
  398. this.curCompany = []
  399. }
  400. this.appOrg = appOrg
  401. this.getProjectNum();
  402. this.getProjectNumX();
  403. },
  404. changeMenuFlag(){
  405. this.menuFlag = false
  406. },
  407. changeCurCompany(){
  408. this.curCompany = ['10001', '10001']
  409. this.transmit('10001')
  410. },
  411. //前期审批数量
  412. getProjectNum() {
  413. getProjectNum(this.appOrg).then((res) => {
  414. if (Number(res.code) === 200) {
  415. this.num = res.data;
  416. }
  417. });
  418. },
  419. getProjectNumX() {
  420. for (let i = 0; i < this.parest.length; i++){
  421. this.parest[i].num = 0
  422. }
  423. getProjectNumX(this.appOrg).then((res) => {
  424. if (Number(res.code) === 200) {
  425. const fetchedData = res.data;
  426. if (res.data.length > 0) {
  427. for (let i = 0; i < res.data.length; i++) {
  428. this.parest[fetchedData[i].subdivision - 1].num = fetchedData[i].num;
  429. }
  430. }
  431. else {
  432. for (let i = 0; i < this.parest.length; i++){
  433. this.parest[i].num = 0
  434. }
  435. }
  436. }
  437. });
  438. },
  439. getProjectNumY() {
  440. for (let i = 0; i < this.parest1.length; i++){
  441. this.parest1[i].num = 0
  442. }
  443. getProjectNumY(this.appOrg).then((res) => {
  444. if (Number(res.code) === 200) {
  445. const fetchedData = res.data;
  446. if (res.data.length > 0){
  447. for (let i = 0; i < res.data.length; i++) {
  448. this.parest1[fetchedData[i].subdivision-11].num= fetchedData[i].num;
  449. }
  450. }
  451. else {
  452. for (let i = 0; i < this.parest1.length; i++){
  453. this.parest1[i].num = 0
  454. }
  455. }
  456. }
  457. });
  458. },
  459. getProjectNumZ() {
  460. getProjectNumZ(this.mapArr).then((res) => {
  461. if (Number(res.code) === 200) {
  462. this.list1 = res.data.list1
  463. this.list2 = res.data.list2
  464. this.$refs.map.start();
  465. }
  466. });
  467. },
  468. chooseRes(){
  469. this.closeDialog()
  470. this.showC = true
  471. this.showRes = 1
  472. },
  473. chooseHealth(){
  474. this.closeDialog()
  475. this.showC = true
  476. this.showHealth = 1
  477. },
  478. onChooseUnit(f){
  479. this.curCompanyear = f;
  480. this.showC = true;
  481. this.showProject = 1;
  482. },
  483. onCloseRes(){
  484. this.showC = false
  485. this.showRes = 0
  486. },
  487. onCloseCost(){
  488. this.showC = false
  489. this.showCost = 0
  490. },
  491. onCloseHealth(){
  492. this.showC = false
  493. this.showHealth = 0
  494. },
  495. onChooseProject(e){
  496. this.curCompanMonth = e;
  497. this.showC = false
  498. this.showCenter = true;
  499. this.showType = 2;
  500. },
  501. onCloseProject(){
  502. this.showC = false;
  503. this.showProject = 0;
  504. },
  505. onChooseCamera(){
  506. this.showCameraScreen = 1;
  507. this.showCamera = 0;
  508. },
  509. onCloseCamera(){
  510. this.showProject = 1;
  511. this.showCamera = 0;
  512. },
  513. onCloseCameraScreen(){
  514. this.showCameraScreen = 0;
  515. this.showCamera = 1;
  516. },
  517. //入口
  518. onChooseIssue(t){
  519. this.imgUrl=t
  520. this.flag = 1
  521. this.showType = 0;
  522. this.showC = true;
  523. this.showProject=0
  524. this.showIssueSub = 1;
  525. },
  526. onChooseIssueList(){
  527. this.showC = true
  528. this.showIssue = 1
  529. },
  530. onCloseIssue(){
  531. this.showC = false
  532. this.showIssue = 0
  533. },
  534. //入口
  535. onSubIssue(){
  536. this.flag = 2
  537. this.showIssueSub = 1
  538. this.showIssue = 0
  539. },
  540. onDealIssue(u){
  541. this.getProList=u
  542. this.showIssueDeal = 1
  543. this.showIssue = 0
  544. },
  545. onCloseIssueSub(){
  546. this.showIssueSub = 0
  547. if (this.flag === 1){
  548. this.showC = false
  549. this.showCenter = false
  550. // this.showIssueSub=0
  551. }
  552. else if (this.flag === 2){
  553. this.showIssue = 1
  554. }
  555. else {
  556. }
  557. this.flag = 0
  558. },
  559. onCloseIssueDeal() {
  560. this.showIssueDeal = 0
  561. this.showIssue = 1
  562. },
  563. showDialog(type) {
  564. if (type === 1) {
  565. this.getProjectNumY();
  566. this.leftShow = false;
  567. this.rightShow = true;
  568. } else {
  569. this.rightShow = false;
  570. this.leftShow = true;
  571. }
  572. this.dialogShow = true;
  573. this.dialogType = type;
  574. },
  575. closeDialog() {
  576. this.leftShow = true;
  577. this.rightShow = true;
  578. this.dialogShow = false;
  579. },
  580. //关闭监控视频
  581. onCloseMonitor() {
  582. this.showCenter = false;
  583. this.showType = 0;
  584. },
  585. //关闭监控视频
  586. onCloseMonitor1() {
  587. this.showCenter = false;
  588. this.showC = true;
  589. this.showType = 0;
  590. },
  591. //显示列表
  592. onChooseAllMonitor() {
  593. this.showType = 2;
  594. },
  595. //选择视频列表
  596. onChooseMonitor(data) {
  597. this.showCenter = true;
  598. this.showType = 1;
  599. this.monitorInfo = data;
  600. },
  601. //点击地图事件
  602. onMapClick(e) {
  603. this.curDeep = e.deep;
  604. if (e.deep > 1) {
  605. this.showBack = true;
  606. } else {
  607. this.showBack = false;
  608. }
  609. //点击山西省本部
  610. if (e.name == "山西省公司(本部)") {
  611. this.showMap = false;
  612. this.showLocal = true;
  613. this.curCompany = ["10001", "10001"];
  614. this.appOrg = "10001";
  615. } else {
  616. this.showMap = true;
  617. this.showLocal = false;
  618. this.curCompany = e.curCompany;
  619. }
  620. //判断是否点击了子单位
  621. if (e.curCompany && e.curCompany.length > 0) {
  622. let appOrg = e.curCompany[e.curCompany.length - 1];
  623. this.appOrg = appOrg;
  624. }
  625. },
  626. //返回操作
  627. // onBack() {
  628. // this.curDeep = 1;
  629. // if (this.curDeep <= 1) {
  630. // this.showBack = false;
  631. // this.showMap = true;
  632. // this.showLocal = false;
  633. // this.curCompany = [];
  634. // }
  635. // this.appOrg = "0000";
  636. // this.$refs.province.reloadMap(this.curDeep);
  637. // },
  638. //选择公司
  639. // handleCompanyChange(e) {
  640. // console.log(e);
  641. // if (e && e.length > 0) {
  642. // if (e[1] == "10001") {
  643. // this.showMap = false;
  644. // this.showLocal = true;
  645. // this.showBack = true;
  646. // } else {
  647. // this.showMap = true;
  648. // this.showLocal = false;
  649. // }
  650. // let appOrg = e[e.length - 1];
  651. // this.appOrg = appOrg;
  652. // }
  653. // if(e[1] == "1A001" || e[1] == "1A002" || e[1] == "1A004" || e[1] == "1A005"){
  654. // this.showMap = true;
  655. // this.showLocal = false;
  656. // this.showBack = true;
  657. // // return;
  658. // }
  659. // this.$refs.province.chooseUnit(e);
  660. // },
  661. },
  662. };
  663. </script>
  664. <style lang="scss">
  665. .data-engineering {
  666. width: 100%;
  667. height: 100%;
  668. margin: 0 auto;
  669. // background-image: url("../../../assets/images/engineering/bg.jpg");
  670. // background-size: cover;
  671. display: flex;
  672. flex-direction: row;
  673. justify-content: space-between;
  674. .left {
  675. margin: 125px 0 0 40px;
  676. width: 580px;
  677. .left-cont {
  678. width: 100%;
  679. height: 920px;
  680. padding-top: 19px;
  681. background: url("../../../assets/images/main/main_bg.png") no-repeat;
  682. background-size: cover;
  683. }
  684. .components-item {
  685. width: 550px;
  686. height: 389px;
  687. background: url("../../../assets/images/main/components_mid_bg.png")
  688. no-repeat;
  689. background-size: cover;
  690. margin-bottom: 28px;
  691. margin-left: 15px;
  692. overflow: hidden;
  693. }
  694. .left-top {
  695. // width: 550px;
  696. // height: 915px;
  697. // background: url("../../../assets/images/main/right_top_new.png") no-repeat;
  698. // background-size: cover;
  699. // margin-bottom: 21px;
  700. }
  701. }
  702. .middle {
  703. //background: url('../../../assets/zhang/project_map.png') no-repeat center;
  704. display: flex;
  705. flex: 1;
  706. align-items: center;
  707. justify-content: center;
  708. padding: 125px 0 0 0px;
  709. position: relative;
  710. .bottom-area {
  711. width: 200px;
  712. position: absolute;
  713. right: 50px;
  714. left: 50px;
  715. bottom: 50px;
  716. .bottom-left {
  717. .left-item {
  718. width: 180px;
  719. height: 30px;
  720. background: url("../../../assets/images/main/choose_bg_long.png")
  721. no-repeat;
  722. background-size: cover;
  723. input {
  724. background: rgba(255, 255, 255, 0);
  725. border: none;
  726. color: #00ffff;
  727. }
  728. .el-input__icon {
  729. color: #00ffff;
  730. }
  731. }
  732. .office {
  733. margin-left: 10px;
  734. width: 180px;
  735. height: 30px;
  736. line-height: 30px;
  737. padding-left: 15px;
  738. color: #898989;
  739. background: url("../../../assets/images/main/choose_bg_long.png")
  740. no-repeat;
  741. background-size: cover;
  742. font-size: 14px;
  743. }
  744. }
  745. .bottom-right {
  746. .back {
  747. width: 34px;
  748. height: 30px;
  749. cursor: pointer;
  750. }
  751. }
  752. }
  753. .menu-area {
  754. padding: 0 30px;
  755. .rate-area {
  756. width: 20%;
  757. position: relative;
  758. cursor: pointer;
  759. img {
  760. width: 100%;
  761. }
  762. .rate {
  763. display: flex;
  764. flex-direction: column;
  765. align-items: center;
  766. justify-content: center;
  767. width: 100%;
  768. position: absolute;
  769. top: 5px;
  770. left: 0;
  771. color: #fff;
  772. .rate-data {
  773. display: flex;
  774. flex-direction: row;
  775. align-items: baseline;
  776. color: #00ffff;
  777. .data {
  778. font-size: 30px;
  779. font-family: "electronicFont";
  780. }
  781. .unit {
  782. font-size: 12px;
  783. }
  784. }
  785. }
  786. .desc {
  787. font-size: 12px;
  788. text-align: center;
  789. color: #00ffff;
  790. }
  791. }
  792. }
  793. }
  794. .right {
  795. margin: 125px 40px 0 0px;
  796. width: 580px;
  797. .right-cont {
  798. width: 100%;
  799. height: 920px;
  800. padding-top: 19px;
  801. background: url("../../../assets/images/main/main_bg.png") no-repeat;
  802. background-size: cover;
  803. }
  804. .components-item {
  805. width: 550px;
  806. height: 849px;
  807. background: url("../../../assets/images/main/components_long_bg.png")
  808. no-repeat;
  809. background-size: cover;
  810. margin-left: 15px;
  811. overflow: hidden;
  812. }
  813. .right-top {
  814. // width: 553px;
  815. // height: 915px;
  816. // background: url("../../../assets/images/main/right_top_new.png") no-repeat;
  817. // background-size: cover;
  818. // margin-bottom: 21px;
  819. }
  820. .right-bottom {
  821. // width: 553px;
  822. // height: 556px;
  823. // background: url("../../../assets/images/main/right_top_m.png") no-repeat;
  824. // background-size: cover;
  825. // margin-bottom: 21px;
  826. }
  827. }
  828. .dialog {
  829. position: fixed;
  830. top: 125px;
  831. left: 40px;
  832. z-index: 10;
  833. width: 100%;
  834. }
  835. .dialog-r {
  836. position: fixed;
  837. top: 125px;
  838. right: 40px;
  839. z-index: 10;
  840. width: 100%;
  841. display: flex;
  842. justify-content: flex-end;
  843. }
  844. .dialog-2 {
  845. position: fixed;
  846. left: 0;
  847. top: 0;
  848. right: 0;
  849. bottom: 0;
  850. z-index: 9999;
  851. display: flex;
  852. flex-direction: row;
  853. align-items: center;
  854. justify-content: center;
  855. background: rgba(0, 0, 0, 0.7);
  856. }
  857. .img-area {
  858. height: 850px;
  859. .build {
  860. margin: 0 auto;
  861. width: 90%;
  862. height: auto;
  863. object-fit: contain;
  864. }
  865. }
  866. .cont-title-area {
  867. display: flex;
  868. flex-direction: row;
  869. align-items: center;
  870. justify-content: center;
  871. position: relative;
  872. margin-bottom: 10px;
  873. img {
  874. width: 331px;
  875. height: 32px;
  876. }
  877. .cont-title {
  878. font-size: 20px;
  879. font-weight: 900;
  880. font-family: "PingFangSC";
  881. width: 100%;
  882. position: absolute;
  883. display: flex;
  884. align-items: center;
  885. justify-content: center;
  886. top: -5px;
  887. color: #fff;
  888. }
  889. }
  890. ::-webkit-scrollbar {
  891. width: 3px;
  892. height: 3px;
  893. }
  894. ::-webkit-scrollbar-thumb {
  895. //滑块部分
  896. // border-radius: 5px;
  897. background-color: #58cbbb;
  898. }
  899. ::-webkit-scrollbar-track {
  900. //轨道部分
  901. // box-shadow: inset 0 0 5px #ddd;
  902. background: #ddd;
  903. // border-radius: 5px;
  904. }
  905. }
  906. .dropDown .el-cascader-panel{
  907. height: 150px !important;
  908. }
  909. </style>