No puede seleccionar más de 25 temas Los temas deben comenzar con una letra o número, pueden incluir guiones ('-') y pueden tener hasta 35 caracteres de largo.
 
 
 
 
 
 

215 líneas
8.3 KiB

  1. (function () {
  2. var processId = '';
  3. var $header = null;
  4. var headText = '';
  5. var fieldMap = {};
  6. var formMap = {};
  7. var formDataes;
  8. var formAllData;
  9. var formreq;
  10. // 流程信息
  11. var info;
  12. var schemeObj;
  13. var currentNode;
  14. var nodeMap = {};
  15. var getFormData = function ($page) {
  16. formDataes = $page.find('#againcreateflowcontainer').custmerformGet();
  17. if (formDataes == null) {
  18. return false;
  19. }
  20. formreq = [];
  21. formAllData = {};
  22. for (var id in formDataes) {
  23. if (!fieldMap[id]) {
  24. learun.layer.warning('未设置流程表单关联字段!', function () { }, '数字化智慧校园', '关闭');
  25. return false;
  26. }
  27. $.extend(formAllData, formDataes[id]);
  28. if (!formMap[id]) {
  29. formDataes[id][fieldMap[id]] = processId;
  30. }
  31. var point = {
  32. schemeInfoId: id,
  33. processIdName: fieldMap[id],
  34. formData: JSON.stringify(formDataes[id])
  35. }
  36. if (formMap[id]) {
  37. point.keyValue = processId;
  38. }
  39. formreq.push(point);
  40. }
  41. return true;
  42. };
  43. var page = {
  44. init: function ($page, param) {
  45. var _html = '<div class="lr-form-header-submit" style="display:block;" >发起</div>';
  46. $header = $page.parents('.f-page').find('.f-page-header');
  47. $header.append(_html);
  48. headText = $header.find('.f-page-title').text();
  49. $page.find('.lr-againcreateflow-page').toptab(['表单信息', '流程信息']).each(function (index) {
  50. var $this = $(this);
  51. switch (index) {
  52. case 0:
  53. $this.html('<div class="container" id="againcreateflowcontainer"></div>');
  54. break;
  55. case 1:
  56. $this.html('<div class="container" id="againcreateflowcontainer2"></div>');
  57. break;
  58. }
  59. $this = null;
  60. });
  61. processId = param.processId;
  62. taskinfo(param);
  63. // 发起
  64. $header.find('.lr-form-header-submit').on('tap', function () {
  65. // 获取表单数据
  66. if (!getFormData($page)) {
  67. return false;
  68. }
  69. learun.layer.confirm('是否重新发起?', function (_index) {
  70. if (_index === '1') {
  71. var flowreq = {
  72. processId: processId,
  73. formreq: JSON.stringify(formreq)
  74. };
  75. learun.layer.loading(true, "重新发起中");
  76. learun.httppost(config.webapi + "learun/adms/newwf/againcreate", flowreq, function (data) {
  77. learun.layer.loading(false);
  78. var prepage = learun.nav.getpage('nworkflow/myflow');
  79. prepage.grid[0].reload();
  80. prepage.grid[1].reload();
  81. learun.nav.closeCurrent();
  82. });
  83. }
  84. }, '数字化智慧校园', ['取消', '确定']);
  85. });
  86. },
  87. destroy: function (pageinfo) {
  88. $header = null;
  89. }
  90. };
  91. // 流程发起初始化
  92. function taskinfo(_param) {
  93. fieldMap = {};
  94. var req = {
  95. processId: _param.processId
  96. };
  97. learun.layer.loading(true, "获取流程信息");
  98. learun.httpget(config.webapi + "learun/adms/newwf/processinfo", req, function (data) {
  99. learun.layer.loading(false);
  100. if (data) {
  101. var schemeIds = [];
  102. var authorizeFields = [];
  103. var formreq = [];
  104. info = data.info;
  105. schemeObj = JSON.parse(info.Scheme);
  106. // 获取当前节点
  107. $.each(schemeObj.nodes, function (_index, _item) {
  108. if (_item.id == info.CurrentNodeId) {
  109. currentNode = _item;
  110. }
  111. nodeMap[_item.id] = _item;
  112. });
  113. $.each(currentNode.wfForms, function (_index, _item) {
  114. if (_item.formId) {
  115. schemeIds.push(_item.formId);
  116. var point = {
  117. schemeInfoId: _item.formId,
  118. processIdName: _item.field,
  119. keyValue: _param.processId,
  120. }
  121. formreq.push(point);
  122. $.each(_item.authorize, function (_jindex, _jitem) {
  123. _jitem.fieldId = _jindex;
  124. authorizeFields.push(_jitem);
  125. });
  126. }
  127. });
  128. learun.custmerform.loadScheme(schemeIds, function (scheme) {
  129. $('#againcreateflowcontainer').custmerform(scheme);
  130. // 设置表单的可查看权限
  131. $.each(authorizeFields, function (_index, _item) {
  132. if (_item.isLook === 0) {
  133. $('#againcreateflowcontainer').find('#' + _item.fieldId).parents('.lr-form-row').remove();
  134. }
  135. else if (_item.isEdit === 0) {
  136. $('#againcreateflowcontainer').find('#' + _item.fieldId).parents('.lr-form-row').attr('readonly', 'readonly');
  137. }
  138. });
  139. });
  140. formMap = {};
  141. // 获取下自定义表单数据
  142. learun.httpget(config.webapi + "learun/adms/form/data", formreq, function (data) {
  143. if (data) {
  144. // 设置自定义表单数据
  145. $.each(data, function (_id, _item) {
  146. $.each(_item, function (_j, _jitem) {
  147. if (_jitem.length > 0) {
  148. formMap[_id] = true;
  149. }
  150. });
  151. });
  152. $('#againcreateflowcontainer').custmerformSet(data);
  153. }
  154. });
  155. // 加载流程信息
  156. initTimeLine(info.TaskLogList);
  157. }
  158. console.log(data);
  159. });
  160. }
  161. function initTimeLine(flowHistory) {
  162. var nodelist = [];
  163. learun.clientdata.getAll('department', {
  164. callback: function (departmentMap) {
  165. learun.clientdata.getAll('user', {
  166. callback: function (userMap) {
  167. for (var i = 0, l = flowHistory.length; i < l; i++) {
  168. var item = flowHistory[i];
  169. var name = (item.F_CreateUserName || '系统处理') + ':';
  170. if (item.F_CreateUserId && userMap[item.F_CreateUserId]) {
  171. var _department = departmentMap[userMap[item.F_CreateUserId].departmentId];
  172. if (_department) {
  173. name = '【' + _department.name + '】' + name;
  174. }
  175. }
  176. var content = item.F_OperationName;
  177. if (item.F_Des) {
  178. content += '【审批意见】' + item.F_Des;
  179. }
  180. var nodeName = '';
  181. if (item.F_NodeId && nodeMap[item.F_NodeId]) {
  182. nodeName = nodeMap[item.F_NodeId].name;
  183. }
  184. var point = {
  185. title: item.F_NodeName || nodeName,
  186. people: name,
  187. content: content,
  188. time: item.F_CreateDate
  189. };
  190. nodelist.push(point);
  191. }
  192. $('#againcreateflowcontainer2').ftimeline(nodelist);
  193. }
  194. });
  195. }
  196. });
  197. }
  198. return page;
  199. })();