| {item.id || "-"} |
- {appName(item.appCode, apps)} |
+
+ app.appCode === item.appCode)}
+ appCode={item.appCode}
+ size="small"
+ />
+ |
app.appCode === appCode)?.appName || appCode || "-";
-}
-
function usdText(item) {
if (item.usdAmount !== undefined && item.usdAmount !== null && item.usdAmount !== "") {
return `USD ${item.usdAmount}`;
diff --git a/finance/src/components/FinanceMyApplicationList.jsx b/finance/src/components/FinanceMyApplicationList.jsx
index a65cf7d..9de5b4f 100644
--- a/finance/src/components/FinanceMyApplicationList.jsx
+++ b/finance/src/components/FinanceMyApplicationList.jsx
@@ -9,6 +9,7 @@ import TableContainer from "@mui/material/TableContainer";
import TableHead from "@mui/material/TableHead";
import TableRow from "@mui/material/TableRow";
import TextField from "@mui/material/TextField";
+import { AppIdentity } from "@/shared/ui/AppIdentity.jsx";
import { APPLICATION_STATUS } from "../constants.js";
import { formatAmount, formatTime, operationLabel, statusLabel, walletIdentityLabel } from "../format.js";
@@ -26,7 +27,7 @@ export function FinanceMyApplicationList({ applications, error, filters, loading
{options.apps.map((app) => (
))}
@@ -77,7 +78,14 @@ export function FinanceMyApplicationList({ applications, error, filters, loading
{items.length ? (
items.map((item) => (
- {item.appName || item.appCode || "-"}
+
+ app.appCode === item.appCode)}
+ appCode={item.appCode}
+ appName={item.appName}
+ size="small"
+ />
+
diff --git a/finance/src/components/FinanceOverview.jsx b/finance/src/components/FinanceOverview.jsx
index 4300bd2..e8119eb 100644
--- a/finance/src/components/FinanceOverview.jsx
+++ b/finance/src/components/FinanceOverview.jsx
@@ -1,3 +1,4 @@
+import { AppIdentity } from "@/shared/ui/AppIdentity.jsx";
import { EMPTY_RECHARGE_OVERVIEW, EMPTY_RECHARGE_SUMMARY, formatAmount, formatUsdMinor } from "../format.js";
const KPI_CARDS = [
@@ -166,7 +167,7 @@ export function FinanceOverview({
onClick={() => onOpenApp(app.appCode)}
>
|
- {app.appName || app.appCode}
+
|
{formatUsdMinor(appTotal, "USD")} |
{formatAmount(app.summary?.total?.billCount || 0)} |
diff --git a/finance/src/components/FinanceRechargeDetailList.jsx b/finance/src/components/FinanceRechargeDetailList.jsx
index 96f65af..af835a1 100644
--- a/finance/src/components/FinanceRechargeDetailList.jsx
+++ b/finance/src/components/FinanceRechargeDetailList.jsx
@@ -5,6 +5,7 @@ import Button from "@mui/material/Button";
import MenuItem from "@mui/material/MenuItem";
import TextField from "@mui/material/TextField";
import { Fragment, useState } from "react";
+import { AppIdentity } from "@/shared/ui/AppIdentity.jsx";
import {
formatAmount,
formatMicroMoney,
@@ -60,10 +61,15 @@ export function FinanceRechargeDetailList({
.map((item) => item.transactionId)
.filter(Boolean);
const columnCount = showCoins ? 9 : 8;
+ const selectedApp = (apps || []).find((app) => app.appCode === filters.appCode);
const chips = [
filters.appCode
- ? { key: "appCode", label: `App:${appName(filters.appCode, apps)}`, reset: { appCode: "", regionId: "" } }
+ ? {
+ key: "appCode",
+ label: ,
+ reset: { appCode: "", regionId: "" },
+ }
: null,
filters.regionId
? {
@@ -200,7 +206,13 @@ export function FinanceRechargeDetailList({
onClick={() => setExpandedId(expanded ? "" : rowId)}
>
{formatTime(item.createdAtMs)} |
- {appName(item.appCode, apps)} |
+
+ app.appCode === item.appCode)}
+ appCode={item.appCode}
+ size="small"
+ />
+ |
全部 APP
{options.apps.map((app) => (
))}
@@ -60,7 +61,14 @@ export function FinanceWithdrawalApplicationList({ applications, canAudit, error
{items.length ? (
items.map((item) => (
- {item.appName || item.appCode || "-"}
+
+ app.appCode === item.appCode)}
+ appCode={item.appCode}
+ appName={item.appName}
+ size="small"
+ />
+
{item.userId || "-"}
$ {formatAmount(item.withdrawAmount)}
{item.withdrawMethod || "-"}
diff --git a/src/app/layout/Header.jsx b/src/app/layout/Header.jsx
index 3e02f5f..f2d083a 100644
--- a/src/app/layout/Header.jsx
+++ b/src/app/layout/Header.jsx
@@ -16,6 +16,7 @@ import { useAppScope } from "@/app/app-scope/AppScopeProvider.jsx";
import { useAuth } from "@/app/auth/AuthProvider.jsx";
import { useTimeZone } from "@/app/timezone/TimeZoneProvider.jsx";
import { changePassword } from "@/features/auth/api";
+import { AppIdentity } from "@/shared/ui/AppIdentity.jsx";
import { AdminFormDialog } from "@/shared/ui/AdminFormDialog.jsx";
import { IconButton } from "@/shared/ui/IconButton.jsx";
import { useToast } from "@/shared/ui/ToastProvider.jsx";
@@ -164,7 +165,7 @@ export function Header({ activeLabel, isSidebarCollapsed, menuItems = [], onRefr
{appScope.apps.length ? (
appScope.apps.map((app) => (
))
) : (
diff --git a/src/features/users/api.ts b/src/features/users/api.ts
index f28583a..5adb20a 100644
--- a/src/features/users/api.ts
+++ b/src/features/users/api.ts
@@ -67,7 +67,7 @@ export function exportUsers(query?: PageQuery): Promise {
export interface FinanceScopeCatalogDto {
all?: boolean;
- apps?: Array<{ appCode: string; appName?: string }>;
+ apps?: Array<{ appCode: string; appName?: string; logoUrl?: string }>;
regions?: Array<{ appCode: string; countries?: string[]; name?: string; regionCode?: string; regionId: number }>;
countries?: Array<{ appCode: string; countryCode: string; countryDisplayName?: string; countryName?: string; regionId?: number }>;
scopes?: UserFinanceScopeDto[];
diff --git a/src/features/users/components/UserFormDrawer.jsx b/src/features/users/components/UserFormDrawer.jsx
index 2cb7380..ea19dda 100644
--- a/src/features/users/components/UserFormDrawer.jsx
+++ b/src/features/users/components/UserFormDrawer.jsx
@@ -3,6 +3,7 @@ import MenuItem from "@mui/material/MenuItem";
import { AdminSwitch } from "@/shared/ui/AdminSwitch.jsx";
import TextField from "@mui/material/TextField";
import { Button } from "@/shared/ui/Button.jsx";
+import { AppIdentity } from "@/shared/ui/AppIdentity.jsx";
export function UserFormDrawer({
editingUser,
@@ -115,7 +116,7 @@ function FinanceScopeGroup({ app, checkedScopes, onChecked, regions }) {
return (
- {app.appName || appCode}
+
| |