OrderStatusMg.js 9.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263
  1. function showProductProcess(itemId) {
  2. SaveAjax({
  3. url: window.appUrl + "OrderItems/QueryProductProcess?orderItemId=" + itemId,
  4. dataType: "json",
  5. isAlert: false,
  6. isValidate: false,
  7. success: function(res) {
  8. let $timeLine = $('.timeline-small-body ul');
  9. $timeLine.empty();
  10. if (res && res.length > 0) {
  11. res.forEach(function(v, i) {
  12. $timeLine.append(` <li>
  13. <div class="bullet pink"></div>
  14. <div class="processName">${v.processName}</div>
  15. <div class="desc">
  16. <h3>状态</h3>
  17. <h4>${v.currentStatus}</h4>
  18. </div>
  19. <div class="desc">
  20. <h3>开始日期</h3>
  21. <h4>${DateFormatter(v.startDate)}</h4>
  22. </div>
  23. </li>`);
  24. });
  25. $("#showProductProcess").modal('show');
  26. } else {
  27. abp.message.info("订单没有生产记录!");
  28. }
  29. }
  30. });
  31. }
  32. //<!------------------2024 start----------------->
  33. function f_lockStore() {
  34. var items = $tableOrderItem.bootstrapTable("getSelections");
  35. if (items.length !== 1) {
  36. abp.message.warn("请选中一条记录操作!");
  37. return
  38. }
  39. data = items[0]
  40. // 15:已审核
  41. if (data.orderItemStatusId != 15) {
  42. abp.message.warn("订单明细状态为已审核才能锁定库存!");
  43. return;
  44. }
  45. $("#quantity_lockstore_key").val(data.quantity);
  46. $("#orderItemId_lockstore_key").val(data.id);
  47. $("#customerId_lockstore_key").val(data.customerId);
  48. $("#productId_lockstore").val(data.productNo);
  49. reloadLockStoreTable(data.productNo, data.quantity, data.customerId)
  50. renderLockedStoreTable(data.id)
  51. $("#modalLockStore").modal("show");//modalShowLockStore_body
  52. }
  53. //输入锁定库存
  54. function reloadLockStoreTable(productNo, quantity, customerId) {
  55. var $tbody = $(".table.table-striped.lockstore > tbody");
  56. $tbody.find("tr:not(:first)").remove();
  57. SaveAjax({
  58. url: window.appUrl + "Query/QueryStoreFilter?productNo=" + productNo + '&customerId=' + customerId,
  59. isAlert: false,
  60. isValidate: false,
  61. success: function (res) {
  62. if (res && res.length > 0) {
  63. res.forEach(function (r) {
  64. var sTr = '<tr>';
  65. sTr += '<td class="currentProductStoreHouseNo" style="display:none;">' +
  66. r.currentProductStoreHouseNo +
  67. '</td>';
  68. sTr += '<td class="productionOrderNo">' + r.productionOrderNo + '</td>';
  69. sTr += '<td class="storeLocationNo">' + r.storeLocationNo + '</td>';
  70. var isCanUser = formatNum(Number(r.quantity), Number(r.freezeQuantity), 3);
  71. sTr += '<td>' + isCanUser + '</td>';
  72. sTr +=
  73. '<td style="position:relative"><input type="text" name="SendQuantity" class="form-control number sendQuantity form-input-send" min="0" max="' +
  74. isCanUser +
  75. '"/></td>';
  76. sTr +=
  77. '<td style="position:relative"><input type="text" name="AvgSendQuantity" class="form-control number avgQuantity form-input-send" min="0"/></td>';
  78. sTr += '</tr>';
  79. $tbody.append(sTr);
  80. });
  81. }
  82. }
  83. });
  84. }
  85. //展示订单明细已经锁定的库存信息
  86. function renderLockedStoreTable(orderItemId) {
  87. $("#LockedStoreTable").bootstrapTable("destroy");
  88. SaveAjax({
  89. url: window.appUrl + "OrderBookStore/GetDataByOrderItemId?id=" + orderItemId,
  90. isAlert: false,
  91. isValidate: false,
  92. success: function (res) {
  93. $("#LockedStoreTable").bootstrapTable({ data: res })
  94. }
  95. })
  96. }
  97. //获取已锁定的总数量
  98. function getLockStoreAllQuantity() {
  99. let data = $("#LockedStoreTable").bootstrapTable('getData');
  100. return data.reduce((pre,cur) => {
  101. return pre+cur.quantity
  102. },0)
  103. }
  104. //锁定库存
  105. function lockStoreAction() {
  106. var customerId = $("#customerId_lockstore_key").val();
  107. var productNo = $("#productId_lockstore").val();
  108. var quantity = $("#quantity_lockstore_key").val();//订单明细数量
  109. var orderItemId = $("#orderItemId_lockstore_key").val();
  110. var $tbody = $(".table.table-striped.lockstore > tbody");
  111. var trDatas = $tbody.find("tr:not(:first)");
  112. var sendAll = 0;
  113. var dataParam = {
  114. AddItems: [],
  115. OrderItemId: orderItemId,
  116. };
  117. if (trDatas) {
  118. for (var i = 0; i < trDatas.length; i++) {
  119. var sendItem = {};
  120. var sendQuantity = $(trDatas[i]).find(".sendQuantity").val();
  121. if (!sendQuantity || Number(sendQuantity) <= 0) {
  122. continue;
  123. }
  124. sendItem.Quantity = Number(sendQuantity);
  125. var quantityPerPack = $(trDatas[i]).find(".avgQuantity").val();
  126. if (!quantityPerPack || Number(quantityPerPack) <= 0) {
  127. quantityPerPack = sendQuantity;
  128. }
  129. sendItem.QuantityPerPack = Number(quantityPerPack);
  130. var currentProductStoreHouseNo = $(trDatas[i]).find(".currentProductStoreHouseNo").text();
  131. if (currentProductStoreHouseNo) {
  132. sendItem.CurrentProductStoreHouseNo = currentProductStoreHouseNo;;
  133. }
  134. var productionOrderNo = $(trDatas[i]).find(".productionOrderNo").text();
  135. if (productionOrderNo) {
  136. sendItem.ProductBatchNum = productionOrderNo;
  137. } else {
  138. sendItem.ProductBatchNum = "00000000000";
  139. }
  140. var storeLocationNo = $(trDatas[i]).find(".storeLocationNo").text();
  141. if (storeLocationNo) {
  142. sendItem.StoreLocationNo = storeLocationNo;
  143. }
  144. sendItem.ProductNo = productNo;
  145. sendItem.CustomerId = customerId;
  146. dataParam.AddItems.push(sendItem);
  147. sendAll += sendItem.Quantity
  148. }
  149. }
  150. if (sendAll <= 0) {
  151. abp.message.warn("锁定发货总量需要大于0千件!");
  152. return;
  153. }
  154. let hasLockQuantity = getLockStoreAllQuantity()
  155. var save = function () {
  156. SaveAjax({
  157. url: window.appUrl + "OrderBookStore/LockStore",
  158. //contentType: 'application/json',
  159. dataType: "json",
  160. form: $("#formStore"),
  161. data: dataParam,
  162. isAlert: false,
  163. isValidate: true,
  164. success: function (res) {
  165. abp.message.success("锁定库存总量成功!");
  166. //$("#modalLockStore").modal("hide");
  167. renderLockedStoreTable(orderItemId)
  168. reloadLockStoreTable($("#productId_lockstore").val(), $("#quantity_lockstore_key").val(), $("#customerId_lockstore_key").val())
  169. }
  170. });
  171. }
  172. let warnMsg = "是否要继续锁定?"
  173. let allQuantity = sendAll + hasLockQuantity
  174. if (allQuantity > quantity) {
  175. let exceed = (Number(allQuantity - quantity) / Number(quantity)) * 100
  176. if (exceed > 5) {
  177. warnMsg = "发货数量不能超过 订单明细总数量的5%!"
  178. abp.message.warn(warnMsg);
  179. return
  180. }
  181. warnMsg = "锁定数量已经超过了订单数量!"
  182. }
  183. abp.message.confirm(warnMsg, "确认锁定库存", function (isConfirmed) {
  184. if (isConfirmed) {
  185. save();
  186. }
  187. });
  188. }
  189. function LockedStatusFormatter(v, r) {
  190. return `<span class="label label-success">${v == 1 ?"已发货":"未发货"}</span>`
  191. }
  192. function LockedStoreActionFormatter(v, r) {
  193. if (r.status == 0) {
  194. return `<span class="table-action" onclick="f_unLockItem(${r.id})"><i class="iconfont icon-right"></i>解除锁定</span>
  195. <span class="table-action" onclick="f_sendLockItem(${r.id})"><i class="iconfont icon-right"></i>发货</span>`
  196. }
  197. }
  198. //锁定库存解锁(软删除)
  199. function f_unLockItem(id) {
  200. abp.message.confirm("确认解除锁定?", function (isConfirmed) {
  201. if (isConfirmed) {
  202. SaveAjax({
  203. url: window.appUrl + 'OrderBookStore/UnLockItem?id=' + id,
  204. isValidate: false,
  205. isAlert: false,
  206. success: function (res) {
  207. abp.notify.success("解除锁定成功!");
  208. renderLockedStoreTable($("#orderItemId_lockstore_key").val())
  209. reloadLockStoreTable($("#productId_lockstore").val(), $("#quantity_lockstore_key").val(), $("#customerId_lockstore_key").val())
  210. }
  211. });
  212. }
  213. });
  214. }
  215. //锁定库存发货
  216. function f_sendLockItem(id) {
  217. var orderItemId = $("#orderItemId_lockstore_key").val()
  218. abp.message.confirm("确认将锁定的库存记录进行发货?", "确认发货", function (isConfirmed) {
  219. if (isConfirmed) {
  220. SaveAjax({
  221. url: window.appUrl + "OrderItems/SendBookStoreItem?orderItemId=" + orderItemId+"&id="+id,
  222. isValidate: false,
  223. isAlert: false,
  224. success: function (res) {
  225. abp.notify.success("发货成功!");
  226. renderLockedStoreTable($("#orderItemId_lockstore_key").val())
  227. reloadLockStoreTable($("#productId_lockstore").val(), $("#quantity_lockstore_key").val(), $("#customerId_lockstore_key").val())
  228. RefreshOrderItemTable(res.orderNo);
  229. }
  230. });
  231. }
  232. });
  233. }
  234. // 订单明细的发货记录
  235. function f_showSendItem(orderItemId) {
  236. $("#sendItemTable").bootstrapTable("destroy");
  237. SaveAjax({
  238. url: window.appUrl + "OrderItems/QuerySendItem?id=" + orderItemId,
  239. dataType: "json",
  240. isAlert: false,
  241. isValidate: false,
  242. success: function (res) {
  243. $("#sendItemTable").bootstrapTable({ data: res })
  244. $('#sendItemTable tbody').sortable({ containment: "#sendItemTable tbody", cursor: "move" });
  245. }
  246. })
  247. $('#orderSendItemModal').modal('show');
  248. }
  249. //<!------------------2024 end----------------->