config.js 46 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495969798991001011021031041051061071081091101111121131141151161171181191201211221231241251261271281291301311321331341351361371381391401411421431441451461471481491501511521531541551561571581591601611621631641651661671681691701711721731741751761771781791801811821831841851861871881891901911921931941951961971981992002012022032042052062072082092102112122132142152162172182192202212222232242252262272282292302312322332342352362372382392402412422432442452462472482492502512522532542552562572582592602612622632642652662672682692702712722732742752762772782792802812822832842852862872882892902912922932942952962972982993003013023033043053063073083093103113123133143153163173183193203213223233243253263273283293303313323333343353363373383393403413423433443453463473483493503513523533543553563573583593603613623633643653663673683693703713723733743753763773783793803813823833843853863873883893903913923933943953963973983994004014024034044054064074084094104114124134144154164174184194204214224234244254264274284294304314324334344354364374384394404414424434444454464474484494504514524534544554564574584594604614624634644654664674684694704714724734744754764774784794804814824834844854864874884894904914924934944954964974984995005015025035045055065075085095105115125135145155165175185195205215225235245255265275285295305315325335345355365375385395405415425435445455465475485495505515525535545555565575585595605615625635645655665675685695705715725735745755765775785795805815825835845855865875885895905915925935945955965975985996006016026036046056066076086096106116126136146156166176186196206216226236246256266276286296306316326336346356366376386396406416426436446456466476486496506516526536546556566576586596606616626636646656666676686696706716726736746756766776786796806816826836846856866876886896906916926936946956966976986997007017027037047057067077087097107117127137147157167177187197207217227237247257267277287297307317327337347357367377387397407417427437447457467477487497507517527537547557567577587597607617627637647657667677687697707717727737747757767777787797807817827837847857867877887897907917927937947957967977987998008018028038048058068078088098108118128138148158168178188198208218228238248258268278288298308318328338348358368378388398408418428438448458468478488498508518528538548558568578588598608618628638648658668678688698708718728738748758768778788798808818828838848858868878888898908918928938948958968978988999009019029039049059069079089099109119129139149159169179189199209219229239249259269279289299309319329339349359369379389399409419429439449459469479489499509519529539549559569579589599609619629639649659669679689699709719729739749759769779789799809819829839849859869879889899909919929939949959969979989991000100110021003100410051006100710081009101010111012101310141015101610171018101910201021102210231024102510261027102810291030103110321033103410351036103710381039104010411042104310441045104610471048104910501051105210531054105510561057105810591060106110621063106410651066106710681069107010711072107310741075107610771078107910801081108210831084108510861087108810891090109110921093109410951096109710981099110011011102110311041105110611071108110911101111111211131114111511161117111811191120112111221123112411251126112711281129113011311132113311341135113611371138113911401141114211431144114511461147114811491150115111521153115411551156115711581159116011611162116311641165116611671168116911701171117211731174117511761177117811791180118111821183118411851186118711881189119011911192119311941195119611971198119912001201120212031204120512061207120812091210121112121213121412151216121712181219122012211222122312241225122612271228122912301231123212331234123512361237123812391240124112421243124412451246124712481249125012511252125312541255125612571258125912601261126212631264126512661267126812691270127112721273127412751276127712781279128012811282128312841285128612871288128912901291129212931294129512961297129812991300130113021303130413051306130713081309131013111312131313141315131613171318131913201321132213231324132513261327132813291330133113321333133413351336133713381339134013411342134313441345134613471348134913501351135213531354135513561357135813591360136113621363136413651366136713681369137013711372137313741375137613771378137913801381138213831384138513861387138813891390139113921393139413951396139713981399140014011402140314041405140614071408140914101411141214131414141514161417141814191420142114221423142414251426
  1. (function () {
  2. z.workflow = z.workflow || {};
  3. //转件弹出框配置
  4. var transferModalConfig = {
  5. rotatePartsDto: {},
  6. treeData: [],
  7. batchSelectData: [],
  8. mark_logic: '',
  9. mark_logic_tip: '',
  10. iSameLevel: false,
  11. sysOpList: [],
  12. userOpList: [],
  13. position: -1,
  14. sysOpinionGrid: null,
  15. userOpinionGrid: null,
  16. iTransferConfirmTip: 1,
  17. reloadModal: function (transferData, iSameLevel) {
  18. transferModalConfig.modalBindEvents();
  19. transferModalConfig.rotatePartsDto = transferData.rotatePartsDto || {};
  20. transferModalConfig.treeData = transferData.zTreeData || [];
  21. transferModalConfig.mark_logic = transferData.rotatePartsDto.mutexLogic;
  22. transferModalConfig.mark_logic_tip = transferData.rotatePartsDto.mutexLogicTip;
  23. transferModalConfig.position = transferData.position;
  24. transferModalConfig.sysOpList = transferData.sysOpList;
  25. transferModalConfig.userOpList = transferData.userOpList;
  26. if (!transferModalConfig.mark_logic_tip) {
  27. transferModalConfig.mark_logic_tip = "触发互斥条件,无法选择!";
  28. }
  29. transferModalConfig.iSameLevel = iSameLevel;
  30. transferModalConfig.iTransferConfirmTip = transferData.rotatePartsDto.iTransferConfirmTip;
  31. transferModalConfig.buildConfig(); //初始化插件
  32. transferModalConfig.initOpinions();
  33. $(".transfer-tab-li").eq(0).click(); //默认选中第一个tab页
  34. }, //计算弹出框的,布局宽高
  35. initOpinions: function () {
  36. //系统意见
  37. var sysOpinionObj = $("[name=transfer_sys_opinion]");
  38. if (sysOpinionObj && sysOpinionObj.length > 0) {
  39. transferModalConfig.sysOpinionGrid = z.ui.jqgrid("[name=transfer_sys_opinion]").init({
  40. minheight: 100,
  41. rowNum: null,
  42. rownumbers: false,
  43. data: transferModalConfig.sysOpList,
  44. height: $("[name=transfer_sys_opinion]").height() - 38,
  45. pagination: false,
  46. colModel: [
  47. {name: "id", hidden: true},
  48. {name: 'content',label: '系统可选意见(双击)',whitespace: "normal",align: "center"},
  49. {
  50. label: '当前环节专属', name: "iDedicatedOpinion", fixed: true, width: 70, align: "center",
  51. switchs: [{
  52. onClick: function (rowObject, rowindex, link, event) {
  53. transferModalConfig.updateIDedicatedOpinion(rowObject, link);
  54. }
  55. }]
  56. }
  57. ],
  58. ondblClickRow: function (rowid, iRow, iCol, e) {
  59. var rowData = z.ui.jqgrid("[name=transfer_sys_opinion]").getRowData(rowid);
  60. transferModalConfig.updateOpinionContent(rowData.content);
  61. }
  62. })
  63. }
  64. var userOpinionObj = $("[name=transfer_user_opinion]");
  65. if (userOpinionObj && userOpinionObj.length > 0) {
  66. //个人常用意见
  67. transferModalConfig.userOpinionGrid = z.ui.jqgrid("[name=transfer_user_opinion]").init({
  68. pagination: false,
  69. rowNum: null,
  70. rownumbers: false,
  71. height: $("[name=transfer_user_opinion]").height() - 38,
  72. minheight: 100,
  73. colModel: [
  74. {name: "id", hidden: true},
  75. {name: 'content',label: '个人常用意见(双击)',whitespace: "normal",align: "center"},
  76. {
  77. label: '当前环节专属', name: "iDedicatedOpinion", fixed: true, width: 70, align: "center",
  78. switchs: [{
  79. onClick: function (rowObject, rowindex, link, event) {
  80. transferModalConfig.updateIDedicatedOpinion(rowObject, link);
  81. }
  82. }]
  83. }, {
  84. name: 'action', label: '操作', width: 70, fixed: true, align: "center",
  85. buttons: [{
  86. label: "<i class=\"fa fa-trash-o fa-lg\"></i> 移除",
  87. className: "btn btn-danger",
  88. onClick: function (rowObject, rowindex) {
  89. z.ui.ajax({
  90. url: workflowHost + "/TFlowOpPersonal/delByID",
  91. data: {
  92. ID: rowObject.id,
  93. },
  94. success: function (res) {
  95. transferModalConfig.userOpinionGrid.delRowData(rowObject.id);
  96. }
  97. });
  98. }
  99. }]
  100. }
  101. ],
  102. data: transferModalConfig.userOpList,
  103. ondblClickRow: function (rowid, iRow, iCol, e) {
  104. var rowData = z.ui.jqgrid("[name=transfer_user_opinion]").getRowData(rowid);
  105. transferModalConfig.updateOpinionContent(rowData.content);
  106. }
  107. })
  108. }
  109. },
  110. updateIDedicatedOpinion: function (rowObject, link) {
  111. link.disabled();//禁用
  112. var iDedicatedOpinion = link.getValue() == 0 ? 1 : 0;
  113. z.ui.ajax({
  114. url: workflowHost + "/TFlowOpPersonal/isThisActivity",
  115. data: {
  116. id: rowObject.id,
  117. activityInstanceId: z.ui.comm.getUrlParam("activityInstanceId"),
  118. iDedicatedOpinion: iDedicatedOpinion
  119. },
  120. success: function (res) {
  121. if (!res.msg) {
  122. var status = link.getValue();//取状态
  123. link.setValue(status == 0 ? 1 : 0);//赋状态
  124. } else {
  125. z.ui.alertError(res.msg);
  126. }
  127. link.enable();//启用
  128. }
  129. });
  130. },
  131. initGridsConfig: function (tempId) {
  132. var thatEle = "[name=" + tempId + "_grid]";
  133. z.ui.jqgrid(thatEle).init({
  134. height: $(thatEle).height() - 35,
  135. colModel: [
  136. {name: 'id', label: 'id', hidden: true},
  137. {name: 'name', label: '人员', width: 120, align: "center"},
  138. {name: 'department', label: '部门', width: 200, align: "center"},
  139. {
  140. label: "操作", name: 'action', width: 80, fixed: true, align: "center",
  141. buttons: [{
  142. label: "<i class=\"fa fa-trash-o\"></i> 移除",
  143. className: "btn btn-danger",
  144. onClick: function (rowObject, rowindex) {
  145. transferModalConfig.delRow(z.ui.jqgrid(thatEle), rowObject.id, tempId);
  146. }
  147. }]
  148. }
  149. ],
  150. data: []
  151. });
  152. $(thatEle).addClass("transfer-display");
  153. }, //初始化grid
  154. initTreesConfig: function (thatData, acTmpId, iSelectParticipant) {
  155. var thatEle = "[name=" + acTmpId + "_tree]";
  156. var treeObj = z.ui.ztree(thatEle).init({
  157. callback: {
  158. onClick: function (event, treeId, treeNode) {
  159. treeObj.checkNode(treeNode, !treeNode.checked, false, true);
  160. },
  161. onCheck: function (event, treeId, treeNode) {
  162. if (transferModalConfig.isMutex(acTmpId)) {
  163. treeObj.checkNode(treeNode, false, false, false);
  164. z.ui.alertWarning(transferModalConfig.mark_logic_tip);
  165. return;
  166. }
  167. transferModalConfig.treeNodeEvent(treeObj, treeNode, acTmpId);
  168. },
  169. onLoadSuccess: function (event, treeId, treeNode) {
  170. //判断是否默认全选所有人员
  171. if (iSelectParticipant == 1 && !transferModalConfig.isMutex(acTmpId)) {
  172. var treeObjNew = z.ui.ztree(thatEle);
  173. treeObjNew.checkAllNodes(true);
  174. transferModalConfig.defaultCheckEvent(treeObjNew, acTmpId);
  175. }
  176. }
  177. },
  178. view: {
  179. height: $(thatEle).height(),
  180. iconCls: function (val) {
  181. //icon样式
  182. if (val.type == 1) {
  183. return "z-tree-icon-dep";
  184. } else if (val.type == 2) {
  185. return "z-tree-icon-person";
  186. } else if (val.type == 3) {
  187. return "z-tree-icon-worker";
  188. }
  189. },
  190. formatter: function (node) {
  191. return node.name;
  192. },
  193. defaultOpen: true //是否默认展开所有父级,默认false
  194. },
  195. search: {
  196. enable: true //是否带有搜索功能,默认false
  197. },
  198. check: { //配置的选择框对象
  199. enable: true //是否使用选择框
  200. },
  201. treedata: thatData
  202. });
  203. }, //初始化tree
  204. treeNodeEvent: function (treeObj, treeNode, acTempId) {
  205. var nodes = treeObj.transformToArray(treeNode); //当前选中节点
  206. var thatGrid = z.ui.jqgrid("[name=" + acTempId + "_grid]");
  207. for (var i = 0; i < nodes.length; i++) {
  208. var thatNode = nodes[i];
  209. if (thatNode.type == 3) {
  210. transferModalConfig.gridAddOrDelRow(thatNode, thatGrid, acTempId, treeObj);
  211. }
  212. }
  213. }, //树节点事件
  214. defaultCheckEvent: function (treeObj, acTempId) {
  215. var nodes = treeObj.transformToArray(treeObj.getNodes()); //所有节点
  216. var thatGrid = z.ui.jqgrid("[name=" + acTempId + "_grid]");
  217. for (var i = 0; i < nodes.length; i++) {
  218. var thatNode = nodes[i];
  219. if (thatNode.type == 3) {
  220. thatNode.checked = true;
  221. transferModalConfig.gridAddOrDelRow(thatNode, thatGrid, acTempId, treeObj);
  222. }
  223. }
  224. }, //默认全选树节点事件
  225. gridAddOrDelRow: function (treeNode, gridObj, acTempId, treeObj) {
  226. if (treeNode.checked) {
  227. transferModalConfig.addRow(gridObj, {
  228. id: treeNode.id,
  229. name: treeNode.name,
  230. department: treeNode.getParentNode().name,
  231. type: 1,
  232. isMsg: "开启"
  233. }, acTempId, treeObj, treeNode)
  234. } else {
  235. transferModalConfig.delRow(gridObj, treeNode.id, acTempId)
  236. }
  237. }, //grid操作
  238. addRow: function (gridObj, rowData, acTempId, treeObj, treeNode) {
  239. var gridIds = gridObj.getDataIDs() || [];
  240. if ($.inArray(rowData.id, gridIds) < 0) { //已存在不添加
  241. if (treeObj && treeNode) {
  242. var cNodes = [];
  243. var grepNodes;
  244. $.each(treeObj.getCheckedNodes(true), function (index, item) {
  245. if (item.type == 3) {
  246. grepNodes = $.grep(cNodes, function(n, i) {
  247. return n.id == item.id;
  248. });
  249. if (grepNodes.length == 0) {
  250. cNodes.push(item);
  251. }
  252. }
  253. });
  254. var cIndex = $.inArray(treeNode, cNodes);
  255. if (cIndex == 0) {
  256. gridObj.addRowData(rowData.id, rowData, "first");
  257. } else {
  258. gridObj.addRowData(rowData.id, rowData, "after", cNodes[cIndex-1].id);
  259. }
  260. } else {
  261. gridObj.addRowData(rowData.id, rowData);
  262. }
  263. }
  264. if (gridObj.getDataIDs().length > 0) {
  265. $("[name=checkbox_" + acTempId + "]").find(".z-checkbox-item").addClass("checked");
  266. }
  267. }, //添加grid 行
  268. delRow: function (gridObj, id, acTempId) {
  269. //移除grid 行数据
  270. gridObj.delRowData(id);
  271. // var thatChk = $("checkbox_" + acTempId + " .z-checkbox-item"); //tab 复选框
  272. var thatChk = $("[name=checkbox_" + acTempId + "]").find(".z-checkbox-item");//tab 复选框
  273. var required = $("[z-tabindex=" + acTempId + "]").attr("z-required"); //是否必选
  274. var gridIds = gridObj.getDataIDs() || [];
  275. //设置tab页的勾选状态
  276. if (gridIds.length == 0 && required == "0") {
  277. thatChk.removeClass("checked");
  278. }
  279. //移除左侧人员架构树的勾选状态
  280. var treeObj = z.ui.ztree("[name=" + acTempId + "_tree]");
  281. var nodes = treeObj.getCheckedNodes();
  282. for (var i = 0; i < nodes.length; i++) {
  283. var node = nodes[i];
  284. if (node.id == id) {
  285. treeObj.checkNode(node, false, true);
  286. }
  287. }
  288. }, //删除grid行
  289. buildConfig: function () {
  290. var rotatePartsData = transferModalConfig.rotatePartsDto.rotatePartsData || [];
  291. for (var i = 0; i < rotatePartsData.length; i++) {
  292. var thatData = rotatePartsData[i];
  293. var nodeId = thatData.activityTemplateId || thatData.archiveTemplateId || thatData.gatewayTemplateId;
  294. transferModalConfig.initGridsConfig(nodeId);//初始化表格
  295. for (var j = 0; j < transferModalConfig.treeData.length; j++) {
  296. var thatTree = transferModalConfig.treeData[j];
  297. if (thatTree.activityTemplateId == nodeId) {
  298. transferModalConfig.initTreesConfig(thatTree.orgTree, nodeId, thatTree.iSelectParticipant);
  299. break;
  300. }
  301. }
  302. }
  303. }, //初始化treegrid配置
  304. transferActByDialog: function (ele) {
  305. z.ui.lock(ele, function () {
  306. var rData = transferModalConfig.rotatePartsDto || {};
  307. if (!rData.activityInstanceId) {
  308. z.ui.alertWarning("缺少活动实例ID");
  309. z.ui.unLock(ele);
  310. return;
  311. }
  312. var postData = {
  313. rotatePartsDto: {
  314. rotatePartsData: [],
  315. activityInstanceId: rData.activityInstanceId
  316. }
  317. };
  318. var transferArr = $(".transfer-tab-li") || [];
  319. var tabUserArr = [], tabValid = [], unselectedNode = [];
  320. var isNoMust = {flag: true, users: 0};
  321. for (var i = 0; i < transferArr.length; i++) {
  322. var thatTab = transferArr[i], userNames = [];
  323. var templateId = $(thatTab).attr("z-tabindex"),
  324. tabName = $(thatTab).attr("lang"), //节点名称
  325. isChecked = z.ui.checkbox("[name=checkbox_" + templateId + "]").getValue(), //是否选中(必选)
  326. userIds = z.ui.jqgrid("[name=" + templateId + "_grid]").getDataIDs() || []; //选中下一步参与人
  327. var rotateItem = null;
  328. for (var j = 0; j < rData.rotatePartsData.length; j++) {
  329. var thatData = rData.rotatePartsData[j];
  330. var nodeId = thatData.activityTemplateId || thatData.archiveTemplateId || thatData.gatewayTemplateId;
  331. if (templateId === nodeId) {
  332. if (userIds.length > 0) {//非必填节点且未选择参与人不做转件操作
  333. rotateItem = thatData;
  334. } else {//未选择人员的节点,需判断是否满足互斥,并给予确认提示
  335. if (!transferModalConfig.isMutex(templateId)) {
  336. unselectedNode.push(tabName);
  337. }
  338. }
  339. break;
  340. }
  341. }
  342. if (rotateItem) {
  343. var iExistUser;
  344. for (var j = 0; j < userIds.length; j++) {
  345. var rowData = z.ui.jqgrid("[name=" + templateId + "_grid]").getRowData(userIds[j]);
  346. //校验是否重复添加
  347. if (rowData) {
  348. iExistUser = false;
  349. $.each(rotateItem.participants, function (index, item) {
  350. if (item.id == userIds[j]) {
  351. iExistUser = true;
  352. return false;
  353. }
  354. });
  355. userNames.push(rowData.name);
  356. if (!iExistUser) {
  357. rotateItem.participants.push({id: userIds[j]});
  358. }
  359. }
  360. }
  361. tabUserArr.push({name: tabName, users: userNames.join(",")});
  362. postData.rotatePartsDto.rotatePartsData.push(rotateItem);
  363. }
  364. // 1,节点checkbox是否选中 (验证必选参与人)
  365. // 2,isNoMust记录是否全部非必选和选择的人员总数量
  366. isNoMust.users += userIds.length;
  367. if (isChecked == "1") {
  368. isNoMust.flag = false;
  369. if (userIds.length == 0) {
  370. tabValid.push({label: tabName});
  371. }
  372. }
  373. }
  374. //如果全部非必选并且选择人员的总数量为0,提示至少选择一位参与人
  375. if (isNoMust.flag == true && isNoMust.users == 0) {
  376. z.ui.alertWarning("至少选择一位参与人!");
  377. z.ui.unLock(ele);
  378. return;
  379. }
  380. //检查每个节点是否选中参与人
  381. if (tabValid.length > 0) {
  382. var tipMsg = [];
  383. for (var i = 0; i < tabValid.length; i++) {
  384. tipMsg.push(tabValid[i].label + ":至少选择一位参与人!");
  385. }
  386. z.ui.alertWarning(tipMsg.join("<br/>"));
  387. z.ui.unLock(ele);
  388. return;
  389. }
  390. //执行转件
  391. if (transferModalConfig.iTransferConfirmTip == 1 && unselectedNode.length > 0) {//未选节点给予确认提示信息
  392. z.ui.confirm("transferConfirmTip").init({
  393. content: "[" + unselectedNode.join("、") + "]未选择办理人,将无法流转至相应环节,是否确认继续转件?",
  394. onConfirm: function () {
  395. transferModalConfig.executeTransfer(ele, postData, tabUserArr);
  396. },
  397. onCancel: function () {
  398. z.ui.unLock(ele);
  399. }
  400. });
  401. } else {
  402. transferModalConfig.executeTransfer(ele, postData, tabUserArr);
  403. }
  404. });
  405. },//转件保存事件
  406. batchSelect: function (ele) {
  407. z.ui.lock(ele, function () {
  408. z.ui.modal("batchSelect").init({
  409. url: workflowHost + "/Transfer/batchSelect",
  410. title: "批量选择待办件",
  411. width: $(".transfer-form").width(),
  412. height: "60%",
  413. onAfterClose: function(data) {
  414. if(data && data.selectList) {
  415. transferModalConfig.batchSelectData = data.selectList;
  416. }
  417. }
  418. });
  419. z.ui.unLock(ele);
  420. });
  421. },//批量选择待办件
  422. executeTransfer: function (ele, postData, tabUserArr) {
  423. var transferFun = function (all) {
  424. var postUrl = workflowHost + "/Transfer/save";
  425. postData.rotatePartsDto.participantId = z.ui.comm.getUrlParam("participant");
  426. postData.rotatePartsDto.handleType = 0;//PC端转件
  427. postData["flowOpinion"] = JSON.stringify(z.workflow.getEditOpinion());
  428. if (transferModalConfig.iSameLevel) {
  429. postUrl = workflowHost + "/Transfer/sameLevelSave";
  430. postData["position"] = transferModalConfig.position;
  431. }
  432. //判断是否批量选择待办件
  433. if (transferModalConfig.batchSelectData.length > 0) {
  434. postData.rotatePartsDto.batchTransferData = transferModalConfig.batchSelectData;
  435. }
  436. z.ui.ajax({
  437. url: postUrl,
  438. data: z.ui.form.childStringify(postData),
  439. complete: function () {
  440. z.ui.unLock(ele);
  441. },
  442. success: function (res) {
  443. all(res);
  444. }
  445. });
  446. }
  447. z.ui.asynAll({
  448. methods: [transferFun],
  449. all: function (transferRes) {
  450. if (transferRes && transferRes != null) {
  451. if (transferRes.index != 2 && (!transferRes.tip
  452. || !transferRes.tip[0] || !transferRes.tip[0].users)) {
  453. flowFun.transferSuccessTip(transferRes.tip, 1000);
  454. z.ui.unLock(ele);
  455. return;
  456. }
  457. }
  458. flowFun.transferSuccess(tabUserArr);
  459. z.ui.unLock(ele);
  460. }
  461. });
  462. },//执行转件
  463. isMutex: function (acTmpId) {
  464. if (!transferModalConfig.mark_logic) {
  465. return false;
  466. }
  467. var liObj = transferModalConfig.findTabToIndex(acTmpId);
  468. if (!liObj)
  469. return false;
  470. //按 || 拆分互斥条件
  471. var markArr = transferModalConfig.mark_logic.replace(/{/gm, "").replace(/}/gm, "").split("||");
  472. //按活动id找到此活动li的jq对象
  473. for (var i = 0; i < markArr.length; i++) {
  474. var that = markArr[i];
  475. //按 && 拆分活动节点 {ptjd} && {ldsp}
  476. var itemArr = that.replace("(", "").replace(")", "").split("&&");
  477. // 是否包含此活动 未包含则跳过
  478. if ($.grep(itemArr, function (item) {
  479. return item == liObj.attr("mark");
  480. }).length == 0) {
  481. continue;
  482. }
  483. //按多个活动标识查找jq对象
  484. var lis = transferModalConfig.findTabToMarts(itemArr);
  485. //包括自己且除自己以外的tab被选中-》触发互斥
  486. for (var j = 0; j < lis.length; j++) {
  487. var itemLi = lis[j];
  488. if (itemLi.attr("mark") !== liObj.attr("mark") && itemLi.find(".z-checkbox-item").hasClass("checked")) {
  489. return true;
  490. }
  491. }
  492. }
  493. return false;
  494. }, //互斥验证
  495. findTabToMarts: function (markArr) {
  496. var rtnArr = [];
  497. var tabLi = $("[name=transfer-form]").find("li");
  498. for (var i = 0; i < tabLi.length; i++) {
  499. var that = $(tabLi[i]);
  500. for (var j = 0; j < markArr.length; j++) {
  501. var thatItem = markArr[j];
  502. if (thatItem == that.attr("mark")) {
  503. rtnArr.push(that);
  504. }
  505. }
  506. }
  507. return rtnArr;
  508. },
  509. findTabToIndex: function (tabIndex) {
  510. var tabLi = $("[name=transfer-form]").find("li"); //mark
  511. var arr = $.grep(tabLi, function (item) {
  512. return $(item).attr("z-tabindex") === tabIndex;
  513. })
  514. if (arr.length > 0)
  515. return $(arr[0]);
  516. return null;
  517. },
  518. modalBindEvents: function () {
  519. //tab页点击事件
  520. $(".transfer-tab-li").click(function () {
  521. $(".transfer-tab-li").removeClass("on");
  522. $(".transfer-tree").removeClass("transfer-active");
  523. $(".transfer-grid").removeClass("transfer-active");
  524. $(this).addClass("on");
  525. var tabId = $(this).attr("z-tabindex");
  526. $("[name=" + tabId + "_tree]").addClass("transfer-active");
  527. $("[name=" + tabId + "_grid]").addClass("transfer-active");
  528. });
  529. //关闭按钮
  530. $(".close-transfer-btn").click(function () {
  531. z.ui.modal("transferModal").close();
  532. });
  533. //个人常用意见 删除
  534. $("[name=user_op_del]").on("click", function (event) {
  535. transferModalConfig.delOpersonals($(this));
  536. event.stopPropagation(); // 阻止事件冒泡
  537. });
  538. //设置常用意见
  539. $("[name=opinion_add]").on("click", function () {
  540. z.ui.lock($(this), function () {
  541. z.ui.ajax({
  542. url: workflowHost + "/TFlowOpPersonal/setContent",
  543. data: {
  544. activityInstanceId: z.ui.comm.getUrlParam("activityInstanceId"),
  545. content: $("[name^=tab_opContent_]").children("textarea:eq(0)").val()
  546. },
  547. complete: function () {
  548. z.ui.unLock($(this));
  549. },
  550. success: function (res) {
  551. z.ui.alertSuccess("常用意见设置成功!", function () {
  552. transferModalConfig.userOpinionGrid.addRowData(res.id, res, "first");
  553. });
  554. }
  555. })
  556. })
  557. });
  558. //批量选择待办件按钮事件
  559. if ($(".batch-transfer-btn").length > 0) {
  560. $(".batch-transfer-btn").click(function () {
  561. transferModalConfig.batchSelect($(this));
  562. });
  563. }
  564. //保存按钮事件
  565. $(".add-transfer-btn").click(function () {
  566. transferModalConfig.transferActByDialog($(this));
  567. });
  568. //审批意见 改变事件
  569. $("textarea.transfer-opinion-text").on("input propertychange", function () {
  570. var editOpinion = $("[name='flowReviewContain']").find(".opinionEdit");
  571. if (editOpinion.length > 0) {
  572. $(editOpinion[0]).find("[name='yjnr']").val($(this).val());
  573. }
  574. });
  575. },//弹出层绑定事件
  576. updateOpinionContent: function (opinionContent) {
  577. $("[name^=tab_opContent_]").children("textarea:eq(0)").val(opinionContent);
  578. var editOpinion = $("[name='flowReviewContain']").find(".opinionEdit");
  579. if (editOpinion.length > 0) {
  580. $(editOpinion[0]).find("[name='yjnr']").val(opinionContent);
  581. }
  582. }//更新审批意见框内容
  583. };
  584. //抄送弹出层配置
  585. var ccModalConfig = {
  586. treeObj: {}, //zTree 对象
  587. gridObj: {}, //grid 对象
  588. treeData: [], //tree 数据
  589. modalHeight: $(window).height(),
  590. reloadModal: function (participants, modalHeight) {
  591. ccModalConfig.treeData = participants;
  592. ccModalConfig.initTree();
  593. ccModalConfig.initGrid();
  594. ccModalConfig.bindEvents();
  595. },
  596. initTree: function () {
  597. ccModalConfig.treeObj = z.ui.ztree("[name=carbonCopyTree]").init({
  598. callback: {
  599. onCheck: function (event, treeId, treeNode) {
  600. ccModalConfig.treeCheckEvent(treeNode);
  601. }, onClick: function (event, treeId, treeNode) {
  602. ccModalConfig.treeObj.checkNode(treeNode, !treeNode.checked, true);
  603. ccModalConfig.treeCheckEvent(treeNode);
  604. },
  605. },
  606. view: {
  607. height: ccModalConfig.modalHeight - 85,
  608. iconCls: function (val) {
  609. //icon样式
  610. if (val.type == 1) {
  611. return "z-tree-icon-dep";
  612. } else if (val.type == 2) {
  613. return "z-tree-icon-person";
  614. } else if (val.type == 3) {
  615. return "z-tree-icon-worker";
  616. }
  617. },
  618. formatter: function (node) {
  619. return node.name; // +'<span class="text-danger">[领导人数:'+ node.id +']</span>';
  620. },
  621. defaultOpen: true //是否默认展开所有父级,默认false
  622. },
  623. search: {
  624. enable: true //是否带有搜索功能,默认false
  625. },
  626. check: { //配置的选择框对象
  627. enable: true //是否使用选择框
  628. },
  629. treedata: ccModalConfig.treeData
  630. })
  631. },
  632. initGrid: function () {
  633. ccModalConfig.gridObj = z.ui.jqgrid("[name=carbonCopyGrid]").init({
  634. height: ccModalConfig.modalHeight - 85 - 38,
  635. colModel: [
  636. {name: 'id', label: 'id', hidden: true},
  637. {name: 'name', label: '人员', width: 120, fixed: true, align: "center"},
  638. {name: 'department', label: '部门', width: 200, fixed: true, align: "center"},
  639. {
  640. label: "操作", name: 'action', width: 80, align: "center",
  641. buttons: [{
  642. label: "<i class=\"fa fa-trash-o\"></i> 移除",
  643. className: "btn btn-danger",
  644. onClick: function (rowObject, rowindex) {
  645. ccModalConfig.gridObj.delRowData(rowObject.id);
  646. }
  647. }]
  648. }
  649. ],
  650. data: []
  651. });
  652. },
  653. treeCheckEvent: function (node) {
  654. var nodes = ccModalConfig.treeObj.transformToArray(node); //选中节点
  655. for (var i = 0; i < nodes.length; i++) {
  656. var thatNode = nodes[i];
  657. if (thatNode.type == 3) {
  658. ccModalConfig.gridRowAddOrDel(thatNode)
  659. }
  660. }
  661. },
  662. gridRowAddOrDel: function (node) {
  663. if (node.checked) {
  664. var gridIds = ccModalConfig.gridObj.getDataIDs() || [];
  665. if ($.inArray(node.id, gridIds) < 0) { //已存在不添加
  666. ccModalConfig.gridObj.addRowData(node.id, {
  667. id: node.id,
  668. name: node.name,
  669. department: node.getParentNode().name,
  670. type: 1,
  671. isMsg: "开启"
  672. });
  673. }
  674. } else {
  675. ccModalConfig.gridObj.delRowData(node.id);
  676. }
  677. },
  678. bindEvents: function () {
  679. // 弹出框 关闭
  680. $(".close-carbon-copy-btn").bind("click", function () {
  681. z.ui.modal("carbonCopyDialog").close();
  682. });
  683. //弹出框 保存
  684. $(".add-carbon-copy-btn").bind("click", function () {
  685. var idArray = ccModalConfig.gridObj.getDataIDs();
  686. if (!idArray || idArray.length == 0) {
  687. z.ui.alertWarning("请选择抄送人");
  688. return;
  689. }
  690. z.ui.ajax({
  691. "url": workflowHost + "/ICarbonCopyInstance/save",
  692. data: {
  693. "activityInstanceId": z.ui.comm.getUrlParam("activityInstanceId"),
  694. "participants": JSON.stringify(idArray)
  695. },
  696. success: function () {
  697. z.ui.alertSuccess("抄送成功", function () {
  698. var sourcewindowid = z.ui.comm.getUrlParam("sourcewindowid");//获取到A页面注册用的窗体id
  699. if (sourcewindowid != undefined) {
  700. var msgData = {
  701. "type": "reload",
  702. "status": 210 // 抄送
  703. };
  704. z.webcontainer.sendMessageById(sourcewindowid, msgData);
  705. }
  706. z.ui.modal("carbonCopyDialog").close();
  707. });
  708. }
  709. });
  710. });
  711. }
  712. };
  713. //流程方法
  714. var flowFun = {
  715. save: function (ele, funs) {
  716. var methods = [];
  717. z.ui.lock(ele, function () {
  718. // 1,执行业务的所有表单方法
  719. $.each(funs, function (i, v) {
  720. methods.push(function (all) {
  721. v.fun(all, false) // 这里工作流可以自己做处理
  722. });
  723. });
  724. //保存审批意见
  725. var opinionFun = function (all) {
  726. z.ui.ajax({
  727. url: workflowHost + "/IFlowOpinion/save",
  728. data: z.ui.form.childStringify({IFlowOpinion: JSON.stringify(z.workflow.getEditOpinion())}),
  729. success: function (res) {
  730. all();
  731. }, error: function () {
  732. all({success: false, errorMsg: "审批意见保存失败!"})
  733. }
  734. });
  735. }
  736. methods.push(opinionFun);
  737. z.ui.asynAll({
  738. methods: methods,
  739. all: function () {
  740. var error = false;
  741. var errorMsg = ["保存失败!"];
  742. for (var i = 0; i < arguments.length; i++) {
  743. var that = arguments[i];
  744. if (that && that.success === false) {
  745. if (!error)
  746. error = true;
  747. if (that.errorMsg)
  748. errorMsg.push(that.errorMsg);
  749. }
  750. }
  751. if (!error) {
  752. z.ui.alertSuccess("保存成功!");
  753. } else {
  754. z.ui.alertWarning(errorMsg.join("<br/>"));
  755. }
  756. z.ui.unLock(ele);
  757. }
  758. });
  759. })
  760. },//保存
  761. transfer: function (ele, funs) {
  762. var methods = [];
  763. z.ui.lock(ele, function () {
  764. $.each(funs, function (i, v) {
  765. methods.push(function (all) {
  766. v.fun(all, true); //参数1,事件队列执行结束后统一执行的方法,在保存事件必须调用 //参数2(可选),传递一个参数给页面
  767. })
  768. });
  769. //无执行方法时,直接执行转件操作 xf 2020/6/21
  770. if (methods.length == 0) {
  771. flowFun.getNextActivity();//转件
  772. z.ui.unLock(ele);
  773. return;
  774. }
  775. z.ui.asynAll({
  776. methods: methods,
  777. all: function () {
  778. //arguments 类数组
  779. var error = false;
  780. var errorMsg = ["保存失败!"];
  781. for (var i = 0; i < arguments.length; i++) {
  782. var that = arguments[i];
  783. if (that && that.success === false) {
  784. if (!error) error = true;
  785. if (that.errorMsg) errorMsg.push(that.errorMsg);
  786. }
  787. }
  788. if (!error) {
  789. flowFun.getNextActivity(function () {
  790. z.ui.unLock(ele);
  791. });//转件
  792. } else {
  793. z.ui.alertWarning(errorMsg.join("<br/>"));
  794. z.ui.unLock(ele);
  795. }
  796. }
  797. });
  798. })
  799. },//转件
  800. sameLevelTransfer: function (ele, funs) {
  801. var methods = [];
  802. z.ui.lock(ele, function () {
  803. $.each(funs, function (i, v) {
  804. methods.push(function (all) {
  805. v.fun(all, false); //参数1,事件队列执行结束后统一执行的方法,在保存事件必须调用 //参数2(可选),传递一个参数给页面
  806. })
  807. });
  808. })
  809. //无执行方法时,直接执行转件操作 xf 2020/6/21
  810. if (methods.length == 0) {
  811. flowFun.getSameLevelActivity(ele.attr("btn-num"), function () {
  812. z.ui.unLock(ele);
  813. });//转件
  814. return;
  815. }
  816. z.ui.asynAll({
  817. methods: methods,
  818. all: function () {
  819. //arguments 类数组
  820. var error = false;
  821. var errorMsg = ["保存失败!"];
  822. for (var i = 0; i < arguments.length; i++) {
  823. var that = arguments[i];
  824. if (that && that.success === false) {
  825. if (!error) error = true;
  826. if (that.errorMsg) errorMsg.push(that.errorMsg);
  827. }
  828. }
  829. if (!error) {
  830. flowFun.getSameLevelActivity(ele.attr("btn-num"), function () {
  831. z.ui.unLock(ele);
  832. });//转件
  833. } else {
  834. z.ui.alertWarning(errorMsg.join("<br/>"));
  835. z.ui.unLock(ele);
  836. }
  837. }
  838. });
  839. },//同级转件
  840. sameLevelReturn: function (ele) {
  841. var activityInstanceId = z.ui.comm.getUrlParam("activityInstanceId");
  842. flowFun.isMeetTheReturnCondition(activityInstanceId, function () {
  843. flowFun.openCallbackWindow({
  844. title: "同级退回",
  845. url: "/HandlerCaseCenter/getSameLevelReturnActivity",
  846. data: {
  847. "activityInstanceId": activityInstanceId,
  848. "flowInsId": z.ui.comm.getUrlParam("flowInstanceId"),
  849. "position": ele.attr("btn-num")
  850. }
  851. });
  852. });
  853. },//同级退件
  854. callback: function (ele) {
  855. var activityInstanceId = z.ui.comm.getUrlParam("activityInstanceId");
  856. flowFun.isMeetTheReturnCondition(activityInstanceId, function () {
  857. flowFun.openCallbackWindow({
  858. title: "退回",
  859. url: "/HandlerCaseCenter/getCalBackActivity",
  860. data: {
  861. "activityInstanceId": activityInstanceId,
  862. "flowInsId": z.ui.comm.getUrlParam("flowInstanceId")
  863. }
  864. });
  865. });
  866. },//退件
  867. isMeetTheReturnCondition: function (activityInstanceId, method) {
  868. z.ui.ajax({
  869. url: workflowHost + "/HandlerCaseCenter/isMeetTheReturnCondition",
  870. data: {"activityInstanceId": activityInstanceId},
  871. success: function (result) {
  872. if (!result.msg) {
  873. if (method instanceof Function) {
  874. method();
  875. }
  876. } else {
  877. z.ui.alertError(result.msg);
  878. }
  879. }
  880. });
  881. },//是否满足退件条件
  882. openCallbackWindow: function (obj) {
  883. z.ui.modal("returnModal").init({
  884. modalId: "callbackActivity",
  885. url: workflowHost + obj.url,
  886. data: obj.data,
  887. title: obj.title,
  888. width: 760,
  889. height: 274,
  890. showHead: true,
  891. showCloseBtn: true,
  892. showMask: true
  893. });
  894. },//打开退件窗体
  895. close: function () {
  896. z.webcontainer.closeTabById(z.ui.comm.getUrlParam("webContainerTabId"));
  897. },//关闭 暂无关闭业务逻辑
  898. focus: function (ele) {
  899. //左侧节点注册点击事件
  900. z.ui.lock(ele, function () {
  901. z.ui.ajax({
  902. url: workflowHost + "/IAttentionInstance/save",
  903. data: {
  904. flowInstanceId: z.ui.comm.getUrlParam("flowInstanceId"),
  905. activityInstanceId: z.ui.comm.getUrlParam("activityInstanceId"),
  906. },
  907. complete: function () {
  908. z.ui.unLock(ele);
  909. },
  910. success: function (res) {
  911. z.ui.alertSuccess(ele.text() + "成功!", 1000, function () {
  912. //$("[name='closeBtn']").click(); // 关闭当前TAB
  913. });
  914. }
  915. });
  916. });
  917. },//关注
  918. unfocus: function (ele) {
  919. z.ui.lock(ele, function () {
  920. z.ui.ajax({
  921. url: workflowHost + "/IAttentionInstance/cancelFocus",
  922. data: {
  923. flowInstanceId: z.ui.comm.getUrlParam("flowInstanceId"),
  924. activityInstanceId: z.ui.comm.getUrlParam("activityInstanceId"),
  925. },
  926. complete: function () {
  927. z.ui.unlock(ele);
  928. },
  929. success: function (res) {
  930. z.ui.alertSuccess(ele.text() + "成功", 1000, function () {
  931. //$("[name='closeBtn']").click(); // 关闭当前TAB
  932. });
  933. }
  934. });
  935. });
  936. },//取消关注
  937. cc: function (ele) {
  938. z.ui.ajax({
  939. "url": workflowHost + "/ICarbonCopyInstance/index",
  940. data: {
  941. "activityInstanceId": z.ui.comm.getUrlParam("activityInstanceId")
  942. },
  943. success: function (result) {
  944. var participantArr = result.participants;
  945. var dialogHtml = result.dialogHtml;
  946. flowFun.openCCModal(participantArr, dialogHtml);
  947. }
  948. })
  949. }, //抄送
  950. hangup: function (ele) {
  951. z.ui.lock(ele, function () {
  952. z.ui.ajax({
  953. url: workflowHost + "/Transfer/isHangUp",
  954. data: {
  955. activityInstanceId: z.ui.comm.getUrlParam("activityInstanceId")
  956. },
  957. complete: function () {
  958. z.ui.unLock(ele);
  959. },
  960. success: function (res) {
  961. if (res == "ok") {
  962. z.ui.modal("hangUp_local").init({
  963. url: workflowHost + "/IHangUp/add",
  964. dateType: "jsonp",
  965. title: "申请挂起",
  966. height: 410, width: 800,
  967. data: {
  968. activityInstanceId: z.ui.comm.getUrlParam("activityInstanceId"),
  969. isRecover: 0,
  970. participantId: z.ui.comm.getUrlParam("participant")
  971. }
  972. });
  973. }
  974. }
  975. })
  976. })
  977. },// 挂起
  978. hangupcancel: function (ele) {
  979. var _this = flowFun;
  980. z.ui.confirm("hangupcancel").init({
  981. content: "取消挂起后,挂起流程无法恢复,是否确认取消?",
  982. onConfirm: function () {
  983. z.ui.lock(ele, function () {
  984. z.ui.ajax({
  985. url: workflowHost + "/IHangUp/cancel",
  986. data: {flowInsId: z.ui.comm.getUrlParam("flowInstanceId")},
  987. complete: function () {
  988. z.ui.unLock(ele);
  989. },
  990. success: function (res) {
  991. _this.close();
  992. }
  993. })
  994. })
  995. }
  996. })
  997. }, //取消挂起
  998. nullapply: function (ele) {
  999. z.ui.lock(ele, function () {
  1000. z.ui.ajax({
  1001. url: workflowHost + "/Transfer/isVoid",
  1002. data: {flowInstanceId: z.ui.comm.getUrlParam("flowInstanceId")},
  1003. complete: function () {
  1004. z.ui.unLock(ele);
  1005. },
  1006. success: function (res) {
  1007. if (res == "ok") {
  1008. z.ui.modal("nullyApply_local").init({
  1009. url: workflowHost + "/INullyApply/add",
  1010. dateType: "jsonp",
  1011. title: "申请作废",
  1012. height: 400, width: 800,
  1013. data: {
  1014. voidFlowInstanceId: z.ui.comm.getUrlParam("flowInstanceId"),
  1015. activityInstanceId: z.ui.comm.getUrlParam("activityInstanceId")
  1016. }
  1017. });
  1018. }
  1019. }
  1020. })
  1021. });
  1022. },//作废
  1023. nullapplycancel: function (ele) {
  1024. var _this = flowFun;
  1025. z.ui.confirm("nullapplycancel").init({
  1026. content: "取消作废后,作废流程无法恢复,是否确认取消?",
  1027. onConfirm: function () {
  1028. z.ui.lock(ele, function () {
  1029. z.ui.ajax({
  1030. url: workflowHost + "/INullyApply/cancel",
  1031. data: {flowInstanceId: z.ui.comm.getUrlParam("flowInstanceId")},
  1032. complete: function () {
  1033. z.ui.unLock(ele);
  1034. },
  1035. success: function (res) {
  1036. _this.close();
  1037. }
  1038. })
  1039. })
  1040. }
  1041. })
  1042. }, //取消作废
  1043. reportprint: function (ele) {
  1044. var thatUrl = getUrl();
  1045. var url = [workflowHost,
  1046. "/Transfer/printReport?flowInstanceId=",
  1047. z.ui.comm.getStrUrlParam(thatUrl, "flowInstanceId"),
  1048. "&activityInstanceId=",
  1049. z.ui.comm.getStrUrlParam(thatUrl, "activityInstanceId"),
  1050. "&fromId=",
  1051. z.ui.comm.getStrUrlParam(thatUrl, "_fm")].join("");
  1052. z.webcontainer.openTab({
  1053. id: z.ui.comm.getStrUrlParam(thatUrl, "flowInstanceId") + '_flow_reports_page',
  1054. title: "报表打印",
  1055. url: url,
  1056. iconclass: 'fa fa-file'
  1057. });
  1058. function getUrl() {
  1059. var menuItem = $(".workflow-left").find(".menu");
  1060. for (var i = 0; i < menuItem.length; i++) {
  1061. var that = $(menuItem[i]);
  1062. if (that.hasClass("active")) {
  1063. return that.attr("addr");
  1064. }
  1065. }
  1066. }
  1067. },//打印
  1068. historyOpinion: function (ele) {
  1069. var editFlowOpinion = $("[name='flowReviewContain']").find(".opinionEdit");
  1070. z.ui.modal("viewHistoryOpinion").init({
  1071. url: workflowHost + "/IFlowOpinion/historyOpinion",
  1072. dateType: "jsonp",
  1073. title: "历史意见",
  1074. width: "90%",
  1075. height: "92%",
  1076. data: {
  1077. flowInstanceId: z.ui.comm.getUrlParam("flowInstanceId"),
  1078. activityInstanceId: z.ui.comm.getUrlParam("activityInstanceId"),
  1079. iEditOpinion: editFlowOpinion.length > 0 ? true : false
  1080. },
  1081. onAfterClose: function(data) {
  1082. if (data && data.opinionContent && editFlowOpinion.length > 0) {
  1083. $(editFlowOpinion[0]).find("[name='yjnr']").val(data.opinionContent);
  1084. }
  1085. }
  1086. });
  1087. },//历史意见
  1088. flowlog: function (ele) {
  1089. z.webcontainer.openTab({
  1090. id: 'workflowMain_History_' + z.ui.comm.getUrlParam("flowInstanceId"),
  1091. title: "流程日志",
  1092. // tip: window.userConfig.tn,
  1093. url: workflowHost + "/IFlowRecord/index?flowInstanceId=" + z.ui.comm.getUrlParam("flowInstanceId"),
  1094. iconclass: 'fa fa-file'
  1095. });
  1096. },//流程日志
  1097. showparent: function (ele) {
  1098. z.ui.lock(ele, function () {
  1099. z.ui.ajax({
  1100. url: workflowHost + "/Transfer/showParent",
  1101. data: {flowInstanceId: z.ui.comm.getUrlParam("flowInstanceId")},
  1102. complete: function () {
  1103. z.ui.unLock(ele);
  1104. },
  1105. success: function (res) {
  1106. z.webcontainer.openTab({
  1107. id: 'workflowMain_Log_' + z.ui.comm.getUrlParam("flowInstanceId"),
  1108. title: res.name,
  1109. url: res.url,
  1110. iconclass: 'fa fa-file'
  1111. });
  1112. }
  1113. })
  1114. })
  1115. },
  1116. leftCfg: function (postData, fun) {
  1117. z.ui.ajax({
  1118. url: workflowHost + "/Transfer/flowPageConfig",
  1119. data: postData,
  1120. success: function (res) {
  1121. if (fun instanceof Function) {
  1122. fun();
  1123. }
  1124. }
  1125. })
  1126. },//左侧设置
  1127. cyyj: function (ele) {
  1128. var yjnrObj = ele.parent().parent().find("[name=yjnr]")
  1129. z.ui.modal("cyyj_modal").init({
  1130. url: workflowHost + '/TFlowOpPersonal/show',
  1131. data: {activityInstanceId: z.ui.comm.getUrlParam("activityInstanceId"), yjnr: yjnrObj.html()},
  1132. title: '常用意见',
  1133. width: 850,
  1134. height: 430,
  1135. showHead: true,
  1136. showCloseBtn: true,
  1137. showMask: true,
  1138. onLoadSuccess: function (res, modal) {
  1139. modal.find("[name=user_opinion_text]").val(yjnrObj.val());
  1140. },
  1141. })
  1142. z.ui.modal("cyyj_modal").custom.refeash = function (res) {
  1143. yjnrObj.val(res); //ReviewRight->ReviewLine opinionEdit->意见内容
  1144. };
  1145. },//常用意见
  1146. getNextActivity: function (fun) {
  1147. z.ui.ajax({
  1148. url: workflowHost + "/Transfer/getNextActivity",
  1149. data: {
  1150. activityInstanceId: z.ui.comm.getUrlParam("activityInstanceId"),
  1151. participantId: z.ui.comm.getUrlParam("participant"),
  1152. flowOpinion: JSON.stringify(z.workflow.getEditOpinion()),
  1153. height: $(window).height(),
  1154. width: $(window).width()
  1155. },
  1156. complete: function () {
  1157. if (fun instanceof Function) {
  1158. fun();
  1159. }
  1160. },
  1161. success: function (result) {
  1162. if (result.isTransfer == 1 && result.iBatchTransfer == 0) {//直接转件
  1163. var transferTip = result.transferTip;
  1164. if (transferTip && transferTip != null) {
  1165. if (transferTip.index != 2 && (!result.tip || !result.tip[0] || !result.tip[0].users)) {
  1166. flowFun.transferSuccessTip(transferTip.tip, 1000);
  1167. return;
  1168. }
  1169. }
  1170. flowFun.transferSuccess(result.tip);
  1171. } else {//弹窗选中参与人后转件
  1172. var rotatePartsDto = result.rotatePartsDto;
  1173. if (!rotatePartsDto || rotatePartsDto.rotatePartsData.length == 0) {
  1174. z.ui.alertWarning("数据错误请联系管理员", 1000);
  1175. return;
  1176. }
  1177. flowFun.transferProcess(result);
  1178. }
  1179. }
  1180. });
  1181. },//获取下一步活动(普通转件)
  1182. getSameLevelActivity: function (position, fun) {
  1183. z.ui.ajax({
  1184. url: workflowHost + "/Transfer/getSameLevelNextActivity",
  1185. data: {
  1186. activityInstanceId: z.ui.comm.getUrlParam("activityInstanceId"),
  1187. participantId: z.ui.comm.getUrlParam("participant"),
  1188. position: position,
  1189. flowOpinion: JSON.stringify(z.workflow.getEditOpinion()),
  1190. height: $(window).height(),
  1191. width: $(window).width()
  1192. },
  1193. complete: function () {
  1194. if (fun instanceof Function) {
  1195. fun();
  1196. }
  1197. },
  1198. success: function (result) {
  1199. if (result.isTransfer == 1 && result.iBatchTransfer == 0) {//直接转件
  1200. var transferTip = result.transferTip;
  1201. if (transferTip && transferTip != null) {
  1202. if (transferTip.index != 2 && (!result.tip || !result.tip[0] || !result.tip[0].users)) {
  1203. flowFun.transferSuccessTip(transferTip.tip, 1000);
  1204. return;
  1205. }
  1206. }
  1207. flowFun.transferSuccess(result.tip);
  1208. } else {//弹窗选中参与人后转件
  1209. var rotatePartsDto = result.rotatePartsDto;
  1210. if (!rotatePartsDto || rotatePartsDto.rotatePartsData.length == 0) {
  1211. z.ui.alertWarning("数据错误请联系管理员", 1000);
  1212. return;
  1213. }
  1214. result["position"] = position;
  1215. flowFun.transferProcess(result, true);
  1216. }
  1217. }
  1218. });
  1219. },//获取下一步活动(同级转件)
  1220. transferProcess: function (transferData, iSameLevel) {
  1221. z.ui.modal("transferModal").init({
  1222. title: iSameLevel ? "同级转件" : '转件',//头文字
  1223. content: transferData.transferHtml, //页面html模板,与url互斥
  1224. // width: 900,
  1225. // height: transferModalConfig.modalHeight,
  1226. showHead: true,//显示头
  1227. showCloseBtn: true,//显示关闭按钮
  1228. showMask: true,//显示背景遮罩
  1229. onLoadSuccess: function (res, modal) {
  1230. z.ui.comp.init("[name=transfer-form]");
  1231. //清空批量选择待办件
  1232. transferModalConfig.batchSelectData = [];
  1233. transferModalConfig.reloadModal(transferData, iSameLevel);
  1234. }
  1235. });
  1236. },//弹窗转件
  1237. transferSuccess: function (tabUserArr) {
  1238. var resMsg = [];
  1239. var msgLen = 5;//已成功转至
  1240. for (var i = 0; i < tabUserArr.length; i++) {
  1241. var tabUser = tabUserArr[i];
  1242. if (tabUser.users) {
  1243. msgLen += tabUser.users.length;
  1244. var users = tabUser.users.length > 30 ? tabUser.users.substr(0, 30) + "..." : tabUser.users;
  1245. resMsg.push("已成功转至[" + tabUser.name + "]-[<span title='" + tabUser.users + "'>" + users + "</span>]");
  1246. } else if (tabUser.split) {//拆件
  1247. resMsg.push("转件成功");
  1248. } else {//归档节点无参与人
  1249. resMsg.push("已成功归档");
  1250. }
  1251. }
  1252. if (resMsg.length == 0) {
  1253. resMsg.push("转件成功");
  1254. }
  1255. //弹出提示消息两秒后关闭窗口 10字/秒阅读速度
  1256. msgLen = msgLen.length < 10 ? 10 : msgLen.length;
  1257. flowFun.transferSuccessTip(resMsg.join("<br/>"), ((msgLen / 10.0).toFixed(3)) * 1000);
  1258. },//转件结束事件
  1259. transferSuccessTip: function (successTip, displayTime) {
  1260. z.ui.alertSuccess(successTip, displayTime, function () {
  1261. z.ui.modal("transferModal").close();
  1262. $("[name='closeBtn']").click();//关闭当前TAB
  1263. z.webcontainer.closeCurrentTab();
  1264. });
  1265. },//转件成功提示信息
  1266. openCCModal: function (participants, dialogHtml) {
  1267. z.ui.modal("carbonCopyDialog").init({
  1268. title: '流程抄送',//头文字
  1269. content: dialogHtml, //页面html模板,与url互斥
  1270. width: 900,
  1271. height: ccModalConfig.modalHeight,
  1272. showHead: true,//显示头
  1273. showCloseBtn: true,//显示关闭按钮
  1274. showMask: true,//显示背景遮罩
  1275. onLoadSuccess: function (modal, res) {
  1276. ccModalConfig.reloadModal(participants);
  1277. },//加载完成事件
  1278. onBeforeShow: function (modal) {
  1279. },//显示前事件,返回false阻止显示
  1280. onAfterShow: function (modal) {
  1281. },//显示后事件
  1282. onBeforeClose: function (modal) {
  1283. },//点击关闭按钮前事件,返回false阻止关闭
  1284. onAfterClose: function (modal) {
  1285. },//点击关闭按钮后事件
  1286. onLoadError: function (xhr, ts, err) {//加载失败
  1287. }
  1288. });
  1289. },
  1290. leftMenuClick: function (url, type, fun) {
  1291. if (!url) {
  1292. z.ui.alertWarning("错误的表单地址");
  1293. return;
  1294. }
  1295. reloadBtnHtml(url, fun);
  1296. var thatId = z.ui.comm.getUrlParam("activityInstanceId") + "_" + z.ui.comm.getUrlParam("_fm");
  1297. var thisRight = $("[name=right_" + thatId + "]");
  1298. if (z.workflow.canFormEdit === true) {
  1299. var ifm = thisRight.children("iframe");
  1300. if (ifm.length > 0) {
  1301. z.webcontainer.messager.send({
  1302. targetwindow: ifm[0].contentWindow,
  1303. msgreceiveevent: "onBeforeSelectNode",
  1304. data: {},
  1305. callback: function (result, msg, e) {
  1306. selectNode();
  1307. }
  1308. });
  1309. } else {
  1310. selectNode();
  1311. }
  1312. } else {
  1313. selectNode()
  1314. }
  1315. function reloadBtnHtml(url, fun) {
  1316. var flowInstanceId = z.ui.comm.getStrUrlParam(url, "flowInstanceId");
  1317. var activityInstanceId = z.ui.comm.getStrUrlParam(url, "activityInstanceId");
  1318. var v = z.ui.comm.getStrUrlParam(url, "_o");
  1319. var f = z.ui.comm.getStrUrlParam(url, "first");
  1320. var fid = z.ui.comm.getStrUrlParam(url, "_fm");
  1321. var uId = z.ui.comm.getStrUrlParam(url, "userId");
  1322. z.ui.ajax({
  1323. url: workflowHost + "/Transfer/getBtnHtml",
  1324. data: {
  1325. flowInstanceId: flowInstanceId,
  1326. activityInstanceId: activityInstanceId,
  1327. v: v,
  1328. f: f,
  1329. fid: fid,
  1330. uId: uId
  1331. },
  1332. success: function (result) {
  1333. $("[name=workflow-top-btns]").html(result);
  1334. if (fun instanceof Function) {
  1335. fun();
  1336. }
  1337. }
  1338. })
  1339. }
  1340. function selectNode() {
  1341. z.workflow.canFormEdit = z.ui.comm.getStrUrlParam(url, "_o") === "v";
  1342. var modalDiv = $(".workflow-right"); //父容器
  1343. // thisRight.hide(); //隐藏当前活动节点的内容
  1344. modalDiv.children("[name^='right']").hide(); //隐藏全部right节点iframe
  1345. var selid = z.ui.comm.getStrUrlParam(url, "activityInstanceId") + "_" + z.ui.comm.getStrUrlParam(url, "_fm");
  1346. if (selid == thatId) {//当前活动节点
  1347. thisRight.show();
  1348. if (z.workflowMaterials.treeObj) {
  1349. z.workflowMaterials.treeObj.setBack(thisRight);
  1350. }
  1351. } else {
  1352. //显示选中节点iframe
  1353. var frameDiv = $("[name=right_" + selid + "]");
  1354. if (!frameDiv || frameDiv.length == 0) {
  1355. frameDiv = $("<div>").attr("name", "right_" + selid).css({
  1356. "width": "100%",
  1357. "height": "100%"
  1358. })
  1359. frameDiv.append($("<iframe>").addClass("workflow-iframe").attr({
  1360. name: "workflow-iframe-" + selid,
  1361. src: z.ui.comm.addUrlParam(url, "webContainerTabId", z.ui.comm.getUrlParam("webContainerTabId")),
  1362. frameborder: "no",
  1363. border: "0",
  1364. scrolling: "auto",
  1365. allowtransparency: "yes"
  1366. }))
  1367. modalDiv.append(frameDiv);
  1368. }
  1369. frameDiv.show();
  1370. if (z.workflowMaterials.treeObj) {
  1371. z.workflowMaterials.treeObj.setBack(frameDiv);
  1372. }
  1373. }
  1374. }
  1375. },
  1376. goSupervise: function (ele) {
  1377. var sprvFlowInstanceId = z.ui.comm.getUrlParam("flowInstanceId");
  1378. z.ui.lock(ele, function () {
  1379. z.ui.ajax({
  1380. url: workflowHost + "/ISuperviseInstance/addSupervisionProcess",
  1381. data: {
  1382. "sprvFlowInstanceId": sprvFlowInstanceId,
  1383. "sprvActivityInstanceId": z.ui.comm.getUrlParam("activityInstanceId"),
  1384. "sprvParticipantId": z.ui.comm.getUrlParam("participant")
  1385. },
  1386. complete: function () {
  1387. z.ui.unLock(ele);
  1388. },
  1389. success: function (res) {
  1390. if (!res.msg) {
  1391. z.webcontainer.openTab({
  1392. id: 'workflow_supervise_' + sprvFlowInstanceId,
  1393. title: "流程办理",
  1394. tip: "督办",
  1395. url: res.handlerUrl,
  1396. iconclass: 'fa fa-file'
  1397. }, res.openWay);
  1398. } else {
  1399. z.ui.alertError(res.msg);
  1400. }
  1401. }
  1402. });
  1403. });
  1404. }
  1405. }
  1406. //流程事件
  1407. z.workflow.canFormEdit = z.ui.comm.getUrlParam("_o") === "v";
  1408. z.workflow.transferModal = transferModalConfig;
  1409. z.workflow.ccModal = ccModalConfig;
  1410. z.workflow.flowFun = flowFun;
  1411. }());