【泛微低代码开发平台e-builder】控制eb表单按钮显示(请求拦截方式)
控制eb表单按钮显示(请求拦截方式)业务需求用户想通过目前eb提供的按钮权限配置项外的方式根据实际业务逻辑控制表单按钮显示实现方式给当前表单所有按钮开启所有人权限ecode使用 axios.interceptors 对eb的 /api/ebuilder/form/data/getFormButtons 接口返回数据进行拦截处理在拦截到数据后请求自行编写的业务按钮过滤逻辑接口该接口需要返回当前用户不能进行操作的按钮id遍历拦截的按钮数据将用户不能操作的按钮清除再返回给前端组件渲染达到根据业务控制按钮显示的目的具体示例代码// 按钮拦截axios.interceptors.request.use(req{if(req.url.includes(/api/ebuilder/form/data/getFormButtons)){window.sessionStorage.setItem(governTaskDataId,req.data.dataId);}returnreq;},// 对发起的请求进行处理方法写在{}中req是请求参数err{returnPromise.reject(err);},// 出现请求错误时进行的处理);axios.interceptors.response.use(function(response){// 响应状态码为 2xx 时触发成功的回调形参中的 response 是“成功的结果”letbuttonData{};if(response.status200response.config.url.includes(/api/ebuilder/form/data/getFormButtons)){letformIdwindow.ebdFormSdkwindow.ebdFormSdk.getObjId();letdataIdwindow.sessionStorage.getItem(governTaskDataId);if(!formId||!dataId)returnresponse;varoldButtonMapnewMap();letnewButtonArraynewArray();response.data.data.forEach((item,index){oldButtonMap.set(item.id,item);});returnnewPromise(function(resolve,reject){weappUtils.request({url:/api/government/base/getCurrentUserCannotOperateButtonId?dataIddataIdformIdformId,method:post,}).then((res){if(res.statusObject.keys(res.data).length0res.data.isGovernApp){res.buttonIdSetres.data?.buttonIdSet.map((item){if(oldButtonMap.has(item)0){oldButtonMap.delete(item);}});for(letitemofoldButtonMap.entries()){newButtonArray.push(item[1]);}response.data.datanewButtonArray;console.log(response);resolve({...response,});}else{resolve({...response,});}}).catch((){resolve({...response,});});});// return response;}else{returnresponse;}},function(error){// console.log(error)// 响应状态码不是 2xx 时触发失败的回调形参中的 error 是“失败的结果”returnPromise.reject(error);},);