| | |
| | | <img src="@/assets/center-top-left.png" alt=""> |
| | | <div> |
| | | <div class="label">申请总户数(户)</div> |
| | | <div class="value">8888</div> |
| | | <div class="value">{{ data.houseHoldCount }}</div> |
| | | </div> |
| | | |
| | | </div> |
| | |
| | | <img src="@/assets/center-top-right.png" alt=""> |
| | | <div> |
| | | <div class="label">本月应补偿总额(万元)</div> |
| | | <div class="value">8888 <span>环比</span><span class="value-change value-change-down">-4%</span></div> |
| | | <div class="value">{{ data.monthCompensationAmount }} <span>环比</span><span |
| | | class="value-change value-change-down">{{ data.monthCompensationAmountRate }}</span></div> |
| | | </div> |
| | | </div> |
| | | <div class="data-item"> |
| | | <img src="@/assets/center-top-right.png" alt=""> |
| | | <div> |
| | | <div class="label">下月应补偿总额(万元)</div> |
| | | <div class="value">8888 <span>环比</span><span class="value-change value-change-up">+4%</span></div> |
| | | <div class="value">{{ data.nextMonthCompensationAmount }} <span>环比</span><span |
| | | class="value-change value-change-up">{{ data.nextMonthCompensationAmountRate }}</span></div> |
| | | </div> |
| | | </div> |
| | | </div> |
| | | </div> |
| | | |
| | | <!-- 中间地图 --> |
| | | <div class="center-middle panel-item"> |
| | | <div class="map-chart"> |
| | | <v-chart class="chart" :option="mapOption" autoresize /> |
| | | </div> |
| | | <div class="center-middle"> |
| | | <Map :data="data" /> |
| | | </div> |
| | | |
| | | <!-- 中间下部数据 --> |
| | | <div class="center-bottom panel-item"> |
| | | |
| | | <div class="compensation-table"> |
| | | <div class="table-header"> |
| | | <div class="batch-number txt-center">安置批次</div> |
| | | <div class="household-count txt-center">安置户数</div> |
| | | <div class="people-count txt-center">安置人数</div> |
| | | <div class="progress-wrapper txt-center">补偿阶段</div> |
| | | </div> |
| | | <div class="table-content"> |
| | | <div class="table-row" v-for="(item, index) in compensationList" :key="index"> |
| | | <div class="batch-number pl-20">{{ item.batchNumber }}</div> |
| | | <div class="household-count">{{ item.householdCount }}</div> |
| | | <div class="people-count">{{ item.peopleCount }}</div> |
| | | <div class="progress-wrapper"> |
| | | <div class="progress-bar"> |
| | | <div class="progress-fill"> |
| | | <div class="progress-color" :class="item.point>=25?'progress-yellow':item.point>=50?'progress-green':item.point>=75?'progress-blue':'progress-gray'"></div> |
| | | </div> |
| | | </div> |
| | | <div class="progress-text">{{ item.stage }}/20</div> |
| | | </div> |
| | | </div> |
| | | </div> |
| | | </div> |
| | | </div> |
| | | </div> |
| | | </template> |
| | | |
| | | <script> |
| | | import Map from './map.vue'; |
| | | export default { |
| | | name: 'CenterPanel', |
| | | props: { |
| | | data: { |
| | | type: Object, |
| | | default: () => { } |
| | | } |
| | | }, |
| | | components: { |
| | | Map |
| | | }, |
| | | data() { |
| | | return { |
| | | mapOption: { |
| | | tooltip: { |
| | | trigger: 'item' |
| | | }, |
| | | series: [{ |
| | | type: 'pie', |
| | | radius: ['65%', '80%'], |
| | | center: ['50%', '50%'], |
| | | label: { |
| | | show: false |
| | | }, |
| | | data: [ |
| | | { value: 8888, name: '已完成' }, |
| | | { value: 1112, name: '未完成' } |
| | | ], |
| | | itemStyle: { |
| | | color: function (params) { |
| | | const colorList = ['#00ffff', 'rgba(0,255,255,0.2)']; |
| | | return colorList[params.dataIndex]; |
| | | } |
| | | } |
| | | }] |
| | | }, |
| | | progressList: [ |
| | | { label: '已受理', value: '2021103000001', percentage: 90 }, |
| | | { label: '已审核', value: '2021103000002', percentage: 70 }, |
| | | { label: '已完成', value: '2021103000003', percentage: 50 } |
| | | ], |
| | | compensationList: [ |
| | | { |
| | | batchNumber: '2021103000001', |
| | | householdCount: '8355', |
| | | peopleCount: '238355', |
| | | progress: 50, |
| | | yellowProgress: 20, |
| | | blueProgress: 30, |
| | | stage: '1' |
| | | }, |
| | | { |
| | | batchNumber: '2021103000001', |
| | | householdCount: '8355', |
| | | peopleCount: '238355', |
| | | progress: 60, |
| | | yellowProgress: 25, |
| | | blueProgress: 35, |
| | | stage: '2' |
| | | }, |
| | | { |
| | | batchNumber: '2021103000001', |
| | | householdCount: '8355', |
| | | peopleCount: '238355', |
| | | progress: 75, |
| | | yellowProgress: 30, |
| | | blueProgress: 45, |
| | | stage: '2' |
| | | }, |
| | | { |
| | | batchNumber: '2021103000001', |
| | | householdCount: '8355', |
| | | peopleCount: '238355', |
| | | progress: 90, |
| | | yellowProgress: 35, |
| | | blueProgress: 55, |
| | | stage: '2' |
| | | } |
| | | ] |
| | | }; |
| | | } |
| | |
| | | </script> |
| | | |
| | | <style lang="less" scoped> |
| | | .pl-20 { |
| | | padding-left: 20px; |
| | | } |
| | | |
| | | .center-panel { |
| | | position: absolute; |
| | | left: 481px; |
| | |
| | | bottom: 20px; |
| | | display: flex; |
| | | flex-direction: column; |
| | | justify-content: space-between; |
| | | |
| | | .panel-item { |
| | | border-radius: 10px; |
| | |
| | | } |
| | | |
| | | .center-middle { |
| | | flex: 1; |
| | | |
| | | .map-chart { |
| | | height: calc(100% - 44px); |
| | | } |
| | | position: fixed; |
| | | top: 281px; |
| | | } |
| | | |
| | | .center-bottom { |
| | | height: 245px; |
| | | background: url('@/assets/center-bottom-bg.png') no-repeat center center; |
| | | background-size: 100% 100%; |
| | | padding: 20px; |
| | | |
| | | .compensation-table { |
| | | height: 100%; |
| | | display: flex; |
| | | flex-direction: column; |
| | | |
| | | .table-header { |
| | | display: flex; |
| | | align-items: center; |
| | | color: rgba(255, 255, 255, 0.6); |
| | | font-size: 12px; |
| | | // margin-top: 20px; |
| | | margin-bottom: 15px; |
| | | |
| | | >div { |
| | | margin-right: 40px; |
| | | } |
| | | |
| | | .batch-number { |
| | | width: 150px; |
| | | } |
| | | |
| | | .household-count { |
| | | width: 80px; |
| | | text-align: center; |
| | | } |
| | | |
| | | .people-count { |
| | | width: 100px; |
| | | text-align: center; |
| | | } |
| | | |
| | | .progress-wrapper { |
| | | flex: 1; |
| | | padding-right: 20px; |
| | | padding-left: 20px; |
| | | } |
| | | } |
| | | |
| | | .table-content { |
| | | flex: 1; |
| | | display: flex; |
| | | flex-direction: column; |
| | | justify-content: space-between; |
| | | |
| | | .table-row { |
| | | display: flex; |
| | | align-items: center; |
| | | color: #fff; |
| | | font-size: 14px; |
| | | padding: 8px 0; |
| | | margin-bottom: 5px; |
| | | box-sizing: border-box; |
| | | |
| | | >div { |
| | | margin-right: 40px; |
| | | } |
| | | |
| | | .batch-number { |
| | | width: 150px; |
| | | } |
| | | |
| | | .household-count { |
| | | width: 80px; |
| | | text-align: center; |
| | | } |
| | | |
| | | .people-count { |
| | | width: 100px; |
| | | text-align: center; |
| | | } |
| | | |
| | | .progress-wrapper { |
| | | flex: 1; |
| | | display: flex; |
| | | align-items: center; |
| | | |
| | | .progress-bar { |
| | | flex: 1; |
| | | height: 10px; |
| | | background: rgba(255, 255, 255, 0.1); |
| | | border-radius: 5px; |
| | | margin-right: 15px; |
| | | overflow: hidden; |
| | | |
| | | .progress-fill { |
| | | height: 100%; |
| | | display: flex; |
| | | |
| | | .progress-yellow { |
| | | height: 100%; |
| | | background: #FEDB65; |
| | | } |
| | | |
| | | .progress-blue { |
| | | height: 100%; |
| | | background: #00C6FF; |
| | | } |
| | | |
| | | .progress-green { |
| | | height: 100%; |
| | | background: rgba(0, 220, 171, 1); |
| | | } |
| | | |
| | | .progress-gray { |
| | | height: 100%; |
| | | background: rgba(0, 242, 240, 1); |
| | | } |
| | | |
| | | |
| | | |
| | | } |
| | | } |
| | | |
| | | .progress-text { |
| | | width: 50px; |
| | | text-align: right; |
| | | } |
| | | } |
| | | |
| | | &:nth-child(2n + 1) { |
| | | background: url('@/assets/bg.png') no-repeat center center; |
| | | border: 2px solid; |
| | | border-image: linear-gradient(180deg, rgba(255, 255, 255, 0), rgba(1, 10, 40, 0), rgba(255, 255, 255, 0.6)) 2 2; |
| | | } |
| | | |
| | | &:nth-child(2n) { |
| | | background: url('@/assets/unbg.png') no-repeat center center; |
| | | border: 2px solid; |
| | | border-image: linear-gradient(180deg, rgba(255, 255, 255, 0), rgba(1, 10, 40, 0), rgba(255, 255, 255, 0.2)) 2 2; |
| | | } |
| | | |
| | | &:last-child { |
| | | margin-bottom: 0; |
| | | } |
| | | } |
| | | } |
| | | } |
| | | } |
| | | |
| | | .txt-center { |
| | | text-align: center; |
| | | font-size: 12px; |
| | | color: #19ECFF; |
| | | line-height: 18px; |
| | | } |
| | | |
| | | .map-data { |
| | | display: flex; |
| | | justify-content: center; |
| | | justify-content: space-between; |
| | | padding-left: 94px; |
| | | padding-right: 94px; |
| | | height: 100%; |
| | | align-items: center; |
| | | |
| | | .data-item { |
| | | display: flex; |
| | | width: 268px; |
| | | flex-shrink: 0; |
| | | |
| | | img { |
| | | width: 94px; |
| | |
| | | -webkit-background-clip: text; |
| | | background-clip: text; |
| | | margin-left: 5px; |
| | | |
| | | span { |
| | | font-size: 12px; |
| | | } |
| | |
| | | color: #7cb9e8; |
| | | } |
| | | |
| | | .chart { |
| | | width: 100%; |
| | | height: calc(100% - 35px); |
| | | } |
| | | } |
| | | </style> |