import { $t } from '@/locales'
|
|
const DEFAULT_DICT_DATA_ORDER_BY = 'sort asc'
|
|
function hasValue(value) {
|
return value !== '' && value !== void 0 && value !== null
|
}
|
|
function normalizeText(value) {
|
return String(value ?? '').trim()
|
}
|
|
function normalizeNumber(value, fallback = 0) {
|
if (!hasValue(value)) {
|
return fallback
|
}
|
const normalized = Number(value)
|
return Number.isNaN(normalized) ? fallback : normalized
|
}
|
|
export function createDictDataSearchState(dictTypeData = {}) {
|
return {
|
condition: '',
|
dictTypeId: hasValue(dictTypeData.id) ? normalizeNumber(dictTypeData.id, 0) : '',
|
dictTypeCode: normalizeText(dictTypeData.code),
|
value: '',
|
label: '',
|
sort: '',
|
memo: '',
|
status: '',
|
orderBy: DEFAULT_DICT_DATA_ORDER_BY
|
}
|
}
|
|
export function createDictDataFormState(dictTypeData = {}) {
|
return {
|
id: null,
|
dictTypeId: hasValue(dictTypeData.id) ? normalizeNumber(dictTypeData.id, 0) : 0,
|
dictTypeCode: normalizeText(dictTypeData.code),
|
value: '',
|
label: '',
|
group: '',
|
sort: 0,
|
status: 1,
|
memo: ''
|
}
|
}
|
|
export function getDictDataPaginationKey() {
|
return {
|
current: 'current',
|
size: 'pageSize'
|
}
|
}
|
|
export function getDictDataStatusOptions() {
|
return [
|
{ label: $t('common.status.normal'), value: 1 },
|
{ label: $t('common.status.frozen'), value: 0 }
|
]
|
}
|
|
export function getDictDataStatusMeta(status, t = $t) {
|
return Number(status) === 1
|
? { text: t('common.status.normal'), type: 'success', bool: true }
|
: { text: t('common.status.frozen'), type: 'danger', bool: false }
|
}
|
|
export function buildDictDataSearchParams(params = {}) {
|
const searchParams = {
|
condition: normalizeText(params.condition),
|
dictTypeId: hasValue(params.dictTypeId) ? normalizeNumber(params.dictTypeId, 0) : '',
|
dictTypeCode: normalizeText(params.dictTypeCode),
|
value: normalizeText(params.value),
|
label: normalizeText(params.label),
|
sort: normalizeText(params.sort),
|
memo: normalizeText(params.memo),
|
status: params.status,
|
orderBy: normalizeText(params.orderBy) || DEFAULT_DICT_DATA_ORDER_BY
|
}
|
|
return Object.fromEntries(Object.entries(searchParams).filter(([, value]) => hasValue(value)))
|
}
|
|
export function buildDictDataPageQueryParams(params = {}) {
|
return {
|
current: params.current || 1,
|
pageSize: params.pageSize || params.size || 20,
|
...buildDictDataSearchParams(params)
|
}
|
}
|
|
export function buildDictDataDialogModel(record = {}, dictTypeData = {}) {
|
return {
|
...createDictDataFormState(dictTypeData),
|
...(record.id ? { id: normalizeNumber(record.id, 0) } : {}),
|
dictTypeId: hasValue(record.dictTypeId)
|
? normalizeNumber(record.dictTypeId, 0)
|
: createDictDataFormState(dictTypeData).dictTypeId,
|
dictTypeCode:
|
normalizeText(record.dictTypeCode) || createDictDataFormState(dictTypeData).dictTypeCode,
|
value: normalizeText(record.value),
|
label: normalizeText(record.label),
|
group: normalizeText(record.group),
|
sort: normalizeNumber(record.sort, 0),
|
status: hasValue(record.status) ? normalizeNumber(record.status, 1) : 1,
|
memo: normalizeText(record.memo)
|
}
|
}
|
|
export function buildDictDataSavePayload(formData = {}, dictTypeData = {}) {
|
const baseForm = createDictDataFormState(dictTypeData)
|
return {
|
...(formData.id ? { id: normalizeNumber(formData.id, 0) } : {}),
|
dictTypeId: hasValue(formData.dictTypeId)
|
? normalizeNumber(formData.dictTypeId, 0)
|
: baseForm.dictTypeId,
|
dictTypeCode: normalizeText(formData.dictTypeCode) || baseForm.dictTypeCode,
|
value: normalizeText(formData.value),
|
label: normalizeText(formData.label),
|
group: normalizeText(formData.group),
|
sort: normalizeNumber(formData.sort, 0),
|
status: hasValue(formData.status) ? normalizeNumber(formData.status, 1) : 1,
|
memo: normalizeText(formData.memo)
|
}
|
}
|
|
export function normalizeDictDataListRow(record = {}, t = $t) {
|
const statusMeta = getDictDataStatusMeta(record.status, t)
|
return {
|
...record,
|
dictTypeId: hasValue(record.dictTypeId) ? normalizeNumber(record.dictTypeId, 0) : 0,
|
dictTypeCode: normalizeText(record.dictTypeCode),
|
value: normalizeText(record.value),
|
label: normalizeText(record.label),
|
group: normalizeText(record.group),
|
sort: normalizeNumber(record.sort, 0),
|
memo: normalizeText(record.memo),
|
statusText: record['status$'] || statusMeta.text,
|
statusType: statusMeta.type,
|
statusBool: record.statusBool ?? statusMeta.bool,
|
updateByLabel: record['updateBy$'] || normalizeText(record.updateByLabel),
|
createByLabel: record['createBy$'] || normalizeText(record.createByLabel),
|
updateTimeText: record['updateTime$'] || normalizeText(record.updateTime),
|
createTimeText: record['createTime$'] || normalizeText(record.createTime)
|
}
|
}
|