FinshedOutStoreApplyMg.cshtml 11 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231
  1. @using ShwasherSys.Authorization.Permissions
  2. @using ShwasherSys.Models.Layout
  3. @using ShwasherSys.Models.Modal
  4. @{
  5. /**/
  6. ViewBag.ActiveMenu = PermissionNames.PagesFinshedStoreInfoFinshedOutStoreApplyMg; //The menu item will be active for this page.
  7. ViewBag.Title = "成品出库申请审核";
  8. List<SelectListItem> applyStatus = ViewBag.FinshedApplyStatus;
  9. var searchForm = new SearchFormViewModal(new List<SearchItem>()
  10. {
  11. new SearchItem("productionOrderNo","排产单号"),
  12. new SearchItem("productName","产品名称"),
  13. new SearchItem("model","规格"),
  14. new SearchItem("material","材质"),
  15. new SearchItem("surfaceColor","表色"),
  16. new SearchItem("rigidity","硬度"),
  17. new SearchItem("productNo","成品编码").SetSearchIcon("query_Product_modal"),
  18. new SearchItem("applyStatus","申请状态",FiledType.I,ExpType.Equal)
  19. .SetSearchItem(applyStatus),
  20. new SearchItem("customerName","客户名称"),
  21. new SearchItem("orderDate","订单日期",FiledType.Dnull,ExpType.GreaterOrEqual),
  22. new SearchItem("orderDate","到",FiledType.Dnull,ExpType.LessOrEqual),
  23. }, false);
  24. }
  25. <section style="display: none">
  26. @Html.DropDownList("hide-ApplyStatus", applyStatus)
  27. </section>
  28. <div class="table-box mr-4 iwb-bootstrap-table">
  29. @Html.Action("ToolMenu", "Layout", new { pageName = ViewBag.ActiveMenu, searchForm })
  30. <table id="table"
  31. data-url="/api/services/app/FinshedOutStore/GetViewAll"
  32. data-striped="true" data-id-field="id" data-unique-id="id"
  33. data-method="post"
  34. data-side-pagination="server"
  35. data-content-type="application/x-www-form-urlencoded; charset=UTF-8"
  36. data-cache="false"
  37. data-pagination="true" data-page-size="30" data-page-number="1" data-page-list="[30,50,100,200]" data-pagination-detail-h-align="right" data-pagination-h-align="left"
  38. data-query-params="QueryParams"
  39. data-response-handler="ResponseHandler"
  40. data-click-to-select="true"
  41. data-single-select="false">
  42. <thead>
  43. <tr class="row" id="header">
  44. <th data-field="state" data-checkbox="true"></th>
  45. <th data-align="center" data-field="productionOrderNo">批次号</th>
  46. <th data-align="center" data-field="productNo">成品编号</th>
  47. <th data-align="center" data-field="quantity">申请出库数量(千件)</th>
  48. <th data-align="center" data-field="actualQuantity">出库数量(千件)</th>
  49. <th data-align="center" data-field="storeHouseId" data-formatter="StoreHouseIdFormatte">仓库</th>
  50. <th data-align="center" data-field="applyStatus" data-formatter="ApplyStatusFormatter">申请状态</th>
  51. <th data-align="center" data-field="applyOutDate">申请时间</th>
  52. <th data-align="center" data-field="productName">产品名称</th>
  53. <th data-align="center" data-field="surfaceColor">表色</th>
  54. <th data-align="center" data-field="model">规格</th>
  55. <th data-align="center" data-field="applyOutStoreSourceType" data-formatter="ApplyOutStoreSourceTypeFormatter">出库原由</th>
  56. <th data-align="center" data-field="createSourceType" data-formatter="CreateSourceTypeFormatter">申请类型</th>
  57. <th data-align="center" data-field="customerName">客户名称</th>
  58. <th data-align="center" data-field="orderSendBillNo">发货单号</th>
  59. <th data-align="center" data-field="orderDate">订单日期</th>
  60. </tr>
  61. </thead>
  62. </table>
  63. </div>
  64. @section modal{
  65. <section>
  66. <!--Main Modal-->
  67. <div class="modal fade" id="modal" role="dialog" tabindex="-1" aria-labelledby="ModalLabel" aria-hidden="true">
  68. <div class="modal-dialog modal-dialog-centered" role="document">
  69. <div class="modal-content">
  70. @Html.Partial("Modals/_ModalHeader", new ModalHeaderViewModel("成品出库确认", ""))
  71. @{
  72. var inputs = new List<InputViewModel>
  73. {
  74. new InputViewModel("id", hide:true),
  75. new InputViewModel("actualQuantity", displayName:"确认出库数量(千件)",@class:"number",other:"min=0.001"),
  76. };
  77. //var specials = new List<SpecialInputModel>();
  78. }
  79. @Html.Partial("Modals/_ModalBody", new ModalBodyViewModel(inputs))
  80. @Html.Partial("Modals/_ModalFooter", "0")
  81. </div>
  82. </div>
  83. </div>
  84. </section>
  85. @Html.Partial("Modals/Query/_Product", "KeyWords-7")
  86. }
  87. @section scripts
  88. {
  89. <script type="text/javascript">
  90. $(function () {
  91. $("#KeyWords-8").val("1").select2();//默认先未审核的
  92. LoadTable();
  93. var funs = window.funs || { none: function () { console.log("No type"); } };
  94. funs["btnUpdate"] = function () {
  95. var rows = config.table.bootstrapTable("getSelections");
  96. if (rows.length === 1) {
  97. if (rows[0].applyStatus === 5) {
  98. abp.message.warn("申请单已出库,不能进行修改!");
  99. return;
  100. }
  101. BtnUpdate({ readonly: "", data: { id: rows[0].id, actualQuantity: rows[0].quantity } });
  102. } else
  103. abp.message.warn(abp.localization.localize("ChooseOneToOp"));
  104. };
  105. funs["btnRefuse"] = function(url) {
  106. var rows = config.table.bootstrapTable("getSelections");
  107. if (rows.length === 1) {
  108. if (rows[0].applyStatus === 2 || rows[0].applyStatus === 5) {
  109. abp.message.warn("申请已审核通过,不能操作!");
  110. return;
  111. }
  112. //var url = config.tableTool.find('.btn[data-type=btnDelete]').data('url');
  113. abp.message.confirm("确认拒绝出库申请?","拒绝申请",function() {
  114. SaveAjax({ url: url, data: { Id: rows[0].id }, isValidate: false });
  115. });
  116. } else
  117. abp.message.warn(abp.localization.localize("ChooseOneToOp"));
  118. };
  119. funs["btnRecovery"] = function(url) {
  120. var rows = config.table.bootstrapTable("getSelections");
  121. if (rows.length === 1) {
  122. if (rows[0].applyStatus !== 4) {
  123. abp.message.warn("只能恢复已拒绝的申请!");
  124. return;
  125. }
  126. //var url = config.tableTool.find('.btn[data-type=btnDelete]').data('url');
  127. abp.message.confirm("确认恢复出库申请?","恢复申请",function() {
  128. SaveAjax({ url: url, data: { Id: rows[0].id }, isValidate: false });
  129. });
  130. } else
  131. abp.message.warn(abp.localization.localize("ChooseOneToOp"));
  132. };
  133. funs["btnAuditBatch"] = function (url) {
  134. var rows = config.table.bootstrapTable("getSelections");
  135. if (rows.length > 0) {
  136. abp.message.confirm("确认批量审核申请?", "批量审核", function () {
  137. SaveAjax({ url: url, data: GetAuditBatchData(rows), isValidate: false });
  138. });
  139. } else
  140. abp.message.warn(abp.localization.localize("ChooseOneToOp"));
  141. };
  142. });
  143. function GetAuditBatchData(rows) {
  144. if (!rows || rows.length===0) {
  145. return {};
  146. }
  147. var data = [];
  148. for (var i = 0; i < rows.length; i++) {
  149. data.push(rows[i].id);
  150. }
  151. return { Ids: data};
  152. }
  153. //function f_excuteApply(id, status) {
  154. // abp.message.confirm("确认取消申请?",
  155. // "取消申请",
  156. // function () {
  157. // abp.ajax({
  158. // url: window.appUrl + 'ProductionOrders/ChangeSemiOutStoreApplyStatus',
  159. // data: { Id: id, ProductionOrderStatus: status },
  160. // async: true,
  161. // type: "Post",
  162. // contentType: 'application/x-www-form-urlencoded; charset=UTF-8',
  163. // isValidate: false,
  164. // dataType: "json",
  165. // success: function (res) {
  166. // abp.message.success(abp.localization.localize("OpSuccess"));
  167. // RefreshTable();
  168. // }
  169. // });
  170. // });
  171. //}
  172. function StoreHouseIdFormatte(v, r) {
  173. if (v === 1) {
  174. return '<span class="label label-primary">成品仓库</span>';
  175. } else if (v === 2) {
  176. return '<span class="label label-info">半成品仓库</span>';
  177. }
  178. return v;
  179. }
  180. function ApplyStatusFormatter(v,r) {
  181. if (r.isClose) {
  182. return '<span class="label label-primary">已结束</span>';
  183. }
  184. console.log("status" + v);
  185. var name = $("#hide-ApplyStatus option[value='" + v + "']").text();
  186. if (v === 1) {
  187. return '<span class="label label-info">' + name + '</span>';
  188. } else if (v === 2) {
  189. return '<span class="label label-success">' + name + '</span>';
  190. } else if (v === 3) {
  191. return '<span class="label label-warning">' + name + '</span>';
  192. } else if (v === 4) {
  193. return '<span class="label label-danger">' + name + '</span>';
  194. }
  195. return '<span class="label label-info">' + name + '</span>';
  196. }
  197. function CreateSourceTypeFormatter(v, r) {
  198. if (v === 2) {
  199. return '<span class="label label-info">手动平衡库存</span>';
  200. }
  201. return "";
  202. }
  203. function ApplyOutStoreSourceTypeFormatter(v, r) {
  204. if (v === 1) {
  205. return '<span class="label label-info">外协加工</span>';
  206. } else if (v === 2) {
  207. return '<span class="label label-success">包装</span>';
  208. } else if (v === 3) {
  209. return '<span class="label label-warning">发货</span>';
  210. } else if (v === 4) {
  211. return '<span class="label label-danger">出库平衡</span>';
  212. } else if (v === 5) {
  213. return '<span class="label label-info">成品改镀</span>';
  214. }
  215. }
  216. </script>
  217. }