index.vue 8.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221
  1. <template>
  2. <div class="dashboard">
  3. <ComHead :tabs-index="0" />
  4. <div class="dashboard-content">
  5. <div class="dashboard-content-top flex">
  6. <div class="dashboard-content-top-left">
  7. <div class="dashboard-content-top-left-item">
  8. <div class="dashboard-content-top-left-item-top">
  9. <div class="dashboard-content-top-left-item-top-title">
  10. 小时峰值分布
  11. </div>
  12. <div class="dashboard-content-top-left-item-top-time" @click="showDatePicker">
  13. <el-icon color="#ffffff" size="18">
  14. <Calendar />
  15. </el-icon>
  16. <el-icon color="#ffffff">
  17. <CaretBottom />
  18. </el-icon>
  19. </div>
  20. </div>
  21. <div class="dashboard-content-top-left-item-bottom">
  22. <Echarts id="ww1" :option="optionLeft" />
  23. </div>
  24. </div>
  25. <div class="dashboard-content-top-left-item">
  26. <div class="dashboard-content-top-left-item-top">
  27. <div class="dashboard-content-top-left-item-top-title">
  28. 运单趋势分析
  29. </div>
  30. <div class="dashboard-content-top-left-item-top-time" @click="showDatePicker">
  31. <el-icon color="#ffffff" size="18">
  32. <Calendar />
  33. </el-icon>
  34. <el-icon color="#ffffff">
  35. <CaretBottom />
  36. </el-icon>
  37. </div>
  38. </div>
  39. <div class="dashboard-content-top-left-item-bottom">
  40. <Echarts id="ww12" :option="optionLeft" />
  41. </div>
  42. </div>
  43. </div>
  44. <!-- 地图 -->
  45. <div class="dashboard-content-top-center">
  46. <div class="dashboard-content-top-center-top"></div>
  47. <div class="dashboard-content-top-center-bottom">
  48. <div class="dashboard-content-top-center-bottom-box1">
  49. <div class="dashboard-content-top-center-bottom-box1-title">
  50. 航班数
  51. </div>
  52. <div v-for="(item,index) in capArr" :key="index" class="dashboard-content-top-center-bottom-box1-info">
  53. <div>{{item.cname}}:{{item.cvalue}}</div>
  54. <div>{{item.dname}}:{{item.dvalue}}</div>
  55. </div>
  56. </div>
  57. <div class="dashboard-content-top-center-bottom-box2">
  58. <div class="dashboard-content-top-center-bottom-box2-title">
  59. 运单数
  60. </div>
  61. <div v-for="(item,index) in capData" :key="index" class="dashboard-content-top-center-bottom-box2-info">
  62. <div>{{item.cname}}:{{item.cvalue}}</div>
  63. <div>{{item.dname}}:{{item.dvalue}}</div>
  64. <div>{{item.ename}}:{{item.evalue}}</div>
  65. </div>
  66. </div>
  67. <EchartsMap id="ww2" />
  68. </div>
  69. </div>
  70. <div class="dashboard-content-top-right">
  71. <div class="dashboard-content-top-right-item">
  72. <div class="dashboard-content-top-right-item-top">
  73. <div class="dashboard-content-top-right-item-top-title">
  74. 航班预警报警分析
  75. </div>
  76. <div class="dashboard-content-top-right-item-top-time" @click="showDatePicker">
  77. <el-icon color="#ffffff" size="18">
  78. <Calendar />
  79. </el-icon>
  80. <el-icon color="#ffffff">
  81. <CaretBottom />
  82. </el-icon>
  83. </div>
  84. </div>
  85. <div class="dashboard-content-top-right-item-bottom">
  86. <Echarts id="ww3" :option="airlineAbnormalBaggage.option" />
  87. </div>
  88. </div>
  89. <div class="dashboard-content-top-right-item">
  90. <div class="dashboard-content-top-right-item-top">
  91. <div class="dashboard-content-top-right-item-top-title">
  92. 航司运量统计
  93. </div>
  94. <div class="dashboard-content-top-right-item-top-time" @click="showDatePicker">
  95. <el-icon color="#ffffff" size="18">
  96. <Calendar />
  97. </el-icon>
  98. <el-icon color="#ffffff">
  99. <CaretBottom />
  100. </el-icon>
  101. </div>
  102. </div>
  103. <div class="dashboard-content-top-left-item-bottom">
  104. <Echarts id="ww33" :option="airCompaneBaggage.option" />
  105. </div>
  106. </div>
  107. </div>
  108. </div>
  109. <div class="dashboard-content-bottom flex">
  110. <div class="dashboard-content-bottom-left">
  111. <div class="dashboard-content-bottom-left-top">
  112. <div class="dashboard-content-bottom-left-top-title">
  113. 节点峰值分布
  114. </div>
  115. <div class="dashboard-content-bottom-left-top-time" @click="showDatePicker">
  116. <el-icon color="#ffffff" size="18">
  117. <Calendar />
  118. </el-icon>
  119. <el-icon color="#ffffff">
  120. <CaretBottom />
  121. </el-icon>
  122. </div>
  123. </div>
  124. <div class="dashboard-content-bottom-left-bottom">
  125. <Echarts id="ww4" :option="hourPeak.option" />
  126. </div>
  127. </div>
  128. <div class="dashboard-content-bottom-center">
  129. <div class="dashboard-content-bottom-center-top">
  130. <div class="dashboard-content-bottom-center-top-title">
  131. 节点效率分析
  132. </div>
  133. <div class="dashboard-content-bottom-center-top-time" @click="showDatePicker">
  134. <el-icon color="#ffffff" size="18">
  135. <Calendar />
  136. </el-icon>
  137. <el-icon color="#ffffff">
  138. <CaretBottom />
  139. </el-icon>
  140. </div>
  141. </div>
  142. <div class="dashboard-content-bottom-center-bottom">
  143. <Echarts id="ww5" :option="nodeEfficiency.option" />
  144. </div>
  145. </div>
  146. <div class="dashboard-content-bottom-right">
  147. <div class="dashboard-content-bottom-right-top">
  148. <div class="dashboard-content-bottom-center-top-title">
  149. 航班动态统计
  150. </div>
  151. </div>
  152. <div class="dashboard-content-bottom-right-bottom">
  153. <Echarts id="ww6" :option="airStutas.option" />
  154. </div>
  155. </div>
  156. </div>
  157. </div>
  158. <Dialog :flag="flag" @resetForm="resetForm" @submitForm="submitForm">
  159. <el-form :model="form" label-width="120px">
  160. <el-form-item label="开始日期">
  161. <el-date-picker :disabled-date="disabledStartDate" v-model="form.startDate" type="date" placeholder="请选择开始日期" size="default" format="YYYY/MM/DD" value-format="YYYY-MM-DD" />
  162. </el-form-item>
  163. <el-form-item label="结束日期">
  164. <el-date-picker :disabled-date="disabledEndDate" v-model="form.endDate" type="date" placeholder="请选择结束日期" size="default" format="YYYY-MM-DD" value-format="YYYY-MM-DD" />
  165. </el-form-item>
  166. </el-form>
  167. </Dialog>
  168. </div>
  169. </template>
  170. <script setup lang="ts">
  171. import { ref } from "vue";
  172. import Echarts from "@/components/Echarts/commonChartsBar.vue";
  173. import EchartsMap from "@/components/Echarts/commonChartsChinaMap.vue";
  174. import ComHead from "./components/comHead.vue";
  175. import { Calendar, CaretBottom } from "@element-plus/icons-vue";
  176. import Dialog from "@/components/dialog/index.vue";
  177. import { usePublic } from "./hooks/usePublic";
  178. const {
  179. optionLeft,
  180. airlineAbnormalBaggage,
  181. airCompaneBaggage,
  182. airStutas,
  183. nodeEfficiency,
  184. hourPeak,
  185. hkArr,
  186. hkData,
  187. } = usePublic();
  188. const capArr = ref(hkArr);
  189. const capData = ref(hkData);
  190. const form = ref({
  191. startDate: Date.now(),
  192. endDate: Date.now(),
  193. });
  194. const disabledStartDate = (time: Date) => {
  195. let data = new Date(form.value.endDate);
  196. return time.getTime() > data.getTime();
  197. };
  198. const disabledEndDate = (time: Date) => {
  199. let data = new Date(form.value.startDate);
  200. return data.getTime() > time.getTime();
  201. };
  202. const flag = ref(false);
  203. const resetForm = () => {
  204. flag.value = false;
  205. };
  206. const submitForm = () => {
  207. flag.value = false;
  208. };
  209. const showDatePicker = () => {
  210. flag.value = true;
  211. };
  212. </script>
  213. <style lang="scss" scoped>
  214. @import "./css/index.scss";
  215. </style>