Browse Source

神东6.0公司端首页接口对接-更新

lxh 1 year ago
parent
commit
5028733a47

+ 146 - 20
src/views/vent/home/clique/components/risk-warn.vue

@@ -1,6 +1,16 @@
 <template>
   <div class="riskWarn">
     <div class="risk-title">{{ riskTitle }}</div>
+    <div class="risk-select">
+
+      <a-select style="width: 388px;" v-model:value="selectVal" allowClear class="code-mode-select" @change="changeSelect">
+        <a-select-option v-for="item in selectList" :value="item.value">{{
+      item.label
+    }}
+        </a-select-option>
+      </a-select>
+
+    </div>
     <div class="risk-content">
       <div class="center-box">
         <div class="animation-box">
@@ -117,13 +127,18 @@ import { rainBg } from '/@/utils/ui.js';
 
 let props = defineProps({
   earlyWarn: {
-    type: Object,
+    type: Array,
     default: () => {
-      return {}
+      return []
     }
   }
 })
 
+let selectVal = ref('')
+let selectList = reactive<any[]>([])
+let warnData=ref<any[]>([])
+
+
 let riskTitle = ref('一通三防风险分析与预警');
 let centerData = reactive({
   levels: 0,
@@ -134,14 +149,46 @@ let centerData = reactive({
   tf: '',
 });
 
+//下拉框选项切换
+function changeSelect(val){
+  selectVal.value =val
+  let datas = warnData.value.filter(v => v.orgname == selectVal.value)[0]
+      centerData.levels = datas.sys_warndata.info.sysInfo.synthesizeS.maxLevel
+      centerData.fire = datas.sys_warndata.info.sysInfo.fireS.maxLevel_str
+      centerData.sb = datas.sys_warndata.info.sysInfo.deviceWarnInfo.maxLevel_str
+      centerData.ws = datas.sys_warndata.info.sysInfo.gasS.maxLevel_str
+      centerData.fc = datas.sys_warndata.info.sysInfo.dustS.maxLevel_str
+      centerData.tf = datas.sys_warndata.info.sysInfo.ventS.maxLevel_str
+}
+
 watch(() => props.earlyWarn, (newE, oldE) => {
   console.log(newE, '预警与分析数据------------')
-  centerData.levels = newE.levels
-  centerData.fire = newE.fire
-  centerData.sb = newE.sb
-  centerData.ws = newE.ws
-  centerData.fc = newE.fc
-  centerData.tf = newE.tf
+  if (newE.length != 0) {
+    selectList.length = 0
+    warnData.value=newE
+    newE.forEach(el => {
+      selectList.push({ label: el.orgname, value: el.orgname })
+    })
+    if (selectVal.value) {
+      let datas = newE.filter(v => v.orgname == selectVal.value)[0]
+      centerData.levels = datas.sys_warndata.info.sysInfo.synthesizeS.maxLevel
+      centerData.fire = datas.sys_warndata.info.sysInfo.fireS.maxLevel_str
+      centerData.sb = datas.sys_warndata.info.sysInfo.deviceWarnInfo.maxLevel_str
+      centerData.ws = datas.sys_warndata.info.sysInfo.gasS.maxLevel_str
+      centerData.fc = datas.sys_warndata.info.sysInfo.dustS.maxLevel_str
+      centerData.tf = datas.sys_warndata.info.sysInfo.ventS.maxLevel_str
+
+    } else {
+      selectVal.value = selectList[0].value
+      centerData.levels = newE[0].sys_warndata.info.sysInfo.synthesizeS.maxLevel
+      centerData.fire = newE[0].sys_warndata.info.sysInfo.fireS.maxLevel_str
+      centerData.sb = newE[0].sys_warndata.info.sysInfo.deviceWarnInfo.maxLevel_str
+      centerData.ws = newE[0].sys_warndata.info.sysInfo.gasS.maxLevel_str
+      centerData.fc = newE[0].sys_warndata.info.sysInfo.dustS.maxLevel_str
+      centerData.tf = newE[0].sys_warndata.info.sysInfo.ventS.maxLevel_str
+    }
+  }
+
 }, {
   immediate: true,
   deep: true
@@ -172,6 +219,32 @@ onMounted(async () => {
     font-size: 14px;
   }
 
+  .risk-select {
+    position: absolute;
+    width: 95%;
+    height: 30px;
+    left: 50%;
+    transform: translate(-50%, 0);
+    top: 42px;
+
+    // display: flex;
+    // justify-content: space-between;
+    // align-items: center;
+    background: url('../../../../../assets/images/company/content-label.png') no-repeat center;
+    background-size: 100% 100%;
+    z-index: 9999;
+
+    .zxm-select {
+      position: absolute;
+      top: 50%;
+      transform: translate(0, -50%);
+
+      &:nth-child(1) {
+        left: 10px;
+      }
+    }
+  }
+
   .risk-content {
     height: 100%;
     padding: 55px 0px 20px 0px;
@@ -209,13 +282,22 @@ onMounted(async () => {
           z-index: 999;
 
           &::before {
+            // content: '';
+            // width: 230px;
+            // height: 234px;
+            // position: absolute;
+            // left: 112px;
+            // top: -19px;
+            // background: url('/@/assets/images/vent/alarm/warning-bg.png') no-repeat;
+            // background-size: 92% 100%;
+
             content: '';
-            width: 230px;
-            height: 234px;
+            width: 210px;
+            height: 220px;
             position: absolute;
-            left: 112px;
-            top: -19px;
-            background: url('/@/assets/images/vent/alarm/warning-bg.png') no-repeat;
+            left: 121px;
+            top: 17px;
+            background: url(/src/assets/images/vent/alarm/warning-bg.png) no-repeat;
             background-size: 92% 100%;
           }
 
@@ -268,7 +350,7 @@ onMounted(async () => {
             flex-direction: column;
             color: #fff;
             align-items: center;
-            margin-top: 52px;
+            margin-top: 82px;
 
             .text1 {
               font-size: 18px;
@@ -284,10 +366,12 @@ onMounted(async () => {
           }
 
           .icon-animation {
-            width: 118px;
-            height: 129px;
+            // width: 118px;
+            // height: 129px;
+            width: 115px;
+            height: 111px;
             margin: 0 auto;
-            top: -90px;
+            top: -84px;
             left: 2px;
             position: relative;
             animation: 0.5s linear 0s infinite alternate iconMove;
@@ -329,9 +413,12 @@ onMounted(async () => {
         }
 
         .bottom3 {
-          background-image: url('/@/assets/images/vent/alarm/warning-icon-bg3.png');
-          background-size: 80% 100%;
-          background-position: 50% 0%;
+          // background-image: url('/@/assets/images/vent/alarm/warning-icon-bg3.png');
+          // background-size: 80% 100%;
+          // background-position: 50% 0%;
+          background-image: url(/src/assets/images/vent/alarm/warning-icon-bg3.png);
+          background-size: 75% 85%;
+          background-position: 50% 115%;
 
           .icon-animation {
             background: url('/@/assets/images/vent/alarm/warning-icon-bg-a3.png');
@@ -643,4 +730,43 @@ onMounted(async () => {
     }
   }
 }
+
+::v-deep .zxm-select-single:not(.zxm-select-customize-input) .zxm-select-selector {
+  height: 24px;
+}
+
+::v-deep .zxm-select-single:not(.zxm-select-customize-input) .zxm-select-selector .zxm-select-selection-search-input {
+  height: 24px;
+}
+
+::v-deep .zxm-select-selection-placeholder {
+  color: #fff !important;
+  line-height: 22px !important;
+}
+
+::v-deep .zxm-select-single:not(.zxm-select-customize-input) .zxm-select-selector::after {
+  line-height: 24px;
+}
+
+::v-deep .zxm-select:not(.zxm-select-customize-input) .zxm-select-selector {
+  background-color: transparent;
+  border-top: 0px;
+  border-bottom: 0px;
+  border-left: 2px solid;
+  border-right: 2px solid;
+  border-image: linear-gradient(to bottom, transparent, rgba(49, 184, 255, 1), transparent) 1 1 1;
+
+}
+
+::v-deep .zxm-select-arrow {
+  color: #fff !important;
+}
+
+::v-deep .zxm-select-selection-item {
+  color: #fff !important
+}
+
+::v-deep .zxm-select-single .zxm-select-selector .zxm-select-selection-item {
+  line-height: 24px !important;
+}
 </style>

+ 19 - 18
src/views/vent/home/clique/components/scene-key.vue

@@ -4,8 +4,9 @@
     <div class="scene-content">
       <div class="content-t">
 
-        <a-select style="width: 372px;" v-model:value="selectVal" allowClear class="code-mode-select" @change="changeSelect" >
-          <a-select-option v-for="item in selectList"  :value="item.value">{{
+        <a-select style="width: 372px;" v-model:value="selectVal" allowClear class="code-mode-select"
+          @change="changeSelect">
+          <a-select-option v-for="item in selectList" :value="item.value">{{
       item.label
     }}
           </a-select-option>
@@ -61,7 +62,7 @@ let sceneList = reactive([
 
 let selectVal = ref('')
 let selectList = reactive<any[]>([])
-let compositeDatas=ref<any[]>([])
+let compositeDatas = ref<any[]>([])
 
 //图表数据
 let echartData = reactive({
@@ -72,34 +73,34 @@ let echartData = reactive({
 })
 
 //下拉选项切换
-function changeSelect(val){
-  console.log(val,'下拉选项')
-  selectVal.value=val
-  let datas=compositeDatas.value.filter(v=>v.deviceName==selectVal.value)[0]
-      echartData.jfq = datas.majorpath.drag_1
-      echartData.yfq = datas.majorpath.drag_2
-      echartData.hfq = datas.majorpath.drag_3
-      echartData.zf =datas.majorpath.drag_total
-
-      sceneList[0].value = datas.majorpath.drag_total
-      sceneList[1].value = datas.majorpath.m3_total
-      sceneList[2].value = Math.round(((1.19 * sceneList[1].value) / 60 / Math.sqrt(sceneList[0].value)) * 100) / 100
+function changeSelect(val) {
+  console.log(val, '下拉选项')
+  selectVal.value = val
+  let datas = compositeDatas.value.filter(v => v.deviceName == selectVal.value)[0]
+  echartData.jfq = datas.majorpath.drag_1
+  echartData.yfq = datas.majorpath.drag_2
+  echartData.hfq = datas.majorpath.drag_3
+  echartData.zf = datas.majorpath.drag_total
+
+  sceneList[0].value = datas.majorpath.drag_total
+  sceneList[1].value = datas.majorpath.m3_total
+  sceneList[2].value = Math.round(((1.19 * sceneList[1].value) / 60 / Math.sqrt(sceneList[0].value)) * 100) / 100
 }
 
 watch(() => props.compositeData, (newS, oldS) => {
   console.log(newS, '综合监测数据------------')
-  compositeDatas.value=newS
+  compositeDatas.value = newS
   if (newS.length != 0) {
     selectList.length = 0
     newS.forEach(el => {
       selectList.push({ label: el.deviceName, value: el.deviceName })
     })
     if (selectVal.value) {
-      let datas=newS.filter(v=>v.deviceName==selectVal.value)[0]
+      let datas = newS.filter(v => v.deviceName == selectVal.value)[0]
       echartData.jfq = datas.majorpath.drag_1
       echartData.yfq = datas.majorpath.drag_2
       echartData.hfq = datas.majorpath.drag_3
-      echartData.zf =datas.majorpath.drag_total
+      echartData.zf = datas.majorpath.drag_total
 
       sceneList[0].value = datas.majorpath.drag_total
       sceneList[1].value = datas.majorpath.m3_total

+ 196 - 208
src/views/vent/home/clique/index.vue

@@ -8,11 +8,11 @@
         <div class="left-area">
           <!-- 矿井通风状态监测 -->
           <div class="area-card">
-            <mineWind :airKjStatus="airKjStatus"/>
+            <mineWind :airKjStatus="airKjStatus" />
           </div>
           <!-- 一通三防风险分析与预警 -->
           <div class="area-card1">
-            <riskWarn :earlyWarn="earlyWarn"/>
+            <riskWarn :earlyWarn="earlyWarn" />
           </div>
         </div>
         <div class="center-area">
@@ -34,11 +34,11 @@
         <div class="right-area">
           <!-- 关键场景通防综合监测 -->
           <div class="area-card">
-            <sceneKey :compositeData="compositeData"/>
+            <sceneKey :compositeData="compositeData" />
           </div>
           <!-- 通风巷道长度统计 -->
           <div class="area-card1">
-            <windRoad :roadData="roadData"/>
+            <windRoad :roadData="roadData" />
           </div>
         </div>
       </div>
@@ -49,48 +49,41 @@
   </div>
 </template>
 <script lang="ts" setup>
-  import { ref, reactive, nextTick,onMounted,onUnmounted } from 'vue';
-  import mineWind from './components/mine-wind.vue';
-  import riskWarn from './components/risk-warn.vue';
-  import fileShare from './components/file-share.vue';
-  import windRoad from './components/wind-road.vue';
-  import sceneKey from './components/scene-key.vue';
-  import iconLight from './components/icon-light.vue';
-  import dialogModal from './components/dialog-modal.vue';
-  import {getHomeData,getList} from './clique.api'
-  const dialogModalRef = ref();
-  // let mainTitle = ref('国家能源神东煤炭集团');
-  let mainTitle = ref('XXXX集团');
-  const isShowDialog = ref(false);
+import { ref, reactive, nextTick, onMounted, onUnmounted } from 'vue';
+import mineWind from './components/mine-wind.vue';
+import riskWarn from './components/risk-warn.vue';
+import fileShare from './components/file-share.vue';
+import windRoad from './components/wind-road.vue';
+import sceneKey from './components/scene-key.vue';
+import iconLight from './components/icon-light.vue';
+import dialogModal from './components/dialog-modal.vue';
+import { getHomeData, getList } from './clique.api'
+const dialogModalRef = ref();
+// let mainTitle = ref('国家能源神东煤炭集团');
+let mainTitle = ref('XXXX集团');
+const isShowDialog = ref(false);
 
-  //矿井通风状态数据
-  let airKjStatus=reactive<any[]>([])
+//矿井通风状态数据
+let airKjStatus = reactive<any[]>([])
 
-  //风险分析与预警数据
-  let earlyWarn=reactive({
-    levels: 0,
-    fire: '',
-    sb: '',
-    ws: '',
-    fc: '',
-    tf: '',
-  })
+//风险分析与预警数据
+let earlyWarn = ref<any[]>([])
 
-  //通防综合监测数据
-  let compositeData=ref<any[]>([])
+//通防综合监测数据
+let compositeData = ref<any[]>([])
 
-  //地图区域详情数据
-  let centerDetail=ref({})
+//地图区域详情数据
+let centerDetail = ref({})
 
-  //文件共享中心数据
-  let shareData=reactive<any[]>([])
+//文件共享中心数据
+let shareData = reactive<any[]>([])
 
-  //通风巷道长度统计数据
-  let roadData=reactive({
-    totallength:0,
-    data:[],
-    data1:[]
-  })
+//通风巷道长度统计数据
+let roadData = reactive({
+  totallength: 0,
+  data: [],
+  data1: []
+})
 
 // https获取监测数据
 let timer: null | NodeJS.Timeout = null;
@@ -109,68 +102,56 @@ function getMonitor() {
 }
 
 //获取公司端首页数据
-async function getHomeDataList(){
-  let res=await getHomeData()
-  console.log(res,'公司端首页数据----------')
-  if(res.length!=0){
-    earlyWarn.levels=res[0].sys_warndata.info.sysInfo.synthesizeS.maxLevel
-    earlyWarn.fire=res[0].sys_warndata.info.sysInfo.fireS.maxLevel_str
-    earlyWarn.sb=res[0].sys_warndata.info.sysInfo.deviceWarnInfo.maxLevel_str
-    earlyWarn.ws=res[0].sys_warndata.info.sysInfo.gasS.maxLevel_str
-    earlyWarn.fc=res[0].sys_warndata.info.sysInfo.dustS.maxLevel_str
-    earlyWarn.tf=res[0].sys_warndata.info.sysInfo.ventS.maxLevel_str
-
-    roadData.totallength=res[0].sys_data.totallength
-    roadData.data.length=0
-    roadData.data1.length=0
-
-    airKjStatus.length=0
-    res.forEach(el=>{
-      airKjStatus.push({deviceName:el.sys_data.deviceName,jf:el.sys_data.zongjinfeng,xf:el.sys_data.xufengliang,hf:el.sys_data.zonghuifeng})
+async function getHomeDataList() {
+  let res = await getHomeData()
+  console.log(res, '公司端首页数据----------')
+  if (res.length != 0) {
+    earlyWarn.value = res
+    roadData.totallength = res[0].sys_data.totallength
+    roadData.data.length = 0
+    roadData.data1.length = 0
+    airKjStatus.length = 0
+    res.forEach(el => {
+      airKjStatus.push({ deviceName: el.sys_data.deviceName, jf: el.sys_data.zongjinfeng, xf: el.sys_data.xufengliang, hf: el.sys_data.zonghuifeng })
       roadData.data.push(el.sys_data.totallength)
       roadData.data1.push(el.sys_data.deviceName)
     })
-   
-    compositeData.value=res[0].majorpath_data
-    centerDetail.value=res[0]
-
- 
-    
+    compositeData.value = res[0].majorpath_data
+    centerDetail.value = res[0]
   }
-  
 }
 //获取文件共享中心数据
-async function getLists(){
-  let res=await getList()
-  if(res.length!=0){
-    shareData.length=0
-    res.forEach(el=>{
-      shareData.push({title:el.sysOrgName,value:el.tolalNum,value1:el.approveNum})
+async function getLists() {
+  let res = await getList()
+  if (res.length != 0) {
+    shareData.length = 0
+    res.forEach(el => {
+      shareData.push({ title: el.sysOrgName, value: el.tolalNum, value1: el.approveNum })
     })
   }
 }
 
 
-  function showDetail(code, leftV, topV) {
-    if (code) {
-      isShowDialog.value = true;
-    }
-    nextTick(() => {
-      const tooltipDom = document.getElementById('detailModal') as HTMLElement;
-      tooltipDom.style.left = leftV;
-      tooltipDom.style.top = topV;
-    });
-  }
-  function closeDialog() {
-    isShowDialog.value = false;
+function showDetail(code, leftV, topV) {
+  if (code) {
+    isShowDialog.value = true;
   }
+  nextTick(() => {
+    const tooltipDom = document.getElementById('detailModal') as HTMLElement;
+    tooltipDom.style.left = leftV;
+    tooltipDom.style.top = topV;
+  });
+}
+function closeDialog() {
+  isShowDialog.value = false;
+}
 
-  onMounted(()=>{
-    getHomeDataList()
-    getLists()
-    getMonitor()
-  })
-  onUnmounted(() => {
+onMounted(() => {
+  getHomeDataList()
+  getLists()
+  getMonitor()
+})
+onUnmounted(() => {
   if (timer) {
     clearTimeout(timer);
     timer = null;
@@ -178,149 +159,156 @@ async function getLists(){
 });
 </script>
 <style lang="less" scoped>
-  @font-face {
-    font-family: 'douyuFont';
-    src: url('../../../../assets/font/douyuFont.otf');
+@font-face {
+  font-family: 'douyuFont';
+  src: url('../../../../assets/font/douyuFont.otf');
+}
+
+// @font-face {
+//   font-family: 'yjsz';
+//   src: url('../../../../assets/font/yjsz.TTF');
+// }
+.company-home {
+  width: 100%;
+  height: 100%;
+  position: relative;
+  background: url('../../../../assets/images/company/home-pageBg.png') no-repeat center;
+  background-size: 100% 100%;
+
+  .top-bg {
+    width: 100%;
+    height: 97px;
+    background: url('../../../../assets/images/company/top-bg.png') no-repeat center;
+    position: absolute;
+    z-index: 1;
+
+    .main-title {
+      height: 96px;
+      color: #fff;
+      font-family: 'douyuFont';
+      font-size: 20px;
+      letter-spacing: 2px;
+      display: flex;
+      justify-content: center;
+      align-items: center;
+    }
   }
 
-  // @font-face {
-  //   font-family: 'yjsz';
-  //   src: url('../../../../assets/font/yjsz.TTF');
-  // }
-  .company-home {
+  .company-content {
+    position: absolute;
+    left: 0;
+    top: 0;
     width: 100%;
     height: 100%;
-    position: relative;
-    background: url('../../../../assets/images/company/home-pageBg.png') no-repeat center;
+    background: url('../../../../assets/images/company/content-bg.png') no-repeat;
     background-size: 100% 100%;
 
-    .top-bg {
-      width: 100%;
-      height: 97px;
-      background: url('../../../../assets/images/company/top-bg.png') no-repeat center;
-      position: absolute;
-      z-index: 1;
-      .main-title {
-        height: 96px;
-        color: #fff;
-        font-family: 'douyuFont';
-        font-size: 20px;
-        letter-spacing: 2px;
-        display: flex;
-        justify-content: center;
-        align-items: center;
-      }
-    }
-
-    .company-content {
+    .area-content {
       position: absolute;
-      left: 0;
-      top: 0;
+      top: 45px;
       width: 100%;
-      height: 100%;
-      background: url('../../../../assets/images/company/content-bg.png') no-repeat;
-      background-size: 100% 100%;
+      height: calc(100% - 45px);
+      padding: 0px 20px 20px 20px;
+      box-sizing: border-box;
+      display: flex;
+      justify-content: space-between;
 
-      .area-content {
-        position: absolute;
-        top: 45px;
-        width: 100%;
-        height: calc(100% - 45px);
-        padding: 0px 20px 20px 20px;
-        box-sizing: border-box;
+      .left-area {
+        width: 23%;
+        height: 100%;
+        margin-right: 15px;
         display: flex;
+        flex-direction: column;
         justify-content: space-between;
-        .left-area {
-          width: 23%;
-          height: 100%;
-          margin-right: 15px;
-          display: flex;
-          flex-direction: column;
-          justify-content: space-between;
-          align-items: center;
-          .area-card {
-            width: 100%;
-            height: calc(60% - 15px);
-            margin-bottom: 15px;
-            background: url('../../../../assets/images/company/area-card.png') no-repeat;
-            background-size: 100% 100%;
-          }
+        align-items: center;
 
-          .area-card1 {
-            width: 100%;
-            height: 40%;
-            background: url('../../../../assets/images/company/area-card1.png') no-repeat;
-            background-size: 100% 100%;
-          }
+        .area-card {
+          width: 100%;
+          height: calc(60% - 15px);
+          margin-bottom: 15px;
+          background: url('../../../../assets/images/company/area-card.png') no-repeat;
+          background-size: 100% 100%;
         }
 
-        .center-area {
-          width: calc(54% - 30px);
-          height: 100%;
-          position: relative;
-          .center-bg {
-            position: absolute;
-            bottom: 269px;
-            left: 50%;
-            transform: translate(-50%, 0);
-            height: calc(100% - 325px);
-            width: 100%;
-            background: url('../../../../assets/images/company/home-dz.png') no-repeat center;
-            background-position: 50% 90%;
-            .bg-map {
-              width: 100%;
-              height: 100%;
-              background: url('../../../../assets/images/company/home-map.png') no-repeat center;
-              background-size: 100% 100%;
-            }
-          }
-          .area-card2 {
-            position: absolute;
-            right: 0;
-            top: 62px;
-            width: 568px;
-            height: 437px;
-            background: url('../../../../assets/images/company/area-card2.png') no-repeat;
-            background-size: 100% 100%;
-            // pointer-events: auto;
-          }
+        .area-card1 {
+          width: 100%;
+          height: 40%;
+          background: url('../../../../assets/images/company/area-card1.png') no-repeat;
+          background-size: 100% 100%;
+        }
+      }
 
-          .area-card3 {
-            position: absolute;
-            right: 0;
-            bottom: 0px;
+      .center-area {
+        width: calc(54% - 30px);
+        height: 100%;
+        position: relative;
+
+        .center-bg {
+          position: absolute;
+          bottom: 269px;
+          left: 50%;
+          transform: translate(-50%, 0);
+          height: calc(100% - 325px);
+          width: 100%;
+          background: url('../../../../assets/images/company/home-dz.png') no-repeat center;
+          background-position: 50% 90%;
+
+          .bg-map {
             width: 100%;
-            height: 269px;
-            background: url('../../../../assets/images/company/area-card3.png') no-repeat;
+            height: 100%;
+            background: url('../../../../assets/images/company/home-map.png') no-repeat center;
             background-size: 100% 100%;
           }
         }
 
-        .right-area {
-          width: 23%;
-          height: 100%;
-          margin-left: 15px;
-          display: flex;
-          flex-direction: column;
-          justify-content: space-between;
-          align-items: center;
+        .area-card2 {
+          position: absolute;
+          right: 0;
+          top: 62px;
+          width: 568px;
+          height: 437px;
+          background: url('../../../../assets/images/company/area-card2.png') no-repeat;
+          background-size: 100% 100%;
           // pointer-events: auto;
-          .area-card {
-            width: 100%;
-            height: calc(60% - 15px);
-            margin-bottom: 15px;
-            background: url('../../../../assets/images/company/area-card.png') no-repeat;
-            background-size: 100% 100%;
-          }
+        }
 
-          .area-card1 {
-            width: 100%;
-            height: 40%;
-            background: url('../../../../assets/images/company/area-card1.png') no-repeat;
-            background-size: 100% 100%;
-          }
+        .area-card3 {
+          position: absolute;
+          right: 0;
+          bottom: 0px;
+          width: 100%;
+          height: 269px;
+          background: url('../../../../assets/images/company/area-card3.png') no-repeat;
+          background-size: 100% 100%;
+        }
+      }
+
+      .right-area {
+        width: 23%;
+        height: 100%;
+        margin-left: 15px;
+        display: flex;
+        flex-direction: column;
+        justify-content: space-between;
+        align-items: center;
+
+        // pointer-events: auto;
+        .area-card {
+          width: 100%;
+          height: calc(60% - 15px);
+          margin-bottom: 15px;
+          background: url('../../../../assets/images/company/area-card.png') no-repeat;
+          background-size: 100% 100%;
+        }
+
+        .area-card1 {
+          width: 100%;
+          height: 40%;
+          background: url('../../../../assets/images/company/area-card1.png') no-repeat;
+          background-size: 100% 100%;
         }
       }
     }
   }
+}
 </style>