from django.contrib.auth.decorators import login_required from django.http import JsonResponse, Http404 from django.shortcuts import render from django.template.loader import render_to_string from django.urls import reverse from django.views.decorators.http import require_http_methods from common.auth import custom_permission_required, permission_based_queryset from common.utils.page_helper import paginate_query_and_assign_numbers from .forms import * from .models import * @custom_permission_required('cpc_mgnt.view_sealusageregistry') def seal_reg_list_view(request): """ 基础数据-合规管理-用印登记表-列表视图 """ query_set = SealUsageRegistry.objects.filter().order_by('-record_id') applicant = request.GET.get('applicant', '') if applicant: query_set = query_set.filter(applicant__icontains=applicant) items = paginate_query_and_assign_numbers(request=request, queryset=query_set, per_page=10) query_params = '&applicant={}'.format(applicant) template_name = "合规管理-用印登记-Excel上传模板.xlsx" context = { "model_config": 'cpc_mgnt.SealUsageRegistry', "items": items, "breadcrumb_list": [ {"title": "首页", "name": "index"}, {"title": "合规管理", "name": "index"}, {"title": "用印登记表", "name": "seal_reg_list"} ], "filters": [ {"type": "text", "id": "applicant", "name": "applicant", "label": "申请人", "placeholder": "请输入申请人"} ], "excel_upload_config": { "template_name": template_name, "template_url": reverse("dl_excel_tpl", kwargs={'template_name': template_name}), "parse_url": reverse("ep_common_parse"), "save_url": reverse("save_excel_table_data") }, "query_params": query_params, "form_action_url": reverse('seal_reg_list'), "modify_url": reverse("seal_reg_list_modify"), "add_url": reverse("seal_reg_list_add"), "delete_url": reverse("seal_reg_list_delete"), "table_exclude_field_name": ["record_id"], # Add any fields you want to exclude "add_button": True, "report_excel_button": True, "export_url": reverse("export_data"), "import_excel_button": True } return render(request, 'items_list.html', context) @custom_permission_required('cpc_mgnt.add_sealusageregistry') def seal_reg_list_add(request): """ 基础数据-合规管理-用印登记表-添加视图 """ if request.method == 'POST': form = SealUsageRegistryForm(request.POST) if form.is_valid(): form.save() return JsonResponse({"message": "添加成功"}) else: form_html = render_to_string('form_partial.html', {'form': form}, request) return JsonResponse({"form_html": form_html, "errors": form.errors}, status=400) elif request.method == 'GET': form = SealUsageRegistryForm() form_html = render_to_string('form_partial.html', {'form': form}, request) return JsonResponse({"form_html": form_html}) else: return JsonResponse({"message": "无效的请求方法"}, status=405) @custom_permission_required('cpc_mgnt.change_sealusageregistry') def seal_reg_list_modify(request): """ 基础数据-合规管理-用印登记表-修改视图 """ if request.method == 'POST': if 'record_id' in request.POST: instance = SealUsageRegistry.objects.get(record_id=request.POST['record_id']) form = SealUsageRegistryForm(request.POST, instance=instance) else: form = SealUsageRegistryForm(request.POST) if form.is_valid(): form.save() return JsonResponse({"message": "保存成功"}) else: form_html = render_to_string('form_partial.html', {'form': form}, request) return JsonResponse({"form_html": form_html, "errors": form.errors}, status=400) elif request.method == 'GET': if 'record_id' in request.GET: try: instance = SealUsageRegistry.objects.get(record_id=request.GET['record_id']) form = SealUsageRegistryForm(instance=instance) except SealUsageRegistry.DoesNotExist: raise Http404("对象不存在") else: form = SealUsageRegistryForm() form_html = render_to_string('form_partial.html', {'form': form}, request) return JsonResponse({"form_html": form_html}) else: return JsonResponse({"message": "无效的请求方法"}, status=405) @require_http_methods(["POST"]) @custom_permission_required('cpc_mgnt.delete_sealusageregistry') def seal_reg_list_delete(request): """ 基础数据-合规管理-用印登记表-删除视图 """ target_id = request.POST.get('id') if target_id: SealUsageRegistry.objects.filter(record_id=target_id).delete() return JsonResponse({"message": "删除成功"}) else: return JsonResponse({"message": "请求参数错误"}, status=400) @custom_permission_required('cpc_mgnt.view_sealanddocumentborrowingregistry') def seal_doc_borrow_list_view(request): """ 基础数据-合规管理-印章证件借用登记-查看视图 """ query_set = SealAndDocumentBorrowingRegistry.objects.filter().order_by('-record_id') entity_name = request.GET.get('entity_name', '') item_type = request.GET.get('item_type', '') if entity_name: query_set = query_set.filter(entity_name__icontains=entity_name) if item_type: query_set = query_set.filter(item_type=item_type) items = paginate_query_and_assign_numbers(request=request, queryset=query_set, per_page=10) query_params = '&entity_name={}&item_type={}'.format(entity_name, item_type) template_name = "合规管理-印章证件借用登记-Excel上传模板.xlsx" context = { "model_config": 'cpc_mgnt.SealAndDocumentBorrowingRegistry', "items": items, "breadcrumb_list": [ {"title": "首页", "name": "index"}, {"title": "合规管理", "name": "index"}, {"title": "印章证件借用登记表", "name": "seal_doc_borrow_list"} ], "filters": [ {"type": "text", "id": "entity_name", "name": "entity_name", "label": "主体名称", "placeholder": "请输入主体名称"}, {"type": "select", "id": "seal_type", "name": "seal_type", "label": "借章/证类型", "options": [{"value": "公章", "display": "公章"}, {"value": "法人章", "display": "法人章"}, {"value": "合同章", "display": "合同章"}, {"value": "财务章", "display": "财务章"}, {"value": "其他", "display": "其他"}]} ], "excel_upload_config": { "template_name": template_name, "template_url": reverse("dl_excel_tpl", kwargs={'template_name': template_name}), "parse_url": reverse("ep_common_parse"), "save_url": reverse("save_excel_table_data") }, "query_params": query_params, "form_action_url": reverse('seal_doc_borrow_list'), "modify_url": reverse("seal_doc_borrow_list_modify"), "add_url": reverse("seal_doc_borrow_list_add"), "delete_url": reverse("seal_doc_borrow_list_delete"), "table_exclude_field_name": ["record_id"], # Add any fields you want to exclude "add_button": True, "report_excel_button": True, "export_url": reverse("export_data"), "import_excel_button": True } return render(request, 'items_list.html', context) @custom_permission_required('cpc_mgnt.add_sealanddocumentborrowingregistry') def seal_doc_borrow_list_add(request): """ 基础数据-合规管理-用印登记表-添加视图 """ if request.method == 'POST': form = SealAndDocumentBorrowingRegistryForm(request.POST, is_edit=False) if form.is_valid(): form.save() return JsonResponse({"message": "添加成功"}) else: form_html = render_to_string('form_partial.html', {'form': form}, request) return JsonResponse({"form_html": form_html, "errors": form.errors}, status=400) elif request.method == 'GET': form = SealAndDocumentBorrowingRegistryForm() form_html = render_to_string('form_partial.html', {'form': form}, request) return JsonResponse({"form_html": form_html}) else: return JsonResponse({"message": "无效的请求方法"}, status=405) @custom_permission_required('cpc_mgnt.change_sealanddocumentborrowingregistry') def seal_doc_borrow_list_modify(request): """ 基础数据-合规管理-印章证件借用登记-修改视图 """ if request.method == 'POST': if 'id' in request.POST: instance = SealAndDocumentBorrowingRegistry.objects.get(record_id=request.POST['id']) form = SealAndDocumentBorrowingRegistryForm(request.POST, instance=instance, is_edit=True) else: form = SealAndDocumentBorrowingRegistryForm(request.POST, is_edit=True) if form.is_valid(): instance = form.save(commit=False) # 手动设置 return_date 字段 if 'return_date' in request.POST: instance.return_date = request.POST.get('return_date') instance.save() return JsonResponse({"message": "保存成功"}) else: form_html = render_to_string('form_partial.html', {'form': form}, request) return JsonResponse({"form_html": form_html, "errors": form.errors}, status=400) elif request.method == 'GET': if 'id' in request.GET: try: instance = SealAndDocumentBorrowingRegistry.objects.get(record_id=request.GET['id']) form = SealAndDocumentBorrowingRegistryForm(instance=instance, is_edit=True) except SealAndDocumentBorrowingRegistry.DoesNotExist: raise Http404("对象不存在") else: form = SealAndDocumentBorrowingRegistryForm() form_html = render_to_string('form_partial.html', {'form': form}, request) return JsonResponse({"form_html": form_html}) else: return JsonResponse({"message": "无效的请求方法"}, status=405) @require_http_methods(["POST"]) @custom_permission_required('cpc_mgnt.delete_sealanddocumentborrowingregistry') def seal_doc_borrow_list_delete(request): """ 基础数据-合规管理-用印登记表-删除视图 """ target_id = request.POST.get('id') if target_id: SealAndDocumentBorrowingRegistry.objects.filter(record_id=target_id).delete() return JsonResponse({"message": "删除成功"}) else: return JsonResponse({"message": "请求参数错误"}, status=400) @custom_permission_required('cpc_mgnt.view_contractmanagementledger') @permission_based_queryset('cpc_mgnt', 'ContractManagementLedger', 'contract_number', 'project_leader', 'primary_department') def contract_mgmt_list_view(request): """ 基础数据-合规管理-合同管理台账-列表视图 """ # 声明查询集 query_set = request.query_set # 获取查询参数 contract_name = request.GET.get('contract_name', '') contract_type = request.GET.get('contract_type', '') # 根据提供的参数进行筛选 if contract_name: query_set = query_set.filter(contract_name__icontains=contract_name) if contract_type: query_set = query_set.filter(contract_type=contract_type) # 对查询结果进行分页,每页10条记录 items = paginate_query_and_assign_numbers( request=request, queryset=query_set, per_page=10 ) # 构建上下文查询参数字符串 query_params = '&contract_name={}&contract_type={}'.format(contract_name, contract_type) # Excel上传模板 template_name = "合规管理-合同管理台账-Excel上传模板.xlsx" # 构建上下文 context = { "model_config": 'cpc_mgnt.ContractManagementLedger', "items": items, "breadcrumb_list": [ {"title": "首页", "name": "index"}, {"title": "合规管理", "name": "index"}, {"title": "合同管理台账", "name": "contract_mgmt_list"} ], "filters": [ {"type": "text", "id": "contract_name", "name": "contract_name", "label": "项目名称", "placeholder": "请输入合同名称"}, {"type": "select", "id": "contract_type", "name": "contract_type", "label": "合同类别", "options": [{"value": "业务类", "display": "业务类"}, {"value": "采购类", "display": "采购类"}, {"value": "用工类", "display": "用工类"}, {"value": "租赁类", "display": "采购类"}, {"value": "其他类", "display": "其他类"}]} ], "excel_upload_config": { "template_name": template_name, "template_url": reverse("dl_excel_tpl", kwargs={'template_name': template_name}), "parse_url": reverse("ep_common_parse"), "save_url": reverse("save_excel_table_data") }, "query_params": query_params, "form_action_url": reverse('contract_mgmt_list'), "modify_url": reverse("contract_mgmt_list_modify"), "add_url": reverse("contract_mgmt_list_add"), "delete_url": reverse("contract_mgmt_list_delete"), "table_exclude_field_name": ["id", 'contract_number'], "add_button": True, "report_excel_button": True, "export_url": reverse("export_data"), "import_excel_button": True } return render(request, 'contract_list.html', context) @custom_permission_required('cpc_mgnt.add_contractmanagementledger') def contract_mgmt_list_add(request): """ 基础数据-合规管理-合同管理台账-添加视图 """ if request.method == 'POST': form = ContractManagementLedgerForm(request.POST) if form.is_valid(): form.save() return JsonResponse({"message": "添加成功"}) else: form_html = render_to_string('form_partial.html', {'form': form}, request) return JsonResponse({"form_html": form_html, "errors": form.errors}, status=400) elif request.method == 'GET': form = ContractManagementLedgerForm() form_html = render_to_string('form_partial.html', {'form': form}, request) return JsonResponse({"form_html": form_html}) else: return JsonResponse({"message": "无效的请求方法"}, status=405) @custom_permission_required('cpc_mgnt.change_contractmanagementledger') def contract_mgmt_list_modify(request): """ 基础数据-合规管理-合同管理台账-修改视图 """ if request.method == 'POST': if 'id' in request.POST: instance = ContractManagementLedger.objects.get(id=request.POST['id']) form = ContractManagementLedgerForm(request.POST, instance=instance) else: form = ContractManagementLedgerForm(request.POST) if form.is_valid(): form.save() return JsonResponse({"message": "保存成功"}) else: form_html = render_to_string('form_partial.html', {'form': form}, request) return JsonResponse({"form_html": form_html, "errors": form.errors}, status=400) elif request.method == 'GET': if 'id' in request.GET: try: instance = ContractManagementLedger.objects.get(id=request.GET['id']) form = ContractManagementLedgerForm(instance=instance) except ContractManagementLedger.DoesNotExist: raise Http404("对象不存在") else: form = ContractManagementLedgerForm() form_html = render_to_string('form_partial.html', {'form': form}, request) return JsonResponse({"form_html": form_html}) else: return JsonResponse({"message": "无效的请求方法"}, status=405) @require_http_methods(["POST"]) @custom_permission_required('cpc_mgnt.delete_contractmanagementledger') def contract_mgmt_list_delete(request): """ 基础数据-合规管理-合同管理台账-删除视图 """ contract_number = request.POST.get('id') if contract_number: ContractManagementLedger.objects.filter(id=contract_number).delete() return JsonResponse({"message": "删除成功"}) else: return JsonResponse({"message": "请求参数错误"}, status=400) @custom_permission_required('cpc_mgnt.view_companypolicies') @permission_based_queryset('cpc_mgnt', 'CompanyPolicies', 'policy_id', department_field='issuing_unit') def policies_list_view(request): """ 基础数据-合规管理-公司制度表-查看视图 """ # 声明查询集 query_set = request.query_set # 获取查询参数 policy_name = request.GET.get('policy_name', '') # 根据提供的参数进行筛选 if policy_name: query_set = query_set.filter(policy_name__icontains=policy_name) # 对查询结果进行分页,每页10条记录 items = paginate_query_and_assign_numbers( request=request, queryset=query_set, per_page=10 ) # 构建上下文查询参数字符串 query_params = '&policy_name={}'.format(policy_name) # Excel上传模板 template_name = "合规管理-公司制度-Excel上传模板.xlsx" # 构建上下文 context = { "model_config": 'cpc_mgnt.CompanyPolicies', "items": items, "breadcrumb_list": [ {"title": "首页", "name": "index"}, {"title": "合规管理", "name": "index"}, {"title": "公司制度表", "name": "policies_list"} ], "filters": [ {"type": "text", "id": "policy_name", "name": "policy_name", "label": "制度名称", "placeholder": "请输入制度名称"} ], "excel_upload_config": { "template_name": template_name, "template_url": reverse("dl_excel_tpl", kwargs={'template_name': template_name}), "parse_url": reverse("ep_common_parse"), "save_url": reverse("save_excel_table_data") }, "query_params": query_params, "form_action_url": reverse('policies_list'), "modify_url": reverse("policies_list_modify"), "add_url": reverse("policies_list_add"), "delete_url": reverse("policies_list_delete"), "table_exclude_field_name": ['policy_id'], "add_button": True, "report_excel_button": True, "export_url": reverse("export_data"), "import_excel_button": True } return render(request, 'policy_list.html', context) @custom_permission_required('cpc_mgnt.add_companypolicies') def policies_list_add(request): """ 基础数据-合规管理-公司制度表-添加视图 """ if request.method == 'POST': form = CompanyPoliciesForm(request.POST, request.FILES) if form.is_valid(): form.save() return JsonResponse({"message": "添加成功"}) else: form_html = render_to_string('form_partial.html', {'form': form}, request) return JsonResponse({"form_html": form_html, "errors": form.errors}, status=400) elif request.method == 'GET': form = CompanyPoliciesForm() form_html = render_to_string('form_partial.html', {'form': form}, request) return JsonResponse({"form_html": form_html}) else: return JsonResponse({"message": "无效的请求方法"}, status=405) @custom_permission_required('cpc_mgnt.change_companypolicies') def policies_list_modify(request): """ 基础数据-合规管理-公司制度表-修改视图 """ if request.method == 'POST': if 'id' in request.POST: instance = CompanyPolicies.objects.get(policy_id=request.POST['id']) form = CompanyPoliciesForm(request.POST, request.FILES, instance=instance) else: form = CompanyPoliciesForm(request.POST, request.FILES) if form.is_valid(): form.save() return JsonResponse({"message": "保存成功"}) else: form_html = render_to_string('form_partial.html', {'form': form}, request) return JsonResponse({"form_html": form_html, "errors": form.errors}, status=400) elif request.method == 'GET': if 'id' in request.GET: try: instance = CompanyPolicies.objects.get(policy_id=request.GET['id']) form = CompanyPoliciesForm(instance=instance) except CompanyPolicies.DoesNotExist: raise Http404("对象不存在") else: form = CompanyPoliciesForm() form_html = render_to_string('form_partial.html', {'form': form}, request) return JsonResponse({"form_html": form_html}) else: return JsonResponse({"message": "无效的请求方法"}, status=405) @require_http_methods(["POST"]) @custom_permission_required('cpc_mgnt.delete_companypolicies') def policies_list_delete(request): """ 基础数据-合规管理-公司制度表-删除视图 """ policy_id = request.POST.get('policy_id') if policy_id: CompanyPolicies.objects.filter(policy_id=policy_id).delete() return JsonResponse({"message": "删除成功"}) else: return JsonResponse({"message": "请求参数错误"}, status=400)