fix: update some files
All checks were successful
构建并部署前端到测试环境 / build-and-deploy (push) Successful in 5m35s

This commit is contained in:
luo
2026-08-19 18:14:20 +08:00
parent fe357f56d9
commit 4d023e7666
4 changed files with 135 additions and 87 deletions

View File

@@ -40,7 +40,7 @@
</div> </div>
</div> </div>
</template> </template>
<ElDescriptions :column="descriptionsColumn" direction="vertical" border> <ElDescriptions :column="descriptionsColumn" direction="vertical" border size="large">
<!-- 卡专属字段 --> <!-- 卡专属字段 -->
<template v-if="cardInfo?.asset_type === 'card'"> <template v-if="cardInfo?.asset_type === 'card'">
<ElDescriptionsItem label="ICCID">{{ cardInfo?.iccid || '-' }}</ElDescriptionsItem> <ElDescriptionsItem label="ICCID">{{ cardInfo?.iccid || '-' }}</ElDescriptionsItem>
@@ -211,7 +211,7 @@
<template v-if="previousExchangeAsset || nextExchangeAsset"> <template v-if="previousExchangeAsset || nextExchangeAsset">
<ElDivider content-position="left">换货链路</ElDivider> <ElDivider content-position="left">换货链路</ElDivider>
<ElDescriptions :column="descriptionsColumn" border> <ElDescriptions :column="descriptionsColumn" border size="large">
<ElDescriptionsItem v-if="previousExchangeAsset" label="前代资产"> <ElDescriptionsItem v-if="previousExchangeAsset" label="前代资产">
<div class="exchange-asset"> <div class="exchange-asset">
<ElTag type="success" size="small">旧资产</ElTag> <ElTag type="success" size="small">旧资产</ElTag>
@@ -338,7 +338,7 @@
<ElButton <ElButton
v-if="bindingCard.network_status === 0" v-if="bindingCard.network_status === 0"
type="success" type="success"
size="small" size="default"
:disabled="isBindingStartDisabled(bindingCard)" :disabled="isBindingStartDisabled(bindingCard)"
@click="handleEnableBindingCard(bindingCard)" @click="handleEnableBindingCard(bindingCard)"
v-permission="'iot_info:start'" v-permission="'iot_info:start'"
@@ -348,7 +348,7 @@
<ElButton <ElButton
v-if="bindingCard.network_status === 1" v-if="bindingCard.network_status === 1"
type="warning" type="warning"
size="small" size="default"
:disabled="isBindingStopDisabled(bindingCard)" :disabled="isBindingStopDisabled(bindingCard)"
@click="handleDisableBindingCard(bindingCard)" @click="handleDisableBindingCard(bindingCard)"
v-permission="'iot_info:stop'" v-permission="'iot_info:stop'"
@@ -357,7 +357,7 @@
</ElButton> </ElButton>
<ElButton <ElButton
type="primary" type="primary"
size="small" size="default"
@click="handleUpdateBindingCardRealnameStatus(bindingCard)" @click="handleUpdateBindingCardRealnameStatus(bindingCard)"
v-permission="'bound_card:update_realname_status'" v-permission="'bound_card:update_realname_status'"
> >
@@ -366,7 +366,7 @@
<ElButton <ElButton
v-if="getBindingCardAuditTarget(bindingCard)" v-if="getBindingCardAuditTarget(bindingCard)"
type="primary" type="primary"
size="small" size="default"
@click="openBindingCardAudit(bindingCard)" @click="openBindingCardAudit(bindingCard)"
> >
卡审计 卡审计
@@ -383,7 +383,12 @@
<span class="section-divider-title">设备实时信息</span> <span class="section-divider-title">设备实时信息</span>
</ElDivider> </ElDivider>
<div v-if="hasDeviceRealtimeSection" v-loading="realtimeLoading" class="realtime-section"> <div v-if="hasDeviceRealtimeSection" v-loading="realtimeLoading" class="realtime-section">
<ElDescriptions :column="descriptionsColumn" direction="vertical" border> <ElDescriptions
:column="descriptionsColumn"
direction="vertical"
border
size="large"
>
<ElDescriptionsItem <ElDescriptionsItem
v-for="item in realtimeDescriptionItems" v-for="item in realtimeDescriptionItems"
:key="item.key" :key="item.key"
@@ -1192,7 +1197,6 @@
.binding-card-header { .binding-card-header {
justify-content: space-between; justify-content: space-between;
padding-bottom: 12px;
} }
.binding-card-details { .binding-card-details {
@@ -1209,7 +1213,7 @@
gap: 16px; gap: 16px;
min-height: 42px; min-height: 42px;
min-width: 0; min-width: 0;
padding: 10px 12px; padding: 0 12px;
border-bottom: 1px solid var(--el-border-color-lighter); border-bottom: 1px solid var(--el-border-color-lighter);
&:last-child { &:last-child {
@@ -1249,6 +1253,9 @@
overflow: hidden; overflow: hidden;
text-overflow: ellipsis; text-overflow: ellipsis;
white-space: nowrap; white-space: nowrap;
font-size: 16px;
font-weight: 600;
line-height: 24px;
} }
.copy-icon { .copy-icon {

View File

@@ -181,7 +181,7 @@
</div> </div>
<!-- 套餐详情表格 --> <!-- 套餐详情表格 -->
<ElDescriptions :column="descriptionsColumn" direction="vertical" border> <ElDescriptions :column="descriptionsColumn" direction="vertical" border size="large">
<ElDescriptionsItem label="订单号"> <ElDescriptionsItem label="订单号">
{{ currentPackage.order_no || '-' }} {{ currentPackage.order_no || '-' }}
</ElDescriptionsItem> </ElDescriptionsItem>

View File

@@ -32,15 +32,20 @@
<ElTable :data="packageList" class="package-table" border> <ElTable :data="packageList" class="package-table" border>
<ElTableColumn label="订单号" width="240"> <ElTableColumn label="订单号" width="240">
<template #default="scope"> <template #default="scope">
<ElButton <div class="order-no-cell">
type="primary" <ElTooltip :content="scope.row.order_no" placement="top" :show-after="300">
link <ElButton
@click="handleOrderNoClick(scope.row)" class="order-no-link"
v-if="hasAuth('order:package_list_detail')" type="primary"
> link
{{ scope.row.order_no }} @click="handleOrderNoClick(scope.row)"
</ElButton> v-if="hasAuth('order:package_list_detail')"
<span v-else>{{ scope.row.order_no }}</span> >
{{ scope.row.order_no }}
</ElButton>
<span v-else class="order-no-text">{{ scope.row.order_no }}</span>
</ElTooltip>
</div>
</template> </template>
</ElTableColumn> </ElTableColumn>
<ElTableColumn label="套餐名称" width="200" show-overflow-tooltip> <ElTableColumn label="套餐名称" width="200" show-overflow-tooltip>
@@ -369,7 +374,8 @@
ElInputNumber, ElInputNumber,
ElDatePicker, ElDatePicker,
ElSelect, ElSelect,
ElOption ElOption,
ElTooltip
} from 'element-plus' } from 'element-plus'
import { ElMessage } from 'element-plus' import { ElMessage } from 'element-plus'
import type { FormInstance, FormRules } from 'element-plus' import type { FormInstance, FormRules } from 'element-plus'
@@ -729,6 +735,35 @@
white-space: nowrap; white-space: nowrap;
} }
.order-no-cell {
width: 100%;
min-width: 0;
:deep(.el-tooltip__trigger) {
display: block;
width: 100%;
min-width: 0;
}
.order-no-link,
.order-no-text {
display: block;
width: 100%;
min-width: 0;
max-width: 100%;
overflow: hidden;
text-align: left;
text-overflow: ellipsis;
white-space: nowrap;
}
.order-no-link {
padding: 0;
margin-left: 0;
justify-content: flex-start;
}
}
.package-actions { .package-actions {
display: grid; display: grid;
grid-template-columns: repeat(2, 1fr); grid-template-columns: repeat(2, 1fr);

View File

@@ -2,25 +2,30 @@
<ElCard shadow="never" class="info-card wallet-info" v-loading="walletLoading"> <ElCard shadow="never" class="info-card wallet-info" v-loading="walletLoading">
<template #header> <template #header>
<div class="card-header wallet-header"> <div class="card-header wallet-header">
<div class="header-left"> <div class="wallet-header-top">
<span class="wallet-title">钱包</span> <span class="wallet-title">钱包</span>
<ElTag v-if="walletInfo" :type="getWalletStatusType(walletInfo.status)" size="small"> <ElTag
v-if="walletInfo"
class="wallet-status-tag"
:type="getWalletStatusType(walletInfo.status)"
size="large"
>
{{ walletInfo.status_text || '-' }} {{ walletInfo.status_text || '-' }}
</ElTag> </ElTag>
<template v-if="walletInfo"> </div>
<ElDivider class="wallet-divider" direction="vertical" /> <div v-if="walletInfo" class="wallet-balance-summary">
<span class="balance-item" <div class="balance-item">
>总余额 <strong>{{ formatAmount(walletInfo.balance) }}</strong></span <span class="balance-label">总余额</span>
> <strong>{{ formatAmount(walletInfo.balance) }}</strong>
<ElDivider class="wallet-divider" direction="vertical" /> </div>
<span class="balance-item" <div class="balance-item">
>可用 <strong>{{ formatAmount(walletInfo.available_balance) }}</strong></span <span class="balance-label">可用</span>
> <strong>{{ formatAmount(walletInfo.available_balance) }}</strong>
<ElDivider class="wallet-divider" direction="vertical" /> </div>
<span class="balance-item" <div class="balance-item">
>冻结 <strong>{{ formatAmount(walletInfo.frozen_balance) }}</strong></span <span class="balance-label">冻结</span>
> <strong>{{ formatAmount(walletInfo.frozen_balance) }}</strong>
</template> </div>
</div> </div>
<div v-if="!props.boundDeviceId" class="filter-section"> <div v-if="!props.boundDeviceId" class="filter-section">
<ElSelect <ElSelect
@@ -173,8 +178,7 @@
ElDatePicker, ElDatePicker,
ElPagination, ElPagination,
ElEmpty, ElEmpty,
ElMessage, ElMessage
ElDivider
} from 'element-plus' } from 'element-plus'
import { useAssetFormatters } from '../composables/useAssetFormatters' import { useAssetFormatters } from '../composables/useAssetFormatters'
import { formatDateTime } from '@/utils/business/format' import { formatDateTime } from '@/utils/business/format'
@@ -384,35 +388,61 @@
&.wallet-info { &.wallet-info {
.wallet-header { .wallet-header {
display: flex; display: flex;
flex-wrap: wrap; flex-direction: column;
gap: 16px; gap: 16px;
align-items: center; align-items: stretch;
justify-content: space-between; min-width: 0;
.header-left { .wallet-header-top {
display: flex; display: flex;
flex-wrap: wrap;
gap: 8px;
align-items: center; align-items: center;
justify-content: space-between;
width: 100%;
}
.wallet-title { .wallet-title {
font-size: 15px; font-size: 16px;
font-weight: 500; font-weight: 600;
} white-space: nowrap;
}
.wallet-divider { .wallet-balance-summary {
flex-shrink: 0; display: grid;
} grid-template-columns: repeat(3, minmax(0, 1fr));
gap: 12px;
width: 100%;
min-width: 0;
}
.balance-item { .balance-item {
display: flex;
align-items: center;
justify-content: flex-start;
gap: 8px;
min-width: 0;
padding: 8px 12px;
white-space: nowrap;
background: var(--el-fill-color-lighter);
border: 1px solid var(--el-border-color-lighter);
border-radius: 8px;
.balance-label {
font-size: 13px; font-size: 13px;
color: var(--el-text-color-regular); color: var(--el-text-color-secondary);
strong {
font-weight: 600;
color: var(--el-text-color-primary);
}
} }
strong {
font-size: 18px;
font-weight: 700;
line-height: 24px;
color: var(--el-text-color-primary);
}
}
.wallet-status-tag {
padding: 8px 14px;
font-size: 14px;
font-weight: 700;
} }
.filter-section { .filter-section {
@@ -421,6 +451,7 @@
gap: 10px; gap: 10px;
align-items: center; align-items: center;
justify-content: flex-end; justify-content: flex-end;
width: 100%;
min-width: 0; min-width: 0;
.transaction-type-select { .transaction-type-select {
@@ -462,30 +493,14 @@
@media (width <= 1200px) { @media (width <= 1200px) {
.wallet-header { .wallet-header {
flex-direction: column;
align-items: flex-start;
.header-left,
.filter-section { .filter-section {
width: 100%; justify-content: flex-end;
}
.filter-section {
justify-content: flex-start;
} }
} }
} }
@media (width <= 768px) { @media (width <= 768px) {
.wallet-header { .wallet-header {
flex-direction: column;
align-items: stretch;
.header-left,
.filter-section {
width: 100%;
}
.filter-section { .filter-section {
flex-direction: column; flex-direction: column;
align-items: stretch; align-items: stretch;
@@ -502,18 +517,9 @@
} }
} }
.header-left { .wallet-balance-summary {
flex-direction: column; grid-template-columns: 1fr;
gap: 6px; gap: 8px;
align-items: flex-start;
.wallet-divider {
display: none;
}
.balance-item {
width: 100%;
}
} }
} }