提交
This commit is contained in:
1 parent
f7d1004e6b
commit
310b2efe8a
91 files changed
+14420
-10840
No files matched your search
@@ -0,0 +1,61 @@
|
||||
export type OaPostValueItem = { id: string; name: string }
|
||||
|
||||
export function isPostValueItem(v: unknown): v is OaPostValueItem {
|
||||
if (!v || typeof v !== 'object') return false
|
||||
const o = v as Record<string, unknown>
|
||||
return String(o.id || '').trim() !== '' && String(o.name || '').trim() !== ''
|
||||
}
|
||||
|
||||
export function normalizePostModelValue(
|
||||
raw: unknown,
|
||||
multiple: boolean
|
||||
): OaPostValueItem | OaPostValueItem[] | null {
|
||||
if (multiple) {
|
||||
if (Array.isArray(raw)) {
|
||||
return raw.filter(isPostValueItem).map((x) => ({
|
||||
id: String(x.id).trim(),
|
||||
name: String(x.name).trim()
|
||||
}))
|
||||
}
|
||||
if (isPostValueItem(raw)) {
|
||||
return [{ id: String(raw.id).trim(), name: String(raw.name).trim() }]
|
||||
}
|
||||
return []
|
||||
}
|
||||
if (isPostValueItem(raw)) {
|
||||
return { id: String(raw.id).trim(), name: String(raw.name).trim() }
|
||||
}
|
||||
if (Array.isArray(raw) && raw.length === 1 && isPostValueItem(raw[0])) {
|
||||
return { id: String(raw[0].id).trim(), name: String(raw[0].name).trim() }
|
||||
}
|
||||
return null
|
||||
}
|
||||
|
||||
export function formatPostDisplay(raw: unknown): string {
|
||||
if (Array.isArray(raw)) {
|
||||
return raw
|
||||
.filter(isPostValueItem)
|
||||
.map((x) => x.name)
|
||||
.filter(Boolean)
|
||||
.join('、')
|
||||
}
|
||||
if (isPostValueItem(raw)) return raw.name
|
||||
return ''
|
||||
}
|
||||
|
||||
export function extractPostIds(raw: unknown): string[] {
|
||||
const n = Array.isArray(raw)
|
||||
? raw.filter(isPostValueItem)
|
||||
: isPostValueItem(raw)
|
||||
? [raw]
|
||||
: []
|
||||
const out: string[] = []
|
||||
const seen = new Set<string>()
|
||||
for (const x of n) {
|
||||
const id = String(x.id).trim()
|
||||
if (!id || seen.has(id)) continue
|
||||
seen.add(id)
|
||||
out.push(id)
|
||||
}
|
||||
return out
|
||||
}
|
||||
Reference in new issue
Block a user