Files
admin/src/components/products/format.tsx

63 lines
1.5 KiB
TypeScript
Raw Normal View History

2026-04-08 15:41:32 +08:00
import type { ReactNode } from "react"
import { Badge } from "@/components/ui/badge"
import { ProductCode } from "@/lib/base"
interface SkuCodeBadgeProps {
productCode: ProductCode
skuCode: string
}
export function SkuCodeBadge({
productCode,
skuCode,
}: SkuCodeBadgeProps): ReactNode {
switch (productCode) {
case ProductCode.Short:
case ProductCode.Long:
return <ParsedSkuCodeBadge skuCode={skuCode} />
default:
return <Badge variant="outline">{skuCode}</Badge>
}
}
function ParsedSkuCodeBadge({ skuCode }: { skuCode: string }): ReactNode {
const params = new URLSearchParams(skuCode)
const modeStr = params.get("mode")
let mode: string | undefined
let modeClass: string | undefined
switch (modeStr) {
case "time":
mode = "包时"
modeClass = "bg-green-50"
break
case "quota":
mode = "包量"
modeClass = "bg-blue-50"
break
}
const live = params.get("live")
const expire = params.get("expire")
if (!mode || !live || !expire) {
return (
<Badge variant="secondary" className="bg-red-50">
{skuCode}
</Badge>
)
}
return (
<div className="flex flex-wrap gap-1">
<Badge variant="secondary" className={modeClass}>
{mode}
</Badge>
<Badge variant="secondary">{live} </Badge>
{expire !== "0" && (
<Badge variant="secondary">{expire} </Badge>
)}
</div>
)
}