uni-wot-ui-plus
Version:
🦄基于uni-ui的二次封装的uniapp组件库
66 lines (61 loc) • 1.67 kB
text/typescript
export function useForm(): {
handleSetFormItems: (formItems: any[]) => any[]
handleResetForm: (formItems: any[]) => void
handleValidateForm: (ckForm: any) => Promise<boolean>
handleInitForm: (items: any[]) => any
} {
/**
* 设置表单项(排序和过滤隐藏项)
* @param formItems 表单项数组
* @returns 排序并过滤后的表单项数组
*/
const handleSetFormItems = (formItems: any[]) => {
// 使用原生 JavaScript 替代 lodash-es �?orderBy
formItems = formItems.slice().sort((a, b) => {
if (a.sort < b.sort) return -1
if (a.sort > b.sort) return 1
return 0
})
return formItems.filter((item) => {
return !item.isHide
})
}
/**
* 初始化表单数据
* @param formItems 表单项数组
* @returns 初始化的表单数据对象
*/
const handleInitForm = (formItems: any[]) => {
const form: any = {}
formItems?.forEach((item) => {
if (item.defaultValue || item.defaultValue === 0) {
form[item.field] = item.defaultValue
} else {
form[item.field] = ''
}
})
return form
}
/**
* 验证表单
* @param ckForm 表单实例
* @returns 验证结果Promise
*/
const handleValidateForm = async (ckForm: any) => {
const result = await ckForm.handleValidateForm()
return result.valid
}
/**
* 重置表单
* @param ckForm 表单实例
*/
const handleResetForm = (ckForm: any) => {
ckForm.handleResetForm()
}
return {
handleSetFormItems,
handleInitForm,
handleValidateForm,
handleResetForm
}
}