SupplierOrder.js 12 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422
  1. var downUrl = "";
  2. var exData = null;
  3. var edit_id = "";
  4. var _memo_msg = "";
  5. var userId = "";
  6. var userPostCode = "";
  7. var clickTag = 0;
  8. function addFn() {
  9. edit_id = "";
  10. $(".win_tb").find("input").val("");
  11. $(".win_tb").find("textarea").val("");
  12. mini.get("add_win").show();
  13. }
  14. function orderPTimeRenderer(e) {
  15. var grid = e.sender;
  16. var record = e.record;
  17. var html = "<div style=\"display:flex;flex-direction:column;\">";
  18. html += ("<div>" + formatCommonDate(record.FinishPlaceTime) + "</div>");
  19. html += "</div>";
  20. return html;
  21. }
  22. function orderStatusRenderer(e) {
  23. var grid = e.sender;
  24. var record = e.record;
  25. var statestr = getOrderStatestrByState(record.OrderState);
  26. var html = "<div style=\"display:flex;flex-direction:column;\">";
  27. html += ("<div onclick=\"clickToLog('" + record.ctid + "')\" style=\"color:blue;margin-bottom:10px;\">" + statestr + "</div>");
  28. var taostatus = getInitStatusstrByState(record.status);
  29. html += ("<div>" + taostatus + "</div>");
  30. html += "</div>";
  31. return html;
  32. }
  33. function orderCusRenderer(e) {
  34. var grid = e.sender;
  35. var record = e.record;
  36. var html = "<div style=\"display:flex;flex-direction:column;align-items:center;\">";
  37. html += ("<a style=\"color:blue;\">" + record.CustomerUserName + "</a>");
  38. html += ("<a style=\"color:blue;\">" + record.DesignUserName + "</a>");
  39. html += "</div>";
  40. return html;
  41. }
  42. function addressRenderer(e) {
  43. var grid = e.sender;
  44. var record = e.record;
  45. var tid = record.tid;
  46. var rowIndex = e.rowIndex;
  47. var html = "<div>" + record.receiver_name + " " + record.receiver_mobile + " " + record.receiver_state + record.receiver_city + record.receiver_district + record.receiver_address + "</div>";
  48. return html;
  49. }
  50. function actionRenderer(e) {
  51. var record = e.record;
  52. var ctid = record.ctid;
  53. var html = "";
  54. if (record.IsVerifyToSupplier == "False") {
  55. html += getGridBtn("memo", "审核", "verifyFn('" + ctid + "')");
  56. }
  57. else if (record.IsVerifyToSupplier == "True") {
  58. html += "<div style='color:green;'>已审核</div>";
  59. }
  60. return html;
  61. }
  62. function supActionRenderer(e) {
  63. var record = e.record;
  64. var ctid = record.ctid;
  65. var html = "";
  66. html += getGridBtn("stop", "退回", "supplierBackFn('" + ctid + "')");
  67. return html;
  68. }
  69. function supplierBackFn(ctid) {
  70. //if (!confirm("确认退回吗?")) return;
  71. //postAjax("upd_erp_supplierback", "ctid=" + ctid, function (data) {
  72. // resultShow(data, "grid.reload();");
  73. //});
  74. var rec = grid.getSelected();
  75. if (rec != undefined && rec != "") {
  76. edit_id = rec.ctid;
  77. mini.prompt("请输入原因:", "退单",
  78. function (action, value) {
  79. if (action == "ok") {
  80. var parms = new Object();
  81. parms.ctid = ctid;
  82. parms.returnreason = value;
  83. postAjax("upd_erp_supplierback", parms, function (data) {
  84. if (data != "操作成功!") {
  85. mini.confirm(data, "确定?",
  86. function (action) { }
  87. }
  88. );
  89. resultShow(data, "grid.reload();");
  90. });
  91. } else {
  92. }
  93. },
  94. true
  95. );
  96. }
  97. else {
  98. mini.alert("请选中一行记录!");
  99. }
  100. }
  101. function verifyFn(ctid) {
  102. if (!confirm("确认审核吗?(供应商将收到此订单)")) return;
  103. postAjax("upd_erp_verifytosupplier", "ctid=" + ctid, function (data) {
  104. resultShow(data, "grid.reload();");
  105. });
  106. }
  107. //点击指派按钮
  108. function assignSupplierFn() {
  109. var rec = grid.getSelected();
  110. if (rec != undefined && rec != "") {
  111. edit_id = rec.ctid;
  112. mini.get("assign_win").show();
  113. $("#assign_win").find("input").val("");
  114. }
  115. else {
  116. mini.alert("请选中一行记录!");
  117. }
  118. }
  119. //保存指派供应商
  120. function saveAssignFn() {
  121. var parms = new Object();
  122. parms.ctid = edit_id;
  123. parms.SupplierName = mini.get("txtSupplierName").getValue();
  124. if (parms.SupplierName == "") {
  125. alert("供应商不能为空!");
  126. return;
  127. }
  128. postAjax("assign_erp_supplier", parms, function (data) {
  129. mini.get("assign_win").hide();
  130. resultShow(data, "grid.reload();");
  131. });
  132. }
  133. function cancelAssignFn() {
  134. mini.get("assign_win").hide();
  135. }
  136. //退单按钮
  137. function returnOrderFn() {
  138. var rec = grid.getSelected();
  139. if (rec != undefined && rec != "") {
  140. edit_id = rec.ctid;
  141. mini.prompt("请输入原因:", "退单",
  142. function (action, value) {
  143. if (action == "ok") {
  144. var parms = new Object();
  145. parms.ctid = edit_id;
  146. parms.returnreason = value;
  147. postAjax("ins_erp_returnreason", parms, function (data) {
  148. resultShow(data, "grid.reload();");
  149. });
  150. } else {
  151. }
  152. },
  153. true
  154. );
  155. }
  156. else {
  157. mini.alert("请选中一行记录!");
  158. }
  159. }
  160. //查询按钮
  161. function searchFn() {
  162. var form = new mini.Form("#ctl00_f_all");
  163. var data = form.getData(true, false);
  164. var s = data;
  165. //var s = mini.encode(data);
  166. //alert(s);
  167. //form.setIsValid(false);
  168. //console.log("565656565", data);
  169. grid.load({
  170. ctid: s.tid, shopname: s.shop, buyer_nick: s.ww, design: s.design, orderState: s.state,
  171. date1: s.date1, date2: s.date2, price1: s.price1, price2: s.price2, supplier: s.supplier, seller_memo: s.memo
  172. });
  173. }
  174. //清除查询内容
  175. function clearFn() {
  176. //$("#ctl00_f_all").find("input").val("");
  177. var form = new mini.Form("#ctl00_f_all");
  178. form.clear();
  179. //mini.get("aSearchMonth").setChecked(false);
  180. //mini.get("aSearchDay").setChecked(false);
  181. //mini.get("aSearchWeek").setChecked(false);
  182. }
  183. function view_search() {
  184. var key = "";
  185. if ($("#txtKey").length > 0) {
  186. key = $("#txtKey").val();
  187. }
  188. grid.load({ key: key, type: $("#txtSearchType").val() });
  189. }
  190. var fileDownArray = [];
  191. var fileDownIndex = 0;
  192. var winArray = new Array();
  193. var cIdArray = new Array();
  194. var clickTtime = false;
  195. function multiExport() {
  196. //defExport();
  197. if (clickTtime) {
  198. return;
  199. }
  200. clickTtime = true;
  201. setTimeout(() => {
  202. clickTtime = false;
  203. }, 1000);
  204. var sels = grid.getSelecteds();
  205. if (sels.length > 0) {
  206. var pArr = new Array();
  207. for (var i = 0; i < sels.length; i++) {
  208. pArr.push(sels[i].ctid);
  209. }
  210. postAjax("checkSupplierOrder", { ctids: pArr }, function (data) {
  211. if (data.data.length > 0) {
  212. let html = `<div style="text-align: center;font-size: 20px;">订单:<br/>${data.data.join("<br/>")}<br/>已被打回,请重新刷新后再选择下载!</div>`;
  213. mini.showMessageBox({
  214. title: "提示!",
  215. iconCls: "mini-messagebox-question",
  216. maxWidth: 1200,
  217. maxHeight: 500,
  218. buttons: ["确认"],
  219. html,
  220. callback: function (action) { }
  221. })
  222. } else {
  223. downOneFile(pArr);
  224. }
  225. });
  226. //close_handler();
  227. } else {
  228. mini.alert("请选择要下载的记录!");
  229. }
  230. }
  231. function goMultiDownload(sels) {
  232. var total = sels.length;
  233. var culTag = 0;
  234. var errMsg = "";
  235. var pArr = new Array();
  236. progressShow();
  237. //pArr.push(sels[i].ctid);
  238. //noFileDown(downUrl.replace("download", "copydownload"), "hexdata=" + sels[i].ctid + "&userid=" + userId);
  239. noFileDownForMulProcess(downUrl.replace("download", "copydownload"), "hexdata=" + sels + "&userid=" + userId + "&supplier=1",
  240. function (smsg) {
  241. console.log("smsg---------" + smsg);
  242. grid.reload();
  243. if (smsg == "") {
  244. showToast("文件下载结束");
  245. }
  246. progressHide();
  247. },
  248. function (emsg) {
  249. grid.reload();
  250. if (emsg.length > 0) {
  251. alert(emsg);
  252. }
  253. progressHide();
  254. });
  255. //noFileDown(downUrl.replace("download", "copydownload"), "hexdata=" + pArr.join(",") + "&userid=" + userId);
  256. }
  257. var ti_ho = null;
  258. function close_handler() {
  259. if (winArray.length <= 0 && ti_ho) {
  260. clearInterval(ti_ho);
  261. if (grid != null)
  262. grid.reload();
  263. return;
  264. }
  265. for (var w = 0; w < winArray.length; w++) {
  266. if (!winArray[w])
  267. continue;
  268. //console.log(winArray[w].closed);
  269. if (winArray[w].closed) {
  270. winArray.splice(w, 1);
  271. var id = cIdArray[w];
  272. cIdArray.splice(w, 1);
  273. /*
  274. postAjax("update_file_have_down_by_supplier", { "ctid": id }, function (data) {
  275. if (grid != null)
  276. grid.reload();
  277. });*/
  278. break;
  279. }
  280. }
  281. ti_ho = window.setTimeout(function () {
  282. close_handler();
  283. }, 800);
  284. }
  285. function downOneFile(ctid) {
  286. var pdata = "hexdata=" + ctid.join(",") + "&supplier=1&userid=" + userId;
  287. progressShow("设计稿文件打包中,请勿关闭当前页面,以免造成数据遗失。");
  288. var url = downUrl.replace("download", "supplierDownload");
  289. var xhr = new XMLHttpRequest(); // 创建XMLHttpRequest实例
  290. xhr.open('POST', url); // 打开下载文件请求
  291. xhr.responseType = "blob";
  292. xhr.setRequestHeader("Content-Type", "application/x-www-form-urlencoded")
  293. xhr.onloadstart = function () {
  294. console.log('Download started'); // 下载开始
  295. };
  296. xhr.onprogress = function (event) {
  297. if (event.lengthComputable) { // 下载进度可计算
  298. var percent = Math.round((event.loaded / event.total) * 100); // 计算下载进度百分比
  299. console.log('Download progress: ' + percent + '%'); // 打印下载进度
  300. let element = $("#progressShowDiv");
  301. rMsg = '文件下载: ' + percent + '%';
  302. element.html(rMsg);
  303. }
  304. };
  305. xhr.onerror = function () {
  306. console.log('Net error');
  307. progressHide();
  308. resultShow("网络出现错误,重新下载");
  309. }
  310. xhr.ontimeout = function () {
  311. console.log('Net timeout');
  312. progressHide();
  313. resultShow("下载超时,重新下载");
  314. }
  315. xhr.onloadend = function () {
  316. console.log('Download completed'); // 下载完成
  317. if (xhr.status === 200) {
  318. try {
  319. let blob = xhr.response;
  320. let fileName = xhr.getResponseHeader("Content-Disposition").split('filename=')[1];
  321. fileName = decodeURIComponent(fileName);
  322. let url = URL.createObjectURL(blob);
  323. let a = document.createElement('a');
  324. a.href = url;
  325. a.download = fileName;
  326. document.body.appendChild(a);
  327. a.click();
  328. document.body.removeChild(a);
  329. window.URL.revokeObjectURL(url);
  330. verifyOrderFn(ctid.join(","))
  331. } catch (e) {
  332. console.log('system error');
  333. progressHide();
  334. resultShow("系统文件错误,稍后下载");
  335. }
  336. } else {
  337. try {
  338. let fileReader = new FileReader()
  339. fileReader.onload = function () {
  340. const json = fileReader.result;
  341. resultShow(json);
  342. }
  343. fileReader.readAsText(xhr.response);
  344. } catch (e) {
  345. }
  346. }
  347. grid.reload();
  348. progressHide();
  349. };
  350. xhr.send(pdata); // 发送下载文件请求
  351. }
  352. function verifyOrderFn(tids) {
  353. if (!confirm("确认下载完成了么?")) return;
  354. let parms = { tids };
  355. progressShow("更新订单信息中");
  356. postAjax("supplier_all_downs", parms, function (data) {
  357. progressHide();
  358. resultShow(data, "grid.reload();");
  359. });
  360. }
  361. function packOrder() {
  362. let sels = grid.getSelecteds();
  363. if (sels.length > 0) {
  364. let ctids = [];
  365. for (var i = 0; i < sels.length; i++) {
  366. ctids.push(sels[i].ctid);
  367. }
  368. postAjax("packOrderInfo", { ctids: ctids.join(",") }, function (data) {
  369. progressHide();
  370. resultShow(data, "grid.reload();");
  371. });
  372. } else {
  373. mini.alert("请选择要下载的记录!");
  374. }
  375. }