datecalculate.jsp 5.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205
  1. <%@page language="java" pageEncoding="UTF-8" %>
  2. <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN" >
  3. <html xmlns="http://www.w3.org/1999/xhtml">
  4. <head>
  5. <title></title>
  6. <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
  7. <%@include file="/commons/include/form.jsp" %>
  8. <link rel="stylesheet" type="text/css" href="../input.css">
  9. <script type="text/javascript" src="${ctx}/js/ueditor2/dialogs/internal.js"></script>
  10. <script type="text/javascript">
  11. var curElement = null,
  12. dateCalculate = '',
  13. name = '',
  14. tableName = '',
  15. isMoble =false,
  16. isMain =true;
  17. $(function(){
  18. //JSON 没有兼容IE时 就用到json2.js
  19. if(typeof JSON == 'undefined'){
  20. $('head').append($("<script type='text/javascript' src='${ctx}/js/util/json2.js'>"));
  21. }
  22. var tableId = editor.tableId;
  23. curElement = editor.selection.getStart();
  24. dateCalculate = curElement.getAttribute("dateCalculate");
  25. if(!dateCalculate){
  26. dateCalculate = '{}';
  27. }
  28. dateCalculate = eval("("+dateCalculate+")");
  29. if(tableId){ //通过表生成
  30. name = curElement.getAttribute("name");
  31. debugger;
  32. var names = name.split(':');
  33. isMain = names[0]=='s'?false:true;
  34. tableName =names[1];
  35. var url = __ctx
  36. + '/platform/form/bpmFormTable/getTableById.ht?tableId='
  37. + tableId;
  38. $.post(url, function(data) {
  39. initFieldsDiv(data,dateCalculate);
  40. });
  41. }
  42. else{ //编辑器设计表单时获取字段并验证字段
  43. var element = curElement.parentNode;
  44. var div = $(element).parents().find("[type='subtable']");
  45. if(div.length>0){
  46. isMain = false;
  47. tableName = div.attr("tablename");
  48. }
  49. var objForm = window.parent.formContainer.getResult();
  50. var params={};
  51. params.html=objForm.form;
  52. params.formDefId=editor.formDefId;
  53. $.post(__ctx + '/platform/form/bpmFormDef/validDesign.ht', params, function(data){
  54. if(data.valid){
  55. initFieldsDiv(data,dateCalculate);
  56. }
  57. else{
  58. alert(data.errorMsg);
  59. }
  60. });
  61. }
  62. if(editor.isMoble_)isMoble =true;
  63. });
  64. function initFieldsDiv(data,dateCalculate){
  65. var mainTable = data.table,pre='';
  66. var dateList = [];
  67. if(isMain){
  68. tableName = mainTable.tableName;
  69. var fieldList = mainTable.fieldList;
  70. getDateList(fieldList,dateList);
  71. pre =isMoble? "data.main." : "m:"+tableName+":";
  72. }else{
  73. var subTableList = mainTable.subTableList,
  74. subTable = {};
  75. for (var i = 0, c; c = subTableList[i++];) {
  76. if(c.tableName == tableName){
  77. subTable = c;
  78. break;
  79. }
  80. }
  81. tableName = subTable.tableName;
  82. getDateList(subTable.fieldList,dateList)
  83. pre=isMoble? "data.sub."+tableName+"." : "s:"+tableName+":";
  84. }
  85. initFields(dateList,pre,dateCalculate);
  86. }
  87. function getDateList(fieldList,dateList){
  88. for (var i = 0, c; c = fieldList[i++];) {
  89. if(c.controlType == 15 || c.fieldType == 'date')
  90. dateList.push(c);
  91. }
  92. }
  93. function initFields(data,pre,dateCalculate){
  94. var startdate = $('#start_date'),
  95. enddate = $('#end_date');
  96. for (var i = 0, c; c = data[i++];) {
  97. var opt = $('<option value="'+pre+c.fieldName+'" >'+c.fieldDesc+'</option>');
  98. var opt1 = $('<option value="'+pre+c.fieldName+'" >'+c.fieldDesc+'</option>');
  99. startdate.append(opt);
  100. enddate.append(opt1);
  101. }
  102. var dateCalculateStart = dateCalculate.dateCalculateStart,
  103. dateCalculateEnd = dateCalculate.dateCalculateEnd,
  104. diffType = dateCalculate.diffType;
  105. // 对日期计算处理
  106. if(dateCalculateStart){
  107. startdate.val(dateCalculateStart);
  108. }
  109. if(dateCalculateEnd){
  110. enddate.val(dateCalculateEnd);
  111. }
  112. if(diffType){
  113. $("[name='diffType']").each(function(){
  114. if($(this).val() == diffType){
  115. $(this).attr("checked","checked");
  116. }
  117. });
  118. }
  119. }
  120. //确定
  121. dialog.onok = function() {
  122. if(!curElement||!dateCalculate)return;
  123. var startdate = $("#start_date").val(),
  124. enddate = $("#end_date").val(),
  125. diffType = $("[name='diffType']:checked").val();
  126. delete dateCalculate['dateCalculateStart'];
  127. delete dateCalculate['dateCalculateEnd'];
  128. delete dateCalculate['diffType'];
  129. delete dateCalculate['isMain'];
  130. if(startdate){
  131. dateCalculate['dateCalculateStart'] = startdate;
  132. }
  133. if(enddate){
  134. dateCalculate['dateCalculateEnd'] = enddate;
  135. }
  136. if(diffType){
  137. dateCalculate['diffType'] = diffType;
  138. }
  139. dateCalculate['isMain'] = isMain;
  140. var str = '';
  141. if(typeof dateCalculate != 'undefined' && dateCalculate!=""){
  142. var str = JSON2.stringify(dateCalculate).replace(/\"/g,"'"); //JS 把所有的双引号 替换成单引号
  143. }
  144. $(curElement).attr("dateCalculate",str);
  145. };
  146. </script>
  147. </head>
  148. <body >
  149. <div id="inputPanel">
  150. <fieldset class="base">
  151. <legend>日期计算</legend>
  152. <table>
  153. <tr>
  154. <th>开始时间:</th>
  155. <td>
  156. <select id="start_date">
  157. <option value="">--请选择--</option>
  158. </select>
  159. </td>
  160. </tr>
  161. <tr>
  162. <th>结束时间:</th>
  163. <td>
  164. <select id="end_date">
  165. <option value="">--请选择--</option>
  166. </select>
  167. </td>
  168. </tr>
  169. <tr>
  170. <th>返回结果:</th>
  171. <td>
  172. <label><input type="radio" name="diffType" value="month" />月份</label>
  173. <label><input type="radio" name="diffType" value="day" />天数</label>
  174. <label><input type="radio" name="diffType" value="hour"/>小时</label>
  175. <label><input type="radio" name="diffType" value="minute"/>分钟</label>
  176. <label><input type="radio" name="diffType" value="second"/>秒数</label>
  177. </td>
  178. </tr>
  179. </table>
  180. </fieldset>
  181. </div>
  182. </body>
  183. </html>