feat(web-admin): split recharge summary by fuel/ETC and fix pnpm workspace

Show fuel-only cards on fuel routes and ETC-only cards on ETC routes with a 5-column layout, and declare packages in pnpm-workspace.yaml so pnpm 9+ can build.

Co-authored-by: Cursor <cursoragent@cursor.com>
This commit is contained in:
wuzilongandCursor committed 2026-11-12 20:39:48 +08:00
1 parent 7ebbaa2784
commit a4d213231c
7 files changed
+132 -26

No files matched your search

@@ -3,7 +3,10 @@ import { describe, it } from 'node:test'
import {
rechargeComparison,
rechargeSummaryQuery,
isRechargeSummaryRoute
isRechargeSummaryRoute,
isFuelRechargeSummaryRoute,
isEtcRechargeSummaryRoute,
rechargeSummaryModeFromPath
} from './pl-recharge-summary'
describe('充值统计卡片', () => {
@@ -30,32 +33,60 @@ describe('充值统计卡片', () => {
})
})
it('只对油卡充值业务子页显示,ETC 与其它车辆页不显示', () => {
it('油卡分组子页识别为 fuel 模式', () => {
assert.equal(
isRechargeSummaryRoute('/vehicle-mgmt/fuel-recharge/vehicle-recharge-apply'),
isFuelRechargeSummaryRoute('/vehicle-mgmt/fuel-recharge/vehicle-recharge-apply'),
true
)
assert.equal(
isRechargeSummaryRoute('/vehicle-mgmt/fuel-recharge/vehicle-recharge-record'),
isFuelRechargeSummaryRoute('/vehicle-mgmt/fuel-recharge/vehicle-recharge-record'),
true
)
assert.equal(
isRechargeSummaryRoute('/vehicle-mgmt/fuel-recharge/vehicle-recharge-approval'),
isFuelRechargeSummaryRoute('/vehicle-mgmt/fuel-recharge/vehicle-recharge-approval'),
true
)
assert.equal(
isRechargeSummaryRoute('/vehicle-mgmt/fuel-recharge/vehicle-recharge-workflow'),
isFuelRechargeSummaryRoute('/vehicle-mgmt/fuel-recharge/vehicle-recharge-workflow'),
true
)
assert.equal(rechargeSummaryModeFromPath('/vehicle-mgmt/fuel-recharge/vehicle-recharge-apply'), 'fuel')
})
it('ETC 分组子页识别为 etc 模式并展示顶部统计', () => {
assert.equal(
isEtcRechargeSummaryRoute('/vehicle-mgmt/etc-recharge/etc-vehicle-recharge-apply'),
true
)
assert.equal(
isEtcRechargeSummaryRoute('/vehicle-mgmt/etc-recharge/etc-vehicle-recharge-approval'),
true
)
assert.equal(
isEtcRechargeSummaryRoute('/vehicle-mgmt/etc-recharge/etc-vehicle-recharge-record'),
true
)
assert.equal(
isEtcRechargeSummaryRoute('/vehicle-mgmt/etc-recharge/etc-vehicle-recharge-workflow'),
true
)
assert.equal(
isRechargeSummaryRoute('/vehicle-mgmt/etc-recharge/etc-vehicle-recharge-apply'),
false
true
)
assert.equal(
rechargeSummaryModeFromPath('/vehicle-mgmt/etc-recharge/etc-vehicle-recharge-apply'),
'etc'
)
})
it('旧路径与其它车辆页不显示充值统计', () => {
assert.equal(
isRechargeSummaryRoute('/vehicle-mgmt/etc-recharge/vehicle-recharge-apply'),
false
)
assert.equal(isRechargeSummaryRoute('/vehicle-mgmt/vehicle-fuel-card'), false)
assert.equal(isRechargeSummaryRoute('/vehicle-mgmt/vehicle'), false)
assert.equal(rechargeSummaryModeFromPath('/vehicle-mgmt/vehicle'), null)
})
})
+21 -3
View File
@@ -13,12 +13,30 @@ export function rechargeComparison(
}
}
export type RechargeSummaryMode = 'fuel' | 'etc'
export function rechargeSummaryQuery(plate: string, kind: 'etc' | 'fuel') {
return { rechargePlate: plate, rechargeKind: kind }
}
/** 油卡充值分组下的申请/审批/发放/审批人设置 */
export function isFuelRechargeSummaryRoute(path: string) {
return /\/fuel-recharge\/vehicle-recharge-(apply|approval|record|workflow)\/?$/.test(path)
}
/** ETC 充值分组下的申请/审批/发放/审批人设置 */
export function isEtcRechargeSummaryRoute(path: string) {
return /\/etc-recharge\/etc-vehicle-recharge-(apply|approval|record|workflow)\/?$/.test(path)
}
/** 是否展示顶部充值统计(油卡或 ETC 业务子页) */
export function isRechargeSummaryRoute(path: string) {
return /\/fuel-recharge\/vehicle-recharge-(apply|approval|record|workflow)\/?$/.test(
path
)
return isFuelRechargeSummaryRoute(path) || isEtcRechargeSummaryRoute(path)
}
/** 当前路由对应的统计模式;非充值业务页返回 null */
export function rechargeSummaryModeFromPath(path: string): RechargeSummaryMode | null {
if (isEtcRechargeSummaryRoute(path)) return 'etc'
if (isFuelRechargeSummaryRoute(path)) return 'fuel'
return null
}