ruoyi-demo/src/main/java/com/ruoyi/demo/bo/TestTreeAddBo.java
¶Ô±ÈÐÂÎļþ @@ -0,0 +1,39 @@ package com.ruoyi.demo.bo; import io.swagger.annotations.ApiModel; import io.swagger.annotations.ApiModelProperty; import com.fasterxml.jackson.annotation.JsonFormat; import lombok.Data; import java.util.Date; import javax.validation.constraints.*; /** * æµè¯æ 表添å 对象 test_tree * * @author Lion Li * @date 2021-05-30 */ @Data @ApiModel("æµè¯æ 表添å 对象") public class TestTreeAddBo { /** ç¶id */ @ApiModelProperty("ç¶id") private Long parentId; /** é¨é¨id */ @ApiModelProperty("é¨é¨id") private Long deptId; /** ç¨æ·id */ @ApiModelProperty("ç¨æ·id") private Long userId; /** æ èç¹å */ @ApiModelProperty("æ èç¹å") @NotBlank(message = "æ èç¹åä¸è½ä¸ºç©º") private String treeName; } ruoyi-demo/src/main/java/com/ruoyi/demo/bo/TestTreeEditBo.java
¶Ô±ÈÐÂÎļþ @@ -0,0 +1,47 @@ package com.ruoyi.demo.bo; import io.swagger.annotations.ApiModel; import io.swagger.annotations.ApiModelProperty; import com.fasterxml.jackson.annotation.JsonFormat; import lombok.Data; import java.util.Date; import javax.validation.constraints.*; /** * æµè¯æ 表ç¼è¾å¯¹è±¡ test_tree * * @author Lion Li * @date 2021-05-30 */ @Data @ApiModel("æµè¯æ 表ç¼è¾å¯¹è±¡") public class TestTreeEditBo { /** ä¸»é® */ @ApiModelProperty("主é®") private Long id; /** ç¶id */ @ApiModelProperty("ç¶id") private Long parentId; /** é¨é¨id */ @ApiModelProperty("é¨é¨id") private Long deptId; /** ç¨æ·id */ @ApiModelProperty("ç¨æ·id") private Long userId; /** æ èç¹å */ @ApiModelProperty("æ èç¹å") @NotBlank(message = "æ èç¹åä¸è½ä¸ºç©º") private String treeName; } ruoyi-demo/src/main/java/com/ruoyi/demo/bo/TestTreeQueryBo.java
¶Ô±ÈÐÂÎļþ @@ -0,0 +1,42 @@ package com.ruoyi.demo.bo; import io.swagger.annotations.ApiModel; import io.swagger.annotations.ApiModelProperty; import lombok.Data; import lombok.EqualsAndHashCode; import java.util.Date; import com.ruoyi.common.core.domain.BaseEntity; /** * æµè¯æ 表å页æ¥è¯¢å¯¹è±¡ test_tree * * @author Lion Li * @date 2021-05-30 */ @Data @EqualsAndHashCode(callSuper = true) @ApiModel("æµè¯æ 表å页æ¥è¯¢å¯¹è±¡") public class TestTreeQueryBo extends BaseEntity { /** åé¡µå¤§å° */ @ApiModelProperty("å页大å°") private Integer pageSize; /** å½åé¡µæ° */ @ApiModelProperty("å½å页æ°") private Integer pageNum; /** æåºå */ @ApiModelProperty("æåºå") private String orderByColumn; /** æåºçæ¹ådescæè asc */ @ApiModelProperty(value = "æåºçæ¹å", example = "asc,desc") private String isAsc; /** æ èç¹å */ @ApiModelProperty("æ èç¹å") private String treeName; } ruoyi-demo/src/main/java/com/ruoyi/demo/controller/TestTreeController.java
¶Ô±ÈÐÂÎļþ @@ -0,0 +1,107 @@ package com.ruoyi.demo.controller; import com.ruoyi.common.annotation.Log; import com.ruoyi.common.core.controller.BaseController; import com.ruoyi.common.core.domain.AjaxResult; import com.ruoyi.common.enums.BusinessType; import com.ruoyi.common.utils.poi.ExcelUtil; import com.ruoyi.demo.bo.TestTreeAddBo; import com.ruoyi.demo.bo.TestTreeEditBo; import com.ruoyi.demo.bo.TestTreeQueryBo; import com.ruoyi.demo.service.ITestTreeService; import com.ruoyi.demo.vo.TestTreeVo; import io.swagger.annotations.Api; import io.swagger.annotations.ApiOperation; import lombok.RequiredArgsConstructor; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.security.access.prepost.PreAuthorize; import org.springframework.validation.annotation.Validated; import org.springframework.web.bind.annotation.*; import javax.validation.constraints.NotEmpty; import javax.validation.constraints.NotNull; import java.util.Arrays; import java.util.List; /** * æµè¯æ 表Controller * * @author Lion Li * @date 2021-05-30 */ @Api(value = "æµè¯æ 表æ§å¶å¨", tags = {"æµè¯æ 表管ç"}) @RequiredArgsConstructor(onConstructor_ = @Autowired) @RestController @RequestMapping("/demo/tree") public class TestTreeController extends BaseController { private final ITestTreeService iTestTreeService; /** * æ¥è¯¢æµè¯æ 表å表 */ @ApiOperation("æ¥è¯¢æµè¯æ 表å表") @PreAuthorize("@ss.hasPermi('demo:tree:list')") @GetMapping("/list") public AjaxResult<List<TestTreeVo>> list(@Validated TestTreeQueryBo bo) { return AjaxResult.success(iTestTreeService.queryList(bo)); } /** * å¯¼åºæµè¯æ 表å表 */ @ApiOperation("å¯¼åºæµè¯æ 表å表") @PreAuthorize("@ss.hasPermi('demo:tree:export')") @Log(title = "æµè¯æ 表", businessType = BusinessType.EXPORT) @GetMapping("/export") public AjaxResult<TestTreeVo> export(@Validated TestTreeQueryBo bo) { List<TestTreeVo> list = iTestTreeService.queryList(bo); ExcelUtil<TestTreeVo> util = new ExcelUtil<TestTreeVo>(TestTreeVo.class); return util.exportExcel(list, "æµè¯æ 表"); } /** * è·åæµè¯æ 表详ç»ä¿¡æ¯ */ @ApiOperation("è·åæµè¯æ 表详ç»ä¿¡æ¯") @PreAuthorize("@ss.hasPermi('demo:tree:query')") @GetMapping("/{id}") public AjaxResult<TestTreeVo> getInfo(@NotNull(message = "主é®ä¸è½ä¸ºç©º") @PathVariable("id") Long id) { return AjaxResult.success(iTestTreeService.queryById(id)); } /** * æ°å¢æµè¯æ 表 */ @ApiOperation("æ°å¢æµè¯æ 表") @PreAuthorize("@ss.hasPermi('demo:tree:add')") @Log(title = "æµè¯æ 表", businessType = BusinessType.INSERT) @PostMapping() public AjaxResult<Void> add(@Validated @RequestBody TestTreeAddBo bo) { return toAjax(iTestTreeService.insertByAddBo(bo) ? 1 : 0); } /** * ä¿®æ¹æµè¯æ 表 */ @ApiOperation("ä¿®æ¹æµè¯æ 表") @PreAuthorize("@ss.hasPermi('demo:tree:edit')") @Log(title = "æµè¯æ 表", businessType = BusinessType.UPDATE) @PutMapping() public AjaxResult<Void> edit(@Validated @RequestBody TestTreeEditBo bo) { return toAjax(iTestTreeService.updateByEditBo(bo) ? 1 : 0); } /** * å 餿µè¯æ 表 */ @ApiOperation("å 餿µè¯æ 表") @PreAuthorize("@ss.hasPermi('demo:tree:remove')") @Log(title = "æµè¯æ 表" , businessType = BusinessType.DELETE) @DeleteMapping("/{ids}") public AjaxResult<Void> remove(@NotEmpty(message = "主é®ä¸è½ä¸ºç©º") @PathVariable Long[] ids) { return toAjax(iTestTreeService.deleteWithValidByIds(Arrays.asList(ids), true) ? 1 : 0); } } ruoyi-demo/src/main/java/com/ruoyi/demo/domain/TestTree.java
¶Ô±ÈÐÂÎļþ @@ -0,0 +1,67 @@ package com.ruoyi.demo.domain; import com.baomidou.mybatisplus.annotation.*; import lombok.Data; import lombok.NoArgsConstructor; import lombok.experimental.Accessors; import java.io.Serializable; import java.util.Date; import java.math.BigDecimal; import com.ruoyi.common.annotation.Excel; /** * æµè¯æ 表对象 test_tree * * @author Lion Li * @date 2021-05-30 */ @Data @NoArgsConstructor @Accessors(chain = true) @TableName("test_tree") public class TestTree implements Serializable { private static final long serialVersionUID=1L; /** ä¸»é® */ @TableId(value = "id") private Long id; /** ç¶id */ private Long parentId; /** é¨é¨id */ private Long deptId; /** ç¨æ·id */ private Long userId; /** æ èç¹å */ private String treeName; /** çæ¬ */ @Version private Long version; /** å建æ¶é´ */ @TableField(fill = FieldFill.INSERT) private Date createTime; /** å建人 */ @TableField(fill = FieldFill.INSERT) private String createBy; /** æ´æ°æ¶é´ */ @TableField(fill = FieldFill.INSERT_UPDATE) private Date updateTime; /** æ´æ°äºº */ @TableField(fill = FieldFill.INSERT_UPDATE) private String updateBy; /** å 餿 å¿ */ @TableLogic private Long delFlag; } ruoyi-demo/src/main/java/com/ruoyi/demo/mapper/TestTreeMapper.java
¶Ô±ÈÐÂÎļþ @@ -0,0 +1,14 @@ package com.ruoyi.demo.mapper; import com.ruoyi.demo.domain.TestTree; import com.ruoyi.common.core.page.BaseMapperPlus; /** * æµè¯æ 表Mapperæ¥å£ * * @author Lion Li * @date 2021-05-30 */ public interface TestTreeMapper extends BaseMapperPlus<TestTree> { } ruoyi-demo/src/main/java/com/ruoyi/demo/service/ITestTreeService.java
¶Ô±ÈÐÂÎļþ @@ -0,0 +1,52 @@ package com.ruoyi.demo.service; import com.ruoyi.common.core.page.IServicePlus; import com.ruoyi.demo.bo.TestTreeAddBo; import com.ruoyi.demo.bo.TestTreeEditBo; import com.ruoyi.demo.bo.TestTreeQueryBo; import com.ruoyi.demo.domain.TestTree; import com.ruoyi.demo.vo.TestTreeVo; import java.util.Collection; import java.util.List; /** * æµè¯æ 表Serviceæ¥å£ * * @author Lion Li * @date 2021-05-30 */ public interface ITestTreeService extends IServicePlus<TestTree> { /** * æ¥è¯¢å个 * @return */ TestTreeVo queryById(Long id); /** * æ¥è¯¢å表 */ List<TestTreeVo> queryList(TestTreeQueryBo bo); /** * æ ¹æ®æ°å¢ä¸å¡å¯¹è±¡æå ¥æµè¯æ 表 * @param bo æµè¯æ 表æ°å¢ä¸å¡å¯¹è±¡ * @return */ Boolean insertByAddBo(TestTreeAddBo bo); /** * æ ¹æ®ç¼è¾ä¸å¡å¯¹è±¡ä¿®æ¹æµè¯æ 表 * @param bo æµè¯æ 表ç¼è¾ä¸å¡å¯¹è±¡ * @return */ Boolean updateByEditBo(TestTreeEditBo bo); /** * æ ¡éªå¹¶å 餿°æ® * @param ids 主é®éå * @param isValid æ¯å¦æ ¡éª,true-å é¤åæ ¡éª,false-䏿 ¡éª * @return */ Boolean deleteWithValidByIds(Collection<Long> ids, Boolean isValid); } ruoyi-demo/src/main/java/com/ruoyi/demo/service/impl/TestTreeServiceImpl.java
¶Ô±ÈÐÂÎļþ @@ -0,0 +1,84 @@ package com.ruoyi.demo.service.impl; import cn.hutool.core.bean.BeanUtil; import cn.hutool.core.util.StrUtil; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.core.toolkit.Wrappers; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.ruoyi.common.annotation.DataScope; import com.ruoyi.demo.bo.TestTreeAddBo; import com.ruoyi.demo.bo.TestTreeEditBo; import com.ruoyi.demo.bo.TestTreeQueryBo; import com.ruoyi.demo.domain.TestTree; import com.ruoyi.demo.mapper.TestTreeMapper; import com.ruoyi.demo.service.ITestTreeService; import com.ruoyi.demo.vo.TestTreeVo; import org.springframework.stereotype.Service; import java.util.Collection; import java.util.List; import java.util.Map; /** * æµè¯æ 表Serviceä¸å¡å±å¤ç * * @author Lion Li * @date 2021-05-30 */ @Service public class TestTreeServiceImpl extends ServiceImpl<TestTreeMapper, TestTree> implements ITestTreeService { @Override public TestTreeVo queryById(Long id) { return getVoById(id, TestTreeVo.class); } @DataScope(isUser = true) @Override public List<TestTreeVo> queryList(TestTreeQueryBo bo) { return listVo(buildQueryWrapper(bo), TestTreeVo.class); } private LambdaQueryWrapper<TestTree> buildQueryWrapper(TestTreeQueryBo bo) { Map<String, Object> params = bo.getParams(); Object dataScope = params.get("dataScope"); LambdaQueryWrapper<TestTree> lqw = Wrappers.lambdaQuery(); lqw.like(StrUtil.isNotBlank(bo.getTreeName()), TestTree::getTreeName, bo.getTreeName()); lqw.between(params.get("beginCreateTime") != null && params.get("endCreateTime") != null, TestTree::getCreateTime, params.get("beginCreateTime"), params.get("endCreateTime")); lqw.apply(dataScope != null && StrUtil.isNotBlank(dataScope.toString()), dataScope != null ? dataScope.toString() : null); return lqw; } @Override public Boolean insertByAddBo(TestTreeAddBo bo) { TestTree add = BeanUtil.toBean(bo, TestTree.class); validEntityBeforeSave(add); return save(add); } @Override public Boolean updateByEditBo(TestTreeEditBo bo) { TestTree update = BeanUtil.toBean(bo, TestTree.class); validEntityBeforeSave(update); return updateById(update); } /** * ä¿ååçæ°æ®æ ¡éª * * @param entity å®ä½ç±»æ°æ® */ private void validEntityBeforeSave(TestTree entity) { //TODO åä¸äºæ°æ®æ ¡éª,å¦å¯ä¸çº¦æ } @Override public Boolean deleteWithValidByIds(Collection<Long> ids, Boolean isValid) { if (isValid) { //TODO åä¸äºä¸å¡ä¸çæ ¡éª,夿æ¯å¦éè¦æ ¡éª } return removeByIds(ids); } } ruoyi-demo/src/main/java/com/ruoyi/demo/vo/TestTreeVo.java
¶Ô±ÈÐÂÎļþ @@ -0,0 +1,55 @@ package com.ruoyi.demo.vo; import com.ruoyi.common.annotation.Excel; import com.fasterxml.jackson.annotation.JsonFormat; import io.swagger.annotations.ApiModel; import io.swagger.annotations.ApiModelProperty; import lombok.Data; import java.util.Date; /** * æµè¯æ 表è§å¾å¯¹è±¡ test_tree * * @author Lion Li * @date 2021-05-30 */ @Data @ApiModel("æµè¯æ 表è§å¾å¯¹è±¡") public class TestTreeVo { private static final long serialVersionUID = 1L; /** ä¸»é® */ @ApiModelProperty("主é®") private Long id; /** ç¶id */ @Excel(name = "ç¶id") @ApiModelProperty("ç¶id") private Long parentId; /** é¨é¨id */ @Excel(name = "é¨é¨id") @ApiModelProperty("é¨é¨id") private Long deptId; /** ç¨æ·id */ @Excel(name = "ç¨æ·id") @ApiModelProperty("ç¨æ·id") private Long userId; /** æ èç¹å */ @Excel(name = "æ èç¹å") @ApiModelProperty("æ èç¹å") private String treeName; /** å建æ¶é´ */ @Excel(name = "å建æ¶é´" , width = 30, dateFormat = "yyyy-MM-dd") @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss") @ApiModelProperty("å建æ¶é´") private Date createTime; } ruoyi-demo/src/main/resources/mapper/demo/TestTreeMapper.xml
¶Ô±ÈÐÂÎļþ @@ -0,0 +1,22 @@ <?xml version="1.0" encoding="UTF-8" ?> <!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd"> <mapper namespace="com.ruoyi.demo.mapper.TestTreeMapper"> <resultMap type="com.ruoyi.demo.domain.TestTree" id="TestTreeResult"> <result property="id" column="id"/> <result property="parentId" column="parent_id"/> <result property="deptId" column="dept_id"/> <result property="userId" column="user_id"/> <result property="treeName" column="tree_name"/> <result property="version" column="version"/> <result property="createTime" column="create_time"/> <result property="createBy" column="create_by"/> <result property="updateTime" column="update_time"/> <result property="updateBy" column="update_by"/> <result property="delFlag" column="del_flag"/> </resultMap> </mapper> ruoyi-ui/src/api/demo/tree.js
¶Ô±ÈÐÂÎļþ @@ -0,0 +1,53 @@ import request from '@/utils/request' // æ¥è¯¢æµè¯æ 表å表 export function listTree(query) { return request({ url: '/demo/tree/list', method: 'get', params: query }) } // æ¥è¯¢æµè¯æ è¡¨è¯¦ç» export function getTree(id) { return request({ url: '/demo/tree/' + id, method: 'get' }) } // æ°å¢æµè¯æ 表 export function addTree(data) { return request({ url: '/demo/tree', method: 'post', data: data }) } // ä¿®æ¹æµè¯æ 表 export function updateTree(data) { return request({ url: '/demo/tree', method: 'put', data: data }) } // å 餿µè¯æ 表 export function delTree(id) { return request({ url: '/demo/tree/' + id, method: 'delete' }) } // å¯¼åºæµè¯æ 表 export function exportTree(query) { return request({ url: '/demo/tree/export', method: 'get', params: query }) } ruoyi-ui/src/views/demo/tree/index.vue
¶Ô±ÈÐÂÎļþ @@ -0,0 +1,282 @@ <template> <div class="app-container"> <el-form :model="queryParams" ref="queryForm" :inline="true" v-show="showSearch" label-width="68px"> <el-form-item label="æ èç¹å" prop="treeName"> <el-input v-model="queryParams.treeName" placeholder="请è¾å ¥æ èç¹å" clearable size="small" @keyup.enter.native="handleQuery" /> </el-form-item> <el-form-item label="å建æ¶é´"> <el-date-picker v-model="daterangeCreateTime" size="small" style="width: 240px" value-format="yyyy-MM-dd" type="daterange" range-separator="-" start-placeholder="å¼å§æ¥æ" end-placeholder="ç»ææ¥æ" ></el-date-picker> </el-form-item> <el-form-item> <el-button type="primary" icon="el-icon-search" size="mini" @click="handleQuery">æç´¢</el-button> <el-button icon="el-icon-refresh" size="mini" @click="resetQuery">éç½®</el-button> </el-form-item> </el-form> <el-row :gutter="10" class="mb8"> <el-col :span="1.5"> <el-button type="primary" plain icon="el-icon-plus" size="mini" @click="handleAdd" v-hasPermi="['demo:tree:add']" >æ°å¢</el-button> </el-col> <right-toolbar :showSearch.sync="showSearch" @queryTable="getList"></right-toolbar> </el-row> <el-table v-loading="loading" :data="treeList" row-key="id" default-expand-all :tree-props="{children: 'children', hasChildren: 'hasChildren'}" > <el-table-column label="ç¶id" prop="parentId" /> <el-table-column label="é¨é¨id" align="center" prop="deptId" /> <el-table-column label="ç¨æ·id" align="center" prop="userId" /> <el-table-column label="æ èç¹å" align="center" prop="treeName" /> <el-table-column label="å建æ¶é´" align="center" prop="createTime" width="180"> <template slot-scope="scope"> <span>{{ parseTime(scope.row.createTime, '{y}-{m}-{d}') }}</span> </template> </el-table-column> <el-table-column label="æä½" align="center" class-name="small-padding fixed-width"> <template slot-scope="scope"> <el-button size="mini" type="text" icon="el-icon-edit" @click="handleUpdate(scope.row)" v-hasPermi="['demo:tree:edit']" >ä¿®æ¹</el-button> <el-button size="mini" type="text" icon="el-icon-plus" @click="handleAdd(scope.row)" v-hasPermi="['demo:tree:add']" >æ°å¢</el-button> <el-button size="mini" type="text" icon="el-icon-delete" @click="handleDelete(scope.row)" v-hasPermi="['demo:tree:remove']" >å é¤</el-button> </template> </el-table-column> </el-table> <!-- æ·»å æä¿®æ¹æµè¯æ è¡¨å¯¹è¯æ¡ --> <el-dialog :title="title" :visible.sync="open" width="500px" append-to-body> <el-form ref="form" :model="form" :rules="rules" label-width="80px"> <el-form-item label="ç¶id" prop="parentId"> <treeselect v-model="form.parentId" :options="treeOptions" :normalizer="normalizer" placeholder="è¯·éæ©ç¶id" /> </el-form-item> <el-form-item label="é¨é¨id" prop="deptId"> <el-input v-model="form.deptId" placeholder="请è¾å ¥é¨é¨id" /> </el-form-item> <el-form-item label="ç¨æ·id" prop="userId"> <el-input v-model="form.userId" placeholder="请è¾å ¥ç¨æ·id" /> </el-form-item> <el-form-item label="æ èç¹å" prop="treeName"> <el-input v-model="form.treeName" placeholder="请è¾å ¥æ èç¹å" /> </el-form-item> </el-form> <div slot="footer" class="dialog-footer"> <el-button type="primary" @click="submitForm">ç¡® å®</el-button> <el-button @click="cancel">å æ¶</el-button> </div> </el-dialog> </div> </template> <script> import { listTree, getTree, delTree, addTree, updateTree, exportTree } from "@/api/demo/tree"; import Treeselect from "@riophae/vue-treeselect"; import "@riophae/vue-treeselect/dist/vue-treeselect.css"; export default { name: "Tree", components: { Treeselect }, data() { return { // é®ç½©å± loading: true, // æ¾ç¤ºæç´¢æ¡ä»¶ showSearch: true, // æµè¯æ è¡¨è¡¨æ ¼æ°æ® treeList: [], // æµè¯æ 表æ é项 treeOptions: [], // å¼¹åºå±æ é¢ title: "", // æ¯å¦æ¾ç¤ºå¼¹åºå± open: false, // å建æ¶é´æ¶é´èå´ daterangeCreateTime: [], // æ¥è¯¢åæ° queryParams: { treeName: null, createTime: null, }, // 表ååæ° form: {}, // è¡¨åæ ¡éª rules: { treeName: [ { required: true, message: "æ èç¹åä¸è½ä¸ºç©º", trigger: "blur" } ], } }; }, created() { this.getList(); }, methods: { /** æ¥è¯¢æµè¯æ 表å表 */ getList() { this.loading = true; this.queryParams.params = {}; if (null != this.daterangeCreateTime && '' != this.daterangeCreateTime) { this.queryParams.params["beginCreateTime"] = this.daterangeCreateTime[0]; this.queryParams.params["endCreateTime"] = this.daterangeCreateTime[1]; } listTree(this.queryParams).then(response => { this.treeList = this.handleTree(response.data, "id", "parentId"); this.loading = false; }); }, /** è½¬æ¢æµè¯æ è¡¨æ°æ®ç»æ */ normalizer(node) { if (node.children && !node.children.length) { delete node.children; } return { id: node.id, label: node.treeName, children: node.children }; }, /** æ¥è¯¢æµè¯æ è¡¨ä¸ææ ç»æ */ getTreeselect() { listTree().then(response => { this.treeOptions = []; const data = { id: 0, treeName: '顶级èç¹', children: [] }; data.children = this.handleTree(response.data, "id", "parentId"); this.treeOptions.push(data); }); }, // åæ¶æé® cancel() { this.open = false; this.reset(); }, // 表åéç½® reset() { this.form = { id: null, parentId: null, deptId: null, userId: null, treeName: null, version: null, createTime: null, createBy: null, updateTime: null, updateBy: null, delFlag: null }; this.resetForm("form"); }, /** æç´¢æé®æä½ */ handleQuery() { this.getList(); }, /** éç½®æé®æä½ */ resetQuery() { this.daterangeCreateTime = []; this.resetForm("queryForm"); this.handleQuery(); }, /** æ°å¢æé®æä½ */ handleAdd(row) { this.reset(); this.getTreeselect(); if (row != null && row.id) { this.form.parentId = row.id; } else { this.form.parentId = 0; } this.open = true; this.title = "æ·»å æµè¯æ 表"; }, /** ä¿®æ¹æé®æä½ */ handleUpdate(row) { this.reset(); this.getTreeselect(); if (row != null) { this.form.parentId = row.id; } getTree(row.id).then(response => { this.form = response.data; this.open = true; this.title = "ä¿®æ¹æµè¯æ 表"; }); }, /** æäº¤æé® */ submitForm() { this.$refs["form"].validate(valid => { if (valid) { if (this.form.id != null) { updateTree(this.form).then(response => { this.msgSuccess("ä¿®æ¹æå"); this.open = false; this.getList(); }); } else { addTree(this.form).then(response => { this.msgSuccess("æ°å¢æå"); this.open = false; this.getList(); }); } } }); }, /** å é¤æé®æä½ */ handleDelete(row) { this.$confirm('æ¯å¦ç¡®è®¤å 餿µè¯æ 表ç¼å·ä¸º"' + row.id + '"çæ°æ®é¡¹?', "è¦å", { confirmButtonText: "ç¡®å®", cancelButtonText: "åæ¶", type: "warning" }).then(function() { return delTree(row.id); }).then(() => { this.getList(); this.msgSuccess("å 餿å"); }) } } }; </script>