| | |
| | | <div class="bottom-charts"> |
| | | <div class="chart-container"> |
| | | <div class="chart-group"> |
| | | <div class="chart-title">租金收入趋势图</div> |
| | | <div class="chart-title">租金收入趋势图 <span style="font-size: 12px;">(万元)</span></div> |
| | | <div class="income-chart" ref="incomeChart"></div> |
| | | </div> |
| | | <div class="chart-group"> |
| | |
| | | initCharts() { |
| | | // 租金收入趋势图表 |
| | | if (Object.keys(this.rentIncomeTrend).length > 0) { |
| | | console.log(this.rentIncomeTrend); |
| | | |
| | | this.charts.income = echarts.init(this.$refs.incomeChart) |
| | | this.charts.income.setOption({ |
| | | grid: { |
| | |
| | | }, |
| | | tooltip: { |
| | | trigger: 'axis', |
| | | confine: true |
| | | confine: true, |
| | | formatter: function(params) { |
| | | let result = params[0].axisValue + '<br/>'; |
| | | params.forEach(param => { |
| | | const prefix = param.seriesIndex === 0 ? '租金收入:' : '欠费:'; |
| | | const color = param.seriesIndex === 0 ? '#ffd700' : '#F65456'; |
| | | result += `<span style="display:inline-block;margin-right:8px;border-radius:10px;width:10px;height:10px;background-color:${color}"></span>${prefix}${param.value}<br/>`; |
| | | }); |
| | | return result; |
| | | } |
| | | }, |
| | | xAxis: { |
| | | type: 'category', |
| | |
| | | rotate: 30 |
| | | } |
| | | }, |
| | | yAxis: { |
| | | yAxis: [ |
| | | { |
| | | type: 'value', |
| | | splitLine: { |
| | | show: false |
| | |
| | | color: '#fff' |
| | | } |
| | | }, |
| | | { |
| | | type: 'value', |
| | | splitLine: { |
| | | show: false |
| | | }, |
| | | axisLine: { |
| | | show: true, |
| | | lineStyle: { |
| | | color: '#fff' |
| | | } |
| | | }, |
| | | axisLabel: { |
| | | color: '#fff' |
| | | } |
| | | } |
| | | ], |
| | | series: [{ |
| | | data: this.rentIncomeTrend.incomeData, |
| | | type: 'line', |
| | |
| | | }] |
| | | } |
| | | } |
| | | },{ |
| | | data: this.rentIncomeTrend.outstandingData, |
| | | type: 'line', |
| | | yAxisIndex: 1, |
| | | smooth: true, |
| | | symbol: 'circle', |
| | | symbolSize: 8, |
| | | lineStyle: { |
| | | color: '#F65456', |
| | | width: 2 |
| | | }, |
| | | itemStyle: { |
| | | color: '#F65456' |
| | | }, |
| | | areaStyle: { |
| | | color: { |
| | | type: 'linear', |
| | | x: 0, |
| | | y: 0, |
| | | x2: 0, |
| | | y2: 1, |
| | | colorStops: [{ |
| | | offset: 0, |
| | | color: 'rgba(246, 82, 82, 0.3)' |
| | | }, { |
| | | offset: 1, |
| | | color: 'rgba(246, 82, 82, 0.3)' |
| | | }] |
| | | } |
| | | } |
| | | } |
| | | ] |
| | | }) |
| | | } |
| | | // 租户数量趋势图表 |
| | |
| | | }, |
| | | tooltip: { |
| | | trigger: 'axis', |
| | | confine: true |
| | | confine: true, |
| | | formatter: function(params) { |
| | | let result = params[0].axisValue + '<br/>'; |
| | | params.forEach(param => { |
| | | const color = '#87F7C7'; |
| | | result += `<span style="display:inline-block;margin-right:8px;border-radius:10px;width:10px;height:10px;background-color:${color}"></span>租户数量:${param.value}<br/>`; |
| | | }); |
| | | return result; |
| | | } |
| | | }, |
| | | xAxis: { |
| | | type: 'category', |
| | |
| | | |
| | | &.active { |
| | | .map-marker-item-icon { |
| | | |
| | | &::before, |
| | | &::after { |
| | | animation: ripple 1.5s cubic-bezier(0, 0.2, 0.8, 1) infinite; |
| | |
| | | |
| | | &:nth-child(1) { |
| | | .map-marker-item-icon { |
| | | |
| | | // background-color: #4fsdsad9ff; |
| | | &::before, |
| | | &::after { |
| | |
| | | |
| | | &:nth-child(2) { |
| | | .map-marker-item-icon { |
| | | |
| | | // background-color: #faad14; |
| | | &::before, |
| | | &::after { |
| | |
| | | |
| | | &:nth-child(3) { |
| | | .map-marker-item-icon { |
| | | |
| | | // background-color: #ff4d4f; |
| | | &::before, |
| | | &::after { |
| | |
| | | |
| | | &:nth-child(4) { |
| | | .map-marker-item-icon { |
| | | |
| | | // background-color: #39c5bb; |
| | | &::before, |
| | | &::after { |
| | |
| | | transform: translate(-50%, -50%) scale(1); |
| | | opacity: 0.8; |
| | | } |
| | | |
| | | 100% { |
| | | transform: translate(-50%, -50%) scale(2.5); |
| | | opacity: 0; |
| | |
| | | </div> |
| | | </div> |
| | | </div> |
| | | |
| | | <div class="stat-group mt-10"> |
| | | <div class="stat-item"> |
| | | <img :src="require('@/assets/arrears.png')" width="40" height="40" /> |
| | | <div class="stat-info"> |
| | | <div class="stat-label"> <i class="icon-area"></i> 本季度欠费</div> |
| | | <div class="stat-value">{{ staticsData.totalRentOwe }}<span class="unit">万元</span></div> |
| | | </div> |
| | | </div> |
| | | <div class="stat-item"> |
| | | <img :src="require('@/assets/totalArrears.png')" width="40" height="40" /> |
| | | <div class="stat-info"> |
| | | <div class="stat-label"> <i class="icon-area"></i>总计欠费</div> |
| | | <div class="stat-value">{{ staticsData.totalRentOweAll }}<span class="unit">万元</span></div> |
| | | </div> |
| | | </div> |
| | | </div> |
| | | </div> |
| | | <div class="chart-card" style="width: 350px;"> |
| | | <div class="chart-title">区域租金排名</div> |
| | |
| | | } |
| | | |
| | | .footer { |
| | | height: 200px; |
| | | height: 300px; |
| | | position: absolute; |
| | | bottom: 0; |
| | | left: 0; |