This commit is contained in:
Austin 2026-07-10 16:49:02 +08:00
parent d7a32793ed
commit fcbc113be0
2 changed files with 24 additions and 12 deletions

View File

@ -38,15 +38,22 @@ export interface BoundMerchantInfo {
};
};
supplier?: {
give_rate?: string | number;
fee_rate?: string | number;
};
give_rate?: string | number;
fee_rate?: string | number;
}
export interface SupplierInfo {
supplier_id?: string | number;
supplier_name?: string;
logo?: string;
fee_rate?: string | number;
supplier?: {
supplier_id?: string | number;
supplier_name?: string;
logo?: string;
fee_rate?: string | number;
};
}
export interface ApiResult<T = any> {

View File

@ -149,9 +149,9 @@ const accumulationAmount = computed(() => {
const showBenefitTip = computed(() => Number(merchant.value.accumulationRate) > 0);
const benefitTitle = computed(() => `预计获得${scoreName.value || '物业公积金'}`);
const parseGiveRate = (giveRate: unknown) => {
if (giveRate === undefined || giveRate === null || giveRate === '') return 0;
const rate = Number(giveRate);
const parseFeeRate = (feeRate: unknown) => {
if (feeRate === undefined || feeRate === null || feeRate === '') return 0;
const rate = Number(feeRate);
if (!Number.isFinite(rate) || rate <= 0) return 0;
return rate / 100;
};
@ -174,13 +174,14 @@ interface PropertyBindingCache {
merchant_id?: string;
merchant_name?: string;
score_name?: string;
give_rate?: string | number;
fee_rate?: string | number;
}
interface SupplierCache {
supplier_id?: string | number;
supplier_name?: string;
logo?: string;
fee_rate?: string | number;
}
const applyBindingInfo = (binding?: PropertyBindingCache | null) => {
@ -188,7 +189,7 @@ const applyBindingInfo = (binding?: PropertyBindingCache | null) => {
applyMerchantInfo({
merchant_id: binding.merchant_id,
merchant_name: binding.merchant_name,
accumulationRate: parseGiveRate(binding.give_rate)
accumulationRate: parseFeeRate(binding.fee_rate)
});
if (binding.score_name) {
scoreName.value = binding.score_name;
@ -199,7 +200,8 @@ const applySupplierInfo = (supplier?: SupplierCache | null) => {
if (!supplier) return;
applyMerchantInfo({
name: supplier.supplier_name,
background: supplier.logo
background: supplier.logo,
accumulationRate: parseFeeRate(supplier.fee_rate)
});
};
@ -289,7 +291,7 @@ const loadPropertyBinding = async (merchantUrl: string) => {
merchant_id: merchantData.merchant_id,
merchant_name: merchantData.merchant_name,
score_name: merchantData.config?.score_name,
give_rate: supplierData.give_rate ?? payload.give_rate
fee_rate: supplierData.fee_rate ?? payload.fee_rate
};
applyBindingInfo(latestBinding);
encryptedStorage.set(cacheKey, latestBinding, PROPERTY_CACHE_TTL_SECONDS);
@ -309,10 +311,13 @@ const loadSupplier = async (merchantUrl: string) => {
const response = await supplierByUrl(merchantUrl);
if (Number(response?.code) !== 200 || !response?.data) return;
const payload = response.data || {};
const supplierData = payload.supplier || payload;
const latestSupplier: SupplierCache = {
supplier_id: response.data.supplier_id,
supplier_name: response.data.supplier_name,
logo: response.data.logo
supplier_id: supplierData.supplier_id,
supplier_name: supplierData.supplier_name,
logo: supplierData.logo,
fee_rate: supplierData.fee_rate
};
applySupplierInfo(latestSupplier);
encryptedStorage.set(cacheKey, latestSupplier, SUPPLIER_CACHE_TTL_SECONDS);