feat(web-admin): open cert maintain dialog on reminder page
Keep users on the document reminder list by reusing vehicle/personnel form dialogs instead of navigating away to base-info pages. Co-authored-by: Cursor <cursoragent@cursor.com>
This commit is contained in:
1 parent
fba478dcca
commit
01d607d766
4 files changed
+156
-120
No files matched your search
@@ -2,11 +2,24 @@ import assert from 'node:assert/strict'
|
||||
import { describe, it } from 'node:test'
|
||||
import {
|
||||
resolveDocumentReminderEditPath,
|
||||
resolveDocumentReminderFormMode,
|
||||
DOCUMENT_REMINDER_JUMP_UNSUPPORTED
|
||||
} from './pl-document-reminder-jump'
|
||||
|
||||
describe('证件提醒跳转路径', () => {
|
||||
it('车辆按 vehicleType 分流自有与三方', () => {
|
||||
describe('证件提醒表单模式与路径', () => {
|
||||
it('车辆按 vehicleType 解析弹窗类型与路径', () => {
|
||||
assert.deepEqual(
|
||||
resolveDocumentReminderFormMode({ ownerType: 'vehicle', vehicleType: 'self' }),
|
||||
{ kind: 'vehicle', vehicleType: 'self' }
|
||||
)
|
||||
assert.deepEqual(
|
||||
resolveDocumentReminderFormMode({ ownerType: 'vehicle', vehicleType: 'carrier' }),
|
||||
{ kind: 'vehicle', vehicleType: 'carrier' }
|
||||
)
|
||||
assert.deepEqual(resolveDocumentReminderFormMode({ ownerType: 'vehicle', vehicleType: '' }), {
|
||||
kind: 'vehicle',
|
||||
vehicleType: 'carrier'
|
||||
})
|
||||
assert.equal(
|
||||
resolveDocumentReminderEditPath({ ownerType: 'vehicle', vehicleType: 'self' }),
|
||||
'/vehicle-mgmt/base-info/self-vehicle'
|
||||
@@ -15,19 +28,29 @@ describe('证件提醒跳转路径', () => {
|
||||
resolveDocumentReminderEditPath({ ownerType: 'vehicle', vehicleType: 'carrier' }),
|
||||
'/vehicle-mgmt/base-info/vehicle'
|
||||
)
|
||||
assert.equal(
|
||||
resolveDocumentReminderEditPath({ ownerType: 'vehicle', vehicleType: '' }),
|
||||
'/vehicle-mgmt/base-info/vehicle'
|
||||
)
|
||||
})
|
||||
|
||||
it('人员按 personnelAffiliation 分流', () => {
|
||||
assert.equal(
|
||||
resolveDocumentReminderEditPath({
|
||||
it('人员按 personnelAffiliation 解析弹窗归属与路径', () => {
|
||||
assert.deepEqual(
|
||||
resolveDocumentReminderFormMode({
|
||||
ownerType: 'personnel',
|
||||
personnelAffiliation: 'self'
|
||||
}),
|
||||
'/vehicle-mgmt/base-info/personnel'
|
||||
{ kind: 'personnel', affiliation: 'self' }
|
||||
)
|
||||
assert.deepEqual(
|
||||
resolveDocumentReminderFormMode({
|
||||
ownerType: 'personnel',
|
||||
personnelAffiliation: 'carrier'
|
||||
}),
|
||||
{ kind: 'personnel', affiliation: 'carrier' }
|
||||
)
|
||||
assert.deepEqual(
|
||||
resolveDocumentReminderFormMode({
|
||||
ownerType: 'personnel',
|
||||
personnelAffiliation: ''
|
||||
}),
|
||||
{ kind: 'personnel', affiliation: 'self' }
|
||||
)
|
||||
assert.equal(
|
||||
resolveDocumentReminderEditPath({
|
||||
@@ -36,17 +59,10 @@ describe('证件提醒跳转路径', () => {
|
||||
}),
|
||||
'/vehicle-mgmt/base-info/personnel-carrier'
|
||||
)
|
||||
assert.equal(
|
||||
resolveDocumentReminderEditPath({
|
||||
ownerType: 'personnel',
|
||||
personnelAffiliation: ''
|
||||
}),
|
||||
'/vehicle-mgmt/base-info/personnel'
|
||||
)
|
||||
})
|
||||
|
||||
it('不支持的主体返回 null', () => {
|
||||
assert.equal(resolveDocumentReminderEditPath({ ownerType: 'carrier' }), null)
|
||||
assert.equal(resolveDocumentReminderFormMode({ ownerType: 'carrier' }), null)
|
||||
assert.equal(resolveDocumentReminderEditPath({ ownerType: '' }), null)
|
||||
assert.equal(DOCUMENT_REMINDER_JUMP_UNSUPPORTED, '暂不支持该主体类型的证件维护跳转')
|
||||
})
|
||||
|
||||
@@ -6,17 +6,41 @@ export type ReminderJumpInput = {
|
||||
personnelAffiliation?: string | null
|
||||
}
|
||||
|
||||
export function resolveDocumentReminderEditPath(input: ReminderJumpInput): string | null {
|
||||
export type ReminderFormMode =
|
||||
| { kind: 'vehicle'; vehicleType: 'self' | 'carrier' }
|
||||
| { kind: 'personnel'; affiliation: 'self' | 'carrier' }
|
||||
|
||||
/** 提醒页本页弹窗:解析车辆/人员表单锁定类型。 */
|
||||
export function resolveDocumentReminderFormMode(
|
||||
input: ReminderJumpInput
|
||||
): ReminderFormMode | null {
|
||||
const ownerType = String(input.ownerType || '').trim()
|
||||
if (ownerType === 'vehicle') {
|
||||
return String(input.vehicleType || '').trim() === 'self'
|
||||
? '/vehicle-mgmt/base-info/self-vehicle'
|
||||
: '/vehicle-mgmt/base-info/vehicle'
|
||||
return {
|
||||
kind: 'vehicle',
|
||||
vehicleType: String(input.vehicleType || '').trim() === 'self' ? 'self' : 'carrier'
|
||||
}
|
||||
}
|
||||
if (ownerType === 'personnel') {
|
||||
return String(input.personnelAffiliation || '').trim() === 'carrier'
|
||||
? '/vehicle-mgmt/base-info/personnel-carrier'
|
||||
: '/vehicle-mgmt/base-info/personnel'
|
||||
return {
|
||||
kind: 'personnel',
|
||||
affiliation:
|
||||
String(input.personnelAffiliation || '').trim() === 'carrier' ? 'carrier' : 'self'
|
||||
}
|
||||
}
|
||||
return null
|
||||
}
|
||||
|
||||
/** 可选深链:档案页 path(提醒主流程已改为本页弹窗)。 */
|
||||
export function resolveDocumentReminderEditPath(input: ReminderJumpInput): string | null {
|
||||
const mode = resolveDocumentReminderFormMode(input)
|
||||
if (!mode) return null
|
||||
if (mode.kind === 'vehicle') {
|
||||
return mode.vehicleType === 'self'
|
||||
? '/vehicle-mgmt/base-info/self-vehicle'
|
||||
: '/vehicle-mgmt/base-info/vehicle'
|
||||
}
|
||||
return mode.affiliation === 'carrier'
|
||||
? '/vehicle-mgmt/base-info/personnel-carrier'
|
||||
: '/vehicle-mgmt/base-info/personnel'
|
||||
}
|
||||
Reference in new issue
Block a user