feat(csms): 充电桩添加 deviceName 字段,区别于 identifier 用于区分设备

This commit is contained in:
2026-03-16 13:43:46 +08:00
parent 0118dd2e15
commit 654a2a66d9
14 changed files with 2095 additions and 40 deletions

View File

@@ -222,6 +222,7 @@ function QrScanner({ onResult, onClose }: ScannerProps) {
function ChargePageContent() {
const searchParams = useSearchParams();
const { data: sessionData } = useSession();
const isAdmin = sessionData?.user?.role === "admin";
const [step, setStep] = useState(1);
const [selectedCpId, setSelectedCpId] = useState<string | null>(null);
@@ -234,6 +235,7 @@ function ChargePageContent() {
const [startSnapshot, setStartSnapshot] = useState<{
cpId: string;
chargePointIdentifier: string;
deviceName: string | null;
connectorId: number;
idTag: string;
} | null>(null);
@@ -348,6 +350,7 @@ function ChargePageContent() {
setStartSnapshot({
cpId: selectedCp.id,
chargePointIdentifier: selectedCp.chargePointIdentifier,
deviceName: selectedCp.deviceName,
connectorId: selectedConnectorId,
idTag: selectedIdTag,
});
@@ -424,7 +427,7 @@ function ChargePageContent() {
<div className="flex justify-between text-sm">
<span className="text-muted"></span>
<span className="font-medium text-foreground">
{startSnapshot?.chargePointIdentifier ?? selectedCp?.chargePointIdentifier}
{startSnapshot?.deviceName ?? startSnapshot?.chargePointIdentifier ?? selectedCp?.deviceName ?? selectedCp?.chargePointIdentifier}
</span>
</div>
<div className="flex justify-between text-sm">
@@ -617,12 +620,17 @@ function ChargePageContent() {
: "cursor-pointer border-border bg-surface hover:border-accent/60 hover:bg-accent/5 active:scale-[0.98]",
].join(" ")}
>
{/* Top row: identifier + status */}
{/* Top row: name + status */}
<div className="flex items-start justify-between gap-2">
<div className="flex min-w-0 flex-1 flex-col gap-0.5">
<span className="font-semibold text-foreground truncate leading-tight">
{cp.chargePointIdentifier}
{cp.deviceName ?? cp.chargePointIdentifier}
</span>
{isAdmin && cp.deviceName && (
<span className="font-mono text-xs text-muted truncate">
{cp.chargePointIdentifier}
</span>
)}
{(cp.chargePointVendor || cp.chargePointModel) && (
<span className="text-xs text-muted truncate">
{[cp.chargePointVendor, cp.chargePointModel]
@@ -686,7 +694,7 @@ function ChargePageContent() {
<EvCharger className="size-3.5 text-muted" />
<span className="text-muted"></span>
<span className="font-semibold text-foreground">
{selectedCp.chargePointIdentifier}
{selectedCp.deviceName ?? selectedCp.chargePointIdentifier}
</span>
</div>
)}
@@ -773,7 +781,7 @@ function ChargePageContent() {
<EvCharger className="size-3.5 text-muted" />
<span className="text-muted"></span>
<span className="font-semibold text-foreground">
{selectedCp.chargePointIdentifier}
{selectedCp.deviceName ?? selectedCp.chargePointIdentifier}
</span>
</div>
)}