WorkflowAddRequestBody.jsp
17.9 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
<DIV>
<BUTTON class=btn accessKey=B type=button onclick="doSubmit()"><U>B</U>-<%=SystemEnv.getHtmlLabelName(615,language)%></button>
<!--BUTTON class=btnSave accessKey=S type=button onclick="doSave()"><U>S</U>-<%=SystemEnv.getHtmlLabelName(86,language)%></button-->
</DIV>
<BR>
<!--请求的标题开始 -->
<DIV align="center">
<font style="font-size:14pt;FONT-WEIGHT: bold"><%=Util.toScreen(workflowname,language)%></font>
</DIV>
<!--请求的标题结束 -->
<BR>
<TABLE class=form cellpadding="0" cellspacing="0" border="1">
<COLGROUP>
<COL width="20%">
<COL width="80%">
<!--新建的第一行,包括说明和重要性 -->
<TR class=separator>
<TD class=Sep1 colSpan=2></TD>
</TR>
<input type="hidden" name=requestname value = "<%=Util.toScreenToEdit( workflowname+"-"+userName+"-"+currentdate,language )%>">
<input type="hidden" name="requestlevel" value="0">
<!--第一行结束 -->
<%
//查询表单或者单据的字段,字段的名称,字段的HTML类型和字段的类型(基于HTML类型的一个扩展)
ArrayList fieldids=new ArrayList(); //字段队列
ArrayList fieldorders = new ArrayList(); //字段显示顺序队列 (单据文件不需要)
ArrayList languageids=new ArrayList(); //字段显示的语言(单据文件不需要)
ArrayList fieldlabels=new ArrayList(); //单据的字段的label队列
ArrayList fieldhtmltypes=new ArrayList(); //单据的字段的html type队列
ArrayList fieldtypes=new ArrayList(); //单据的字段的type队列
ArrayList fieldnames=new ArrayList(); //单据的字段的表字段名队列
ArrayList fieldviewtypes=new ArrayList(); //单据是否是detail表的字段1:是 0:否(如果是,将不显示)
if(isbill.equals("0")) {
RecordSet.executeProc("workflow_FieldID_Select",formid+"");
while(RecordSet.next()){
fieldids.add(Util.null2String(RecordSet.getString(1)));
fieldorders.add(Util.null2String(RecordSet.getString(2)));
}
RecordSet.executeProc("workflow_FieldLabel_Select",formid+"");
while(RecordSet.next()){
fieldlabels.add(Util.null2String(RecordSet.getString("fieldlable")));
languageids.add(Util.null2String(RecordSet.getString("languageid")));
}
}
else {
RecordSet.executeProc("workflow_billfield_Select",formid+"");
while(RecordSet.next()){
fieldids.add(Util.null2String(RecordSet.getString("id")));
fieldlabels.add(Util.null2String(RecordSet.getString("fieldlabel")));
fieldhtmltypes.add(Util.null2String(RecordSet.getString("fieldhtmltype")));
fieldtypes.add(Util.null2String(RecordSet.getString("type")));
fieldnames.add(Util.null2String(RecordSet.getString("fieldname")));
fieldviewtypes.add(Util.null2String(RecordSet.getString("viewtype")));
}
}
// 确定字段是否显示,是否可以编辑,是否必须输入
ArrayList isfieldids=new ArrayList(); //字段队列
ArrayList isviews=new ArrayList(); //字段是否显示队列
ArrayList isedits=new ArrayList(); //字段是否可以编辑队列
ArrayList ismands=new ArrayList(); //字段是否必须输入队列
RecordSet.executeProc("workflow_FieldForm_Select",nodeid+"");
while(RecordSet.next()){
isfieldids.add(Util.null2String(RecordSet.getString("fieldid")));
isviews.add(Util.null2String(RecordSet.getString("isview")));
isedits.add(Util.null2String(RecordSet.getString("isedit")));
ismands.add(Util.null2String(RecordSet.getString("ismandatory")));
}
// 得到每个字段的信息并在页面显示
for(int i=0;i<fieldids.size();i++){ // 循环开始
int tmpindex = i ;
if(isbill.equals("0")) tmpindex = fieldorders.indexOf(""+i); // 如果是表单, 得到表单顺序对应的 i
String fieldid=(String)fieldids.get(tmpindex); //字段id
if( isbill.equals("1")) {
String viewtype = (String)fieldviewtypes.get(tmpindex) ; // 如果是单据的从表字段,不显示
if( viewtype.equals("1") ) continue ;
}
String isview="0" ; //字段是否显示
String isedit="0" ; //字段是否可以编辑
String ismand="0" ; //字段是否必须输入
int isfieldidindex = isfieldids.indexOf(fieldid) ;
if( isfieldidindex != -1 ) {
isview=(String)isviews.get(isfieldidindex); //字段是否显示
isedit=(String)isedits.get(isfieldidindex); //字段是否可以编辑
ismand=(String)ismands.get(isfieldidindex); //字段是否必须输入
}
if( ! isview.equals("1") ) continue ; //不显示即进行下一步循环
String fieldname = "" ; //字段数据库表中的字段名
String fieldhtmltype = "" ; //字段的页面类型
String fieldtype = "" ; //字段的类型
String fieldlable = "" ; //字段显示名
int languageid = 0 ;
if(isbill.equals("0")) {
languageid= Util.getIntValue( (String)languageids.get(tmpindex), 0 ) ; //需要更新
fieldhtmltype=FieldComInfo.getFieldhtmltype(fieldid);
fieldtype=FieldComInfo.getFieldType(fieldid);
fieldlable=(String)fieldlabels.get(tmpindex);
fieldname=FieldComInfo.getFieldname(fieldid);
}
else {
languageid = language ;
fieldname=(String)fieldnames.get(tmpindex);
fieldhtmltype=(String)fieldhtmltypes.get(tmpindex);
fieldtype=(String)fieldtypes.get(tmpindex);
fieldlable = SystemEnv.getHtmlLabelName( Util.getIntValue((String)fieldlabels.get(tmpindex),0),languageid );
}
if(fieldname.equals("manager")) {
String tmpmanagerid = ResourceComInfo.getManagerID(""+userid);
%>
<input type=hidden name="field<%=fieldid%>" value="<%=tmpmanagerid%>"
<%
continue;
}
if(fieldname.equals("begindate")) newfromdate="field"+fieldid; //开始日期,主要为开始日期不大于结束日期进行比较
if(fieldname.equals("enddate")) newenddate="field"+fieldid; //结束日期,主要为开始日期不大于结束日期进行比较
if(ismand.equals("1")) needcheck+=",field"+fieldid; //如果必须输入,加入必须输入的检查中
// 下面开始逐行显示字段
%>
<tr>
<td <%if(fieldhtmltype.equals("2")){%> valign=top <%}%>> <%=Util.toScreen(fieldlable,languageid)%> </td>
<td class=field>
<%
if(fieldhtmltype.equals("1")){ // 单行文本框
if(fieldtype.equals("1")){ // 单行文本框中的文本
if(isedit.equals("1")){
if(ismand.equals("1")) {
%>
<input type=text name="field<%=fieldid%>" size=50 onChange="checkinput('field<%=fieldid%>','field<%=fieldid%>span')">
<span id="field<%=fieldid%>span"><img src="/images/BacoError_wev8.gif" align=absmiddle></span>
<%
}else{%>
<input type=text name="field<%=fieldid%>" value="" size=50>
<% }
}
}
else if(fieldtype.equals("2")){ // 单行文本框中的整型
if(isedit.equals("1")){
if(ismand.equals("1")) {
%>
<input type=text name="field<%=fieldid%>" size=10
onKeyPress="ItemCount_KeyPress()" onBlur="checkcount1(this);checkinput('field<%=fieldid%>','field<%=fieldid%>span')">
<span id="field<%=fieldid%>span"><img src="/images/BacoError_wev8.gif" align=absmiddle></span>
<%
}else{%>
<input type=text name="field<%=fieldid%>" size=10 onKeyPress="ItemCount_KeyPress()" onBlur='checkcount1(this)'>
<% }
}
}
else if(fieldtype.equals("3")){ // 单行文本框中的浮点型
if(isedit.equals("1")){
if(ismand.equals("1")) {
%>
<input type=text name="field<%=fieldid%>" size=10
onKeyPress="ItemNum_KeyPress()" onBlur="checknumber1(this);checkinput('field<%=fieldid%>','field<%=fieldid%>span')">
<span id="field<%=fieldid%>span"><img src="/images/BacoError_wev8.gif" align=absmiddle></span>
<%
}else{%>
<input type=text name="field<%=fieldid%>" size=10 onKeyPress="ItemNum_KeyPress()" onBlur='checknumber1(this)'>
<% }
}
}
} // 单行文本框条件结束
else if(fieldhtmltype.equals("2")){ // 多行文本框
if(isedit.equals("1")){
if(ismand.equals("1")) {
%>
<textarea name="field<%=fieldid%>" onChange="checkinput('field<%=fieldid%>','field<%=fieldid%>span')"
rows="4" cols="40" style="width:80%"></textarea>
<span id="field<%=fieldid%>span"><img src="/images/BacoError_wev8.gif" align=absmiddle></span>
<%
}else{
%>
<textarea name="field<%=fieldid%>" rows="4" cols="40" style="width:80%"></textarea>
<% }
}
} // 多行文本框条件结束
else if(fieldhtmltype.equals("3")){ // 浏览按钮 (涉及workflow_broswerurl表)
String url=BrowserComInfo.getBrowserurl(fieldtype); // 浏览按钮弹出页面的url
String linkurl=BrowserComInfo.getLinkurl(fieldtype); // 浏览值点击的时候链接的url
String showname = ""; // 新建时候默认值显示的名称
String showid = ""; // 新建时候默认值
if(fieldtype.equals("8") && !prjid.equals("")){ //浏览按钮为项目,从前面的参数中获得项目默认值
showid = "" + Util.getIntValue(prjid,0);
}else if((fieldtype.equals("9") || fieldtype.equals("37")) && !docid.equals("")){ //浏览按钮为文档,从前面的参数中获得文档默认值
showid = "" + Util.getIntValue(docid,0);
}else if((fieldtype.equals("1") ||fieldtype.equals("17")) && !hrmid.equals("")){ //浏览按钮为人,从前面的参数中获得人默认值
showid = "" + Util.getIntValue(hrmid,0);
}else if((fieldtype.equals("7") || fieldtype.equals("18")) && !crmid.equals("")){ //浏览按钮为CRM,从前面的参数中获得CRM默认值
showid = "" + Util.getIntValue(crmid,0);
}else if(fieldtype.equals("4") && !hrmid.equals("")){ //浏览按钮为部门,从前面的参数中获得人默认值(由人力资源的部门得到部门默认值)
showid = "" + Util.getIntValue(ResourceComInfo.getDepartmentID(hrmid),0);
}else if(fieldtype.equals("24") && !hrmid.equals("")){ //浏览按钮为职务,从前面的参数中获得人默认值(由人力资源的职务得到职务默认值)
showid = "" + Util.getIntValue(ResourceComInfo.getJobTitle(hrmid),0);
}else if(fieldtype.equals("32") && !hrmid.equals("")){ //浏览按钮为职务,从前面的参数中获得人默认值(由人力资源的职务得到职务默认值)
showid = "" + Util.getIntValue(request.getParameter("TrainPlanId"),0);
}
if(showid.equals("0")) showid = "" ;
if(! showid.equals("")){ // 获得默认值对应的默认显示值,比如从部门id获得部门名称
String tablename=BrowserComInfo.getBrowsertablename(fieldtype);
String columname=BrowserComInfo.getBrowsercolumname(fieldtype);
String keycolumname=BrowserComInfo.getBrowserkeycolumname(fieldtype);
String sql="select "+columname+" from "+tablename+" where "+keycolumname+"="+showid;
RecordSet.executeSql(sql);
if(RecordSet.next()) {
if(!linkurl.equals(""))
showname = "<a href='"+linkurl+showid+"'>"+RecordSet.getString(1)+"</a> ";
else
showname =RecordSet.getString(1) ;
}
}
if(fieldtype.equals("2")){ // 浏览按钮为日期
showname = currentdate;
showid = currentdate;
}
if(isedit.equals("1")){
if( !fieldtype.equals("37") ) { // 多文档特殊处理
%>
<button class=Browser onclick="onShowBrowser('<%=fieldid%>','<%=url%>','<%=linkurl%>','<%=fieldtype%>','<%=ismand%>')" title="选择"></button>
<% } else { // 如果是多文档字段,加入新建文档按钮
%>
<button class=AddDoc onclick="onShowBrowser('<%=fieldid%>','<%=url%>','<%=linkurl%>','<%=fieldtype%>','<%=ismand%>')" > 添加</button>  <button class=AddDoc onclick="onNewDoc(<%=fieldid%>)" title="新建">新建</button>
<% }
}
%>
<input type=hidden name="field<%=fieldid%>" value="<%=showid%>">
<span id="field<%=fieldid%>span"><%=Util.toScreen(showname,language)%>
<% if(ismand.equals("1") && showname.equals("")) {
%>
<img src="/images/BacoError_wev8.gif" align=absmiddle>
<%
}
%>
</span>
<%
} // 浏览按钮条件结束
else if(fieldhtmltype.equals("4")) { // check框
%>
<input type=checkbox value=1 name="field<%=fieldid%>" <%if(isedit.equals("0")){%> DISABLED <%}%> >
<%
} // check框条件结束
else if(fieldhtmltype.equals("5")){ // 选择框 select
%>
<select name="field<%=fieldid%>" <%if(isedit.equals("0")){%> DISABLED <%}%> >
<%
// 查询选择框的所有可以选择的值
char flag= Util.getSeparator() ;
rs.executeProc("workflow_SelectItemSelectByid",""+fieldid+flag+isbill);
while(rs.next()){
String tmpselectvalue = Util.null2String(rs.getString("selectvalue"));
String tmpselectname = Util.toScreen(rs.getString("selectname"),language);
%>
<option value="<%=tmpselectvalue%>"><%=tmpselectname%></option>
<%
}
%>
</select>
<%
} // 选择框条件结束 所有条件判定结束
%>
</td>
</tr>
<%
} // 循环结束
%>
<input type="hidden" name=remark >
</table>
<input type=hidden name="workflowid" value="<%=workflowid%>"> <!--工作流id-->
<input type=hidden name="workflowtype" value="<%=workflowtype%>"> <!--工作流类型-->
<input type=hidden name="nodeid" value="<%=nodeid%>"> <!--当前节点id-->
<input type=hidden name="nodetype" value="0"> <!--当前节点类型-->
<input type=hidden name="src"> <!--操作类型 save和submit,reject,delete-->
<input type=hidden name="iscreate" value="1"> <!--是否为创建节点 是:1 否 0 -->
<input type=hidden name="formid" value="<%=formid%>"> <!--表单的id-->
<input type=hidden name ="topage" value="<%=topage%>"> <!--创建结束后返回的页面-->
<input type=hidden name ="isbill" value="<%=isbill%>"> <!--是否单据 0:否 1:是-->
<input type=hidden name ="method"> <!--新建文档时候 method 为docnew-->
<script language=javascript>
function onNewDoc(fieldid) {
frmmain.action = "RequestOperation.jsp" ;
frmmain.method.value = "docnew_"+fieldid ;
if(check_form(document.frmmain,'requestname')){
document.frmmain.src.value='save';
document.frmmain.submit();
}
}
function DateCompare(YearFrom, MonthFrom, DayFrom,YearTo, MonthTo,DayTo)
{
YearFrom = parseInt(YearFrom,10);
MonthFrom = parseInt(MonthFrom,10);
DayFrom = parseInt(DayFrom,10);
YearTo = parseInt(YearTo,10);
MonthTo = parseInt(MonthTo,10);
DayTo = parseInt(DayTo,10);
if(YearTo<YearFrom)
return false;
else{
if(YearTo==YearFrom){
if(MonthTo<MonthFrom)
return false;
else{
if(MonthTo==MonthFrom){
if(DayTo<DayFrom)
return false;
else
return true;
}
else
return true;
}
}
else
return true;
}
}
function checktimeok(){ <!-- 结束日期不能小于开始日期 -->
if ("<%=newenddate%>"!="b" && "<%=newfromdate%>"!="a" && document.frmmain.<%=newenddate%>.value != "")
{
YearFrom=document.frmmain.<%=newfromdate%>.value.substring(0,4);
MonthFrom=document.frmmain.<%=newfromdate%>.value.substring(5,7);
DayFrom=document.frmmain.<%=newfromdate%>.value.substring(8,10);
YearTo=document.frmmain.<%=newenddate%>.value.substring(0,4);
MonthTo=document.frmmain.<%=newenddate%>.value.substring(5,7);
DayTo=document.frmmain.<%=newenddate%>.value.substring(8,10);
if (!DateCompare(YearFrom, MonthFrom, DayFrom,YearTo, MonthTo,DayTo )){
window.alert("结束时间不能小于起始时间");
return false;
}
}
return true;
}
function doSave(){ <!-- 点击保存按钮 -->
if(check_form(document.frmmain,'<%=needcheck%>')){
if(checktimeok()) {
document.frmmain.src.value='save';
document.frmmain.submit();
}
}
}
function doSubmit(){ <!-- 点击提交 -->
if(check_form(document.frmmain,'<%=needcheck%>')){
if(checktimeok()) {
document.frmmain.src.value='submit';
document.all("remark").value += "\n<%=userName%> <%=currentdate%> <%=currenttime%>" ;
document.frmmain.submit();
}
}
}
</script>