61 lines
1.6 KiB
TypeScript
61 lines
1.6 KiB
TypeScript
import type { Form } from 'lib/type/TableData'
|
|
|
|
export function formatConfig(config: Array<any>) {
|
|
if (typeof config === 'object') {
|
|
config = JSON.parse(JSON.stringify(config))
|
|
}
|
|
config?.forEach((item: any) => {
|
|
let defaultValue: any = ''
|
|
if (item.type === 'text') {
|
|
item.type = 'input'
|
|
item.rows = 5
|
|
defaultValue = item.value || ''
|
|
} else if (item.type === 'radio') {
|
|
item.type = 'select'
|
|
item.items = item.option.map((item: any) => {
|
|
return {
|
|
key: item.value,
|
|
name: item.name
|
|
}
|
|
})
|
|
delete item.option
|
|
defaultValue = item.value || ''
|
|
} else if (item.type === 'checkbox') {
|
|
item.multiple = true
|
|
item.type = 'select'
|
|
item.items = item.option.map((item: any) => {
|
|
return {
|
|
key: item.value,
|
|
name: item.name
|
|
}
|
|
})
|
|
delete item.option
|
|
defaultValue = item.value.split(',')
|
|
if (defaultValue.length === 1 && defaultValue[0] === '') {
|
|
defaultValue = []
|
|
}
|
|
} else if (item.type === 'switch') {
|
|
item.openValue = true
|
|
item.closeValue = false
|
|
defaultValue = !!item.value
|
|
} else if (item.type === 'json') {
|
|
item.type = 'jsonInput'
|
|
defaultValue = item.value || ''
|
|
} else {
|
|
defaultValue = item.value || ''
|
|
}
|
|
item.getValue = () => defaultValue
|
|
delete item.value
|
|
})
|
|
return config
|
|
}
|
|
|
|
export function updateFormData(form: Form, data: Array<any>) {
|
|
while (form.data.length > 0) {
|
|
form.data.pop()
|
|
}
|
|
for (const d of data) {
|
|
form.data.push(d)
|
|
}
|
|
}
|