commit
This commit is contained in:
parent
691993373d
commit
808c6e7a7e
|
@ -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': '一级部门',
|
||||
|
|
|
@ -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>
|
||||
|
@ -241,3 +242,61 @@
|
|||
|
||||
});
|
||||
</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>
|
Loading…
Reference in New Issue