提供給台大案英特拉線上繳費填寫發票資訊用
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

134 lines
6.8KB

  1. @page
  2. @model InvoiceModel
  3. @{
  4. ViewData["Title"] = "消費者發票資訊填寫";
  5. Layout = "_SimpleLayout";
  6. }
  7. <div class="container mt-4">
  8. <div class="row justify-content-center">
  9. <div class="col-md-8">
  10. <div class="alert alert-secondary text-center mb-3" role="alert">
  11. <h5 class="mb-0">營業人:@Model.CompanyName(統編:@Model.CompanyTaxId)</h5>
  12. </div>
  13. @* @if (!string.IsNullOrEmpty(Model.DisplayTransDateTime) || !string.IsNullOrEmpty(Model.DisplayTransAmount)) *@
  14. @* { *@
  15. <div class="card mb-3 border-info">
  16. <div class="card-body bg-light">
  17. <div class="row">
  18. <div class="col-md-6">
  19. <label class="form-label fw-bold">發票日期:</label>
  20. <span class="ms-2">@Model.DisplayTransDateTime</span>
  21. </div>
  22. <div class="col-md-6">
  23. <label class="form-label fw-bold">發票金額:</label>
  24. <span class="ms-2">NT$ @Model.DisplayTransAmount</span>
  25. </div>
  26. </div>
  27. </div>
  28. </div>
  29. @* } *@
  30. <div class="card shadow-sm">
  31. <div class="card-header bg-primary text-white">
  32. <h4 class="mb-0">消費者發票資訊填寫</h4>
  33. </div>
  34. <div class="card-body">
  35. @if (!string.IsNullOrEmpty(Model.ErrorMessage))
  36. {
  37. <div class="alert alert-danger alert-dismissible fade show" role="alert">
  38. @Model.ErrorMessage
  39. <button type="button" class="btn-close" data-bs-dismiss="alert" aria-label="Close"></button>
  40. </div>
  41. }
  42. @if (!string.IsNullOrEmpty(Model.SuccessMessage))
  43. {
  44. <div class="alert alert-success alert-dismissible fade show" role="alert">
  45. @Model.SuccessMessage 1111
  46. <button type="button" class="btn-close" data-bs-dismiss="alert" aria-label="Close"></button>
  47. </div>
  48. }
  49. <form method="post" asp-page-handler="ToEndPoint">
  50. <div asp-validation-summary="All" class="text-danger mb-3"></div>
  51. <!-- 隱藏欄位:系統傳入的資料 -->
  52. <input type="hidden" asp-for="InvoiceData.Identifier" />
  53. <input type="hidden" asp-for="InvoiceData.TransDateTime" />
  54. <input type="hidden" asp-for="InvoiceData.TransAmount" />
  55. <input type="hidden" asp-for="InvoiceData.DeviceID" />
  56. <input type="hidden" asp-for="InvoiceData.LocationID" />
  57. <input type="hidden" asp-for="InvoiceData.CarPlateNum" />
  58. <input type="hidden" asp-for="InvoiceData.OrderID" />
  59. <input type="hidden" asp-for="InvoiceData.TaxType" />
  60. <div class="alert alert-info mb-4">
  61. <strong>注意:</strong>以下三個選項至少需填寫一個
  62. </div>
  63. <div class="row mb-3">
  64. <div class="col-md-6">
  65. <label asp-for="InvoiceData.Email" class="form-label">消費者信箱</label>
  66. <input asp-for="InvoiceData.Email" class="form-control" type="email" maxlength="64" placeholder="example@email.com" />
  67. <span asp-validation-for="InvoiceData.Email" class="text-danger"></span>
  68. </div>
  69. <div class="col-md-6">
  70. <label asp-for="InvoiceData.CarrierID" class="form-label">手機條碼</label>
  71. <input asp-for="InvoiceData.CarrierID" class="form-control" maxlength="8" placeholder="/ABC1234" />
  72. <small class="form-text text-muted">8碼,第1碼為/,例:/ABC1234</small>
  73. <span asp-validation-for="InvoiceData.CarrierID" class="text-danger"></span>
  74. </div>
  75. </div>
  76. <div class="row mb-3">
  77. <div class="col-md-6">
  78. <label asp-for="InvoiceData.BuyerIdentifier" class="form-label">購買者統編</label>
  79. <input asp-for="InvoiceData.BuyerIdentifier" class="form-control" maxlength="8" placeholder="12345678" />
  80. <small class="form-text text-muted">8位數字</small>
  81. <span asp-validation-for="InvoiceData.BuyerIdentifier" class="text-danger"></span>
  82. </div>
  83. @* <div class="col-md-6">
  84. <label asp-for="InvoiceData.LoveCode" class="form-label">愛心碼</label>
  85. <input asp-for="InvoiceData.LoveCode" class="form-control" maxlength="7" placeholder="123456" />
  86. <small class="form-text text-muted">輸入為捐贈發票</small>
  87. <span asp-validation-for="InvoiceData.LoveCode" class="text-danger"></span>
  88. </div> *@
  89. </div>
  90. <div class="d-grid gap-2 mt-4">
  91. <button type="submit" class="btn btn-primary btn-lg">送出</button>
  92. </div>
  93. </form>
  94. </div>
  95. </div>
  96. </div>
  97. </div>
  98. </div>
  99. @section Scripts {
  100. @{await Html.RenderPartialAsync("_ValidationScriptsPartial");}
  101. <script>
  102. document.addEventListener('DOMContentLoaded', function() {
  103. const requiredGroup = [
  104. document.querySelector('input[name="InvoiceData.Email"]'),
  105. document.querySelector('input[name="InvoiceData.CarrierID"]'),
  106. document.querySelector('input[name="InvoiceData.BuyerIdentifier"]')
  107. ];
  108. const form = document.querySelector('form[method="post"]');
  109. if (!form) {
  110. return;
  111. }
  112. form.addEventListener('submit', function(event) {
  113. const hasValue = requiredGroup.some(field => field && field.value.trim() !== '');
  114. if (!hasValue) {
  115. event.preventDefault();
  116. alert('Email、手機條碼、購買者統編至少需填寫一項。');
  117. }
  118. });
  119. });
  120. </script>
  121. }