OrderStatusMg.cshtml 72 KB

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