当前位置: 首页 > Web前端 > HTML5

售后业务管理平台项目总结

时间:2023-04-05 23:37:52 HTML5

后台传输的json数据通过id和parentId建立树形结构,这里为了不影响阅读,删除了一些不需要的数据格式{"httpCode":200,"code":200,"message":"操作成功","data":{"orgList":[//租户下所有部门{"id":88,//部门id"name":"部门1",//部门名称"orgCode":"/38/88/",//部门代码,部门格式为/**/,二级部门格式为/**/**/,依此类推"parentId":null,//部门上级部门id,如果parentId为Null表示该部门为顶层部门"tenantId":38,//TenantId"binds":0//该部门下绑定的车辆数量},{"id":90,"name":"part2","orgCode":"/38/88/90/","parentId":88,"tenantId":38,"binds":0},{“id”:92,“name”:“part3”,“orgCode”:“/38/88/90/92/”,“parentId”:90,“tenantId”:38,“binds”:0},{“编号”:93,“name”:“part4”,“orgCode”:“/38/88/90/92/93/”,“parentId”:92,“tenantId”:38,“binds”:0},{“id”:96,"name":"Department2","orgCode":"/38/96/","parentId":null,"tenantId":38,"binds":1},{"id":98,"name":"part22","orgCode":"/38/96/98/","parentId":96,"tenantId":38,"binds":1},{"id":100,"name":"111","orgCode":"/38/88/90/92/93/100/","parentId":93,"tenantId":38,"binds":0}],"tenantInfo":{//租户信息"id":38,//租户Id"name":"测试租户",//租户名称"orgCode":"/38/",//租户代码"parentId":null,//因为租户在设计中是顶层部门,所以不会有parentId"tenantId":38,//租户id"binds":1//下面绑定的车辆总数tenant}}}这里,后台没有直接返回树结构,因为有很多地方要用到这个接口,只是在这个页面需要做成树结构,所以数据格式需要通过前端。完成后的效果如下。orgCode是正则的,所以创建两个Map结构,level通过orgCode将数据分成不同的层级,然后以level为key值存储数据,childrenNode以parnetId为key值存储数据,存储方式为完成后,通过findSuperiors通过parnetId从高到低依次递归填充childrenNode中的数据到level//递归结构树findSuperiors(max,map,children,min){if(max{if(children.get(item['parentId']).length>0){item.children=children.get(item['id']);}})this.findSuperiors(max-1,map,children,min);}//请求后台数据services.get_tree(this.id).then(res=>{this.treeData=[];letchildrenNode=newMap(),level=newMap();for(letkeyofres.orgList){letparentId=key['parentId'];if(childrenNode.has(parentId)){childrenNode.get(parentId).push(key);}else{childrenNode.set(parentId,[]);childrenNode.get(parentId).push(key);}letlev=key['orgCode'].split('/').length-3;如果(level.has(lev)){level.get(lev).push(key);}else{level.set(lev,[]);key.children=[];level.get(lev).push(key);}}让min=Math.min.apply(Math,[...level.keys()]),max=Math.max.apply(Math,[...level.keys()]);this.findSuperiors(max,level,childrenNode,min);如果(res.tenantInfo){res.tenantInfo.children=[];res.tenantInfo.children=level.get(min);this.treeData.push(res.tenantInfo);}else{this.treeData=level.get(min);}})