OrderStatusMg.cshtml 76 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091929394959697989910010110210310410510610710810911011111211311411511611711811912012112212312412512612712812913013113213313413513613713813914014114214314414514614714814915015115215315415515615715815916016116216316416516616716816917017117217317417517617717817918018118218318418518618718818919019119219319419519619719819920020120220320420520620720820921021121221321421521621721821922022122222322422522622722822923023123223323423523623723823924024124224324424524624724824925025125225325425525625725825926026126226326426526626726826927027127227327427527627727827928028128228328428528628728828929029129229329429529629729829930030130230330430530630730830931031131231331431531631731831932032132232332432532632732832933033133233333433533633733833934034134234334434534634734834935035135235335435535635735835936036136236336436536636736836937037137237337437537637737837938038138238338438538638738838939039139239339439539639739839940040140240340440540640740840941041141241341441541641741841942042142242342442542642742842943043143243343443543643743843944044144244344444544644744844945045145245345445545645745845946046146246346446546646746846947047147247347447547647747847948048148248348448548648748848949049149249349449549649749849950050150250350450550650750850951051151251351451551651751851952052152252352452552652752852953053153253353453553653753853954054154254354454554654754854955055155255355455555655755855956056156256356456556656756856957057157257357457557657757857958058158258358458558658758858959059159259359459559659759859960060160260360460560660760860961061161261361461561661761861962062162262362462562662762862963063163263363463563663763863964064164264364464564664764864965065165265365465565665765865966066166266366466566666766866967067167267367467567667767867968068168268368468568668768868969069169269369469569669769869970070170270370470570670770870971071171271371471571671771871972072172272372472572672772872973073173273373473573673773873974074174274374474574674774874975075175275375475575675775875976076176276376476576676776876977077177277377477577677777877978078178278378478578678778878979079179279379479579679779879980080180280380480580680780880981081181281381481581681781881982082182282382482582682782882983083183283383483583683783883984084184284384484584684784884985085185285385485585685785885986086186286386486586686786886987087187287387487587687787887988088188288388488588688788888989089189289389489589689789889990090190290390490590690790890991091191291391491591691791891992092192292392492592692792892993093193293393493593693793893994094194294394494594694794894995095195295395495595695795895996096196296396496596696796896997097197297397497597697797897998098198298398498598698798898999099199299399499599699799899910001001100210031004100510061007100810091010101110121013101410151016101710181019102010211022102310241025102610271028102910301031103210331034103510361037103810391040104110421043104410451046104710481049105010511052105310541055105610571058105910601061106210631064106510661067106810691070107110721073107410751076107710781079108010811082108310841085108610871088108910901091109210931094109510961097109810991100110111021103110411051106110711081109111011111112111311141115111611171118111911201121112211231124112511261127112811291130113111321133113411351136113711381139114011411142114311441145114611471148114911501151115211531154115511561157115811591160116111621163116411651166116711681169117011711172117311741175117611771178117911801181118211831184118511861187118811891190119111921193119411951196119711981199120012011202120312041205120612071208120912101211121212131214121512161217121812191220122112221223122412251226122712281229123012311232123312341235123612371238123912401241124212431244124512461247124812491250125112521253125412551256125712581259126012611262126312641265126612671268126912701271127212731274127512761277127812791280128112821283128412851286128712881289129012911292129312941295129612971298129913001301130213031304130513061307130813091310131113121313131413151316131713181319132013211322132313241325132613271328132913301331133213331334133513361337133813391340134113421343134413451346134713481349135013511352135313541355135613571358135913601361136213631364136513661367136813691370137113721373137413751376137713781379138013811382138313841385138613871388138913901391139213931394139513961397139813991400140114021403140414051406140714081409141014111412141314141415141614171418141914201421142214231424142514261427142814291430143114321433143414351436143714381439144014411442144314441445144614471448144914501451145214531454145514561457145814591460146114621463146414651466146714681469147014711472147314741475147614771478147914801481148214831484148514861487148814891490149114921493149414951496149714981499150015011502150315041505150615071508150915101511151215131514151515161517151815191520152115221523152415251526152715281529153015311532153315341535153615371538153915401541154215431544154515461547154815491550155115521553155415551556155715581559156015611562156315641565156615671568156915701571157215731574157515761577157815791580158115821583158415851586158715881589159015911592159315941595159615971598159916001601160216031604160516061607160816091610161116121613161416151616161716181619162016211622162316241625162616271628162916301631163216331634163516361637163816391640164116421643164416451646164716481649165016511652165316541655165616571658165916601661166216631664166516661667166816691670167116721673167416751676167716781679168016811682168316841685168616871688168916901691169216931694169516961697169816991700170117021703170417051706170717081709171017111712171317141715171617171718171917201721172217231724172517261727172817291730173117321733173417351736173717381739174017411742174317441745174617471748174917501751175217531754175517561757175817591760176117621763176417651766176717681769177017711772177317741775177617771778177917801781178217831784178517861787178817891790179117921793179417951796179717981799180018011802180318041805180618071808180918101811181218131814181518161817181818191820182118221823182418251826182718281829183018311832183318341835183618371838183918401841184218431844184518461847184818491850
  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. };
  482. }
  483. @Html.Partial("Modals/_ModalBody", new ModalBodyViewModel(inputs6))
  484. @Html.Partial("Modals/_SwModalFooter", new ModelFooterModel("modalChangeStatus", "ChangeCompleteStoreStatus()"))
  485. </div>
  486. </div>
  487. </div>
  488. <div class="modal fade" id="showProductProcess" role="dialog" tabindex="-1" aria-labelledby="ModalLabel" aria-hidden="true">
  489. <div class="modal-dialog modal-dialog-centered" role="document" style="width: 600px">
  490. <div class="modal-content">
  491. @Html.Partial("Modals/_ModalHeader", new ModalHeaderViewModel("生产进度", ""))
  492. <div class="timeline-small">
  493. <div class="timeline-small-body">
  494. <ul>
  495. </ul>
  496. </div>
  497. </div>
  498. @Html.Partial("Modals/_ModalFooter", "1")
  499. </div>
  500. </div>
  501. </div>
  502. <!--显示订单明细已发货记录-->
  503. <div class="modal fade" id="orderSendItemModal" role="dialog" tabindex="-1" >
  504. <div class="modal-dialog modal-dialog-centered" role="document" style="width: 980px">
  505. <div class="modal-content">
  506. @Html.Partial("Modals/_ModalHeader", new ModalHeaderViewModel("订单明细发货记录", ""))
  507. <div class="table-box mr-4 iwb-bootstrap-table">
  508. <table id="sendItemTable" data-striped="true" data-click-to-select="false" data-height="300"
  509. data-single-select="false">
  510. <thead>
  511. <tr class="row">
  512. @*<th data-field="state" data-checkbox="true"></th>*@
  513. <th data-align="center" data-field="stockNo">客户订单号 </th>
  514. <th data-align="center" data-field="sendQuantity">数量</th>
  515. <th data-align="center" data-field="orderUnitName">单位</th>
  516. @*<th data-align="center" data-field="customerId">客户编号</th>*@
  517. <th data-align="center" data-field="productNo">产品编号</th>
  518. <th data-align="center" data-field="productName">产品名称</th>
  519. <th data-align="center" data-field="model">规格</th>
  520. @*<th data-align="center" data-field="surfaceColor">表色</th>
  521. <th data-align="center" data-field="rigidity">硬度</th>*@
  522. <th data-align="center" data-field="orderDate">订单日期</th>
  523. <th data-align="center" data-field="sendDate" data-formatter="DateFormatter">送货日期</th>
  524. <th data-align="center" data-field="linkName">联系人</th>
  525. </tr>
  526. </thead>
  527. </table>
  528. </div>
  529. @Html.Partial("Modals/_ModalFooter", "1")
  530. </div>
  531. </div>
  532. </div>
  533. </section>
  534. <section>
  535. @Html.Partial("Modals/Query/_Customer", "KeyWords-4")
  536. @Html.Partial("Modals/Query/_Product", "productId|productId_lockstore")
  537. @Html.Partial("Modals/Query/_Employee", "saleMan|KeyWords-7,saleManName|KeyWords-saleManName-7,saleManId")
  538. </section>
  539. }
  540. @Html.Partial("_searchInfoByProductNo")
  541. @section scripts
  542. {
  543. <script src="~/Content/Plugins/bootstrap-datetimepicker/js/bootstrap-datetimepicker.min.js"></script>
  544. <script src="~/Content/Plugins/bootstrap-datetimepicker/js/locales/bootstrap-datetimepicker.zh-CN.js"></script>
  545. <script src="~/Content/Plugins/bootstrap-table-fixd-columns/bootstrap-table-fixed-columns.js"></script>
  546. <script src="http://apps.bdimg.com/libs/jqueryui/1.10.4/jquery-ui.min.js"></script>
  547. <script src="~/Views/OrderInfo/js/OrderStatusMg.js?v=1.1"></script>
  548. @*<script src="~/Views/OrderInfo/js/OrderMg.js"></script>*@
  549. <script type="text/javascript">
  550. var customerNo;
  551. var datePickerOpt = {
  552. language: 'zh-CN',
  553. format: "yyyy-mm-dd",
  554. todayBtn: true,
  555. autoclose: true,
  556. startView: 2,
  557. minView: 2,
  558. maxView: 4
  559. //showSecond: true,
  560. //showHours: true,
  561. //minuteStep: 10
  562. };
  563. $(function() {
  564. //show完毕前执行
  565. $("#KeyWords-2").datetimepicker(datePickerOpt).on('show',
  566. function(event) {
  567. event.preventDefault();
  568. event.stopPropagation();
  569. }).on('hide',
  570. function(event) {
  571. event.preventDefault();
  572. event.stopPropagation();
  573. });
  574. $("#KeyWords-3").datetimepicker(datePickerOpt).on('show',
  575. function(event) {
  576. event.preventDefault();
  577. event.stopPropagation();
  578. }).on('hide',
  579. function(event) {
  580. event.preventDefault();
  581. event.stopPropagation();
  582. });
  583. $("#newSendDate").datetimepicker(datePickerOpt).on('show',
  584. function(event) {
  585. event.preventDefault();
  586. event.stopPropagation();
  587. }).on('hide',
  588. function(event) {
  589. event.preventDefault();
  590. event.stopPropagation();
  591. });
  592. LoadTable();
  593. var funs = window.funs || { none: function() { console.log("No type"); } };
  594. $.extend(funs, { btnAudit: function(url) { BtnAudit(url); } });
  595. funs["btnPrint"] = function(url) {
  596. BtnPrint(url);
  597. }
  598. funs["btnQuery"] = function(url) {
  599. BtnShow(url);
  600. }
  601. //$(".sendQuantity").on('change',
  602. // function() {
  603. // var quantity = Number($(this).val());
  604. // var max = Number($(this).data("maxquantity"));
  605. // if (quantity > max) {
  606. // $(this).val(max);
  607. // }
  608. // });
  609. $(".modal-dialog").draggable();
  610. $(".accordion-toggle").on('click',
  611. function() {
  612. $(".accordion-toggle i").toggleClass("down-direction");
  613. });
  614. });
  615. function BtnPrint(url) {
  616. var rows = config.table.bootstrapTable("getSelections");
  617. if (rows.length === 1) {
  618. window.open("@Url.Action("OrderPrint")/" + rows[0].id, "_blank");
  619. } else
  620. abp.message.warn(abp.localization.localize("ChooseOneToOp"));
  621. }
  622. function BtnShow(url) {
  623. var rows = config.table.bootstrapTable("getSelections");
  624. if (rows.length === 1) {
  625. window.open("@Url.Action("OrderDetail")/" + rows[0].id, "_blank");
  626. } else
  627. abp.message.warn(abp.localization.localize("ChooseOneToOp"));
  628. }
  629. function OnLoadSuccess() {
  630. $(".bs-checkbox").find("input").addClass("filled-in").after("<label></label>");
  631. _isSearching = false;
  632. abp.ui.clearBusy();
  633. setTimeout(function() {
  634. var alldata = $("#table").bootstrapTable('getData');
  635. console.log(alldata);
  636. if (alldata.length > 0) {
  637. console.log(alldata);
  638. $("#table").bootstrapTable('check', 0);
  639. } else {
  640. $("#orderItemDiv").css("display", "none");
  641. }
  642. },
  643. 500);
  644. }
  645. function BtnAudit(url) {
  646. var rows = $("#table").bootstrapTable("getSelections");
  647. if (rows.length === 1) {
  648. abp.message.confirm("确认审核通过?",
  649. "订单审核",
  650. function() {
  651. if (rows[0].orderStatusId !== 2) {
  652. abp.message.warn("非新建的订单,无法进行审核!");
  653. return;
  654. }
  655. SaveAjax({
  656. url: url,
  657. dataType: "json",
  658. data: { id: rows[0].id },
  659. isAlert: false,
  660. isValidate: false,
  661. success: function(res) {
  662. if (res) {
  663. $("#table").bootstrapTable("updateCellById",
  664. { id: rows[0].id, field: "orderStatusId", value: 3 });
  665. RefreshOrderItemTable(rows[0].id, rows[0].orderStatusId, rows[0].saleType);
  666. }
  667. }
  668. });
  669. });
  670. } else
  671. abp.message.warn(abp.localization.localize("ChooseOneToOp"));
  672. }
  673. function OnCheck(row, $element) {
  674. RefreshOrderItemTable(row.id, row.orderStatusId, row.saleType);
  675. $("#orderHeaderNo").html(row.id);
  676. $("#stockNo").html(row.stockNo);
  677. //$("#isAllSend")
  678. customerNo = row.customerId;
  679. console.log(customerNo);
  680. }
  681. function OnUnCheck(row, $element) {
  682. $("#table").bootstrapTable('resetView');
  683. $orderItemDiv.css("display", "none");
  684. customerNo = "";
  685. $("#table").bootstrapTable('resetView', { height: 800 });
  686. }
  687. function OrderStatusFormatter(v, r) { //danger
  688. if (r.orderStatusId === 2) {
  689. return '<span class="label label-success">新建</span>';
  690. } else if (r.orderStatusId === 3) {
  691. return '<span class="label label-danger">已审核</span>';
  692. } else if (r.orderStatusId === 12) {
  693. return '<span class="label label-primary">完成</span>';
  694. }
  695. return v;
  696. }
  697. //item
  698. var $tableOrderItem = $("#tableOrderItem");
  699. var $orderItemDiv;
  700. function RefreshOrderItemTable(orderNo, orderStatusId, saleType) {
  701. $orderItemDiv = $("#orderItemDiv");
  702. if (orderNo) {
  703. $("#table").bootstrapTable('resetView', { height: 300 });
  704. $orderItemDiv.css("display", "block");
  705. SaveAjax({
  706. url: window.appUrl + "OrderItems/GetOrderItemsByOrderNo?pcOrderNo=" + orderNo,
  707. dataType: "json",
  708. isAlert: false,
  709. isValidate: false,
  710. success: function(res) {
  711. console.log(res);
  712. if (res && res.orderItems.length > 0) {
  713. if (res.isAllSend) {
  714. $('#isAllSend').html("完成");
  715. } else {
  716. $('#isAllSend').html("未完成");
  717. }
  718. $tableOrderItem.bootstrapTable("destroy");
  719. $tableOrderItem.bootstrapTable({
  720. data: res.orderItems,
  721. onPostBody: OnPostBody,
  722. onAll: OnAllItem
  723. });
  724. if (orderStatusId === 2) {
  725. $tableOrderItem.bootstrapTable("hideColumn", "operatorAction");
  726. } else {
  727. $tableOrderItem.bootstrapTable("showColumn", "operatorAction");
  728. }
  729. if (saleType === 2) {
  730. $tableOrderItem.bootstrapTable("hideColumn", "afterTaxPrice");
  731. $tableOrderItem.bootstrapTable("hideColumn", "afterTaxTotalPrice");
  732. }
  733. $tableOrderItem.bootstrapTable('resetView');
  734. $(".bs-checkbox").find("input").addClass("filled-in").after("<label></label");
  735. $("#tableOrderItem thead th.bs-checkbox ").off("click.checkOnTable").on(
  736. "click.checkOnTable",
  737. function() {
  738. $(this).find("input").click();
  739. });
  740. } else {
  741. $orderItemDiv.css("display", "none");
  742. $tableOrderItem.bootstrapTable("destroy");
  743. $tableOrderItem.bootstrapTable({ data: "", onPostBody: OnPostBody });
  744. $("#table").bootstrapTable('resetView', { height: 800 });
  745. }
  746. }
  747. });
  748. } else {
  749. $orderItemDiv.css("display", "none");
  750. $tableOrderItem.bootstrapTable("destroy");
  751. $tableOrderItem.bootstrapTable({ data: "", onPostBody: OnPostBody });
  752. $("#table").bootstrapTable('resetView', { height: 800 });
  753. }
  754. }
  755. function OnAllItem() {
  756. $("#BtnChangeOrderItemStatus,#BtnChangeOrderItemStoreCompleteStatus,#BtnLockStore")
  757. .prop('disabled', $tableOrderItem.bootstrapTable('getSelections').length < 1);
  758. }
  759. </script>
  760. <script>
  761. function Submit_query_Product_modal(row) {
  762. row = row || $query_Product_modal_table.bootstrapTable("getSelections")[0];
  763. if (row) {
  764. var productNo = row.id;
  765. //当前打开的模态框是锁定库存记录的
  766. if ($("#productId_lockstore").val()) {
  767. $("#productId_lockstore").val(productNo)
  768. quantity_lockstore = $("#quantity_lockstore_key").val()
  769. customerId_lockstore = $("#customerId_lockstore_key").val()
  770. reloadLockStoreTable(productNo, quantity_lockstore, customerId_lockstore)
  771. } else {
  772. $("#productId").val(productNo);
  773. reloadSendTable(productNo);
  774. }
  775. } else {
  776. abp.message.warn(abp.localization.localize("ChooseOneToOp"));
  777. }
  778. $("#query_Product_modal").modal('hide');
  779. }
  780. function reloadSendTable(productNo) {
  781. var $tbody = $(".table.table-striped.fahuo > tbody");
  782. $tbody.find("tr:not(:first)").remove();
  783. var customerId = $("#table").bootstrapTable("getSelections")[0].customerId;
  784. SaveAjax({
  785. url: window.appUrl + "Query/QueryStoreFilter?productNo=" + productNo + '&customerId=' + customerId,
  786. isAlert: false,
  787. isValidate: false,
  788. success: function(res) {
  789. //console.log(res);
  790. if (res && res.length > 0) {
  791. res.forEach(function(r) {
  792. var sTr = '<tr>';
  793. sTr += '<td class="currentProductStoreHouseNo" style="display:none;">' +
  794. r.currentProductStoreHouseNo +
  795. '</td>';
  796. sTr += '<td class="productionOrderNo">' + r.productionOrderNo + '</td>';
  797. sTr += '<td class="storeLocationNo">' + r.storeLocationNo + '</td>';
  798. var isCanUser = formatNum(Number(r.quantity), Number(r.freezeQuantity), 3);
  799. sTr += '<td>' + isCanUser + '</td>';
  800. sTr +=
  801. '<td style="position:relative"><input type="text" name="SendQuantity" class="form-control number sendQuantity form-input-send" min="0" max="' +
  802. isCanUser +
  803. '"/></td>';
  804. sTr +=
  805. '<td style="position:relative"><input type="text" name="AvgSendQuantity" class="form-control number avgQuantity form-input-send" min="0"/></td>';
  806. sTr += '</tr>';
  807. $tbody.append(sTr);
  808. });
  809. }
  810. }
  811. });
  812. SaveAjax({
  813. url: window.appUrl +
  814. "OrderItems/GetCurrentProductLock?productNo=" +
  815. productNo +
  816. '&orderNo=' +
  817. $("#orderHeaderNo").text(),
  818. isAlert: false,
  819. isValidate: false,
  820. success: function(res) {
  821. if (res) {
  822. $("#IsLockQuantity").html(res.quantity);
  823. }
  824. }
  825. });
  826. //accordion-inner
  827. $('#modalSendOrder .accordion-inner').html('');
  828. SaveAjax({
  829. url: window.appUrl +
  830. "OrderItems/GetSendDateWarns?orderItemId=" +
  831. $("#orderItemNo_ForSend").val(),
  832. isAlert: false,
  833. isValidate: false,
  834. success: function(res) {
  835. var rendInfo = '';
  836. if (res && res.length > 0) {
  837. res.forEach(function(v, i) {
  838. if (v.sendState !== 1) {
  839. 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>`;
  840. }
  841. });
  842. $('#modalSendOrder .accordion-inner').append(rendInfo);
  843. $('#modalSendOrder .tool-radio input[type="radio"]').on('click',
  844. function(e) {
  845. var $that = $(e.target);
  846. $that.attr('checked', 'checked');
  847. });
  848. $("#modalSendOrder .accordion").show();
  849. }
  850. if (!rendInfo) {
  851. $("#modalSendOrder .accordion").hide();
  852. }
  853. }
  854. });
  855. }
  856. function f_SendOrderItem(id, quantity, isSendQuantity, productNo, customerId) {
  857. console.log("customerId", customerId)
  858. var showSendModal = function () {
  859. $("#productId").val(productNo);
  860. $("#orderItemNo_ForSend").val(id);
  861. if (!isSendQuantity || !(isSendQuantity > 0)) {
  862. isSendQuantity = 0;
  863. }
  864. $("#IsSendQuantity").html('' + isSendQuantity + '/' + quantity);
  865. var totalQuantity = Number(quantity);
  866. isSendQuantity = Number(isSendQuantity);
  867. var canSendQuantity = formatNum(totalQuantity, isSendQuantity, 3);
  868. $("#canSendQuantity").val(canSendQuantity);
  869. $("#isSendQuantity").val(isSendQuantity);
  870. $("#totalQuantity").val(totalQuantity);
  871. reloadSendTable(productNo);
  872. $("#modalSendOrder").modal("show");
  873. }
  874. SaveAjax({
  875. url: window.appUrl +
  876. "OrderBookStore/CheckExistLockingStore?id=" +id,
  877. isAlert: false,
  878. isValidate: false,
  879. success: function (res) {
  880. //先检查是否存在锁定库存的记录,存在需要先发锁定的库存
  881. if (res) {
  882. abp.message.warn("订单存在锁定的库存记录,需要先发锁定的库存!");
  883. $("#productId_lockstore").val(productNo);
  884. $("#quantity_lockstore_key").val(quantity);
  885. $("#orderItemId_lockstore_key").val(id);
  886. $("#customerId_lockstore_key").val(customerId);
  887. renderLockedStoreTable(id)
  888. reloadLockStoreTable(productNo, quantity, customerId)
  889. $("#modalLockStore").modal("show")
  890. } else {
  891. $("#productId_lockstore").val('') //清空锁定库存模态框Id
  892. showSendModal()
  893. }
  894. }
  895. })
  896. }
  897. function SendOrderAction() {
  898. var orderItemId = $("#orderItemNo_ForSend").val();
  899. console.log("orderItemId" + orderItemId);
  900. var productId = $("#productId").val();
  901. var $tbody = $(".table.table-striped.fahuo > tbody");
  902. var trDatas = $tbody.find("tr:not(:first)");
  903. var sendAll = 0;
  904. var dataParam = {
  905. ProductNo: productId,
  906. CustomerNo: customerNo,
  907. SendItems: [],
  908. Id: orderItemId,
  909. SendAllQuantity: 0,
  910. SendDateWarnId: 0
  911. };
  912. if (trDatas) {
  913. for (var i = 0; i < trDatas.length; i++) {
  914. var sendItem = {};
  915. var sendQuantity = $(trDatas[i]).find(".sendQuantity").val();
  916. if (!sendQuantity || Number(sendQuantity) <= 0) {
  917. continue;
  918. }
  919. sendItem.SendQuantity = Number(sendQuantity);
  920. var avgQuantity = $(trDatas[i]).find(".avgQuantity").val();
  921. if (!avgQuantity || Number(avgQuantity) <= 0) {
  922. avgQuantity = sendQuantity;
  923. }
  924. sendItem.AvgQuantity = Number(avgQuantity);
  925. var currentProductStoreHouseNo = $(trDatas[i]).find(".currentProductStoreHouseNo").text();
  926. if (currentProductStoreHouseNo) {
  927. sendItem.CurrentProductStoreHouseNo = currentProductStoreHouseNo;;
  928. }
  929. var productionOrderNo = $(trDatas[i]).find(".productionOrderNo").text();
  930. if (productionOrderNo) {
  931. sendItem.ProductBatchNum = productionOrderNo;
  932. } else {
  933. sendItem.ProductBatchNum = "00000000000";
  934. }
  935. var storeLocationNo = $(trDatas[i]).find(".storeLocationNo").text();
  936. if (storeLocationNo) {
  937. sendItem.StoreLocationNo = storeLocationNo;
  938. }
  939. dataParam.SendItems.push(sendItem);
  940. sendAll += Number(sendQuantity);
  941. }
  942. }
  943. if (sendAll <= 0) {
  944. abp.message.warn("发货总量需要大于0千件!");
  945. return;
  946. }
  947. var canSendQuantity = Number($("#canSendQuantity").val());
  948. dataParam.SendAllQuantity = sendAll;
  949. dataParam.SendDateWarnId = $('#modalSendOrder .tool-radio input[name="sendDateItemCheck"]:checked').val();
  950. var save = function() {
  951. SaveAjax({
  952. url: window.appUrl + "OrderItems/SendOrderAction",
  953. //contentType: 'application/json',
  954. dataType: "json",
  955. form: $("#formSend"),
  956. data: dataParam,
  957. isAlert: false,
  958. isValidate: true,
  959. success: function(res) {
  960. if (res) {
  961. RefreshOrderItemTable(res.orderNo);
  962. $("#modalSendOrder").modal("hide");
  963. }
  964. }
  965. });
  966. }
  967. if (sendAll > canSendQuantity) {
  968. var isSendQuantity = $("#isSendQuantity").val(), totalQuantity = $("#totalQuantity").val();
  969. var temp = formatNum(Number(sendAll) + Number(isSendQuantity),
  970. Number(totalQuantity) + Number(totalQuantity * 0.05),
  971. 3);
  972. if (temp > 0) {
  973. abp.message.warn("发货总量已超出订单发货量5%,不能继续操作!");
  974. return;
  975. }
  976. abp.message.confirm("发货总量已超出订单发货量,是否要继续发货?",
  977. "确认发货",
  978. function(isConfirmed) {
  979. if (isConfirmed) {
  980. save();
  981. }
  982. });
  983. } else {
  984. save();
  985. }
  986. }
  987. var formatNum = function(f1, f2, digit) {
  988. //var m = Math.pow(10, digit);
  989. //return parseInt(f1*m-f2*m, 10) / m;
  990. var z = f1 - f2;
  991. return z.toFixed(digit);
  992. }
  993. function DateFormatter(v, r) {
  994. var sendDate = new Date(v);
  995. return '<span style="text-decoration:underline;" >' + sendDate.Format('yyyy-MM-dd') + '</span>';
  996. }
  997. function f_AuditOrderItem(id) {
  998. abp.message.confirm("确认审核通过?",
  999. "订单明细审核",
  1000. function() {
  1001. SaveAjax({
  1002. url: window.appUrl + "OrderItems/Audit",
  1003. dataType: "json",
  1004. data: { id: id },
  1005. isAlert: false,
  1006. isValidate: false,
  1007. success: function(res) {
  1008. if (res) {
  1009. RefreshOrderItemTable(res.orderNo);
  1010. }
  1011. }
  1012. });
  1013. });
  1014. }
  1015. function f_CloseOrderItem(id) {
  1016. SaveAjax({
  1017. url: window.appUrl + "OrderItems/End",
  1018. dataType: "json",
  1019. data: { id: id },
  1020. isAlert: false,
  1021. isValidate: false,
  1022. success: function(res) {
  1023. if (res) {
  1024. RefreshOrderItemTable(res.orderItem.orderNo);
  1025. //$("#table").bootstrapTable("refresh", { silent: true });
  1026. /*setTimeout(function() {
  1027. $("#table").bootstrapTable("checkBy", { field: "id", value: res.orderNo });//updateCellById
  1028. },
  1029. 500);*/
  1030. if (res.isAllEnd) {
  1031. $("#table").bootstrapTable("updateCellById",
  1032. {
  1033. id: res.orderItem.orderNo,
  1034. field: "orderStatusId",
  1035. value: '<span class="label label-primary">完成</span>'
  1036. });
  1037. $("#table").bootstrapTable("checkBy", { field: "id", value: res.orderItem.orderNo });
  1038. }
  1039. }
  1040. }
  1041. });
  1042. }
  1043. function f_ChangeOrderItemStatus() {
  1044. var rows = $tableOrderItem.bootstrapTable("getSelections");
  1045. if (rows.length > 0) {
  1046. if (rows[0].isLock === 'Y') {
  1047. abp.message.warn("订单已删除,不能变更明细!");
  1048. return;
  1049. }
  1050. $("#modalChangeStatus").modal("show");
  1051. } else {
  1052. abp.message.warn(abp.localization.localize("ChooseOneToOp"));
  1053. }
  1054. }
  1055. function f_ChangeOrderItemStoreCompleteStatus() {
  1056. var rows = $tableOrderItem.bootstrapTable("getSelections");
  1057. if (rows.length > 0) {
  1058. if (rows[0].isLock === 'Y') {
  1059. abp.message.warn("订单已删除,不能变更明细!");
  1060. return;
  1061. }
  1062. $("#modalCompleteStoreStatus").modal("show");
  1063. } else {
  1064. abp.message.warn(abp.localization.localize("ChooseOneToOp"));
  1065. }
  1066. }
  1067. function f_AuditNewOrderItems() {
  1068. var headRow = config.table.bootstrapTable("getSelections");
  1069. if (headRow[0].isLock === 'Y') {
  1070. abp.message.warn("订单已删除,不能审核明细!");
  1071. return;
  1072. }
  1073. if (headRow[0].orderStatusId === 2) {
  1074. abp.message.warn("订单未审核,不能审核明细!");
  1075. return;
  1076. }
  1077. var datas = $tableOrderItem.bootstrapTable("getData");
  1078. if (datas.length > 0) {
  1079. var newDataId = [];
  1080. datas.forEach(function(r) {
  1081. if (r.orderItemStatusId === 2) {
  1082. newDataId.push(r.id);
  1083. }
  1084. });
  1085. if (newDataId.length > 0) {
  1086. var nd = newDataId.join(',');
  1087. abp.message.confirm("确认审核通过全部新建订单?",
  1088. "订单明细审核",
  1089. function() {
  1090. SaveAjax({
  1091. url: window.appUrl + "OrderItems/AuditAllItems",
  1092. data: { Id: nd },
  1093. isAlert: false,
  1094. isValidate: false,
  1095. success: function(res) {
  1096. RefreshOrderItemTable(res[0].orderNo);
  1097. }
  1098. });
  1099. });
  1100. } else {
  1101. abp.message.warn("没有可审核的订单明细!");
  1102. }
  1103. } else {
  1104. abp.message.warn(abp.localization.localize("ChooseOneToOp"));
  1105. }
  1106. }
  1107. function ChangeOrderItemStatus() {
  1108. var rows = $tableOrderItem.bootstrapTable("getSelections");
  1109. if (rows.length > 0) {
  1110. var ids = "";
  1111. rows.forEach(function(r) {
  1112. ids += "," + r.id;
  1113. });
  1114. ids = ids.substr(1);
  1115. abp.message.confirm("确认变更选中明细的状态?",
  1116. "订单明细状态变更",
  1117. function() {
  1118. SaveAjax({
  1119. url: window.appUrl + "OrderItems/ChangeOrderItemStatusOnHeader",
  1120. dataType: "json",
  1121. data: { id: ids, orderItemStatusId: $("#orderItemStatusId").val() },
  1122. isAlert: false,
  1123. isValidate: false,
  1124. success: function(res) {
  1125. if (res) {
  1126. RefreshOrderItemTable(res.orderItems[0].orderNo);
  1127. if (res.isAllEnd) {
  1128. $("#table").bootstrapTable("updateCellById",
  1129. {
  1130. id: res.orderItems[0].orderNo,
  1131. field: "orderStatusId",
  1132. value: '<span class="label label-primary">完成</span>'
  1133. });
  1134. $("#table").bootstrapTable("checkBy",
  1135. { field: "id", value: res.orderItems[0].orderNo });
  1136. }
  1137. $("#modalChangeStatus").modal("hide");
  1138. }
  1139. }
  1140. });
  1141. });
  1142. } else {
  1143. abp.message.warn(abp.localization.localize("ChooseOneToOp"));
  1144. }
  1145. }
  1146. function ChangeCompleteStoreStatus() {
  1147. var rows = $tableOrderItem.bootstrapTable("getSelections");
  1148. if (rows.length > 0) {
  1149. var ids = "";
  1150. rows.forEach(function(r) {
  1151. ids += "," + r.id;
  1152. });
  1153. ids = ids.substr(1);
  1154. abp.message.confirm("确认变更选中明细的到货状态?",
  1155. "订单明细到货状态变更",
  1156. function() {
  1157. SaveAjax({
  1158. url: window.appUrl + "OrderItems/ChangeOrderItemCompleteStoreStatus",
  1159. dataType: "json",
  1160. data: { id: ids, orderItemStoreCompleteState: $("#storeCompleteStateId").val() },
  1161. isAlert: false,
  1162. isValidate: false,
  1163. success: function(res) {
  1164. if (res) {
  1165. RefreshOrderItemTable(res.orderItems[0].orderNo);
  1166. $("#modalCompleteStoreStatus").modal("hide");
  1167. }
  1168. }
  1169. });
  1170. });
  1171. } else {
  1172. abp.message.warn(abp.localization.localize("ChooseOneToOp"));
  1173. }
  1174. }
  1175. function ActionsItemFormatter(v, r) {
  1176. var str = "";
  1177. console.log(r)
  1178. if (r.orderItemStatusId === 15) {
  1179. str = '<span class="table-action" onclick="f_SendOrderItem(\'' +
  1180. r.id +
  1181. '\',\'' +
  1182. r.quantity +
  1183. '\',\'' +
  1184. r.isSendQuantity +
  1185. '\',\'' +
  1186. r.productNo +
  1187. '\',\'' +
  1188. r.customerId +
  1189. '\')"><i class="iconfont icon-right"></i>发货</span>';
  1190. } else if (r.orderItemStatusId === 9) {
  1191. str = '<span class="table-action" onclick="f_CloseOrderItem(\'' +
  1192. r.id +
  1193. '\')"><i class="iconfont icon-right"></i>结束</span>';
  1194. } else if (r.orderItemStatusId === 2) {
  1195. str = '<span class="table-action" onclick="f_AuditOrderItem(' +
  1196. r.id +
  1197. ')"><i class="iconfont icon-right"></i>完成审核</span>';
  1198. }
  1199. //else if (r.orderItemStatusId !== 15 && r.orderItemStatusId !== 9 && r.orderItemStatusId !== 11) {
  1200. // str = '<span class="table-action" onclick="f_AuditOrderItem(' +
  1201. // r.id +
  1202. // ')"><i class="iconfont icon-right"></i>完成审核</span>';
  1203. //}
  1204. return str;
  1205. }
  1206. function OrderItemStatusFormatter(v, r) {
  1207. if (r.orderItemStatusId === 15) {
  1208. return '<span class="label label-success">完成审核</span>';
  1209. } else if (r.orderItemStatusId === 9) {
  1210. return '<span class="label label-danger">发货</span>';
  1211. } else if (r.orderItemStatusId === 11) {
  1212. return '<span class="label label-primary">结束</span>';
  1213. } else if (r.orderItemStatusId === 2) {
  1214. return '<span class="label label-primary">新建</span>';
  1215. } else if (r.orderItemStatusId === 20) {
  1216. return '<span class="label label-primary">协商完成</span>';
  1217. }
  1218. return v;
  1219. }
  1220. function IsReportFormatter(v, r) {
  1221. var str = "";
  1222. if (v === "Y") {
  1223. str = '<span class="table-action">需要</span>';
  1224. } else if (v === "N") {
  1225. str = '<span class="table-action">不需要</span>';;
  1226. }
  1227. return str;
  1228. }
  1229. function SendDateFormatter(v, r) {
  1230. var dataNow = abp.clock.now();
  1231. var sendDate = new Date(v);
  1232. var s1 = dataNow.getTime(), s2 = sendDate.getTime();
  1233. var span = (s2 - s1) / 1000;
  1234. var dayspan = parseInt(span / (24 * 60 * 60));
  1235. if (dayspan < 0) {
  1236. return '<span style="text-decoration:underline;color:#ff0000" onclick="f_showChangeSendDate(' +
  1237. r.id +
  1238. ',\'' +
  1239. r.sendDate +
  1240. '\',' +
  1241. r.orderItemStatusId +
  1242. ')">' +
  1243. sendDate.Format('yyyy-MM-dd') +
  1244. '</span>';
  1245. }
  1246. if (dayspan > -1 && dayspan < 4) {
  1247. return '<span style="text-decoration:underline;color:#dd4b39" onclick="f_showChangeSendDate(' +
  1248. r.id +
  1249. ',\'' +
  1250. r.sendDate +
  1251. '\',' +
  1252. r.orderItemStatusId +
  1253. ')">' +
  1254. sendDate.Format('yyyy-MM-dd') +
  1255. '</span>';
  1256. }
  1257. return '<span style="text-decoration:underline;" 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. function f_showChangeSendDate(id, sendDate, s) {
  1268. if (s != @OrderItemStatusEnum.NewCreate.ToInt() && s != @OrderItemStatusEnum.Audited.ToInt()) {
  1269. abp.message.warn("已发货(或已结束),不能操作!");
  1270. return;
  1271. }
  1272. $("#orderItemNo3").val(id);
  1273. $("#oldSendDate").val(sendDate);
  1274. $("#newSendDate").val(sendDate);
  1275. $('#modalChangeSendDate form #btn_addWarnItem').remove();
  1276. $('#modalChangeSendDate form .MapperItem').remove();
  1277. $('#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>`);
  1278. SaveAjax({
  1279. url: window.appUrl + "OrderItems/GetSendDateWarns?orderItemId=" + id,
  1280. //data: formUtil.Serialize(form),
  1281. modal: $("#modalChangeSendDate"),
  1282. dataType: "json",
  1283. isAlert: false,
  1284. isValidate: false,
  1285. success: function(res) {
  1286. if (res) {
  1287. res.forEach(function(v, i) {
  1288. AddSendDateWarnItem();
  1289. $('.MapperItem:eq(' + i + ') [name="id"]').val(v.id);
  1290. $('.MapperItem:eq(' + i + ') [name="planDate"]').val(v.planDate);
  1291. $('.MapperItem:eq(' + i + ') [name="planQuantity"]').val(v.planQuantity);
  1292. $('.MapperItem:eq(' + i + ') [name="remark"]').val(v.remark);
  1293. $('.MapperItem:eq(' + i + ') [name="planDate"]').prop('disabled', true);
  1294. $('.MapperItem:eq(' + i + ') [name="planQuantity"]').prop('readonly', true);
  1295. $('.MapperItem:eq(' + i + ') [name="remark"]').prop('readonly', true);
  1296. });
  1297. }
  1298. }
  1299. });
  1300. $("#modalChangeSendDate").modal("show");
  1301. }
  1302. function ChangeSendDate() {
  1303. //var form = $("#modalChangeSendDate").find("form");
  1304. var data = getSendDateItemFormData();
  1305. SaveAjax({
  1306. url: window.appUrl + "OrderItems/ChangeSendDate",
  1307. //data: formUtil.Serialize(form),
  1308. data: data,
  1309. modal: $("#modalChangeSendDate"),
  1310. dataType: "json",
  1311. isAlert: false,
  1312. isValidate: true,
  1313. success: function(res) {
  1314. if (res) {
  1315. RefreshOrderItemTable(res.orderNo);
  1316. $("#modalChangeSendDate").modal("hide");
  1317. }
  1318. }
  1319. });
  1320. }
  1321. //分批发货提醒 2023
  1322. function AddSendDateWarnItem() {
  1323. var str = ' <div class="MapperItem"><input class="form-control" name="id" type="hidden" value="0" >';
  1324. str += '<label class="iwb-label col-md-2 control-label iwb-label-required" for="planDate">送货日期</label>';
  1325. str += ' <div class="col-md-4">';
  1326. str +=
  1327. '<input class="form-control iwb-date" name="planDate" type="text" placeholder="请输入日期..." value="" style="width: 100%;">';
  1328. str += '</div>';
  1329. str += '<label class="iwb-label col-md-2 control-label iwb-label-required" for="planQuantity">数量(千件)</label>';
  1330. str += '<div class="col-md-4">';
  1331. str +=
  1332. '<input class="form-control" name="planQuantity" type="number" placeholder="请输入数量..." value="" style="width: 100%;">';
  1333. str += '</div>';
  1334. str +=
  1335. '<label class="iwb-label col-md-2 control-label " for="remark" style="margin-top:10px;">备注</label>';
  1336. str += '<div class="col-md-4">';
  1337. str +=
  1338. '<input class="form-control" name="remark" type="text" placeholder="请输入..." value="" style="width: 100%;margin-top:10px">';
  1339. str += '</div>';
  1340. str += ' <div class="col-md-6" style="text-align:center;">';
  1341. str +=
  1342. ' <button type="button" class="btn btn-sm btn-danger" style="width:90%;margin-top:10px; " onclick="DeleteSendDateItem(this)">删除</button>';
  1343. str += ' </div>';
  1344. str += '</div>';
  1345. $("#modalChangeSendDate form").append(str);
  1346. $('.MapperItem:last .iwb-date').iwbDate({ language: window.lang });
  1347. }
  1348. function DeleteSendDateItem(that) {
  1349. var $item = $(that).closest('.MapperItem');
  1350. var $id = $item.find('input[name="id"]');
  1351. if ($id.val() > 0) {
  1352. abp.message.confirm("确认删除发货提醒?",
  1353. "删除发货提醒",
  1354. function() {
  1355. SaveAjax({
  1356. url: window.appUrl + "OrderItems/DeleteSendDateWarns?sendDateWarnId=" + $id.val(),
  1357. dataType: "json",
  1358. isAlert: false,
  1359. isValidate: false,
  1360. success: function(res) {
  1361. $item.remove();
  1362. }
  1363. });
  1364. });
  1365. } else {
  1366. $item.remove();
  1367. }
  1368. }
  1369. function getSendDateItemFormData() {
  1370. var d = {
  1371. orderItemNo: $("#orderItemNo3").val(),
  1372. oldSendDate: $("#oldSendDate").val(),
  1373. newSendDate: $("#newSendDate").val(),
  1374. sendDateWarns: []
  1375. };
  1376. var items = $('.MapperItem');
  1377. for (var i = 0; i < items.length; i++) {
  1378. if (!$('.MapperItem:eq(' + i + ') [name="planDate"]').val()) {
  1379. continue;
  1380. }
  1381. d.sendDateWarns[i] = {
  1382. Id: $('.MapperItem:eq(' + i + ') [name="id"]').val(),
  1383. PlanDate: $('.MapperItem:eq(' + i + ') [name="planDate"]').val(),
  1384. PlanQuantity: $('.MapperItem:eq(' + i + ') [name="planQuantity"]').val(),
  1385. Remark: $('.MapperItem:eq(' + i + ') [name="remark"]').val()
  1386. }
  1387. }
  1388. return d;
  1389. }
  1390. //分批发货提醒 2023-end
  1391. function StoreCompleteStateFormatter(v, r) {
  1392. var str = "";
  1393. if (v === 0) {
  1394. str = '<span class="label label-danger">货物不齐全</span>';
  1395. } else if (v === 1) {
  1396. str = '<span class="label label-success">货物已齐</span>';;
  1397. } else if (v === 2) {
  1398. str = '<span class="label label-success">货物已齐,待改包</span>';;
  1399. }
  1400. return str;
  1401. }
  1402. function PriceFormatter(v, r) {
  1403. var str = "0.00";
  1404. if (v && v > 0) {
  1405. v = (v * 10000) / 10000;
  1406. str = _formatAmount(v, 4);
  1407. }
  1408. str = '<span style="text-decoration:underline;color:red;" onclick="f_showChangePrice(' +
  1409. r.id +
  1410. ',' +
  1411. r.price +
  1412. ',' +
  1413. r.orderItemStatusId +
  1414. ')">' +
  1415. str +
  1416. ' ' +
  1417. r.currencyId +
  1418. '</span>';
  1419. return str;
  1420. }
  1421. function CurrencyPriceFormatter(v, r) {
  1422. var str = "0.00";
  1423. if (v && v > 0) {
  1424. v = (v * 10000) / 10000;
  1425. str = _formatAmount(v, 4);
  1426. }
  1427. str = '<span style="text-decoration:underline;color:red;">' +
  1428. str +
  1429. ' ' +
  1430. r.currencyId +
  1431. '</span>';
  1432. return str;
  1433. }
  1434. function TaxPriceFormatter(v, r) {
  1435. var str = "0.00";
  1436. if (v && v > 0) {
  1437. v = (v * 10000) / 10000;
  1438. str = _formatAmount(v, 4);
  1439. }
  1440. str = '<span style="text-decoration:underline;color:red;" onclick="f_showChangeAfterTaxPrice(' +
  1441. r.id +
  1442. ',' +
  1443. r.afterTaxPrice +
  1444. ',' +
  1445. r.orderItemStatusId +
  1446. ')">' +
  1447. str +
  1448. ' ' +
  1449. r.currencyId +
  1450. '</span>';
  1451. return str;
  1452. }
  1453. function f_showChangePrice(id, price, s) {
  1454. if (s != @OrderItemStatusEnum.NewCreate.ToInt() && s != @OrderItemStatusEnum.Audited.ToInt()) {
  1455. abp.message.warn("已发货(或已结束),不能操作!");
  1456. return;
  1457. }
  1458. $("#orderItemNo").val(id);
  1459. $("#oldPrice").val(price);
  1460. $("#newPrice").val("");
  1461. $("#modalChangePrice").modal("show");
  1462. }
  1463. function ChangePrice() {
  1464. var form = $("#modalChangePrice").find("form");
  1465. SaveAjax({
  1466. url: window.appUrl + "OrderItems/ChangePrice",
  1467. data: formUtil.Serialize(form),
  1468. modal: $("#modalChangePrice"),
  1469. dataType: "json",
  1470. isAlert: false,
  1471. isValidate: true,
  1472. success: function(res) {
  1473. if (res) {
  1474. RefreshOrderItemTable(res.orderNo);
  1475. $("#modalChangePrice").modal("hide");
  1476. }
  1477. }
  1478. });
  1479. }
  1480. function f_showChangeAfterTaxPrice(id, price, s) {
  1481. if (s != @OrderItemStatusEnum.NewCreate.ToInt() && s != @OrderItemStatusEnum.Audited.ToInt()) {
  1482. abp.message.warn("已发货(或已结束),不能操作!");
  1483. return;
  1484. }
  1485. $("#orderItemNo5").val(id);
  1486. if (price <= 0) {
  1487. price = 0;
  1488. }
  1489. $("#oldPrice2").val(price);
  1490. $("#newAfterTaxPrice").val("");
  1491. $("#modalChangeAfterTaxPrice").modal("show");
  1492. }
  1493. function ChangeAfterTaxPrice() {
  1494. var form = $("#modalChangeAfterTaxPrice").find("form");
  1495. SaveAjax({
  1496. url: window.appUrl + "OrderItems/ChangeAfterTaxPrice",
  1497. data: formUtil.Serialize(form),
  1498. modal: $("#modalChangeAfterTaxPrice"),
  1499. dataType: "json",
  1500. isAlert: false,
  1501. isValidate: true,
  1502. success: function(res) {
  1503. if (res) {
  1504. RefreshOrderItemTable(res.orderNo);
  1505. $("#modalChangeAfterTaxPrice").modal("hide");
  1506. }
  1507. }
  1508. });
  1509. }
  1510. function QuantityFormatter(v, r) {
  1511. var str = '<span style="text-decoration:underline;" onclick="f_showChangeQuantity(' +
  1512. r.id +
  1513. ',' +
  1514. r.quantity +
  1515. ',' +
  1516. r.orderItemStatusId +
  1517. ')">' +
  1518. v +
  1519. '</span>';
  1520. return str;
  1521. }
  1522. function SendItemFormatter(v,r){
  1523. var str = `<span style="text-decoration:underline;" onclick="f_showSendItem(${r.id})">${v?v:0}</span>`;//orderSendItemModal
  1524. return str;
  1525. }
  1526. function f_showChangeQuantity(id, quantity, s) {
  1527. if (s != @OrderItemStatusEnum.NewCreate.ToInt() && s != @OrderItemStatusEnum.Audited.ToInt()) {
  1528. abp.message.warn("已发货(或已结束),不能操作!");
  1529. return;
  1530. }
  1531. $("#orderItemNo2").val(id);
  1532. $("#oldQuantity").val(quantity);
  1533. $("#newQuantity").val("");
  1534. $("#modalChangeQuantity").modal("show");
  1535. }
  1536. function ChangeQuantity() {
  1537. var form = $("#modalChangeQuantity").find("form");
  1538. SaveAjax({
  1539. url: window.appUrl + "OrderItems/ChangeQuantity",
  1540. data: formUtil.Serialize(form),
  1541. modal: $("#modalChangeQuantity"),
  1542. dataType: "json",
  1543. isAlert: false,
  1544. isValidate: true,
  1545. success: function(res) {
  1546. if (res) {
  1547. RefreshOrderItemTable(res.orderNo);
  1548. $("#modalChangeQuantity").modal("hide");
  1549. }
  1550. }
  1551. });
  1552. }
  1553. function TotalPriceFormatter(v, r) {
  1554. var str = "0.00";
  1555. if (v && v > 0) {
  1556. v = (v * 10000) / 10000;
  1557. str = _formatAmount(v, 4);
  1558. }
  1559. str = '<span style="text-decoration:underline;">' + str + '' + r.currencyId + '</span>';
  1560. return str;
  1561. }
  1562. function AllTotalPriceFormatter(data) {
  1563. console.log(data);
  1564. var count = 0;
  1565. var currencyId = "CNY";
  1566. data.forEach(function(e) {
  1567. currencyId = e.currencyId;
  1568. count += e.totalPrice;
  1569. });
  1570. if (count && count > 0) {
  1571. count = (count * 10000) / 10000;
  1572. count = _formatAmount(count, 4);
  1573. }
  1574. return '<strong>' + count + ' ' + currencyId + '<strong>';
  1575. }
  1576. function AllAfterTaxTotalPriceFormatter(data) {
  1577. var count = 0;
  1578. var currencyId = "CNY";
  1579. data.forEach(function(e) {
  1580. currencyId = e.currencyId;
  1581. count += e.afterTaxTotalPrice;
  1582. });
  1583. if (count && count > 0) {
  1584. count = (count * 10000) / 10000;
  1585. count = _formatAmount(count, 4);
  1586. }
  1587. return '<strong>' + count + currencyId + '<strong>';
  1588. }
  1589. function EmergencyLevelFormatter(v, r) {
  1590. let result = '';
  1591. var name = $('#hid-emergencyLevel option[value="' + v + '"]').text();
  1592. if (v === 1) {
  1593. result += '<span class="label label-success">' + name + '</span>';
  1594. } else {
  1595. result += '<span class="label label-danger">' + name + '</span>';
  1596. }
  1597. result +=
  1598. `<span class="label label-success" style="text-decoration:underline;margin-left:2px;" onclick="showProductProcess(${r.id
  1599. })">生产进度</span>`;
  1600. result += `<span class="label label-success" style="text-decoration:underline;margin-left:2px;" onclick="showSelectProductDialog('${r.productNo}')">产品查询</span>`;
  1601. return result;
  1602. }
  1603. function IsLockFormatter(v, r) {
  1604. if (v === 'Y') {
  1605. return '<span class="label label-danger">已删除</span>';
  1606. } else {
  1607. return '<span class="label label-success">-</span>';
  1608. }
  1609. }
  1610. //function StoreHouseIdFormatter(v,r) {
  1611. // var name = $("#hide-StoreHouses option[value='" + v + "']").text();
  1612. // return '<span class="label label-primary">' + name + '</span>';
  1613. // }
  1614. </script>
  1615. <script>
  1616. //将数字转换成金额显示 n是小数点后位数
  1617. function toNumber(num, n) {
  1618. var re = String(num);
  1619. var dotfront = "";
  1620. var dotlast = "";
  1621. if (re.indexof('.') > -1) {
  1622. var sarr = re.spilt('.');
  1623. dotfront = sarr[0];
  1624. dotlast = sarr[1];
  1625. var dotlastlength = strlen(dotlast);
  1626. if (dotlastlength < n) {
  1627. for (var j = 0; j < n - dotlastlength; j++) {
  1628. dotlast += "0";
  1629. }
  1630. }
  1631. if (dotlastlength > n) {
  1632. dotlast = dotlast.substr(0, n);
  1633. }
  1634. } else {
  1635. dotfront = re;
  1636. for (var i = 0; i < n; i++) {
  1637. dotlast += "0";
  1638. }
  1639. }
  1640. num = dotfront + '.' + dotlast;
  1641. return num;
  1642. }
  1643. function _formatAmount(strData, n) {
  1644. var CurrencyAndAmountRegExp =
  1645. /^(\d{1,18})|(\d{1,18}\.)|(\d{1,17}\.\d{0,1})|(\d{1,16}\.\d{0,2})|(\.\d{1,2})$/;
  1646. var _result = CurrencyAndAmountRegExp.test(strData);
  1647. if (_result == false) {
  1648. return strData;
  1649. } // 一般来说最多就6位吧,当然如果有特殊需求可自行更改(`・∀・´)
  1650. n = n > 0 && n <= 6 ? n : 2;
  1651. var formatData = parseFloat((strData + '').replace(/[^\d\.-]/g, '')).toFixed(n) + '';
  1652. var l = formatData.split('.')[0].split('').reverse();
  1653. var r = formatData.split('.')[1];
  1654. var t = '';
  1655. for (i = 0; i < l.length; i++) {
  1656. t += l[i] + ((i + 1) % 3 == 0 && (i + 1) != l.length ? ',' : '');
  1657. }
  1658. return t.split('').reverse().join('') + '.' + r;
  1659. }
  1660. function strlen(str) {
  1661. var len = 0;
  1662. for (var i = 0; i < str.length; i++) {
  1663. var c = str.charCodeAt(i);
  1664. //单字节加1
  1665. if ((c >= 0x0001 && c <= 0x007e) || (0xff60 <= c && c <= 0xff9f)) {
  1666. len++;
  1667. } else {
  1668. len += 2;
  1669. }
  1670. }
  1671. return len;
  1672. }
  1673. </script>
  1674. }
  1675. <section style="display: none">
  1676. <select id="hid-type">
  1677. <option value=""></option>
  1678. </select>
  1679. @Html.DropDownList("hid-emergencyLevel", emergencyLevelList);
  1680. @*@Html.DropDownList("hide-StoreHouses", storeHouses)*@
  1681. </section>