Skip to content
Draft
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
23 changes: 14 additions & 9 deletions inventory/templates/inventory/system/backup_list.html
Original file line number Diff line number Diff line change
Expand Up @@ -52,7 +52,7 @@ <h2 class="card-title mb-0">系统备份管理</h2>
<a href="{% url 'download_backup' backup.name %}" class="btn btn-info" title="下载">
<i class="bi bi-download"></i>
</a>
<button type="button" class="btn btn-danger delete-backup" data-backup-name="{{ backup.name }}" title="删除">
<button type="button" class="btn btn-danger delete-backup" data-backup-name="{{ backup.name }}" data-delete-url="{% url 'delete_backup' backup.name %}" title="删除">
<i class="bi bi-trash"></i>
</button>
</div>
Expand All @@ -77,7 +77,7 @@ <h5 class="text-muted">暂无备份数据</h5>
</div>
</div>
</div>

<div class="col-lg-3">
<div class="card h-100">
<div class="card-header">
Expand All @@ -95,7 +95,7 @@ <h6 class="mb-0">总备份数</h6>
<h4 class="mb-0">{{ backups|length }}</h4>
</div>
</div>

<div class="d-flex align-items-center mb-4">
<div class="flex-shrink-0 me-3">
<div class="bg-light rounded p-2">
Expand All @@ -113,7 +113,7 @@ <h6 class="mb-0">最新备份</h6>
</p>
</div>
</div>

<div class="alert alert-info">
<div class="d-flex">
<div class="flex-shrink-0 me-2">
Expand Down Expand Up @@ -148,7 +148,11 @@ <h5 class="modal-title" id="deleteBackupModalLabel">删除备份</h5>
</div>
<div class="modal-footer">
<button type="button" class="btn btn-secondary" data-bs-dismiss="modal">取消</button>
<a href="#" id="confirm-delete-backup" class="btn btn-danger">确认删除</a>
<form method="post" id="confirm-delete-backup-form" class="d-inline">
{% csrf_token %}
<input type="hidden" name="confirm" value="on">
<button type="submit" class="btn btn-danger">确认删除</button>
</form>
</div>
</div>
</div>
Expand All @@ -160,16 +164,17 @@ <h5 class="modal-title" id="deleteBackupModalLabel">删除备份</h5>
const deleteBackupModal = new bootstrap.Modal(document.getElementById('deleteBackupModal'));
const deleteButtons = document.querySelectorAll('.delete-backup');
const backupNameToDelete = document.getElementById('backup-name-to-delete');
const confirmDeleteButton = document.getElementById('confirm-delete-backup');
const confirmDeleteForm = document.getElementById('confirm-delete-backup-form');

deleteButtons.forEach(button => {
button.addEventListener('click', function() {
const backupName = this.getAttribute('data-backup-name');
const deleteUrl = this.getAttribute('data-delete-url');
backupNameToDelete.textContent = backupName;
confirmDeleteButton.href = `/system/backup/delete/${backupName}/`;
confirmDeleteForm.action = deleteUrl;
deleteBackupModal.show();
});
});
});
</script>
{% endblock %}
{% endblock %}
37 changes: 37 additions & 0 deletions inventory/templates/inventory/system/delete_backup.html
Original file line number Diff line number Diff line change
@@ -0,0 +1,37 @@
{% extends 'inventory/base.html' %}

{% block title %}删除备份 - {{ block.super }}{% endblock %}

{% block content %}
<div class="row">
<div class="col-md-8 col-lg-6 mx-auto">
<div class="card">
<div class="card-header bg-danger text-white">
<h5 class="card-title mb-0">
<i class="bi bi-trash me-2"></i> 删除备份
</h5>
</div>
<div class="card-body">
<div class="alert alert-danger">
<strong>警告:</strong> 删除备份 <strong>{{ backup_name }}</strong> 后将无法恢复。
</div>

<form method="post" action="{% url 'delete_backup' backup_name %}">
{% csrf_token %}
<div class="form-check mb-4">
<input class="form-check-input" type="checkbox" name="confirm" id="confirm" required>
<label class="form-check-label" for="confirm">
我确认要永久删除此备份
</label>
</div>

<div class="d-flex justify-content-between">
<a href="{% url 'backup_list' %}" class="btn btn-outline-secondary">取消</a>
<button type="submit" class="btn btn-danger">确认删除</button>
</div>
</form>
</div>
</div>
</div>
</div>
{% endblock %}
37 changes: 37 additions & 0 deletions inventory/templates/inventory/system/delete_log_file.html
Original file line number Diff line number Diff line change
@@ -0,0 +1,37 @@
{% extends 'inventory/base.html' %}

{% block title %}删除日志文件 - {{ block.super }}{% endblock %}

{% block content %}
<div class="row">
<div class="col-md-8 col-lg-6 mx-auto">
<div class="card">
<div class="card-header bg-danger text-white">
<h5 class="card-title mb-0">
<i class="bi bi-trash me-2"></i> 删除日志文件
</h5>
</div>
<div class="card-body">
<div class="alert alert-danger">
<strong>警告:</strong> 删除日志文件 <strong>{{ file_name }}</strong> 后将无法恢复。
</div>

<form method="post" action="{% url 'delete_log_file' file_name %}">
{% csrf_token %}
<div class="form-check mb-4">
<input class="form-check-input" type="checkbox" name="confirm" id="confirm" required>
<label class="form-check-label" for="confirm">
我确认要永久删除此日志文件
</label>
</div>

<div class="d-flex justify-content-between">
<a href="{% url 'log_list' %}" class="btn btn-outline-secondary">取消</a>
<button type="submit" class="btn btn-danger">确认删除</button>
</div>
</form>
</div>
</div>
</div>
</div>
{% endblock %}
8 changes: 7 additions & 1 deletion inventory/templates/inventory/system/log_list.html
Original file line number Diff line number Diff line change
Expand Up @@ -244,9 +244,15 @@ <h1 class="mt-4">系统日志</h1>
<td>{{ log_file.size }}</td>
<td>{{ log_file.modified|date:"Y-m-d H:i:s" }}</td>
<td>
<a href="#" class="btn btn-sm btn-outline-primary">
<a href="{% url 'view_log_file' log_file.name %}" class="btn btn-sm btn-outline-secondary">
<i class="fas fa-eye me-1"></i> 查看
</a>
<a href="{% url 'download_log_file' log_file.name %}" class="btn btn-sm btn-outline-primary">
<i class="fas fa-download me-1"></i> 下载
</a>
<a href="{% url 'delete_log_file' log_file.name %}" class="btn btn-sm btn-outline-danger">
<i class="fas fa-trash me-1"></i> 删除
</a>
</td>
</tr>
{% endfor %}
Expand Down
36 changes: 18 additions & 18 deletions inventory/templates/inventory/system/restore_backup.html
Original file line number Diff line number Diff line change
Expand Up @@ -41,34 +41,34 @@ <h6 class="alert-heading">警告!恢复备份将覆盖当前数据</h6>
</div>
</div>
</div>

<h5 class="mb-3">备份详情</h5>
<div class="table-responsive mb-4">
<table class="table table-bordered">
<tbody>
<tr>
<th style="width: 150px;">备份名称</th>
<td>{{ backup.name }}</td>
<td>{{ backup_name }}</td>
</tr>
<tr>
<th>创建时间</th>
<td>{{ backup.created_at|date:"Y-m-d H:i:s" }}</td>
<td>{{ backup_info.created_at|default:"未知" }}</td>
</tr>
<tr>
<th>创建者</th>
<td>{{ backup.created_by }}</td>
<td>{{ backup_info.created_by|default:"未知" }}</td>
</tr>
<tr>
<th>备份大小</th>
<td>{{ backup.size }}</td>
<td>{{ backup_info.size|default:"未知" }}</td>
</tr>
</tbody>
</table>
</div>
<form method="post" action="{% url 'restore_backup' backup.name %}" id="restoreForm">

<form method="post" action="{% url 'restore_backup' backup_name %}" id="restoreForm">
{% csrf_token %}

<div class="mb-3">
<div class="form-check form-check-inline">
<input class="form-check-input" type="checkbox" id="restore_db" name="restore_db" checked disabled>
Expand All @@ -83,14 +83,14 @@ <h5 class="mb-3">备份详情</h5>
</label>
</div>
</div>

<div class="form-check mb-4">
<input class="form-check-input" type="checkbox" id="confirm_restore" name="confirm_restore" required>
<input class="form-check-input" type="checkbox" id="confirm_restore" name="confirm" required>
<label class="form-check-label" for="confirm_restore">
<strong>我确认要恢复此备份,并且了解此操作会覆盖当前系统数据</strong>
</label>
</div>

<div class="d-flex justify-content-between mt-4">
<a href="{% url 'backup_list' %}" class="btn btn-outline-secondary">
<i class="bi bi-x-circle me-1"></i> 取消
Expand All @@ -103,7 +103,7 @@ <h5 class="mb-3">备份详情</h5>
</div>
</div>
</div>

<div class="col-md-4">
<div class="card h-100">
<div class="card-header">
Expand All @@ -117,14 +117,14 @@ <h6 class="mb-3">恢复操作会导致:</h6>
<li>备份后的新数据将丢失</li>
<li>当前的会话可能会失效</li>
</ul>

<h6 class="mb-3">建议在恢复前:</h6>
<ul class="text-muted mb-4">
<li>创建当前系统的备份</li>
<li>通知所有用户暂停使用系统</li>
<li>选择系统使用较少的时间进行恢复</li>
</ul>

<div class="alert alert-primary">
<i class="bi bi-info-circle-fill me-2"></i>
恢复完成后可能需要重新登录系统
Expand Down Expand Up @@ -170,7 +170,7 @@ <h5 class="modal-title" id="confirmRestoreModalLabel">
const confirmText = document.getElementById('confirmText');
const finalRestoreBtn = document.getElementById('finalRestoreBtn');
const restoreForm = document.getElementById('restoreForm');

if (confirmRestoreBtn && confirmText && finalRestoreBtn && restoreForm) {
confirmRestoreBtn.addEventListener('click', function() {
const confirmCheckbox = document.getElementById('confirm_restore');
Expand All @@ -180,15 +180,15 @@ <h5 class="modal-title" id="confirmRestoreModalLabel">
alert('请先勾选确认框');
}
});

confirmText.addEventListener('input', function() {
finalRestoreBtn.disabled = this.value !== 'RESTORE';
});

finalRestoreBtn.addEventListener('click', function() {
restoreForm.submit();
});
}
});
</script>
{% endblock %}
{% endblock %}
28 changes: 28 additions & 0 deletions inventory/templates/inventory/system/view_log_file.html
Original file line number Diff line number Diff line change
@@ -0,0 +1,28 @@
{% extends 'inventory/base.html' %}

{% block title %}查看日志文件 - {{ block.super }}{% endblock %}

{% block content %}
<div class="row mb-4">
<div class="col-12">
<div class="card">
<div class="card-body d-flex justify-content-between align-items-center">
<div>
<h2 class="card-title mb-0">{{ file_name }}</h2>
<p class="text-muted mb-0">显示 {{ total_lines }} 行中的最后 {{ lines }} 行</p>
</div>
<div>
<a href="{% url 'download_log_file' file_name %}" class="btn btn-primary me-2">下载</a>
<a href="{% url 'log_list' %}" class="btn btn-outline-secondary">返回日志列表</a>
</div>
</div>
</div>
</div>
</div>

<div class="card">
<div class="card-body">
<pre class="mb-0" style="white-space: pre-wrap;">{{ content|safe }}</pre>
</div>
</div>
{% endblock %}
Loading