const FIELD_OPTIONS = @{FIELDOPTIONSCONTENT}
|
|
export const @{ENTITYPREFIX}_REPORT_TITLE = '@{TABLEDESC}报表'
|
export const @{ENTITYPREFIX}_REPORT_STYLE = {
|
titleAlign: 'center',
|
titleLevel: 'strong',
|
orientation: 'portrait',
|
density: 'compact',
|
showSequence: true
|
}
|
|
function normalizeText(value) {
|
return String(value ?? '').trim()
|
}
|
|
function hasValue(value) {
|
return value !== '' && value !== null && value !== undefined
|
}
|
|
function toOptionalNumber(value) {
|
if (!hasValue(value)) {
|
return void 0
|
}
|
const parsed = Number(value)
|
return Number.isNaN(parsed) ? void 0 : parsed
|
}
|
|
function toOptionalBoolean(value) {
|
if (!hasValue(value)) {
|
return void 0
|
}
|
if (value === true || value === false) {
|
return value
|
}
|
if (value === 1 || value === '1' || String(value).toLowerCase() === 'true') {
|
return true
|
}
|
if (value === 0 || value === '0' || String(value).toLowerCase() === 'false') {
|
return false
|
}
|
return Boolean(value)
|
}
|
|
function buildNumberField(key, value) {
|
return hasValue(value) ? { [key]: Number(value) } : {}
|
}
|
|
function cloneOptions(options = []) {
|
return options.map((option) => ({ ...option }))
|
}
|
|
function normalizeStatusValue(status) {
|
if (!hasValue(status)) {
|
return ''
|
}
|
return String(status)
|
}
|
|
function formatBooleanText(value) {
|
if (value === true) {
|
return '是'
|
}
|
if (value === false) {
|
return '否'
|
}
|
return ''
|
}
|
|
function resolveStatusType(option = {}) {
|
const label = String(option.label || '')
|
const value = normalizeStatusValue(option.value)
|
if (value === '1' || value === 'true' || /正常|启用|有效|开启|是/.test(label)) {
|
return 'success'
|
}
|
if (value === '0' || value === 'false' || /禁用|冻结|停用|关闭|否/.test(label)) {
|
return 'danger'
|
}
|
return 'info'
|
}
|
|
function resolveStatusBool(option = {}) {
|
const value = normalizeStatusValue(option.value)
|
if (value === '1' || value === 'true') {
|
return true
|
}
|
if (value === '0' || value === 'false') {
|
return false
|
}
|
return false
|
}
|
|
export function create@{ENTITYNAME}SearchState() {
|
return {
|
condition: '',
|
@{SEARCHSTATECONTENT}
|
}
|
}
|
|
export function create@{ENTITYNAME}FormState() {
|
return {
|
@{FORMSTATECONTENT}
|
}
|
}
|
|
export function get@{ENTITYNAME}PaginationKey() {
|
return {
|
current: 'current',
|
size: 'pageSize'
|
}
|
}
|
|
export function get@{ENTITYNAME}FieldOptions(field) {
|
return cloneOptions(FIELD_OPTIONS[field] || [])
|
}
|
|
export function get@{ENTITYNAME}StatusOptions() {
|
return get@{ENTITYNAME}FieldOptions('status')
|
}
|
|
export function get@{ENTITYNAME}StatusMeta(status) {
|
const options = FIELD_OPTIONS.status || []
|
const normalizedStatus = normalizeStatusValue(status)
|
const matchedOption = options.find((option) => normalizeStatusValue(option.value) === normalizedStatus)
|
if (!matchedOption) {
|
return {
|
type: 'info',
|
text: normalizeText(status) || '未知',
|
bool: false
|
}
|
}
|
return {
|
type: resolveStatusType(matchedOption),
|
text: matchedOption.label,
|
bool: resolveStatusBool(matchedOption)
|
}
|
}
|
|
export function build@{ENTITYNAME}SearchParams(params = {}) {
|
const searchParams = {
|
condition: normalizeText(params.condition),
|
@{SEARCHPARAMSCONTENT}
|
}
|
|
return Object.fromEntries(Object.entries(searchParams).filter(([, value]) => hasValue(value)))
|
}
|
|
export function build@{ENTITYNAME}PageQueryParams(params = {}) {
|
return {
|
current: params.current || 1,
|
pageSize: params.pageSize || params.size || 20,
|
...build@{ENTITYNAME}SearchParams(params)
|
}
|
}
|
|
export const @{ENTITYPREFIX}_REPORT_COLUMNS = [
|
@{REPORTCOLUMNSCONTENT}
|
]
|
|
const @{ENTITYPREFIX}_REPORT_SOURCE_ALIAS = {
|
@{REPORTSOURCEALIASCONTENT}
|
}
|
|
export function get@{ENTITYNAME}ReportColumns() {
|
return @{ENTITYPREFIX}_REPORT_COLUMNS.map((column) => ({ ...column }))
|
}
|
|
export function resolve@{ENTITYNAME}ReportColumns(columns = []) {
|
if (!Array.isArray(columns)) {
|
return []
|
}
|
|
const allowedColumns = new Map(@{ENTITYPREFIX}_REPORT_COLUMNS.map((column) => [column.source, column]))
|
const seenSources = new Set()
|
|
return columns
|
.map((column) => {
|
if (!column || typeof column !== 'object') {
|
return null
|
}
|
|
const source =
|
@{ENTITYPREFIX}_REPORT_SOURCE_ALIAS[column.source ?? column.prop] ??
|
column.source ??
|
column.prop
|
if (!source || !allowedColumns.has(source) || seenSources.has(source)) {
|
return null
|
}
|
|
seenSources.add(source)
|
const allowedColumn = allowedColumns.get(source)
|
return {
|
source,
|
label: column.label || allowedColumn.label
|
}
|
})
|
.filter(Boolean)
|
}
|
|
export function build@{ENTITYNAME}ReportMeta({
|
previewMeta = {},
|
count = 0,
|
titleAlign = @{ENTITYPREFIX}_REPORT_STYLE.titleAlign,
|
titleLevel = @{ENTITYPREFIX}_REPORT_STYLE.titleLevel
|
} = {}) {
|
return {
|
reportTitle: @{ENTITYPREFIX}_REPORT_TITLE,
|
reportDate: previewMeta.reportDate,
|
printedAt: previewMeta.printedAt,
|
operator: previewMeta.operator,
|
count,
|
reportStyle: {
|
...@{ENTITYPREFIX}_REPORT_STYLE,
|
titleAlign,
|
titleLevel
|
}
|
}
|
}
|
|
export function build@{ENTITYNAME}DialogModel(record = {}) {
|
return {
|
...create@{ENTITYNAME}FormState(),
|
@{DIALOGMODELCONTENT}
|
}
|
}
|
|
export function build@{ENTITYNAME}SavePayload(formData = {}) {
|
return {
|
@{SAVEPAYLOADCONTENT}
|
}
|
}
|
|
export function normalize@{ENTITYNAME}ListRow(record = {}) {
|
const statusMeta = get@{ENTITYNAME}StatusMeta(record.statusBool ?? record.status)
|
return {
|
...record,
|
@{NORMALIZEROWCONTENT}
|
}
|
}
|
|
export function build@{ENTITYNAME}PrintRows(records = []) {
|
if (!Array.isArray(records)) {
|
return []
|
}
|
return records.map((record) => normalize@{ENTITYNAME}ListRow(record))
|
}
|