{"应用模块ID":"926","代码对象数组":"[{\"id\":\"config_eJGbbGXkpa\",\"name\":\"基础框架前台\",\"type\":\"config\",\"props\":{\"style\":{},\"ossHost\":\"https://ivx-1256799882.cos.ap-beijing.myqcloud.com/\",\"prdHost\":\"d8dali.ubills.cn\",\"prdPath\":\"/\",\"prdApiHost\":\"https://d8dali.ubills.cn/api/925\",\"preApiHost\":\"https://prev2.d8dcloud.com/api/925\"}},{\"id\":\"front_F57M563T6F\",\"name\":\"前台\",\"type\":\"front\",\"props\":{\"style\":{\"width\":\"100%\",\"height\":\"100%\",\"display\":\"flex\",\"overflow\":\"hidden auto\",\"alignItems\":\"flex-start\",\"flexDirection\":\"column\",\"backgroundColor\":\"#ffffff\"}},\"children\":[{\"id\":\"state_3GTpZSSXFf\",\"type\":\"state\",\"children\":[{\"id\":\"group_CwE7DefnWA\",\"name\":\"页面变量\",\"type\":\"group\",\"props\":{\"devId\":\"group_CwE7DefnWA\"},\"children\":[{\"id\":\"variable_YAbYNMpptD\",\"name\":\"图标js地址\",\"type\":\"variable\",\"props\":{\"devId\":\"variable_YAbYNMpptD\",\"value\":\"//at.alicdn.com/t/c/font_3826159_m10v9shyk9.js\"}},{\"id\":\"variable_WhYXDKYwiR\",\"name\":\"用户信息\",\"type\":\"variable\",\"props\":{\"devId\":\"variable_WhYXDKYwiR\",\"value\":null}}]}]},{\"id\":\"method_ZhFJCTBeAW\",\"type\":\"method\",\"children\":[{\"id\":\"jsFunc_aQ8hS7yRs4\",\"name\":\"全站初始化处理\",\"type\":\"jsFunc\",\"props\":{\"devId\":\"jsFunc_aQ8hS7yRs4\",\"jsCode\":\"const emitter = new events.EventEmitter(); \\r\\n\\r\\nemitter.on('checkLogin', ()=>{\\r\\n\\t_F('fComponent_NkcbRZJXR7').callMethod(\\r\\n\\t\\t\\t'jsFunc_wX4QaKmtft',\\r\\n\\t\\t\\t{},\\r\\n\\t\\t\\t(data)=>{\\r\\n\\t\\t\\t\\tif(data.code == 200){\\r\\n\\t\\t\\t\\t\\tlet userInfo = data.result;\\r\\n\\t\\t\\t\\t\\temitter.emit('setUserInfo',userInfo);\\r\\n\\t\\t\\t\\t}else{\\r\\n\\t\\t\\t\\t\\temitter.emit('noUserInfo');\\r\\n\\t\\t\\t\\t}\\r\\n\\t\\t\\t\\t\\r\\n\\t\\t\\t}\\r\\n\\t\\t)\\r\\n})\\r\\n\\r\\nemitter.on('noUserInfo', ()=>{\\r\\n\\tconsole.log('检查登录处理.路径信息',window.location.hash);\\r\\n\\t//检查是否在工作台页面内\\r\\n\\tif(window.location.hash.indexOf('admin') > -1){\\r\\n\\t\\t_F('message_func').callMethod('warning','请先登录');\\r\\n\\t\\t_F('jsFunc_XdwzZNs4cP').call({\\r\\n\\t\\t\\t页面路径:'/'\\r\\n\\t\\t});\\r\\n\\t}\\r\\n})\\r\\n\\r\\nemitter.on('setUserInfo', (userInfo)=>{\\r\\n\\t_F('variable_WhYXDKYwiR').callMethod('set',userInfo,()=>{\\r\\n\\t\\t//console.log('检查登录处理.用户信息',_F('variable_WhYXDKYwiR').callMethod('get'));\\r\\n\\t});\\r\\n\\r\\n});\\r\\n\\r\\nemitter.emit('checkLogin');\\r\\n\\r\\nconsole.log('当前域名',_F('variable_SYkz5sym6Z').callMethod('get'));\\r\\n\\r\\n//初始化请求接口\\r\\n_F('jsFunc_j3FMdWpRBF').call();\\r\\n\\r\\n//初始化上传接口\\r\\n_F('jsFunc_mskFpBwdYM').call();\\r\\n\\r\\n\",\"inParams\":[],\"outParams\":[]}},{\"id\":\"jsFunc_hxyJ3mCH5t\",\"name\":\"退出登录\",\"type\":\"jsFunc\",\"props\":{\"devId\":\"jsFunc_hxyJ3mCH5t\",\"jsCode\":\"const emitter = new events.EventEmitter(); \\r\\n\\r\\nemitter.on('logout', ()=>{\\r\\n\\t_F('fComponent_NkcbRZJXR7').callMethod(\\r\\n\\t\\t\\t'jsFunc_2dJkYYs2xa',\\r\\n\\t\\t\\t{},\\r\\n\\t\\t\\t(data)=>{\\r\\n\\t\\t\\t\\tif(data.code == 200){\\r\\n\\t\\t\\t\\t\\temitter.emit('logoutSuccess');\\r\\n\\t\\t\\t\\t}else\\r\\n\\t\\t\\t\\t emitter.emit('logoutFail',data.errMsg);\\r\\n\\t\\t\\t}\\r\\n\\t\\t)\\r\\n})\\r\\n\\r\\nemitter.on('logoutSuccess', ()=>{\\r\\n\\temitter.emit('clearUserInfo');\\r\\n\\t_F('message_func').callMethod('success','退出登录成功');\\r\\n\\temitter.emit('navPage');\\r\\n});\\r\\n\\r\\nemitter.on('navPage', ()=>{\\r\\n\\t\\t_F('jsFunc_XdwzZNs4cP').call({\\r\\n 页面路径:'/'\\r\\n });\\r\\n \\r\\n});\\r\\n\\r\\nemitter.on('clearUserInfo', ()=>{\\r\\n\\t_F('variable_WhYXDKYwiR').callMethod('set',null);\\r\\n \\r\\n});\\r\\n\\r\\nemitter.on('logoutFail', (errMsg)=>{\\r\\n\\tconsole.log('退出登录失败',errMsg);\\r\\n \\r\\n});\\r\\n\\r\\nemitter.emit('logout');\",\"inParams\":[],\"outParams\":[]}},{\"id\":\"group_eYhxrN7cQc\",\"name\":\"页面方法\",\"type\":\"group\",\"props\":{\"devId\":\"group_eYhxrN7cQc\"},\"children\":[{\"id\":\"jsFunc_XdwzZNs4cP\",\"name\":\"切换页面\",\"type\":\"jsFunc\",\"props\":{\"devId\":\"jsFunc_XdwzZNs4cP\",\"jsCode\":\"_F('page_func').callMethod('navigate',{\\r\\n\\tpath:param.页面路径\\r\\n});\",\"inParams\":[\"页面路径\"],\"outParams\":[]}},{\"id\":\"jsFunc_F44BEeQ5Se\",\"name\":\"顶部导航菜单点击处理\",\"type\":\"jsFunc\",\"props\":{\"devId\":\"jsFunc_F44BEeQ5Se\",\"jsCode\":\"let 菜单key = param.菜单key;\\r\\nlet pageNavPath = '';\\r\\n\\r\\nconsole.log('顶部导航菜单点击',菜单key);\\r\\n\\r\\nif(菜单key == 'home')pageNavPath = '/';\\r\\nelse if(菜单key == 'login')pageNavPath = '/login';\\r\\nelse if(菜单key == 'reg')pageNavPath = '/reg';\\r\\nelse if(菜单key == 'mine')pageNavPath = '/admin';\\r\\n\\r\\n_F('jsFunc_XdwzZNs4cP').call({\\r\\n\\t页面路径:pageNavPath\\r\\n});\",\"inParams\":[\"菜单key\"],\"outParams\":[]}},{\"id\":\"jsFunc_JHDTNk3yzi\",\"name\":\"左侧导航菜单点击处理\",\"type\":\"jsFunc\",\"props\":{\"devId\":\"jsFunc_JHDTNk3yzi\",\"jsCode\":\"let 菜单key = param.菜单key;\\r\\nlet pageNavPath = param.页面路径;\\r\\n\\r\\nconsole.log('左侧导航菜单点击',菜单key);\\r\\n\\r\\nif(菜单key == 'logout'){\\r\\n _F('jsFunc_hxyJ3mCH5t').call();\\r\\n}else{\\r\\n\\tif(pageNavPath)\\r\\n\\t\\t_F('jsFunc_XdwzZNs4cP').call({\\r\\n\\t\\t\\t页面路径:pageNavPath\\r\\n\\t\\t});\\r\\n}\",\"inParams\":[\"菜单key\",\"页面路径\"],\"outParams\":[]}}]},{\"id\":\"group_6SRDiKBmw4\",\"name\":\"初始化相关\",\"type\":\"group\",\"props\":{},\"children\":[{\"id\":\"jsFunc_j3FMdWpRBF\",\"name\":\"请求接口初始化\",\"type\":\"jsFunc\",\"props\":{\"jsCode\":\"const h5Request = function (options) {\\r\\n console.log('h5Request');\\r\\n const xhr = new XMLHttpRequest();\\r\\n\\r\\n // 数据转换为 JSON 字符串\\r\\n let jsonData = JSON.stringify(options.data);\\r\\n\\r\\n xhr.open(options.method || 'GET', options.url);\\r\\n\\r\\n // 设置请求头的 Content-Type 为 application/json\\r\\n xhr.setRequestHeader('Content-Type', 'application/json');\\r\\n\\r\\n // 发送 JSON 数据 \\r\\n xhr.send(jsonData);\\r\\n\\r\\n xhr.onload = function () {\\r\\n if (xhr.status === 200) {\\r\\n // 响应也将为 JSON 格式\\r\\n let data = JSON.parse(xhr.response);\\r\\n options.success({ data });\\r\\n } else {\\r\\n options.fail(xhr.statusText);\\r\\n }\\r\\n }\\r\\n}\\r\\n\\r\\nconst apiRequest = function (options) {\\r\\n const apiHost = _F('global_func').callMethod('getConfig', 'apiHost');\\r\\n\\r\\n \\r\\n console.log('guestRequest.apiHost',apiHost);\\r\\n\\r\\n return h5Request({\\r\\n url: `${apiHost}${options.url}`,\\r\\n method: options.method || 'GET',\\r\\n data: options.data || {},\\r\\n success: options.success,\\r\\n fail: options.fail\\r\\n })\\r\\n}\\r\\n\\r\\n_F('store_func').callMethod('set', { key: 'API_REQUEST', value: apiRequest })\\r\\n\"}},{\"id\":\"jsFunc_mskFpBwdYM\",\"name\":\"上传接口初始化\",\"type\":\"jsFunc\",\"props\":{\"jsCode\":\"const uploadH5 = (options) => {\\r\\n console.log('uploadH5', options)\\r\\n\\r\\n const xhr = new XMLHttpRequest();\\r\\n if (xhr.upload) {\\r\\n const formData = new FormData();\\r\\n\\r\\n // 添加其他字段\\r\\n Object.keys(options.formData).forEach(key => {\\r\\n formData.append(key, options.formData[key]);\\r\\n });\\r\\n\\r\\n formData.append('file', options.file);\\r\\n\\r\\n xhr.upload.addEventListener(\\r\\n 'progress',\\r\\n (e) => {\\r\\n options.onProgress?.(e)\\r\\n },\\r\\n false\\r\\n )\\r\\n xhr.onreadystatechange = () => {\\r\\n if (xhr.readyState === 4) {\\r\\n if (xhr.status === options.xhrState) {\\r\\n options.onSuccess?.(options.fileName, xhr)\\r\\n } else {\\r\\n options.onError?.(xhr.error, xhr.responseText)\\r\\n }\\r\\n }\\r\\n }\\r\\n xhr.open(options.method, options.url, true)\\r\\n\\r\\n // xhr.setRequestHeader('Content-Type', 'multipart/form-data');\\r\\n if (options.method.toLowerCase() === 'put') {\\r\\n xhr.send(options.file);\\r\\n } else {\\r\\n xhr.send(formData);\\r\\n }\\r\\n } else {\\r\\n console.warn('浏览器不支持 XMLHttpRequest')\\r\\n }\\r\\n\\r\\n\\r\\n}\\r\\n\\r\\nconst getPreSignedUrl = ({ name, method, callback }) => {\\r\\n const apiReq = _F('store_func').callMethod('get', { key: 'API_REQUEST' });\\r\\n\\r\\n console.log('getSignedUrl.apiReq', apiReq)\\r\\n apiReq({\\r\\n url: '/v1/admin/cos_sts/presign',\\r\\n method: 'POST',\\r\\n data: {\\r\\n name,\\r\\n method\\r\\n },\\r\\n success: (res) => {\\r\\n console.log('获取cos已签名url', res.data)\\r\\n\\r\\n if (res.data.code === 200) {\\r\\n callback(res.data.result)\\r\\n }\\r\\n\\r\\n\\r\\n },\\r\\n fail: (err) => {\\r\\n _F('message_func').callMethod('error',err);\\r\\n }\\r\\n })\\r\\n}\\r\\n\\r\\n\\r\\nconst randomFileName = (name) => {\\r\\n let ext = name?.split('.')[1]\\r\\n return Date.now() + Math.random().toString(36).substring(2, 15) + '.' + ext;\\r\\n}\\r\\n\\r\\nconst beforeXhrUpload3 = (options) => {\\r\\n console.log('beforeXhrUpload', options)\\r\\n const file = options.file;\\r\\n const fileName = file?.name;\\r\\n // const options = {};\\r\\n\\r\\n options.fileName = `admin_upload/${randomFileName(fileName)}`;\\r\\n options.xhrState = 204;\\r\\n options.fileType = file?.type;\\r\\n options.method = options.method ||'post'; \\r\\n\\r\\n getPreSignedUrl({\\r\\n name: options.fileName,\\r\\n method: options.method,\\r\\n callback: (data) => {\\r\\n console.log('getSignedUrl', data)\\r\\n options.url = data.url;\\r\\n options.formData = data.fields;\\r\\n\\r\\n uploadH5(options);\\r\\n\\r\\n }\\r\\n })\\r\\n\\r\\n\\r\\n\\r\\n};\\r\\n\\r\\n_F('store_func').callMethod('set', { key: 'LOGINED_UPLOAD_REQ', value: beforeXhrUpload3 })\\r\\n\\r\\nconsole.log('上传接口初始化', beforeXhrUpload3)\\r\\n\\r\\n\"}}]}]},{\"id\":\"dom_XwDFhmTCmb\",\"type\":\"dom\",\"children\":[{\"id\":\"group_d2a4QHc6pw\",\"name\":\"用户基础方法相关\",\"type\":\"group\",\"props\":{\"devId\":\"group_d2a4QHc6pw\"},\"children\":[{\"id\":\"fComponent_NkcbRZJXR7\",\"name\":\"员工管理前台api组件\",\"type\":\"fComponent\",\"props\":{\"attr\":[{\"attrId\":\"variable_EQeKnENiRK\",\"attrValue\":\"/v1/editor/user/logined/info\"},{\"attrId\":\"variable_4n3CPWhh5F\",\"attrType\":\"js\",\"attrValue\":\" \",\"attrJsCode\":\"_F('variable_SYkz5sym6Z').callMethod('get')\"},{\"attrId\":\"variable_tNhtceaYE5\",\"attrType\":\"string\",\"attrValue\":\"/v1/editor/user/logout\",\"attrJsCode\":\"\"}],\"devId\":\"fComponent_NkcbRZJXR7\",\"moduleId\":\"module_DWFmwXGr8b\"}}]},{\"id\":\"group_WCjQAKZnEF\",\"name\":\"初始化\",\"type\":\"group\",\"props\":{\"devId\":\"group_WCjQAKZnEF\"},\"children\":[{\"id\":\"Row_S58TtEZcdf\",\"name\":\"全站初始化\",\"type\":\"Row\",\"props\":{\"devId\":\"Row_S58TtEZcdf\",\"style\":{\"visibility\":\"hidden\"},\"events\":[{\"method\":\"jsFunc_aQ8hS7yRs4\",\"inParams\":[],\"eventType\":\"onInit\"}]}}]},{\"id\":\"routes_DScRDQXben\",\"name\":\"全屏页面\",\"type\":\"routes\",\"props\":{\"devId\":\"routes_DScRDQXben\",\"style\":{}},\"children\":[{\"id\":\"route_7zFe8BTXaT\",\"name\":\"游客页面\",\"type\":\"route\",\"props\":{\"path\":\"/*\",\"devId\":\"route_7zFe8BTXaT\",\"style\":{},\"element\":[{\"id\":\"Layout_GtzNYR8J3y\",\"name\":\"A布局1\",\"type\":\"Layout\",\"props\":{\"devId\":\"Layout_GtzNYR8J3y\",\"style\":{\"minHeight\":\"100vh\"}},\"children\":[{\"id\":\"Header_dJjEQhBaSG\",\"name\":\"A头部1\",\"type\":\"Header\",\"props\":{\"devId\":\"Header_dJjEQhBaSG\",\"style\":{}},\"children\":[{\"id\":\"fComponent_JaGkiJbthc\",\"name\":\"顶部导航组件\",\"type\":\"fComponent\",\"props\":{\"attr\":[{\"attrId\":\"variable_6x25nprmWm\",\"attrType\":\"js\",\"attrValue\":\"\",\"attrJsCode\":\"_F('variable_WhYXDKYwiR').callMethod('get')\"}],\"devId\":\"fComponent_JaGkiJbthc\",\"events\":[{\"method\":\"jsFunc_F44BEeQ5Se\",\"inParams\":[{\"name\":\"菜单key\",\"type\":\"js\",\"value\":\"param.菜单key\"}],\"eventType\":\"fEvent_D5rybr8FxA\"}],\"visible\":true,\"moduleId\":\"module_iRSw4R3Xr4\"}}]},{\"id\":\"Content_isJC8sbPhe\",\"name\":\"A内容1\",\"type\":\"Content\",\"props\":{\"devId\":\"Content_isJC8sbPhe\",\"style\":{}},\"children\":[{\"id\":\"routes_bf5k7Ts6ER\",\"name\":\"游客页面容器\",\"type\":\"routes\",\"props\":{\"devId\":\"routes_bf5k7Ts6ER\",\"style\":{}},\"children\":[{\"id\":\"route_kJC8pC82HC\",\"name\":\"登录页\",\"type\":\"route\",\"props\":{\"path\":\"/\",\"devId\":\"route_kJC8pC82HC\",\"style\":{},\"element\":[{\"id\":\"fComponent_2aNzrQArGA\",\"name\":\"员工登录组件\",\"type\":\"fComponent\",\"props\":{\"attr\":[{\"attrId\":\"variable_pEyhn6tKpF\",\"attrMemo\":\"\",\"attrName\":\"站点标题\",\"attrValue\":\"发券管理后台\",\"attrJsCode\":\"\"},{\"attrId\":\"variable_d4hNkjfpGy\",\"attrMemo\":\"
//登录返回结果 {code,errMsg,result}\\n//例如 {code:200,errMsg:'登录成功',result:用户信息}\\n(loginResult)=>{}* 配置筛选表单项项属性值,以数组形式配置
* 标题:label,
* 字段名:name,
* 字段类型:type (
input:单行输入框,
hidden:隐藏框,
password:密码输入框,
select:下拉选择框,
date:开始结束日期时间,(
range: false,
showTime: false,
)
custom:自定义节点
),
校验规则:rules
[{required:true}]* 自定义节点渲染函数(当前表单实例):render(form)
[\\n {\\n label:'',\\n name:'',\\n type:'',\\n render:(form)=>{}\\n }\\n]默认 100vh
\",\"attrName\":\"登录框高度\",\"attrJsCode\":\"\"},{\"attrId\":\"variable_JtRDZm5CWx\",\"attrMemo\":\"默认 登录成功
\",\"attrName\":\"成功提示\",\"attrJsCode\":\"\"},{\"attrId\":\"variable_zX3QTGjZdB\",\"attrMemo\":\"默认 登录
\",\"attrName\":\"按钮文本\",\"attrJsCode\":\"\"}],\"moduleId\":\"module_byjb5ddrDX\"}}],\"pathNav\":\"/\"}}]}]},{\"id\":\"Footer_Bp8taf7FSH\",\"name\":\"A底部1\",\"type\":\"Footer\",\"props\":{\"devId\":\"Footer_Bp8taf7FSH\",\"style\":{}}}]}],\"pathNav\":\"/\"}},{\"id\":\"route_KjkxRcb7ii\",\"name\":\"工作台页\",\"type\":\"route\",\"props\":{\"path\":\"/admin/*\",\"devId\":\"route_KjkxRcb7ii\",\"style\":{},\"element\":[{\"id\":\"Layout_h8Q78mKESS\",\"name\":\"A布局1\",\"type\":\"Layout\",\"props\":{\"devId\":\"Layout_h8Q78mKESS\",\"style\":{\"minHeight\":\"100vh\"}},\"children\":[{\"id\":\"Sider_wR4Xb4GTsT\",\"name\":\"A侧栏1\",\"type\":\"Sider\",\"props\":{\"devId\":\"Sider_wR4Xb4GTsT\",\"style\":{}},\"children\":[{\"id\":\"Row_TpkMPEAQRc\",\"name\":\"a行1\",\"type\":\"Row\",\"props\":{\"align\":\"middle\",\"devId\":\"Row_TpkMPEAQRc\",\"style\":{\"height\":\"64px\",\"alignItems\":\"center\",\"justifyContent\":\"center\"},\"height\":\"64px\"},\"children\":[{\"id\":\"Col_KzFDMYTzxG\",\"name\":\"a列1\",\"type\":\"Col\",\"props\":{\"flex\":\"1\",\"devId\":\"Col_KzFDMYTzxG\",\"style\":{\"height\":\"auto\",\"alignItems\":\"flex-start\",\"paddingTop\":0,\"justifyContent\":\"flex-start\"}},\"children\":[{\"id\":\"div_pHhPcAMdis\",\"type\":\"div\",\"props\":{\"style\":{\"color\":\"#ffffff\",\"cursor\":\"inherit\",\"height\":\"auto\",\"fontSize\":18,\"textAlign\":\"center\",\"wordBreak\":\"normal\",\"flexShrink\":\"0\",\"lineHeight\":\"normal\",\"paddingTop\":0,\"whiteSpace\":\"pre-wrap\",\"backgroundColor\":\"\",\"transformOrigin\":\"0% 0% 0px\"}},\"children\":[{\"id\":\"span_Ph5K2NFFwD\",\"name\":\"文本1\",\"type\":\"span\",\"props\":{\"devId\":\"span_Ph5K2NFFwD\",\"content\":\"多八多管理系统\"}}]}]}]},{\"id\":\"Row_Az7QzmAp62\",\"name\":\"a行1\",\"type\":\"Row\",\"props\":{\"devId\":\"Row_Az7QzmAp62\",\"style\":{}},\"children\":[{\"id\":\"Col_FKeNtcSjmj\",\"name\":\"a列1\",\"type\":\"Col\",\"props\":{\"flex\":\"1\",\"devId\":\"Col_FKeNtcSjmj\",\"style\":{}},\"children\":[{\"id\":\"if_Wwm3Y8xe4e\",\"type\":\"if\",\"props\":{},\"children\":[{\"id\":\"fComponent_ddsskcNQjH\",\"name\":\"管理后台左侧动态导航组件\",\"type\":\"fComponent\",\"props\":{\"devId\":\"fComponent_ddsskcNQjH\",\"events\":[{\"method\":\"jsFunc_JHDTNk3yzi\",\"inParams\":[{\"name\":\"菜单key\",\"type\":\"js\",\"value\":\"param.菜单key\"},{\"name\":\"页面路径\",\"type\":\"js\",\"value\":\"param.页面路径\"}],\"eventType\":\"fEvent_4ezp2e2e8J\"}],\"moduleId\":\"module_JwpNc227ks\"}}]},{\"id\":\"fComponent_GsHJmjcxfS\",\"name\":\"PC左侧导航组件\",\"type\":\"fComponent\",\"props\":{\"attr\":[{\"attrId\":\"variable_emSKKQ7xjs\",\"attrMemo\":\"默认为 false。布尔值 false/true
\",\"attrName\":\"初始化加载菜单\",\"attrType\":\"js\",\"attrJsCode\":\"true\"},{\"attrId\":\"variable_PeiSzmQwDb\",\"attrMemo\":\"\",\"attrName\":\"菜单api地址\",\"attrValue\":\"/v1/admin/menu/search\",\"attrJsCode\":\"\"},{\"attrId\":\"variable_n7aWAQX3ke\",\"attrMemo\":\"默认是light 可选值:light(浅色)/dark(深色)
\",\"attrName\":\"主题\",\"attrValue\":\"dark\",\"attrJsCode\":\"\"},{\"attrId\":\"variable_wKMW5Rfz3x\",\"attrMemo\":\"//title: 菜单显示标题字段 \\n//pId: 父菜单ID\\n//key: 菜单唯一标识\\n{ title:'title', pId: 'pId', key: '_id' }//clickRes: {\\r\\n \\\"id\\\": 1,\\r\\n \\\"key\\\": \\\"1\\\",\\r\\n \\\"pId\\\": 0,\\r\\n \\\"title\\\": \\\"首页\\\",\\r\\n \\\"value\\\": 1,\\r\\n \\\"dataRef\\\": {}\\r\\n}\\n(clickRes)=>{}[\\n {\\n label: '首页',\\n key: 'home',\\n }\\n][\\n {\\n label: '退出登录',\\n key: 'logout',\\n }\\n]菜单类型,现在支持垂直、水平、和内嵌模式三种\\t\\nvertical | horizontal | inline\\t\\n默认vertical[{_id:1,title:'首页',pId:0}]直接填写菜单key
\",\"attrName\":\"初始选中菜单key\",\"attrJsCode\":\"\"},{\"attrId\":\"variable_p2cYa4Mm6p\",\"attrMemo\":\"['key']* 配置筛选表单项项属性值,以数组形式配置
* 标题:label,
* 字段名:name,
* 字段类型:type (
input:单行输入框,
number:数字输入框,
textarea:多行输入框,
select:下拉选择框,
richtext:富文本输入框,
date:开始结束日期时间,(
range: false,
showTime: false,
)
custom:自定义节点
),
* 自定义节点渲染函数(当前表单实例):render(form)
[\\n {\\n label:'',\\n name:'',\\n type:'',\\n render:(form)=>{}\\n }\\n]配置表格的列属性值,以数组形式配置
* 列标题:title,
* 列字段名:dataIndex,
* 列唯一标识:key,
* 列自定义渲染函数(当前值,行数据):render(text,record)
[\\n {\\n title:'',\\n dataIndex:'',\\n key:'',\\n render:(text,recode)=>{}\\n }\\n]* 配置筛选表单项项属性值,以数组形式配置
* 标题:label,
* 字段名:name,
* 字段类型:type (
input:单行输入框,
number:数字输入框,
textarea:多行输入框,
select:下拉选择框,
richtext:富文本输入框,
date:开始结束日期时间,(
range: false,
showTime: false,
)
custom:自定义节点
),
* 自定义节点渲染函数(当前表单实例):render(form)
[\\n {\\n label:'',\\n name:'',\\n type:'',\\n render:(form)=>{}\\n }\\n]配置详情的列属性值,以数组形式配置
* 列标题:title,
* 列字段名:dataIndex,
* 列占位数:span(当span:2时,就是占2列)
* 列自定义渲染函数(当前值,行数据):render(text,record)
[\\n {\\n title:'',\\n dataIndex:'',\\n render:(text,recode)=>{}\\n }\\n]api路径配置,如搜索:\\\"/user/search\\\"
{搜索:\\\"\\\",编辑:\\\"\\\",新增:\\\"\\\",删除:\\\"\\\"}Boolean 布尔 false/true
\",\"attrName\":\"启用新增\",\"attrJsCode\":\"\"},{\"attrId\":\"variable_GPmKRdbzpm\",\"attrMemo\":\"Boolean 布尔 false/true
\",\"attrName\":\"启用编辑\",\"attrJsCode\":\"\"},{\"attrId\":\"variable_sSSxjAwSnQ\",\"attrMemo\":\"Boolean 布尔 false/true
\",\"attrName\":\"启用删除\",\"attrJsCode\":\"\"},{\"attrId\":\"variable_E44FQ32E6A\",\"attrMemo\":\"\",\"attrName\":\"弹窗模式\",\"attrJsCode\":\"\"},{\"attrId\":\"variable_GF4MPsc3k6\",\"attrMemo\":\"* 配置筛选表单项项属性值,以数组形式配置
* 标题:label,
* 字段名:name,
* 字段类型:type (
input:单行输入框,
number:数字输入框,
textarea:多行输入框,
select:下拉选择框,
richtext:富文本输入框,
date:开始结束日期时间,(
range: false,
showTime: false,
)
custom:自定义节点
),
* 自定义节点渲染函数(当前表单实例):render(form)
[\\n {\\n label:'',\\n name:'',\\n type:'',\\n render:(form)=>{}\\n }\\n]配置表格的列属性值,以数组形式配置
* 列标题:title,
* 列字段名:dataIndex,
* 列唯一标识:key,
* 列自定义渲染函数(当前值,行数据):render(text,record)
[\\n {\\n title:'',\\n dataIndex:'',\\n key:'',\\n render:(text,recode)=>{}\\n }\\n]* 配置筛选表单项项属性值,以数组形式配置
* 标题:label,
* 字段名:name,
* 字段类型:type (
input:单行输入框,
number:数字输入框,
textarea:多行输入框,
select:下拉选择框,
richtext:富文本输入框,
date:开始结束日期时间,(
range: false,
showTime: false,
)
custom:自定义节点
),
* 自定义节点渲染函数(当前表单实例):render(form)
[\\n {\\n label:'',\\n name:'',\\n type:'',\\n render:(form)=>{}\\n }\\n]配置详情的列属性值,以数组形式配置
* 列标题:title,
* 列字段名:dataIndex,
* 列占位数:span(当span:2时,就是占2列)
* 列自定义渲染函数(当前值,行数据):render(text,record)
[\\n {\\n title:'',\\n dataIndex:'',\\n render:(text,recode)=>{}\\n }\\n]api路径配置,如搜索:\\\"/user/search\\\"
{搜索:\\\"\\\",编辑:\\\"\\\",新增:\\\"\\\",删除:\\\"\\\"}Boolean 布尔 false/true
\",\"attrType\":\"js\",\"attrJsCode\":\"true\"},{\"attrId\":\"variable_GPmKRdbzpm\",\"attrName\":\"启用编辑\",\"attrMemo\":\"Boolean 布尔 false/true
\",\"attrType\":\"js\",\"attrJsCode\":\"true\"},{\"attrId\":\"variable_sSSxjAwSnQ\",\"attrName\":\"启用删除\",\"attrMemo\":\"Boolean 布尔 false/true
\",\"attrType\":\"js\",\"attrJsCode\":\"true\"},{\"attrId\":\"variable_E44FQ32E6A\",\"attrName\":\"弹窗模式\",\"attrMemo\":\"\",\"attrJsCode\":\"\"},{\"attrId\":\"variable_GF4MPsc3k6\",\"attrName\":\"表格选择\",\"attrMemo\":\"* 配置筛选表单项项属性值,以数组形式配置
* 标题:label,
* 字段名:name,
* 字段类型:type (
input:单行输入框,
number:数字输入框,
textarea:多行输入框,
select:下拉选择框,
richtext:富文本输入框,
date:开始结束日期时间,(
range: false,
showTime: false,
)
custom:自定义节点
),
* 自定义节点渲染函数(当前表单实例):render(form)
[\\n {\\n label:'',\\n name:'',\\n type:'',\\n render:(form)=>{}\\n }\\n]配置表格的列属性值,以数组形式配置
* 列标题:title,
* 列字段名:dataIndex,
* 列唯一标识:key,
* 列自定义渲染函数(当前值,行数据):render(text,record)
[\\n {\\n title:'',\\n dataIndex:'',\\n key:'',\\n render:(text,recode)=>{}\\n }\\n]* 配置筛选表单项项属性值,以数组形式配置
* 标题:label,
* 字段名:name,
* 字段类型:type (
input:单行输入框,
number:数字输入框,
textarea:多行输入框,
select:下拉选择框,
richtext:富文本输入框,
date:开始结束日期时间,(
range: false,
showTime: false,
)
custom:自定义节点
),
* 自定义节点渲染函数(当前表单实例):render(form)
[\\n {\\n label:'',\\n name:'',\\n type:'',\\n render:(form)=>{}\\n }\\n]配置详情的列属性值,以数组形式配置
* 列标题:title,
* 列字段名:dataIndex,
* 列占位数:span(当span:2时,就是占2列)
* 列自定义渲染函数(当前值,行数据):render(text,record)
[\\n {\\n title:'',\\n dataIndex:'',\\n render:(text,recode)=>{}\\n }\\n]api路径配置,如搜索:\\\"/user/search\\\"
{搜索:\\\"\\\",编辑:\\\"\\\",新增:\\\"\\\",删除:\\\"\\\"}Boolean 布尔 false/true
\",\"attrType\":\"js\",\"attrJsCode\":\"false\"},{\"attrId\":\"variable_GPmKRdbzpm\",\"attrName\":\"启用编辑\",\"attrMemo\":\"Boolean 布尔 false/true
\",\"attrType\":\"js\",\"attrJsCode\":\"false\"},{\"attrId\":\"variable_sSSxjAwSnQ\",\"attrName\":\"启用删除\",\"attrMemo\":\"Boolean 布尔 false/true
\",\"attrType\":\"str\",\"attrJsCode\":\"\"},{\"attrId\":\"variable_E44FQ32E6A\",\"attrName\":\"弹窗模式\",\"attrMemo\":\"\",\"attrType\":\"js\",\"attrJsCode\":\"true\"},{\"attrId\":\"variable_GF4MPsc3k6\",\"attrName\":\"表格选择\",\"attrMemo\":\"* 配置筛选表单项项属性值,以数组形式配置
* 标题:label,
* 字段名:name,
* 字段类型:type (
input:单行输入框,
number:数字输入框,
textarea:多行输入框,
select:下拉选择框,
richtext:富文本输入框,
date:开始结束日期时间,(
range: false,
showTime: false,
)
custom:自定义节点
),
* 自定义节点渲染函数(当前表单实例):render(form)
[\\n {\\n label:'',\\n name:'',\\n type:'',\\n render:(form)=>{}\\n }\\n]配置表格的列属性值,以数组形式配置
* 列标题:title,
* 列字段名:dataIndex,
* 列唯一标识:key,
* 列自定义渲染函数(当前值,行数据):render(text,record)
[\\n {\\n title:'',\\n dataIndex:'',\\n key:'',\\n render:(text,recode)=>{}\\n }\\n]* 配置筛选表单项项属性值,以数组形式配置
* 标题:label,
* 字段名:name,
* 字段类型:type (
input:单行输入框,
number:数字输入框,
textarea:多行输入框,
select:下拉选择框,
richtext:富文本输入框,
date:开始结束日期时间,(
range: false,
showTime: false,
)
custom:自定义节点
),
* 自定义节点渲染函数(当前表单实例):render(form)
[\\n {\\n label:'',\\n name:'',\\n type:'',\\n render:(form)=>{}\\n }\\n]配置详情的列属性值,以数组形式配置
* 列标题:title,
* 列字段名:dataIndex,
* 列占位数:span(当span:2时,就是占2列)
* 列自定义渲染函数(当前值,行数据):render(text,record)
[\\n {\\n title:'',\\n dataIndex:'',\\n render:(text,recode)=>{}\\n }\\n]api路径配置,如搜索:\\\"/user/search\\\"
{搜索:\\\"\\\",编辑:\\\"\\\",新增:\\\"\\\",删除:\\\"\\\"}Boolean 布尔 false/true
\",\"devId\":\"variable_MJHtQRsnsR\"}},{\"id\":\"variable_GPmKRdbzpm\",\"name\":\"启用编辑\",\"type\":\"variable\",\"props\":{\"memo\":\"Boolean 布尔 false/true
\",\"devId\":\"variable_GPmKRdbzpm\"}},{\"id\":\"variable_sSSxjAwSnQ\",\"name\":\"启用删除\",\"type\":\"variable\",\"props\":{\"memo\":\"Boolean 布尔 false/true
\",\"devId\":\"variable_sSSxjAwSnQ\"}},{\"id\":\"variable_E44FQ32E6A\",\"name\":\"弹窗模式\",\"type\":\"variable\",\"props\":{}},{\"id\":\"variable_GF4MPsc3k6\",\"name\":\"表格选择\",\"type\":\"variable\",\"props\":{\"memo\":\"//登录返回结果 {code,errMsg,result}\\n//例如 {code:200,errMsg:'登录成功',result:用户信息}\\n(loginResult)=>{}* 配置筛选表单项项属性值,以数组形式配置
* 标题:label,
* 字段名:name,
* 字段类型:type (
input:单行输入框,
hidden:隐藏框,
password:密码输入框,
select:下拉选择框,
date:开始结束日期时间,(
range: false,
showTime: false,
)
custom:自定义节点
),
校验规则:rules
[{required:true}]* 自定义节点渲染函数(当前表单实例):render(form)
[\\n {\\n label:'',\\n name:'',\\n type:'',\\n render:(form)=>{}\\n }\\n]默认 100vh
\",\"devId\":\"variable_RzAnAASFSf\"}},{\"id\":\"variable_JtRDZm5CWx\",\"name\":\"成功提示\",\"type\":\"variable\",\"props\":{\"memo\":\"默认 登录成功
\",\"devId\":\"variable_JtRDZm5CWx\"}},{\"id\":\"variable_zX3QTGjZdB\",\"name\":\"按钮文本\",\"type\":\"variable\",\"props\":{\"memo\":\"默认 登录
\",\"devId\":\"variable_zX3QTGjZdB\"}}]},{\"id\":\"fPMethod_3f4hTK38Kw\",\"type\":\"fPMethod\",\"children\":[]},{\"id\":\"fPEvent_a2SRK2sJcN\",\"type\":\"fPEvent\",\"children\":[]}]},{\"id\":\"state_xHYpGfzK7D\",\"type\":\"state\",\"children\":[]},{\"id\":\"method_yYYQPaRpZM\",\"type\":\"method\",\"children\":[{\"id\":\"group_feCTBjRc5i\",\"name\":\"内部方法\",\"type\":\"group\",\"props\":{\"devId\":\"group_feCTBjRc5i\"},\"children\":[{\"id\":\"jsFunc_yzxa7y363p\",\"name\":\"点击登录\",\"type\":\"jsFunc\",\"props\":{\"devId\":\"jsFunc_yzxa7y363p\",\"jsCode\":\"console.log('点击登录', param)\\r\\n\\r\\nconst 登录成功回调 = _F('variable_d4hNkjfpGy').callMethod('get');\\r\\nconst 成功提示 = _F('variable_JtRDZm5CWx').callMethod('get') ?? '登录成功';\\r\\nconst 登录api地址 = _F('variable_b5m3rhhjcc').callMethod('get');\\r\\n\\r\\nconst request = _F('fApi_func').call;\\r\\n\\r\\n//发起网络请求\\r\\nrequest({\\r\\n url: 登录api地址,\\r\\n method: 'POST',\\r\\n data: {\\r\\n ...param.表单数据\\r\\n },\\r\\n success: (res) => {\\r\\n const data = res.data;\\r\\n // console.log('提交表单结果', data.code);\\r\\n if (data.code === 200) {\\r\\n _F('message_func').callMethod('success', 成功提示);\\r\\n if (typeof 登录成功回调 === 'function') 登录成功回调(data.result);\\r\\n } else\\r\\n _F('message_func').callMethod('error', data.errMsg);\\r\\n\\r\\n },\\r\\n fail: (err) => {\\r\\n console.log('提交表单结果', err);\\r\\n _F('message_func').callMethod('error', err);\\r\\n\\r\\n }\\r\\n})\",\"inParams\":[{\"name\":\"表单数据\",\"default\":null}],\"outParams\":[]}}]}]},{\"id\":\"dom_iGcYXY4a25\",\"type\":\"dom\",\"children\":[{\"id\":\"group_mcACNtmM6y\",\"name\":\"UI\",\"type\":\"group\",\"props\":{\"devId\":\"group_mcACNtmM6y\"},\"children\":[{\"id\":\"Row_GtHc74bQM8\",\"name\":\"a行1\",\"type\":\"Row\",\"props\":{\"align\":\"middle\",\"devId\":\"Row_GtHc74bQM8\",\"style\":{\"heightJs\":\"_F('variable_RzAnAASFSf').callMethod('get') ?? '100vh'\",\"heightType\":\"js\"},\"width\":\"100%\",\"height\":\"100%\",\"justify\":\"center\"},\"children\":[{\"id\":\"Col_HSRt4wKZnt\",\"name\":\"a列1\",\"type\":\"Col\",\"props\":{\"flex\":\"200px\",\"devId\":\"Col_HSRt4wKZnt\",\"style\":{}},\"children\":[{\"id\":\"span_HhxrWk2nE5\",\"name\":\"标题1\",\"type\":\"span\",\"props\":{\"devId\":\"span_HhxrWk2nE5\",\"style\":{\"display\":\"block\",\"fontSize\":\"24px\",\"fontWeight\":\"bold\",\"marginBottom\":\"20px\"},\"contentJs\":\"_F('variable_pEyhn6tKpF').callMethod('get')\",\"contentType\":\"js\"}},{\"id\":\"Form_QQYkFHHxhb\",\"name\":\"登录表单\",\"type\":\"Form\",\"props\":{\"devId\":\"Form_QQYkFHHxhb\",\"style\":{},\"layout\":\"vertical\",\"onFinishJs\":\"(values) => {\\r\\n _F('jsFunc_yzxa7y363p').call({表单数据:values})\\r\\n}\"},\"children\":[{\"id\":\"for_2nxrcF6486\",\"type\":\"for\",\"props\":{\"dataSourceJs\":\"_F('variable_iEFdp4bf5S').callMethod('get')\"},\"children\":[{\"id\":\"if_Nif5f6hmGk\",\"name\":\"单行输入框\",\"type\":\"if\",\"props\":{\"devId\":\"if_Nif5f6hmGk\",\"conditionJs\":\"_F('for_2nxrcF6486').callMethod('getItem')?.type === 'input'\"},\"children\":[{\"id\":\"form.item_DdkQF2wHSZ\",\"type\":\"form.item\",\"props\":{\"devId\":\"form.item_DdkQF2wHSZ\",\"nameJs\":\"_F('for_2nxrcF6486').callMethod('getItem')?.name\",\"labelJs\":\"_F('for_2nxrcF6486').callMethod('getItem')?.label\",\"rulesJs\":\"_F('for_2nxrcF6486').callMethod('getItem')?.rules || []\",\"nameType\":\"js\",\"labelType\":\"js\",\"initialValueJs\":\"_F('for_2nxrcF6486').callMethod('getItem')?.default\",\"valuePropNameJs\":\"(\\r\\n function(){\\r\\n const type = _F('for_2nxrcF6486').callMethod('getItem')?.type;\\r\\n if(type === 'upload')return 'fileList';\\r\\n else return 'value';\\r\\n }()\\r\\n)\",\"initialValueType\":\"js\",\"valuePropNameType\":\"js\",\"getValueFromEventJs\":\"(\\r\\n function () {\\r\\n const type = _F('for_2nxrcF6486').callMethod('getItem')?.type;\\r\\n if (type === 'upload') return (e) => {\\r\\n console.log('Upload event:', e);\\r\\n if (Array.isArray(e)) {\\r\\n return e;\\r\\n }\\r\\n return e?.fileList;\\r\\n };\\r\\n // else {\\r\\n // return (e) => {\\r\\n // console.log('else event:', e);\\r\\n // return e\\r\\n // };\\r\\n // }\\r\\n else{\\r\\n return;\\r\\n }\\r\\n }()\\r\\n)\"},\"children\":[{\"id\":\"input_YiAYkfncmp\",\"type\":\"input\",\"props\":{},\"children\":[]}]}]},{\"id\":\"if_jQyFhPH7er\",\"name\":\"密码输入框\",\"type\":\"if\",\"props\":{\"conditionJs\":\"_F('for_2nxrcF6486').callMethod('getItem')?.type === 'password'\"},\"children\":[{\"id\":\"form.item_3HyDhPcKfF\",\"type\":\"form.item\",\"props\":{\"nameJs\":\"_F('for_2nxrcF6486').callMethod('getItem')?.name\",\"labelJs\":\"_F('for_2nxrcF6486').callMethod('getItem')?.label\",\"rulesJs\":\"_F('for_2nxrcF6486').callMethod('getItem')?.rules || []\",\"nameType\":\"js\",\"labelType\":\"js\",\"initialValueJs\":\"_F('for_2nxrcF6486').callMethod('getItem')?.default\",\"valuePropNameJs\":\"(\\r\\n function(){\\r\\n const type = _F('for_2nxrcF6486').callMethod('getItem')?.type;\\r\\n if(type === 'upload')return 'fileList';\\r\\n else return 'value';\\r\\n }()\\r\\n)\",\"initialValueType\":\"js\",\"valuePropNameType\":\"js\",\"getValueFromEventJs\":\"(\\r\\n function () {\\r\\n const type = _F('for_2nxrcF6486').callMethod('getItem')?.type;\\r\\n if (type === 'upload') return (e) => {\\r\\n console.log('Upload event:', e);\\r\\n if (Array.isArray(e)) {\\r\\n return e;\\r\\n }\\r\\n return e?.fileList;\\r\\n };\\r\\n // else {\\r\\n // return (e) => {\\r\\n // console.log('else event:', e);\\r\\n // return e\\r\\n // };\\r\\n // }\\r\\n else{\\r\\n return;\\r\\n }\\r\\n }()\\r\\n)\"},\"children\":[{\"id\":\"input.password_twcBiQpfBe\",\"type\":\"input.password\",\"props\":{},\"children\":[]}]}]},{\"id\":\"if_8fF6M3ST6n\",\"name\":\"选择框\",\"type\":\"if\",\"props\":{\"conditionJs\":\"_F('for_2nxrcF6486').callMethod('getItem')?.type === 'select'\"},\"children\":[{\"id\":\"form.item_k2JfpjBHHm\",\"type\":\"form.item\",\"props\":{\"nameJs\":\"_F('for_2nxrcF6486').callMethod('getItem')?.name\",\"labelJs\":\"_F('for_2nxrcF6486').callMethod('getItem')?.label\",\"rulesJs\":\"_F('for_2nxrcF6486').callMethod('getItem')?.rules || []\",\"nameType\":\"js\",\"labelType\":\"js\",\"initialValueJs\":\"_F('for_2nxrcF6486').callMethod('getItem')?.default\",\"valuePropNameJs\":\"(\\r\\n function(){\\r\\n const type = _F('for_2nxrcF6486').callMethod('getItem')?.type;\\r\\n if(type === 'upload')return 'fileList';\\r\\n else return 'value';\\r\\n }()\\r\\n)\",\"initialValueType\":\"js\",\"valuePropNameType\":\"js\",\"getValueFromEventJs\":\"(\\r\\n function () {\\r\\n const type = _F('for_2nxrcF6486').callMethod('getItem')?.type;\\r\\n if (type === 'upload') return (e) => {\\r\\n console.log('Upload event:', e);\\r\\n if (Array.isArray(e)) {\\r\\n return e;\\r\\n }\\r\\n return e?.fileList;\\r\\n };\\r\\n // else {\\r\\n // return (e) => {\\r\\n // console.log('else event:', e);\\r\\n // return e\\r\\n // };\\r\\n // }\\r\\n else{\\r\\n return;\\r\\n }\\r\\n }()\\r\\n)\"},\"children\":[{\"id\":\"select_SAEnB5YKse\",\"type\":\"select\",\"props\":{\"optionsJs\":\"_F('for_2nxrcF6486').callMethod('getItem')?.options || []\"},\"children\":[]}]}]},{\"id\":\"if_zz8mpr3fmx\",\"name\":\"隐藏\",\"type\":\"if\",\"props\":{\"devId\":\"if_zz8mpr3fmx\",\"conditionJs\":\"_F('for_2nxrcF6486').callMethod('getItem')?.type === 'hidden'\"},\"children\":[{\"id\":\"form.item_W8AexecNDQ\",\"type\":\"form.item\",\"props\":{\"devId\":\"form.item_W8AexecNDQ\",\"hidden\":true,\"nameJs\":\"_F('for_2nxrcF6486').callMethod('getItem')?.name\",\"labelJs\":\"_F('for_2nxrcF6486').callMethod('getItem')?.label\",\"rulesJs\":\"_F('for_2nxrcF6486').callMethod('getItem')?.rules || []\",\"nameType\":\"js\",\"labelType\":\"js\",\"initialValueJs\":\"_F('for_2nxrcF6486').callMethod('getItem')?.default\",\"valuePropNameJs\":\"(\\r\\n function(){\\r\\n const type = _F('for_2nxrcF6486').callMethod('getItem')?.type;\\r\\n if(type === 'upload')return 'fileList';\\r\\n else return 'value';\\r\\n }()\\r\\n)\",\"initialValueType\":\"js\",\"valuePropNameType\":\"js\",\"getValueFromEventJs\":\"(\\r\\n function () {\\r\\n const type = _F('for_2nxrcF6486').callMethod('getItem')?.type;\\r\\n if (type === 'upload') return (e) => {\\r\\n console.log('Upload event:', e);\\r\\n if (Array.isArray(e)) {\\r\\n return e;\\r\\n }\\r\\n return e?.fileList;\\r\\n };\\r\\n // else {\\r\\n // return (e) => {\\r\\n // console.log('else event:', e);\\r\\n // return e\\r\\n // };\\r\\n // }\\r\\n else{\\r\\n return;\\r\\n }\\r\\n }()\\r\\n)\"},\"children\":[]}]}]},{\"id\":\"form.item_eWBZXRMsaZ\",\"name\":\"登录按钮\",\"type\":\"form.item\",\"props\":{\"devId\":\"FormItem_BTy7zQrskQ\",\"label\":\"\",\"style\":{\"marginBottom\":30}},\"children\":[{\"id\":\"button_hJKYe84Y2h\",\"name\":\"登录按钮\",\"type\":\"button\",\"props\":{\"devId\":\"button_hJKYe84Y2h\",\"style\":{\"width\":\"300px\",\"height\":\"40px\"},\"value\":\"登录\",\"valueJs\":\"_F('variable_zX3QTGjZdB').callMethod('get') ?? '登录'\",\"htmlType\":\"submit\",\"valueType\":\"js\",\"buttonType\":\"primary\"}}]}]}]}]}]}]}]},{\"id\":\"backend_xb26sQsPWf\",\"name\":\"后台\",\"type\":\"backend\",\"props\":{\"style\":{\"height\":\"200px\",\"backgroundColor\":\"red\"}},\"children\":[{\"id\":\"props_fYp7kWD6ei\",\"type\":\"props\",\"children\":[{\"id\":\"bPAttr_kBTCQB7T6r\",\"type\":\"bPAttr\",\"children\":[]},{\"id\":\"bPMethod_ZBkwhdHcp7\",\"type\":\"bPMethod\",\"children\":[]}]},{\"id\":\"state_KpFEjFw5ji\",\"type\":\"state\",\"children\":[]},{\"id\":\"services_AEADWNRiyT\",\"type\":\"services\",\"children\":[]}]},{\"id\":\"modules_zrPs7cwzHx\",\"name\":\"模块\",\"type\":\"modules\",\"props\":{\"devId\":\"modules_zrPs7cwzHx\"},\"children\":[]}],\"appModuleVersion\":9},{\"id\":\"module_sQr2GFxeBY\",\"name\":\"PC左侧导航菜单模块\",\"type\":\"module\",\"props\":{\"appModuleId\":\"1236\",\"appModuleVersion\":3},\"children\":[{\"id\":\"config_G4xhiBaMNP\",\"name\":\"管理后台左侧动态导航组件\",\"type\":\"config\",\"props\":{\"style\":{}}},{\"id\":\"front_Jb3Tr5ZK8k\",\"name\":\"前台\",\"type\":\"front\",\"props\":{\"devId\":\"front_Jb3Tr5ZK8k\",\"style\":{\"width\":\"100%\",\"height\":\"100%\",\"display\":\"flex\",\"overflow\":\"hidden auto\",\"alignItems\":\"flex-start\",\"flexDirection\":\"column\",\"backgroundColor\":\"#ffffff\"},\"onLoadJs\":\"() => {\\r\\n const loadMenu = _F('variable_emSKKQ7xjs').callMethod('get');\\r\\n if (loadMenu) {\\r\\n _F('jsFunc_P3XXPzBecT').call({ 上级菜单ID: 'all' })\\r\\n }\\r\\n}\"},\"children\":[{\"id\":\"props_pJXHBH8MFQ\",\"type\":\"props\",\"children\":[{\"id\":\"fPAttr_Ss2Z4QMcyi\",\"type\":\"fPAttr\",\"children\":[{\"id\":\"variable_emSKKQ7xjs\",\"name\":\"初始化加载菜单\",\"type\":\"variable\",\"props\":{\"memo\":\"默认为 false。布尔值 false/true
\",\"devId\":\"variable_emSKKQ7xjs\"}},{\"id\":\"variable_PeiSzmQwDb\",\"name\":\"菜单api地址\",\"type\":\"variable\",\"props\":{\"devId\":\"variable_PeiSzmQwDb\"}},{\"id\":\"variable_n7aWAQX3ke\",\"name\":\"主题\",\"type\":\"variable\",\"props\":{\"memo\":\"默认是light 可选值:light(浅色)/dark(深色)
\",\"devId\":\"variable_n7aWAQX3ke\"}},{\"id\":\"variable_wKMW5Rfz3x\",\"name\":\"字段标识\",\"type\":\"variable\",\"props\":{\"memo\":\"//title: 菜单显示标题字段 \\n//pId: 父菜单ID\\n//key: 菜单唯一标识\\n{ title:'title', pId: 'pId', key: '_id' }//clickRes: {\\r\\n \\\"id\\\": 1,\\r\\n \\\"key\\\": \\\"1\\\",\\r\\n \\\"pId\\\": 0,\\r\\n \\\"title\\\": \\\"首页\\\",\\r\\n \\\"value\\\": 1,\\r\\n \\\"dataRef\\\": {}\\r\\n}\\n(clickRes)=>{}[\\n {\\n label: '首页',\\n key: 'home',\\n }\\n][\\n {\\n label: '退出登录',\\n key: 'logout',\\n }\\n]菜单类型,现在支持垂直、水平、和内嵌模式三种\\t\\nvertical | horizontal | inline\\t\\n默认vertical[{_id:1,title:'首页',pId:0}]直接填写菜单key
\",\"devId\":\"variable_dj2EQcpXXE\"}},{\"id\":\"variable_p2cYa4Mm6p\",\"name\":\"初始展开key数组\",\"type\":\"variable\",\"props\":{\"memo\":\"['key']