OrderStatusMg.cshtml 77 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495969798991001011021031041051061071081091101111121131141151161171181191201211221231241251261271281291301311321331341351361371381391401411421431441451461471481491501511521531541551561571581591601611621631641651661671681691701711721731741751761771781791801811821831841851861871881891901911921931941951961971981992002012022032042052062072082092102112122132142152162172182192202212222232242252262272282292302312322332342352362372382392402412422432442452462472482492502512522532542552562572582592602612622632642652662672682692702712722732742752762772782792802812822832842852862872882892902912922932942952962972982993003013023033043053063073083093103113123133143153163173183193203213223233243253263273283293303313323333343353363373383393403413423433443453463473483493503513523533543553563573583593603613623633643653663673683693703713723733743753763773783793803813823833843853863873883893903913923933943953963973983994004014024034044054064074084094104114124134144154164174184194204214224234244254264274284294304314324334344354364374384394404414424434444454464474484494504514524534544554564574584594604614624634644654664674684694704714724734744754764774784794804814824834844854864874884894904914924934944954964974984995005015025035045055065075085095105115125135145155165175185195205215225235245255265275285295305315325335345355365375385395405415425435445455465475485495505515525535545555565575585595605615625635645655665675685695705715725735745755765775785795805815825835845855865875885895905915925935945955965975985996006016026036046056066076086096106116126136146156166176186196206216226236246256266276286296306316326336346356366376386396406416426436446456466476486496506516526536546556566576586596606616626636646656666676686696706716726736746756766776786796806816826836846856866876886896906916926936946956966976986997007017027037047057067077087097107117127137147157167177187197207217227237247257267277287297307317327337347357367377387397407417427437447457467477487497507517527537547557567577587597607617627637647657667677687697707717727737747757767777787797807817827837847857867877887897907917927937947957967977987998008018028038048058068078088098108118128138148158168178188198208218228238248258268278288298308318328338348358368378388398408418428438448458468478488498508518528538548558568578588598608618628638648658668678688698708718728738748758768778788798808818828838848858868878888898908918928938948958968978988999009019029039049059069079089099109119129139149159169179189199209219229239249259269279289299309319329339349359369379389399409419429439449459469479489499509519529539549559569579589599609619629639649659669679689699709719729739749759769779789799809819829839849859869879889899909919929939949959969979989991000100110021003100410051006100710081009101010111012101310141015101610171018101910201021102210231024102510261027102810291030103110321033103410351036103710381039104010411042104310441045104610471048104910501051105210531054105510561057105810591060106110621063106410651066106710681069107010711072107310741075107610771078107910801081108210831084108510861087108810891090109110921093109410951096109710981099110011011102110311041105110611071108110911101111111211131114111511161117111811191120112111221123112411251126112711281129113011311132113311341135113611371138113911401141114211431144114511461147114811491150115111521153115411551156115711581159116011611162116311641165116611671168116911701171117211731174117511761177117811791180118111821183118411851186118711881189119011911192119311941195119611971198119912001201120212031204120512061207120812091210121112121213121412151216121712181219122012211222122312241225122612271228122912301231123212331234123512361237123812391240124112421243124412451246124712481249125012511252125312541255125612571258125912601261126212631264126512661267126812691270127112721273127412751276127712781279128012811282128312841285128612871288128912901291129212931294129512961297129812991300130113021303130413051306130713081309131013111312131313141315131613171318131913201321132213231324132513261327132813291330133113321333133413351336133713381339134013411342134313441345134613471348134913501351135213531354135513561357135813591360136113621363136413651366136713681369137013711372137313741375137613771378137913801381138213831384138513861387138813891390139113921393139413951396139713981399140014011402140314041405140614071408140914101411141214131414141514161417141814191420142114221423142414251426142714281429143014311432143314341435143614371438143914401441144214431444144514461447144814491450145114521453145414551456145714581459146014611462146314641465146614671468146914701471147214731474147514761477147814791480148114821483148414851486148714881489149014911492149314941495149614971498149915001501150215031504150515061507150815091510151115121513151415151516151715181519152015211522152315241525152615271528152915301531153215331534153515361537153815391540154115421543154415451546154715481549155015511552155315541555155615571558155915601561156215631564156515661567156815691570157115721573157415751576157715781579158015811582158315841585158615871588158915901591159215931594159515961597159815991600160116021603160416051606160716081609161016111612161316141615161616171618161916201621162216231624162516261627162816291630163116321633163416351636163716381639164016411642164316441645164616471648164916501651165216531654165516561657165816591660166116621663166416651666166716681669167016711672167316741675167616771678167916801681168216831684168516861687168816891690169116921693169416951696169716981699170017011702170317041705170617071708170917101711171217131714171517161717171817191720172117221723172417251726172717281729173017311732173317341735173617371738173917401741174217431744174517461747174817491750175117521753175417551756175717581759176017611762176317641765176617671768176917701771177217731774177517761777177817791780178117821783178417851786178717881789179017911792179317941795179617971798179918001801180218031804180518061807180818091810181118121813181418151816181718181819182018211822182318241825182618271828182918301831183218331834183518361837183818391840184118421843184418451846184718481849185018511852185318541855185618571858185918601861186218631864
  1. @using System.Web.UI.HtmlControls
  2. @using Abp.Authorization
  3. @using IwbZero.Session
  4. @using ShwasherSys
  5. @using ShwasherSys.Authorization.Permissions
  6. @using ShwasherSys.Models.Layout
  7. @using ShwasherSys.Models.Modal
  8. @using ShwasherSys.Views.Shared.New.Table
  9. @{
  10. /**/
  11. ViewBag.ActiveMenu = PermissionNames.PagesOrderInfoOrderStatusMg; //The menu item will be active for this page.
  12. ViewBag.Title = "订单状态维护";
  13. List<SelectListItem> OrderStatusList = ViewBag.OrderStatus;
  14. List<SelectListItem> OrderItemStatusList = ViewBag.OrderItemStatus;
  15. List<SelectListItem> emergencyLevelList = ViewBag.EmergencyLevel;
  16. Boolean isCanChangeOrderItemStatus = IsGranted(PermissionNames.PagesOrderInfoOrderStatusMgChangeStatus);
  17. Boolean isCanViewPrice = IsGranted(PermissionNames.PagesOrderInfoOrderStatusMgQueryOrderPrice);
  18. string startDate = DateTime.Now.AddMonths(-3).ToString("yyyy-MM-dd");
  19. string endDate = DateTime.Now.AddDays(7).ToString("yyyy-MM-dd");
  20. List<SelectListItem> OrderSaleTypeList = ViewBag.OrderSaleType;
  21. var searchForm = new SearchFormViewModal(new List<SearchItem>()
  22. {
  23. new SearchItem("id", "流水号"),
  24. new SearchItem("orderDate", "订单日期",FiledType.D,ExpType.GreaterOrEqual,value:startDate),
  25. new SearchItem("orderDate", "到",FiledType.D,ExpType.LessOrEqual,value:endDate),
  26. new SearchItem("customerId", "客户编号").SetSearchIcon("query_customer_modal"),
  27. new SearchItem("stockNo", "客户订单号"),
  28. new SearchItem("orderStatusId", "状态",FiledType.I,ExpType.Equal).SetSearchItem(OrderStatusList),
  29. new SearchItem("saleMan", "业务员",showField:"saleManName").SetSearchIcon("query_employee_modal","SearchForm") ,
  30. new SearchItem("saleType", "销售类型",FiledType.Inull,ExpType.Equal).SetSearchItem(OrderSaleTypeList),
  31. }, false);
  32. }
  33. @section css{
  34. <link href="~/Content/Plugins/bootstrap-datetimepicker/css/bootstrap-datetimepicker.min.css" rel="stylesheet" />
  35. <link href="~/Content/Plugins/bootstrap-table-fixd-columns/bootstrap-table-fixed-columns.css" rel="stylesheet" />
  36. <link href="~/Views/OrderInfo/css/OrderStatusMg.css" rel="stylesheet" />
  37. <style>
  38. .form-panel {
  39. margin-bottom: 5px;
  40. }
  41. .form-panel-header {
  42. padding: 3px 10px;
  43. }
  44. .query-label {
  45. margin-bottom: 1px;
  46. }
  47. .query-form-control {
  48. padding: 1px 12px;
  49. height: 25px;
  50. }
  51. .query-form-group {
  52. margin-bottom: 5px;
  53. }
  54. .item-tool-col {
  55. padding: 10px;
  56. color: azure
  57. }
  58. .sendQuantity {
  59. }
  60. .box {
  61. border: 2px solid #938f9a;
  62. border-radius: 10px;
  63. padding: 0px 0px;
  64. }
  65. .box .box-header {
  66. height: 50px;
  67. background: #938f9a;
  68. }
  69. .form-input-send {
  70. height: 30px;
  71. }
  72. </style>
  73. }
  74. <style>
  75. label.error {
  76. bottom: 12px;
  77. right: 15px;
  78. }
  79. [type="radio"]:not(:checked) + label, [type="radio"]:checked + label {
  80. padding-left: 25px;
  81. font-size: 1.5rem;
  82. color: #dad9db;
  83. }
  84. [type="radio"]:not(:checked) + label::before, [type="radio"]:not(:checked) + label::after {
  85. border: 2px solid rgb(0,155,244) !important;
  86. }
  87. .MapperItem {
  88. border: 1px solid rebeccapurple;
  89. border-radius: 4px;
  90. padding: 3px 10px;
  91. margin-top: 3px;
  92. }
  93. .MapperItem:after, .MapperItem:before {
  94. display: table;
  95. content: " ";
  96. }
  97. .MapperItem:after {
  98. clear: both;
  99. }
  100. .accordion-toggle {
  101. font-size: 1.5rem;
  102. color: #000080;
  103. cursor: pointer;
  104. }
  105. .accordion-toggle > i, .guide > i {
  106. display: inline-block;
  107. color: #ffffff;
  108. transition: all 1s ease;
  109. }
  110. .accordion-toggle .down-direction {
  111. transform: rotate(-90deg);
  112. }
  113. .down-direction2 {
  114. transform: rotate(180deg);
  115. }
  116. .lock_box {
  117. width: 100%;
  118. height: auto;
  119. border-radius: 5px;
  120. border: 1px solid #ccc;
  121. margin-bottom: 2px;
  122. }
  123. .lock_box_header {
  124. width: 100%;
  125. background: #cccccc;
  126. color: #000080;
  127. border-radius: 4px 4px 0 0 ;
  128. font-size: 12px;
  129. font-weight: bolder;
  130. padding: 2px;
  131. display: flex;
  132. flex-flow: row nowrap;
  133. justify-content: space-between;
  134. align-items: center;
  135. }
  136. </style>
  137. <div class="table-box mr-4 iwb-bootstrap-table">
  138. @Html.Action("ToolMenu", "Layout", new { pageName = ViewBag.ActiveMenu, searchForm })
  139. <table id="table"
  140. data-url="/api/services/app/OrderHeaders/GetAll"
  141. data-striped="true" data-id-field="id" data-unique-id="id"
  142. data-method="post"
  143. data-side-pagination="server"
  144. data-content-type="application/x-www-form-urlencoded; charset=UTF-8"
  145. data-cache="false"
  146. 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"
  147. data-query-params="QueryParams"
  148. data-response-handler="ResponseHandler"
  149. data-click-to-select="true"
  150. data-single-select="true"
  151. data-show-jumpto="true">
  152. <thead>
  153. <tr class="row" id="header">
  154. <th data-field="state" data-checkbox="true"></th>
  155. <th data-align="center" data-field="id">流水号</th>
  156. <th data-align="center" data-field="orderStatusId" data-formatter="OrderStatusFormatter">订单状态</th>
  157. <th data-align="center" data-field="isLock" data-formatter="IsLockFormatter">是否删除</th>
  158. <th data-align="center" data-field="customerId">客户编号</th>
  159. <th data-align="center" data-field="stockNo">客户订单号</th>
  160. <th data-align="center" data-field="orderDate" data-formatter="DateFormatter">订单日期</th>
  161. <th data-align="center" data-field="linkName">联系人</th>
  162. <th data-align="center" data-field="telephone">电话</th>
  163. <th data-align="center" data-field="saleManName">订单业务员</th>
  164. <th data-align="center" data-field="saleTypeName">外销/内销</th>
  165. <th data-align="center" data-field="timeCreated">创建日期</th>
  166. @*
  167. <th data-align="center" data-formatter="ActionsFormatter"></th>
  168. *@
  169. </tr>
  170. </thead>
  171. </table>
  172. </div>
  173. <div class="table-box mr-4 iwb-bootstrap-table" id="orderItemDiv" style="display: none;">
  174. <div class="btn-toolbar row" role="toolbar" aria-label="Toolbar with button groups">
  175. <div class="col-sm-2 col-lg-2 item-tool-col">
  176. <span style=""><strong>流水号:</strong></span><span id="orderHeaderNo"></span>
  177. </div>
  178. <div class="col-sm-2 col-lg-2 item-tool-col">
  179. <span><strong>客户订单号:</strong></span><span id="stockNo"></span>
  180. </div>
  181. <div class="col-sm-2 col-lg-2 item-tool-col">
  182. <button class="btn btn-info" style="height: 20px; padding: 0px 12px; margin-right: 3px;border-radius: 50px;" id="BtnChangeOrderItemStoreCompleteStatus" onclick="f_ChangeOrderItemStoreCompleteStatus()"><i class="iconfont icon-edit"></i>修改货物配齐状态</button>
  183. @if (isCanChangeOrderItemStatus)
  184. {
  185. <button class="btn btn-info" style="height: 20px; padding: 0px 12px; border-radius: 50px; margin-top: 3px;" id="BtnChangeOrderItemStatus" onclick="f_ChangeOrderItemStatus()"><i class="iconfont icon-edit"></i>修改订单明细状态</button>
  186. }
  187. </div>
  188. <div class="col-sm-2 col-lg-2 item-tool-col">
  189. @if (IsGranted(PermissionNames.PagesOrderInfoOrderStatusMgAuditItem))
  190. {
  191. <button class="btn btn-warning" style="height: 20px; padding: 0px 12px; border-radius: 50px;" id="BtnAuditNewOrderItems" onclick="f_AuditNewOrderItems()"><i class="iconfont icon-shenhe"></i>审核全部新建订单</button>
  192. }
  193. <button class="btn btn-info" style="height: 20px; padding: 0px 12px; border-radius: 50px; margin-top: 3px;" id="BtnLockStore" onclick="f_lockStore()"><i class="iconfont icon-lock"></i>锁定产品库存</button>
  194. </div>
  195. <div class="col-sm-3 col-lg-3 item-tool-col">
  196. <span><strong>当前订单是否已全部完成发货:</strong></span><span id="isAllSend" style="color: red">未完成</span>
  197. </div>
  198. </div>
  199. <table id="tableOrderItem"
  200. data-striped="true" data-id-field="id" data-unique-id="id"
  201. data-method="post"
  202. data-side-pagination="server"
  203. data-content-type="application/x-www-form-urlencoded; charset=UTF-8"
  204. data-cache="false"
  205. data-pagination="false" 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"
  206. data-click-to-select="true"
  207. data-single-select="false" data-show-footer="true">
  208. <thead>
  209. <tr class="row">
  210. <th data-field="state" data-checkbox="true"></th>
  211. <th data-align="center" data-field="orderStatusName" data-formatter="OrderItemStatusFormatter" data-footer-formatter="合计:">当前状态</th>
  212. <th data-align="center" data-field="id">明细流水号</th>
  213. <th data-align="center" data-field="productNo">产品编号</th>
  214. <th data-align="center" data-field="partNo">零件号</th>
  215. <th data-align="center" data-field="standardName">标准名称</th>
  216. <th data-align="center" data-field="model">规格</th>
  217. <th data-align="center" data-field="material">材质</th>
  218. <th data-align="center" data-field="productName">型号</th>
  219. <th data-align="center" data-field="surfaceColor">表色</th>
  220. <th data-align="center" data-field="rigidity">硬度</th>
  221. <th data-align="center" data-field="emergencyLevel" data-formatter="EmergencyLevelFormatter">紧急程度</th>
  222. <th data-align="center" data-field="storeCompleteState" data-formatter="StoreCompleteStateFormatter">是否库齐</th>
  223. @if (isCanViewPrice)
  224. {
  225. @*<th data-align="center" data-field="currencyId">货币</th>*@
  226. @*<th data-align="center" data-field="currencyPrice" data-formatter="CurrencyPriceFormatter">货币价格(含税)</th>*@
  227. <th data-align="center" data-field="price" data-formatter="PriceFormatter">含税价格</th>
  228. <th data-align="center" data-field="afterTaxPrice" data-formatter="TaxPriceFormatter">不含税价格</th>
  229. <th data-align="center" data-field="logisticsFee">运费</th>
  230. <th data-align="center" data-field="moldFee">模具费</th>
  231. }
  232. <th data-align="center" data-field="quantity" data-formatter="QuantityFormatter">总数</th>
  233. <th data-align="center" data-field="isSendQuantity" data-formatter="SendItemFormatter">已发数</th>
  234. <th data-align="center" data-field="remainingQuantity">剩余数</th>
  235. @if (isCanViewPrice)
  236. {
  237. <th data-align="center" data-field="totalPrice" data-footer-formatter="AllTotalPriceFormatter" data-formatter="TotalPriceFormatter">含税总金额</th>
  238. <th data-align="center" data-field="afterTaxTotalPrice" data-footer-formatter="AllAfterTaxTotalPriceFormatter" data-formatter="TotalPriceFormatter">不含税总金额</th>
  239. }
  240. <th data-align="center" data-field="sendDate" data-formatter="SendDateFormatter">送货日期</th>
  241. @*<th data-align="center" data-field="isReport" data-formatter="IsReportFormatter">检验报告</th>*@
  242. <th data-align="center" data-field="operatorAction" data-formatter="ActionsItemFormatter"></th>
  243. </tr>
  244. </thead>
  245. </table>
  246. </div>
  247. @section modal{
  248. <section>
  249. <div class="modal fade" id="modalLockStore" role="dialog" tabindex="-1" aria-labelledby="ModalLabel">
  250. <div class="modal-dialog modal-dialog-centered" role="document" style="width: 850px;">
  251. <div class="modal-content">
  252. <div class="modal-header">
  253. <div class="box-title" style="line-height: 25px; color: #f9f9f9; display: block;">
  254. <label class="iwb-label col-md-2 control-label iwb-label-required" for="productId_lockstore" style="padding: 3px 3px;">产品编号</label>
  255. <div class="col-md-4" style="margin-left: -30px;">
  256. <div class="input-group">
  257. <input type="hidden" id="quantity_lockstore_key" />
  258. <input type="hidden" id="orderItemId_lockstore_key" />
  259. <input type="hidden" id="customerId_lockstore_key" />
  260. <input class="form-control" Required id="productId_lockstore" disabled="disabled" name="productId_lockstore" placeholder="请输入..." value="" style="width: 100%;" type="text" />
  261. @if (PermissionChecker.IsGranted(PermissionNames.PagesOrderInfoOrderStatusMgReplaceSendItem))
  262. {
  263. <div class="input-group-addon" onclick="ShowModal('query_Product_modal');">
  264. <i class="iconfont icon-search"></i>
  265. </div>
  266. }
  267. </div>
  268. </div>
  269. </div>
  270. <div style="position: absolute; right: 5px; top: 8px">
  271. @*<button class="btn btn-info" onclick="lockStoreAction()">锁定库存</button>*@
  272. <button class="btn btn-default" onclick="$('#modalLockStore').modal('hide');$('#productId_lockstore').val('')">取消</button>
  273. </div>
  274. </div>
  275. <div class="modal-body">
  276. <div class="lock_box">
  277. <div class="lock_box_header">已锁定冻结的库存记录</div>
  278. <div id="locked_box_content" class="table-box mr-4 iwb-bootstrap-table">
  279. <table id="LockedStoreTable" data-striped="true" data-click-to-select="false" data-height="100"
  280. data-single-select="false">
  281. <thead>
  282. <tr class="row">
  283. <th data-align="center" data-field="productBatchNum">批次号 </th>
  284. <th data-align="center" data-field="productNo">产品编号</th>
  285. <th data-align="center" data-field="storeLocationNo">库位</th>
  286. <th data-align="center" data-field="quantity">冻结数量(千件)</th>
  287. <th data-align="center" data-field="quantityPerPack">千件/每包</th>
  288. <th data-align="center" data-field="status" data-formatter="LockedStatusFormatter">状态</th>
  289. <th data-align="center" data-formatter="LockedStoreActionFormatter">操作</th>
  290. </tr>
  291. </thead>
  292. </table>
  293. </div>
  294. </div>
  295. <div class="lock_box">
  296. <div class="lock_box_header">锁定冻结的库存记录<span><button class="btn btn-info" onclick="lockStoreAction()">锁定库存</button></span></div>
  297. <div id="locking_box_content" class="table-box mr-4 iwb-bootstrap-table">
  298. <form id="formStore">
  299. <table class="table table-striped lockstore">
  300. <tbody>
  301. <tr>
  302. <th style="width: 150px">批次号</th>
  303. <th style="width: 150px">库位</th>
  304. <th style="width: 150px">可用数量(千件)</th>
  305. <th style="width: 200px">冻结数量</th>
  306. <th style="width: 200px">千件/每包</th>
  307. </tr>
  308. </tbody>
  309. </table>
  310. </form>
  311. </div>
  312. </div>
  313. </div>
  314. </div>
  315. </div>
  316. </div>
  317. </section>
  318. <section>
  319. <div class="modal fade" id="modalSendOrder" role="dialog" tabindex="-1" aria-labelledby="ModalLabel" aria-hidden="true">
  320. <div class="modal-dialog modal-dialog-centered" role="document" style="width: 850px; ">
  321. <div class="modal-content">
  322. <div class="modal-header">
  323. <input type="hidden" id="totalQuantity" />
  324. <input type="hidden" id="isSendQuantity" />
  325. <input type="hidden" id="canSendQuantity" />
  326. <input type="hidden" id="orderItemNo_ForSend" />
  327. <div class="box-title" style="line-height: 25px; color: #f9f9f9;display: block;">
  328. @*<span id="productId"></span>*@
  329. @*<input type="text" name="productId" id="productId" />*@
  330. <label class="iwb-label col-md-2 control-label iwb-label-required" for="productId" style="padding: 3px 3px;">产品编号</label>
  331. <div class="col-md-4" style="margin-left: -30px;">
  332. <div class="input-group">
  333. <input class="form-control" Required id="productId" disabled="disabled" name="productId" placeholder="请输入..." value="" style="width:100%;" type="text" />
  334. @if (PermissionChecker.IsGranted(PermissionNames.PagesOrderInfoOrderStatusMgReplaceSendItem))
  335. {
  336. <div class="input-group-addon" onclick="ShowModal('query_Product_modal');">
  337. <i class="iconfont icon-search"></i>
  338. </div>
  339. }
  340. </div>
  341. </div>
  342. &nbsp;&nbsp;
  343. <div class="col-md-5">已发/总数:<span id="IsSendQuantity" style="text-decoration: underline"></span>&nbsp;&nbsp;被定量:<span id="IsLockQuantity" style="text-decoration: underline"></span></div>
  344. </div>
  345. <div style="position: absolute; right: 5px; top: 8px">
  346. <button class="btn btn-info" onclick="SendOrderAction()">确认发货</button>
  347. <button class="btn btn-default" onclick="$('#modalSendOrder').modal('hide')">取消</button>
  348. </div>
  349. </div>
  350. <div class="modal-body">
  351. <form id="formSend">
  352. @*<input type="number" class="form-control number sendQuantity form-input-send" id="ffffff" name="ffffff" required min="0" />*@
  353. <table class="table table-striped fahuo">
  354. <tbody>
  355. <tr>
  356. <th style="width: 150px">批次号</th>
  357. <th style="width: 150px">库位</th>
  358. @*<th style="width: 125px">包装(每包千件数)</th>*@
  359. <th style="width: 150px">可用数量(千件)</th>
  360. <th style="width: 200px">发货数量</th>
  361. <th style="width: 200px">千件/每包</th>
  362. </tr>
  363. </tbody>
  364. </table>
  365. <div class=" accordion" style="padding: 0; border-top: 2px dotted #ffffff; display: none;">
  366. <div class="accordion-group">
  367. <div class="accordion-heading" style="background: #ccc; padding: 4px;">
  368. <label class="accordion-toggle" data-toggle="collapse" data-parent="#accordion2" href="#collapseOne">
  369. 选择本次计划发货的信息 <i class="iconfont icon-left down-direction "></i>
  370. </label>
  371. </div>
  372. <div id="collapseOne" class="accordion-body collapse in" style="height: 100px; ">
  373. <div class="accordion-inner" style="display: flex;justify-content: flex-start;flex-direction: row;">
  374. </div>
  375. </div>
  376. </div>
  377. </div>
  378. </form>
  379. </div>
  380. </div>
  381. </div>
  382. </div>
  383. </section>
  384. <section>
  385. <!--Main Modal-->
  386. <div class="modal fade" id="modalChangePrice" role="dialog" tabindex="-1" aria-labelledby="ModalLabel" aria-hidden="true">
  387. <div class="modal-dialog modal-dialog-centered" role="document" style="width: 600px">
  388. <div class="modal-content">
  389. @Html.Partial("Modals/_ModalHeader", new ModalHeaderViewModel("价格变更", ""))
  390. @{
  391. var inputs = new List<InputViewModel>
  392. {
  393. new InputViewModel("orderItemNo",displayName:"订单明细编号",name:"orderItemNo").SetDisabled(),
  394. new InputViewModel("oldPrice",displayName:"原价格",@class:"number",other:"min=0.001").SetReadOnly(),
  395. new InputViewModel("newPrice", displayName:"修改的价格",@class:"number",other:"min=0.001"),
  396. };
  397. //var specials = new List<SpecialInputModel>();
  398. }
  399. @Html.Partial("Modals/_ModalBody", new ModalBodyViewModel(inputs))
  400. @Html.Partial("Modals/_SwModalFooter", new ModelFooterModel("modalChangePrice", "ChangePrice()"))
  401. </div>
  402. </div>
  403. </div>
  404. <div class="modal fade" id="modalChangeAfterTaxPrice" role="dialog" tabindex="-1" aria-labelledby="ModalLabel" aria-hidden="true">
  405. <div class="modal-dialog modal-dialog-centered" role="document" style="width: 600px">
  406. <div class="modal-content">
  407. @Html.Partial("Modals/_ModalHeader", new ModalHeaderViewModel("税后价格变更", ""))
  408. @{
  409. var inputs5 = new List<InputViewModel>
  410. {
  411. new InputViewModel("orderItemNo5",displayName:"订单明细编号",name:"orderItemNo").SetDisabled(),
  412. new InputViewModel("oldPrice2",displayName:"原税后价格",@class:"number",name:"oldPrice",other:"min=0").SetReadOnly().SetNotRequired(),
  413. new InputViewModel("newAfterTaxPrice", displayName:"修改的价格",@class:"number",other:"min=0"),
  414. };
  415. //var specials = new List<SpecialInputModel>();
  416. }
  417. @Html.Partial("Modals/_ModalBody", new ModalBodyViewModel(inputs5))
  418. @Html.Partial("Modals/_SwModalFooter", new ModelFooterModel("modalChangeAfterTaxPrice", "ChangeAfterTaxPrice()"))
  419. </div>
  420. </div>
  421. </div>
  422. <div class="modal fade" id="modalChangeQuantity" role="dialog" tabindex="-1" aria-labelledby="ModalLabel" aria-hidden="true">
  423. <div class="modal-dialog modal-dialog-centered" role="document" style="width: 600px">
  424. <div class="modal-content">
  425. @Html.Partial("Modals/_ModalHeader", new ModalHeaderViewModel("数量变更", ""))
  426. @{
  427. var inputs2 = new List<InputViewModel>
  428. {
  429. new InputViewModel("orderItemNo2",displayName:"订单明细编号",name:"orderItemNo").SetDisabled(),
  430. new InputViewModel("oldQuantity",displayName:"原数量",@class:"number",other:"min=0.001").SetReadOnly(),
  431. new InputViewModel("newQuantity", displayName:"修改的数量",@class:"number",other:"min=0.001"),
  432. };
  433. //var specials = new List<SpecialInputModel>();
  434. }
  435. @Html.Partial("Modals/_ModalBody", new ModalBodyViewModel(inputs2))
  436. @Html.Partial("Modals/_SwModalFooter", new ModelFooterModel("modalChangeQuantity", "ChangeQuantity()"))
  437. </div>
  438. </div>
  439. </div>
  440. <div class="modal fade" id="modalChangeSendDate" role="dialog" tabindex="-1" aria-labelledby="ModalLabel" aria-hidden="true">
  441. <div class="modal-dialog modal-dialog-centered" role="document" style="width: 600px">
  442. <div class="modal-content">
  443. @Html.Partial("Modals/_ModalHeader", new ModalHeaderViewModel("发货日期变更", ""))
  444. @{
  445. var inputs3 = new List<InputViewModel>
  446. {
  447. new InputViewModel("orderItemNo3",displayName:"订单明细编号",name:"orderItemNo").SetDisabled(),
  448. new InputViewModel("oldSendDate",displayName:"原发货日期",@class:"date").SetDisabled(),
  449. new InputViewModel("newSendDate", displayName:"修改日期",@class:"date"),
  450. };
  451. //var specials = new List<SpecialInputModel>();
  452. }
  453. @Html.Partial("Modals/_ModalBody", new ModalBodyViewModel(inputs3))
  454. @Html.Partial("Modals/_SwModalFooter", new ModelFooterModel("modalChangeSendDate", "ChangeSendDate()"))
  455. </div>
  456. </div>
  457. </div>
  458. <div class="modal fade" id="modalChangeStatus" role="dialog" tabindex="-1" aria-labelledby="ModalLabel" aria-hidden="true">
  459. <div class="modal-dialog modal-dialog-centered" role="document" style="width: 600px">
  460. <div class="modal-content">
  461. @Html.Partial("Modals/_ModalHeader", new ModalHeaderViewModel("订单明细状态变更", ""))
  462. @{
  463. var inputs4 = new List<InputViewModel>
  464. {
  465. new InputViewModel("orderItemStatusId",InputTypes.List,"变更状态").SetSelectOptions(OrderItemStatusList)
  466. };
  467. }
  468. @Html.Partial("Modals/_ModalBody", new ModalBodyViewModel(inputs4))
  469. @Html.Partial("Modals/_SwModalFooter", new ModelFooterModel("modalChangeStatus", "ChangeOrderItemStatus()"))
  470. </div>
  471. </div>
  472. </div>
  473. <div class="modal fade" id="modalCompleteStoreStatus" role="dialog" tabindex="-1" aria-labelledby="ModalLabel" aria-hidden="true">
  474. <div class="modal-dialog modal-dialog-centered" role="document" style="width: 600px">
  475. <div class="modal-content">
  476. @Html.Partial("Modals/_ModalHeader", new ModalHeaderViewModel("货物配齐状态变更", ""))
  477. @{
  478. var inputs6 = new List<InputViewModel>
  479. {
  480. new InputViewModel("storeCompleteStateId",InputTypes.List,"货物配齐状态").SetSelectOptions(new List<SelectListItem>(){new SelectListItem(){Text = "到齐",Value = "1"},new SelectListItem(){ Text = "未到齐", Value = "0" },new SelectListItem(){ Text = "货物已齐,待改包", Value = "2" },
  481. new SelectListItem()
  482. {
  483. Text = "重新安排生产",
  484. Value = "3"
  485. },
  486. new SelectListItem()
  487. {
  488. Text = "返镀",
  489. Value = "4"
  490. } })
  491. };
  492. }
  493. @Html.Partial("Modals/_ModalBody", new ModalBodyViewModel(inputs6))
  494. @Html.Partial("Modals/_SwModalFooter", new ModelFooterModel("modalChangeStatus", "ChangeCompleteStoreStatus()"))
  495. </div>
  496. </div>
  497. </div>
  498. <div class="modal fade" id="showProductProcess" role="dialog" tabindex="-1" aria-labelledby="ModalLabel" aria-hidden="true">
  499. <div class="modal-dialog modal-dialog-centered" role="document" style="width: 600px">
  500. <div class="modal-content">
  501. @Html.Partial("Modals/_ModalHeader", new ModalHeaderViewModel("生产进度", ""))
  502. <div class="timeline-small">
  503. <div class="timeline-small-body">
  504. <ul>
  505. </ul>
  506. </div>
  507. </div>
  508. @Html.Partial("Modals/_ModalFooter", "1")
  509. </div>
  510. </div>
  511. </div>
  512. <!--显示订单明细已发货记录-->
  513. <div class="modal fade" id="orderSendItemModal" role="dialog" tabindex="-1" >
  514. <div class="modal-dialog modal-dialog-centered" role="document" style="width: 980px">
  515. <div class="modal-content">
  516. @Html.Partial("Modals/_ModalHeader", new ModalHeaderViewModel("订单明细发货记录", ""))
  517. <div class="table-box mr-4 iwb-bootstrap-table">
  518. <table id="sendItemTable" data-striped="true" data-click-to-select="false" data-height="300"
  519. data-single-select="false">
  520. <thead>
  521. <tr class="row">
  522. @*<th data-field="state" data-checkbox="true"></th>*@
  523. <th data-align="center" data-field="stockNo">客户订单号 </th>
  524. <th data-align="center" data-field="sendQuantity">数量</th>
  525. <th data-align="center" data-field="orderUnitName">单位</th>
  526. @*<th data-align="center" data-field="customerId">客户编号</th>*@
  527. <th data-align="center" data-field="productNo">产品编号</th>
  528. <th data-align="center" data-field="productName">产品名称</th>
  529. <th data-align="center" data-field="model">规格</th>
  530. @*<th data-align="center" data-field="surfaceColor">表色</th>
  531. <th data-align="center" data-field="rigidity">硬度</th>*@
  532. <th data-align="center" data-field="orderDate">订单日期</th>
  533. <th data-align="center" data-field="sendDate" data-formatter="DateFormatter">送货日期</th>
  534. <th data-align="center" data-field="linkName">联系人</th>
  535. </tr>
  536. </thead>
  537. </table>
  538. </div>
  539. @Html.Partial("Modals/_ModalFooter", "1")
  540. </div>
  541. </div>
  542. </div>
  543. </section>
  544. <section>
  545. @Html.Partial("Modals/Query/_Customer", "KeyWords-4")
  546. @Html.Partial("Modals/Query/_Product", "productId|productId_lockstore")
  547. @Html.Partial("Modals/Query/_Employee", "saleMan|KeyWords-7,saleManName|KeyWords-saleManName-7,saleManId")
  548. </section>
  549. }
  550. @Html.Partial("_searchInfoByProductNo")
  551. @section scripts
  552. {
  553. <script src="~/Content/Plugins/bootstrap-datetimepicker/js/bootstrap-datetimepicker.min.js"></script>
  554. <script src="~/Content/Plugins/bootstrap-datetimepicker/js/locales/bootstrap-datetimepicker.zh-CN.js"></script>
  555. <script src="~/Content/Plugins/bootstrap-table-fixd-columns/bootstrap-table-fixed-columns.js"></script>
  556. <script src="http://apps.bdimg.com/libs/jqueryui/1.10.4/jquery-ui.min.js"></script>
  557. <script src="~/Views/OrderInfo/js/OrderStatusMg.js?v=1.1"></script>
  558. @*<script src="~/Views/OrderInfo/js/OrderMg.js"></script>*@
  559. <script type="text/javascript">
  560. var customerNo;
  561. var datePickerOpt = {
  562. language: 'zh-CN',
  563. format: "yyyy-mm-dd",
  564. todayBtn: true,
  565. autoclose: true,
  566. startView: 2,
  567. minView: 2,
  568. maxView: 4
  569. //showSecond: true,
  570. //showHours: true,
  571. //minuteStep: 10
  572. };
  573. $(function() {
  574. //show完毕前执行
  575. $("#KeyWords-2").datetimepicker(datePickerOpt).on('show',
  576. function(event) {
  577. event.preventDefault();
  578. event.stopPropagation();
  579. }).on('hide',
  580. function(event) {
  581. event.preventDefault();
  582. event.stopPropagation();
  583. });
  584. $("#KeyWords-3").datetimepicker(datePickerOpt).on('show',
  585. function(event) {
  586. event.preventDefault();
  587. event.stopPropagation();
  588. }).on('hide',
  589. function(event) {
  590. event.preventDefault();
  591. event.stopPropagation();
  592. });
  593. $("#newSendDate").datetimepicker(datePickerOpt).on('show',
  594. function(event) {
  595. event.preventDefault();
  596. event.stopPropagation();
  597. }).on('hide',
  598. function(event) {
  599. event.preventDefault();
  600. event.stopPropagation();
  601. });
  602. LoadTable();
  603. var funs = window.funs || { none: function() { console.log("No type"); } };
  604. $.extend(funs, { btnAudit: function(url) { BtnAudit(url); } });
  605. funs["btnPrint"] = function(url) {
  606. BtnPrint(url);
  607. }
  608. funs["btnQuery"] = function(url) {
  609. BtnShow(url);
  610. }
  611. //$(".sendQuantity").on('change',
  612. // function() {
  613. // var quantity = Number($(this).val());
  614. // var max = Number($(this).data("maxquantity"));
  615. // if (quantity > max) {
  616. // $(this).val(max);
  617. // }
  618. // });
  619. $(".modal-dialog").draggable();
  620. $(".accordion-toggle").on('click',
  621. function() {
  622. $(".accordion-toggle i").toggleClass("down-direction");
  623. });
  624. });
  625. function BtnPrint(url) {
  626. var rows = config.table.bootstrapTable("getSelections");
  627. if (rows.length === 1) {
  628. window.open("@Url.Action("OrderPrint")/" + rows[0].id, "_blank");
  629. } else
  630. abp.message.warn(abp.localization.localize("ChooseOneToOp"));
  631. }
  632. function BtnShow(url) {
  633. var rows = config.table.bootstrapTable("getSelections");
  634. if (rows.length === 1) {
  635. window.open("@Url.Action("OrderDetail")/" + rows[0].id, "_blank");
  636. } else
  637. abp.message.warn(abp.localization.localize("ChooseOneToOp"));
  638. }
  639. function OnLoadSuccess() {
  640. $(".bs-checkbox").find("input").addClass("filled-in").after("<label></label>");
  641. _isSearching = false;
  642. abp.ui.clearBusy();
  643. setTimeout(function() {
  644. var alldata = $("#table").bootstrapTable('getData');
  645. console.log(alldata);
  646. if (alldata.length > 0) {
  647. console.log(alldata);
  648. $("#table").bootstrapTable('check', 0);
  649. } else {
  650. $("#orderItemDiv").css("display", "none");
  651. }
  652. },
  653. 500);
  654. }
  655. function BtnAudit(url) {
  656. var rows = $("#table").bootstrapTable("getSelections");
  657. if (rows.length === 1) {
  658. abp.message.confirm("确认审核通过?",
  659. "订单审核",
  660. function() {
  661. if (rows[0].orderStatusId !== 2) {
  662. abp.message.warn("非新建的订单,无法进行审核!");
  663. return;
  664. }
  665. SaveAjax({
  666. url: url,
  667. dataType: "json",
  668. data: { id: rows[0].id },
  669. isAlert: false,
  670. isValidate: false,
  671. success: function(res) {
  672. if (res) {
  673. $("#table").bootstrapTable("updateCellById",
  674. { id: rows[0].id, field: "orderStatusId", value: 3 });
  675. RefreshOrderItemTable(rows[0].id, rows[0].orderStatusId, rows[0].saleType);
  676. }
  677. }
  678. });
  679. });
  680. } else
  681. abp.message.warn(abp.localization.localize("ChooseOneToOp"));
  682. }
  683. function OnCheck(row, $element) {
  684. RefreshOrderItemTable(row.id, row.orderStatusId, row.saleType);
  685. $("#orderHeaderNo").html(row.id);
  686. $("#stockNo").html(row.stockNo);
  687. //$("#isAllSend")
  688. customerNo = row.customerId;
  689. console.log(customerNo);
  690. }
  691. function OnUnCheck(row, $element) {
  692. $("#table").bootstrapTable('resetView');
  693. $orderItemDiv.css("display", "none");
  694. customerNo = "";
  695. $("#table").bootstrapTable('resetView', { height: 800 });
  696. }
  697. function OrderStatusFormatter(v, r) { //danger
  698. if (r.orderStatusId === 2) {
  699. return '<span class="label label-success">新建</span>';
  700. } else if (r.orderStatusId === 3) {
  701. return '<span class="label label-danger">已审核</span>';
  702. } else if (r.orderStatusId === 12) {
  703. return '<span class="label label-primary">完成</span>';
  704. }
  705. return v;
  706. }
  707. //item
  708. var $tableOrderItem = $("#tableOrderItem");
  709. var $orderItemDiv;
  710. function RefreshOrderItemTable(orderNo, orderStatusId, saleType) {
  711. $orderItemDiv = $("#orderItemDiv");
  712. if (orderNo) {
  713. $("#table").bootstrapTable('resetView', { height: 300 });
  714. $orderItemDiv.css("display", "block");
  715. SaveAjax({
  716. url: window.appUrl + "OrderItems/GetOrderItemsByOrderNo?pcOrderNo=" + orderNo,
  717. dataType: "json",
  718. isAlert: false,
  719. isValidate: false,
  720. success: function(res) {
  721. console.log(res);
  722. if (res && res.orderItems.length > 0) {
  723. if (res.isAllSend) {
  724. $('#isAllSend').html("完成");
  725. } else {
  726. $('#isAllSend').html("未完成");
  727. }
  728. $tableOrderItem.bootstrapTable("destroy");
  729. $tableOrderItem.bootstrapTable({
  730. data: res.orderItems,
  731. onPostBody: OnPostBody,
  732. onAll: OnAllItem
  733. });
  734. if (orderStatusId === 2) {
  735. $tableOrderItem.bootstrapTable("hideColumn", "operatorAction");
  736. } else {
  737. $tableOrderItem.bootstrapTable("showColumn", "operatorAction");
  738. }
  739. if (saleType === 2) {
  740. $tableOrderItem.bootstrapTable("hideColumn", "afterTaxPrice");
  741. $tableOrderItem.bootstrapTable("hideColumn", "afterTaxTotalPrice");
  742. }
  743. $tableOrderItem.bootstrapTable('resetView');
  744. $(".bs-checkbox").find("input").addClass("filled-in").after("<label></label");
  745. $("#tableOrderItem thead th.bs-checkbox ").off("click.checkOnTable").on(
  746. "click.checkOnTable",
  747. function() {
  748. $(this).find("input").click();
  749. });
  750. } else {
  751. $orderItemDiv.css("display", "none");
  752. $tableOrderItem.bootstrapTable("destroy");
  753. $tableOrderItem.bootstrapTable({ data: "", onPostBody: OnPostBody });
  754. $("#table").bootstrapTable('resetView', { height: 800 });
  755. }
  756. }
  757. });
  758. } else {
  759. $orderItemDiv.css("display", "none");
  760. $tableOrderItem.bootstrapTable("destroy");
  761. $tableOrderItem.bootstrapTable({ data: "", onPostBody: OnPostBody });
  762. $("#table").bootstrapTable('resetView', { height: 800 });
  763. }
  764. }
  765. function OnAllItem() {
  766. $("#BtnChangeOrderItemStatus,#BtnChangeOrderItemStoreCompleteStatus,#BtnLockStore")
  767. .prop('disabled', $tableOrderItem.bootstrapTable('getSelections').length < 1);
  768. }
  769. </script>
  770. <script>
  771. function Submit_query_Product_modal(row) {
  772. row = row || $query_Product_modal_table.bootstrapTable("getSelections")[0];
  773. if (row) {
  774. var productNo = row.id;
  775. //当前打开的模态框是锁定库存记录的
  776. if ($("#productId_lockstore").val()) {
  777. $("#productId_lockstore").val(productNo)
  778. quantity_lockstore = $("#quantity_lockstore_key").val()
  779. customerId_lockstore = $("#customerId_lockstore_key").val()
  780. reloadLockStoreTable(productNo, quantity_lockstore, customerId_lockstore)
  781. } else {
  782. $("#productId").val(productNo);
  783. reloadSendTable(productNo);
  784. }
  785. } else {
  786. abp.message.warn(abp.localization.localize("ChooseOneToOp"));
  787. }
  788. $("#query_Product_modal").modal('hide');
  789. }
  790. function reloadSendTable(productNo) {
  791. var $tbody = $(".table.table-striped.fahuo > tbody");
  792. $tbody.find("tr:not(:first)").remove();
  793. var customerId = $("#table").bootstrapTable("getSelections")[0].customerId;
  794. SaveAjax({
  795. url: window.appUrl + "Query/QueryStoreFilter?productNo=" + productNo + '&customerId=' + customerId,
  796. isAlert: false,
  797. isValidate: false,
  798. success: function(res) {
  799. //console.log(res);
  800. if (res && res.length > 0) {
  801. res.forEach(function(r) {
  802. var sTr = '<tr>';
  803. sTr += '<td class="currentProductStoreHouseNo" style="display:none;">' +
  804. r.currentProductStoreHouseNo +
  805. '</td>';
  806. sTr += '<td class="productionOrderNo">' + r.productionOrderNo + '</td>';
  807. sTr += '<td class="storeLocationNo">' + r.storeLocationNo + '</td>';
  808. var isCanUser = formatNum(Number(r.quantity), Number(r.freezeQuantity), 3);
  809. sTr += '<td>' + isCanUser + '</td>';
  810. sTr +=
  811. '<td style="position:relative"><input type="text" name="SendQuantity" class="form-control number sendQuantity form-input-send" min="0" max="' +
  812. isCanUser +
  813. '"/></td>';
  814. sTr +=
  815. '<td style="position:relative"><input type="text" name="AvgSendQuantity" class="form-control number avgQuantity form-input-send" min="0"/></td>';
  816. sTr += '</tr>';
  817. $tbody.append(sTr);
  818. });
  819. }
  820. }
  821. });
  822. SaveAjax({
  823. url: window.appUrl +
  824. "OrderItems/GetCurrentProductLock?productNo=" +
  825. productNo +
  826. '&orderNo=' +
  827. $("#orderHeaderNo").text(),
  828. isAlert: false,
  829. isValidate: false,
  830. success: function(res) {
  831. if (res) {
  832. $("#IsLockQuantity").html(res.quantity);
  833. }
  834. }
  835. });
  836. //accordion-inner
  837. $('#modalSendOrder .accordion-inner').html('');
  838. SaveAjax({
  839. url: window.appUrl +
  840. "OrderItems/GetSendDateWarns?orderItemId=" +
  841. $("#orderItemNo_ForSend").val(),
  842. isAlert: false,
  843. isValidate: false,
  844. success: function(res) {
  845. var rendInfo = '';
  846. if (res && res.length > 0) {
  847. res.forEach(function(v, i) {
  848. if (v.sendState !== 1) {
  849. rendInfo += `<div class="tool-radio"><input name="sendDateItemCheck" type="radio" checked="${i === 0 ? 'checked' : ''}" id="sendDateItemCheck${i}" class="activeStatus" value="${v.id}" /><label for="sendDateItemCheck${i}" style="color: #000;">日期:${DateFormatter(v.planDate)}(${v.planQuantity} 千件)</label></div>`;
  850. }
  851. });
  852. $('#modalSendOrder .accordion-inner').append(rendInfo);
  853. $('#modalSendOrder .tool-radio input[type="radio"]').on('click',
  854. function(e) {
  855. var $that = $(e.target);
  856. $that.attr('checked', 'checked');
  857. });
  858. $("#modalSendOrder .accordion").show();
  859. }
  860. if (!rendInfo) {
  861. $("#modalSendOrder .accordion").hide();
  862. }
  863. }
  864. });
  865. }
  866. function f_SendOrderItem(id, quantity, isSendQuantity, productNo, customerId) {
  867. console.log("customerId", customerId)
  868. var showSendModal = function () {
  869. $("#productId").val(productNo);
  870. $("#orderItemNo_ForSend").val(id);
  871. if (!isSendQuantity || !(isSendQuantity > 0)) {
  872. isSendQuantity = 0;
  873. }
  874. $("#IsSendQuantity").html('' + isSendQuantity + '/' + quantity);
  875. var totalQuantity = Number(quantity);
  876. isSendQuantity = Number(isSendQuantity);
  877. var canSendQuantity = formatNum(totalQuantity, isSendQuantity, 3);
  878. $("#canSendQuantity").val(canSendQuantity);
  879. $("#isSendQuantity").val(isSendQuantity);
  880. $("#totalQuantity").val(totalQuantity);
  881. reloadSendTable(productNo);
  882. $("#modalSendOrder").modal("show");
  883. }
  884. SaveAjax({
  885. url: window.appUrl +
  886. "OrderBookStore/CheckExistLockingStore?id=" +id,
  887. isAlert: false,
  888. isValidate: false,
  889. success: function (res) {
  890. //先检查是否存在锁定库存的记录,存在需要先发锁定的库存
  891. if (res) {
  892. abp.message.warn("订单存在锁定的库存记录,需要先发锁定的库存!");
  893. $("#productId_lockstore").val(productNo);
  894. $("#quantity_lockstore_key").val(quantity);
  895. $("#orderItemId_lockstore_key").val(id);
  896. $("#customerId_lockstore_key").val(customerId);
  897. renderLockedStoreTable(id)
  898. reloadLockStoreTable(productNo, quantity, customerId)
  899. $("#modalLockStore").modal("show")
  900. } else {
  901. $("#productId_lockstore").val('') //清空锁定库存模态框Id
  902. showSendModal()
  903. }
  904. }
  905. })
  906. }
  907. function SendOrderAction() {
  908. var orderItemId = $("#orderItemNo_ForSend").val();
  909. console.log("orderItemId" + orderItemId);
  910. var productId = $("#productId").val();
  911. var $tbody = $(".table.table-striped.fahuo > tbody");
  912. var trDatas = $tbody.find("tr:not(:first)");
  913. var sendAll = 0;
  914. var dataParam = {
  915. ProductNo: productId,
  916. CustomerNo: customerNo,
  917. SendItems: [],
  918. Id: orderItemId,
  919. SendAllQuantity: 0,
  920. SendDateWarnId: 0
  921. };
  922. if (trDatas) {
  923. for (var i = 0; i < trDatas.length; i++) {
  924. var sendItem = {};
  925. var sendQuantity = $(trDatas[i]).find(".sendQuantity").val();
  926. if (!sendQuantity || Number(sendQuantity) <= 0) {
  927. continue;
  928. }
  929. sendItem.SendQuantity = Number(sendQuantity);
  930. var avgQuantity = $(trDatas[i]).find(".avgQuantity").val();
  931. if (!avgQuantity || Number(avgQuantity) <= 0) {
  932. avgQuantity = sendQuantity;
  933. }
  934. sendItem.AvgQuantity = Number(avgQuantity);
  935. var currentProductStoreHouseNo = $(trDatas[i]).find(".currentProductStoreHouseNo").text();
  936. if (currentProductStoreHouseNo) {
  937. sendItem.CurrentProductStoreHouseNo = currentProductStoreHouseNo;;
  938. }
  939. var productionOrderNo = $(trDatas[i]).find(".productionOrderNo").text();
  940. if (productionOrderNo) {
  941. sendItem.ProductBatchNum = productionOrderNo;
  942. } else {
  943. sendItem.ProductBatchNum = "00000000000";
  944. }
  945. var storeLocationNo = $(trDatas[i]).find(".storeLocationNo").text();
  946. if (storeLocationNo) {
  947. sendItem.StoreLocationNo = storeLocationNo;
  948. }
  949. dataParam.SendItems.push(sendItem);
  950. sendAll += Number(sendQuantity);
  951. }
  952. }
  953. if (sendAll <= 0) {
  954. abp.message.warn("发货总量需要大于0千件!");
  955. return;
  956. }
  957. var canSendQuantity = Number($("#canSendQuantity").val());
  958. dataParam.SendAllQuantity = sendAll;
  959. dataParam.SendDateWarnId = $('#modalSendOrder .tool-radio input[name="sendDateItemCheck"]:checked').val();
  960. var save = function() {
  961. SaveAjax({
  962. url: window.appUrl + "OrderItems/SendOrderAction",
  963. //contentType: 'application/json',
  964. dataType: "json",
  965. form: $("#formSend"),
  966. data: dataParam,
  967. isAlert: false,
  968. isValidate: true,
  969. success: function(res) {
  970. if (res) {
  971. RefreshOrderItemTable(res.orderNo);
  972. $("#modalSendOrder").modal("hide");
  973. }
  974. }
  975. });
  976. }
  977. if (sendAll > canSendQuantity) {
  978. var isSendQuantity = $("#isSendQuantity").val(), totalQuantity = $("#totalQuantity").val();
  979. var temp = formatNum(Number(sendAll) + Number(isSendQuantity),
  980. Number(totalQuantity) + Number(totalQuantity * 0.05),
  981. 3);
  982. if (temp > 0) {
  983. abp.message.warn("发货总量已超出订单发货量5%,不能继续操作!");
  984. return;
  985. }
  986. abp.message.confirm("发货总量已超出订单发货量,是否要继续发货?",
  987. "确认发货",
  988. function(isConfirmed) {
  989. if (isConfirmed) {
  990. save();
  991. }
  992. });
  993. } else {
  994. save();
  995. }
  996. }
  997. var formatNum = function(f1, f2, digit) {
  998. //var m = Math.pow(10, digit);
  999. //return parseInt(f1*m-f2*m, 10) / m;
  1000. var z = f1 - f2;
  1001. return z.toFixed(digit);
  1002. }
  1003. function DateFormatter(v, r) {
  1004. var sendDate = new Date(v);
  1005. return '<span style="text-decoration:underline;" >' + sendDate.Format('yyyy-MM-dd') + '</span>';
  1006. }
  1007. function f_AuditOrderItem(id) {
  1008. abp.message.confirm("确认审核通过?",
  1009. "订单明细审核",
  1010. function() {
  1011. SaveAjax({
  1012. url: window.appUrl + "OrderItems/Audit",
  1013. dataType: "json",
  1014. data: { id: id },
  1015. isAlert: false,
  1016. isValidate: false,
  1017. success: function(res) {
  1018. if (res) {
  1019. RefreshOrderItemTable(res.orderNo);
  1020. }
  1021. }
  1022. });
  1023. });
  1024. }
  1025. function f_CloseOrderItem(id) {
  1026. SaveAjax({
  1027. url: window.appUrl + "OrderItems/End",
  1028. dataType: "json",
  1029. data: { id: id },
  1030. isAlert: false,
  1031. isValidate: false,
  1032. success: function(res) {
  1033. if (res) {
  1034. RefreshOrderItemTable(res.orderItem.orderNo);
  1035. //$("#table").bootstrapTable("refresh", { silent: true });
  1036. /*setTimeout(function() {
  1037. $("#table").bootstrapTable("checkBy", { field: "id", value: res.orderNo });//updateCellById
  1038. },
  1039. 500);*/
  1040. if (res.isAllEnd) {
  1041. $("#table").bootstrapTable("updateCellById",
  1042. {
  1043. id: res.orderItem.orderNo,
  1044. field: "orderStatusId",
  1045. value: '<span class="label label-primary">完成</span>'
  1046. });
  1047. $("#table").bootstrapTable("checkBy", { field: "id", value: res.orderItem.orderNo });
  1048. }
  1049. }
  1050. }
  1051. });
  1052. }
  1053. function f_ChangeOrderItemStatus() {
  1054. var rows = $tableOrderItem.bootstrapTable("getSelections");
  1055. if (rows.length > 0) {
  1056. if (rows[0].isLock === 'Y') {
  1057. abp.message.warn("订单已删除,不能变更明细!");
  1058. return;
  1059. }
  1060. $("#modalChangeStatus").modal("show");
  1061. } else {
  1062. abp.message.warn(abp.localization.localize("ChooseOneToOp"));
  1063. }
  1064. }
  1065. function f_ChangeOrderItemStoreCompleteStatus() {
  1066. var rows = $tableOrderItem.bootstrapTable("getSelections");
  1067. if (rows.length > 0) {
  1068. if (rows[0].isLock === 'Y') {
  1069. abp.message.warn("订单已删除,不能变更明细!");
  1070. return;
  1071. }
  1072. $("#modalCompleteStoreStatus").modal("show");
  1073. } else {
  1074. abp.message.warn(abp.localization.localize("ChooseOneToOp"));
  1075. }
  1076. }
  1077. function f_AuditNewOrderItems() {
  1078. var headRow = config.table.bootstrapTable("getSelections");
  1079. if (headRow[0].isLock === 'Y') {
  1080. abp.message.warn("订单已删除,不能审核明细!");
  1081. return;
  1082. }
  1083. if (headRow[0].orderStatusId === 2) {
  1084. abp.message.warn("订单未审核,不能审核明细!");
  1085. return;
  1086. }
  1087. var datas = $tableOrderItem.bootstrapTable("getData");
  1088. if (datas.length > 0) {
  1089. var newDataId = [];
  1090. datas.forEach(function(r) {
  1091. if (r.orderItemStatusId === 2) {
  1092. newDataId.push(r.id);
  1093. }
  1094. });
  1095. if (newDataId.length > 0) {
  1096. var nd = newDataId.join(',');
  1097. abp.message.confirm("确认审核通过全部新建订单?",
  1098. "订单明细审核",
  1099. function() {
  1100. SaveAjax({
  1101. url: window.appUrl + "OrderItems/AuditAllItems",
  1102. data: { Id: nd },
  1103. isAlert: false,
  1104. isValidate: false,
  1105. success: function(res) {
  1106. RefreshOrderItemTable(res[0].orderNo);
  1107. }
  1108. });
  1109. });
  1110. } else {
  1111. abp.message.warn("没有可审核的订单明细!");
  1112. }
  1113. } else {
  1114. abp.message.warn(abp.localization.localize("ChooseOneToOp"));
  1115. }
  1116. }
  1117. function ChangeOrderItemStatus() {
  1118. var rows = $tableOrderItem.bootstrapTable("getSelections");
  1119. if (rows.length > 0) {
  1120. var ids = "";
  1121. rows.forEach(function(r) {
  1122. ids += "," + r.id;
  1123. });
  1124. ids = ids.substr(1);
  1125. abp.message.confirm("确认变更选中明细的状态?",
  1126. "订单明细状态变更",
  1127. function() {
  1128. SaveAjax({
  1129. url: window.appUrl + "OrderItems/ChangeOrderItemStatusOnHeader",
  1130. dataType: "json",
  1131. data: { id: ids, orderItemStatusId: $("#orderItemStatusId").val() },
  1132. isAlert: false,
  1133. isValidate: false,
  1134. success: function(res) {
  1135. if (res) {
  1136. RefreshOrderItemTable(res.orderItems[0].orderNo);
  1137. if (res.isAllEnd) {
  1138. $("#table").bootstrapTable("updateCellById",
  1139. {
  1140. id: res.orderItems[0].orderNo,
  1141. field: "orderStatusId",
  1142. value: '<span class="label label-primary">完成</span>'
  1143. });
  1144. $("#table").bootstrapTable("checkBy",
  1145. { field: "id", value: res.orderItems[0].orderNo });
  1146. }
  1147. $("#modalChangeStatus").modal("hide");
  1148. }
  1149. }
  1150. });
  1151. });
  1152. } else {
  1153. abp.message.warn(abp.localization.localize("ChooseOneToOp"));
  1154. }
  1155. }
  1156. function ChangeCompleteStoreStatus() {
  1157. var rows = $tableOrderItem.bootstrapTable("getSelections");
  1158. if (rows.length > 0) {
  1159. var ids = "";
  1160. rows.forEach(function(r) {
  1161. ids += "," + r.id;
  1162. });
  1163. ids = ids.substr(1);
  1164. abp.message.confirm("确认变更选中明细的到货状态?",
  1165. "订单明细到货状态变更",
  1166. function() {
  1167. SaveAjax({
  1168. url: window.appUrl + "OrderItems/ChangeOrderItemCompleteStoreStatus",
  1169. dataType: "json",
  1170. data: { id: ids, orderItemStoreCompleteState: $("#storeCompleteStateId").val() },
  1171. isAlert: false,
  1172. isValidate: false,
  1173. success: function(res) {
  1174. if (res) {
  1175. RefreshOrderItemTable(res.orderItems[0].orderNo);
  1176. $("#modalCompleteStoreStatus").modal("hide");
  1177. }
  1178. }
  1179. });
  1180. });
  1181. } else {
  1182. abp.message.warn(abp.localization.localize("ChooseOneToOp"));
  1183. }
  1184. }
  1185. function ActionsItemFormatter(v, r) {
  1186. var str = "";
  1187. console.log(r)
  1188. if (r.orderItemStatusId === 15) {
  1189. str = '<span class="table-action" onclick="f_SendOrderItem(\'' +
  1190. r.id +
  1191. '\',\'' +
  1192. r.quantity +
  1193. '\',\'' +
  1194. r.isSendQuantity +
  1195. '\',\'' +
  1196. r.productNo +
  1197. '\',\'' +
  1198. r.customerId +
  1199. '\')"><i class="iconfont icon-right"></i>发货</span>';
  1200. } else if (r.orderItemStatusId === 9) {
  1201. str = '<span class="table-action" onclick="f_CloseOrderItem(\'' +
  1202. r.id +
  1203. '\')"><i class="iconfont icon-right"></i>结束</span>';
  1204. } else if (r.orderItemStatusId === 2) {
  1205. str = '<span class="table-action" onclick="f_AuditOrderItem(' +
  1206. r.id +
  1207. ')"><i class="iconfont icon-right"></i>完成审核</span>';
  1208. }
  1209. //else if (r.orderItemStatusId !== 15 && r.orderItemStatusId !== 9 && r.orderItemStatusId !== 11) {
  1210. // str = '<span class="table-action" onclick="f_AuditOrderItem(' +
  1211. // r.id +
  1212. // ')"><i class="iconfont icon-right"></i>完成审核</span>';
  1213. //}
  1214. return str;
  1215. }
  1216. function OrderItemStatusFormatter(v, r) {
  1217. if (r.orderItemStatusId === 15) {
  1218. return '<span class="label label-success">完成审核</span>';
  1219. } else if (r.orderItemStatusId === 9) {
  1220. return '<span class="label label-danger">发货</span>';
  1221. } else if (r.orderItemStatusId === 11) {
  1222. return '<span class="label label-primary">结束</span>';
  1223. } else if (r.orderItemStatusId === 2) {
  1224. return '<span class="label label-primary">新建</span>';
  1225. } else if (r.orderItemStatusId === 20) {
  1226. return '<span class="label label-primary">协商完成</span>';
  1227. }
  1228. return v;
  1229. }
  1230. function IsReportFormatter(v, r) {
  1231. var str = "";
  1232. if (v === "Y") {
  1233. str = '<span class="table-action">需要</span>';
  1234. } else if (v === "N") {
  1235. str = '<span class="table-action">不需要</span>';;
  1236. }
  1237. return str;
  1238. }
  1239. function SendDateFormatter(v, r) {
  1240. var dataNow = abp.clock.now();
  1241. var sendDate = new Date(v);
  1242. var s1 = dataNow.getTime(), s2 = sendDate.getTime();
  1243. var span = (s2 - s1) / 1000;
  1244. var dayspan = parseInt(span / (24 * 60 * 60));
  1245. if (dayspan < 0) {
  1246. return '<span style="text-decoration:underline;color:#ff0000" onclick="f_showChangeSendDate(' +
  1247. r.id +
  1248. ',\'' +
  1249. r.sendDate +
  1250. '\',' +
  1251. r.orderItemStatusId +
  1252. ')">' +
  1253. sendDate.Format('yyyy-MM-dd') +
  1254. '</span>';
  1255. }
  1256. if (dayspan > -1 && dayspan < 4) {
  1257. return '<span style="text-decoration:underline;color:#dd4b39" onclick="f_showChangeSendDate(' +
  1258. r.id +
  1259. ',\'' +
  1260. r.sendDate +
  1261. '\',' +
  1262. r.orderItemStatusId +
  1263. ')">' +
  1264. sendDate.Format('yyyy-MM-dd') +
  1265. '</span>';
  1266. }
  1267. return '<span style="text-decoration:underline;" onclick="f_showChangeSendDate(' +
  1268. r.id +
  1269. ',\'' +
  1270. r.sendDate +
  1271. '\',' +
  1272. r.orderItemStatusId +
  1273. ')">' +
  1274. sendDate.Format('yyyy-MM-dd') +
  1275. '</span>';
  1276. }
  1277. function f_showChangeSendDate(id, sendDate, s) {
  1278. if (s != @OrderItemStatusEnum.NewCreate.ToInt() && s != @OrderItemStatusEnum.Audited.ToInt()) {
  1279. abp.message.warn("已发货(或已结束),不能操作!");
  1280. return;
  1281. }
  1282. $("#orderItemNo3").val(id);
  1283. $("#oldSendDate").val(sendDate);
  1284. $("#newSendDate").val(sendDate);
  1285. $('#modalChangeSendDate form #btn_addWarnItem').remove();
  1286. $('#modalChangeSendDate form .MapperItem').remove();
  1287. $('#modalChangeSendDate form').append(` <div id="btn_addWarnItem" class="form-group-sm" style="margin-right: 15px;text-align: right"><button type="button" class="btn btn-sm btn-info" style="width:20%; background-color: #583d9c;border-color: #583d9c;" onclick="AddSendDateWarnItem()">增加分次发货提醒</button></div>`);
  1288. SaveAjax({
  1289. url: window.appUrl + "OrderItems/GetSendDateWarns?orderItemId=" + id,
  1290. //data: formUtil.Serialize(form),
  1291. modal: $("#modalChangeSendDate"),
  1292. dataType: "json",
  1293. isAlert: false,
  1294. isValidate: false,
  1295. success: function(res) {
  1296. if (res) {
  1297. res.forEach(function(v, i) {
  1298. AddSendDateWarnItem();
  1299. $('.MapperItem:eq(' + i + ') [name="id"]').val(v.id);
  1300. $('.MapperItem:eq(' + i + ') [name="planDate"]').val(v.planDate);
  1301. $('.MapperItem:eq(' + i + ') [name="planQuantity"]').val(v.planQuantity);
  1302. $('.MapperItem:eq(' + i + ') [name="remark"]').val(v.remark);
  1303. $('.MapperItem:eq(' + i + ') [name="planDate"]').prop('disabled', true);
  1304. $('.MapperItem:eq(' + i + ') [name="planQuantity"]').prop('readonly', true);
  1305. $('.MapperItem:eq(' + i + ') [name="remark"]').prop('readonly', true);
  1306. });
  1307. }
  1308. }
  1309. });
  1310. $("#modalChangeSendDate").modal("show");
  1311. }
  1312. function ChangeSendDate() {
  1313. //var form = $("#modalChangeSendDate").find("form");
  1314. var data = getSendDateItemFormData();
  1315. SaveAjax({
  1316. url: window.appUrl + "OrderItems/ChangeSendDate",
  1317. //data: formUtil.Serialize(form),
  1318. data: data,
  1319. modal: $("#modalChangeSendDate"),
  1320. dataType: "json",
  1321. isAlert: false,
  1322. isValidate: true,
  1323. success: function(res) {
  1324. if (res) {
  1325. RefreshOrderItemTable(res.orderNo);
  1326. $("#modalChangeSendDate").modal("hide");
  1327. }
  1328. }
  1329. });
  1330. }
  1331. //分批发货提醒 2023
  1332. function AddSendDateWarnItem() {
  1333. var str = ' <div class="MapperItem"><input class="form-control" name="id" type="hidden" value="0" >';
  1334. str += '<label class="iwb-label col-md-2 control-label iwb-label-required" for="planDate">送货日期</label>';
  1335. str += ' <div class="col-md-4">';
  1336. str +=
  1337. '<input class="form-control iwb-date" name="planDate" type="text" placeholder="请输入日期..." value="" style="width: 100%;">';
  1338. str += '</div>';
  1339. str += '<label class="iwb-label col-md-2 control-label iwb-label-required" for="planQuantity">数量(千件)</label>';
  1340. str += '<div class="col-md-4">';
  1341. str +=
  1342. '<input class="form-control" name="planQuantity" type="number" placeholder="请输入数量..." value="" style="width: 100%;">';
  1343. str += '</div>';
  1344. str +=
  1345. '<label class="iwb-label col-md-2 control-label " for="remark" style="margin-top:10px;">备注</label>';
  1346. str += '<div class="col-md-4">';
  1347. str +=
  1348. '<input class="form-control" name="remark" type="text" placeholder="请输入..." value="" style="width: 100%;margin-top:10px">';
  1349. str += '</div>';
  1350. str += ' <div class="col-md-6" style="text-align:center;">';
  1351. str +=
  1352. ' <button type="button" class="btn btn-sm btn-danger" style="width:90%;margin-top:10px; " onclick="DeleteSendDateItem(this)">删除</button>';
  1353. str += ' </div>';
  1354. str += '</div>';
  1355. $("#modalChangeSendDate form").append(str);
  1356. $('.MapperItem:last .iwb-date').iwbDate({ language: window.lang });
  1357. }
  1358. function DeleteSendDateItem(that) {
  1359. var $item = $(that).closest('.MapperItem');
  1360. var $id = $item.find('input[name="id"]');
  1361. if ($id.val() > 0) {
  1362. abp.message.confirm("确认删除发货提醒?",
  1363. "删除发货提醒",
  1364. function() {
  1365. SaveAjax({
  1366. url: window.appUrl + "OrderItems/DeleteSendDateWarns?sendDateWarnId=" + $id.val(),
  1367. dataType: "json",
  1368. isAlert: false,
  1369. isValidate: false,
  1370. success: function(res) {
  1371. $item.remove();
  1372. }
  1373. });
  1374. });
  1375. } else {
  1376. $item.remove();
  1377. }
  1378. }
  1379. function getSendDateItemFormData() {
  1380. var d = {
  1381. orderItemNo: $("#orderItemNo3").val(),
  1382. oldSendDate: $("#oldSendDate").val(),
  1383. newSendDate: $("#newSendDate").val(),
  1384. sendDateWarns: []
  1385. };
  1386. var items = $('.MapperItem');
  1387. for (var i = 0; i < items.length; i++) {
  1388. if (!$('.MapperItem:eq(' + i + ') [name="planDate"]').val()) {
  1389. continue;
  1390. }
  1391. d.sendDateWarns[i] = {
  1392. Id: $('.MapperItem:eq(' + i + ') [name="id"]').val(),
  1393. PlanDate: $('.MapperItem:eq(' + i + ') [name="planDate"]').val(),
  1394. PlanQuantity: $('.MapperItem:eq(' + i + ') [name="planQuantity"]').val(),
  1395. Remark: $('.MapperItem:eq(' + i + ') [name="remark"]').val()
  1396. }
  1397. }
  1398. return d;
  1399. }
  1400. //分批发货提醒 2023-end
  1401. function StoreCompleteStateFormatter(v, r) {
  1402. var str = "";
  1403. if (v === 0) {
  1404. str = '<span class="label label-danger">货物不齐全</span>';
  1405. } else if (v === 1) {
  1406. str = '<span class="label label-success">货物已齐</span>';;
  1407. } else if (v === 2) {
  1408. str = '<span class="label label-success">货物已齐,待改包</span>';;
  1409. } else if (v === 3) {
  1410. str = '<span class="label label-success">重新安排生产</span>';;
  1411. } else if (v === 4) {
  1412. str = '<span class="label label-success">返镀</span>';;
  1413. }
  1414. return str;
  1415. }
  1416. function PriceFormatter(v, r) {
  1417. var str = "0.00";
  1418. if (v && v > 0) {
  1419. v = (v * 10000) / 10000;
  1420. str = _formatAmount(v, 4);
  1421. }
  1422. str = '<span style="text-decoration:underline;color:red;" onclick="f_showChangePrice(' +
  1423. r.id +
  1424. ',' +
  1425. r.price +
  1426. ',' +
  1427. r.orderItemStatusId +
  1428. ')">' +
  1429. str +
  1430. ' ' +
  1431. r.currencyId +
  1432. '</span>';
  1433. return str;
  1434. }
  1435. function CurrencyPriceFormatter(v, r) {
  1436. var str = "0.00";
  1437. if (v && v > 0) {
  1438. v = (v * 10000) / 10000;
  1439. str = _formatAmount(v, 4);
  1440. }
  1441. str = '<span style="text-decoration:underline;color:red;">' +
  1442. str +
  1443. ' ' +
  1444. r.currencyId +
  1445. '</span>';
  1446. return str;
  1447. }
  1448. function TaxPriceFormatter(v, r) {
  1449. var str = "0.00";
  1450. if (v && v > 0) {
  1451. v = (v * 10000) / 10000;
  1452. str = _formatAmount(v, 4);
  1453. }
  1454. str = '<span style="text-decoration:underline;color:red;" onclick="f_showChangeAfterTaxPrice(' +
  1455. r.id +
  1456. ',' +
  1457. r.afterTaxPrice +
  1458. ',' +
  1459. r.orderItemStatusId +
  1460. ')">' +
  1461. str +
  1462. ' ' +
  1463. r.currencyId +
  1464. '</span>';
  1465. return str;
  1466. }
  1467. function f_showChangePrice(id, price, s) {
  1468. if (s != @OrderItemStatusEnum.NewCreate.ToInt() && s != @OrderItemStatusEnum.Audited.ToInt()) {
  1469. abp.message.warn("已发货(或已结束),不能操作!");
  1470. return;
  1471. }
  1472. $("#orderItemNo").val(id);
  1473. $("#oldPrice").val(price);
  1474. $("#newPrice").val("");
  1475. $("#modalChangePrice").modal("show");
  1476. }
  1477. function ChangePrice() {
  1478. var form = $("#modalChangePrice").find("form");
  1479. SaveAjax({
  1480. url: window.appUrl + "OrderItems/ChangePrice",
  1481. data: formUtil.Serialize(form),
  1482. modal: $("#modalChangePrice"),
  1483. dataType: "json",
  1484. isAlert: false,
  1485. isValidate: true,
  1486. success: function(res) {
  1487. if (res) {
  1488. RefreshOrderItemTable(res.orderNo);
  1489. $("#modalChangePrice").modal("hide");
  1490. }
  1491. }
  1492. });
  1493. }
  1494. function f_showChangeAfterTaxPrice(id, price, s) {
  1495. if (s != @OrderItemStatusEnum.NewCreate.ToInt() && s != @OrderItemStatusEnum.Audited.ToInt()) {
  1496. abp.message.warn("已发货(或已结束),不能操作!");
  1497. return;
  1498. }
  1499. $("#orderItemNo5").val(id);
  1500. if (price <= 0) {
  1501. price = 0;
  1502. }
  1503. $("#oldPrice2").val(price);
  1504. $("#newAfterTaxPrice").val("");
  1505. $("#modalChangeAfterTaxPrice").modal("show");
  1506. }
  1507. function ChangeAfterTaxPrice() {
  1508. var form = $("#modalChangeAfterTaxPrice").find("form");
  1509. SaveAjax({
  1510. url: window.appUrl + "OrderItems/ChangeAfterTaxPrice",
  1511. data: formUtil.Serialize(form),
  1512. modal: $("#modalChangeAfterTaxPrice"),
  1513. dataType: "json",
  1514. isAlert: false,
  1515. isValidate: true,
  1516. success: function(res) {
  1517. if (res) {
  1518. RefreshOrderItemTable(res.orderNo);
  1519. $("#modalChangeAfterTaxPrice").modal("hide");
  1520. }
  1521. }
  1522. });
  1523. }
  1524. function QuantityFormatter(v, r) {
  1525. var str = '<span style="text-decoration:underline;" onclick="f_showChangeQuantity(' +
  1526. r.id +
  1527. ',' +
  1528. r.quantity +
  1529. ',' +
  1530. r.orderItemStatusId +
  1531. ')">' +
  1532. v +
  1533. '</span>';
  1534. return str;
  1535. }
  1536. function SendItemFormatter(v,r){
  1537. var str = `<span style="text-decoration:underline;" onclick="f_showSendItem(${r.id})">${v?v:0}</span>`;//orderSendItemModal
  1538. return str;
  1539. }
  1540. function f_showChangeQuantity(id, quantity, s) {
  1541. if (s != @OrderItemStatusEnum.NewCreate.ToInt() && s != @OrderItemStatusEnum.Audited.ToInt()) {
  1542. abp.message.warn("已发货(或已结束),不能操作!");
  1543. return;
  1544. }
  1545. $("#orderItemNo2").val(id);
  1546. $("#oldQuantity").val(quantity);
  1547. $("#newQuantity").val("");
  1548. $("#modalChangeQuantity").modal("show");
  1549. }
  1550. function ChangeQuantity() {
  1551. var form = $("#modalChangeQuantity").find("form");
  1552. SaveAjax({
  1553. url: window.appUrl + "OrderItems/ChangeQuantity",
  1554. data: formUtil.Serialize(form),
  1555. modal: $("#modalChangeQuantity"),
  1556. dataType: "json",
  1557. isAlert: false,
  1558. isValidate: true,
  1559. success: function(res) {
  1560. if (res) {
  1561. RefreshOrderItemTable(res.orderNo);
  1562. $("#modalChangeQuantity").modal("hide");
  1563. }
  1564. }
  1565. });
  1566. }
  1567. function TotalPriceFormatter(v, r) {
  1568. var str = "0.00";
  1569. if (v && v > 0) {
  1570. v = (v * 10000) / 10000;
  1571. str = _formatAmount(v, 4);
  1572. }
  1573. str = '<span style="text-decoration:underline;">' + str + '' + r.currencyId + '</span>';
  1574. return str;
  1575. }
  1576. function AllTotalPriceFormatter(data) {
  1577. console.log(data);
  1578. var count = 0;
  1579. var currencyId = "CNY";
  1580. data.forEach(function(e) {
  1581. currencyId = e.currencyId;
  1582. count += e.totalPrice;
  1583. });
  1584. if (count && count > 0) {
  1585. count = (count * 10000) / 10000;
  1586. count = _formatAmount(count, 4);
  1587. }
  1588. return '<strong>' + count + ' ' + currencyId + '<strong>';
  1589. }
  1590. function AllAfterTaxTotalPriceFormatter(data) {
  1591. var count = 0;
  1592. var currencyId = "CNY";
  1593. data.forEach(function(e) {
  1594. currencyId = e.currencyId;
  1595. count += e.afterTaxTotalPrice;
  1596. });
  1597. if (count && count > 0) {
  1598. count = (count * 10000) / 10000;
  1599. count = _formatAmount(count, 4);
  1600. }
  1601. return '<strong>' + count + currencyId + '<strong>';
  1602. }
  1603. function EmergencyLevelFormatter(v, r) {
  1604. let result = '';
  1605. var name = $('#hid-emergencyLevel option[value="' + v + '"]').text();
  1606. if (v === 1) {
  1607. result += '<span class="label label-success">' + name + '</span>';
  1608. } else {
  1609. result += '<span class="label label-danger">' + name + '</span>';
  1610. }
  1611. result +=
  1612. `<span class="label label-success" style="text-decoration:underline;margin-left:2px;" onclick="showProductProcess(${r.id
  1613. })">生产进度</span>`;
  1614. result += `<span class="label label-success" style="text-decoration:underline;margin-left:2px;" onclick="showSelectProductDialog('${r.productNo}')">产品查询</span>`;
  1615. return result;
  1616. }
  1617. function IsLockFormatter(v, r) {
  1618. if (v === 'Y') {
  1619. return '<span class="label label-danger">已删除</span>';
  1620. } else {
  1621. return '<span class="label label-success">-</span>';
  1622. }
  1623. }
  1624. //function StoreHouseIdFormatter(v,r) {
  1625. // var name = $("#hide-StoreHouses option[value='" + v + "']").text();
  1626. // return '<span class="label label-primary">' + name + '</span>';
  1627. // }
  1628. </script>
  1629. <script>
  1630. //将数字转换成金额显示 n是小数点后位数
  1631. function toNumber(num, n) {
  1632. var re = String(num);
  1633. var dotfront = "";
  1634. var dotlast = "";
  1635. if (re.indexof('.') > -1) {
  1636. var sarr = re.spilt('.');
  1637. dotfront = sarr[0];
  1638. dotlast = sarr[1];
  1639. var dotlastlength = strlen(dotlast);
  1640. if (dotlastlength < n) {
  1641. for (var j = 0; j < n - dotlastlength; j++) {
  1642. dotlast += "0";
  1643. }
  1644. }
  1645. if (dotlastlength > n) {
  1646. dotlast = dotlast.substr(0, n);
  1647. }
  1648. } else {
  1649. dotfront = re;
  1650. for (var i = 0; i < n; i++) {
  1651. dotlast += "0";
  1652. }
  1653. }
  1654. num = dotfront + '.' + dotlast;
  1655. return num;
  1656. }
  1657. function _formatAmount(strData, n) {
  1658. var CurrencyAndAmountRegExp =
  1659. /^(\d{1,18})|(\d{1,18}\.)|(\d{1,17}\.\d{0,1})|(\d{1,16}\.\d{0,2})|(\.\d{1,2})$/;
  1660. var _result = CurrencyAndAmountRegExp.test(strData);
  1661. if (_result == false) {
  1662. return strData;
  1663. } // 一般来说最多就6位吧,当然如果有特殊需求可自行更改(`・∀・´)
  1664. n = n > 0 && n <= 6 ? n : 2;
  1665. var formatData = parseFloat((strData + '').replace(/[^\d\.-]/g, '')).toFixed(n) + '';
  1666. var l = formatData.split('.')[0].split('').reverse();
  1667. var r = formatData.split('.')[1];
  1668. var t = '';
  1669. for (i = 0; i < l.length; i++) {
  1670. t += l[i] + ((i + 1) % 3 == 0 && (i + 1) != l.length ? ',' : '');
  1671. }
  1672. return t.split('').reverse().join('') + '.' + r;
  1673. }
  1674. function strlen(str) {
  1675. var len = 0;
  1676. for (var i = 0; i < str.length; i++) {
  1677. var c = str.charCodeAt(i);
  1678. //单字节加1
  1679. if ((c >= 0x0001 && c <= 0x007e) || (0xff60 <= c && c <= 0xff9f)) {
  1680. len++;
  1681. } else {
  1682. len += 2;
  1683. }
  1684. }
  1685. return len;
  1686. }
  1687. </script>
  1688. }
  1689. <section style="display: none">
  1690. <select id="hid-type">
  1691. <option value=""></option>
  1692. </select>
  1693. @Html.DropDownList("hid-emergencyLevel", emergencyLevelList);
  1694. @*@Html.DropDownList("hide-StoreHouses", storeHouses)*@
  1695. </section>