From aa05304d221b1883d746e686f390d6f3fba598a7 Mon Sep 17 00:00:00 2001 From: ZhangXianQiang <1135831638@qq.com> Date: 星期五, 24 五月 2024 09:36:09 +0800 Subject: [PATCH] feat:动态数据中心 --- src/views/home/data-view/index.vue | 202 ++++++++++++++++++++++++++++++++++++++----------- 1 files changed, 155 insertions(+), 47 deletions(-) diff --git a/src/views/home/data-view/index.vue b/src/views/home/data-view/index.vue index f92b236..01aa966 100644 --- a/src/views/home/data-view/index.vue +++ b/src/views/home/data-view/index.vue @@ -5,43 +5,65 @@ <h1 class="title">杩愮淮鎶ヨ〃</h1> </el-col> </el-row> - <el-row :gutter="20" class="data-plane"> - <el-col :xs='24' :md="6" :xl="{ span: '4-8' }" :sm="12" v-for="item, index in dataList" :key="item.id"> - <div class="col-content"> - <el-card> - <el-row type="flex" align="middle" justify="space-between"> - <el-col :xl="8" :lg="8" :md="10" :sm="8" :xs="6"> - <div class="icon-container" :style="{ backgroundColor: iconList[index].color }"> - <i :class="iconList[index].icon" class="icon-font"></i> - </div> - </el-col> - <el-col :xl="14" :lg="14" :md="12" :sm="14" :xs="16"> - <div class="data-info"> - <div class="data-num">{{ item.num }}</div> - <div class="data-lable">{{ item.type }}</div> - </div> - </el-col> - </el-row> - </el-card> - </div> - </el-col> - </el-row> + + <el-card class="map-wrapper"> + <el-row> + <el-col :span="5"> + <div class="select-container"> + <div class="select-label"> + 鏁版嵁婧� + </div> + <el-select v-model="selectOption" placeholder="璇烽�夋嫨"> + <el-option v-for="item in options" :key="item.value" :label="item.label" :value="item.value"> + </el-option> + </el-select> + </div> + + </el-col> + <el-col :offset="17" :span="2"> + <el-button type="primary" @click="toScreen">鍙鍖栧ぇ灞�</el-button> + </el-col> + </el-row> + <el-row :gutter="40" class="data-plane" style="height: 100%;"> + <el-col :xs='24' :md="24" :sm="24" :lg="6" :xl="6" style="height: 100%;"> + <data-icon :activeData="activeData"></data-icon> + </el-col> + <el-col :xs='24' :md="24" :sm="24" :lg="12" :xl="12" style="height: 100%;"> + <data-map @filterData="filterData"></data-map> + </el-col> + <el-col :xs='24' :md="24" :sm="24" :lg="6" :xl="6" style="height: 100%;"> + <data-hola :activeData="activeData"></data-hola> + </el-col> + </el-row> + </el-card> + </div> - </template> <script> +// import DataPlane from './components/data-plane.vue'; + +import DataMap from './components/data-map.vue'; +import DataIcon from './components/data-icon.vue'; +import DataHola from './components/data-hola.vue'; + export default { name: 'DataView', + components: { + DataMap, + DataIcon, + DataHola, + // DataPlane + }, data() { return { dataList: [ { id: 1, type: '宸ュ崟鏁�', num: 523, }, { id: 2, type: '鎭㈠鏁�', num: 50, }, { id: 3, type: '寰呮仮澶嶆暟', num: 523, }, - { id: 4, type: '浜х敓杩濈害浜嬮」鏁�', num: 123, }, - { id: 5, type: '浜х敓杩濈害璐d换涔�', num: 512323, }, + { id: 4, type: '瓒呮湡鏈鐞嗘暟', num: 123, }, + { id: 5, type: '瓒呮湡璐d换鏁�', num: 512323, }, ], iconList: [ { icon: 'el-icon-tickets', color: '#7868d9' }, @@ -49,8 +71,103 @@ { icon: 'el-icon-edit', color: '#3da7f8' }, { icon: 'el-icon-warning', color: '#ffbe40' }, { icon: 'el-icon-error', color: '#fe640d' }, - ] + ], + totalList: [ + { + "name": "鑽e幙", + "data1": 3, + "data2": 82, + "data3": 5, + "data4": 95, + "data5": 50 + }, + { + "name": "璐′簳鍖�", + "data1": 1, + "data2": 94, + "data3": 38, + "data4": 60, + "data5": 87 + }, + { + "name": "鑷祦浜曞尯", + "data1": 15, + "data2": 57, + "data3": 81, + "data4": 77, + "data5": 85 + }, + { + "name": "娌挎哗鍖�", + "data1": 8, + "data2": 7, + "data3": 60, + "data4": 77, + "data5": 43 + }, + { + "name": "瀵岄『鍘�", + "data1": 40, + "data2": 75, + "data3": 50, + "data4": 69, + "data5": 79 + }, + { + "name": "澶у畨鍖�", + "data1": 68, + "data2": 38, + "data3": 27, + "data4": 43, + "data5": 95 + } + ], + activeData: { name: '鑷础甯�', data1: 0, data2: 0, data3: 0, data4: 0, data5: 0 }, + options: [ + { + value: 1, + label: '鐪佸巺鏁版嵁' + }, + { + value: 2, + label: '甯傚眬鏁版嵁' + }, + { + value: 3, + label: '鍏畨閮ㄦ暟鎹�' + }, + ], + selectOption: 1 } + }, + methods: { + filterData(name) { + if (name) { + this.activeData = this.totalList.find(item => item.name === name); + } else { + this.countTotal(); + } + + }, + countTotal() { + let data = {}; + this.totalList.forEach((item) => { + Object.keys(item).forEach((key) => { + data[key] = data[key] ? data[key] + item[key] : item[key]; + }); + }); + data.name = '鑷础甯�'; + this.activeData = data; + }, + + toScreen() { + this.$router.push({ + path: '/screen' + }) + } + }, + created() { + this.countTotal(); } } </script> @@ -59,6 +176,7 @@ .data-container { margin-bottom: 20px; } + .title { text-align: left; } @@ -71,32 +189,22 @@ margin-bottom: 10px; } -.icon-container { - display: flex; - justify-content: center; - align-items: center; - border-radius: 8px; +.map-wrapper { + // background-color: rgb(48, 65, 86); - .icon-font { - font-size: 30px; - color: #fff; - } } -.data-info { +.data-plane { + aspect-ratio: 6/2; +} + +.select-container { display: flex; - height: 100%; - flex-direction: column; - justify-content: center; - text-align: left; - - .data-num { - font-size: 32px; - } - - .data-lable { + align-items: center; + .select-label { + color: #666; + margin-right: 20px; font-size: 16px; - text-indent: 3px; } } @@ -105,4 +213,4 @@ width: 20%; } } -</style> \ No newline at end of file +</style> -- Gitblit v1.8.0