jeesite实战(八)——对象选择器

系列文章目录



前言

本系列文章主要记录项目过程中重点的项目技术


一、目标

1.点击按钮,弹出对应的弹窗,见下图
在这里插入图片描述
2.选择任意一条数据,双击,将内容传入对应的人员选择其中
在这里插入图片描述
在这里插入图片描述
3.将返回的数据通过form表单返回到后台服务器


二、实现目标

1.form页面主要代码

listselect的主要属性说明在这里插入图片描述

form页面主要代码

<div class="col-xs-6">
	<div class="form-group">
		<label class="control-label col-sm-4" title=""> 
		<span class="required hide">*</span> 
		${text('人员选择')}<i class="fa icon-question hide"></i></label>
		<div class="col-sm-8">
			<#form:listselect id="trackerWorker" title="人员选择" path="bindingCode" labelPath="worker.name" 
				url="${ctx}/lbst/trackerWorker/workerSelect" allowClear="true" 
				checkbox="false"  itemCode="id" itemName="name"  class="form-control required" />
		</div>
	</div>
</div>

2.control层的主要java代码

代码如下(示例):

@RequiresPermissions("lbst:trackerWorker:view")
	@RequestMapping(value = "trackerWorkerSelect")
	public String trackerWorkerSelect(Tracker tracker, String selectData, Model model) {
		String selectDataJson = EncodeUtils.decodeUrl(selectData);
		if (JsonMapper.fromJson(selectDataJson, Map.class) != null) {
			model.addAttribute("selectData", selectDataJson);
		}
		model.addAttribute("tracker", tracker);
		return "modules/lbst/trackerWorkerSelect";
	}

3.创建trackerWorkerSelect页面

trackerWorkerSelect页面的内容就是目标中弹窗的显示内容
注意事项:
1.trackerWorkerSelect页面代码的html部分与list页面相同,不同的时js部分,具体见script标签部分
页面代码如下:

<% layout('/layouts/default.html', {title: '定位标签表管理', libs: ['dataGrid']}){ %>
<div class="main-content">
	<div class="box box-main">
		<div class="box-header">
			<div class="box-title">
				<i class="fa icon-notebook"></i> ${text('定位标签表管理')}
			</div>
			<div class="box-tools pull-right">
				<a href="#" class="btn btn-default" id="btnSearch" title="${text('查询')}"><i class="fa fa-filter"></i> ${text('查询')}</a>
				<a href="#" class="btn btn-default" id="btnSetting" title="${text('设置')}"><i class="fa fa-navicon"></i></a>
			</div>
		</div>
		<div class="box-body">
			<#form:form id="searchForm" model="${tracker}" action="${ctx}/lbst/tracker/listData" method="post" class="form-inline hide"
					data-page-no="${parameter.pageNo}" data-page-size="${parameter.pageSize}" data-order-by="${parameter.orderBy}">
				<#form:hidden path="trackerIdle" defaultValue="0" />
				<#form:hidden path="type" defaultValue="1" />
				<div class="form-group">
					<label class="control-label">${text('标签编号')}</label>
					<div class="control-inline">
						<#form:input path="trackerCode" maxlength="64" class="form-control width-120"/>
					</div>
				</div>
				
				<div class="form-group">
					<label class="control-label">${text('状态')}</label>
					<div class="control-inline width-120">
						<#form:select path="status" dictType="sys_search_status" blankOption="true" class="form-control isQuick"/>
					</div>
				</div>
				<!-- <div class="form-group">
					<label class="control-label">${text('备注信息')}</label>
					<div class="control-inline">
						<#form:input path="remarks" maxlength="500" class="form-control width-120"/>
					</div>
				</div> -->
				<div class="form-group">
					<button type="submit" class="btn btn-primary btn-sm">${text('查询')}</button>
					<button type="reset" class="btn btn-default btn-sm">${text('重置')}</button>
				</div> 
			</#form:form>
			<table id="dataGrid"></table>
			<div id="dataGridPage"></div>
		</div>
	</div>
</div>
<% } %>
<script>
var selectData = ${isNotBlank(selectData!) ? selectData! : "{\}"},
selectNum = 0, dataGrid = $('#dataGrid').dataGrid({
	searchForm: $("#searchForm"),
	columnModel: [
		{header:'${text("标签编号")}', name:'trackerCode', index:'a.tracker_code', width:150, align:"center"},
		{header:'${text("所属机构名称")}', name:'officeName', index:'a.office_name', width:150, align:"center"},
		{header:'${text("标签类型")}', name:'type', index:'a.type', width:150, align:"center", formatter: function(val, obj, row, act){
			return js.getDictLabel(${@DictUtils.getDictListJson('lbst_tag_type')}, val, '${text("未知")}', true);
		}},
		
		{header:'${text("状态")}', name:'status', index:'a.status', width:150, align:"center", formatter: function(val, obj, row, act){
			return js.getDictLabel(${@DictUtils.getDictListJson('sys_search_status')}, val, '${text("未知")}', true);
		}},
		{header:'${text("更新时间")}', name:'updateDate', index:'a.update_date', width:150, align:"center"},
		{header:'行数据', name:'rowData', hidden:true, formatter: function(val, obj, row, act){
			return JSON.stringify(row);
		}}
	],
	autoGridHeight: function(){
		var height = $(window).height() - $('#searchForm').height() - $('#dataGridPage').height() - 75;
		$('.tags-input').height($('.ui-jqgrid').height() - 10);
		return height;
	},
	showCheckbox: '${parameter.checkbox}' == 'true',
	multiboxonly: false, // 单击复选框时再多选
	ajaxSuccess: function(data){
		$.each(selectData, function(key, value){
			dataGrid.dataGrid('setSelectRow', key);
		});
	},
	onSelectRow: function(id, isSelect, event){
		if ('${parameter.checkbox}' == 'true'){
			if(isSelect){
				selectData[id] = JSON.parse(dataGrid.dataGrid('getRowData', id).rowData);
			}else{
				delete selectData[id];
			}
		}else{
			selectData = {};
			selectData[id] = JSON.parse(dataGrid.dataGrid('getRowData', id).rowData);
		}
	},
	onSelectAll: function(ids, isSelect){
		if ('${parameter.checkbox}' == 'true'){
			for (var i=0; i<ids.length; i++){
				if(isSelect){
					selectData[ids[i]] = JSON.parse(dataGrid.dataGrid('getRowData', ids[i]).rowData);
				}else{
					delete selectData[ids[i]];
				}
			}
		}
	},
	ondblClickRow: function(id, rownum, colnum, event){
		if ('${parameter.checkbox}' != 'true'){
			js.layer.$('#' + window.name).closest('.layui-layer')
				.find(".layui-layer-btn0").trigger("click");
		}
	}
});
function getSelectData(){
	return selectData;
}
</script>

4.实现listData接口

trackerWorkerSelect页面中需要实现分页查询,接口为listData,见下图
在这里插入图片描述
Java代码如下

/**
	 * 查询列表数据
	 */
	@RequiresPermissions("lbst:trackerWorker:view")
	@RequestMapping(value = "listData")
	@ResponseBody
	public Page<TrackerWorker> listData(TrackerWorker trackerWorker, HttpServletRequest request, HttpServletResponse response) {
		trackerWorker.setPage(new Page<>(request, response));
		//根据用户所属的机构或者公司进行过滤
		trackerWorkerService.addDataScopeFilter(trackerWorker);
		Page<TrackerWorker> page = trackerWorkerService.findPage(trackerWorker);
		return page;
	}

至此,整个对象选择器完成了,后面就是一些对form表单属性的处理


总结

至此,本文章结束

  • 1
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Jeesite Vue是一个基于Jeesite和Vue.js的前后端分离开发架。通过使用Jeesite Vue,开发者可以快速构建现代化的Web应用程序。Jeesite Vue提供了一系列学习资源和工具,可以帮助开发者更好地使用该架。 在学习Jeesite Vue时,你可以参考以下学习网站和工具: - Jeesite官网:https://jeesite.com/docs/ 提供了详细的Jeesite文档,包括Jeesite Vue的使用指南和示例代码。 - Uniapp官网:https://uniapp.dcloud.io/ 是一个跨平台的开发架,可以用于开发Jeesite Vue的前端部分。 - Uview官网:https://www.uviewui.com/components/intro.html 是一个基于Vue.js的UI组件库,可以帮助你快速构建漂亮的界面。 - Uniapp插件市场官网:https://ext.dcloud.net.cn/ 提供了丰富的Uniapp插件,可以扩展Jeesite Vue的功能。 - 白话Uniapp:https://ask.dcloud.net.cn/article/35657 是一个适合前端有基础的人学习Uniapp的教程。 - Flex布局:https://www.runoob.com/w3cnote/flex-grammar.html 是一个介绍Flex布局的教程,可以帮助你更好地布局Jeesite Vue的界面。 希望以上资源能够帮助你学习和使用Jeesite Vue。如果你有任何进一步的问题,请随时提问。 #### 引用[.reference_title] - *1* *2* [Jeesite-uniapp架学习篇一(版本说明、工具网站、学习网站)](https://blog.csdn.net/zhouoxinxin/article/details/126221626)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^control_2,239^v3^insert_chatgpt"}} ] [.reference_item] - *3* [jeesite免登陆,及vue跨域访问jeeSite项目设置](https://blog.csdn.net/qq_36833168/article/details/89919399)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^control_2,239^v3^insert_chatgpt"}} ] [.reference_item] [ .reference_list ]

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值