asset_form.html 7.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162
  1. {% extends "assetapp/base.html" %}
  2. {% block title %}{% if action == 'create' %}新增资产{% else %}编辑资产{% endif %}{% endblock %}
  3. {% block content %}
  4. <div class="d-flex align-items-center mb-4">
  5. <a href="{% url 'asset_list' %}" class="btn btn-outline-secondary btn-sm me-3">
  6. <i class="bi bi-arrow-left"></i> 返回
  7. </a>
  8. <h4 class="mb-0">
  9. <i class="bi bi-{% if action == 'create' %}plus-circle{% else %}pencil{% endif %} me-2"></i>
  10. {% if action == 'create' %}新增资产{% else %}编辑资产 - {{ asset.asset_number }}{% endif %}
  11. </h4>
  12. </div>
  13. <form method="post" novalidate>
  14. {% csrf_token %}
  15. <div class="row g-3">
  16. <!-- 基本信息 -->
  17. <div class="col-md-6">
  18. <div class="card card-dark">
  19. <div class="card-header"><i class="bi bi-info-circle me-2"></i>基本信息</div>
  20. <div class="card-body">
  21. <div class="mb-3">
  22. <label class="form-label text-muted">{{ form.asset_number.label }} <span class="text-danger">*</span></label>
  23. {{ form.asset_number }}
  24. {% if form.asset_number.errors %}<div class="text-danger small mt-1">{{ form.asset_number.errors.0 }}</div>{% endif %}
  25. </div>
  26. <div class="mb-3">
  27. <label class="form-label text-muted">{{ form.name.label }} <span class="text-danger">*</span></label>
  28. {{ form.name }}
  29. {% if form.name.errors %}<div class="text-danger small mt-1">{{ form.name.errors.0 }}</div>{% endif %}
  30. </div>
  31. <div class="mb-3">
  32. <label class="form-label text-muted">{{ form.category.label }} <span class="text-danger">*</span></label>
  33. {{ form.category }}
  34. </div>
  35. <div class="row">
  36. <div class="col-md-6 mb-3">
  37. <label class="form-label text-muted">{{ form.brand.label }}</label>
  38. {{ form.brand }}
  39. </div>
  40. <div class="col-md-6 mb-3">
  41. <label class="form-label text-muted">{{ form.model.label }}</label>
  42. {{ form.model }}
  43. </div>
  44. </div>
  45. <div class="mb-3">
  46. <label class="form-label text-muted">{{ form.serial_number.label }}</label>
  47. {{ form.serial_number }}
  48. </div>
  49. </div>
  50. </div>
  51. </div>
  52. <!-- 位置与网络 -->
  53. <div class="col-md-6">
  54. <div class="card card-dark">
  55. <div class="card-header"><i class="bi bi-geo-alt me-2"></i>位置与网络</div>
  56. <div class="card-body">
  57. <div class="mb-3">
  58. <label class="form-label text-muted">{{ form.location.label }}</label>
  59. {{ form.location }}
  60. </div>
  61. <div class="row">
  62. <div class="col-md-6 mb-3">
  63. <label class="form-label text-muted">{{ form.cabinet.label }}</label>
  64. {{ form.cabinet }}
  65. </div>
  66. <div class="col-md-6 mb-3">
  67. <label class="form-label text-muted">{{ form.cabinet_position.label }}</label>
  68. {{ form.cabinet_position }}
  69. </div>
  70. </div>
  71. <div class="mb-3">
  72. <label class="form-label text-muted">{{ form.bmc_address.label }}</label>
  73. {{ form.bmc_address }}
  74. </div>
  75. <div class="mb-3">
  76. <label class="form-label text-muted">{{ form.ip_address.label }}</label>
  77. {{ form.ip_address }}
  78. </div>
  79. <div class="row">
  80. <div class="col-md-6 mb-3">
  81. <label class="form-label text-muted">{{ form.gpu_type.label }}</label>
  82. {{ form.gpu_type }}
  83. </div>
  84. <div class="col-md-6 mb-3">
  85. <label class="form-label text-muted">{{ form.gpu_count.label }}</label>
  86. {{ form.gpu_count }}
  87. </div>
  88. </div>
  89. <div class="mb-3">
  90. <label class="form-label text-muted">{{ form.status.label }}</label>
  91. {{ form.status }}
  92. </div>
  93. <div class="mb-3">
  94. <label class="form-label text-muted">{{ form.responsible_person.label }}</label>
  95. {{ form.responsible_person }}
  96. </div>
  97. <div class="mb-3">
  98. <label class="form-label text-muted">{{ form.department.label }}</label>
  99. {{ form.department }}
  100. </div>
  101. <div class="mb-3">
  102. <label class="form-label text-muted">{{ form.user.label }}</label>
  103. {{ form.user }}
  104. </div>
  105. <div class="mb-3">
  106. <label class="form-label text-muted">{{ form.business_type.label }}</label>
  107. {{ form.business_type }}
  108. </div>
  109. </div>
  110. </div>
  111. </div>
  112. <!-- 采购与质保 -->
  113. <div class="col-md-6">
  114. <div class="card card-dark">
  115. <div class="card-header"><i class="bi bi-receipt me-2"></i>采购与质保</div>
  116. <div class="card-body">
  117. <div class="row">
  118. <div class="col-md-6 mb-3">
  119. <label class="form-label text-muted">{{ form.purchase_date.label }}</label>
  120. {{ form.purchase_date }}
  121. </div>
  122. <div class="col-md-6 mb-3">
  123. <label class="form-label text-muted">{{ form.warranty_expire.label }}</label>
  124. {{ form.warranty_expire }}
  125. </div>
  126. </div>
  127. <div class="mb-3">
  128. <label class="form-label text-muted">{{ form.supplier.label }}</label>
  129. {{ form.supplier }}
  130. </div>
  131. </div>
  132. </div>
  133. </div>
  134. <!-- 备注 -->
  135. <div class="col-md-6">
  136. <div class="card card-dark">
  137. <div class="card-header"><i class="bi bi-sticky me-2"></i>备注</div>
  138. <div class="card-body">
  139. <div class="mb-3">
  140. <label class="form-label text-muted">{{ form.remark.label }}</label>
  141. {{ form.remark }}
  142. </div>
  143. </div>
  144. </div>
  145. </div>
  146. </div>
  147. <div class="mt-3">
  148. <button type="submit" class="btn btn-primary">
  149. <i class="bi bi-check-circle me-1"></i>{% if action == 'create' %}创建{% else %}保存{% endif %}
  150. </button>
  151. <a href="{% url 'asset_list' %}" class="btn btn-outline-secondary ms-2">取消</a>
  152. </div>
  153. </form>
  154. {% endblock %}