fix(operator): fix operator edit issue
All checks were successful
构建并部署前端到测试环境 / build-and-deploy (push) Successful in 6m25s
All checks were successful
构建并部署前端到测试环境 / build-and-deploy (push) Successful in 6m25s
This commit is contained in:
@@ -42,11 +42,15 @@ export function useAssetInfo() {
|
||||
if (response.code === 0 && response.data) {
|
||||
const data = response.data
|
||||
|
||||
// 获取资产标识符
|
||||
const assetIdentifier = data.asset_type === 'card' ? data.iccid : data.virtual_no
|
||||
|
||||
// 映射API数据到页面显示格式
|
||||
cardInfo.value = {
|
||||
// 基本信息
|
||||
asset_type: data.asset_type, // card 或 device
|
||||
asset_id: data.asset_id,
|
||||
identifier: assetIdentifier || '', // 资产标识符(卡用iccid,设备用virtual_no)
|
||||
virtual_no: data.virtual_no,
|
||||
status: data.status,
|
||||
batch_no: data.batch_no,
|
||||
@@ -107,13 +111,12 @@ export function useAssetInfo() {
|
||||
packageList: [] // 套餐列表需要单独调用API获取
|
||||
}
|
||||
|
||||
// 获取资产标识符并加载其他数据
|
||||
const assetIdentifier = data.asset_type === 'card' ? data.iccid : data.virtual_no
|
||||
// 加载其他数据
|
||||
if (assetIdentifier) {
|
||||
// 并行调用多个接口: 当前生效套餐、套餐列表、实时状态、钱包概况
|
||||
// 并行调用多个接口: 当前生效套餐、实时状态、钱包概况
|
||||
// 套餐列表不在这里调用,由父组件调用以便管理分页状态
|
||||
await Promise.all([
|
||||
loadCurrentPackage(assetIdentifier),
|
||||
loadPackageList(assetIdentifier),
|
||||
loadRealtimeStatus(assetIdentifier, data.asset_type),
|
||||
loadAssetWallet(assetIdentifier)
|
||||
])
|
||||
@@ -123,14 +126,6 @@ export function useAssetInfo() {
|
||||
cardInfo.value = null
|
||||
}
|
||||
} catch (error: any) {
|
||||
console.error('获取卡片信息失败:', error)
|
||||
if (error?.response?.status === 404) {
|
||||
ElMessage.error('未找到该资产')
|
||||
} else if (error?.response?.status === 403) {
|
||||
ElMessage.error('无权限访问该资产')
|
||||
} else {
|
||||
ElMessage.error(error?.message || '获取卡片信息失败')
|
||||
}
|
||||
cardInfo.value = null
|
||||
} finally {
|
||||
loading.value = false
|
||||
@@ -140,19 +135,30 @@ export function useAssetInfo() {
|
||||
/**
|
||||
* 加载套餐列表
|
||||
* @param identifier - 资产标识符
|
||||
* @param page - 页码
|
||||
* @param pageSize - 每页条数
|
||||
*/
|
||||
const loadPackageList = async (identifier: string) => {
|
||||
const loadPackageList = async (identifier: string, page: number = 1, pageSize: number = 10) => {
|
||||
try {
|
||||
const response = await AssetService.getAssetPackages(identifier, {
|
||||
page: 1,
|
||||
page_size: 50
|
||||
page,
|
||||
page_size: pageSize
|
||||
})
|
||||
if (response.code === 0 && response.data) {
|
||||
// 使用分页响应中的 items 数组
|
||||
cardInfo.value.packageList = response.data.items || []
|
||||
packageList.value = response.data.items || []
|
||||
// 返回分页信息供外部使用
|
||||
return {
|
||||
items: response.data.items || [],
|
||||
total: response.data.total || 0,
|
||||
page: response.data.page || 1,
|
||||
pageSize: response.data.page_size || pageSize
|
||||
}
|
||||
}
|
||||
return { items: [], total: 0, page: 1, pageSize }
|
||||
} catch (error) {
|
||||
console.error('获取套餐列表失败:', error)
|
||||
return { items: [], total: 0, page: 1, pageSize }
|
||||
}
|
||||
}
|
||||
|
||||
@@ -170,28 +176,30 @@ export function useAssetInfo() {
|
||||
if (response.code === 0) {
|
||||
if (response.data) {
|
||||
const pkg = response.data
|
||||
// 保存完整的当前套餐数据
|
||||
cardInfo.value.currentPackageDetail = {
|
||||
package_usage_id: pkg.package_usage_id,
|
||||
package_id: pkg.package_id,
|
||||
package_name: pkg.package_name,
|
||||
package_type: pkg.package_type,
|
||||
status: pkg.status,
|
||||
|
||||
// 转换为组件期望的格式
|
||||
currentPackage.value = {
|
||||
id: pkg.package_usage_id || 0,
|
||||
package_id: pkg.package_id || 0,
|
||||
package_name: pkg.package_name || '',
|
||||
package_price: 0, // API 没有返回价格
|
||||
package_total_data: pkg.data_limit_mb || 0,
|
||||
real_data_used: pkg.data_usage_mb || 0,
|
||||
real_data_remaining: (pkg.data_limit_mb || 0) - (pkg.data_usage_mb || 0),
|
||||
real_data_total: pkg.data_limit_mb || 0,
|
||||
virtual_data_used: pkg.virtual_used_mb || 0,
|
||||
virtual_data_remaining: pkg.virtual_remain_mb || 0,
|
||||
virtual_data_total: pkg.virtual_limit_mb || 0,
|
||||
start_time: pkg.activated_at || '',
|
||||
expire_time: pkg.expires_at || '',
|
||||
status: pkg.status || 0,
|
||||
status_name: pkg.status_name,
|
||||
data_limit_mb: pkg.data_limit_mb,
|
||||
data_usage_mb: pkg.data_usage_mb,
|
||||
virtual_limit_mb: pkg.virtual_limit_mb,
|
||||
virtual_used_mb: pkg.virtual_used_mb,
|
||||
virtual_remain_mb: pkg.virtual_remain_mb,
|
||||
virtual_ratio: pkg.virtual_ratio,
|
||||
activated_at: pkg.activated_at,
|
||||
expires_at: pkg.expires_at,
|
||||
created_at: pkg.created_at,
|
||||
master_usage_id: pkg.master_usage_id,
|
||||
priority: pkg.priority,
|
||||
usage_type: pkg.usage_type
|
||||
duration_days: undefined, // API 没有返回时长
|
||||
virtual_ratio: pkg.virtual_ratio, // 虚流量比例
|
||||
package_type: pkg.package_type // 套餐类型
|
||||
}
|
||||
// 同时更新流量显示信息
|
||||
|
||||
// 同时更新 cardInfo 中的流量显示信息
|
||||
cardInfo.value.current_package = pkg.package_name
|
||||
cardInfo.value.packageTotalFlow = formatDataSize(pkg.virtual_limit_mb || 0)
|
||||
cardInfo.value.usedFlow = formatDataSize(pkg.virtual_used_mb || 0)
|
||||
@@ -202,14 +210,17 @@ export function useAssetInfo() {
|
||||
: '0.00%'
|
||||
} else {
|
||||
// code 为 0 但 data 为空,表示暂无当前生效套餐(正常情况)
|
||||
currentPackage.value = null
|
||||
currentPackageErrorMsg.value = '暂无当前生效套餐'
|
||||
}
|
||||
} else {
|
||||
// 接口返回 code 不为 0,保存错误信息
|
||||
currentPackage.value = null
|
||||
currentPackageErrorMsg.value = response.msg || '获取当前套餐失败'
|
||||
}
|
||||
} catch (error: any) {
|
||||
// 404表示无当前生效套餐,这是正常情况
|
||||
currentPackage.value = null
|
||||
if (error?.response?.status === 404) {
|
||||
currentPackageErrorMsg.value = '暂无当前生效套餐'
|
||||
} else {
|
||||
@@ -319,11 +330,7 @@ export function useAssetInfo() {
|
||||
await loadRealtimeStatus(identifier, assetType)
|
||||
}
|
||||
} catch (error: any) {
|
||||
// 检查 429 错误(冷却期)
|
||||
if (error?.response?.status === 429) {
|
||||
ElMessage.warning('刷新过于频繁,请稍后再试')
|
||||
}
|
||||
throw error
|
||||
console.log(error)
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user