Index - 复制.cshtml 20 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464
  1. @using IwbZero.Setting
  2. @using ShwasherSys.Authorization.Permissions
  3. @{
  4. ViewBag.ActiveMenu = PermissionNames.Pages; //The menu item will be active for this page.
  5. var systemName = SettingManager.GetSettingValue(SettingNames.AdminSystemName);
  6. }
  7. @section styles
  8. {
  9. @*<link href="~/Content/Plugins/font-awesome/css/font-awesome.min.css" rel="stylesheet" />*@
  10. }
  11. <style>
  12. .content-wrapper {
  13. height: 100%;
  14. position: relative;
  15. padding: 0 !important;
  16. background: url('../../Content/Images/home-bg.png') 100% 100%;
  17. }
  18. .page {
  19. position: absolute;
  20. top: 100px;
  21. width: 100%;
  22. }
  23. .page-title, .page-title-sm {
  24. cursor: none;
  25. width: 100%;
  26. height: 150px;
  27. /*font-family: SimHei;*/
  28. font-size: 95px;
  29. font-weight: 600;
  30. letter-spacing: 10px;
  31. color: #ddd;
  32. opacity: .3;
  33. display: flex;
  34. align-items: start;
  35. justify-content: center;
  36. }
  37. .page-title-sm {
  38. font-size: 80px;
  39. color: #ddd;
  40. }
  41. .page-title::selection, .page-title-sm::selection {
  42. background: transparent;
  43. color: #1e90ff;
  44. }
  45. .box-footer .arr {
  46. animation: bouncedelay 1.2s infinite ease-in-out;
  47. animation-fill-mode: both;
  48. /*animation-delay: 1s;*/
  49. }
  50. .box-footer .arr.arr1 {
  51. animation-delay: 0.2s;
  52. }
  53. .box-footer .arr.arr2 {
  54. animation-delay: 0.4s;
  55. }
  56. .box-footer .arr.arr3 {
  57. animation-delay: 0.6s;
  58. }
  59. @@keyframes bouncedelay {
  60. 0%, 80%, 100% {
  61. opacity: 1;
  62. }
  63. 40% {
  64. opacity: 0;
  65. }
  66. }
  67. .totalHeaderItem {
  68. cursor: pointer;
  69. }
  70. .totalHeaderItem .info-box-text {
  71. padding: 10px;
  72. padding-left: 3px;
  73. font-size: 1.5rem;
  74. }
  75. .alertContent {
  76. position: relative;
  77. width: 100%;
  78. }
  79. .alertContent > .row {
  80. display: none;
  81. padding: 10px;
  82. position: absolute;
  83. left: -2000px;
  84. width: 100%;
  85. }
  86. </style>
  87. <div class="page no-select">
  88. <div class="page-title">
  89. 欢迎登陆
  90. </div>
  91. <div class="page-title-sm">
  92. @systemName
  93. </div>
  94. </div>
  95. <div class="row totalHeaderbox" style="padding: 10px;">
  96. </div>
  97. <div class="alertContent">
  98. <div class="row order-container" >
  99. <div class="col-md-12">
  100. <div class="box">
  101. <div class="box-header with-border" style="padding: 2px; padding-left: 10px;">
  102. <h3 class="box-title">您有未完成的订单,请及时处理!</h3>
  103. <div class="box-tools pull-right">
  104. <button type="button" class="btn btn-box-tool" data-widget="collapse">
  105. <i class="fa fa-minus"></i>
  106. </button>
  107. </div>
  108. </div>
  109. <div class="box-body" style="padding-top: 1px;">
  110. <div class="row">
  111. <div class="col-md-12">
  112. <div class="table-box mr-4 iwb-bootstrap-table">
  113. <table id="OrderTable" data-id-field="id" data-unique-id="id" data-single-select="true"
  114. data-click-to-select="true" data-post-body="OnPostBody" style="height: 300px">
  115. <thead>
  116. <tr class="row">
  117. @*<th data-field="state" data-checkbox="true"></th>*@
  118. <th data-align="center" data-field="id">流水号</th>
  119. <th data-align="center" data-field="orderStatusId" data-formatter="OrderStatusFormatter">订单状态</th>
  120. <th data-align="center" data-field="customerId">客户编号</th>
  121. <th data-align="center" data-field="stockNo">客户订单号</th>
  122. <th data-align="center" data-field="orderDate" data-formatter="DateFormatter">订单日期</th>
  123. <th data-align="center" data-field="linkName">联系人</th>
  124. <th data-align="center" data-field="telephone">电话</th>
  125. <th data-align="center" data-field="saleManName">订单业务员</th>
  126. <th data-align="center" data-field="saleTypeName">外销/内销</th>
  127. </tr>
  128. </thead>
  129. </table>
  130. </div>
  131. </div>
  132. </div>
  133. </div>
  134. <div class="box-footer text-center">
  135. <a class="btn btn-action" style="display: inline-block; font-size:2rem;" href="/OrderInfo/OrderStatusMg"><i class="arr arr1">></i><i class="arr arr2">></i><i class="arr arr3">></i>前往订单页面</a>
  136. </div>
  137. </div>
  138. </div>
  139. </div>
  140. <div class="row production-container">
  141. <div class="col-md-12">
  142. <div class="box">
  143. <div class="box-header with-border" style="padding: 2px; padding-left: 10px;">
  144. <h3 class="box-title">您有未完成的排查单,请及时处理!</h3>
  145. <div class="box-tools pull-right">
  146. <button type="button" class="btn btn-box-tool" data-widget="collapse">
  147. <i class="fa fa-minus"></i>
  148. </button>
  149. </div>
  150. </div>
  151. <div class="box-body" style="padding-top: 1px;">
  152. <div class="row">
  153. <div class="col-md-12">
  154. <div class="table-box mr-4 iwb-bootstrap-table">
  155. <table id="productionTable" data-id-field="id" data-unique-id="id" data-single-select="true"
  156. data-click-to-select="true" data-post-body="OnPostBody">
  157. <thead>
  158. <tr class="row">
  159. <th data-align="center" data-field="productionOrderNo">排产单号</th>
  160. <th data-align="center" data-field="partNo">零件号</th>
  161. <th data-align="center" data-field="semiProductName">名称</th>
  162. <th data-align="center" data-field="model">规格</th>
  163. <th data-align="center" data-field="quantity">排产数量(千件)</th>
  164. <th data-align="center" data-field="timeCreated" data-formatter="DateFormatter">创建时间</th>
  165. <th data-align="center" data-field="productionOrderStatus" data-formatter="ProductionOrderStatusFormatter">生产状态</th>
  166. <th data-align="center" data-field="remark">备注</th>
  167. <th data-align="center" data-field="material">材质</th>
  168. <th data-align="center" data-field="surfaceColor">表色</th>
  169. <th data-align="center" data-field="rigidity">硬度</th>
  170. <th data-align="center" data-field="kgWeight">千件重</th>
  171. <th data-align="center" data-field="planProduceDate" data-formatter="DateFormatter">计划完成时间</th>
  172. <th data-align="center" data-field="semiProductNo">半成品编码</th>
  173. </tr>
  174. </thead>
  175. </table>
  176. </div>
  177. </div>
  178. </div>
  179. </div>
  180. <div class="box-footer text-center">
  181. <a class="btn btn-action" style="display: inline-block; font-size:2rem;" href="/ProductionInfo/ProductionOrderMg"><i class="arr arr1">></i><i class="arr arr2">></i><i class="arr arr3">></i>前往排产单页面</a>
  182. </div>
  183. </div>
  184. </div>
  185. </div>
  186. <div class="row package-container">
  187. <div class="col-md-12">
  188. <div class="box">
  189. <div class="box-header with-border" style="padding: 2px; padding-left: 10px;">
  190. <h3 class="box-title">您有未审核的包装申请,请及时处理!</h3>
  191. <div class="box-tools pull-right">
  192. <button type="button" class="btn btn-box-tool" data-widget="collapse">
  193. <i class="fa fa-minus"></i>
  194. </button>
  195. </div>
  196. </div>
  197. <div class="box-body" style="padding-top: 1px;">
  198. <div class="row">
  199. <div class="col-md-12">
  200. <div class="table-box mr-4 iwb-bootstrap-table">
  201. <table id="packageTable" data-id-field="id" data-unique-id="id" data-single-select="true"
  202. data-click-to-select="true" data-post-body="OnPostBody" style="height: 300px">
  203. <thead>
  204. <tr class="row">
  205. <th data-align="center" data-field="productionOrderNo">流转单编号</th>
  206. <th data-align="center" data-field="" data-formatter="PackageProductNoFormatter">包装前产品编码</th>
  207. <th data-align="center" data-field="applyQuantity">申请包装数量</th>
  208. <th data-align="center" data-field="remark">备注</th>
  209. <th data-align="center" data-field="applyStatus" data-formatter="ApplyStatusFormatter">申请状态</th>
  210. <th data-align="center" data-field="applyDate" data-formatter="DateFormatter">申请时间</th>
  211. </tr>
  212. </thead>
  213. </table>
  214. </div>
  215. </div>
  216. </div>
  217. </div>
  218. <div class="box-footer text-center">
  219. <a class="btn btn-action" style="display: inline-block; font-size:2rem;" href="/PackInfo/Index"><i class="arr arr1">></i><i class="arr arr2">></i><i class="arr arr3">></i>前往包装页面</a>
  220. </div>
  221. </div>
  222. </div>
  223. </div>
  224. </div>
  225. @section scripts
  226. {
  227. <script>
  228. let $totalHeaderbox = $('.totalHeaderbox');
  229. let $orderContainer = $(".order-container");
  230. let $productionContainer = $(".production-container");
  231. let $packageContainer = $(".package-container");
  232. $(function() {
  233. RenderHeaderAlert();
  234. });
  235. function RenderHeaderAlert() {
  236. SaveAjax({
  237. url: window.appUrl + "Common/GetIndexAlertSum",
  238. dataType: "json",
  239. isAlert: false,
  240. isValidate: false,
  241. success: function(res) {
  242. $totalHeaderbox.empty();
  243. if (res && res.length > 0) {
  244. res.forEach(function(v, i) {
  245. let color = v.sumType == "1"
  246. ? "aqua"
  247. : v.sumType == "2"
  248. ? "red"
  249. : v.sumType == "3"
  250. ? "green"
  251. : "aqua";
  252. $totalHeaderbox.append(`
  253. <div class="col-md-4 col-sm-6 col-xs-12 totalHeaderItem" data-sumtype="${v.sumType}">
  254. <div class="info-box">
  255. <span class="info-box-icon bg-${color}"><img src="/Content/Images/index/${v
  256. .tipName}.png" /></span>
  257. <div class="info-box-content">
  258. <span class="info-box-text" >${v.sumName}</span>
  259. <span class="info-box-number">${v.quantity}</span>
  260. </div>
  261. </div>
  262. </div>`);
  263. });
  264. BindItemEvent();
  265. }
  266. }
  267. });
  268. }
  269. function BindItemEvent() {
  270. $('.totalHeaderItem').on('click', function(e) {
  271. let st = $(e.target).closest('.totalHeaderItem').data('sumtype');
  272. $('.alertContent > .row').css("display", "none");
  273. if (st == 1) {
  274. GetOrderAlert();
  275. }
  276. else if (st == 2) {
  277. GetProductionOrderAlert();
  278. } else if (st == 3) {
  279. GetPackageApplyAlert();
  280. }
  281. })
  282. }
  283. function GetOrderAlert() {
  284. let $tableOrder = $("#OrderTable");
  285. SaveAjax({
  286. url: window.appUrl + "Common/GetOrderHeaderForAlert",
  287. dataType: "json",
  288. isAlert: false,
  289. isValidate: false,
  290. success: function(res) {
  291. console.log(res);
  292. if (res && res.length > 0) {
  293. $tableOrder.bootstrapTable("destroy");
  294. $tableOrder.bootstrapTable({
  295. data: res,
  296. onPostBody: OnPostBody
  297. });
  298. setTimeout(() => {
  299. $("#OrderTable").bootstrapTable('resetView', { height: 300 });;
  300. },
  301. 1000);
  302. $orderContainer.css("display", "block");
  303. $orderContainer.animate({left: '10px'}, "slow");
  304. } else {
  305. $tableOrder.bootstrapTable("destroy");
  306. $tableOrder.bootstrapTable({ data: "", onPostBody: OnPostBody });
  307. }
  308. }
  309. });
  310. }
  311. function GetProductionOrderAlert() {
  312. let $tableOrder = $("#productionTable");
  313. SaveAjax({
  314. url: window.appUrl + "Common/GetProductionOrderForAlert",
  315. dataType: "json",
  316. isAlert: false,
  317. isValidate: false,
  318. success: function(res) {
  319. console.log(res);
  320. if (res && res.length > 0) {
  321. $tableOrder.bootstrapTable("destroy");
  322. $tableOrder.bootstrapTable({
  323. data: res,
  324. onPostBody: OnPostBody
  325. });
  326. $productionContainer.css("display", "block");
  327. $productionContainer.animate({left: '10px'}, "slow");
  328. setTimeout(() => {
  329. $("#productionTable").bootstrapTable('resetView', { height: 300 });;
  330. },
  331. 1000);
  332. } else {
  333. $tableOrder.bootstrapTable("destroy");
  334. $tableOrder.bootstrapTable({ data: "", onPostBody: OnPostBody });
  335. //$productionContainer.slideUp();
  336. }
  337. }
  338. });
  339. }
  340. function GetPackageApplyAlert() {
  341. let $tableOrder = $("#packageTable");
  342. SaveAjax({
  343. url: window.appUrl + "Common/GetPackageApplyForAlert",
  344. dataType: "json",
  345. isAlert: false,
  346. isValidate: false,
  347. success: function(res) {
  348. console.log(res);
  349. if (res && res.length > 0) {
  350. $tableOrder.bootstrapTable("destroy");
  351. $tableOrder.bootstrapTable({
  352. data: res,
  353. onPostBody: OnPostBody
  354. });
  355. setTimeout(() => {
  356. $("#packageTable").bootstrapTable('resetView', { height: 300 });;
  357. },
  358. 1000);
  359. $packageContainer.css("display", "block");
  360. $packageContainer.animate({left: '10px'}, "slow");
  361. } else {
  362. $tableOrder.bootstrapTable("destroy");
  363. $tableOrder.bootstrapTable({ data: "", onPostBody: OnPostBody });
  364. //$packageContainer.slideUp();
  365. }
  366. }
  367. });
  368. }
  369. </script>
  370. <script>
  371. function OrderStatusFormatter(v, r) { //danger
  372. if (r.orderStatusId === 2) {
  373. return '<span class="label label-success">新建</span>';
  374. } else if (r.orderStatusId === 3) {
  375. return '<span class="label label-danger">已审核</span>';
  376. } else if (r.orderStatusId === 12) {
  377. return '<span class="label label-primary">完成</span>';
  378. }
  379. return v;
  380. }
  381. function ProductionOrderStatusFormatter(v, r) {
  382. var str = '';
  383. switch (v) {
  384. case 1:
  385. str += '<span class="label label-info">新建</span>';
  386. break;
  387. case 2:
  388. str += '<span class="label label-iwb">生产中</span>';
  389. break;
  390. case 3:
  391. str += '<span class="label label-danger">入库中</span>';
  392. break;
  393. case 7:
  394. str += '<span class="label label-success">已审核</span>';
  395. break;
  396. default:
  397. str += '<span class="label label-warning">' + v + '</span>';
  398. break;
  399. }
  400. return str;
  401. }
  402. function ProcessingNumFormatter(v, r) {
  403. if (v === 0) {
  404. //return '<span class="label label-info">' + v+ '</span>';
  405. return '';
  406. } else {
  407. return '<span class="label label-danger">待处理:' + v + '</span>';
  408. }
  409. }
  410. function PackageProductNoFormatter(v, r) {
  411. if (r.semiProductNo) {
  412. return '<span class="label label-info">半成品包装:' + r.semiProductNo + '</span>';
  413. } else {
  414. return '<span class="label label-danger">成品包装' + r.productNo + '</span>';
  415. }
  416. }
  417. function ApplyStatusFormatter(v, r) {
  418. if (r.isClose) {
  419. return '<span class="label label-primary">已结束</span>';
  420. }
  421. if (v === "1") {
  422. return '<span class="label label-info">申请中</span>';
  423. }
  424. return '<span class="label label-info">' + v + '</span>';
  425. }
  426. </script>
  427. }