项目需求如下图:
将上图中选中的流程转发给弹窗的组织结构树里选中的人员。如果这条数据里包含的字段和信息特别多,怎么实现呢?
话不多说,直接上代码:
前台JS代码:
//转发(项目前台用的ext框架封装)
function dispense(){
if(grid.getSelectionModel().hasSelection()){
var record = grid.getSelectionModel().getSelected();
var processid=record.json.PROCESSID;
var activityid=record.json.ACTIVITYID;
// 省略类似代码
var url = "../tree/newTree.jsp";
var personid = "";
var personname = "";
var j=new Object(); //开始new一个对象
j.processid=processid;
j.activityid=activityid;
// 省略类似代码
var obj=showModalDialog(url,[["person",false],["group"],false],'dialogWidth:700px;dialogHeight:500px;status:no;scroll:no');
if(obj != null && obj.length != 0){
//获得人员组织树中的人员
for(var i=0;i<obj[0].person.length; i++){
if(i==0){
personid+=obj[0].person[i].value;
personname+=obj[0].person[i].text;
}else{
personid+=','+obj[0].person[i].value;
personname+=','+obj[0].person[i].text;
}
}
if(personid.length<=0) {
alert("请选择接收人!");
} else {
j.personids=personid;
j.persons=personname;
var json=JSON.stringify(j); //将对象封装为JSON格式的数据,此处的JSON需要引用json.js文件
if(processid==''){//新建发送
// 待处理
}else{//发送
window.location.href = "../dispenseprocess/insertSend.do?j="+json;
}
}
}
}else{
Ext.Msg.alert('提示','请选择需要转发的流程');
}
}
后台Controller代码:
/**
*通过json解析出对象
*/
public ModelAndView insertSend(HttpServletRequest request,HttpServletResponse response) throws IOException{
String sendPersonid=getHandleUserLogin().getPartyId(request); //当前登录人(发送人)id
String sendPerson = getHandleUserLogin().getUserName(request); //当前登录人(发送人)
String j="["+obj+"]";
JSONArray jsonArray = JSONArray.fromObject(j);
Object[] os = jsonArray .toArray();
JSONObject jsonObj = JSONObject.fromObject(os[0]);
String processName = (String) jsonObj.get("processname");
// 省略类似代码
String personIds = (String) jsonObj.get("personids");
String persons = (String) jsonObj.get("persons");
String personId[] = personIds.split(",");
String person[] = persons.split(",");
String receiveDept=""; //接收部门
String receiveDeptId ="";//接收部门id
for(int i=0;i<personId.length;i++){
receiveDept=personService.getDefaultOrgan(personId[i]).getName();
receiveDeptId =personService.getDefaultOrgan(personId[i]).getPartyid();
Dispenseprocess dispenseprocess =new Dispenseprocess();
dispenseprocess.setSendpersonid(sendPersonid);
dispenseprocess.setSendperson(sendPerson);
// 省略类似代码
dispenseprocessService.insertDispenseprocess(dispenseprocess);
}
response.setContentType("text/html;charset=UTF-8");
response.getWriter().write("<script type='text/javascript'>alert('传阅成功!您可以在 分发流程 中查看传阅信息!');</script>");
response.flushBuffer();
return index(request, response);
}
至此,功能即可实现。
本段代码写的比较low只是实现了基本需求,有什么改进建议或者意见,欢迎大佬们及时提出小弟也能及时进步。