asset_import.html 3.2 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071
  1. {% extends "assetapp/base.html" %}
  2. {% block title %}导入Excel{% 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"><i class="bi bi-upload me-2"></i>导入Excel</h4>
  9. </div>
  10. <div class="row justify-content-center">
  11. <div class="col-md-8">
  12. <div class="card card-dark">
  13. <div class="card-header"><i class="bi bi-file-earmark-spreadsheet me-2"></i>上传文件</div>
  14. <div class="card-body">
  15. <div class="alert alert-info">
  16. <i class="bi bi-info-circle me-2"></i>
  17. <strong>使用说明:</strong>
  18. <ol class="mb-0 mt-2">
  19. <li>先 <a href="{% url 'download_template' %}" class="text-info">下载导入模板</a></li>
  20. <li>按模板格式填写资产数据</li>
  21. <li>上传填写好的Excel文件(.xlsx)</li>
  22. <li>资产编号重复的记录会被自动跳过</li>
  23. <li>分类不存在时会自动创建</li>
  24. </ol>
  25. </div>
  26. <form method="post" enctype="multipart/form-data">
  27. {% csrf_token %}
  28. <div class="mb-3">
  29. <label class="form-label">选择Excel文件</label>
  30. <div class="file-upload-wrapper">
  31. <input type="file" name="excel_file" id="id_excel_file" accept=".xlsx,.xls" class="d-none" onchange="updateFileName(this)">
  32. <button type="button" class="btn btn-outline-info" onclick="document.getElementById('id_excel_file').click()">
  33. <i class="bi bi-folder2-open me-1"></i>浏览文件
  34. </button>
  35. <span id="file-name" class="ms-3 file-name-text">未选择文件</span>
  36. </div>
  37. {% if form.excel_file.errors %}
  38. <div class="text-danger small mt-1">{{ form.excel_file.errors.0 }}</div>
  39. {% endif %}
  40. </div>
  41. <div class="d-flex">
  42. <button type="submit" class="btn btn-primary me-2">
  43. <i class="bi bi-upload me-1"></i>开始导入
  44. </button>
  45. <a href="{% url 'download_template' %}" class="btn btn-outline-info">
  46. <i class="bi bi-file-earmark-arrow-down me-1"></i>下载模板
  47. </a>
  48. </div>
  49. </form>
  50. </div>
  51. </div>
  52. </div>
  53. </div>
  54. <script>
  55. function updateFileName(input) {
  56. var nameSpan = document.getElementById('file-name');
  57. if (input.files && input.files.length > 0) {
  58. nameSpan.textContent = input.files[0].name;
  59. nameSpan.style.color = '#4A9EFF';
  60. } else {
  61. nameSpan.textContent = '未选择文件';
  62. nameSpan.style.color = '#8b949e';
  63. }
  64. }
  65. </script>
  66. {% endblock %}