fix(pages): adapt all pages to backend-aligned types

Replace removed fields with available data sources throughout UI:
- order pages: use service.title instead of consumer/player names
- chat: look up sender from session.participants, remove readonly
- community: simplify post cards, keep pinned icon
- post detail: keep pinned/linkedOrderId display
- shop rules: use string commissionValue
- dashboard: parse string amounts for income display
- dispute/review: remove initiator/avatar references
This commit is contained in:
zetaloop
2026-04-23 21:15:28 +08:00
parent 12284290cc
commit 4d8877f588
17 changed files with 153 additions and 238 deletions
@@ -158,12 +158,12 @@ export default function ShopIncomePage() {
<TableRow key={transaction.id}>
<TableCell>
<div className="flex items-center gap-2">
{transaction.amount > 0 ? (
{Number(transaction.amount) > 0 ? (
<ArrowDownLeft className="h-4 w-4 text-green-500" />
) : (
<ArrowUpRight className="h-4 w-4 text-red-500" />
)}
<Badge variant={transaction.amount > 0 ? "default" : "secondary"}>
<Badge variant={Number(transaction.amount) > 0 ? "default" : "secondary"}>
{transaction.type === "topup"
? "充值"
: transaction.type === "payment"
@@ -178,9 +178,9 @@ export default function ShopIncomePage() {
</TableCell>
<TableCell>{transaction.description}</TableCell>
<TableCell
className={transaction.amount > 0 ? "text-green-600" : "text-red-600"}
className={Number(transaction.amount) > 0 ? "text-green-600" : "text-red-600"}
>
{transaction.amount > 0 ? "+" : ""}
{Number(transaction.amount) > 0 ? "+" : ""}
{transaction.amount}
</TableCell>
<TableCell>{new Date(transaction.createdAt).toLocaleString()}</TableCell>
@@ -103,8 +103,8 @@ export default function ShopOrdersPage() {
{shopOrders.map((order) => (
<TableRow key={order.id}>
<TableCell className="font-medium">{order.service.title}</TableCell>
<TableCell>{order.consumerName}</TableCell>
<TableCell>{order.playerName}</TableCell>
<TableCell>{order.consumerId}</TableCell>
<TableCell>{order.playerId}</TableCell>
<TableCell>
<Badge variant="outline">{statusLabels[order.status]}</Badge>
</TableCell>
@@ -39,19 +39,19 @@ function ShopRulesForm({
shop: Shop
updateShop: (shopId: string, patch: Partial<Omit<Shop, "id" | "owner">>) => void
}) {
const [commissionType, setCommissionType] = useState<Shop["commissionType"]>(shop.commissionType)
const [commissionValue, setCommissionValue] = useState(shop.commissionValue)
const [allowMultiShop, setAllowMultiShop] = useState(shop.allowMultiShop)
const [allowIndependentOrders, setAllowIndependentOrders] = useState(shop.allowIndependentOrders)
const [dispatchMode, setDispatchMode] = useState<Shop["dispatchMode"]>(shop.dispatchMode)
const [commissionType, setCommissionType] = useState<Shop["commissionType"]>(shop.commissionType)
const [commissionValue, setCommissionValue] = useState(shop.commissionValue.toString())
const handleSave = () => {
updateShop(shop.id, {
commissionType,
commissionValue,
allowMultiShop,
allowIndependentOrders,
dispatchMode,
commissionType,
commissionValue: Number(commissionValue),
})
}