taskFormConfig.jsp 8.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289
  1. <%@ page language="java" contentType="text/html; charset=UTF-8"
  2. pageEncoding="UTF-8"%>
  3. <script type="text/javascript">
  4. <!--
  5. var formFieldsEditCount = 0;
  6. var formId = '${id}';
  7. $(function(){
  8. _task_form_fields_dg=$('#task-forms-fields-list').datagrid({
  9. //title:"Listener",
  10. //url:'${ctx}/wf/procdef/procdef!search.action',//
  11. singleSelect:true,
  12. width:700,
  13. height:300,
  14. iconCls:'icon-edit',
  15. //fit:true,
  16. //idField:'id',
  17. //pagination:true,
  18. //pageSize:15,
  19. //pageNumber:1,
  20. //pageList:[10,15],
  21. rownumbers:true,
  22. //sortName:'id',
  23. //sortOrder:'asc',
  24. striped:true,
  25. toolbar:[{
  26. text:'New',
  27. iconCls:'icon-add',
  28. handler:function(){
  29. if(formFieldsEditCount>0){
  30. $.messager.alert("error","有可编辑的单元格,不能添加",'error');
  31. return;
  32. }
  33. $('#task-forms-fields-list').datagrid('appendRow',{
  34. id:'',
  35. fieldName:'',
  36. type:'',
  37. value:'',
  38. exp:'',
  39. remark:'',
  40. action:''
  41. });
  42. var index = $('#task-forms-fields-list').datagrid('getRows').length-1;
  43. $('#task-forms-fields-list').datagrid('beginEdit', index);
  44. }
  45. }],
  46. onDblClickRow:function(rowIndex,rowData){
  47. editFormField(rowIndex);
  48. },
  49. onBeforeEdit:function(index,row){
  50. row.editing = true;
  51. $(this).datagrid('refreshRow', index);
  52. formFieldsEditCount++;
  53. },
  54. onAfterEdit:function(index,row){
  55. row.editing = false;
  56. $(this).datagrid('refreshRow', index);
  57. formFieldsEditCount--;
  58. },
  59. onCancelEdit:function(index,row){
  60. row.editing = false;
  61. $(this).datagrid('refreshRow', index);
  62. formFieldsEditCount--;
  63. }
  64. });
  65. $('#fieldSaveBt').linkbutton({
  66. iconCls:"icon-save"
  67. });
  68. $('#fieldCancelBt').linkbutton({
  69. iconCls:"icon-cancel"
  70. });
  71. populateFormProperties();
  72. });
  73. function formFieldsActionFormatter(value,rowData,rowIndex){
  74. var id = rowIndex;
  75. var s='<img onclick="saveFormField('+id+')" src="plug-in/designer/img/ok.png" title="'+"确定"+'" style="cursor:hand;"/>';
  76. var c='<img onclick="cancelFormField('+id+')" src="plug-in/designer/img/cancel.png" title="'+"取消"+'" style="cursor:hand;"/>';
  77. var e='<img onclick="editFormField('+id+')" src="plug-in/designer/img/modify.png" title="'+"修改"+'" style="cursor:hand;"/>';
  78. var d='<img onclick="deleteFormField('+id+')" src="plug-in/designer/img/delete.gif" title="'+"删除"+'" style="cursor:hand;"/>';
  79. if(rowData.editing)
  80. return s;
  81. else
  82. return e+'&nbsp;'+d;
  83. }
  84. function cancelFormField(id){
  85. _task_form_fields_dg.datagrid('cancelEdit', id);
  86. }
  87. function editFormField(id){
  88. _task_form_fields_dg.datagrid('beginEdit', id);
  89. }
  90. function saveFormField(id){
  91. //alert(id);
  92. _task_form_fields_dg.datagrid('endEdit', id);
  93. //alert(editcount);
  94. }
  95. function deleteFormField(id){
  96. _task_form_fields_dg.datagrid('deleteRow',id);
  97. refreshAllFormFields();
  98. }
  99. function refreshAllFormFields(){
  100. var rs = _task_form_fields_dg.datagrid('getRows');
  101. for(var i=0;i<rs.length;i++){
  102. var ri =_task_form_fields_dg.datagrid('getRowIndex',rs[i]);
  103. _task_form_fields_dg.datagrid('refreshRow',ri);
  104. }
  105. }
  106. function createNewForm(){
  107. var newForm = new draw2d.Task.Form();
  108. return newForm;
  109. }
  110. function getExsitingForm(){
  111. if(formId != "" && formId != null && formId!="null"&&formId!="NULL"){
  112. var form = task.getForm(formId);
  113. return form;
  114. }
  115. }
  116. function getFormFieldsGridChangeRows(){
  117. if(formFieldsEditCount>0){
  118. $.messager.alert("error","",'error');
  119. return null;
  120. }
  121. var insertRows = _task_form_fields_dg.datagrid('getChanges','inserted');
  122. var updateRows = _task_form_fields_dg.datagrid('getChanges','updated');
  123. var deleteRows = _task_form_fields_dg.datagrid('getChanges','deleted');
  124. var changesRows = {
  125. inserted : [],
  126. updated : [],
  127. deleted : []
  128. };
  129. if (insertRows.length>0) {
  130. for (var i=0;i<insertRows.length;i++) {
  131. changesRows.inserted.push(insertRows[i]);
  132. }
  133. }
  134. if (updateRows.length>0) {
  135. for (var k=0;k<updateRows.length;k++) {
  136. changesRows.updated.push(updateRows[k]);
  137. }
  138. }
  139. if (deleteRows.length>0) {
  140. for (var j=0;j<deleteRows.length;j++) {
  141. changesRows.deleted.push(deleteRows[j]);
  142. }
  143. }
  144. return changesRows;
  145. }
  146. function saveFormConfig(){
  147. if(formId != "" && formId != null && formId!="null"&&formId!="NULL"){
  148. var form = getExsitingForm();
  149. var r = updateExistingForm(form);
  150. if(!r)return;
  151. }else{
  152. var r = insertNewForm();
  153. if(!r)return;
  154. }
  155. _form_win.window('close');
  156. }
  157. function insertNewForm(){
  158. var changesRows = getFormFieldsGridChangeRows();
  159. if(changesRows == null)return false;
  160. var insertRows = changesRows['inserted'];
  161. if (insertRows.length>0) {
  162. for (var i=0;i<insertRows.length;i++) {
  163. var form = createNewForm();
  164. form.name=insertRows[i].fieldName;
  165. form.value=insertRows[i].value;
  166. form.type=insertRows[i].type;
  167. form.exp=insertRows[i].exp;
  168. form.remark=insertRows[i].remark;
  169. task.forms.add(form);
  170. }
  171. }
  172. loadTaskForms();
  173. return true;
  174. }
  175. function updateExistingForm(form){
  176. var changesRows = getFormFieldsGridChangeRows();
  177. if(changesRows == null)return false;
  178. var insertRows = changesRows['inserted'];
  179. var updateRows = changesRows['updated'];
  180. var deleteRows = changesRows['deleted'];
  181. if (insertRows.length>0) {
  182. for (var i=0;i<insertRows.length;i++) {
  183. var formin = createNewForm();
  184. formin.name=insertRows[i].fieldName;
  185. formin.value=insertRows[i].value;
  186. formin.type=insertRows[i].type;
  187. form.exp=insertRows[i].exp;
  188. form.remark=insertRows[i].remark;
  189. task.forms.add(formin);
  190. }
  191. }
  192. if (updateRows.length>0) {
  193. for (var k=0;k<updateRows.length;k++) {
  194. form.name=updateRows[k].fieldName;
  195. form.value=updateRows[k].value;
  196. form.type=updateRows[k].type;
  197. form.exp=updateRows[k].exp;
  198. form.remark=updateRows[k].remark;
  199. }
  200. }
  201. if (deleteRows.length>0) {
  202. task.deleteForm(form.id);
  203. }
  204. loadTaskForms();
  205. return true;
  206. }
  207. function populateFormProperties(){
  208. if(formId != "" && formId != null && formId!="null"&&formId!="NULL"){
  209. var form = task.getForm(formId);
  210. var _form_fields_grid_data=[];
  211. if(form!=null){
  212. var field = {
  213. id:form.id,
  214. fieldName:form.name,
  215. type:form.type,
  216. value:form.value,
  217. exp:form.exp,
  218. remark:form.remark,
  219. action:''
  220. };
  221. _form_fields_grid_data[0]=field;
  222. }
  223. _task_form_fields_dg.datagrid('loadData',_form_fields_grid_data);
  224. }
  225. }
  226. function closeTaskFormWin(){
  227. _form_win.window('close');
  228. }
  229. //-->
  230. </script>
  231. <table>
  232. <tr>
  233. <td>
  234. <table id="task-forms-fields-list">
  235. <thead>
  236. <tr>
  237. <th field="id" hidden="true"></th>
  238. <th field="fieldName" width="100" align="middle" sortable="false" editor="{
  239. type:'validatebox',
  240. options:{
  241. required:true,
  242. validType:'length[1,100]'
  243. }}">名称</th>
  244. <th field="type" width="100" align="middle" sortable="false" editor="{
  245. type:'combobox',
  246. options:{
  247. editable:false,
  248. data:[{id:'string',text:'String',selected:true},{id:'long',text:'Long'},{id:'boolean',text:'boolean'},{id:'date',text:'Date'},{id:'enum',text:'enum'}],
  249. valueField:'id',
  250. textField:'text'
  251. }}">类型</th>
  252. <th field="value" width="100" align="middle" sortable="false" editor="{
  253. type:'validatebox',
  254. options:{
  255. validType:'length[1,100]'
  256. }}">值</th>
  257. <th field="exp" width="100" align="middle" sortable="false" editor="{
  258. type:'validatebox',
  259. options:{
  260. validType:'length[1,100]'
  261. }}">表达式</th>
  262. <th field="remark" width="100" align="middle" sortable="false" editor="{
  263. type:'validatebox',
  264. options:{
  265. validType:'length[1,100]'
  266. }}">描述</th>
  267. <th field="action" width="80" align="middle" formatter="formFieldsActionFormatter">操作</th>
  268. </tr>
  269. </thead>
  270. </table>
  271. </td>
  272. </tr>
  273. <tr>
  274. <td align="center">
  275. <a href="##" id="fieldSaveBt" onclick="saveFormConfig()">Save</a>
  276. <a href="##" id="fieldCancelBt" onclick="closeTaskFormWin()">Cancel</a>
  277. </td>
  278. </tr>
  279. </table>