• SpringBlade bug 字典管理 修改父节点编号问题


    一、问题:


    修改了父节点的编号,子项的编号不会自动修改

    1、大图




    2、小图





    二、解决


    后台

    1、DictMapper.xml

        <select id="getChildren" resultMap="dictResultMap">
            select * from blade_dict where parent_id = #{param1} and is_deleted = 0
        </select>
    

    2、DictMapper.java

    	/**
    	 * 获取子节点
    	 * @param parentId 父节点Id
    	 * @return
    	 */
    	List<Dict> getChildren(Long parentId);
    

    3、改的这两个文件



    4、DictServiceImpl.java

    	@Cacheable(cacheNames = DICT_LIST, key = "#code")
    	public List<Dict> getChildren(Long parentId) {
    		return baseMapper.getChildren(parentId);
    	}
    
    
    	@Override
    	@CacheEvict(cacheNames = {DICT_LIST, DICT_VALUE}, allEntries = true)
    	public boolean submit(Dict dict) {
    		LambdaQueryWrapper<Dict> lqw = Wrappers.<Dict>query().lambda().eq(Dict::getCode, dict.getCode()).eq(Dict::getDictKey, dict.getDictKey());
    		Integer cnt = baseMapper.selectCount((Func.isEmpty(dict.getId())) ? lqw : lqw.notIn(Dict::getId, dict.getId()));
    		if (cnt > 0) {
    			throw new ApiException("当前字典键值已存在!");
    		}
    
    		if (Func.isNotEmpty(dict.getId()) && (dict.getId() > 0)) {// 改变子项的Code
    			Dict dbDict = getById(dict.getId());
    			if (!dict.getCode().equals(dbDict.getCode())) {
    				List<Dict> children = getChildren(dict.getId());
    				int num = children.size();
    				for (int i = 0; i < num; i++) {
    					children.get(i).setCode(dict.getCode());
    				}
    				updateBatchById(children);// 查询的实体,如果没有id,则无法更新数据
    			}
    		}
    
    		if (Func.isEmpty(dict.getSort())) {// 自动生成排序字段
    			Integer sort = 1;
    			Long parentId = Func.isEmpty(dict.getParentId()) ? 0 : dict.getParentId();
    			List<Dict> children = getChildren(parentId);
    			if (Func.isNotEmpty(children)){
    				sort = children.stream().max(Comparator.comparing(Dict::getSort)).get().getSort() + 1;
    			}
    			dict.setSort(sort);
    		}
    
    		return saveOrUpdate(dict);
    	}
    

    5、改的这里





    前端


    1、字段修改

                {
                  label: "字典排序",
                  prop: "sort",
                  type: "number",
                  rules: [{
                    required: false,
                    message: "请输入字典排序",
                    trigger: "blur"
                  }]
    

    2、跟组件添加事件

    组件avue-crud,添加事件:before-close="beforeClose"


    3、事件的具体代码

          beforeClose(done, type) {// 关闭页面的时候,取消掉已有的禁用状态和赋值
            if (["add"].includes(type)) {
              this.$refs.crud.value.parentId = '';
              this.$refs.crud.option.column.filter(item => {
                if (item.prop === "parentId") {
                  item.value = '';
                  item.addDisabled = false;
                }else if (item.prop === "code") {
                  item.value = '';
                  item.addDisabled = false;
                }
              });
            }
            done();
          },
    
  • 相关阅读:
    Symfony框架实战学习
    学习Symfony之环境的搭建
    js的学习 (数组)
    js的学习 (对象)
    js的学习 (语句)
    Django 应用开发(3)
    Django 应用开发(2)
    Django 学习搭建博客
    2-4.通用选择器
    2-3.class选择器
  • 原文地址:https://www.cnblogs.com/guxingy/p/13671592.html
Copyright © 2020-2023  润新知