receive_process.js 11 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411
  1. var url = API.API_URL();
  2. mui.init();
  3. var viewApi = mui('#app').view({
  4. defaultPage: '#setting'
  5. });
  6. //初始化单页的区域滚动
  7. mui('.mui-scroll-wrapper').scroll();
  8. var view = viewApi.view;
  9. (function($, doc) {
  10. //处理view的后退与webview后退
  11. var oldBack = $.back;
  12. $.back = function() {
  13. if(viewApi.canBack()) { //如果view可以后退,则执行view的后退
  14. viewApi.back();
  15. } else { //执行webview后退
  16. oldBack();
  17. }
  18. };
  19. //监听页面切换事件方案1,通过view元素监听所有页面切换事件,目前提供pageBeforeShow|pageShow|pageBeforeBack|pageBack四种事件(before事件为动画开始前触发)
  20. //第一个参数为事件名称,第二个参数为事件回调,其中e.detail.page为当前页面的html对象
  21. view.addEventListener('pageBeforeShow',
  22. function(e) {
  23. console.log(e.detail.page.id + ' beforeShow');
  24. });
  25. view.addEventListener('pageShow', function(e) {
  26. console.log(e.detail.page.id + ' show');
  27. });
  28. view.addEventListener('pageBeforeBack', function(e) {
  29. console.log(e.detail.page.id + ' beforeBack');
  30. });
  31. view.addEventListener('pageBack', function(e) {
  32. console.log(e.detail.page.id + ' back');
  33. });
  34. })(mui);
  35. if(!mui.os.plus) {
  36. mui.ready(function() {
  37. getFlowInfo();
  38. getFormInfo();
  39. })
  40. }
  41. var tinsId = "";
  42. var insId = "";
  43. var rid = "";
  44. mui.plusReady(function() {
  45. var self = plus.webview.currentWebview();
  46. tinsId = self.tinsId;
  47. insId = self.insId;
  48. rid = self.rid;
  49. getFlowInfo();
  50. getProcessflow();
  51. getFormInfo();
  52. });
  53. var vm2 = new Vue({
  54. el: '#receive_info',
  55. data: {
  56. receive_infos: {},
  57. files: {}
  58. }
  59. });
  60. //流程信息
  61. var vm3 = new Vue({
  62. el: '#flowInfo', //bodydiv
  63. data: {
  64. selModelId: '',
  65. flow: {},
  66. tache: {},
  67. tmodel: {},
  68. nextTmodels: [],
  69. nextHandTmodels: [],
  70. processList: []
  71. },
  72. methods: {
  73. getTUserName: function(tmodel) {
  74. return "usersName" + tmodel.nextTmodelId;
  75. },
  76. getTUserId: function(tmodel) {
  77. return "users" + tmodel.nextTmodelId;
  78. },
  79. }
  80. });
  81. //获取流程信息
  82. function getFlowInfo() {
  83. var state = app.getState(); //获取登陆信息
  84. var staffId = state.user.useId;
  85. mui.ajax(url, {
  86. dataType: 'json', //服务器返回json格式数据
  87. type: 'post', //HTTP请求类型
  88. data: {
  89. 'serviceId': 'oa_Receive_2018V0010PHONE005',
  90. 'params': '{staffId:"' + staffId + '",tinsid:"' + tinsId + '",rid:"' + rid +'"}'
  91. },
  92. timeout: 10000, //超时时间设置为10秒;
  93. headers: {
  94. 'Accept': 'application/json'
  95. },
  96. success: function(data) {
  97. //服务器返回响应
  98. console.log("流程信息:" + JSON.stringify(data));
  99. if(data && data.returnCode == "0") {
  100. var returnParams = data.returnParams;
  101. vm3.flow = returnParams.flow;
  102. vm3.tache = returnParams.tache;
  103. vm3.tmodel = returnParams.tmodel;
  104. vm3.nextTmodels = returnParams.nextTmodels;
  105. vm3.nextHandTmodels = returnParams.nextHandTmodels;
  106. if(vm3.nextTmodels.length != 0) {
  107. vm3.selModelId = vm3.nextTmodels[0].nextTmodelId.tmodelId;
  108. }
  109. } else {
  110. mui.toast("获取流程信息错误");
  111. }
  112. },
  113. error: function(xhr, type, errorThrown) {
  114. //异常处理;
  115. console.log(xhr + "========" + type + "===========" + errorThrown);
  116. }
  117. });
  118. };
  119. //流程流转信息
  120. function getProcessflow() {
  121. var state = app.getState(); //获取登陆信息
  122. var staffId = state.user.useId;
  123. mui.ajax(url, {
  124. dataType: 'json', //服务器返回json格式数据
  125. type: 'post', //HTTP请求类型
  126. data: {
  127. 'serviceId': 'bpm_2013V0100PHONE007',
  128. 'params': '{staffId:"' + staffId + '",insid:"' + insId + '"}'
  129. },
  130. timeout: 10000, //超时时间设置为10秒;
  131. headers: {
  132. 'Accept': 'application/json'
  133. },
  134. success: function(data) {
  135. //服务器返回响应
  136. console.log("流转过程信息:" + JSON.stringify(data));
  137. if(data && data.returnCode == "0") {
  138. var returnParams = data.returnParams.list;
  139. if(returnParams.length > 0) {
  140. vm3.processList = vm3.processList.concat(returnParams);
  141. }
  142. } else {
  143. mui.toast("获取流程信息错误");
  144. }
  145. },
  146. error: function(xhr, type, errorThrown) {
  147. //异常处理;
  148. console.log(xhr + "========" + type + "===========" + errorThrown);
  149. }
  150. });
  151. };
  152. //获取表单信息
  153. function getFormInfo() {
  154. //开启等待框
  155. var w = plus.nativeUI.showWaiting("处理中,请等待...", {
  156. loading: {
  157. display: "inline"
  158. }
  159. });
  160. var state = app.getState(); //获取登陆信息
  161. var staffId = state.user.useId;
  162. mui.ajax(url, {
  163. dataType: 'json', //服务器返回json格式数据
  164. type: 'post', //HTTP请求类型
  165. data: {
  166. 'serviceId': 'oa_Receive_2018V0010PHONE004',
  167. 'params': '{staffId:"' + staffId + '",rid:"' + rid + '"}'
  168. },
  169. timeout: 10000, //超时时间设置为10秒;
  170. headers: {
  171. 'Accept': 'application/json'
  172. },
  173. success: function(data) {
  174. //服务器返回响应
  175. if(data && data.returnCode == "0") {
  176. //关闭等待框
  177. var t = setInterval(function() {
  178. w.setTitle("处理中,请等待...");
  179. w.close();
  180. clearInterval(t);
  181. }, 1000);
  182. vm2.files = data.returnParams.files;
  183. vm2.receive_infos = data.returnParams.receiveInfo;
  184. } else {
  185. mui.toast("获取发文信息错误");
  186. }
  187. },
  188. error: function(xhr, type, errorThrown) {
  189. //异常处理;
  190. console.log(xhr + "========" + type + "===========" + errorThrown);
  191. }
  192. });
  193. };
  194. //驳回提交按钮
  195. var returnBth = document.getElementById("returnBth");
  196. returnBth.addEventListener("click", function() {
  197. flowProcess(0);
  198. });
  199. //表单提交按钮
  200. var saveBtn = document.getElementById("saveBtn");
  201. saveBtn.addEventListener("click", function() {
  202. flowProcess(1);
  203. });
  204. function flowProcess(result) {
  205. var state = app.getState(); //获取登陆信息
  206. var staffId = state.user.useId;
  207. var gxId = state.user.gxId;
  208. var groupId = state.user.groupid;
  209. var modelId = vm3.tmodel.modelId;
  210. var tmodelId = vm3.tmodel.tmodelId;
  211. var preTinsId = vm3.tache.preTinsId;
  212. var pathJudgeType = vm3.tmodel.pathJudgeType.value; //0并行分支,1手动分支,2条件分支
  213. var isMoreIns = vm3.tmodel.isMoreIns.value;
  214. var se = vm3.tmodel.se.value;
  215. var insName = vm3.flow.insName;
  216. var nextTmodelId = vm3.nextTmodels[0].nextTmodelId.tmodelId;
  217. var nextHandTmodels = vm3.nextHandTmodels;
  218. var usesNames = [];
  219. var ids = vm2.receive_infos.id;
  220. if(result == 1) {
  221. if(1 == pathJudgeType) {
  222. var nextTmodelId = $("#nextTmodelId").val(); //手动选择选中的下一环节
  223. if(nextTmodelId == "") {
  224. alert("请选择下一环节");
  225. return;
  226. }
  227. if(nextHandTmodels.length > 0 && $("input[id="+selModelId+"]:visible").length > 0) {
  228. var username = $("#" + nextTmodelId).attr("userId");
  229. if(username == "" || !username) {
  230. alert("请选择环节操作人");
  231. return;
  232. }
  233. }
  234. usesNames = [{
  235. nextTmodelId: nextTmodelId,
  236. username: username
  237. }];
  238. } else if(0 == pathJudgeType) {
  239. if(nextHandTmodels.length > 0 && $("input[id="+selModelId+"]:visible").length > 0) {
  240. for(var i = 0; i < nextHandTmodels.length; i++) {
  241. var nextTmodelId = nextHandTmodels[i].nextTmodelId;
  242. var username = $("#" + nextTmodelId).attr("userId");
  243. if(username == "" || !username) {
  244. alert("请选择环节操作人");
  245. return;
  246. }
  247. usesNames.push({
  248. nextTmodelId: nextTmodelId,
  249. username: username
  250. });
  251. }
  252. }
  253. }
  254. }
  255. document.getElementById("saveBtn").setAttribute("disabled", true); //按钮变灰不可用
  256. //document.getElementById("crop").removeAttribute("disabled");按钮可用方法
  257. //开启等待框
  258. var w = null;
  259. if(mui.os.plus) {
  260. w = plus.nativeUI.showWaiting("处理中,请等待...", {
  261. loading: {
  262. display: "inline"
  263. }
  264. });
  265. }
  266. var fileIds = $("#fileIds").val(); //附件id
  267. if(!fileIds) {
  268. fileIds = "";
  269. }
  270. var remark1 = $("#remark1").val();
  271. var flow = '{staffId:' + staffId + ',gxId:' + gxId + ',insName:"' + insName + '",tmodelId:"' + tmodelId +
  272. '",modelId:"' + modelId + '",insId:"' + insId + '",tinsId:"' + tinsId + '",preTinsId:"' + preTinsId +
  273. '",groupId:"' + groupId + '",isMoreIns:"' + isMoreIns +'",rid:"' + rid +
  274. '",se:"' + se + '",nextTmodelId:"' + nextTmodelId + '",remark1:"' + remark1 + '",usesNames:' + JSON.stringify(usesNames) + '}';
  275. //表单字段信息
  276. var receive_infos = $("#receive_info").serializeArray();
  277. var form = '{receive_info:' + JSON.stringify(receive_infos) +'}';
  278. console.log(flow);
  279. jQuery.ajax({
  280. dataType: 'json', //服务器返回json格式数据
  281. type: 'POST',
  282. url: url,
  283. contentType: "application/x-www-form-urlencoded; charset=utf-8",
  284. data: {
  285. 'serviceId': 'oa_Receive_2018V0010PHONE006',
  286. 'params': '{flow:' + flow + ',form:' + form + '}'
  287. },
  288. success: function(data) {
  289. console.log("返回信息:" + JSON.stringify(data));
  290. if(mui.os.plus) {
  291. //关闭等待框
  292. var t = setInterval(function() {
  293. w.setTitle("处理中,请等待...");
  294. w.close();
  295. clearInterval(t);
  296. }, 1000);
  297. }
  298. if(data.returnCode == "1") {
  299. mui.toast(data.returnMsg);
  300. mui.openWindow({
  301. createNew: true,
  302. url: "receive_approve_list.html",
  303. extras: {}
  304. });
  305. } else if(data.returnCode == "2") {
  306. mui.toast(data.returnMsg);
  307. mui.openWindow({
  308. createNew: true,
  309. url: "receive_approve_list.html",
  310. extras: {}
  311. });
  312. } else {
  313. mui.toast(data.returnMsg);
  314. location.reload();
  315. }
  316. },
  317. error: function(html) {
  318. var flag = (typeof console != 'undefined');
  319. if(flag) {
  320. console.log("服务器忙,提交数据失败,代码:" + html.status + ",请联系管理员!");
  321. mui.toast("服务器忙,提交数据失败,请联系管理员!");
  322. }
  323. }
  324. });
  325. }
  326. //日期控件
  327. function time(id) {
  328. var dDate = new Date();
  329. dDate.setFullYear(2014, 7, 16);
  330. var minDate = new Date();
  331. minDate.setFullYear(2010, 0, 1);
  332. var maxDate = new Date();
  333. maxDate.setFullYear(2016, 11, 31);
  334. plus.nativeUI.pickDate(function(e) {
  335. var d = e.date;
  336. var a = d.getFullYear() + "-" + (d.getMonth() + 1) + "-" + d.getDate();
  337. $("#" + id).val(a);
  338. }, {
  339. title: "请选择日期",
  340. date: dDate,
  341. minDate: minDate,
  342. maxDate: maxDate
  343. });
  344. }
  345. //上传附件
  346. function file_upload(fileIds) {
  347. var formData = new FormData($("#fileForm")[0]);
  348. jQuery.ajax({
  349. type: 'POST',
  350. url: API.API_ROOT + '/uploadFileRecorderAction.do',
  351. data: formData,
  352. // 告诉jQuery不要去处理发送的数据
  353. processData: false,
  354. // 告诉jQuery不要去设置Content-Type请求头
  355. contentType: false,
  356. success: function(data) {
  357. console.log(data);
  358. $('#' + fileIds).val(data);
  359. },
  360. error: function(html) {
  361. var flag = (typeof console != 'undefined');
  362. if(flag)
  363. console.log("服务器忙,提交数据失败,代码:" + html.status + ",请联系管理员!");
  364. alert("服务器忙,提交数据失败,请联系管理员!");
  365. }
  366. });
  367. }
  368. //文件下载的任务
  369. function openFile(path) {
  370. if(path.indexOf("http") == -1) {
  371. path = API.API_IP_PORT + "" + path;
  372. }
  373. var dtask = plus.downloader.createDownload(path, {}, function(d, status) { //创建一个下载任务,可以在网上搜索这个方法了解
  374. if(status == 200) {
  375. mui.toast("下载成功!");
  376. plus.runtime.openFile(d.filename, {}, function(e) { //调用第三方应用打开文件
  377. alert(path);
  378. alert('打开失败');
  379. });
  380. } else {
  381. alert("Download failed: " + status);
  382. }
  383. });
  384. dtask.start();
  385. }