leaveApplyModifyApply.jsp 28 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555
  1. <%@ page contentType="text/html;charset=UTF-8" %>
  2. <%@ include file="/webpage/include/taglib.jsp"%>
  3. <html>
  4. <head>
  5. <title>请假管理</title>
  6. <meta name="decorator" content="default"/>
  7. <script type="text/javascript">
  8. var validateForm;
  9. var count1 = 0;
  10. $(document).ready(function() {
  11. checkContentKeyUp('reason',128);
  12. if($("#applyTime").val()==null || $("#applyTime").val()==''){
  13. $("#applyTime").val(getNowFormatDate());
  14. }
  15. $("#attachment_btn").click(function () {
  16. $("#attachment_file").click();
  17. });
  18. validateForm = $("#inputForm").validate({
  19. submitHandler: function(form){
  20. loading('正在提交,请稍等...');
  21. form.submit();
  22. },
  23. rules:{
  24. },
  25. messages:{
  26. },
  27. errorContainer: "#messageBox",
  28. errorPlacement: function(error, element) {
  29. $("#messageBox").text("输入有误,请先更正。");
  30. if (element.is(":checkbox")||element.is(":radio")||element.parent().is(".input-append")){
  31. error.appendTo(element.parent().parent());
  32. } else {
  33. error.insertAfter(element);
  34. }
  35. }
  36. });
  37. //alert(leaveDetailListRowIdx = ${fn:length(leaveApply.leaveDetailList)};)
  38. lay('.di').each(function(){
  39. laydate.render({
  40. elem: this,
  41. event: 'focus',
  42. type : 'date',
  43. done: function(value){//日期时间被切换后的回调
  44. changeDate(this,1);
  45. }
  46. });
  47. });
  48. });
  49. function doSubmit(obj){//回调函数,在编辑和保存动作时,供openDialog调用提交表单。
  50. var idArr = $("#leaveDetailList tr:visible");
  51. if(idArr.length<1){
  52. parent.layer.msg("请添加请假详情!", {icon: 5});
  53. return false;
  54. }
  55. $(".dis").attr("disabled",false);
  56. if(validateForm.form()){
  57. $("#inputForm").submit();
  58. return true;
  59. }else {
  60. parent.layer.msg("信息未填写完整!", {icon: 5});
  61. }
  62. return false;
  63. }
  64. function deleteRow(obj,index){
  65. $(obj).parent().parent().remove();
  66. str[index] = " ";
  67. mon[index] = 0;
  68. }
  69. function getNowFormatDate() {
  70. var date = new Date();
  71. var seperator1 = "-";
  72. var seperator2 = ":";
  73. var month = date.getMonth() + 1;
  74. var strDate = date.getDate();
  75. month = (month < 10)?"0"+month:month;
  76. strDate = (strDate < 10)?"0"+strDate:strDate;
  77. var currentdate = date.getFullYear() + seperator1 + month + seperator1 + strDate;
  78. return currentdate;
  79. }
  80. function addRow(list, idx, tpl, row){
  81. var idx1 = $("#leaveDetailList tr").length;
  82. tpl = tpl.replace("leaveDetailList[0].startType","leaveDetailList["+leaveDetailListRowIdx+"].startType");
  83. tpl = tpl.replace("leaveDetailList[0].endType","leaveDetailList["+leaveDetailListRowIdx+"].endType");
  84. bornTemplete(list, idx, tpl, row, idx1);
  85. }
  86. function bornTemplete(list, idx, tpl, row, idx1){
  87. $(list).append(Mustache.render(tpl, {
  88. idx: idx, delBtn: true, row: row,
  89. order:idx1 + 1
  90. }));
  91. $(list+idx).find("select").each(function(){
  92. $(this).val($(this).attr("data-value"));
  93. });
  94. $(list+idx).find("input[type='checkbox'], input[type='radio']").each(function(){
  95. var ss = $(this).attr("data-value").split(',');
  96. for (var i=0; i<ss.length; i++){
  97. if($(this).val() == ss[i]){
  98. $(this).attr("checked","checked");
  99. }
  100. }
  101. });
  102. lay('.di').each(function(){
  103. laydate.render({
  104. elem: this,
  105. event: 'focus',
  106. type : 'date',
  107. done: function(value){//日期时间被切换后的回调
  108. changeDate(this,1);
  109. }
  110. });
  111. });
  112. }
  113. function changeDate(index,type) {
  114. debugger;
  115. var i;
  116. if(type==1){
  117. i=$(index.elem[0]).attr("idx");
  118. }else{
  119. i=index;
  120. }
  121. var startTime=$("#leaveDetailList"+i+"_3").val();
  122. var endTime=$("#leaveDetailList"+i+"_5").val();
  123. var strtType = $("#leaveDetailList"+i+"_4").val();
  124. var endType = $("#leaveDetailList"+i+"_6").val();
  125. if(startTime != null && startTime != undefined && startTime != ''
  126. &&endTime != null && endTime != undefined && endTime != ''
  127. &&strtType != null && strtType != undefined && strtType != ''
  128. &&endType != null && endType != undefined && endType != ''){
  129. var startDate = new Date(startTime.replace(/-/g, "/"));
  130. var endDate = new Date(endTime.replace(/-/g, "/"));
  131. var time = endDate.getTime() - startDate.getTime();
  132. var days = parseInt(time / (1000 * 60 * 60 * 24));
  133. if(days<0){
  134. parent.layer.msg("结束时间需大于开始时间!", {icon: 5});
  135. $("#leaveDetailList"+i+"_5").val('');
  136. return;
  137. }
  138. var model= $("#leaveDetailList"+i+"_2").val();
  139. if(model=='工作日'){
  140. $.ajax({
  141. type:'post',
  142. async: false,
  143. url:'${ctx}/leaveapply/leaveApply/weekDays?startDate='+startTime+'&endDate='+endTime,
  144. success:function(data){
  145. if(data==-1){
  146. parent.layer.msg("该年度法定节假日还未出台,无法计算请假时长!", {icon: 5});
  147. $("#leaveDetailList"+i+"_5").val('');
  148. return;
  149. } else if(data == 0){
  150. $("#leaveDetailList"+i+"_7").val(0);
  151. }else{
  152. data=data-1;
  153. if("1" == strtType && "1" == endType){
  154. $("#leaveDetailList"+i+"_7").val( data+0.5);
  155. }else if("1" == strtType && "2" == endType){
  156. $("#leaveDetailList"+i+"_7").val( data+1);
  157. }else if("2" == strtType && "2" == endType){
  158. $("#leaveDetailList"+i+"_7").val( data+0.5);
  159. }else if("2" == strtType && "1" == endType){
  160. $("#leaveDetailList"+i+"_7").val( data);
  161. }
  162. }
  163. },
  164. error:function(data){
  165. }
  166. });
  167. }else{
  168. if("1" == strtType && "1" == endType){
  169. $("#leaveDetailList"+i+"_7").val( days+0.5);
  170. }else if("1" == strtType && "2" == endType){
  171. $("#leaveDetailList"+i+"_7").val( days+1);
  172. }else if("2" == strtType && "2" == endType){
  173. $("#leaveDetailList"+i+"_7").val( days+0.5);
  174. }else if("2" == strtType && "1" == endType){
  175. $("#leaveDetailList"+i+"_7").val( days);
  176. }
  177. }
  178. $("#"+"leaveDetailList"+i+"_7").change();
  179. }
  180. }
  181. function getMoney(value){
  182. var days = 0;
  183. //方法一使用id选择器进行计算。
  184. //获取输入的数字
  185. //自动计算出结果并填充在相应的输入框中
  186. var size = $("#leaveDetailList tr").length+count1;
  187. for (var i = 0;i<=size;i++){
  188. var countday= $("#leaveDetailList"+i+"_7").val();
  189. var delFlag = $("#leaveDetailList"+i+"_delFlag").val();
  190. if (countday!=undefined && isNumber(countday) && delFlag==0){
  191. if(days==0){
  192. days = parseFloat(countday);
  193. }else {
  194. days = (parseFloat(days) + parseFloat(countday));
  195. }
  196. }
  197. }
  198. $("#longTime").val(days);
  199. }
  200. function delRow(obj, prefix){
  201. var id = $(prefix+"_id");
  202. var countday= $(prefix+"_7").val();
  203. var days = $("#longTime").val();
  204. if (isNumber(countday)){
  205. if(days==""){
  206. days = parseFloat(countday);
  207. }else {
  208. days = (parseFloat(days) - parseFloat(countday));
  209. }
  210. }
  211. count1++;
  212. $("#longTime").val(days);
  213. var id = $(prefix+"_id");
  214. var delFlag = $(prefix+"_delFlag");
  215. if (id.val() == ""){
  216. delFlag.val("1");
  217. $(obj).parent().parent().remove();
  218. }else if(delFlag.val() == "0"){
  219. delFlag.val("1");
  220. $(obj).html("&divide;").attr("title", "撤销删除");
  221. $(obj).parent().parent().addClass("error");
  222. $(obj).parent().parent().addClass("hide");
  223. }else if(delFlag.val() == "1"){
  224. delFlag.val("0");
  225. $(obj).html("&times;").attr("title", "删除");
  226. $(obj).parent().parent().removeClass("error");
  227. }
  228. }
  229. function setLeaveType(ids) {
  230. $.ajax({
  231. type:'post',
  232. url:'${ctx}/leaveapply/leaveApply/typeInfo?ids='+ids,
  233. success:function(data){
  234. setUserInfo(data);
  235. }
  236. })
  237. }
  238. function setUserInfo(obj){
  239. addRow('#leaveDetailList', leaveDetailListRowIdx, leaveDetailListTpl);
  240. leaveDetailListRowIdx = leaveDetailListRowIdx + 1;
  241. var row = leaveDetailListRowIdx - 1 ;
  242. $("#"+"leaveDetailList"+row+"_leaveType").val(obj.id);
  243. $("#"+"leaveDetailList"+row+"_1").val(obj.name);
  244. $("#"+"leaveDetailList"+row+"_2").val(obj.model);
  245. $("#"+"leaveDetailList"+row+"_7").val(0);
  246. $("#"+"leaveDetailList"+row+"_7").change();
  247. $("#"+"leaveDetailList"+row+"_4").val("1");
  248. $("#"+"leaveDetailList"+row+"_6").val("2");
  249. if(obj.unit==2){
  250. $("#"+"leaveDetailList"+row+"_4").attr("disabled",true);
  251. $("#"+"leaveDetailList"+row+"_6").attr("disabled",true);
  252. }
  253. }
  254. function isNumber(val){
  255. if(val === "" || val ==null){
  256. return false;
  257. }
  258. var regPos = /^\d+(\.\d+)?$/; //非负浮点数
  259. var regNeg = /^(-(([0-9]+\.[0-9]*[1-9][0-9]*)|([0-9]*[1-9][0-9]*\.[0-9]+)|([0-9]*[1-9][0-9]*)))$/; //负浮点数
  260. if(regPos.test(val) || regNeg.test(val)){
  261. return true;
  262. }else{
  263. return false;
  264. }
  265. }
  266. function insertTitle(tValue){
  267. var list = "${leaveApply.workAttachments}";
  268. var size = (list.split('url')).length-1;
  269. var files = $("#attachment_file")[0].files; for(var i = 0;i<files.length;i++) { var file = files[i];
  270. var attachmentId = "";
  271. var attachmentFlag = "114";
  272. console.log(file);
  273. var timestamp=new Date().getTime();
  274. var storeAs = "attachment-file/leaveApply/"+timestamp+"/"+file['name'];
  275. var uploadPath="http://gangwan-app.oss-cn-hangzhou.aliyuncs.com/"+storeAs;/*将这段字符串存到数据库即可*/
  276. var divId = "_attachment";
  277. $("#addFile"+divId).show();
  278. multipartUploadWithSts(storeAs, file,attachmentId,attachmentFlag,uploadPath,divId,size);}
  279. }
  280. </script>
  281. <style>
  282. /*超过5个汉字,调整label的长度,以下是配套的*/
  283. .layui-item .layui-form-label{
  284. width:90px;
  285. }
  286. .form-group .layui-item .layui-input-block,
  287. .query .layui-input-block {
  288. margin-left: 116px;
  289. }
  290. </style>
  291. </head>
  292. <body>
  293. <div class="single-form">
  294. <div class="container">
  295. <form:form id="inputForm" modelAttribute="leaveApply" action="${ctx}/leaveapply/leaveApply/saveAudit" method="post" class="form-horizontal" >
  296. <form:hidden path="id"/>
  297. <form:hidden path="basicInfo.id"/>
  298. <form:hidden path="home"/>
  299. <form:hidden path="act.taskId"/>
  300. <form:hidden path="act.taskName"/>
  301. <form:hidden path="act.taskDefKey"/>
  302. <form:hidden path="act.procInsId"/>
  303. <form:hidden path="act.procDefId"/>
  304. <form:hidden id="flag" path="act.flag"/>
  305. <div class="form-group layui-row first">
  306. <div class="form-group-label"><h2>基础信息</h2></div>
  307. <div class="layui-item layui-col-sm6">
  308. <label class="layui-form-label"><span class="require-item">*</span>姓名:</label>
  309. <div class="layui-input-block">
  310. <form:input id="name" path="basicInfo.name" htmlEscape="false" readonly="true" class="form-control layui-input" />
  311. </div>
  312. </div>
  313. <div class="layui-item layui-col-sm6">
  314. <label class="layui-form-label"><span class="require-item">*</span>请假编号:</label>
  315. <div class="layui-input-block">
  316. <div class="input-group">
  317. <form:input id="no" path="no" htmlEscape="false" readonly="true" class="form-control layui-input"/>
  318. <span class="input-group-btn">
  319. <label class="form-status"><c:choose><c:when test="${not empty leaveApply.status}">${fns:getDictLabel(leaveApply.status, 'leave_audit', '')}</c:when><c:otherwise>新增</c:otherwise></c:choose></label>
  320. </span>
  321. </div>
  322. </div>
  323. </div>
  324. <div class="layui-item layui-col-sm6">
  325. <label class="layui-form-label"><span class="require-item">*</span>工号:</label>
  326. <div class="layui-input-block">
  327. <form:input readonly="true" path="basicInfo.no" htmlEscape="false" class="form-control layui-input"/>
  328. </div>
  329. </div>
  330. <div class="layui-item layui-col-sm6">
  331. <label class="layui-form-label"><span class="require-item">*</span>员工状态:</label>
  332. <div class="layui-input-block">
  333. <form:input path="basicInfo.status" htmlEscape="false" readonly="true" class="form-control layui-input"/>
  334. </div>
  335. </div>
  336. <div class="layui-item layui-col-sm6">
  337. <label class="layui-form-label"><span class="require-item">*</span>部门:</label>
  338. <div class="layui-input-block">
  339. <form:input readonly="true" path="basicInfo.office.name" htmlEscape="false" class="form-control layui-input"/>
  340. </div>
  341. </div>
  342. <div class="layui-item layui-col-sm6">
  343. <label class="layui-form-label"><span class="require-item">*</span>职级:</label>
  344. <div class="layui-input-block">
  345. <form:input readonly="true" path="basicInfo.jobGrade.name" htmlEscape="false" class="form-control layui-input"/>
  346. </div>
  347. </div>
  348. <div class="layui-item layui-col-sm6">
  349. <label class="layui-form-label"><span class="require-item">*</span>申请日期:</label>
  350. <div class="layui-input-block">
  351. <input id="applyTime" name="applyTime" readonly="true" type="text" maxlength="20" class="laydate-icondate form-control layer-date required layui-input laydate-icon"
  352. value="<fmt:formatDate value="${leaveApply.applyTime}" pattern="yyyy-MM-dd"/>"/>
  353. </div>
  354. </div>
  355. <div class="layui-item layui-col-sm12 with-textarea">
  356. <label class="layui-form-label">请假原因:</label>
  357. <div class="layui-input-block">
  358. <form:textarea path="reason" htmlEscape="false" rows="3" onkeyup="checkContentKeyUp('reason',128);" maxlength="128" class="form-control "/>
  359. </div>
  360. <span id="contentMsg" style="float: right"></span>
  361. </div>
  362. </div>
  363. <div class="form-group layui-row">
  364. <div class="form-group-label"><h2>假期详情</h2></div>
  365. <div class="layui-item nav-btns ">
  366. <sys:treeselectlea id="exampleInfo" name="" value="" labelName="" labelValue="" title="假期类型" url="/leaveapply/leaveApply/treeDataTypeInfo" cssClass="form-control required "
  367. allowClear="true" notAllowSelectParent="true"/>
  368. </div>
  369. <div class="layui-item layui-col-xs12 form-table-container" >
  370. <table id="contentTable" class="table table-bordered table-condensed can-edit no-bottom-margin">
  371. <thead>
  372. <tr>
  373. <th width="150px">假期名称</th>
  374. <th width="150px">计假模式</th>
  375. <th width="150px" colspan="2" >开始时间</th>
  376. <th width="150px" colspan="2">结束时间</th>
  377. <th width="100px">请假天数</th>
  378. <th width="100px">操作</th>
  379. </tr>
  380. </thead>
  381. <tbody id="leaveDetailList">
  382. <c:if test="${not empty leaveApply.leaveDetailList}">
  383. <c:forEach items="${leaveApply.leaveDetailList}" var="leaveDetail" varStatus="index">
  384. <tr id="leaveDetailList${index.index}">
  385. <td class="hide">
  386. <input id="leaveDetailList${index.index}_id" name="leaveDetailList[${index.index}].id" type="hidden" value="${leaveDetail.id}"/>
  387. <input id="leaveDetailList${index.index}_leaveType" name="leaveDetailList[${index.index}].leaveType.id" type="hidden" value="${leaveDetail.leaveType.id}"/>
  388. <input id="leaveDetailList${index.index}_delFlag" name="leaveDetailList[${index.index}].delFlag" type="hidden" value="0"/>
  389. <input id="leaveDetailList${index.index}_flag" name="leaveDetailList[${index.index}].flag" type="hidden" value="${leaveDetail.flat}"/>
  390. </td>
  391. <td>
  392. <input id="leaveDetailList${index.index}_1" readonly="true" type="text" value="${leaveDetail.leaveType.name}" class="form-control "/>
  393. </td>
  394. <td>
  395. <input id="leaveDetailList${index.index}_2" readonly="true" type="text" value="${fns:getDictLabel(leaveDetail.leaveType.model, 'fake_model', '')}" class="form-control "/>
  396. </td>
  397. <td>
  398. <input idx="${index.index}" style="width: 150px" id="leaveDetailList${index.index}_3" name="leaveDetailList[${index.index}].startTime" type="text" maxlength="20" class="di laydate-icondate required form-control layer-date layui-input laydate-icon"
  399. value="<fmt:formatDate value="${leaveDetail.startTime}" pattern="yyyy-MM-dd"/>"/>
  400. </input>
  401. </td>
  402. <td>
  403. <c:if test="${leaveDetail.leaveType.unit eq '2'}">
  404. <form:select style="width: 150px" id="leaveDetailList${index.index}_4" path="leaveDetailList[${index.index}].startType" onchange="changeDate('${index.index}','2')" disabled="true" class="form-control required simple-select dis">
  405. <form:options items="${fns:getDictList('date_type')}" itemLabel="label" itemValue="value" htmlEscape="false"/>
  406. </form:select>
  407. </c:if>
  408. <c:if test="${leaveDetail.leaveType.unit eq '1'}">
  409. <form:select style="width: 150px" id="leaveDetailList${index.index}_4" path="leaveDetailList[${index.index}].startType" onchange="changeDate('${index.index}','2')" class="form-control required simple-select dis">
  410. <form:options items="${fns:getDictList('date_type')}" itemLabel="label" itemValue="value" htmlEscape="false"/>
  411. </form:select>
  412. </c:if>
  413. </td>
  414. <td>
  415. <input idx="${index.index}" style="width: 150px" id="leaveDetailList${index.index}_5" name="leaveDetailList[${index.index}].endTime"type="text" maxlength="20" class="di laydate-icondate required form-control layer-date layui-input laydate-icon "
  416. value="<fmt:formatDate value="${leaveDetail.endTime}" pattern="yyyy-MM-dd"/>"/>
  417. </input>
  418. </td>
  419. <td>
  420. <c:if test="${leaveDetail.leaveType.unit eq '2'}">
  421. <form:select style="width: 150px" id="leaveDetailList${index.index}_6" path="leaveDetailList[${index.index}].endType" onchange="changeDate('${index.index}','2')" disabled="true" class="form-control required simple-select dis">
  422. <form:options items="${fns:getDictList('date_type')}" itemLabel="label" itemValue="value" htmlEscape="false"/>
  423. </form:select>
  424. </c:if>
  425. <c:if test="${leaveDetail.leaveType.unit eq '1'}">
  426. <form:select style="width: 150px" id="leaveDetailList${index.index}_6" path="leaveDetailList[${index.index}].endType" onchange="changeDate('${index.index}','2')" class="form-control required simple-select dis">
  427. <form:options items="${fns:getDictList('date_type')}" itemLabel="label" itemValue="value" htmlEscape="false"/>
  428. </form:select>
  429. </c:if>
  430. </td>
  431. <td>
  432. <input id="leaveDetailList${index.index}_7" onchange="getMoney(this.value)" name="leaveDetailList[${index.index}].days" type="text" value="${leaveDetail.days}" readonly="true" class="form-control number required"/>
  433. </td>
  434. <td class="text-center op-td" >
  435. <span class="op-btn op-btn-delete" id="leaveDetailList${index.index}_span" onclick="delRow(this, '#leaveDetailList${index.index}')" title="删除"><i class="glyphicon glyphicon-remove"></i>&nbsp;删除</span>
  436. </td>
  437. </tr>
  438. </c:forEach>
  439. </c:if>
  440. </tbody>
  441. </table>
  442. <table id="contentMoneys" class="table table-bordered table-condensed can-edit summary">
  443. <tr>
  444. <td style="vertical-align:middle;width:300px;text-align: center;"><label><font color="red">*</font>请假时长:</label></td>
  445. <td >
  446. <input htmlEscape="false" id="longTime" name="longTime" value="${leaveApply.longTime}" readonly="true" class="form-control layui-input" />
  447. </td>
  448. </tr>
  449. </table>
  450. <script type="text/template" id="leaveDetailListTpl">//<!--
  451. <tr id="leaveDetailList{{idx}}">
  452. <td class="hide">
  453. <input id="leaveDetailList{{idx}}_id" name="leaveDetailList[{{idx}}].id" type="hidden" value="{{row.id}}"/>
  454. <input id="leaveDetailList{{idx}}_leaveType" name="leaveDetailList[{{idx}}].leaveType.id" type="hidden" value="{{row.leaveType.id}}"/>
  455. <input id="leaveDetailList{{idx}}_delFlag" name="leaveDetailList[{{idx}}].delFlag" type="hidden" value="0"/>
  456. <input id="leaveDetailList{idx}}_flag" name="leaveDetailList[{{idx}}].flag" type="hidden" value="{{row.flag}}"/>
  457. </td>
  458. <td>
  459. <input id="leaveDetailList{{idx}}_1" name="leaveDetailList[{{idx}}].leaveType.name" type="text" value="{{row.leaveType.name}}" readonly="true" class="form-control "/>
  460. </td>
  461. <td>
  462. <input id="leaveDetailList{{idx}}_2" name="leaveDetailList[{{idx}}].leaveType.model" type="text" value="{{row.leaveType.model}}" readonly="true" class="form-control "/>
  463. </td>
  464. <td>
  465. <input idx="{{idx}}" style="width: 150px" id="leaveDetailList{{idx}}_3" name="leaveDetailList[{{idx}}].startTime" type="text" maxlength="20" class="di laydate-icondate required form-control layer-date layui-input laydate-icon "/>
  466. </input>
  467. </td>
  468. <td>
  469. <form:select style="width: 150px" id="leaveDetailList{{idx}}_4" path="leaveDetailList[0].startType" onchange="changeDate('{{idx}}','2')" class="form-control required simple-select dis">
  470. <form:options items="${fns:getDictList('date_type')}" itemLabel="label" itemValue="value" htmlEscape="false"/>
  471. </form:select>
  472. </td>
  473. <td>
  474. <input idx="{{idx}}" style="width: 150px" id="leaveDetailList{{idx}}_5" name="leaveDetailList[{{idx}}].endTime" type="text" maxlength="20" class=" di laydate-icondate required form-control layer-date layui-input laydate-icon "/>
  475. </input>
  476. </td>
  477. <td>
  478. <form:select style="width: 150px" id="leaveDetailList{{idx}}_6" path="leaveDetailList[0].endType" onchange="changeDate('{{idx}}','2')" class="form-control required simple-select dis">
  479. <form:options items="${fns:getDictList('date_type')}" itemLabel="label" itemValue="value" htmlEscape="false"/>
  480. </form:select>
  481. </td>
  482. <td>
  483. <input id="leaveDetailList{{idx}}_7" onchange="getMoney(this.value)" name="leaveDetailList[{{idx}}].days" type="text" value="{{row.days}}" readonly="true" class="form-control number required"/>
  484. </td>
  485. <td class="text-center op-td" >
  486. {{#delBtn}}<span class="op-btn op-btn-delete" id="leaveDetailList{{idx}}_span" onclick="delRow(this, '#leaveDetailList{{idx}}')" title="删除"><i class="glyphicon glyphicon-remove"></i>&nbsp;删除</span>{{/delBtn}}
  487. </td>
  488. </tr>//-->
  489. </script>
  490. <script type="text/javascript">
  491. var leaveDetailListRowIdx = 0, leaveDetailListTpl = $("#leaveDetailListTpl").html().replace(/(\/\/\<!\-\-)|(\/\/\-\->)/g,"");
  492. if($("#id").val()){
  493. leaveDetailListRowIdx = ${fn:length(leaveApply.leaveDetailList)};
  494. }
  495. $(document).ready(function() {
  496. });
  497. </script>
  498. </div>
  499. </div>
  500. <div class="form-group layui-row">
  501. <div class="form-group-label"><h2>历史详情</h2></div>
  502. <div class="layui-item layui-col-xs12 form-table-container" >
  503. <table id="hisContentTable" class="table table-bordered table-condensed can-edit no-bottom-margin">
  504. <thead>
  505. <tr>
  506. <th width="200px">假期名称</th>
  507. <th width="200px">累计天数</th>
  508. <th width="200px">累计次数</th>
  509. <th width="200px">上限天数</th>
  510. </tr>
  511. </thead>
  512. <tbody id="hisLeaveDetailList">
  513. <c:if test="${not empty leaveApply.hisLeaveDetailList}">
  514. <c:forEach items="${leaveApply.hisLeaveDetailList}" var="leaveDetail" varStatus="index">
  515. <tr id="hisLeaveDetailList${index.index}">
  516. <td>
  517. <input id="hisLeaveDetailList${index.index}_1" readonly="true" type="text" value="${leaveDetail.name}" class="form-control "/>
  518. </td>
  519. <td>
  520. <input id="hisLeaveDetailList${index.index}_2" readonly="true" type="text" value="${leaveDetail.sumDays}" class="form-control "/>
  521. </td>
  522. <td>
  523. <input id="hisLeaveDetailList${index.index}_3" readonly="true" type="text" value="${leaveDetail.counts}" class="form-control require"/>
  524. </td>
  525. <td>
  526. <input id="hisLeaveDetailList${index.index}_4" readonly="true" type="text" value="${leaveDetail.days}" class="form-control require"/>
  527. </td>
  528. </tr>
  529. </c:forEach>
  530. </c:if>
  531. </tbody>
  532. </table>
  533. </div>
  534. </div>
  535. <div class="form-group layui-row page-end"></div>
  536. </form:form>
  537. </div>
  538. </div>
  539. </body>
  540. </html>