Jeecg-boot中的popup弹窗增加模糊查询

本文介绍了在Jeecg-boot框架中如何实现模糊查询,主要涉及两个关键方法的改写:JPopupOnlReport.vue组件中的searchByquery方法和handleChangeInTable方法。在查询时,通过在查询条件前添加通配符'*'进行模糊匹配,查询完成后移除通配符,确保正确显示结果。同时,handleChangeInTable方法的改写解决了分页查询时模糊查询的问题。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

总体思路:在加载数据时,将查询条件前加上通配符'*',用来进行模糊查询,查询完成后再将 '*'去掉。(Jeecg-boot框架中的查询过滤器支持在查询条件中添加通配符 * 进行模糊查询)

查询过滤器用法

1、找到JPopupOnlReport.vue这个文件,改写searchByquery方法

searchByquery() {
	let i;
	for (i = 0; i < this.queryInfo.length; i++) {
		this.queryParam[this.queryInfo[i].field] = '*' + this.queryParam[this.queryInfo[i].field] + '*'
	}
	this.loadData(1);
	for (i = 0; i < this.queryInfo.length; i++) {
		this.queryParam[this.queryInfo[i].field] = this.queryParam[this.queryInfo[i].field].replace(/\*/g, '')
	}
},

2、改写handleChangeInTable方法,在this.loadData();行前后添加以下代码。这部分是为了解决模糊查询的结果出现分页时,分页查询无法使用模糊查询的情况。

handleChangeInTable(pagination, filters, sorter) {
	//分页、排序、筛选变化时触发
	if (Object.keys(sorter).length > 0) {
		this.iSorter = {
			column: sorter.field,
			order: 'ascend' === sorter.order ? 'asc' : 'desc'
		}
		// 排序字段受控
		this.table.columns.forEach(col => {
			if (col.dataIndex === sorter.field) {
				this.$set(col, 'sortOrder', sorter.order)
			} else {
				this.$set(col, 'sortOrder', false)
			}
		})
	}
	this.table.pagination = pagination;
	let i;
	for (i = 0; i < this.queryInfo.length; i++) {
		this.queryParam[this.queryInfo[i].field] = '*' + this.queryParam[this.queryInfo[i].field] + '*'
	}
	this.loadData();
	for (i = 0; i < this.queryInfo.length; i++) {
		this.queryParam[this.queryInfo[i].field] = this.queryParam[this.queryInfo[i].field].replace(/\*/g, '')
	}
},

### JeecgBoot 框架 Popup 弹窗使用教程 在 JeecgBoot 中,`JPopup` 组件用于创建弹出窗口,通常用于表单编辑、查看详情等功能。为了实现这些功能,开发者可以在前端通过配置 `xx.data.ts` 文件来传递参数给后端服务。 #### 创建 JPopup 组件实例 要创建一个简单的 `JPopup` 实例,可以按照如下方式操作: 1. **定义数据源** 需要在对应的 `.data.ts` 文件中定义好接口请求路径以及所需参数[^2]。例如,在 `src/views/demo/data.ts` 文件内添加如下代码片段: ```typescript export const queryList = (params?: any) => { return request({ url: '/api/list', method: 'get', params, }); }; ``` 2. **页面布局设计** 接下来是在 Vue 页面上放置按钮触发弹框显示逻辑。假设有一个名为 `Demo.vue` 的组件,则其模板部分可能看起来像这样: ```vue <template> <!-- ... --> <a-button type="primary" @click="showModal">打开弹窗</a-button> <j-popup :visible.sync="visible" title="示例弹窗"> <div slot="content"> 这里是弹窗的内容区域... </div> </j-popup> <!-- ... --> </template> ``` 3. **处理事件响应** 对应的 JavaScript 或 TypeScript 方法用来控制弹窗的状态变化。继续以上面提到的 `Demo.vue` 为例,以下是完整的 script 部分: ```javascript import { defineComponent } from '@vue/composition-api'; export default defineComponent({ data() { return { visible: false, // 控制弹窗显隐状态 } }, methods: { showModal() { this.visible = true; }, handleCancel() { console.log('Clicked cancel button'); this.visible = false; } } }) ``` 4. **样式调整** 如果默认样式不符合需求,还可以自定义 CSS 类名来自由定制外观效果。比如修改 `<style scoped>` 下的相关样式规则即可满足个性化要求。 上述过程展示了如何基于 JeecgBoot 平台构建并应用基本的 `JPopup` 组件[^1]。
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值