当前位置: 首页 > news >正文

客户端网站建设文档做简图的网站

客户端网站建设文档,做简图的网站,网站地图灰色效果的怎么做的,如何自己做一个网页基于springboot vue3 elementPlus实现树形结构数据的添加、删除和页面展示 效果如下 代码如下#xff0c;业务部分可以自行修改 java后台代码 import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.daztk.mes.common.annotation.LogOperation…基于springboot vue3 elementPlus实现树形结构数据的添加、删除和页面展示 效果如下 代码如下业务部分可以自行修改 java后台代码 import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.daztk.mes.common.annotation.LogOperation; import com.daztk.mes.common.utils.Result; import com.daztk.mes.module.cad.dto.CadPartDto; import com.daztk.mes.module.cad.entity.CadPart; import com.daztk.mes.module.cad.entity.CadRelation; import com.daztk.mes.module.cad.service.ICadPartService; import com.daztk.mes.module.cad.service.ICadRelationService; import org.apache.commons.collections4.CollectionUtils; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.web.bind.annotation.*;import java.util.*; import java.util.stream.Collectors;/*** p* 零部件 * /p** since 2024-05-30*/ RestController RequestMapping(cad/part) public class CadPartController {AutowiredICadPartService service;AutowiredICadRelationService relationService;/*** 获取所有零部件* param dto* return*/GetMapping(listAll)public Result listAll(CadPartDto dto){ListCadPart list new ArrayList();try {list service.getList(dto);if(CollectionUtils.isNotEmpty(list)){list getTree(list);}} catch (Exception e) {e.printStackTrace();return new Result().err();}return new Result().ok().setData(list);}PostMapping(add)LogOperation(tags CAD管理-零部件,serviceClass ICadPartService.class,entityClass CadPart.class)public Result add(RequestBody CadPart cadPart){try {service.saveData(cadPart);} catch (Exception e) {e.printStackTrace();return new Result().err();}return new Result().ok().setData(cadPart);}DeleteMapping(delete)LogOperation(tags CAD管理-零部件,serviceClass ICadPartService.class,entityClass CadPart.class)public Result delete(RequestBody Long[] ids){try {ListLong idList Arrays.asList(ids);ListLong list recurveIdList(idList);service.removeByIds(list);} catch (Exception e) {e.printStackTrace();return new Result().err();}return new Result().ok();}/*** 递归获取id树** param ids* return*/public ListLong recurveIdList(ListLong ids){ListLong list new ArrayList();for(Long id: ids){list.add(id);//关系表查子集ListCadRelation cadRelations relationService.list(new QueryWrapperCadRelation().eq(parent_id, id));if(CollectionUtils.isNotEmpty(cadRelations)){ListLong partIds cadRelations.stream().map(CadRelation::getPartId).collect(Collectors.toList());ListLong list1 recurveIdList(partIds);list.addAll(list1);}}return list;}public ListCadPart getTree(ListCadPart treeList){ListCadPart collect treeList.stream().filter(item - item.getParentId() 0)//构造最外层节点即id0的节点.map(item - {item.setChildren(getChildren(item, treeList));//id0的节点就为他设置子节点return item;}).collect(Collectors.toList());return collect;}private static ListCadPart getChildren(CadPart treeEntity, ListCadPart treeEntityList) {ListCadPart collect treeEntityList.stream().filter(item - item.getParentId().equals(treeEntity.getId()))//判断当前节点的父id是不是要设置节点的id.map(item - {item.setChildren(getChildren(item, treeEntityList));//如果是 为其设置子节点 通过递归 为每个除了最外层节点的节点设置子节点return item;}).collect(Collectors.toList());return collect;} 前端代码 templatediv classcustom-tree-container!-- pUsing render-content/pel-tree stylemax-width: 600px :datadataSource show-checkbox node-keyid default-expand-all:expand-on-click-nodefalse :render-contentrenderContent / --el-button typeprimary classadd-btn iconel-icon-circle-plus-outline clickaddEdit新增零部件/el-buttondiv stylepadding-top: 20px;el-tree stylemax-width: 600px; :datadataSource show-checkbox node-keyid default-expand-all:expand-on-click-nodefalse reftreeRef :propsmapPropstemplate #default{ node, data }span classcustom-tree-nodespan{{ node.label }}/spanspana clickappend(data) 增加子节点 /aa stylemargin-left: 8px clickremoveNode(node, data) 删除 /a/span/span/template/el-tree/divel-dialog :titletitle v-modeldrawer width600pxel-form :modelpartForm :rulesrules refruleFormsss label-width120px classdemo-partFormel-form-item label数模号 proppartNoel-input v-modelpartForm.partNo clearable/el-input/el-form-itemel-form-item label版本号 proppartRevel-input v-modelpartForm.partRev clearable/el-input/el-form-itemel-form-item label名称 propnameel-input v-modelpartForm.name clearable/el-input/el-form-itemel-form-item label中文名称 propcNameel-input v-modelpartForm.cName clearable/el-input/el-form-itemel-form-item label材料 propmaterialel-input v-modelpartForm.material clearable/el-input/el-form-itemel-form-item label规格 propgaugeel-input v-modelpartForm.gauge clearable/el-input/el-form-itemel-form-item label重量 propmassqtyel-input v-modelpartForm.massqty clearable/el-input/el-form-itemel-form-item label数据类型 proppartTypeel-input v-modelpartForm.partType clearable/el-input/el-form-item/el-formtemplate #footerspan classdialog-footerel-button clickcancelEdit取 消/el-buttonel-button typeprimary clicksaveEdit确 定/el-button/span/template/el-dialog/div /templatescript import { reactive, ref, toRefs, unref, onMounted } from vue import { add, remove, listAll } from api/cad/part import { ElMessage } from element-plusexport default {name: part,setup() {const state reactive({drawer: false,title: ,query: {partName: },dataSource: [// {// id: 1,// label: Level one 1,// children: []// // children: [// // {// // id: 4,// // label: Level two 1-1,// // children: [// // {// // id: 9,// // label: Level three 1-1-1// // }// // ]// // }// // ]// }],mapProps: {id: id,label: name,children: children}})const treeRef ref(null)const append (data) {state.drawer truestate.title 添加子节点partForm.parentId data.idpartForm.partNo partForm.partRev partForm.name partForm.cName partForm.material partForm.gauge partForm.massqty partForm.partType // debugger// 获取当前节点// const currentNode treeRef.value.getNode(data.id)// // 获取当前节点在树中的索引// // const currentIndex getNod(data.id)// // // 如果索引大于 0获取前一个节点// // if (currentIndex 0) {// // const prevNode getNodeAt(currentIndex - 1);// // const prevId prevNode.id; // // // 处理前一个节点的 id// // }// let treeNodeId data.$treeNodeId //节点id// console.info(data)// // alert(当前iddata.id)// // alert(data.$treeNodeId)// let id null// if (!data.children || data.children.length 0) {// //没有子节点// id data.id * 100 1// } else {// id data.id * 100 1 data.children.length// }// const newChild { id: id, label: data.label - id, children: [] }// const child [{ id: id, label: data.label - id, children: [] }]// data.children child// data.push()// state.dataSource [data];}const removeNode (node, data) {const ids []ids.push(data.id)remove(ids).then(res {if (res.code 200) {ElMessage({type: success,message: 删除成功})getPartTableData(state.query)} else {ElMessage({type: error,message: res.msg})}})// dataSource.value [...dataSource.value];}const partForm reactive({partNo: ,partRev: ,name: ,cName: ,material: ,gauge: ,massqty: ,partType: ,parentId: })const ruleFormsss ref(null)const addEdit () {state.drawer truestate.title 添加零部件partForm.parentId partForm.partNo partForm.partRev partForm.name partForm.cName partForm.material partForm.gauge partForm.massqty partForm.partType }// 取消const cancelEdit () {state.drawer falsesetTimeout(() {const form unref(partFormsss)form.resetFields()}, 100)}// 新建/编辑零部件const saveEdit async () {const form unref(ruleFormsss)if (!form) returntry {await form.validate()if (state.title 添加零部件 || state.title 添加子节点) {addSavePart()}if (state.title 编辑零部件) {updateSavePart()}state.drawer false} catch (error) {console.error(error)ElMessage.error(抱歉您有必填项未填)}}const addSavePart () {// let quantity partForm.quantity partForm.iQuantityconst data {partNo: partForm.partNo,partRev: partForm.partRev,name: partForm.name,cName: partForm.cName,material: partForm.material,gauge: partForm.gauge,massqty: partForm.massqty,partType: partForm.partType,parentId: partForm.parentId}add(data).then(res {state.drawer false// const treeData {// id: res.data.id,// label: res.data.name,// children: []// }// state.dataSource res.datagetPartTableData(state.query)ElMessage.success(恭喜您添加成功)})}const updateSavePart () {const data {id: state.handleId,name: partForm.name,manager: partForm.manager,startDate: partForm.startDate,endDate: partForm.endDate}update(data).then(res {state.drawer falsegetPartTableData(state.query)ElMessage.success(恭喜您保存成功)})}const rules {name: [{ required: true, message: 此处为必填项, trigger: blur }]}function getPartTableData() {listAll(state.query).then(res {state.dataSource res.data})}onMounted(() {getPartTableData()})return {...toRefs(state),append,removeNode,addEdit,cancelEdit,treeRef,partForm,ruleFormsss,saveEdit,rules}} }/scriptstyle langscss .el-tree-node {margin-top: 8px; } .custom-tree-node {flex: 1;display: flex;align-items: center;justify-content: space-between;font-size: 18px;padding-right: 8px; }/style
http://www.dnsts.com.cn/news/278580.html

相关文章:

  • 单页展示网站房产网怎么查到房产
  • 南京网站优化报价天元建设集团有限公司赣榆分公司
  • 宁波专业的网站建设12306网站做的好还是百度做的好
  • 常州网站制作czyzj天马行空网站建设
  • 常见的网站模式网络营销的实现方式包括
  • 天津市网站制作 公司如何 攻击网站
  • 360搜索怎么做网站自然优化彩虹云主机
  • 创建一个网站的一般步骤要点兰溪市网站建设公司
  • 徐州网站建设培训wordpress多张产品图片
  • 招标网站的服务费怎么做分录佛山企业网站建设教程
  • 做外贸用什么网站比较好wordpress link rel
  • 阳春网站制作南昌网站建设品牌
  • 韩国 网站设计线下推广方法有哪些
  • 网站备份文件wordpress+设置七牛
  • 做效果图有哪些网站ppt模板网站排行榜
  • 做彩票网站犯法百度贴吧论坛
  • 现在做网站怎么样织梦源码怎样做单页网站
  • php网站开发技术与开源系统应用 实训指导书1688货源网一件代发玩具
  • 婚庆网站搭建的流程快手自媒体平台注册入口
  • 网站建设费交文化事业农业公司注册流程及费用
  • 聊城网站制作工作室wordpress 上传安装
  • 有经验的武进网站建设哪里有学网页设计
  • 做产品网站营销推广wordpress4.5注册插件
  • 格尔木哪里有做网站的互动营销型网站建设
  • 怎么样做一家装修竞标网站怎样做自己的网站
  • seo托管seo关键词排名
  • 正规网站建设费用做网站软件排名
  • 乐清建设网站哪家好做的做的比较好的网站
  • led 网站建设龙岩做网站开发哪家做的好
  • jsp简述网站开发流程图电商入门基础知识