eladmin框架学习总结(二)

eladmin框架学习总结(一)

混入基础
在这里插入图片描述

mixins: [presenter(), header(), form(defaultForm), crud()]

在这些混入完毕后,presenter()中的created()钩子触发toQuery()

接着触发refresh()方法

// 刷新
refresh() {
    if (!callVmHook(crud, CRUD.HOOK.beforeRefresh)) {
        return;
    }
    return new Promise((resolve, reject) => {
        //crud加载状态,表格中的加载
        crud.loading = true;
        // 请求数据
        //crud.url在cruds()中初始化
        initData(crud.url, crud.getQueryParams()).then(res => {
            // getTable方法 return this.findVM('presenter').$refs.table;
            const table = crud.getTable();
            if (table && table.lazy) { // 懒加载子节点数据,清掉已加载的数据
                table.store.states.treeData = {};
                table.store.states.lazyTreeNodeMap = {};
            }
            //表格绑定数据  期望数据 res.data中的数据数组或res.data.records(分页)
            crud.page.total = res.data.pages === undefined ? 0 : res.data.total;
            crud.data = res.data.pages === undefined ? res.data : res.data.records;
            // 重置数据状态  编辑和删除的状态值
            crud.resetDataStatus();
            // time 毫秒后显示表格
            setTimeout(() => {
                crud.loading = false;
                callVmHook(crud, CRUD.HOOK.afterRefresh);
            }, crud.time);
            // 清除上次搜索的条件
            crud.query.startTime = null;
            crud.query.endTime = null;
            resolve(data);
        }).catch(err => {
            crud.loading = false;
            reject(err);
        });
    });
},

toquery()中有refresh()方法

主要刷新表格及清空DateRangePicker组件的查询条件

对于查询问题

/**
     * 获取查询参数
     */
getQueryParams: function() {
    // 清除参数无值的情况
    Object.keys(crud.query).length !== 0 && Object.keys(crud.query).forEach(item => {
        if (crud.query[item] === null || crud.query[item] === '') crud.query[item] = undefined;
        // 对creatime参数进行修改,createtime数组改为 startTime与endTime
        if (crud.query[item] !== undefined && item === 'createTime') {
            const timeArr = crud.query[item];
            crud.query['startTime'] = timeArr[0];
            crud.query['endTime'] = timeArr[1];
        }
    });
    Object.keys(crud.params).length !== 0 && Object.keys(crud.params).forEach(item => {
        if (crud.params[item] === null || crud.params[item] === '') crud.params[item] = undefined;
    });
    return {
        current: crud.page.page,
        size: crud.page.size,
        orders: JSON.stringify(crud.sort),
        ...crud.query,
        ...crud.params
    };
},

有时我们对于时间范围的需求需要不同的参数值,而DateRangePicker组件绑定的createTime

的只能转化为startTimeendTime,改组件会影响原有功能,重新写一个又不至于

所以我们可以在getQueryParams方法中添加同级判断(避免影响原有功能),来处理我们自己的需求

 // 对creatime参数进行修改,createtime数组改为 startTime与endTime
if (crud.query[item] !== undefined && item === 'createTime') {
    const timeArr = crud.query[item];
    crud.query['startTime'] = timeArr[0];
    crud.query['endTime'] = timeArr[1];
}
// 以`DateRangePicker`组件绑定query.Time为例
if (crud.query[item] !== undefined && item === 'Time') {
    // 按自己的需求更改 下面字段名
    const timeArr = crud.query[item];
    crud.query['beginTime'] = timeArr[0];
    crud.query['endTime'] = timeArr[1];
    -----
    //或直接传递数组,按需处理
    crud.query['times'] = crud.query[item]
}

然后是新增功能

通常用的是crud.operation组件

新增按钮触发

/**
     * 启动添加
     */
toAdd() {
    // 重置表单
    crud.resetForm();
    //验证crud钩子
    if (!(callVmHook(crud, CRUD.HOOK.beforeToAdd, crud.form) && callVmHook(crud, CRUD.HOOK.beforeToCU, crud.form))) {
        return;
    }
    // 修改新增状态为PREPARED
    crud.status.add = CRUD.STATUS.PREPARED;
    // 调用生命周期钩子
    callVmHook(crud, CRUD.HOOK.afterToAdd, crud.form);
    callVmHook(crud, CRUD.HOOK.afterToCU, crud.form);
},
status: {
    add: CRUD.STATUS.NORMAL,
	edit: CRUD.STATUS.NORMAL,
	// 添加或编辑状态
    //cu-get方法返回新增或编辑的状态值
	get cu() {
		if (this.add === CRUD.STATUS.NORMAL && this.edit === CRUD.STATUS.NORMAL) {
			return CRUD.STATUS.NORMAL;
		} else if (this.add === CRUD.STATUS.PREPARED || this.edit === CRUD.STATUS.PREPARED) {
			return CRUD.STATUS.PREPARED;
		} else if (this.add === CRUD.STATUS.PROCESSING || this.edit === CRUD.STATUS.PROCESSING) {
			return CRUD.STATUS.PROCESSING;
		}
		throw new Error('wrong crud\'s cu status');
	},
    // 标题,弹窗的标题
    get title() {
    	return this.add > CRUD.STATUS.NORMAL ? `新增${crud.title}` : this.edit > CRUD.STATUS.NORMAL ? `编辑${crud.title}` : crud.title;
    }
},

:visible.sync="crud.status.cu > 0"弹窗组件绑定的cu,此时显示

提交表单执行crud.submitCU方法–进行表单验证,.$refs['form'],并根据状态执行crud.doAdd()方法(新增按钮toadd修改新增状态值)

/**
     * 执行添加
     */
doAdd() {
    if (!callVmHook(crud, CRUD.HOOK.beforeSubmit)) {
        return;
    }
    //修改新增状态
    crud.status.add = CRUD.STATUS.PROCESSING;
    //请求接口
    crud.crudMethod.add(crud.form).then(() => {
        //修改状态为正常
        crud.status.add = CRUD.STATUS.NORMAL;
        //重置表单
        crud.resetForm();
        //成功通知
        crud.addSuccessNotify();
        callVmHook(crud, CRUD.HOOK.afterSubmit);
        //查询--刷新--刷新表格
        crud.toQuery();
    }).catch(() => {
        crud.status.add = CRUD.STATUS.PREPARED;
        callVmHook(crud, CRUD.HOOK.afterAddError);
    });
},

编辑是一样的流程

  • 1
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: eladmin是一款基于springboot + vue 前后端分离的开源快速开发平台,它采用了最新的前端技术栈,支持多种登录方式,拥有完善的接口文档及自动化测试,可以帮助开发者更快捷的搭建一个企业级中后台产品。diboot是一个基于Springboot的快速开发框架,它提供了一系列的功能,例如快速构建后台管理系统、快速实现数据库操作、简洁的权限控制、RESTful API封装、灵活的组织机构配置等,可以帮助开发者快速构建一个中后台产品。 ### 回答2: Eladmin框架是一种基于Spring Boot和Vue的开源后台管理系统框架。它提供了丰富的功能和灵活的配置选项,可以快速开发出高质量和易于维护的后台管理系统。 Eladmin框架的主要特点有以下几点: 1.权限管理:Eladmin框架提供了灵活的用户、角色和权限管理功能,可以根据实际需求进行配置和扩展。 2.代码生成器:Eladmin框架内置了代码生成器,可以根据数据库表结构自动生成基础的增删改查接口和前端代码,大大提高了开发效率。 3.多租户支持:Eladmin框架支持多租户模式,可以为不同的租户提供定制化的功能和界面。 4.日志管理:Eladmin框架提供了日志管理功能,可以记录用户的操作日志,方便追溯和审计。 5.数据可视化:Eladmin框架集成了Echarts图表库,可以简单地生成各种图表,帮助用户实时监控和分析数据。 Diboot框架是一种基于Spring Boot的开源快速开发框架。它采用了轻量级、模块化和灵活的设计理念,致力于提供更简单、高效和易于扩展的开发体验。 Diboot框架的主要特点有以下几点: 1.简化开发:Diboot框架提供了一系列的简化开发工具,例如注解、代码生成器和模板引擎等,可以大大减少开发工作量。 2.灵活配置:Diboot框架支持灵活的配置选项和可插拔的模块,可以根据实际需求进行定制和扩展。 3.强大的数据绑定:Diboot框架支持强大的数据绑定功能,可以将前端请求参数与后端实体对象进行自动映射,大大简化了数据处理的过程。 4.多数据库支持:Diboot框架可以很好地支持多种数据库,如MySQL、Oracle和SQL Server等,开发人员可以根据需求选择适合的数据库进行开发。 5.安全性和稳定性:Diboot框架对安全性和稳定性的要求非常高,采用了一系列的安全机制和异常处理策略,保证了系统的可靠性和可扩展性。 总的来说,Eladmin框架和Diboot框架都是优秀的开源框架,它们提供了丰富的功能和便捷的开发工具,可以帮助开发人员快速构建高质量的后台管理系统和业务应用。 ### 回答3: eladmin框架是一款基于Spring Boot和Spring Security开发的开源后台管理系统。它提供了一套快速构建后台管理系统的解决方案,包含了用户管理、角色管理、菜单管理、日志管理等常用功能模块。eladmin框架还集成了代码生成器,可以根据数据库表结构自动生成前后端代码,大大提高了开发效率。 eladmin框架采用前后端分离的架构,前端使用了Vue.js框架ElementUI组件库等技术,实现了响应式的管理界面。同时,eladmin框架提供了丰富的API接口,方便客户端进行数据的交互和访问。 另外,eladmin框架还实现了权限管理功能,可以灵活地定义角色和权限,并进行精确的访问控制。它还内置了日志管理功能,可以对系统的操作日志进行记录和查看,方便系统的监控和追踪。 diboot框架是一款基于Spring Boot开发的低代码开发框架,旨在提高开发效率和代码质量。diboot框架采用了注解驱动的开发方式,通过减少手写重复代码的方式,大大简化了开发流程。 diboot框架提供了一套简洁易用的API接口,可以轻松实现数据的增删改查操作。它支持多种数据库类型,包括MySQL、Oracle、SQL Server等,并提供了数据库操作的封装,方便开发人员进行数据库的操作和管理。 diboot框架还提供了权限管理功能,可以根据角色和权限进行精确的访问控制。同时,diboot框架支持多租户架构,可以为不同的租户提供独立的数据和功能,满足多租户场景的需求。 总的来说,eladmin框架和diboot框架都是基于Spring Boot开发的高效开发框架,它们都提供了丰富的功能和易用的API接口,可以帮助开发人员快速构建高质量的后台管理系统。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值