Index.cshtml 52 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827828829830831832833834835836837838839840841842843844845846847848849850851852853854855856857858859860861862863864865866867868869870871872873874875876877878879880881882883884885886887888889890891892893894895896897898899900901902903904905906907908909910911912913914915916917918919920921922923924925926927928929930931932933934935936937938939940941942943944945946947948949950951952953954955956957958959960961962963964965966967968969970971972973974975976977978979980981982983984985986987988989990991992993994995996997998999100010011002100310041005100610071008100910101011
  1. @using ShwasherSys.Authorization.Permissions
  2. @using ShwasherSys.Models.Layout
  3. @using ShwasherSys.Models.Modal
  4. @{
  5. /**/
  6. ViewBag.ActiveMenu = PermissionNames.PagesPackInfoPackInfoMg; //The menu item will be active for this page.
  7. ViewBag.Title = "产品包装信息";
  8. string employee = ViewBag.Employee;
  9. List<SelectListItem> productApplyStatus = ViewBag.ProductApplyStatus;
  10. List<SelectListItem> applyStatus = ViewBag.ApplyStatus;
  11. int hsRate = ViewBag.HsRate;
  12. List<SelectListItem> closeStatus = new List<SelectListItem>()
  13. {
  14. new SelectListItem(){Text = @"未关闭",Value = "false",Selected = true},
  15. new SelectListItem(){Text = @"已关闭",Value = "true"}
  16. };
  17. var searchForm = new SearchFormViewModal(new List<SearchItem>()
  18. {
  19. new SearchItem("productionOrderNo","排产单号"),
  20. new SearchItem("productName","产品名称"),
  21. new SearchItem("model","规格"),
  22. new SearchItem("material","材质"),
  23. new SearchItem("applyDate", "申请日期",FiledType.Dnull,ExpType.GreaterOrEqual),
  24. new SearchItem("applyDate", "到",FiledType.Dnull,ExpType.LessOrEqual),
  25. new SearchItem("semiProductNo","半成品编码").SetSearchIcon("query_semiProduct_modal"),
  26. new SearchItem("applyStatus","申请状态" )
  27. .SetSearchItem(applyStatus),
  28. new SearchItem("isClose","关闭状态" ,FiledType.B,ExpType.Equal)
  29. .SetSearchItem(closeStatus),
  30. }, false);
  31. }
  32. @section css{
  33. <link href="~/Content/Plugins/bootstrap-datetimepicker/css/bootstrap-datetimepicker.min.css" rel="stylesheet" />
  34. }
  35. <section style="display: none">
  36. @Html.DropDownList("hide-ApplyStatus", applyStatus)
  37. @Html.DropDownList("hide-ProductApplyStatus", productApplyStatus)
  38. </section>
  39. <style>
  40. .tool-radio {
  41. display: inline-block;
  42. margin-left: 10px;
  43. }
  44. [type="radio"]:not(:checked) + label, [type="radio"]:checked + label {
  45. padding-left: 25px;
  46. font-size: 1.5rem;
  47. color: #dad9db;
  48. }
  49. .package-unit {
  50. border: 1px solid #583d9c;
  51. border-radius: 3px;
  52. padding: 10px 0 0;
  53. display: table;
  54. width: 96%;
  55. margin-left: 2%;
  56. }
  57. .package-unit:not(:last-of-type) {
  58. margin-bottom: 5px;
  59. }
  60. .package-unit .form-group-sm > div {
  61. margin-bottom: 10px;
  62. }
  63. #showZoreCheckBox + label::before, #showZoreCheckBox:not(.filled-in) + label::after {
  64. top: -10px;
  65. left: -5px;
  66. width: 18px;
  67. height: 18px;
  68. }
  69. #showZoreCheckBox:checked + label::before {
  70. top: -10px;
  71. left: -8px;
  72. width: 11px;
  73. height: 15px;
  74. border-top: 2px solid transparent;
  75. border-left: 2px solid transparent;
  76. border-right: 2px solid #26a69a;
  77. border-bottom: 2px solid #26a69a;
  78. transform: rotate(40deg);
  79. -webkit-backface-visibility: hidden;
  80. backface-visibility: hidden;
  81. -webkit-transform-origin: 100% 100%;
  82. transform-origin: 100% 100%;
  83. }
  84. </style>
  85. <div class="table-box iwb-bootstrap-table">
  86. @Html.Action("ToolMenu", "Layout", new { pageName = ViewBag.ActiveMenu, searchForm })
  87. <table id="table"
  88. data-url="/api/services/app/PackInfoApply/GetAll" data-id-field="id" data-unique-id="id"
  89. data-striped="true" data-click-to-select="true" data-single-select="true"
  90. data-method="post" data-side-pagination="server" data-content-type="application/x-www-form-urlencoded; charset=UTF-8"
  91. data-cache="false" data-pagination="true" data-page-size="30" data-page-number="1" data-page-list="[30,50,100,200]"
  92. data-pagination-h-align="left" data-pagination-detail-h-align="right"
  93. data-query-params="QueryParams" data-response-handler="ResponseHandler">
  94. <thead>
  95. <tr class="row" id="header">
  96. <th data-field="state" data-checkbox="true"></th>
  97. <th data-align="center" data-field="processingNum" data-formatter="ProcessingNumFormatter">待处理明细</th>
  98. <th data-align="center" data-field="productionOrderNo">流转单编号</th>
  99. <th data-align="center" data-field="" data-formatter="PackageProductNoFormatter">包装前产品编码</th>
  100. <th data-align="center" data-field="applyQuantity">申请包装数量</th>
  101. <th data-align="center" data-field="remainApplyQuantity">待包装数量</th>
  102. <th data-align="center" data-field="surfaceColor">表色</th>
  103. <th data-align="center" data-field="productName">产品名称</th>
  104. <th data-align="center" data-field="model">规格</th>
  105. <th data-align="center" data-field="material">材质</th>
  106. <th data-align="center" data-field="rigidity">硬度</th>
  107. <th data-align="center" data-field="partNo">零件号</th>
  108. <th data-align="center" data-field="remark">备注</th>
  109. <th data-align="center" data-field="applyDate" data-formatter="DateFormatter">申请时间</th>
  110. <th data-align="center" data-field="applyStatus" data-formatter="ApplyStatusFormatter">申请状态</th>
  111. </tr>
  112. </thead>
  113. </table>
  114. </div>
  115. <div class="table-box mr-4 iwb-bootstrap-table" id="pakeageitem" style="display: none;">
  116. @Html.Action("ToolMenu", "Layout", new { pageName = PermissionNames.PagesPackInfoPackInfoMgPackageInfoMg })
  117. <table id="tablePakeageItem"
  118. data-url="/api/services/app/PackInfoApply/GetFinishedEnterStoreApply"
  119. data-id-field="id" data-unique-id="id"
  120. data-striped="true" data-click-to-select="true" data-single-select="true"
  121. data-method="post" data-side-pagination="server" data-content-type="application/x-www-form-urlencoded; charset=UTF-8"
  122. data-cache="false" data-pagination="true" data-page-size="10" data-page-number="1" data-page-list="[10,30,50,100]"
  123. data-pagination-h-align="left" data-pagination-detail-h-align="right"
  124. data-query-params="QueryItemParams" data-response-handler="ResponseHandler">
  125. <thead>
  126. <tr class="row">
  127. <th data-field="state" data-checkbox="true"></th>
  128. <th data-align="center" data-field="packageEnterNum">包装入库号</th>
  129. <th data-align="center" data-field="productNo">成品编号</th>
  130. <th data-align="center" data-field="packageProductNo">包装前产品编码</th>
  131. <th data-align="center" data-field="applyQuantity">申请总重量(kg)</th>
  132. <th data-align="center" data-field="kgWeight">千件重</th>
  133. <th data-align="center" data-field="applyQuantity2">申请总件数(千件)</th>
  134. <th data-align="center" data-field="packageSpecification">包装规格(千件/包)</th>
  135. <th data-align="center" data-field="packageCount">包数</th>
  136. @*<th data-align="center" data-field="quantity">申请数量</th>*@
  137. <th data-align="center" data-field="creatorUserId">申请人</th>
  138. <th data-align="center" data-field="enterStoreUser">入库人</th>
  139. <th data-align="center" data-field="remark">备注</th>
  140. <th data-align="center" data-field="applyStatus" data-formatter="ProductApplyStatusFormatter">申请状态</th>
  141. <th data-align="center" data-formatter="ActionFormatter">操作</th>
  142. </tr>
  143. </thead>
  144. </table>
  145. </div>
  146. @section modal{
  147. <!--Main Modal-->
  148. <section>
  149. <div class="modal fade" id="modal" role="dialog" aria-labelledby="ModalLabel" aria-hidden="true">
  150. <div class="modal-dialog modal-dialog-centered" role="document" style="width: 700px">
  151. <div class="modal-content">
  152. @Html.Partial("Modals/_ModalHeader", new ModalHeaderViewModel("包装产品"))
  153. @{
  154. var inputs = new List<InputViewModel>
  155. {
  156. new InputViewModel("id", hide: true),
  157. new InputViewModel("packageApplyNo", hide: true),
  158. //new InputViewModel("semiProductNo",hide:true),
  159. new InputViewModel("packType",hide: true),
  160. new InputViewModel("packageProductNo",hide:true),
  161. new InputViewModel("productionOrderNo",displayName:"流转单编号"),
  162. new InputViewModel("productNo",displayName:"成品编号").SetSearchIcon("query_Product_modal"),
  163. new InputViewModel("productName",displayName:"成品名称"),
  164. new InputViewModel("remark",displayName:"备注").SetNotRequired(),
  165. new InputViewModel("packageSpecification",displayName:"包装规格").SetOuterBefore("<div class=\"package-unit init-unit\" data-index=\"1\">"),
  166. new InputViewModel("packageCount",displayName:"包数"),
  167. new InputViewModel("kgWeight",displayName:"千件重"),
  168. new InputViewModel("actualQuantity2",displayName:"总件(千件)"),
  169. new InputViewModel("packageEnterNum",displayName:"包装入库号"),
  170. new InputViewModel("actualQuantity",displayName:"总重(Kg)"),
  171. new InputViewModel("man1",displayName:"核件人"),
  172. new InputViewModel("man2",displayName:"包装负责人").SetOuterAfter("<div class=\"col-md-4\" style=\"float: right;\"><button type=\"button\" class=\"btn btn-sm btn-info\" style=\"width:100%; background-color: #583d9c;border-color: #583d9c;margin-bottom:5px;\" onclick=\"AddPackageUnit()\">增加包装明细</button>" +
  173. "</div></div>"),
  174. };
  175. var specials = new List<SpecialInputModel>()
  176. {
  177. new SpecialInputModel(){Id="actualQuantity2",InputStr = "<div class=\"col-md-4\"><input id=\"actualQuantity2\" class=\"form-control required number\" min=\"0.001\" name=\"actualQuantity2\" placeholder=\"请输入总件(千件)...\" disabled=\"disabled\" type=\"text\"></div>"},
  178. new SpecialInputModel(){Id="actualQuantity",InputStr = "<div class=\"col-md-4\"><input id=\"actualQuantity\" class=\"form-control required number\" min=\"0.001\" name=\"actualQuantity\" placeholder=\"请输入总重(Kg)...\" disabled=\"disabled\" type=\"text\"></div>"},
  179. new SpecialInputModel(){Id="packageSpecification",InputStr = "<div class=\"col-md-4\"><input class=\"form-control required number\" min=\"0.001\" name=\"packageSpecification\" placeholder=\"请输入包装规格(千件/包)...\" type=\"text\"></div>"},
  180. new SpecialInputModel(){Id="packageCount",InputStr = "<div class=\"col-md-4\"><input class=\"form-control required digits\" min=\"1\" name=\"packageCount\" placeholder=\"请输入包数...\" type=\"text\"></div>"},
  181. new SpecialInputModel(){Id="packageEnterNum",InputStr = "<div class=\"col-md-4\"><input class=\"form-control required \" name=\"packageEnterNum\" placeholder=\"请输入包装入库号...\" type=\"text\"></div>"},
  182. new SpecialInputModel(){Id="kgWeight",InputStr = "<div class=\"col-md-4\"><input id=\"kgWeight\" class=\"form-control required number\" name=\"kgWeight\" placeholder=\"请输入千件重...\" min=\"0.001\" disabled=\"disabled\" type=\"text\"></div>"},
  183. new SpecialInputModel(){Id="man1",InputStr = "<div class=\"col-md-4\"><select class=\"form-control required \" style=\"width:100%\" name=\"man1\" > <option value=\"\" selected>请选择核件人</option>"+employee+"</select></div>"},
  184. new SpecialInputModel(){Id="man2",InputStr = "<div class=\"col-md-4\"><select class=\"form-control required \" style=\"width:100%\" name=\"man2\" ><option value=\"\" selected>请选择包装负责人</option>"+employee+"</select></div>"},
  185. };
  186. }
  187. @Html.Partial("Modals/_ModalBody", new ModalBodyViewModel(inputs, specials: specials))
  188. @*@Html.Partial("Modals/_ModalFooter", "0")*@
  189. <div class="modal-footer" style="text-align: center;">
  190. <button type="button" class="btn btn-default waves-effect" data-dismiss="modal" style="min-width:100px;background: #FFFFFF;border: 1px solid #DDDDDD;">取消</button>
  191. <button type="button" class="btn btn-success save-btn waves-effect" style="min-width:100px;background-color: #678ceb;border: 1px solid #678ceb;">保存</button>
  192. <input name="showZoreCheckBox" type="checkbox" id="showZoreCheckBox" value="" checked="checked" />&nbsp;&nbsp;<label for="showZoreCheckBox" style="color:#000;padding-left: 15px; font-size: 1.5rem;">允许包装损耗</label>
  193. </div>
  194. </div>
  195. </div>
  196. </div>
  197. </section>
  198. @Html.Partial("Modals/Query/_SemiProduct", "KeyWords-6")
  199. @Html.Partial("Modals/Query/_Product", "productNo,productName")
  200. <section>
  201. <div class="modal fade" id="package_modal" role="dialog" aria-labelledby="ModalLabel" aria-hidden="true">
  202. <div class="modal-dialog modal-dialog-centered" role="document" style="width: 700px">
  203. <div class="modal-content">
  204. @Html.Partial("Modals/_ModalHeader", new ModalHeaderViewModel("包装明细"))
  205. @{
  206. var packageInputs = new List<InputViewModel>
  207. {
  208. new InputViewModel("id", hide: true),
  209. new InputViewModel("packageApplyNo", hide: true),
  210. new InputViewModel("packageProductNo",hide: true),
  211. new InputViewModel("packType",hide: true),
  212. //new InputViewModel("semiProductNo",hide: true),
  213. new InputViewModel("productionOrderNo", displayName: "流转单编号"),
  214. new InputViewModel("productNo", displayName: "成品编号"),
  215. // new InputViewModel("semiProductNo", displayName: "半成品编码"),
  216. new InputViewModel("packageEnterNum", displayName: "包装入库号"),
  217. new InputViewModel("packageSpecification", displayName: "包装规格",@class:"number",other:"min=0.001"),
  218. new InputViewModel("packageCount", displayName: "包数",@class:"digits",other:"min=1"),
  219. new InputViewModel("quantity", displayName: "总件(千件)",@class:"number",other:"min=0.001"),
  220. new InputViewModel("kgWeight", displayName: "千件重",@class:"number",other:"min=0.001"),
  221. new InputViewModel("quantity2", displayName: "总重(Kg)",@class:"number",other:"min=0.001"),
  222. new InputViewModel("verifyUser", InputTypes.List,"包装核件人").SetSelectOptions(employee),
  223. new InputViewModel("packageUser", InputTypes.List,"包装负责人").SetSelectOptions(employee),
  224. new InputViewModel("remark",displayName:"备注").SetNotRequired(),
  225. };
  226. }
  227. @Html.Partial("Modals/_ModalBody", new ModalBodyViewModel(packageInputs))
  228. @Html.Partial("Modals/_ModalFooter", "0")
  229. </div>
  230. </div>
  231. </div>
  232. </section>
  233. }
  234. @section scripts
  235. {
  236. <script src="~/Content/Plugins/bootstrap-datetimepicker/js/bootstrap-datetimepicker.min.js"></script>
  237. <script src="~/Content/Plugins/bootstrap-datetimepicker/js/locales/bootstrap-datetimepicker.zh-CN.js"></script>
  238. <script type="text/javascript">
  239. var datePickerOpt = {
  240. language: 'zh-CN',
  241. format: "yyyy-mm-dd",
  242. todayBtn: true,
  243. autoclose: true,
  244. startView: 2,
  245. minView: 2,
  246. maxView: 4
  247. //showSecond: true,
  248. //showHours: true,
  249. //minuteStep: 10
  250. };
  251. var quantity, packageTable = $("#tablePakeageItem");
  252. function GetSearchList() {
  253. var count = $("#SearchForm").find(".KeyWords").length;
  254. window._searchList = [];
  255. var packType = $('input[name="packType"]:checked').val();
  256. if (packType) {
  257. window._searchList.push({ KeyWords: packType, KeyField: "PackType", FieldType: "1", ExpType: "0" });
  258. }
  259. for (var i = 1; i <= count; i++) {
  260. var keyWords = $("#KeyWords-" + i).val();
  261. if (keyWords) {
  262. var keyField = $("#KeyField-" + i).val();
  263. var fieldType = $("#FieldType-" + i).val();
  264. var expType = $("#ExpType-" + i).val();
  265. window._searchList.push({
  266. KeyWords: keyWords,
  267. KeyField: keyField,
  268. FieldType: fieldType,
  269. ExpType: expType
  270. });
  271. }
  272. }
  273. }
  274. $(function () {
  275. //$("#KeyWords-5").datetimepicker(datePickerOpt);
  276. //$("#KeyWords-6").datetimepicker(datePickerOpt);
  277. $("#KeyWords-9").val("false").select2();
  278. $("#Tool1").append(
  279. //'<div class="tool-radio"><input name="proType" type="radio" id="allProduction" checked value=""/><label for="allProduction">全部</label></div>' +
  280. '<div class="tool-radio"><input name="packType" type="radio" id="sProduct" checked value="1"/><label for="sProduct">半成品包装</label></div>' +
  281. '<div class="tool-radio"><input name="packType" type="radio" id="fProduct" value="2"/><label for="fProduct">成品包装</label></div>');
  282. $(".tool-radio input[type='radio']").on('click',
  283. function (e) {
  284. //document.getElementById("SearchForm").reset();
  285. GetSearchList();
  286. RefreshTable();
  287. //packageTable.bootstrapTable("destroy");
  288. $("#pakeageitem").css("display", "none");
  289. $("#table").bootstrapTable('resetView', { height: 800 });
  290. });
  291. LoadTable({
  292. onCheck: PackageApplyOnCheck,
  293. onUncheck: PackageApplyOnUnCheck
  294. });
  295. $("#pakeageitem").find("#Tool1").before(
  296. '<div style="float: left;font-size: 16px;color: #fff;padding: 2px;margin-right: 20px;font-weight: 600;">包装明细:</div>');
  297. var funs = window.funs || { none: function () { console.log("No type"); } };
  298. packageTable.closest(".table-box").find("#tableTool .btn").on('click',
  299. function () {
  300. var type = $(this).data('type').replace("_", "");
  301. var url = $(this).data('url') || "";
  302. funs[type] ? funs[type].call(this, url) : funs["none"].call(this);
  303. });
  304. function getHasExistProductionOrderNo(pOrderNo, data) {
  305. SaveAjax({
  306. url: window.appUrl + `PackInfoApply/GetHasExistProductionOrderNoView?pcProductionOrderNo=${pOrderNo}`,
  307. // data: { pcProductionOrderNo: pOrderNo },
  308. isValidate: false,
  309. async: false,
  310. isAlert: false,
  311. success: function (r) {
  312. if (r) {
  313. $("#modal #productNo + .input-group-addon").fadeOut();
  314. data.productNo = r.productNo;
  315. data.productName = r.productName;
  316. }
  317. }
  318. });
  319. }
  320. //确认申请,创建包装明细
  321. funs["btnCreate"] = function (url) {
  322. var row = config.table.bootstrapTable("getSelections")[0];
  323. if (row) {
  324. if (row.applyStatus !== "1") {
  325. abp.message.warn("申请已处理,不能再操作!");
  326. return;
  327. }
  328. $("#modal #productNo + .input-group-addon").fadeIn();
  329. quantity = row.applyQuantity;
  330. $(".add-unit").remove();
  331. var packType = $('input[name="packType"]:checked').val();
  332. var data = {
  333. id: row.id,
  334. packageApplyNo: row.packageApplyNo,
  335. productionOrderNo: row.productionOrderNo,
  336. packType: packType,
  337. kgWeight: row.kgWeight,
  338. packageProductNo: row.productNo,
  339. actualQuantity2: quantity,
  340. actualQuantity: row.kgWeight ? quantity / row.kgWeight : 0,
  341. }
  342. if (packType === "1") {
  343. data.packageProductNo = row.semiProductNo;
  344. data.actualQuantity = quantity;
  345. data.actualQuantity2 = row.kgWeight ? quantity * row.kgWeight : 0;
  346. //getHasExistProductionOrderNo(row.productionOrderNo, data);
  347. }
  348. if (packType === "2") {
  349. data.productNo = row.productNo;
  350. data.productName = row.productName;
  351. //$("#modal #productNo + .input-group-addon").fadeOut();
  352. }
  353. BtnCreate({
  354. readonly:
  355. "productionOrderNo,semiProductNo,productNo,productName,actualQuantity,actualQuantity2",
  356. data: data,
  357. save: function () { SavePackages(url) }
  358. });
  359. } else
  360. abp.message.warn(abp.localization.localize("ChooseOneToOp"));
  361. };
  362. //拒绝申请申请
  363. funs["btnRefuse"] = function (url) {
  364. var rows = config.table.bootstrapTable("getSelections");
  365. if (rows.length === 1) {
  366. if (rows[0].applyStatus !== "1") {
  367. abp.message.warn("申请已确认(或拒绝),不能再操作!");
  368. return;
  369. }
  370. var packType = $('input[name="packType"]:checked').val();
  371. abp.message.confirm("确认拒绝包装申请?",
  372. "拒绝申请",
  373. function () {
  374. SaveAjax({ url: url, data: { Id: rows[0].id, PackType: packType }, isValidate: false });
  375. });
  376. } else
  377. abp.message.warn(abp.localization.localize("ChooseOneToOp"));
  378. };
  379. //关闭
  380. funs["btnClose"] = function (url) {
  381. var rows = config.table.bootstrapTable("getSelections");
  382. if (rows.length === 1) {
  383. if (rows[0].applyStatus === "1") {
  384. abp.message.warn("申请未确认(或拒绝),不能操作!");
  385. return;
  386. }
  387. abp.message.confirm("确认关闭申请?",
  388. "关闭申请",
  389. function () {
  390. SaveAjax({ url: url, data: { Id: rows[0].id }, isValidate: false });
  391. });
  392. } else
  393. abp.message.warn(abp.localization.localize("ChooseOneToOp"));
  394. };
  395. //一键入库
  396. funs["btnEnterBatch"] = function (url) {
  397. var row = packageTable.bootstrapTable("getData")[0];
  398. //console.log(row);
  399. if (row) {
  400. abp.message.confirm("未入库的批量入库申请,确认一键入库?",
  401. "一键入库",
  402. function () {
  403. SaveAjax({
  404. url: url + "?applyNo=" + row.packageApplyNo,
  405. isValidate: false,
  406. success: function () {
  407. RefreshTable(packageTable);
  408. }
  409. });
  410. });
  411. } else
  412. abp.message.warn("请先确认包装后再入库!");
  413. };
  414. //添加明细
  415. funs["btnAdd"] = function (url) {
  416. var row = packageTable.bootstrapTable("getData")[0];
  417. //console.log(row);
  418. if (row) {
  419. var data = row;
  420. var packType = $('input[name="packType"]:checked').val();
  421. data.packageSpecification = "";
  422. data.packageCount = "";
  423. data.quantity = "";
  424. data.quantity2 = "";
  425. data.kgWeight = row.kgWeight,
  426. data.packType = packType;
  427. data.packageProductNo = row.packageProductNo;
  428. data.packageEnterNum = row.packageEnterNum;
  429. BtnCreate({
  430. url: url,
  431. modal: $("#package_modal"),
  432. data: data,
  433. readonly: "productionOrderNo,semiProductNo,productNo",
  434. table: packageTable
  435. });
  436. } else
  437. abp.message.warn("请先确认包装后再添加明细!");
  438. };
  439. //修改明细
  440. funs["btnUpdate"] = function (url) {
  441. var row = packageTable.bootstrapTable("getSelections")[0];
  442. //console.log(row);
  443. if (row) {
  444. if (row.isClose) {
  445. abp.message.warn("申请已关闭,不能再修改!");
  446. return;
  447. }
  448. if (row.applyStatus === 1 || row.applyStatus === 2) {
  449. abp.message.warn("入库申请已被处理,不能再修改!请取消申请后再修改!");
  450. return;
  451. }
  452. if (row.applyStatus === 5) {
  453. abp.message.warn("申请已入库,不能再修改!");
  454. return;
  455. }
  456. BtnUpdate({
  457. url: url,
  458. modal: $("#package_modal"),
  459. data: row,
  460. readonly: "productionOrderNo,semiProductNo,productNo",
  461. table: packageTable
  462. });
  463. } else
  464. abp.message.warn("请先确认包装后再添加明细!");
  465. };
  466. //删除明细
  467. funs["btnDelete"] = function (url) {
  468. var row = packageTable.bootstrapTable("getSelections")[0];
  469. if (row) {
  470. if (row.applyStatus !== 0) {
  471. abp.message.warn("入库申请已被处理,不能再删除!");
  472. return;
  473. }
  474. var rows = packageTable.bootstrapTable("getData");
  475. if (rows.length === 1) {
  476. abp.message.warn("最后一条明细不能再删除!");
  477. return;
  478. }
  479. abp.message.confirm("入库申请删除后不可恢复,确认删除申请?",
  480. "删除申请",
  481. function () {
  482. SaveAjax({
  483. url: url,
  484. data: { Id: row.id },
  485. isValidate: false,
  486. success: function () {
  487. RefreshTable(packageTable);
  488. }
  489. });
  490. });
  491. } else
  492. abp.message.warn(abp.localization.localize("ChooseOneToOp"));
  493. };
  494. BindChangeEvent();
  495. });
  496. var packageApplyNo = "";
  497. function PackageApplyOnCheck(row) {
  498. $("#table").bootstrapTable('resetView', { height: 500 });
  499. $("#pakeageitem").css("display", "block");
  500. packageApplyNo = row.packageApplyNo;
  501. packageTable.bootstrapTable("destroy");
  502. LoadTable({
  503. table: packageTable,
  504. queryParams: QueryItemParams,
  505. onAll: function (eName, eData) {
  506. OnAll(eName, eData, "tablePakeageItem");
  507. },
  508. onLoadSuccess: function (data) {
  509. OnLoadSuccess(data, "tablePakeageItem");
  510. },
  511. onPostBody: function (data) {
  512. OnPostBody(data, "tablePakeageItem");
  513. }
  514. });
  515. packageTable.bootstrapTable('resetView');
  516. }
  517. function PackageApplyOnUnCheck() {
  518. $("#pakeageitem").css("display", "none");
  519. packageTable.bootstrapTable("destroy");
  520. $("#table").bootstrapTable('resetView', { height: 800 });
  521. }
  522. function QueryItemParams(params) {
  523. return {
  524. MaxResultCount: params.limit,
  525. SkipCount: params.offset,
  526. sort: params.sort,
  527. sortOrder: params.order,
  528. SearchList: [{ KeyWords: packageApplyNo, KeyField: "PackageApplyNo", FieldType: "0", ExpType: "0" }]
  529. };
  530. }
  531. function BindChangeEvent() {
  532. $('.package-unit input').off("change.package").on("change.package",
  533. function () {
  534. var $this = $(this).closest('.package-unit');
  535. var k = Number($this.find("input[name='kgWeight']").val()),
  536. s = Number($this.find("input[name='packageSpecification']").val()),
  537. c = Number($this.find("input[name='packageCount']").val());
  538. if (k && c && s) {
  539. var q2 = s * c, q = k * q2;
  540. $this.find("input[name='actualQuantity']").val(q.toFixed(3)).trigger("blur");
  541. $this.find("input[name='actualQuantity2']").val(q2.toFixed(3)).trigger("blur");
  542. }
  543. });
  544. }
  545. </script>
  546. <script>
  547. function GetInitUnitData() {
  548. var initData = {
  549. actualQuantity: $('.package-unit.init-unit input[name="actualQuantity"]').val(),
  550. actualQuantity2: $('.package-unit.init-unit input[name="actualQuantity2"]').val(),
  551. packageSpecification: $('.package-unit.init-unit input[name="packageSpecification"]').val(),
  552. packageCount: $('.package-unit.init-unit input[name="packageCount"]').val(),
  553. packageEnterNum: $('.package-unit.init-unit input[name="packageEnterNum"]').val(),
  554. kgWeight: $('.package-unit.init-unit input[name="kgWeight"]').val(),
  555. verifyUserId: $('.package-unit.init-unit select[name="man1"]').val(),
  556. packageUserId: $('.package-unit.init-unit select[name="man2"]').val(),
  557. verifyUser: $('.package-unit.init-unit select[name="man1"] option:selected').text(),
  558. packageUser: $('.package-unit.init-unit select[name="man2"] option:selected').text()
  559. };
  560. if (!initData.kgWeight) {
  561. initData.kgWeight = "0";
  562. }
  563. return initData;
  564. }
  565. function AddPackageUnit() {
  566. //$("#form").append(
  567. // '<div class="package-unit add-unit"><div class="form-group-sm"><label class="iwb-label col-md-2 control-label iwb-label-required" for="packageSpecification">包装规格</label><div class="col-md-4"><input class="form-control number" min="0" name="packageSpecification" required="" placeholder="请输入包装规格(千件/包)..." type="text"></div></div><div class="form-group-sm"><label class="iwb-label col-md-2 control-label iwb-label-required" for="packageCount">包数</label><div class="col-md-4"><input class="form-control number" min="0" name="packageCount" required="" placeholder="请输入包数..." type="text"></div> </div><div class="form-group-sm"><label class="iwb-label col-md-2 control-label iwb-label-required" for="actualQuantity">产品数量</label><div class="col-md-4"><input class="form-control number" min="0" name="actualQuantity" value="' + actualQuantity + '" required="" placeholder="请输入产品数量(公斤 | 千件)..." type="text"></div></div><div class="form-group-sm"><label class="iwb-label col-md-2 control-label iwb-label-required" for="actualQuantity">包装入库号</label><div class="col-md-4"><input class="form-control" name="packageEnterNum" value="" required="" placeholder="请输入包装入库号" type="text"></div></div><div class="col-md-4" style="float: right;"><button type="button" class="btn btn-sm btn-danger" style="width:100%;margin-bottom:5px;" onclick="RemovePackageUni(this)">删除此包装规格</button></div></div>');
  568. var initUnit = GetInitUnitData();
  569. var str =
  570. '<div class="package-unit add-unit" data-index="1" data-select2-id="17"><div class="form-group-sm"><label class="iwb-label col-md-2 control-label iwb-label-required" for="">包装规格</label><div class="col-md-4"><input class="form-control number required" min="0.001" name="packageSpecification" placeholder="请输入包装规格(千件/包)..." type="text"></div></div><div class="form-group-sm"><label class="iwb-label col-md-2 control-label iwb-label-required" for="">包数</label><div class="col-md-4"><input class="form-control digits required" min="1" name="packageCount" placeholder="请输入包数..." type="text"></div></div><div class="form-group-sm"><label class="iwb-label col-md-2 control-label iwb-label-required" for="">千件重</label><div class="col-md-4"><input class="form-control number required" name="kgWeight" placeholder="请输入千件重..." value="' + initUnit.kgWeight+'" type="text" ></div></div><div class="form-group-sm"><label class="iwb-label col-md-2 control-label iwb-label-required" for="">总件(千件)</label><div class="col-md-4"><input class="form-control number required" min="0.001" name="actualQuantity2" disabled placeholder="请输入总件(千件)..." type="text"></div></div><div class="form-group-sm"><label class="iwb-label col-md-2 control-label iwb-label-required" for="">包装入库号</label><div class="col-md-4"><input class="form-control required" name="packageEnterNum" placeholder="请输入包装入库号..." type="text"></div></div><div class="form-group-sm"><label class="iwb-label col-md-2 control-label iwb-label-required" for="">总重(Kg)</label><div class="col-md-4"><input class="form-control number required" min="0.001" name="actualQuantity" required=""disabled placeholder="请输入总重(Kg)..." type="text"></div></div><div class="form-group-sm"><label class="iwb-label col-md-2 control-label iwb-label-required" for="">核件人</label><div class="col-md-4" data-select2-id="15"><select class="form-control required" style="width:100%" name="man1"> <option value="" selected>请选择核件人</option>@(Html.Raw(employee))</select></div></div><div class="form-group-sm"><label class="iwb-label col-md-2 control-label iwb-label-required" for="">包装负责人</label><div class="col-md-4" data-select2-id="24"><select class="form-control required" style="width:100%" name="man2" ><option value="" selected>请选择包装负责人</option>@(Html.Raw(employee))</select></div></div><div class="col-md-4" style="float: right;"><button type="button" class="btn btn-sm btn-danger" style="width:100%;margin-bottom:5px;" onclick="RemovePackageUni(this)">删除此包装规格</button></div></div>';
  571. $("#form").append(str).find("select").select2();
  572. BindChangeEvent();
  573. var topHeight = $(window).height() - $("#modal").find('.modal-dialog').height() - 50;
  574. if (topHeight < 30) {
  575. topHeight = 30;
  576. }
  577. $("#modal").find('.modal-dialog').animate({ 'marginTop': topHeight / 2 + "px" });
  578. }
  579. function RemovePackageUni(that) {
  580. $(that).closest(".package-unit").remove();
  581. }
  582. function CheckActualQuantity(url) {
  583. var actualQuantity = quantity, unit = "";
  584. var hs = (actualQuantity * (Number(@hsRate) / 100).toFixed(3)).toFixed(3);
  585. if ($('input[name="packType"]:checked').val() === "1") {
  586. $("input[name='actualQuantity']").each(function(i, v) {
  587. var q = Number($(v).val());
  588. if (q) {
  589. actualQuantity -= q;
  590. }
  591. });
  592. unit = "Kg";
  593. } else {
  594. $("input[name='actualQuantity2']").each(function(i, v) {
  595. var q = Number($(v).val());
  596. if (q) {
  597. actualQuantity -= q;
  598. }
  599. });
  600. unit = "千件";
  601. }
  602. var str;
  603. actualQuantity = actualQuantity.toFixed(3);
  604. if (actualQuantity > 0) {
  605. var isShowZoreCheckBox = $("#showZoreCheckBox").is(':checked') ? "1" : "0";
  606. if (isShowZoreCheckBox === "1") {
  607. if (actualQuantity < hs) {
  608. SaveAjax({
  609. form: $('#form'),
  610. url: url,
  611. data: GetCreatePackageDate(),
  612. success: function() {
  613. $("#modal").modal("hide");
  614. RefreshTable();
  615. RefreshTable(packageTable);
  616. }
  617. });
  618. return true;
  619. }
  620. }
  621. str = '还有[ {0}{1} ]产品还未进行包装,剩余数量是否直接进行打包处理?'.format(actualQuantity, unit);
  622. abp.message.confirm(str,
  623. "确认剩余数量行打包处理",
  624. function () {
  625. let data = GetCreatePackageDate();
  626. let initUnit = GetInitUnitData();
  627. initUnit.packageCount = 1;
  628. initUnit.packageEnterNum = initUnit.packageEnterNum + '-1';
  629. if (unit == "千件") {
  630. initUnit.actualQuantity2 = actualQuantity;
  631. initUnit.actualQuantity = (initUnit.kgWeight * initUnit.actualQuantity2).toFixed(3);
  632. initUnit.packageSpecification = actualQuantity;
  633. } else {
  634. initUnit.actualQuantity = actualQuantity;
  635. initUnit.actualQuantity2 = (initUnit.actualQuantity / initUnit.kgWeight).toFixed(3);
  636. initUnit.packageSpecification = actualQuantity;
  637. }
  638. data.packageInfos.push(initUnit);
  639. SaveAjax({
  640. form: $('#form'),
  641. url: url,
  642. data: data,
  643. success: function() {
  644. $("#modal").modal("hide");
  645. RefreshTable();
  646. RefreshTable(packageTable);
  647. }
  648. });
  649. });
  650. } else if (actualQuantity < 0) {
  651. actualQuantity = Math.abs(actualQuantity);
  652. str = '您多包装了[ {0}{1} ]产品,请检查后再操作!'.format(actualQuantity, unit);
  653. abp.message.warn(str, "", true);
  654. return false;
  655. } else {
  656. SaveAjax({
  657. form: $('#form'),
  658. url: url,
  659. data: GetCreatePackageDate(),
  660. success: function() {
  661. $("#modal").modal("hide");
  662. RefreshTable();
  663. RefreshTable(packageTable);
  664. }
  665. });
  666. return true;
  667. }
  668. //if (str) {
  669. // abp.message.warn(str, "", true);
  670. // return false;
  671. //}
  672. //return true;
  673. }
  674. function SavePackages(url) {
  675. //var actualQuantity = quantity - GetActualQuantity();
  676. //if (actualQuantity > 0) {
  677. // abp.message.warn('还有 [' + actualQuantity + ' ] 产品还未进行包装,请检查后再操作!');
  678. // return;
  679. //} else if (actualQuantity < 0) {
  680. // actualQuantity = Math.abs(actualQuantity);
  681. // abp.message.warn('您多包装了 [' + actualQuantity + ' ] 产品,请检查后再操作!');
  682. // return;
  683. //}
  684. if (CheckActualQuantity(url)) {
  685. //SaveAjax({
  686. // form: $('#form'),
  687. // url: url,
  688. // data: GetCreatePackageDate(),
  689. // success: function() {
  690. // $("#modal").modal("hide");
  691. // RefreshTable();
  692. // RefreshTable(packageTable);
  693. // }
  694. //});
  695. }
  696. }
  697. function GetCreatePackageDate() {
  698. var data = {
  699. packageApplyNo: $("#modal #packageApplyNo").val(),
  700. productionOrderNo: $("#modal #productionOrderNo").val(),
  701. packageProductNo: $("#modal #packageProductNo").val(),
  702. productNo: $("#modal #productNo").val(),
  703. packType: $("#modal #packType").val(),
  704. remark: $("#modal #remark").val(),
  705. packageInfos: []
  706. }
  707. $(".package-unit").each(function(i, v) {
  708. var q = $(v).find("input[name='actualQuantity']").val();
  709. var q2 = $(v).find("input[name='actualQuantity2']").val();
  710. var s = $(v).find("input[name='packageSpecification']").val();
  711. var c = $(v).find("input[name='packageCount']").val();
  712. var p = $(v).find("input[name='packageEnterNum']").val();
  713. var k = $(v).find("input[name='kgWeight']").val();
  714. var vu = $(v).find("select[name='man1']").val();
  715. var pu = $(v).find("select[name='man2']").val();
  716. var vn = $(v).find("select[name='man1'] option:selected").text();
  717. var pn = $(v).find("select[name='man2'] option:selected").text();
  718. data.packageInfos.push({
  719. actualQuantity: q,
  720. actualQuantity2: q2,
  721. packageSpecification: s,
  722. packageCount: c,
  723. packageEnterNum: p,
  724. kgWeight: k,
  725. verifyUserId: vu,
  726. packageUserId: pu,
  727. verifyUser: vn,
  728. packageUser: pn
  729. });
  730. });
  731. return data;
  732. }
  733. </script>
  734. <script>
  735. function f_enterApply(id) {
  736. console.log("cancelApply", id);
  737. abp.message.confirm("确认申请入库?",
  738. "申请入库",
  739. function () {
  740. abp.ajax({
  741. url: window.appUrl + 'PackInfoApply/CreateProductApply',
  742. data: { Id: id },
  743. async: true,
  744. type: "Post",
  745. contentType: 'application/x-www-form-urlencoded; charset=UTF-8',
  746. isValidate: false,
  747. dataType: "json",
  748. success: function () {
  749. abp.message.success(abp.localization.localize("OpSuccess"));
  750. RefreshTable(packageTable);
  751. }
  752. });
  753. });
  754. }
  755. function f_cancelApply(id) {
  756. console.log("cancelApply", id);
  757. abp.message.confirm("确认取消申请?",
  758. "取消申请",
  759. function () {
  760. abp.ajax({
  761. url: window.appUrl + 'PackInfoApply/CancelProductApply',
  762. data: { Id: id },
  763. async: true,
  764. type: "Post",
  765. contentType: 'application/x-www-form-urlencoded; charset=UTF-8',
  766. isValidate: false,
  767. dataType: "json",
  768. success: function () {
  769. abp.message.success(abp.localization.localize("OpSuccess"));
  770. RefreshTable(packageTable);
  771. }
  772. });
  773. });
  774. }
  775. function f_confirmEnterApply(id) {
  776. console.log("cancelApply", id);
  777. abp.message.confirm("确认产品入库数量正确吗?",
  778. "确认入库数量",
  779. function () {
  780. abp.ajax({
  781. url: window.appUrl + 'PackInfoApply/ConfirmProductApply',
  782. data: { Id: id },
  783. async: true,
  784. type: "Post",
  785. contentType: 'application/x-www-form-urlencoded; charset=UTF-8',
  786. isValidate: false,
  787. dataType: "json",
  788. success: function () {
  789. abp.message.success(abp.localization.localize("OpSuccess"));
  790. RefreshTable(packageTable);
  791. }
  792. });
  793. });
  794. }
  795. function f_closeApply(id) {
  796. console.log("recoveryApply", id);
  797. abp.message.confirm("入库申请关闭后不可恢复,确认关闭申请?",
  798. "关闭申请",
  799. function () {
  800. abp.ajax({
  801. url: window.appUrl + 'PackInfoApply/CloseProductApply',
  802. data: { Id: id },
  803. async: true,
  804. type: "Post",
  805. contentType: 'application/x-www-form-urlencoded; charset=UTF-8',
  806. isValidate: false,
  807. dataType: "json",
  808. success: function () {
  809. abp.message.success(abp.localization.localize("OpSuccess"));
  810. RefreshTable(packageTable);
  811. }
  812. });
  813. });
  814. }
  815. function f_recoveryApply(id) {
  816. console.log("recoveryApply", id);
  817. abp.message.confirm("确认恢复申请?",
  818. "恢复申请",
  819. function () {
  820. abp.ajax({
  821. url: window.appUrl + 'PackInfoApply/RecoveryProductApply',
  822. data: { Id: id },
  823. async: true,
  824. type: "Post",
  825. contentType: 'application/x-www-form-urlencoded; charset=UTF-8',
  826. isValidate: false,
  827. dataType: "json",
  828. success: function () {
  829. abp.message.success(abp.localization.localize("OpSuccess"));
  830. RefreshTable(packageTable);
  831. }
  832. });
  833. });
  834. }
  835. </script>
  836. <script>
  837. function Submit_query_Product_modal(row) {
  838. row = row || $("#query_Product_modal").find("table").bootstrapTable("getSelections")[0];
  839. row = CheckIsExistAndGetNewProduct(row.id);
  840. if (row) {
  841. var productNo = row.id;
  842. $(targetDom + ' #productNo').val(productNo);
  843. $(targetDom + " #productName").val(row.productName);
  844. $("#query_Product_modal").modal("hide");
  845. } else {
  846. abp.message.warn(abp.localization.localize("ChooseOneToOp"));
  847. }
  848. }
  849. function CheckIsExistAndGetNewProduct(productNo) {
  850. let row;
  851. SaveAjax({
  852. url: window.appUrl + 'Common/GetNewProductInfo?productNo=' + productNo,
  853. isValidate: false,
  854. isAlert: false,
  855. async: false,
  856. success: function (res) {
  857. if (res) {
  858. let pNo = res.id;
  859. let reg = new RegExp(/^s.{13}/g);
  860. if (productNo !== pNo && reg.test(pNo)) {
  861. abp.message.warn(`此产品已被弃用,系统自动更换新产品!`);
  862. }
  863. row = res;
  864. }
  865. }
  866. });
  867. return row;
  868. }
  869. </script>
  870. <script>
  871. function PackageProductNoFormatter(v, r) {
  872. var packType = $('input[name="packType"]:checked').val();
  873. if (packType === "1") {
  874. return '<span class="label label-info">' + r.semiProductNo + '</span>';
  875. } else {
  876. return '<span class="label label-danger">' + r.productNo + '</span>';
  877. }
  878. }
  879. function ProcessingNumFormatter(v, r) {
  880. if (v === 0) {
  881. //return '<span class="label label-info">' + v+ '</span>';
  882. return '';
  883. } else {
  884. return '<span class="label label-danger">待处理:' + v + '</span>';
  885. }
  886. }
  887. function ApplyStatusFormatter(v, r) {
  888. if (r.isClose) {
  889. return '<span class="label label-primary">已结束</span>';
  890. }
  891. var name = $("#hide-ApplyStatus option[value='" + v + "']").text();
  892. if (v === "1") {
  893. return '<span class="label label-info">' + name + '</span>';
  894. } else if (v === "2") {
  895. return '<span class="label label-success">' + name + '</span>';
  896. } else if (v === "3") {
  897. return '<span class="label label-danger">' + name + '</span>';
  898. }
  899. return '<span class="label label-info">' + name + '</span>';
  900. }
  901. function ProductApplyStatusFormatter(v, r) {
  902. if (r.isClose) {
  903. return '<span class="label label-primary">已结束</span>';
  904. }
  905. var name = $("#hide-ProductApplyStatus option[value='" + v + "']").text();
  906. if (v === 1) {
  907. return '<span class="label label-info">' + name + '</span>';
  908. } else if (v === 2) {
  909. return '<span class="label label-success">' + name + '</span>';
  910. } else if (v === 3) {
  911. return '<span class="label label-warning">' + name + '</span>';
  912. } else if (v === 4) {
  913. return '<span class="label label-danger">' + name + '</span>';
  914. } else if (v === 5) {
  915. return '<span class="label label-info">' + name + '</span>';
  916. }
  917. return '<span class="label label-info">' + name + '</span>';
  918. }
  919. function ActionFormatter(v, r) {
  920. var str;
  921. if (r.isClose) {
  922. return '<span class="table-action">暂无操作</span>';
  923. }
  924. if (r.applyStatus === 0) {
  925. str = '<span class="table-action" onclick="f_enterApply(\'' +
  926. r.id +
  927. '\')"><i class="iconfont icon-right"></i>申请入库</span>';
  928. } else if (r.applyStatus === 1) {
  929. str = '<span class="table-action" onclick="f_cancelApply(\'' +
  930. r.id +
  931. '\')"><i class="iconfont icon-right"></i>取消申请</span>';
  932. } else if (r.applyStatus === 2) {
  933. str = '<span class="table-action" onclick="f_confirmEnterApply(\'' +
  934. r.id +
  935. '\')"><i class="iconfont icon-right"></i>确认入库</span>';
  936. } else if (r.applyStatus === 3 || r.applyStatus === 4) {
  937. str = '<span class="table-action" onclick="f_recoveryApply(\'' +
  938. r.id +
  939. '\')"><i class="iconfont icon-right"></i>恢复申请</span><span class="table-action" onclick="f_closeApply(\'' +
  940. r.id +
  941. '\')"><i class="iconfont icon-right"></i>关闭申请</span>';
  942. } else if (r.applyStatus === 5) {
  943. str = '<span class="table-action" onclick="f_closeApply(\'' +
  944. r.id +
  945. '\')"><i class="iconfont icon-right"></i>关闭申请</span>';
  946. } else {
  947. str = '<span class="table-action">暂无操作</span>';
  948. }
  949. return str;
  950. }
  951. </script>
  952. }