This commit is contained in:
王思川 2024-06-02 14:47:17 +08:00
parent 691993373d
commit 808c6e7a7e
2 changed files with 83 additions and 1 deletions

View File

@ -1,4 +1,6 @@
from django.core.paginator import Paginator, PageNotAnInteger, EmptyPage
import json
from django.core.paginator import Paginator, PageNotAnInteger, EmptyPage
from django.http import JsonResponse
from django.shortcuts import render
from django.urls import reverse
@ -139,6 +141,27 @@ def gbo_list_view(request):
"operating_profit": {"type": "text", 'width': '180px', },
}
},
'model_info': json.dumps(
{
'app_label': 'perf_mgnt', # 应用名
'model_name': 'GroupBusinessTarget', # 模型名
'unique_together_fields': [
'primary_department',
'year',
'project_nature',
'project_nature',
'sales',
'total_revenue_target',
'new_revenue_target',
'existing_revenue_target',
'cost_limit',
'gross_profit',
'expense_limit',
'operating_profit'
], # 用于确定唯一记录的字段列表
}
),
'save_data_url': reverse('save_excel_table_data'), # 用于保存数据的URL
'form_fields_config': {
"fields": {
"primary_department": {"type": "select", 'label': '一级部门',

View File

@ -53,6 +53,7 @@
</div>
<div class="modal-footer">
<button type="button" class="btn btn-primary" data-bs-dismiss="modal">关闭</button>
<button id="saveButton" type="button" class="btn btn-primary" data-bs-dismiss="modal">保存</button>
</div>
</div>
</div>
@ -240,4 +241,62 @@
});
});
</script>
</script>
<script>
// 从Django模板获取model_info和save_data_url
var modelInfo = JSON.parse('{{ model_info|safe }}');
var saveDataUrl = '{{ save_data_url }}';
$(document).ready(function() {
$('#saveButton').on('click', function() {
var tableData = [];
// 遍历表格每一行
$('#excelPreviewModal table tbody tr').each(function() {
var rowData = {};
// 遍历当前行的每个单元格
$(this).find('td').each(function() {
var input = $(this).find('input');
var select = $(this).find('select');
// 检查单元格内是否有 input 或 select 元素,并使用它们的 name 属性作为键
if (input.length) {
var inputName = input.attr('name');
rowData[inputName] = input.val();
} else if (select.length) {
var selectName = select.attr('name');
rowData[selectName] = select.val();
}
});
tableData.push(rowData);
});
// 构建发送到后端的数据对象
var postData = {
app_label: modelInfo.app_label,
model_name: modelInfo.model_name,
unique_together_fields: modelInfo.unique_together_fields,
table_data: tableData
};
// 发送AJAX请求到后端保存数据
$.ajax({
url: saveDataUrl, // 使用从Django模板中获取的URL
method: 'POST',
contentType: 'application/json',
data: JSON.stringify(postData),
success: function(response) {
console.log('数据保存成功', response);
// 处理成功响应
},
error: function(xhr, status, error) {
console.error('保存数据时出错', error);
// 处理错误响应
}
});
});
});
</script>