1.需求功能分析和解决思路阐述,页面效果图如下:
A.需求功能分析:约谈、投递、收藏是同属于约藏投功能模块下,不同的分类,但现在的问题是这几种类型数据是存于一张表内,它们既有共用字段也有不共用字段,这样对于使用同一套页面就产生了困难,因为不同的模块点击进去,页面上显示的只是该模块所拥有的字段信息,其他的类型字段就得隐藏起来了。
B.解决问题的思路方法:操作页面上初点击不同的类型模块访问列表页时,即带上判断类型的字段编码,这样不管是列表页还是增加和修改页面,根据拿到的类型编码进行判断,来显示需要的信息和隐藏不该显现的信息。现在问题的难点即定位在如何在列表页、增加也、修改页拿到类型编码。
2.解决问题,数据库中sys_menu系统菜单表、后台以及前台需要修改的地方如下:
A. sys_menu系统菜单表, 改动的地方如下图所示(其中oprationTypeCode为对应的类型字段):
B. 列表页前台和后台修改的地方如下:
后台(controller类中进行修改):
@RequiresPermissions("idc:idc:view")
@GetMapping()
public String idc(ModelMap mmap,HttpServletRequest request){
//拿到oprationTypeCode
String opCpde = request.getParameter("oprationTypeCode");
//把拿到的类型字段opCpde传到列表页
mmap.put("oprationTypeCode", opCpde);
switch (opCpde) {
case "1":
mmap.put("oprationTypeName", "约谈");
break;
case "2":
mmap.put("oprationTypeName", "投递");
break;
case "3":
mmap.put("oprationTypeName", "收藏");
break;
default:
break;
}
return prefix + "/idc";
}
前台接受类型字段和类型名称 (类型名称是用于搜索使用) :
<!-- 列表页接收的类型编码和名称在页面我都隐藏起来了,但是都是实际存在的 -->
<li>
<!-- <p>操作类型编码:1.约谈项目 2.投递项目 3.收藏项目:</p> -->
<input type="hidden" name="oprationTypeCode" th:value="${oprationTypeCode}"/>
</li>
<li hidden>
<p>操作类型:</p>
<!-- <p>操作类型名称:约谈项目 投递项目 收藏项目:</p> -->
<input type="text" readonly name="oprationTypeName" th:value="${oprationTypeName}">
</li>
C.增加页面前台和后台需要改动的地方:
前台(列表页和增加页面):
<!--使用 th:if="${oprationTypeCode == '1'}" 对需要根据类型编码判断来显示的字段,达到显示和隐藏效果 -->
<!-- 增加页面修改的地方 -->
<div class="form-group" th:if="${oprationTypeCode == '1'}">
<label class="col-sm-3 control-label">约谈项目ID:</label>
<div class="col-sm-8">
<input name="interviewProId" class="form-control" type="text">
</div>
</div>
<div class="form-group" th:if="${oprationTypeCode == '1'}">
<label class="col-sm-3 control-label">约谈项目名称:</label>
<div class="col-sm-8">
<input name="interviewProName" class="form-control" type="text">
</div>
</div>
后台(controller类的新增方法):
/**
* 新增约谈投递收藏功能
*/
@GetMapping("/add")
public String add(HttpServletRequest request, ModelMap mmap){
//列表页面点击增加按钮,传进来的类型编码
String opCpde = request.getParameter("oprationTypeCode");
//保存并准备传到增加页面去
mmap.put("oprationTypeCode", opCpde);
switch (opCpde) {
case "1":
mmap.put("oprationTypeName", "约谈");
break;
case "2":
mmap.put("oprationTypeName", "投递");
break;
case "3":
mmap.put("oprationTypeName", "收藏");
break;
default:
break;
}
return prefix + "/add";
}
D.修改页面前台和后台需要改动的地方:
前台(修改页面,同于增加页面):
<div class="form-group" th:if="${oprationTypeCode == '1'}">
<label class="col-sm-3 control-label">约谈项目ID:</label>
<div class="col-sm-8">
<input name="interviewProId" th:field="*{interviewProId}" class="form-control" type="text">
</div>
</div>
<div class="form-group" th:if="${oprationTypeCode == '1'}">
<label class="col-sm-3 control-label">约谈项目名称:</label>
<div class="col-sm-8">
<input name="interviewProName" th:field="*{interviewProName}" class="form-control" type="text">
</div>
</div>
后台(controller类的修改方法):
/**
* 修改约谈投递收藏功能
*/
@GetMapping("/edit/{id}")
public String edit(@PathVariable("id") Long id, ModelMap mmap){
InterviewDeliverCollect interviewDeliverCollect =
interviewDeliverCollectService.selectInterviewDeliverCollectById(id);
mmap.put("interviewDeliverCollect", interviewDeliverCollect);
//获取查询出来的对象的类型编码,并传到修改页面
mmap.put("oprationTypeCode", interviewDeliverCollect.getOprationTypeCode().toString());
return prefix + "/edit";
}
3.欢迎指正!!!