|
|
|
@ -65,7 +65,7 @@ |
|
|
|
<span class="label">名称:</span> |
|
|
|
<span class="value">{{ shipSelectedItem.shipBasicInfo.name + '-' + |
|
|
|
shipSelectedItem.shipBasicInfo.nameEn |
|
|
|
}}</span> |
|
|
|
}}</span> |
|
|
|
</div> |
|
|
|
<!-- <div class="detail-item"> |
|
|
|
<span class="label">英文船名:</span> |
|
|
|
@ -119,7 +119,7 @@ |
|
|
|
<span class="label">靠泊类型:</span> |
|
|
|
<span class="value">{{ getOperationTypeLabel(shipSelectedItem.shorePowerAndShip.type, |
|
|
|
BERTH_TYPE) |
|
|
|
}}</span> |
|
|
|
}}</span> |
|
|
|
</div> |
|
|
|
<div class="detail-item"> |
|
|
|
<span class="label">靠泊时间:</span> |
|
|
|
@ -148,12 +148,12 @@ |
|
|
|
<div class="detail-item"> |
|
|
|
<span class="label">岸电联系人:</span> |
|
|
|
<span class="value">{{ shipSelectedItem?.shipBasicInfo?.shorePowerContact |
|
|
|
}}</span> |
|
|
|
}}</span> |
|
|
|
</div> |
|
|
|
<div class="detail-item"> |
|
|
|
<span class="label">联系方式:</span> |
|
|
|
<span class="value">{{ shipSelectedItem?.shipBasicInfo?.shorePowerContactPhone |
|
|
|
}}</span> |
|
|
|
}}</span> |
|
|
|
</div> |
|
|
|
</div> |
|
|
|
</div> |
|
|
|
@ -234,6 +234,7 @@ |
|
|
|
</div> |
|
|
|
</div> |
|
|
|
</div> |
|
|
|
<div style="margin-top: 8px; font-size: 16px;">注: 点击查看同比环比信息</div> |
|
|
|
</div> |
|
|
|
|
|
|
|
<!-- 港口企业岸电使用 --> |
|
|
|
@ -310,26 +311,38 @@ |
|
|
|
</div> |
|
|
|
</div> |
|
|
|
<div class="ship-status"> |
|
|
|
<div class="usage-rate shadow" @click="handleOpenRate"> |
|
|
|
<div class="usage-rate shadow" @click.stop="handleClickComparison()"> |
|
|
|
<div class="comparison-type-selector-container"> |
|
|
|
<div class="comparison-type-selector"> |
|
|
|
<button :class="['comparison-type-btn', { active: shorePowerCardShow }]" |
|
|
|
@click.stop="handleClickComparison()"> |
|
|
|
环比/同比 |
|
|
|
</button> |
|
|
|
<!-- <button :class="['comparison-type-btn', { active: comparisonType === 'yearOnYear' }]" |
|
|
|
@click="handleClickComparison('yearOnYear')"> |
|
|
|
同比 |
|
|
|
</button> --> |
|
|
|
</div> |
|
|
|
</div> |
|
|
|
<div class="rate-value">{{ calculateShorePowerUsageRate() }}%</div> |
|
|
|
<div class="rate-label">岸电使用率</div> |
|
|
|
</div> |
|
|
|
<div class="status-grid"> |
|
|
|
<div class="status-card"> |
|
|
|
<div class="status-card" @click="handleCloseShipList()"> |
|
|
|
<div class="status-value">{{ shipTotalData.allPortAreaCount }}</div> |
|
|
|
<div class="status-label">在港船舶</div> |
|
|
|
<div class="status-label">在港船舶<br />(艘)</div> |
|
|
|
</div> |
|
|
|
<div class="status-card" @click="handleShowShipList('all')"> |
|
|
|
<div class="status-value">{{ shipTotalData.berthingShips }}</div> |
|
|
|
<div class="status-label">在泊船舶</div> |
|
|
|
<div class="status-label">靠泊船舶<br />(艘)</div> |
|
|
|
</div> |
|
|
|
<div class="status-card" @click="handleShowShipList('using')"> |
|
|
|
<div class="status-value">{{ shipTotalData.shorePowerShips }}</div> |
|
|
|
<div class="status-label">使用岸电船舶</div> |
|
|
|
<div class="status-label">使用岸电船舶(艘)</div> |
|
|
|
</div> |
|
|
|
<div class="status-card" @click="handleShowShipList('notUsing')"> |
|
|
|
<div class="status-value">{{ shipTotalData.noShorePowerShips }}</div> |
|
|
|
<div class="status-label">未使用岸电船舶</div> |
|
|
|
<div class="status-label">未使用岸电船舶(艘)</div> |
|
|
|
</div> |
|
|
|
</div> |
|
|
|
<!-- <div class="ship-list"> |
|
|
|
@ -456,6 +469,8 @@ const shipHistoryVisible = ref({ |
|
|
|
const shipSelectedItem = ref<ShipRespVo | null>(null) |
|
|
|
const shorePowerCardShow = ref(false) |
|
|
|
|
|
|
|
const comparisonType = ref('chain') |
|
|
|
|
|
|
|
const periodOptions = [ |
|
|
|
{ label: '当日', value: 'day' }, |
|
|
|
{ label: '当月', value: 'month' }, |
|
|
|
@ -463,30 +478,13 @@ const periodOptions = [ |
|
|
|
{ label: '汇总', value: 'realtime' }, |
|
|
|
] |
|
|
|
|
|
|
|
// 模拟不同时间段的数据 |
|
|
|
const rankingData = { |
|
|
|
今日: [ |
|
|
|
{ rank: 1, name: '华能曹妃甸港口有限公司', value: '350,000', change: '+15%', isUp: true }, |
|
|
|
{ rank: 2, name: '河北华电曹妃甸储运有限公司', value: '280,000', change: '+8%', isUp: true }, |
|
|
|
{ rank: 3, name: '国投曹妃甸港口有限公司', value: '220,000', change: '-3%', isUp: false } |
|
|
|
], |
|
|
|
本月: [ |
|
|
|
{ rank: 1, name: '华能曹妃甸港口有限公司', value: '8,350,000', change: '+12%', isUp: true }, |
|
|
|
{ rank: 2, name: '国投曹妃甸港口有限公司', value: '7,280,000', change: '+5%', isUp: true }, |
|
|
|
{ rank: 3, name: '河北华电曹妃甸储运有限公司', value: '6,220,000', change: '-2%', isUp: false } |
|
|
|
], |
|
|
|
本年: [ |
|
|
|
{ rank: 1, name: '华能曹妃甸港口有限公司', value: '120,350,000', change: '+18%', isUp: true }, |
|
|
|
{ rank: 2, name: '国投曹妃甸港口有限公司', value: '95,280,000', change: '+9%', isUp: true }, |
|
|
|
{ rank: 3, name: '河北华电曹妃甸储运有限公司', value: '82,220,000', change: '+3%', isUp: true } |
|
|
|
], |
|
|
|
全部: [ |
|
|
|
{ rank: 1, name: '华能曹妃甸港口有限公司', value: '2,120,350,000', change: '+15%', isUp: true }, |
|
|
|
{ rank: 2, name: '国投曹妃甸港口有限公司', value: '1,095,280,000', change: '+11%', isUp: true }, |
|
|
|
{ rank: 3, name: '河北华电曹妃甸储运有限公司', value: '882,220,000', change: '+7%', isUp: true } |
|
|
|
] |
|
|
|
const handleClickComparison = () => { |
|
|
|
if (shorePowerCardShow.value) { |
|
|
|
handleCloseRate() |
|
|
|
} else { |
|
|
|
handleOpenRate() |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
// 关闭岸电使用情况模块 |
|
|
|
const handleCloseRate = () => { |
|
|
|
shorePowerCardShow.value = false |
|
|
|
@ -1094,6 +1092,7 @@ const deviceDataMap = computed(() => { |
|
|
|
align-items: center; |
|
|
|
cursor: pointer; |
|
|
|
transition: all 0.3s ease; |
|
|
|
position: relative; |
|
|
|
|
|
|
|
&:hover { |
|
|
|
transform: translateY(-2px); |
|
|
|
@ -1333,4 +1332,10 @@ const deviceDataMap = computed(() => { |
|
|
|
.close-btn:hover { |
|
|
|
color: #f5222d; |
|
|
|
} |
|
|
|
|
|
|
|
.comparison-type-selector-container { |
|
|
|
position: absolute; |
|
|
|
top: 8px; |
|
|
|
right: 8px; |
|
|
|
} |
|
|
|
</style> |