[598-50][@ant] fix: кошельки пайщика — подпись/порядок карточек + мини-кошелёк только паевой
- членский стола заказов: убрана подпись «возврату не подлежит»; - главный паевой (w.wal.share) опущен вниз — рядом с программными ЦПП-кошельками, минимальный неснижаемый остаток остаётся верхней карточкой; - мини-кошелёк в rail (левый низ): label «Паевой кошелёк» вместо «Доступно», сумма берётся из сырого w.wal.share — членская часть ЦК больше не примешивается. Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
This commit is contained in:
@@ -850,7 +850,7 @@ export const walletCards: DesktopWalletCard[] = [
|
||||
{
|
||||
wallet_name: 'w.mkt.member',
|
||||
label: 'Членский кошелёк',
|
||||
description: 'Стол заказов · возврату не подлежит',
|
||||
description: 'Стол заказов',
|
||||
accent: 'wallet',
|
||||
icon: 'card_membership',
|
||||
},
|
||||
|
||||
@@ -11,7 +11,9 @@ import { walletCards as marketWalletCards } from '../../../extensions/market/ins
|
||||
* `collectWalletCards` берёт только установленные у кооператива расширения,
|
||||
* объединяет их декларации с core и дедупит по `wallet_name` (первое
|
||||
* вхождение выигрывает — так пересечение нескольких расширений на один
|
||||
* кошелёк схлопывается в одну карточку).
|
||||
* кошелёк схлопывается в одну карточку). Главный паевой кошелёк ЦК
|
||||
* (`w.wal.share`) идёт ПОСЛЕ кошельков расширений — это такая же ЦПП, как
|
||||
* «Стол заказов», и стоит рядом с программными кошельками, а не первым.
|
||||
*
|
||||
* Что НЕ устанавливается на стол пайщика: главный членский (`w.wal.member`,
|
||||
* программа ЦК) и Генератор (`w.cap.gen`, кооперативный кошелёк без L3).
|
||||
@@ -38,13 +40,16 @@ const WALLET_CARDS_BY_EXTENSION: Record<string, DesktopWalletCard[]> = {
|
||||
* установленных расширений (их `extension_name`). Дедуп по `wallet_name`.
|
||||
*/
|
||||
export function collectWalletCards(installedExtensionNames: Iterable<string>): DesktopWalletCard[] {
|
||||
const collected: DesktopWalletCard[] = [...CORE_WALLET_CARDS];
|
||||
const collected: DesktopWalletCard[] = [];
|
||||
|
||||
for (const ext of installedExtensionNames) {
|
||||
const cards = WALLET_CARDS_BY_EXTENSION[ext];
|
||||
if (cards) collected.push(...cards);
|
||||
}
|
||||
|
||||
// Главный паевой кошелёк ЦК — после кошельков расширений (вниз списка).
|
||||
collected.push(...CORE_WALLET_CARDS);
|
||||
|
||||
const seen = new Set<string>();
|
||||
return collected.filter((card) => {
|
||||
if (seen.has(card.wallet_name)) return false;
|
||||
|
||||
@@ -25,6 +25,7 @@
|
||||
:balance='walletBalance',
|
||||
:symbol='walletSymbol',
|
||||
:locked-balance='walletLocked',
|
||||
balance-label='Паевой кошелёк',
|
||||
:balance-route='{ name: "wallet", params: { coopname: info.coopname } }',
|
||||
primary-action-label='Пополнить',
|
||||
show-signout,
|
||||
@@ -195,8 +196,11 @@ const coopMeta = computed<string | undefined>(() =>
|
||||
|
||||
// --- Footer: RailUserCard (canon .rail__usercard) --------------------------
|
||||
|
||||
const mainWallet = computed(() =>
|
||||
walletStore.program_wallets.find((w) => w.program_type === Zeus.ProgramType.MAIN),
|
||||
// Мини-кошелёк показывает ТОЛЬКО паевой (`w.wal.share`) — сырой кошелёк без
|
||||
// сворачивания с членской частью ЦК. Членские средства сюда не примешиваются
|
||||
// (для них — карточка «Членский кошелёк» на странице кошелька).
|
||||
const shareWallet = computed(() =>
|
||||
walletStore.user_wallets.find((w) => w.wallet_name === 'w.wal.share'),
|
||||
);
|
||||
const walletReady = computed<boolean>(() => walletStore.program_wallets.length > 0);
|
||||
|
||||
@@ -207,13 +211,13 @@ function splitAsset(asset?: string | null): { amount: string; symbol: string } {
|
||||
return { amount: parts[0] || '0,00', symbol: parts[1] || '' };
|
||||
}
|
||||
|
||||
const walletAvail = computed(() => splitAsset(mainWallet.value?.available));
|
||||
const walletAvail = computed(() => splitAsset(shareWallet.value?.available));
|
||||
const walletBalance = computed<string>(() => walletAvail.value.amount);
|
||||
const walletSymbol = computed<string>(
|
||||
() => walletAvail.value.symbol || info.symbols?.root_govern_symbol || 'RUB',
|
||||
);
|
||||
const walletLocked = computed<string | undefined>(() => {
|
||||
const split = splitAsset(mainWallet.value?.blocked);
|
||||
const split = splitAsset(shareWallet.value?.blocked);
|
||||
if (split.amount === '0,00' || split.amount === '0.00') return undefined;
|
||||
return split.amount;
|
||||
});
|
||||
|
||||
Reference in New Issue
Block a user