Index.cshtml 4.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120
  1. @page
  2. @model Admin.Pages.Paper.Orders.IndexModel
  3. @using Domain.Entities.Paper.ValueObject
  4. @{
  5. ViewData["Title"] = "모의투자 주문 모니터";
  6. }
  7. <div class="container-fluid">
  8. <h3>@ViewData["Title"]</h3>
  9. <hr />
  10. <partial name="_StatusMessage" />
  11. <div class="row g-2 mb-2 align-items-center">
  12. <div class="col-auto search-form__label">
  13. <label class="col-form-label">주문 상태</label>
  14. </div>
  15. <div class="col-auto">
  16. <select id="status" class="form-select w-auto d-inline-block">
  17. <option value="">전체</option>
  18. <option value="@((int)PaperOrderStatus.Pending)" selected="@(Model.Query.Status == PaperOrderStatus.Pending)">접수</option>
  19. <option value="@((int)PaperOrderStatus.Filled)" selected="@(Model.Query.Status == PaperOrderStatus.Filled)">체결</option>
  20. <option value="@((int)PaperOrderStatus.Cancelled)" selected="@(Model.Query.Status == PaperOrderStatus.Cancelled)">취소</option>
  21. <option value="@((int)PaperOrderStatus.Rejected)" selected="@(Model.Query.Status == PaperOrderStatus.Rejected)">거부</option>
  22. </select>
  23. </div>
  24. <div class="col-auto">
  25. <button type="submit" id="btnSearch" class="btn btn-primary">검색</button>
  26. </div>
  27. </div>
  28. <hr />
  29. <div class="row g-2 mb-2">
  30. <div class="col">
  31. Total : @Model.Total.ToString("N0")
  32. </div>
  33. <div class="col-auto">
  34. <select name="perPage" id="perPage" class="form-select w-auto d-inline-block">
  35. <option value="10" selected="@(Model.Query.PerPage == 10)">10</option>
  36. <option value="20" selected="@(Model.Query.PerPage == 20)">20</option>
  37. <option value="50" selected="@(Model.Query.PerPage == 50)">50</option>
  38. <option value="100" selected="@(Model.Query.PerPage == 100)">100</option>
  39. </select>
  40. </div>
  41. </div>
  42. <div class="table-responsive">
  43. <table class="table table-bordered table-hover">
  44. <thead>
  45. <tr>
  46. <th style="width:5%">#</th>
  47. <th>회원</th>
  48. <th>종목코드</th>
  49. <th>구분</th>
  50. <th>체결가</th>
  51. <th class="text-end">수량</th>
  52. <th class="text-end">예약금</th>
  53. <th>체결기준일</th>
  54. <th>상태</th>
  55. <th>거부사유</th>
  56. <th style="width:14%">주문일</th>
  57. </tr>
  58. </thead>
  59. <tbody>
  60. @if (Model.List == null || Model.List.Count <= 0)
  61. {
  62. <tr><td colspan="11">No Data.</td></tr>
  63. }
  64. else
  65. {
  66. @foreach (var row in Model.List)
  67. {
  68. <tr>
  69. <td>@row.Num</td>
  70. <td>
  71. <code>@row.SID</code>
  72. <div class="text-muted small">@(row.Nickname ?? "-")</div>
  73. </td>
  74. <td><code>@row.StockCode</code></td>
  75. <td>@Admin.Pages.Paper.Orders.IndexModel.SideToText(row.Side)</td>
  76. <td>@Admin.Pages.Paper.Orders.IndexModel.FillRuleToText(row.FillRule)</td>
  77. <td class="text-end">@row.Quantity.ToString("N0")</td>
  78. <td class="text-end">@row.ReservedAmount.ToString("N0")</td>
  79. <td>@row.TargetDate</td>
  80. <td>@row.StatusText</td>
  81. <td>@(row.RejectReason ?? "-")</td>
  82. <td>@row.CreatedAt</td>
  83. </tr>
  84. }
  85. }
  86. </tbody>
  87. </table>
  88. <partial name="_Pagination" model="@Model.Pagination" />
  89. </div>
  90. </div>
  91. @section Scripts {
  92. <script>
  93. function updateQueryString() {
  94. let queryParams = new URLSearchParams();
  95. const status = document.getElementById("status").value;
  96. if (status !== "") {
  97. queryParams.set("Query.Status", status);
  98. }
  99. queryParams.set("Query.PerPage", document.getElementById("perPage").value);
  100. window.location.href = window.location.pathname + "?" + queryParams.toString();
  101. }
  102. $(document).on("change", "#perPage, #status", updateQueryString);
  103. $(document).on("click", "#btnSearch", function(e) {
  104. e.preventDefault();
  105. updateQueryString();
  106. });
  107. </script>
  108. }