Quellcode durchsuchen

更新 首页样式;todo

王智慧 vor 3 Jahren
Ursprung
Commit
a8bcc0da9b
1 geänderte Dateien mit 302 neuen und 255 gelöschten Zeilen
  1. 302 255
      src/views/index/Index.vue

+ 302 - 255
src/views/index/Index.vue

@@ -1,15 +1,7 @@
 <template>
-  <div v-loading="isLoading">
-    <div class="df">
-      <div
-        class="left-top"
-        :style="{
-          height:
-            store.state.firstTitle == '主页'
-              ? 'calc(100vh - 142px)'
-              : 'calc(100vh - 238px)',
-        }"
-      >
+  <div v-loading="isLoading" style="height: 100%">
+    <div class="df main">
+      <div class="left">
         <div id="map-container" class="map-container"></div>
         <div class="df aic tabs">
           <div
@@ -49,229 +41,248 @@
             卸货中
           </div>
         </div>
-      </div>
-      <div
-        class="right-top"
-        :style="{
-          height:
-            store.state.firstTitle == '主页'
-              ? 'calc(100vh - 142px)'
-              : 'calc(100vh - 238px)',
-        }"
-      >
-        <div class="cards card-1">
-          <div>总航次数</div>
-          <div>{{ indexData.totalVoyageNum }}</div>
-        </div>
-        <div class="cards card-2">
-          <div>总实际装载吨位</div>
-          <div>{{ indexData.totalLoadTons }}</div>
-        </div>
-        <div class="cards card-3">
-          <div>总已完成卸货吨位</div>
-          <div>{{ indexData.finshDiscTons }}</div>
-        </div>
-        <div class="cards card-4">
-          <div>总剩余卸货吨位</div>
-          <div>{{ indexData.unfinshDiscTons }}</div>
-        </div>
-        <div id="pie" class="card-5">
-          <div>饼图</div>
-          <div>卸货</div>
-        </div>
-      </div>
-    </div>
-    <div class="df">
-      <div class="left-bottom">
-        <div
-          class="df aic jcfs mt20"
-          style="
-            font-size: 14px;
-            color: #333;
-            width: calc(100vw - 300px);
-            flex-wrap: wrap;
-          "
-        >
-          <div class="df jcsb aic mb10 mr20 ml20">
-            <div class="mr10">装货港:</div>
-            <el-select
-              style="width: 120px"
-              v-model="postData.loadPortId"
-              placeholder="装货港"
-              size="small"
-              @change="getIndexData(1)"
-              filterable
-              clearable
-            >
-              <el-option
-                v-for="item in loadPortOptions"
-                :key="item"
-                :label="item.value"
-                :value="item.key"
-              />
-            </el-select>
-          </div>
-          <div class="df jcsb aic mb10 mr20">
-            <div class="mr10">卸货港:</div>
-            <el-select
-              style="width: 120px"
-              v-model="postData.discPortId"
-              placeholder="卸货港"
-              size="small"
-              @change="getIndexData(1)"
-              filterable
-              clearable
-            >
-              <el-option
-                v-for="item in discPortOptions"
-                :key="item"
-                :label="item.value"
-                :value="item.key"
-              />
-            </el-select>
-          </div>
-          <div class="df jcsb aic mb10 mr20">
-            <div class="mr10">到港状态:</div>
-            <el-select
-              style="width: 120px"
-              v-model="postData.isArrived"
-              placeholder="到港状态"
-              size="small"
-              @change="getIndexData(1)"
-            >
-              <el-option label="已到港" :value="0" />
-              <el-option label="未到港" :value="1" />
-            </el-select>
-          </div>
-          <div class="df jcsb aic mb10 mr20">
-            <div class="mr10">航次状态:</div>
-            <el-select
-              style="width: 120px"
-              v-model="postData.abnormalStatus"
-              placeholder="航次状态"
-              size="small"
-              @change="getIndexData(1)"
-            >
-              <el-option label="正常" :value="0" />
-              <el-option label="异常" :value="1" />
-            </el-select>
-          </div>
-          <div class="df jcsb aic mb10 mr20">
-            <div class="mr10">货种:</div>
-            <el-select
-              style="width: 100px"
-              v-model="postData.cargoId"
-              placeholder="货种"
-              size="small"
-              @change="getIndexData(1)"
-              filterable
-              clearable
-            >
-              <el-option
-                v-for="item in cargoOptions"
-                :key="item"
-                :label="item.value"
-                :value="item.key"
-              />
-            </el-select>
-          </div>
-          <el-button
-            @click="resetFilter"
-            class="mb10"
+        <div class="df aic filter">
+          <div class="mr10 ml24">装货港</div>
+          <el-select
+            style="width: 120px"
+            v-model="postData.loadPortId"
+            placeholder="装货港"
+            size="small"
+            @change="getIndexData(1)"
+            filterable
+            clearable
+          >
+            <el-option
+              v-for="item in loadPortOptions"
+              :key="item"
+              :label="item.value"
+              :value="item.key"
+            />
+          </el-select>
+          <div class="mr10 ml24">卸货港</div>
+          <el-select
+            style="width: 120px"
+            v-model="postData.discPortId"
+            placeholder="卸货港"
             size="small"
-            type="primary"
+            @change="getIndexData(1)"
+            filterable
+            clearable
           >
-            全部
-          </el-button>
+            <el-option
+              v-for="item in discPortOptions"
+              :key="item"
+              :label="item.value"
+              :value="item.key"
+            />
+          </el-select>
+          <div class="mr10 ml24">到港状态</div>
+          <el-select
+            style="width: 120px"
+            v-model="postData.isArrived"
+            placeholder="到港状态"
+            size="small"
+            @change="getIndexData(1)"
+          >
+            <el-option label="已到港" :value="0" />
+            <el-option label="未到港" :value="1" />
+          </el-select>
+          <div class="mr10 ml24">航次状态</div>
+          <el-select
+            style="width: 120px"
+            v-model="postData.abnormalStatus"
+            placeholder="航次状态"
+            size="small"
+            @change="getIndexData(1)"
+          >
+            <el-option label="正常" :value="0" />
+            <el-option label="异常" :value="1" />
+          </el-select>
+          <div class="mr10 ml24">货种</div>
+          <el-select
+            style="width: 100px"
+            v-model="postData.cargoId"
+            placeholder="货种"
+            size="small"
+            @change="getIndexData(1)"
+            filterable
+            clearable
+          >
+            <el-option
+              v-for="item in cargoOptions"
+              :key="item"
+              :label="item.value"
+              :value="item.key"
+            />
+          </el-select>
+          <div @click="resetFilter" class="all ml24">全部</div>
         </div>
       </div>
-      <div class="right-bottom">
-        <el-popover placement="top" :width="100" trigger="hover">
-          <template #reference>
-            <el-button size="large" type="primary">导出报告</el-button>
-          </template>
-          <div
-            style="
-              display: flex;
-              flex-direction: column;
-              height: 180px;
-              justify-content: space-between;
-              align-items: center;
-            "
+      <div class="right">
+        <div class="df jcfe">
+          <el-popover placement="bottom" :width="100" trigger="hover">
+            <template #reference>
+              <div class="export">导出报告</div>
+            </template>
+            <div
+              style="
+                display: flex;
+                flex-direction: column;
+                height: 180px;
+                justify-content: space-between;
+                align-items: center;
+              "
+            >
+              <div>
+                <el-button
+                  type="primary"
+                  size="small"
+                  v-auth="'DOWNLOADVOYAGELIST'"
+                  @click="showExportModal('航次列表')"
+                >
+                  导出航次列表
+                </el-button>
+              </div>
+              <div>
+                <el-button
+                  type="primary"
+                  size="small"
+                  v-auth="'MULTDOWNLOADSHIPTRACK'"
+                  @click="showExportModal('航次跟踪')"
+                >
+                  导出航次跟踪
+                </el-button>
+              </div>
+              <div>
+                <el-button
+                  type="primary"
+                  size="small"
+                  @click="showExportModal('卸货记录')"
+                  v-auth="'MULTDOWNLOADDISCHARGE'"
+                >
+                  导出卸货记录
+                </el-button>
+              </div>
+              <div>
+                <el-button
+                  v-auth="'DOWNLOADFYDI'"
+                  type="primary"
+                  size="small"
+                  @click="downloadFYDI"
+                >
+                  下载FYDI指数
+                </el-button>
+              </div>
+            </div>
+          </el-popover>
+          <el-dialog
+            v-model="exportModalVisable"
+            :title="exportModalTitle"
+            :close-on-click-modal="false"
+            @close="isLoadingZip = false"
+            width="200px"
           >
-            <div>
+            <div class="df aic jcsb">
+              <div
+                v-if="exportModalTitle != '航次列表' || cargoOwnerId == 7"
+                class="df aic"
+              >
+                <div class="mr20">请选择月份:</div>
+                <el-date-picker
+                  v-model="currentMonth"
+                  type="month"
+                  placeholder="请选择年月"
+                  value-format="YYYYMM"
+                  :disabled="isLoadingZip"
+                />
+              </div>
+              <div></div>
               <el-button
                 type="primary"
-                size="medium"
-                v-auth="'DOWNLOADVOYAGELIST'"
-                @click="showExportModal('航次列表')"
+                @click="exportZip"
+                :loading="isLoadingZip"
               >
-                导出航次列表
+                导出{{ exportModalTitle }}
               </el-button>
             </div>
+          </el-dialog>
+        </div>
+        <div class="data">
+          <div class="df">
+            <div class="shu"></div>
+            <div class="right-title">数据统计</div>
+          </div>
+          <div class="df data-line">
+            <div class="icon">船</div>
             <div>
-              <el-button
-                type="primary"
-                size="medium"
-                v-auth="'MULTDOWNLOADSHIPTRACK'"
-                @click="showExportModal('航次跟踪')"
-              >
-                导出航次跟踪
-              </el-button>
+              <div class="data-title">总航次数</div>
+              <div class="df">
+                <div class="num">3205</div>
+                <div class="unit">次</div>
+              </div>
             </div>
+          </div>
+          <div class="df data-line">
+            <div class="icon">锚</div>
             <div>
-              <el-button
-                type="primary"
-                size="medium"
-                @click="showExportModal('卸货记录')"
-                v-auth="'MULTDOWNLOADDISCHARGE'"
-              >
-                导出卸货记录
-              </el-button>
+              <div class="data-title">总实际装载吨数</div>
+              <div class="df">
+                <div class="num">12303.33</div>
+                <div class="unit">吨</div>
+              </div>
             </div>
+          </div>
+          <div class="df data-line">
+            <div class="icon">卸货</div>
             <div>
-              <el-button
-                v-auth="'DOWNLOADFYDI'"
-                type="primary"
-                size="medium"
-                @click="downloadFYDI"
-              >
-                下载FYDI指数
-              </el-button>
+              <div class="data-title">总已完成卸货吨位</div>
+              <div class="df">
+                <div class="num">345233.2</div>
+                <div class="unit">吨</div>
+              </div>
             </div>
           </div>
-        </el-popover>
-        <el-dialog
-          v-model="exportModalVisable"
-          :title="exportModalTitle"
-          :close-on-click-modal="false"
-          @close="isLoadingZip = false"
-          width="200px"
-        >
-          <div class="df aic jcsb">
-            <div
-              v-if="exportModalTitle != '航次列表' || cargoOwnerId == 7"
-              class="df aic"
-            >
-              <div class="mr20">请选择月份:</div>
-              <el-date-picker
-                v-model="currentMonth"
-                type="month"
-                placeholder="请选择年月"
-                value-format="YYYYMM"
-                :disabled="isLoadingZip"
-              />
+          <div class="df data-line">
+            <div class="icon">剩余</div>
+            <div>
+              <div class="data-title">总剩余卸货吨位</div>
+              <div class="df">
+                <div class="num">328192.33</div>
+                <div class="unit">吨</div>
+              </div>
             </div>
-            <div></div>
-            <el-button
-              type="primary"
-              @click="exportZip"
-              :loading="isLoadingZip"
-            >
-              导出{{ exportModalTitle }}
-            </el-button>
           </div>
-        </el-dialog>
+        </div>
+        <div class="pie">
+          <div class="shu"></div>
+          <div class="right-title">卸货占比</div>
+        </div>
+      </div>
+    </div>
+    <div class="df old" style="background: #f4f5f6">
+      <div>
+        <div class="right-top">
+          <div class="cards card-1">
+            <div>总航次数</div>
+            <div>{{ indexData.totalVoyageNum }}</div>
+          </div>
+          <div class="cards card-2">
+            <div>总实际装载吨位</div>
+            <div>{{ indexData.totalLoadTons }}</div>
+          </div>
+          <div class="cards card-3">
+            <div>总已完成卸货吨位</div>
+            <div>{{ indexData.finshDiscTons }}</div>
+          </div>
+          <div class="cards card-4">
+            <div>总剩余卸货吨位</div>
+            <div>{{ indexData.unfinshDiscTons }}</div>
+          </div>
+        </div>
+        <div id="pie" class="card-5">
+          <div>饼图</div>
+          <div>卸货</div>
+        </div>
       </div>
     </div>
   </div>
@@ -642,9 +653,13 @@ onMounted(() => {
 </script>
 
 <style scoped>
+.old {
+  position: fixed;
+  top: -2000px;
+}
 .map-container {
   width: 100%;
-  height: 100%;
+  height: calc(100% - 94px);
 }
 
 .tabs {
@@ -683,63 +698,95 @@ onMounted(() => {
   color: #fff;
 }
 
-.left-top {
-  width: calc(100% - 400px);
-  height: calc(100vh - 238px);
-  position: relative;
+:deep() .el-dialog {
+  width: 800px;
 }
 
-.right-top {
-  width: 400px;
-  height: calc(100vh - 238px);
-  background: #fff;
+.window-title {
+  display: none;
+}
+.window-title:hover {
+  display: block;
+}
+
+.export {
+  font-size: 14px;
+  font-family: PingFangSC-Medium, PingFang SC;
+  font-weight: 500;
+  color: #ffffff;
+  line-height: 14px;
+  width: 90px;
+  height: 32px;
+  background: #008efe;
+  border-radius: 2px;
+  color: #fff;
+  line-height: 32px;
   text-align: center;
-  color: #3992de;
 }
 
-.left-bottom {
-  width: calc(100% - 400px);
-  height: 80px;
-  background: #fff;
-  display: flex;
-  justify-content: center;
+.main {
+  width: 100%;
+  height: 100%;
+  background: #f4f5f6;
 }
 
-.right-bottom {
-  width: 400px;
-  height: 80px;
-  text-align: center;
-  display: flex;
-  justify-content: space-around;
-  align-items: center;
+.left {
+  width: calc(100% - 315px);
+  position: relative;
 }
 
-:deep() .el-dialog {
-  width: 800px;
+.filter {
+  font-size: 14px;
+  color: #353a42;
+  width: calc(100vw - 320px);
+  flex-wrap: wrap;
+  margin-top: 36px;
 }
-.cards {
-  height: 10%;
-  border-bottom: 1px solid grey;
+
+.ml24 {
+  margin-left: 24px;
 }
 
-.cards > div:first-child {
-  font-size: 1.8vh;
-  padding-top: 4%;
-  padding-bottom: 2%;
+.all {
+  width: 60px;
+  height: 32px;
+  line-height: 32px;
+  background: #008efe;
+  border-radius: 2px;
+  font-size: 14px;
+  font-family: PingFangSC-Medium, PingFang SC;
+  font-weight: 500;
+  color: #ffffff;
+  text-align: center;
 }
 
-.cards > div:last-child {
-  font-size: 1.5vh;
+.right {
+  width: 267px;
+  border-radius: 4px;
+  height: calc(100% - 30px);
+  margin-left: 26px;
 }
 
-.card-5 {
-  height: 50%;
+.data {
+  width: 267px;
+  height: 466px;
+  background: #ffffff;
+  border-radius: 4px;
+  margin-top: 16px;
+  margin-bottom: 24px;
 }
 
-.window-title {
-  display: none;
+.pie {
+  width: 267px;
+  height: 385px;
+  background: #ffffff;
+  border-radius: 4px;
 }
-.window-title:hover {
-  display: block;
+
+.icon {
+  width: 48px;
+  height: 48px;
+  background: #008efe;
+  border-radius: 4px;
 }
 </style>