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.http import JsonResponse
from django.shortcuts import render from django.shortcuts import render
from django.urls import reverse from django.urls import reverse
@ -139,6 +141,27 @@ def gbo_list_view(request):
"operating_profit": {"type": "text", 'width': '180px', }, "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': { 'form_fields_config': {
"fields": { "fields": {
"primary_department": {"type": "select", 'label': '一级部门', "primary_department": {"type": "select", 'label': '一级部门',

View File

@ -53,6 +53,7 @@
</div> </div>
<div class="modal-footer"> <div class="modal-footer">
<button type="button" class="btn btn-primary" data-bs-dismiss="modal">关闭</button> <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> </div>
</div> </div>
@ -241,3 +242,61 @@
}); });
</script> </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>