diff --git a/src/utils/formCreate.ts b/src/utils/formCreate.ts index 06fedede..5a0a49a3 100644 --- a/src/utils/formCreate.ts +++ b/src/utils/formCreate.ts @@ -49,14 +49,17 @@ export const setConfAndFields2 = ( detailPreview = detailPreview.value } - // 解析配置 + // 修复所有函数类型(解决设计器保存后函数变成字符串的问题)。例如说: + // https://t.zsxq.com/rADff + // https://t.zsxq.com/ZfbGt + // https://t.zsxq.com/mHOoj + // https://t.zsxq.com/BSylB const option = JSON.parse(conf) const rule = decodeFields(fields) - // 🔧 修复所有函数类型 - 解决设计器保存后函数变成字符串的问题 const fixFunctions = (obj: any) => { if (obj && typeof obj === 'object') { - Object.keys(obj).forEach(key => { + Object.keys(obj).forEach((key) => { // 检查是否是函数相关的属性 if (isFunctionProperty(key)) { // 如果不是函数类型,重新构建为函数 @@ -70,135 +73,107 @@ export const setConfAndFields2 = ( }) } } - // 判断是否是函数属性 const isFunctionProperty = (key: string): boolean => { const functionKeys = [ - 'beforeFetch', // 请求前处理 - 'afterFetch', // 请求后处理 - 'onSubmit', // 表单提交 - 'onReset', // 表单重置 - 'onChange', // 值变化 - 'onInput', // 输入事件 - 'onClick', // 点击事件 - 'onFocus', // 获取焦点 - 'onBlur', // 失去焦点 - 'onMounted', // 组件挂载 - 'onCreated', // 组件创建 - 'onReload', // 重新加载 - 'remoteMethod', // 远程搜索方法 - 'parseFunc', // 解析函数 - 'validator', // 验证器 - 'asyncValidator', // 异步验证器 - 'formatter', // 格式化函数 - 'parser', // 解析函数 - 'beforeUpload', // 上传前处理 - 'onSuccess', // 成功回调 - 'onError', // 错误回调 - 'onProgress', // 进度回调 - 'onPreview', // 预览回调 - 'onRemove', // 移除回调 - 'onExceed', // 超出限制回调 - 'filterMethod', // 过滤方法 - 'sortMethod', // 排序方法 - 'loadData', // 加载数据 - 'renderContent', // 渲染内容 - 'render' // 渲染函数 + 'beforeFetch', // 请求前处理 + 'afterFetch', // 请求后处理 + 'onSubmit', // 表单提交 + 'onReset', // 表单重置 + 'onChange', // 值变化 + 'onInput', // 输入事件 + 'onClick', // 点击事件 + 'onFocus', // 获取焦点 + 'onBlur', // 失去焦点 + 'onMounted', // 组件挂载 + 'onCreated', // 组件创建 + 'onReload', // 重新加载 + 'remoteMethod', // 远程搜索方法 + 'parseFunc', // 解析函数 + 'validator', // 验证器 + 'asyncValidator', // 异步验证器 + 'formatter', // 格式化函数 + 'parser', // 解析函数 + 'beforeUpload', // 上传前处理 + 'onSuccess', // 成功回调 + 'onError', // 错误回调 + 'onProgress', // 进度回调 + 'onPreview', // 预览回调 + 'onRemove', // 移除回调 + 'onExceed', // 超出限制回调 + 'filterMethod', // 过滤方法 + 'sortMethod', // 排序方法 + 'loadData', // 加载数据 + 'renderContent', // 渲染内容 + 'render' // 渲染函数 ] - // 检查是否以函数相关前缀开头 const functionPrefixes = ['on', 'before', 'after', 'handle'] - - return functionKeys.includes(key) || - functionPrefixes.some(prefix => key.startsWith(prefix)) + return functionKeys.includes(key) || functionPrefixes.some((prefix) => key.startsWith(prefix)) } - // 根据函数名创建默认函数 const createDefaultFunction = (key: string): Function => { switch (key) { case 'beforeFetch': return (config: any) => { - console.log('beforeFetch被调用:', config) - // 添加认证头 const token = localStorage.getItem('token') if (token) { config.headers = { ...config.headers, - 'Authorization': 'Bearer ' + token + Authorization: 'Bearer ' + token } } - // 添加通用请求头 config.headers = { ...config.headers, 'Content-Type': 'application/json', 'X-Requested-With': 'XMLHttpRequest' } - // 添加时间戳防止缓存 config.params = { ...config.params, _t: Date.now() } - return config } - case 'afterFetch': return (data: any) => { - console.log('afterFetch被调用:', data) return data } - case 'onSubmit': - return (formData: any) => { - console.log('onSubmit被调用:', formData) + return (_formData: any) => { return true } - case 'onReset': return () => { - console.log('onReset被调用') return true } - case 'onChange': - return (value: any, oldValue: any) => { - console.log('onChange被调用:', { value, oldValue }) - } - + return (_value: any, _oldValue: any) => {} case 'remoteMethod': return (query: string) => { console.log('remoteMethod被调用:', query) } - case 'parseFunc': return (data: any) => { - console.log('parseFunc被调用:', data) // 默认解析逻辑:如果是数组直接返回,否则尝试获取list属性 if (Array.isArray(data)) { return data } return data?.list || data?.data || [] } - case 'validator': - return (rule: any, value: any, callback: Function) => { - console.log('validator被调用:', { rule, value }) + return (_rule: any, _value: any, callback: Function) => { callback() } - case 'beforeUpload': - return (file: any) => { - console.log('beforeUpload被调用:', file) + return (_file: any) => { return true } - default: // 通用默认函数 return (...args: any[]) => { - console.log(`${key}被调用:`, args) // 对于事件处理函数,返回true表示继续执行 if (key.startsWith('on') || key.startsWith('handle')) { return true @@ -208,11 +183,9 @@ export const setConfAndFields2 = ( } } } - - // 修复option中的所有函数 + // 修复 option 中的所有函数 fixFunctions(option) - - // 修复rule中的所有函数(包括组件的props) + // 修复 rule 中的所有函数(包括组件的 props) if (Array.isArray(rule)) { rule.forEach((item: any) => { fixFunctions(item)