Files
device-voice-h5/api/modules/asset.js
2026-09-08 16:12:45 +08:00

93 lines
2.7 KiB
JavaScript

import request from '@/utils/request.js';
export const normalizeAssetInfo = (data = {}) => ({
...data,
allowed_payment_methods: Array.isArray(data.allowed_payment_methods)
? data.allowed_payment_methods
: [],
real_name_status: data.real_name_status === undefined || data.real_name_status === null
? data.real_name_status
: Number(data.real_name_status),
realname_required: data.realname_required === undefined || data.realname_required === null
? data.realname_required
: data.realname_required === true || data.realname_required === 1,
days_until_final_expiry: data.days_until_final_expiry === null || data.days_until_final_expiry === undefined
? data.days_until_final_expiry
: Number(data.days_until_final_expiry),
is_expiring: data.is_expiring === undefined || data.is_expiring === null
? data.is_expiring
: data.is_expiring === true || data.is_expiring === 1
});
const normalizePackageHistoryNode = (node = {}) => ({
...node,
children: Array.isArray(node.children)
? node.children.map(normalizePackageHistoryNode)
: [],
expand_by_default: node.expand_by_default === true || node.expand_by_default === 1
});
export const normalizeAssetPackageHistory = (data = {}) => ({
...data,
items: Array.isArray(data.items)
? data.items.map(normalizePackageHistoryNode)
: [],
page: Number(data.page),
size: Number(data.size),
total: Number(data.total)
});
export const isAssetRealNameCompleted = (assetInfo = {}) => {
if (assetInfo.asset_type === 'device') {
return (assetInfo.cards || []).some((card) => Number(card?.real_name_status) === 1);
}
return Number(assetInfo.real_name_status) === 1;
};
export const hasActiveOrPendingPackage = async (identifier) => {
const [pendingData, activeData] = await Promise.all([
assetApi.getPackageHistory(identifier, 1, 1, { status: 0 }),
assetApi.getPackageHistory(identifier, 1, 1, { status: 1 })
]);
return [pendingData, activeData].some(data => Array.isArray(data?.items) && data.items.length > 0);
};
export const assetApi = {
getInfo(identifier) {
return request({
url: '/api/c/v1/asset/info',
method: 'GET',
data: { identifier }
}).then(normalizeAssetInfo);
},
getPackageHistory(identifier, page, page_size, params = {}) {
return request({
url: '/api/c/v1/asset/package-history',
method: 'GET',
data: { identifier, page, page_size, ...params }
}).then(normalizeAssetPackageHistory);
},
getPackages(identifier, packageType = '') {
return request({
url: '/api/c/v1/asset/packages',
method: 'GET',
data: {
identifier,
...(packageType ? { package_type: packageType } : {})
}
});
},
refresh(identifier) {
return request({
url: '/api/c/v1/asset/refresh',
method: 'POST',
data: { identifier }
});
}
};