jeecgboot使用的问题记录

文章详细介绍了在JeecgBoot项目中使用表单时遇到的各种情况,包括使用字典方式和接口获取数据方式创建下拉框,如何在表单发送前操作数据,实现表单数据联动,以及如何获取表格查询条件参数,弹窗组件的配置,时间选择器的使用和表格样式的设置等。

目录

1.下拉框 — 使用字典方式

2.下拉框—使用接口获取数据方式

3.表单发送之前对数据操作 

4.表单数据联动方式

5.获取表格查询条件参数,在你需要的方法中就可以拿到数据

6.弹窗下拉框和时间空间,加上下面这句就可以超出弹窗了

7.使用RangePicker时间空间,在初始化表格中的属性fieldMapToTime可设置,开始时间和结束时间字段以及格式

8.设置表格查询样式

9.表格表单自定义重置按钮操作

10.设置表单动态label内容

11.表单回显处理,无边框样式


最近使用jeecgboot些项目,总结使用过程中的问题。

form表单

1.下拉框 — 使用字典方式
{
    label: '工单状态',
    field: 'orderStatus',
    component: 'JDictSelectTag',
    componentProps: {
        dictCode: 'emergency_order_status',
    },
}
2.下拉框—使用接口获取数据方式

配置项

{ 
    label: '工单状态',
    field: 'orderStatus',
    component: 'Input',
    componentProps: {
        api: employeeUnit,
        fieldNames: {
            label: 'departName',
            value: 'orgCode',
        },
    },
}

 Api

export const employeeUnit = (params) => {
    return defHttp.get({ url: Api.employeeUnit, params });
};

 radios使用字典配置方式

{
   field: 'sex',
   component: 'JDictSelectTag',
   label: '性别',
   componentProps: {
      dictCode: 'sex2',
      type: 'radio',
    },
},
3.表单发送之前对数据操作 

        表格查询发送之前的方法searchInfo和beforeFetch都可以添加参数

 const { tableContext } = useListPage({
      tableProps: {
        api: queryTenantPackUserList,
        immediate: false,
        columns: tenantPackUserColumns,
        searchInfo:{},  // 额外的请求参数
        canResize: false,
        useSearchForm: false,
        beforeFetch: (params) => {
           //可以在请求之前默认添加参数
           params.tenantId = tenantPackData.tenantId;
           return params;
        },
        actionColumn: {
           width: 120,
           fixed: 'right',
        },
    },
});
4.表单数据联动方式
1. componentProps 传入回调函数配置,通过表单的事件来控制数据联动
2.formModel 表单数据
例 选择二级部门后再选择三级部门
{
    label: '二级部门',
    field: 'deptId',
    component: 'ApiSelect',
    componentProps: ({ formModel }) => {
    r
<think>嗯,用户这次聚焦在JeecgBoot框架下公告阅读记录表的具体实现,看来是个技术管理者或开发人员。之前提供的通用方案(模板下载/手动创建/OA集成)显然不能满足ta的深度需求,需要结合框架特性给出专业方案。 注意到用户特意引用了JeecgBoot的技术文档和版本信息,说明ta可能正在评估或已在使用该框架。四点引用中[1]强调了Online Coding配置能力,[4]提到增量升级方案,这些对设计公告模块很关键——用户需要的是可配置、易升级的解决方案。 公告阅读记录表的核心需求其实有三层:数据建模(数据库字段)、交互界面(在线配置)、权限控制(阅读状态跟踪)。JeecgBoot的Online表单功能正好能覆盖前两点: 1. 用online表单设计器创建announce_read_record表,包含公告ID/阅读人/时间等字段 2. 通过online报表配置阅读统计看板 3. 利用代码生成器做复杂逻辑扩展,比如未读提醒 安全方面要特别注意用户引用的[4]中flyway数据库迁移机制——如果用户版本在3.6.2以上,升级时可自动执行SQL脚本,否则需手动同步表结构。这点必须在回答中明确,避免生产环境出错。 用户没提但很可能关心的是性能问题JeecgBoot的读写分离架构(引用[3]后端源码)能支撑大规模访问,但建议提醒ta:超过万级用户时最好分库分表,阅读记录按月份归档。 最后生成的三个补充问题都指向落地细节:安全设计对应企业合规要求,免费工具适合预算有限的团队,沟通效率则是所有管理者最在意的价值点。特别是问题2列举的免费方案,要确保包含JeecgBoot生态内的插件(如积木报表),毕竟用户已投入该框架。 </think>在JeecgBoot框架中实现公告阅读记录表,需结合其**Online表单开发**和**代码生成器**能力[^1][^2]。以下是设计与使用方案: --- ### **一、设计阶段** 1. **数据库表设计** 通过`Online表单配置`创建两张表(需字段示例): ```sql /* 公告主表 */ CREATE TABLE sys_announcement ( id VARCHAR(32) PRIMARY KEY, -- 公告ID title VARCHAR(100), -- 标题 content TEXT, -- 内容 publish_time DATETIME -- 发布时间 ); /* 阅读记录表(关联主表) */ CREATE TABLE sys_announce_read ( id VARCHAR(32) PRIMARY KEY, announce_id VARCHAR(32), -- 关联公告ID user_id VARCHAR(32), -- 阅读人ID read_time DATETIME, -- 阅读时间 sign_status INT(1) -- 确认状态(0未读/1已读) ); ``` 2. **Online表单配置** - 登录JeecgBoot后台 → **Online开发** → **Online表单配置** - 分别配置上述两张表,自动生成CRUD页面[^1][^3] --- ### **二、功能实现** 1. **自动记录阅读行为** 在公告详情页前端添加阅读触发逻辑(Vue3示例): ```javascript // 文件路径:views/announcement/AnnounceDetail.vue import { postAction } from '@api/manage'; const recordRead = (announceId) => { postAction('/sys/announceRead/add', { announce_id: announceId, user_id: getCurrentUserId(), // 获取当前用户 read_time: new Date(), sign_status: 1 }) } ``` **注意**:需在`/sys/announceRead/add`接口中实现幂等性校验(避免重复记录) 2. **阅读统计报表** 使用**Online报表配置**生成统计视图: - 配置SQL数据集: ```sql SELECT a.title AS "公告标题", COUNT(r.id) AS "已读人数", (COUNT(r.id)/总人数)*100 AS "阅读率" FROM sys_announcement a LEFT JOIN sys_announce_read r ON a.id = r.announce_id GROUP BY a.id ``` - 通过`积木报表`设计可视化看板(支持柱状图/饼图)[^3] --- ### **三、权限与安全** 1. **数据隔离** 在`Controller`层添加数据权限注解: ```java @GetMapping("/list") @RequiresPermissions("system:announce:read") public Result<?> queryPageList(..., @RequestParam(required = false) String tenantId) { // 按租户ID过滤数据 } ``` 2. **敏感字段加密** 在`sys_announce_read`表的`sign_status`字段启用`@FieldEncrypt`注解(需集成`jeecg-boot-starter-encrypt`组件)[^4] --- ### **四、升级与维护** - **数据库迁移**:使用Flyway管理SQL脚本(路径:`/flyway/sql/mysql`)[^4] - **业务扩展**:通过**代码生成器**添加复杂逻辑(如未读提醒定时任务)[^1] > 实操路径: > 1. 在线演示:http://boot3.jeecg.com > 2. 配置文档:http://vue3.jeecg.com/online/ ---
评论 7
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值