Hwf 8 hónapja
szülő
commit
df2655896a

+ 1 - 1
.env.production

@@ -14,7 +14,7 @@ VITE_APP_MONITOR_ADMIN = '/admin/applications'
 VITE_APP_SNAILJOB_ADMIN = '/snail-job'
 
 # 生产环境
-VITE_APP_BASE_API = 'http://19.155.220.206'
+VITE_APP_BASE_API = '/'
 
 # 是否在打包时开启压缩,支持 gzip 和 brotli
 VITE_BUILD_COMPRESS = gzip

BIN
src/assets/images/commandDynamic/dialog.png


BIN
src/assets/images/inputIcon1.png


BIN
src/assets/images/inputIcon2.png


BIN
src/assets/images/plan/btn.png


BIN
src/assets/images/plan/dialog.png


BIN
src/assets/images/plan/tab.png


BIN
src/assets/images/plan/tab2.png


BIN
src/assets/images/plan/tab2Active.png


BIN
src/assets/images/plan/tabActive.png


BIN
src/assets/images/plan/titleBox.png


BIN
src/assets/images/select.png


+ 74 - 0
src/assets/styles/element-ui.scss

@@ -175,3 +175,77 @@
     display: none;
   }
 }
+
+
+.custom-select {
+  .el-select__wrapper {
+    box-shadow: none !important;
+    background-color: rgba(26, 144, 255, 0.15) !important;
+    border: 4px solid rgba(26, 144, 255, 0.15) !important;
+    border-radius: 0;
+    position: relative;
+    padding: 4px 24px !important;
+    &::before {
+      content: '';
+      position: absolute;
+      top: 0;
+      left: 0;
+      width: 12px;
+      height: 12px;
+      background: url('@/assets/images/inputIcon1.png') no-repeat;
+    }
+    &::after {
+      content: '';
+      position: absolute;
+      right: 0;
+      bottom: 0;
+      width: 12px;
+      height: 12px;
+      background: url('@/assets/images/inputIcon2.png') no-repeat;
+    }
+    .el-select__placeholder {
+      color: #a0c7dc;
+      font-size: 36px;
+      height: 80px;
+      line-height: 80px;
+    }
+    .el-select__suffix {
+      &::after {
+        content: '';
+        width: 28px;
+        height: 48px;
+        background: url('@/assets/images/select.png') no-repeat;
+      }
+      .el-icon {
+        display: none;
+      }
+    }
+  }
+  .el-select__wrapper.is-hovering, .el-select__wrapper.is-focused {
+    color: #b1cae0 !important;
+    background-color: #0d1d4e !important;
+    border: 4px solid #2C81FF !important;
+  }
+}
+
+.el-select__popper.el-popper {
+  background-color: rgba(5, 18, 53, 0.85) !important;
+  border: 4px solid #2C81FF !important;
+  border-radius: 0;
+  box-shadow:inset  0 0 40px rgba(26, 144, 255, 0.5) !important;
+  .el-select-dropdown__item {
+    color: #b1cae0;
+    font-size: 36px;
+    height: 80px;
+    line-height: 80px;
+  }
+  .el-select-dropdown__item.is-selected, .el-select-dropdown__item.is-hovering {
+    color: #7af0e9;
+    background-color: #1c335f;
+    font-weight: normal;
+  }
+}
+
+.custom-tabs {
+  width: 100%;
+}

+ 6 - 6
src/components/Map/YMap.vue

@@ -34,7 +34,7 @@ const props = withDefaults(defineProps<Props>(), {});
 
 const mapState = reactive({
   center: [110.93154257997, 21.669064031332],
-  zoom: 9,
+  zoom: 10,
   minZoom: 6,
   maxZoom: 16,
   isThreeDimensional: false,
@@ -88,12 +88,12 @@ const switchMap = (type) => {
   if (type === 'satellite2') {
     queryParamsArr = [
       {
-        serviceCode: 'YZT1715739306532'
+        serviceCode: 'YZT1708679726700'
       },
-      {
-        serviceCode: 'YZT1695608158269',
-        REQUEST: 'GetCapabilities'
-      }
+      // {
+      //   serviceCode: 'YZT1695608158269',
+      //   REQUEST: 'GetCapabilities'
+      // }
     ];
   }
   if (!wmtsManager) {

+ 5 - 0
src/types/components.d.ts

@@ -45,6 +45,9 @@ declare module 'vue' {
     ElMenuItem: typeof import('element-plus/es')['ElMenuItem']
     ElOption: typeof import('element-plus/es')['ElOption']
     ElPagination: typeof import('element-plus/es')['ElPagination']
+    ElPopover: typeof import('element-plus/es')['ElPopover']
+    ElRadio: typeof import('element-plus/es')['ElRadio']
+    ElRadioGroup: typeof import('element-plus/es')['ElRadioGroup']
     ElRow: typeof import('element-plus/es')['ElRow']
     ElScrollbar: typeof import('element-plus/es')['ElScrollbar']
     ElSelect: typeof import('element-plus/es')['ElSelect']
@@ -64,6 +67,7 @@ declare module 'vue' {
     ElTimelineItem: typeof import('element-plus/es')['ElTimelineItem']
     ElTooltip: typeof import('element-plus/es')['ElTooltip']
     ElTree: typeof import('element-plus/es')['ElTree']
+    ElTreeSelect: typeof import('element-plus/es')['ElTreeSelect']
     ElUpload: typeof import('element-plus/es')['ElUpload']
     FileUpload: typeof import('./../components/FileUpload/index.vue')['default']
     FooterSection: typeof import('./../components/FooterSection/index.vue')['default']
@@ -74,6 +78,7 @@ declare module 'vue' {
     HikvisionPlayer: typeof import('./../components/HKVideo/hikvision-player.vue')['default']
     HKVideo: typeof import('./../components/HKVideo/index.vue')['default']
     IconSelect: typeof import('./../components/IconSelect/index.vue')['default']
+    IEpUploadFilled: typeof import('~icons/ep/upload-filled')['default']
     IFrame: typeof import('./../components/iFrame/index.vue')['default']
     ImagePreview: typeof import('./../components/ImagePreview/index.vue')['default']
     ImageUpload: typeof import('./../components/ImageUpload/index.vue')['default']

+ 8 - 8
src/views/emergencyCommandMap/RightSection/RenWuGenZong.vue

@@ -76,14 +76,14 @@ const fetchData = async () => {
 };
 
 // 更新任务列表
-const updateTask = (tasks) => {
-  notifications.value = tasks.map((task) => ({
-    unit: tasks.unit_name,
-    date: tasks.update_time,
-    status: task.processing_status,
-    content: task.task_description
-  }));
-};
+// const updateTask = (tasks) => {
+//   notifications.value = tasks.map((task) => ({
+//     unit: tasks.unit_name,
+//     date: tasks.update_time,
+//     status: task.processing_status,
+//     content: task.task_description
+//   }));
+// };
 
 // 更新任务
 const updateTask = async (index) => {

+ 213 - 103
src/views/emergencyCommandMap/RightSection/StartPlan.vue

@@ -1,73 +1,42 @@
 <template>
-  <el-dialog ref="dialogRef" v-model="show" :title="title" width="1000px" append-to-body @close="onClose">
+  <div class="dialog">
+    <div class="title gradient-text">启动预案</div>
+    <div class="close-icon" @click="onClose"></div>
+    <!-- 响应等级选择和操作按钮 -->
+    <div class="section-box">
+      <div class="title2">响应等级</div>
+      <el-select v-model="selectedLevel" placeholder="请选择响应等级" class="custom-select" style="width: 1200px;margin-left: 30px">
+        <el-option v-for="level in responseLevels" :key="level.value" :label="level.name" :value="level.value"></el-option>
+      </el-select>
+      <div class="btn" @click="onStartPlan">启动预案</div>
+      <div class="btn" @click="onTaskDelivery">预案任务下发</div>
+    </div>
+    <div class="title-box">{{ planTitle }}</div>
     <div class="plan-content">
-      <!-- 响应等级选择和操作按钮 -->
-      <el-row :gutter="20">
-        <el-col :span="12">
-          <div class="section-title select-level-container">
-            <span>响应等级</span>
-            <el-select v-model="selectedLevel" placeholder="请选择响应等级" class="select-level">
-              <el-option v-for="level in responseLevels" :key="level.value" :label="level.name" :value="level.value"></el-option>
-            </el-select>
-          </div>
-        </el-col>
-        <el-col :span="12" class="button-container">
-          <el-button type="primary" @click="onStartPlan">启动预案</el-button>
-          <el-button type="primary" @click="onTaskDelivery">预案任务下发</el-button>
-        </el-col>
-      </el-row>
-      <!-- 预案名称 -->
-      <h2>{{ planTitle }}</h2>
       <!-- 预案内容的标签页 -->
-      <el-row class="content-row">
-        <el-tabs v-model="activeTab" type="border-card" @tab-click="onTabClick">
-          <el-tab-pane label="总则" name="principles">
-            <div>
-              <!-- 锚点导航 -->
-              <el-row>
-                <el-col :span="4">
-                  <el-anchor :container="contentContainer" direction="vertical" type="default" :offset="30">
-                    <el-anchor-link href="#purpose" title="编制目的" />
-                    <el-anchor-link href="#basis" title="编制依据" />
-                    <el-anchor-link href="#scope" title="适用范围" />
-                    <el-anchor-link href="#principles" title="工作原则" />
-                  </el-anchor>
-                </el-col>
-                <!-- 可滚动的内容区域 -->
-                <el-col :span="20">
-                  <div ref="contentContainer" style="height: 300px; overflow-y: auto">
-                    <div id="purpose" style="margin-top: 20px; font-size: 14px">
-                      <h3>1.1 编制目的</h3>
-                      <p>{{ planData.purpose }}</p>
-                    </div>
-                    <div id="basis" style="margin-top: 15px; font-size: 14px">
-                      <h3>1.2 编制依据</h3>
-                      <p>{{ planData.basis }}</p>
-                    </div>
-                    <div id="scope" style="margin-top: 15px; font-size: 14px">
-                      <h3>1.3 适用范围</h3>
-                      <p>{{ planData.scope }}</p>
-                    </div>
-                    <div id="principles" style="margin-top: 15px; font-size: 14px">
-                      <h3>1.4 工作原则</h3>
-                      <p>{{ planData.principles }}</p>
-                    </div>
-                  </div>
-                </el-col>
-              </el-row>
-            </div>
-          </el-tab-pane>
-          <el-tab-pane label="组织体系" name="second">组织体系</el-tab-pane>
-          <el-tab-pane label="运行机制" name="third">运行机制</el-tab-pane>
-          <el-tab-pane label="应急保障" name="fourth">应急保障</el-tab-pane>
-          <el-tab-pane label="监督管理" name="fifth">监督管理</el-tab-pane>
-          <el-tab-pane label="附则" name="sixth">附则</el-tab-pane>
-          <el-tab-pane label="附件" name="seventh">附件</el-tab-pane>
-        </el-tabs>
-      </el-row>
+      <div class="tabs">
+        <div v-for="(item, index) in tabs" :key="index" :class="index === activeTab ? 'tab tabActive' : 'tab'" @click="handleClickTab(index)">{{ item.label }}</div>
+      </div>
+      <div class="tab-content">
+        <div class="tabs2">
+          <div
+            v-for="(item, index) in tabs[activeTab]?.children"
+            :key="index"
+            :class="index === activeTab2 ? 'tab tab-active2' : 'tab'"
+            @click="handleClickTab2(index)"
+          >
+            <div class="text">{{ item.label }}</div>
+          </div>
+        </div>
+        <div class="tab-content2">
+          {{
+            tabs[activeTab] && tabs[activeTab].children && tabs[activeTab].children[activeTab2] ? tabs[activeTab].children[activeTab2].content : ''
+          }}
+        </div>
+      </div>
     </div>
-    <TaskDelivery v-model="taskDeliveryState.show" :title="taskDeliveryState.title" :plan-id="planData.plan_id" :event-id="props.eventId" />
-  </el-dialog>
+    <TaskDelivery v-model="taskDeliveryState.show" :title="taskDeliveryState.title" :plan-id="plan_id" :event-id="props.eventId" />
+  </div>
 </template>
 
 <script lang="ts" setup>
@@ -80,21 +49,12 @@ const planTitle = ref(''); // 预案名称
 const selectedLevel = ref(''); // 默认响应等级为空
 // 定义组件接收的属性类型
 interface Props {
-  modelValue: boolean;
+  show: boolean;
   eventId: string;
   title: string;
-  show?: boolean; // 新增 show 属性
 }
 // 初始化组件属性
 const props = defineProps<Props>();
-const show = ref(props.show ?? false); // 对话框是否可见
-watch(
-  () => props.modelValue,
-  () => {
-    show.value = props.modelValue;
-  },
-  { immediate: true }
-);
 
 const responseLevels = [
   // 响应等级选项
@@ -103,22 +63,39 @@ const responseLevels = [
   { value: '3', name: '较大(III级)' },
   { value: '4', name: '一般(IV级)' }
 ];
-const activeTab = ref('principles'); // 当前激活的标签页
-const planData = reactive({
-  purpose: '这是内容...', // 编制目的
-  basis: '这是内容...', // 编制依据
-  scope: '这是内容...', // 适用范围
-  principles: '这是内容...', // 工作原则
-  plan_id: '' // 添加 plan_id 属性
-});
+let plan_id = '';
+const tabs = ref([
+  {
+    label: '总则',
+    children: [
+      { label: '编制目的', content: '编制目的内容' },
+      { label: '编制依据', content: '编制依据内容' },
+      { label: '适用范围', content: '适用范围内容' },
+      { label: '工作原则', content: '工作原则内容' }
+    ]
+  },
+  { label: '组织体系', children: [] },
+  { label: '运行机制', children: [] },
+  { label: '应急保障', children: [] },
+  { label: '附则', children: [] },
+  { label: '附件', children: [] }
+]);
+const activeTab = ref(0); // 当前激活的标签页
+const activeTab2 = ref(0); // 当前激活的标签页
+
+const handleClickTab = (key) => {
+  activeTab.value = key;
+};
+const handleClickTab2 = (key) => {
+  activeTab2.value = key;
+};
 
 // 定义事件发射器
-const emit = defineEmits(['update:modelValue', 'update:show']);
+const emit = defineEmits(['update:show']);
 
 // 对话框关闭时执行的操作
 const onClose = () => {
   emit('update:show', false);
-  emit('update:modelValue', false);
 };
 
 // 处理启动预案的函数
@@ -226,25 +203,60 @@ watch(
 </script>
 
 <style scoped>
-.start-plan-content .section-title {
-  display: flex;
-  align-items: center;
-  white-space: nowrap; /* 防止文本换行 */
-}
-
-.start-plan-content .select-level-container {
-  display: flex;
-  align-items: center;
-}
-
-.select-level-container span {
-  margin-right: 8px;
-  white-space: nowrap; /* 防止文本换行 */
+.dialog {
+  position: absolute;
+  top: 478px;
+  left: 50%;
+  transform: translateX(-50%);
+  width: 2839px;
+  height: 1263px;
+  background: url('@/assets/images/plan/dialog.png') no-repeat;
+  padding-top: 200px;
+  color: #fff;
+  font-size: 36px;
+  .title {
+    position: absolute;
+    top: 30px;
+    left: 55px;
+    font-size: 80px;
+  }
+  .close-icon {
+    position: absolute;
+    top: 0px;
+    right: 0px;
+    width: 75px;
+    height: 70px;
+    background: url('@/assets/images/map/rightMenu/close.png') no-repeat;
+    background-size: 100% 100%;
+    cursor: pointer;
+  }
+  .section-box {
+    display: flex;
+    align-items: center;
+    padding: 15px 60px;
+    border: 1px solid #16448c;
+    .btn {
+      width: 440px;
+      height: 120px;
+      background: url('@/assets/images/plan/btn.png') no-repeat;
+      cursor: pointer;
+      display: flex;
+      align-items: center;
+      justify-content: center;
+    }
+  }
+  .title-box {
+    background-image: url('@/assets/images/plan/titleBox.png');
+    background-repeat: no-repeat;
+    background-size: 354px 28px;
+    background-position: bottom left;
+    margin: 40px 60px 0;
+    font-family: 'YouSheBiaoTiHei';
+    font-size: 56px;
+    padding-left: 50px;
+  }
 }
 
-.select-level {
-  flex-grow: 1; /* 让下拉框尽可能占据剩余空间 */
-}
 h2 {
   text-align: center;
 }
@@ -252,6 +264,7 @@ h2 {
 .plan-content {
   display: flex;
   flex-direction: column;
+  margin: 40px 60px;
 }
 
 .button-container {
@@ -262,4 +275,101 @@ h2 {
 .content-row {
   margin-top: 20px;
 }
+.tabs {
+  display: flex;
+  width: 100%;
+  overflow-x: auto;
+  .tab {
+    width: 350px;
+    height: 78px;
+    background: url('@/assets/images/plan/tab.png') no-repeat;
+    display: flex;
+    justify-content: center;
+    align-items: flex-end;
+    margin-left: 50px;
+    font-family: 'YouSheBiaoTiHei';
+    font-size: 38px;
+    cursor: pointer;
+    &:hover {
+      background: url('@/assets/images/plan/tabActive.png') no-repeat;
+    }
+    &:first-child {
+      margin-left: 0;
+    }
+  }
+  .tabActive {
+    background: url('@/assets/images/plan/tabActive.png') no-repeat;
+  }
+}
+.tab-content {
+  display: flex;
+  margin-top: 30px;
+  .tabs2 {
+    .tab {
+      width: 399px;
+      height: 70px;
+      background: url('@/assets/images/plan/tab2.png') no-repeat;
+      display: flex;
+      align-items: center;
+      padding-left: 76px;
+      color: #9badc4;
+      font-size: 36px;
+      font-weight: bold;
+      margin-top: 60px;
+      position: relative;
+      cursor: pointer;
+      &::before {
+        content: '';
+        width: 2px;
+        height: 68px;
+        background: #2b88bd;
+        position: absolute;
+        top: -63px;
+        left: 42px;
+      }
+      &:first-child {
+        margin-top: 0;
+        &::before {
+          display: none;
+        }
+      }
+      &:hover {
+        width: 439px;
+        background: url('@/assets/images/plan/tab2Active.png') no-repeat;
+        .text {
+          /* 设置字体透明 */
+          color: transparent;
+          /* 设置线性渐变,从红色渐变到蓝色 */
+          background-image: linear-gradient(to bottom, #fff 40%, #5CC4FA 50%, #40A2E7 100%);
+          /* 使用 -webkit-background-clip 属性将背景剪裁至文本形状 */
+          -webkit-background-clip: text;
+          /* 非Webkit内核浏览器需要使用标准前缀 */
+          background-clip: text;
+          /* 把当前元素设置为行内块,以便能够应用背景 */
+          display: inline-block;
+        }
+      }
+    }
+    .tab-active2 {
+      width: 439px;
+      background: url('@/assets/images/plan/tab2Active.png') no-repeat;
+      .text {
+        /* 设置字体透明 */
+        color: transparent;
+        /* 设置线性渐变,从红色渐变到蓝色 */
+        background-image: linear-gradient(to bottom, #fff 40%, #5CC4FA 50%, #40A2E7 100%);
+        /* 使用 -webkit-background-clip 属性将背景剪裁至文本形状 */
+        -webkit-background-clip: text;
+        /* 非Webkit内核浏览器需要使用标准前缀 */
+        background-clip: text;
+        /* 把当前元素设置为行内块,以便能够应用背景 */
+        display: inline-block;
+      }
+    }
+  }
+  .tab-content2 {
+    height: 620px;
+    overflow-y: auto;
+  }
+}
 </style>

+ 1 - 1
src/views/emergencyCommandMap/RightSection/index.vue

@@ -36,7 +36,7 @@
     <PublicOpinionSupervision />
     <JointDuty />
   </div>
-  <StartPlan v-model="startPlanState.show" :title="startPlanState.title" :event-id="startPlanState.eventId" />
+  <StartPlan v-if="startPlanState.show" v-model:show="startPlanState.show" :title="startPlanState.title" :event-id="startPlanState.eventId" />
   <SelectPlan v-model="selectPlanState.show" :title="selectPlanState.title" :temp-event-id="tempEventId" @update-plan="updatePlan" />
 </template>
 

+ 10 - 10
src/views/emergencyCommandMap/index.vue

@@ -21,16 +21,16 @@ const containerRef = ref();
 let scale = ref({ scaleX: 1, scaleY: 1 });
 provide('containerScale', () => scale.value);
 onMounted(() => {
-  autofit.init(
-    {
-      dw: 8960,
-      dh: 2520,
-      el: '#dashboard-container',
-      resize: false,
-      ignore: ['#aMap', '#YztMap']
-    },
-    false
-  );
+  // autofit.init(
+  //   {
+  //     dw: 8960,
+  //     dh: 2520,
+  //     el: '#dashboard-container',
+  //     resize: false,
+  //     ignore: ['#aMap', '#YztMap']
+  //   },
+  //   false
+  // );
   scale.value = getTransformScale(containerRef.value);
 });
 onUnmounted(() => {

+ 0 - 25
src/views/globalMap/RightMenu/ReservoirMonitor.vue

@@ -227,31 +227,6 @@ const getVideoList = () => {
   .dialog-content {
     display: flex;
   }
-  .info-box {
-    width: 834px;
-    height: 459px;
-    background: url('@/assets/images/map/rightMenu/box2.png') no-repeat;
-    padding: 11px;
-    .info-header {
-      width: 311px;
-      height: 56px;
-      padding-left: 50px;
-      background: url(@/assets/images/map/rightMenu/titleBox1.png) no-repeat;
-    }
-    .info-content {
-      padding: 0 37px 26px 37px;
-      font-size: 32px;
-      color: #a8ccde;
-    }
-    .info-item {
-      display: flex;
-      align-items: center;
-      height: 72px;
-      white-space: nowrap;
-      overflow: hidden;
-      text-overflow: ellipsis;
-    }
-  }
   .box1 {
     width: 776px;
     height: 459px;

+ 2 - 1
src/views/globalMap/index.vue

@@ -2,7 +2,8 @@
   <div id="globalMap">
     <div :class="isComponent ? 'global-map' : 'global-map bg'">
       <MapLogical v-if="activeMap === 'logical'" :map-data="mapData" />
-      <YztMap v-else-if="['satellite2', 'satellite3'].includes(activeMap)" ref="map2Ref" :active-map="activeMap" :pointType="pointType" />
+      <YMap v-else-if="['satellite2', 'satellite3'].includes(activeMap)" :activeMap="activeMap" />
+<!--      <YztMap v-else-if="['satellite2', 'satellite3'].includes(activeMap)" ref="map2Ref" :active-map="activeMap" :pointType="pointType" />-->
       <Map v-else ref="mapRef" :active-map="activeMap" :pointType="pointType" />
       <!--左侧菜单-->
       <LeftMenu style="position: absolute; top: 20px; left: 20px" @click-menu="clickMenu" @select-search-marker="selectSearchMarker" />

+ 35 - 34
src/views/globalMapPage/index.vue

@@ -1,13 +1,14 @@
 <template>
-  <div id="dashboard-container" ref="containerRef">
-    <div class="dashboard-container">
-      <HeaderSection />
-      <div class="dashboard-content">
-        <GlobalMap width="8798" height="2182" />
-      </div>
-      <FooterSection style="position: absolute; bottom: 0; left: 0" />
-    </div>
-  </div>
+<!--  <div id="dashboard-container" ref="containerRef">-->
+<!--    <div class="dashboard-container">-->
+<!--      <HeaderSection />-->
+<!--      <div class="dashboard-content">-->
+<!--        <GlobalMap width="8798" height="2182" />-->
+<!--      </div>-->
+<!--      <FooterSection style="position: absolute; bottom: 0; left: 0" />-->
+<!--    </div>-->
+<!--  </div>-->
+  <YMap :active-map="'satellite2'" />
 </template>
 
 <script lang="ts" setup name="globalMapPage">
@@ -19,16 +20,16 @@ const containerRef = ref();
 let scale = ref({ scaleX: 1, scaleY: 1 });
 provide('containerScale', () => scale.value);
 onMounted(() => {
-  const a = autofit.init(
-    {
-      dw: 8960,
-      dh: 2520,
-      el: '#dashboard-container',
-      resize: false,
-      ignore: ['#aMap', '#YztMap']
-    },
-    false
-  );
+  // const a = autofit.init(
+  //   {
+  //     dw: 8960,
+  //     dh: 2520,
+  //     el: '#dashboard-container',
+  //     resize: false,
+  //     ignore: ['#aMap', '#YztMap']
+  //   },
+  //   false
+  // );
   scale.value = getTransformScale(containerRef.value);
 });
 onUnmounted(() => {
@@ -37,19 +38,19 @@ onUnmounted(() => {
 </script>
 
 <style lang="scss" scoped>
-.dashboard-container {
-  width: 8960px;
-  height: 2560px;
-  font-size: 74px;
-  background: url('@/assets/images/bg.jpg') no-repeat 100% 100%;
-  background-size: cover;
-  font-family: 'PingFang SC', sans-serif;
-  position: relative;
-  .dashboard-content {
-    padding: 0 81px;
-    display: flex;
-    height: calc(2560px - 228px - 150px);
-    overflow: hidden;
-  }
-}
+//.dashboard-container {
+//  width: 8960px;
+//  height: 2560px;
+//  font-size: 74px;
+//  background: url('@/assets/images/bg.jpg') no-repeat 100% 100%;
+//  background-size: cover;
+//  font-family: 'PingFang SC', sans-serif;
+//  position: relative;
+//  .dashboard-content {
+//    padding: 0 81px;
+//    display: flex;
+//    height: calc(2560px - 228px - 150px);
+//    overflow: hidden;
+//  }
+//}
 </style>