Files
jyls_django/business/views.py
Administrator b891d2369b gagreg
2025-12-24 13:51:20 +08:00

1340 lines
48 KiB
Python
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

from rest_framework.views import APIView
from rest_framework.response import Response
from rest_framework import status
import json
import ast
from User.models import User,Approval
from .models import PreFiling,ProjectRegistration,Bid,Case,Invoice,Caselog,SealApplication,Warehousing,RegisterPlatform,Announcement,LawyerFlie,Schedule,permission,role
from django.core.paginator import Paginator, EmptyPage, PageNotAnInteger
from utility.utility import flies
from datetime import datetime
from django.db.models import Count, Q
class registration(APIView):
def post(self,request,*args,**kwargs):
"""
预立案登记
:param request:
:param args:
:param kwargs:
:return:
"""
token = request.META.get('token')
times = request.data.get('times')
client_username = request.data.get('client_username')
party_username = request.data.get('party_username')
description = request.data.get('description')
Undertaker = request.data.get('Undertaker')
user = User.objects.get(token=token).username
if not all([times,description,Undertaker]):
return Response({'status': 'error', 'message': '缺少参数', 'code': 1}, status=status.HTTP_400_BAD_REQUEST)
PreFiling.objects.create(
times=times,
client_username=client_username,
party_username=party_username,
description=description,
Undertaker=Undertaker,
submit=user
)
return Response({'message': '登记成功', 'code': 0}, status=status.HTTP_200_OK)
class registrationList(APIView):
def post(self,request,*args,**kwargs):
"""
预立案登记列表接口
:param request:
:param args:
:param kwargs:
:return:
"""
project_registration_ids = ProjectRegistration.objects.values_list('user_id', flat=True)
bid_ids = Bid.objects.values_list('user_id', flat=True)
associated_ids = project_registration_ids.union(bid_ids)
prefiling_without_association = PreFiling.objects.exclude(id__in=associated_ids)
data = []
for prefiling in prefiling_without_association:
data.append({
"id": prefiling.id,
"client_username": prefiling.client_username,
"party_username": prefiling.party_username,
})
return Response({'message': '展示成功','data':data, 'code': 0}, status=status.HTTP_200_OK)
class registrationDetail(APIView):
def post(self,request,*args,**kwargs):
"""
预立案登记展示
:param request:
:param args:
:param kwargs:
:return:
"""
page = request.data.get('page')
per_page = request.data.get('per_page')
times = request.data.get('times')
end_time = request.data.get('end_time')
Undertaker = request.data.get('Undertaker')
if not all([page, per_page]):
return Response({'status': 'error', 'message': '缺少参数', 'code': 1}, status=status.HTTP_400_BAD_REQUEST)
Q_obj = Q()
if times and end_time:
Q_obj &= Q(times__gte=times) & Q(times__lte=end_time)
if Undertaker:
Q_obj &= Q(Undertaker__icontains=Undertaker)
pre = PreFiling.objects.filter(Q_obj)
total = len(pre)
paginator = Paginator(pre, per_page)
try:
user_agents_page = paginator.page(page)
except PageNotAnInteger:
user_agents_page = paginator.page(1)
except EmptyPage:
user_agents_page = paginator.page(paginator.num_pages)
data = []
for info in user_agents_page.object_list:
data.append({
"id": info.id,
'times': info.times,
"client_username": info.client_username,
"party_username": info.party_username,
"description": info.description,
"Undertaker": info.Undertaker,
})
return Response({'message': '展示成功',"total":total,'data':data, 'code': 0}, status=status.HTTP_200_OK)
class Project(APIView):
def post(self,request,*args,**kwargs):
"""
立项登记
:param request:
:param args:
:param kwargs:
:return:
"""
type = request.data.get('type')
ContractNo = request.data.get('ContractNo')
times = request.data.get('times')
responsiblefor = request.data.get('responsiblefor')
charge = request.data.get('charge')
contract = request.FILES.getlist('contract')
personincharge = request.data.get('personincharge')
id = request.data.get('user_id')
import datetime
if contract:
contract = flies(contract)
pro = ProjectRegistration.objects.create(
type=type,
ContractNo=ContractNo,
times=times,
responsiblefor=responsiblefor,
charge=charge,
contract=json.dumps(contract),
state="审核中",
user_id=id,
)
today = datetime.datetime.now()
formatted_date = today.strftime("%Y-%m-%d")
Approval.objects.create(
title=responsiblefor + "立项登记",
content=responsiblefor + "" + times + "办理立项登记,项目类型:" + type + ",合同编号:" + ContractNo + "描述:"+",负责人:"+responsiblefor+",收费情况:"+charge,
times=formatted_date,
personincharge=personincharge,
state='审核中',
type="立项登记",
user_id=pro.id
)
return Response({'message': '登记成功', 'code': 0}, status=status.HTTP_200_OK)
class Projectquerytype(APIView):
def post(self,request,*args,**kwargs):
"""
立项登记类型查询
:param request:
:param args:
:param kwargs:
:return:
"""
# 获取当前年份
current_year = datetime.now().year
# 今年的开始时间
start_of_year = datetime(current_year, 1, 1)
# 今年的结束时间
end_of_year = datetime(current_year, 12, 31)
# 格式化结果
start_of_year_str = start_of_year.strftime("%Y-%m-%d")
end_of_year_str = end_of_year.strftime("%Y-%m-%d")
type = request.data.get('type')
count = ProjectRegistration.objects.filter(type=type,times__gte=start_of_year_str,times__lte=end_of_year_str).count()
data = {
"count": count
}
return Response({'message': '查询成功',"data":data, 'code': 0}, status=status.HTTP_200_OK)
class ProjectDetail(APIView):
def post(self,request,*args,**kwargs):
"""
立项登记展示
:param request:
:param args:
:param kwargs:
:return:
"""
page = request.data.get('page')
per_page = request.data.get('per_page')
times = request.data.get('times')
end_time = request.data.get('end_time')
client_username = request.data.get('client_username')
party_username = request.data.get('party_username')
if not all([page, per_page]):
return Response({'status': 'error', 'message': '缺少参数', 'code': 1}, status=status.HTTP_400_BAD_REQUEST)
Q_obj = Q()
if times and end_time:
Q_obj &= Q(times__gte=times) & Q(times__lte=end_time)
if client_username:
pre = PreFiling.objects.filter(client_username__icontains=client_username)
pre_id = pre.values_list('id', flat=True)
Q_obj &= Q(user_id__in=pre_id)
if party_username:
pre = PreFiling.objects.filter(party_username__icontains=party_username)
pre_id = pre.values_list('id', flat=True)
Q_obj &= Q(user_id__in=pre_id)
pre = ProjectRegistration.objects.filter(Q_obj)
total = len(pre)
paginator = Paginator(pre, per_page)
try:
user_agents_page = paginator.page(page)
except PageNotAnInteger:
user_agents_page = paginator.page(1)
except EmptyPage:
user_agents_page = paginator.page(paginator.num_pages)
data = []
for info in user_agents_page.object_list:
pre = PreFiling.objects.get(id=info.user_id)
data.append({
"id": info.id,
'times': info.times,
"type": info.type,
"ContractNo": info.ContractNo,
"responsiblefor": info.responsiblefor,
"charge": info.charge,
"contract": info.contract,
"state": info.state,
"user_id": info.user_id,
"client_username": pre.client_username,
"party_username": pre.party_username,
"description": pre.description,
})
return Response({'message': '展示成功', "total": total, 'data': data, 'code': 0}, status=status.HTTP_200_OK)
class EditProject(APIView):
def post(self,request,*args,**kwargs):
"""
编辑立案登记
:param request:
:param args:
:param kwargs:
:return:
"""
id = request.data.get('id')
type = request.data.get('type')
ContractNo = request.data.get('ContractNo')
times = request.data.get('times')
responsiblefor = request.data.get('responsiblefor')
charge = request.data.get('charge')
contract = request.FILES.getlist('contract')
personincharge = request.data.get('personincharge')
pro = ProjectRegistration.objects.get(id=id)
import datetime
if contract:
contract = flies(contract)
pro.contract = json.dumps(contract)
pro.save(update_fields=['contract'])
pro.times = times
pro.type = type
pro.responsiblefor = responsiblefor
pro.charge = charge
pro.state ="审核中"
pro.save(update_fields=['ContractNo', 'times', 'type', 'responsiblefor', 'charge', 'state',"type2"])
today = datetime.datetime.now()
formatted_date = today.strftime("%Y-%m-%d")
Approval.objects.create(
title=responsiblefor + "立项登记重新编辑",
content=responsiblefor + "" + times + "办理立项登记,项目类型:" + type + ",合同编号:" + ContractNo + "描述:"+ ",负责人:" + responsiblefor + ",收费情况:" + charge,
times=formatted_date,
personincharge=personincharge,
state='审核中',
type="立项登记",
user_id=pro.id
)
return Response({'message': '编辑成功', 'code': 0}, status=status.HTTP_200_OK)
class BidRegistration(APIView):
def post(self,request,*args,**kwargs):
"""
投标登记
:param request:
:param args:
:param kwargs:
:return:
"""
BiddingUnit = request.data.get('BiddingUnit')
ProjectName = request.data.get('ProjectName')
times = request.data.get('times')
BiddingAnnouncement = request.FILES.getlist('BiddingAnnouncement')
personincharge = request.data.get('personincharge')
id = request.data.get('user_id')
if not all([BiddingUnit, ProjectName, times, personincharge,id]):
return Response({'status': 'error', 'message': '缺少参数', 'code': 1}, status=status.HTTP_400_BAD_REQUEST)
import datetime
bib = Bid.objects.create(
BiddingUnit=BiddingUnit,
ProjectName=ProjectName,
times=times,
BiddingAnnouncement=json.dumps(flies(BiddingAnnouncement)),
state="审核中",
user_id=id,
)
today = datetime.datetime.now()
formatted_date = today.strftime("%Y-%m-%d")
Approval.objects.create(
title=ProjectName + "投标登记",
content="项目名称:"+ProjectName+",申请日期:"+times,
times=formatted_date,
personincharge=personincharge,
state='审核中',
type="投标登记",
user_id=bib.id
)
return Response({'message': '登记成功', 'code': 0}, status=status.HTTP_200_OK)
class BidDetail(APIView):
def post(self,request,*args,**kwargs):
page = request.data.get('page')
per_page = request.data.get('per_page')
times = request.data.get('times')
end_time = request.data.get('end_time')
client_username = request.data.get('client_username')
party_username = request.data.get('party_username')
if not all([page, per_page]):
return Response({'status': 'error', 'message': '缺少参数', 'code': 1}, status=status.HTTP_400_BAD_REQUEST)
Q_obj = Q()
if times and end_time:
Q_obj &= Q(times__gte=times) & Q(times__lte=end_time)
if client_username:
pre = PreFiling.objects.filter(client_username__icontains=client_username)
pre_id = pre.values_list('id', flat=True)
Q_obj &= Q(user_id__in=pre_id)
if party_username:
pre = PreFiling.objects.filter(party_username__icontains=party_username)
pre_id = pre.values_list('id', flat=True)
Q_obj &= Q(user_id__in=pre_id)
pre = Bid.objects.filter(Q_obj)
total = len(pre)
paginator = Paginator(pre, per_page)
try:
user_agents_page = paginator.page(page)
except PageNotAnInteger:
user_agents_page = paginator.page(1)
except EmptyPage:
user_agents_page = paginator.page(paginator.num_pages)
data = []
for info in user_agents_page.object_list:
pre = PreFiling.objects.get(id=info.user_id)
data.append({
"id": info.id,
'times': info.times,
"BiddingUnit": info.BiddingUnit,
"ProjectName": info.ProjectName,
"BiddingAnnouncement": info.BiddingAnnouncement,
"state": info.state,
"client_username": pre.client_username,
"party_username": pre.party_username,
"description": pre.description,
})
return Response({'message': '展示成功', "total": total, 'data': data, 'code': 0}, status=status.HTTP_200_OK)
class caseManagement(APIView):
def post(self,request,*args,**kwargs):
"""
案件管理版块
:param request:
:param args:
:param kwargs:
:return:
"""
id = request.data.get('user_id')
times = request.data.get('times')
AgencyContract = request.FILES.getlist('AgencyContract')
Contractreturn = request.FILES.getlist('Contractreturn')
Closingapplication = request.FILES.getlist('Closingapplication')
ChangeRequest = request.data.get('ChangeRequest')
paymentcollection = request.data.get('paymentcollection')
personincharge = request.data.get('personincharge')
case = Case.objects.filter(user_id=id).first()
if not case:
case_id = Case.objects.create(
user_id=id,
times=times,
AgencyContract=json.dumps(flies(AgencyContract)),
Contractreturn=json.dumps(flies(Contractreturn)),
Closingapplication=json.dumps(flies(Closingapplication)),
ChangeRequest=ChangeRequest,
paymentcollection=paymentcollection,
state="审核中"
)
Approval.objects.create(
title="案件管理信息提交",
content=times+"提交了一份案件信息,请审核",
times=times,
personincharge=personincharge,
state='审核中',
type="案件管理",
user_id=case_id.id
)
else:
if times:
case.times = times
case.save(update_fields=['times'])
if AgencyContract:
case.AgencyContract = json.dumps(flies(AgencyContract))
case.save(update_fields=['AgencyContract'])
if Contractreturn:
case.Contractreturn = json.dumps(flies(Contractreturn))
case.save(update_fields=['Contractreturn'])
if Closingapplication:
case.Closingapplication = json.dumps(flies(Closingapplication))
case.save(update_fields=['Closingapplication'])
if ChangeRequest:
case.ChangeRequest = ChangeRequest
case.state = "审核中"
Approval.objects.create(
title="案件管理信息提交",
content=times + "提交了一份案件信息,更改了变更申请",
times=times,
personincharge=personincharge,
state='审核中',
type="案件管理",
user_id=case.id
)
case.save(update_fields=['ChangeRequest',"state"])
if paymentcollection:
case.paymentcollection = paymentcollection
case.save(update_fields=['paymentcollection'])
return Response({'message': '编辑成功', 'code': 0}, status=status.HTTP_200_OK)
class caseManagementDetail(APIView):
def post(self,request,*args,**kwargs):
"""
案件管理版块展示
:param request:
:param args:
:param kwargs:
:return:
"""
page = request.data.get('page')
per_page = request.data.get('per_page')
times = request.data.get('times')
end_time = request.data.get('end_time')
type = request.data.get('type')
if not all([page, per_page]):
return Response({'status': 'error', 'message': '缺少参数', 'code': 1}, status=status.HTTP_400_BAD_REQUEST)
Q_obj = Q()
if times and end_time:
Q_obj &= Q(times__gte=times) & Q(times__lte=end_time)
if type:
por_id = ProjectRegistration.objects.filter(type=type).values_list('user_id', flat=True)
Q_obj &= Q(user_id__in=por_id)
# if client_username:
# pre = PreFiling.objects.filter(client_username__icontains=client_username)
# pre_id = pre.values_list('id', flat=True)
# Q_obj &= Q(user_id__in=pre_id)
# if party_username:
# pre = PreFiling.objects.filter(party_username__icontains=party_username)
# pre_id = pre.values_list('id', flat=True)
# Q_obj &= Q(user_id__in=pre_id)
pre = Case.objects.filter(Q_obj)
total = len(pre)
paginator = Paginator(pre, per_page)
try:
user_agents_page = paginator.page(page)
except PageNotAnInteger:
user_agents_page = paginator.page(1)
except EmptyPage:
user_agents_page = paginator.page(paginator.num_pages)
data = []
for info in user_agents_page.object_list:
pre = PreFiling.objects.get(id=info.user_id)
pro = ProjectRegistration.objects.get(user_id=info.user_id)
data.append({
"id": info.id,
"ContractNo": pro.ContractNo, # 合同编号
"type_pro": pro.type, # 项目类型
"client_username": pre.client_username, # 委托人信息
"party_username": pre.party_username, # 相对方信息
"description": pre.description, # 项目简述
"responsiblefor": pro.responsiblefor, # 负责人
"charge": pro.charge,
'times': info.times,
"AgencyContract": info.AgencyContract,
"Contractreturn": info.Contractreturn,
"Closingapplication": info.Closingapplication,
"ChangeRequest": info.ChangeRequest,
"paymentcollection": info.paymentcollection,
"state": info.state,
"user_id": info.user_id,
})
return Response({'message': '展示成功', "total": total, 'data': data, 'code': 0}, status=status.HTTP_200_OK)
class Uploadinvoice(APIView):
def post(self,request,*args,**kwargs):
"""案件管理发票"""
id = request.data.get('user_id')
amount = request.data.get('amount')
file = request.FILES.getlist('file')
if not id:
return Response({'status': 'error', 'message': '缺少参数', 'code': 1}, status=status.HTTP_400_BAD_REQUEST)
Invoice.objects.create(
amount=amount,
file=json.dumps(flies(file)),
user_id=id,
)
return Response({'message': '上传成功', 'code': 0}, status=status.HTTP_200_OK)
class InvoiceDetail(APIView):
def post(self,request,*args,**kwargs):
"""
发票展示
:param request:
:param args:
:param kwargs:
:return:
"""
id = request.data.get('id')
if not id:
return Response({'status': 'error', 'message': '缺少参数', 'code': 1}, status=status.HTTP_400_BAD_REQUEST)
invoices = Invoice.objects.filter(user_id=id)
data = []
for invoice in invoices:
data.append({
"id": invoice.id,
"amount": invoice.amount,
"file": invoice.file,
})
return Response({'message': '展示成功', 'data': data, 'code': 0}, status=status.HTTP_200_OK)
class Log(APIView):
def post(self,request,*args,**kwargs):
"""
案件日志
"""
token = request.META.get('token')
id = request.data.get('user_id')
content = request.data.get('content')
file = request.FILES.getlist('file')
if not all([id,content]):
return Response({'status': 'error', 'message': '缺少参数', 'code': 1}, status=status.HTTP_400_BAD_REQUEST)
user = User.objects.get(token=token)
now = datetime.now()
date_str = now.strftime('%Y-%m-%d')
Caselog.objects.create(
user_id=id,
content=content,
file=json.dumps(flies(file)),
times = date_str,
username = user.username,
)
return Response({'message': '添加成功', 'code': 0}, status=status.HTTP_200_OK)
class LogDetail(APIView):
def post(self,request,*args,**kwargs):
"""
案件日志展示
:param request:
:param args:
:param kwargs:
:return:
"""
page = request.data.get('page')
per_page = request.data.get('per_page')
if not all([page, per_page]):
return Response({'status': 'error', 'message': '缺少参数', 'code': 1}, status=status.HTTP_400_BAD_REQUEST)
pre = Caselog.objects.all()
total = len(pre)
paginator = Paginator(pre, per_page)
try:
user_agents_page = paginator.page(page)
except PageNotAnInteger:
user_agents_page = paginator.page(1)
except EmptyPage:
user_agents_page = paginator.page(paginator.num_pages)
data = []
for info in user_agents_page.object_list:
data.append({
"id": info.id,
"content": info.content, # 合同编号
"times": info.times, # 项目类型
"username": info.username,
"file": info.file,
})
return Response({'message': '展示成功', "total": total, 'data': data, 'code': 0}, status=status.HTTP_200_OK)
class accumulate(APIView):
def post(self,request,*args,**kwargs):
"""
累加
:param request:
:param args:
:param kwargs:
:return:
"""
user_id = request.data.get('user_id')
paymentcollection = request.data.get('paymentcollection')
case = Case.objects.get(user_id=user_id)
if case.paymentcollection == "":
number = 0
else:
number = float(case.paymentcollection)
case.paymentcollection = float(number+float(paymentcollection))
case.save(update_fields=['paymentcollection'])
return Response({'message': '成功', 'code': 0}, status=status.HTTP_200_OK)
class preFilingLinkedCases(APIView):
def post(self,request,*args,**kwargs):
"""
预立案关联立案列表接口
:param request:
:param args:
:param kwargs:
:return:
"""
proa = ProjectRegistration.objects.all()
data = []
for prefiling in proa:
pre = PreFiling.objects.get(id=prefiling.user_id)
data.append({
"id": prefiling.user_id,
"client_username": pre.client_username,
"party_username": pre.party_username,
})
return Response({'message': '展示成功', 'data': data, 'code': 0}, status=status.HTTP_200_OK)
class Application(APIView):
def post(self,request,*args,**kwargs):
"""
申请用印
:param request:
:param args:
:param kwargs:
:return:
"""
token = request.META.get('token')
Printingpurpose = request.data.get('Printingpurpose')
CaseNumber = request.data.get('CaseNumber')
Reason = request.data.get('Reason')
seal_number = request.data.get('seal_number')
seal_type = request.data.get('seal_type')
file = request.FILES.getlist('file')
personincharge = request.data.get('personincharge')
if not all([Printingpurpose,Reason,seal_number,seal_type,file,personincharge]):
return Response({'status': 'error', 'message': '缺少参数', 'code': 1}, status=status.HTTP_400_BAD_REQUEST)
now = datetime.now()
date_str = now.strftime('%Y-%m-%d')
user = User.objects.get(token=token)
sea = SealApplication.objects.create(
Printingpurpose=Printingpurpose,
CaseNumber=CaseNumber,
Reason=Reason,
seal_number=seal_number,
seal_type=seal_type,
file=json.dumps(flies(file)),
times=date_str,
state="审核中",
username=user.username,
)
Approval.objects.create(
title=user.username + "申请用印",
content=user.username + "" + date_str + "申请用印,用印事由:" + Reason + ",盖章份数:" + seal_number + "盖着类型:" + seal_type,
times=date_str,
personincharge=personincharge,
state='审核中',
type="申请用印",
user_id=sea.id
)
return Response({'message': '添加成功', 'code': 0}, status=status.HTTP_200_OK)
class ApplicationDetail(APIView):
def post(self,request,*args,**kwargs):
"""
申请用印展示
:param request:
:param args:
:param kwargs:
:return:
"""
page = request.data.get('page')
per_page = request.data.get('per_page')
times = request.data.get('times')
end_time = request.data.get('end_time')
seal_type = request.data.get('seal_type')
if not all([page, per_page]):
return Response({'status': 'error', 'message': '缺少参数', 'code': 1}, status=status.HTTP_400_BAD_REQUEST)
Q_obj = Q()
if times and end_time:
Q_obj &= Q(times__gte=times) & Q(times__lte=end_time)
if seal_type:
Q_obj &= Q(seal_type=seal_type)
seas = SealApplication.objects.filter(Q_obj)
total = len(seas)
paginator = Paginator(seas, per_page)
try:
user_agents_page = paginator.page(page)
except PageNotAnInteger:
user_agents_page = paginator.page(1)
except EmptyPage:
user_agents_page = paginator.page(paginator.num_pages)
data = []
for info in user_agents_page.object_list:
data.append({
"id": info.id,
"Printingpurpose": info.Printingpurpose,
"CaseNumber": info.CaseNumber,
"Reason": info.Reason,
"seal_number": info.seal_number,
"seal_type": info.seal_type,
"file": info.file,
'times': info.times,
"state": info.state,
"username": info.username,
})
return Response({'message': '展示成功', "total": total, 'data': data, 'code': 0}, status=status.HTTP_200_OK)
class WarehousingRegistration(APIView):
def post(self,request,*args,**kwargs):
"""
入库登记
:param request:
:param args:
:param kwargs:
:return:
"""
unit = request.data.get('unit')
mark = request.data.get('mark')
lawyer = request.data.get('lawyer')
deadline = request.data.get('deadline')
contract = request.FILES.getlist('contract')
if not all([unit, mark, lawyer, deadline, contract]):
return Response({'status': 'error', 'message': '缺少参数', 'code': 1}, status=status.HTTP_400_BAD_REQUEST)
now = datetime.now()
date_str = now.strftime('%Y-%m-%d')
Warehousing.objects.create(
unit=unit,
mark=mark,
lawyer=lawyer,
deadline=deadline,
contract=json.dumps(flies(contract)),
times=date_str,
)
return Response({'message': '添加成功', 'code': 0}, status=status.HTTP_200_OK)
class WarehousingDetail(APIView):
def post(self,request,*args,**kwargs):
"""
入库登记展示
:param request:
:param args:
:param kwargs:
:return:
"""
page = request.data.get('page')
per_page = request.data.get('per_page')
times = request.data.get('times')
end_time = request.data.get('end_time')
unit = request.data.get('unit')
if not all([page, per_page]):
return Response({'status': 'error', 'message': '缺少参数', 'code': 1}, status=status.HTTP_400_BAD_REQUEST)
Q_obj = Q()
if times and end_time:
Q_obj &= Q(times__gte=times) & Q(times__lte=end_time)
if unit:
Q_obj &= Q(unit__icontains=unit)
seas = Warehousing.objects.filter(Q_obj)
total = len(seas)
paginator = Paginator(seas, per_page)
try:
user_agents_page = paginator.page(page)
except PageNotAnInteger:
user_agents_page = paginator.page(1)
except EmptyPage:
user_agents_page = paginator.page(paginator.num_pages)
data = []
for info in user_agents_page.object_list:
data.append({
"id": info.id,
"unit": info.unit,
"mark": info.mark,
"lawyer": info.lawyer,
"deadline": info.deadline,
"contract": info.contract,
"times": info.times,
})
return Response({'message': '展示成功', "total": total, 'data': data, 'code': 0}, status=status.HTTP_200_OK)
class PlatformRegistration(APIView):
def post(self,request,*args,**kwargs):
"""
注册平台登记
:param request:
:param args:
:param kwargs:
:return:
"""
platform = request.data.get('platform')
number = request.data.get('number')
password = request.data.get('password')
username = request.data.get('username')
if not all([platform, number, password, username]):
return Response({'status': 'error', 'message': '缺少参数', 'code': 1}, status=status.HTTP_400_BAD_REQUEST)
RegisterPlatform.objects.create(
platform=platform,
number=number,
password=password,
username=username,
)
return Response({'message': '添加成功', 'code': 0}, status=status.HTTP_200_OK)
class PlatformDetail(APIView):
def post(self,request,*args,**kwargs):
"""
注册平台登记展示
:param request:
:param args:
:param kwargs:
:return:
"""
page = request.data.get('page')
per_page = request.data.get('per_page')
seas = RegisterPlatform.objects.all()
total = len(seas)
paginator = Paginator(seas, per_page)
try:
user_agents_page = paginator.page(page)
except PageNotAnInteger:
user_agents_page = paginator.page(1)
except EmptyPage:
user_agents_page = paginator.page(paginator.num_pages)
data = []
for info in user_agents_page.object_list:
data.append({
"id": info.id,
"platform": info.platform,
"number": info.number,
"password": info.password,
"username": info.username,
})
return Response({'message': '展示成功', "total": total, 'data': data, 'code': 0}, status=status.HTTP_200_OK)
class EditPlatformDetail(APIView):
def post(self,request,*args,**kwargs):
"""
注册平台登记编辑
:param request:
:param args:
:param kwargs:
:return:
"""
ID = request.data.get('id')
platform = request.data.get('platform')
number = request.data.get('number')
password = request.data.get('password')
username = request.data.get('username')
if not all([platform, number, password, username,ID]):
return Response({'status': 'error', 'message': '缺少参数', 'code': 1}, status=status.HTTP_400_BAD_REQUEST)
reg = RegisterPlatform.objects.get(id=ID)
reg.platform = platform
reg.number = number
reg.password = password
reg.username = username
reg.save(update_fields=['platform', 'number', 'password', 'username'])
return Response({'message': '修改成功', 'code': 0}, status=status.HTTP_200_OK)
class DeletePlatformDetail(APIView):
def post(self,request,*args,**kwargs):
"""
删除注册平台登记
:param request:
:param args:
:param kwargs:
:return:
"""
ID = request.data.get('id')
RegisterPlatform.objects.get(id=ID).delete()
return Response({'message': '删除成功', 'code': 0}, status=status.HTTP_200_OK)
class bulletin(APIView):
def post(self,request,*args,**kwargs):
"""
公告
:param request:
:param args:
:param kwargs:
:return:
"""
title = request.data.get('title')
content = request.data.get('content')
file = request.FILES.getlist('file')
state = request.data.get('state')
token = request.META.get('token')
if not all([title, content]):
return Response({'status': 'error', 'message': '缺少参数', 'code': 1}, status=status.HTTP_400_BAD_REQUEST)
now = datetime.now()
date_str = now.strftime('%Y-%m-%d')
bol = 0
if state == "置顶":
bol = 1
user = User.objects.get(token=token).username
Announcement.objects.create(
title=title,
content=content,
file=json.dumps(flies(file)),
username=user,
times=date_str,
state=bol
)
return Response({'message': '添加成功', 'code': 0}, status=status.HTTP_200_OK)
class BulletinDetail(APIView):
def post(self,request,*args,**kwargs):
"""
公告展示
:param request:
:param args:
:param kwargs:
:return:
"""
page = request.data.get('page')
per_page = request.data.get('per_page')
seas = Announcement.objects.all().order_by('-state', '-times')
total = len(seas)
paginator = Paginator(seas, per_page)
try:
user_agents_page = paginator.page(page)
except PageNotAnInteger:
user_agents_page = paginator.page(1)
except EmptyPage:
user_agents_page = paginator.page(paginator.num_pages)
data = []
for info in user_agents_page.object_list:
data.append({
"id": info.id,
"title": info.title,
"content": info.content,
"times": info.times,
"file": info.file,
"username": info.username,
"state": info.state,
})
return Response({'message': '展示成功', "total": total, 'data': data, 'code': 0}, status=status.HTTP_200_OK)
class EditBulletin(APIView):
def post(self, request, *args, **kwargs):
"""
编辑公告
:param request:
:param args:
:param kwargs:
:return:
"""
ID = request.data.get('id')
title = request.data.get('title')
content = request.data.get('content')
file = request.FILES.getlist('file')
state = request.data.get('state')
token = request.META.get('HTTP_AUTHORIZATION')
if not all([title, content, ID]):
return Response({'status': 'error', 'message': '缺少参数', 'code': 1}, status=status.HTTP_400_BAD_REQUEST)
now = datetime.now()
date_str = now.strftime('%Y-%m-%d')
ann = Announcement.objects.get(id=ID)
if state:
bol = 0
if state == "置顶":
bol = 1
ann.state = bol
ann.save(update_fields=['state'])
user = User.objects.get(token=token).username
if title:
ann.title = title # 去掉多余的逗号
ann.save(update_fields=['title'])
if content:
ann.content = content # 去掉多余的逗号
ann.save(update_fields=['content'])
if file:
ann.file = json.dumps([f.name for f in file]) # 假设你想保存文件名列表
ann.save(update_fields=['file'])
ann.username = user # 去掉多余的逗号
ann.times = date_str # 去掉多余的逗号
ann.save(update_fields=['username', 'times'])
return Response({'message': '添加成功', 'code': 0}, status=status.HTTP_200_OK)
class deleteBulletin(APIView):
def post(self,request,*args,**kwargs):
ID = request.data.get('id')
Announcement.objects.get(id=ID).delete()
return Response({'message': '删除成功', 'code': 0}, status=status.HTTP_200_OK)
class Lawyersdocuments(APIView):
def post(self,request,*args,**kwargs):
title = request.data.get('title')
file = request.FILES.getlist('file')
remark = request.data.get('remark')
if not all([title, file]):
return Response({'status': 'error', 'message': '缺少参数', 'code': 1}, status=status.HTTP_400_BAD_REQUEST)
now = datetime.now()
date_str = now.strftime('%Y-%m-%d')
LawyerFlie.objects.create(
title=title,
remark=remark,
file=json.dumps(flies(file)),
times=date_str,
)
return Response({'message': '文件上传成功', 'code': 0}, status=status.HTTP_200_OK)
class LawyersdocumentsDetail(APIView):
def post(self,request,*args,**kwargs):
law = LawyerFlie.objects.all().order_by('-times')
total = law.count()
data = []
for info in law:
data.append({
"id": info.id,
"title": info.title,
"remark": info.remark,
"file": info.file,
"times": info.times,
})
return Response({'message': '展示成功', "total": total, 'data': data, 'code': 0}, status=status.HTTP_200_OK)
class LwaDetail(APIView):
def post(self,request,*args,**kwargs):
id = request.data.get('id')
LawyerFlie.objects.get(id=id).delete()
return Response({'message': '删除成功', 'code': 0}, status=status.HTTP_200_OK)
class CreateSchedule(APIView):
def post(self,request,*args,**kwargs):
"""
日常创建
:param request:
:param args:
:param kwargs:
:return:
"""
title = request.data.get('title')
tiems = request.data.get('tiems')
end_time = request.data.get('end_time')
remark = request.data.get('remark')
if not all([title, tiems, end_time]):
return Response({'status': 'error', 'message': '缺少参数', 'code': 1}, status=status.HTTP_400_BAD_REQUEST)
Schedule.objects.create(
title=title,
tiems=tiems,
end_time=end_time,
remark=remark,
state="未完成"
)
return Response({'message': '添加成功', 'code': 0}, status=status.HTTP_200_OK)
class DeleteSchedule(APIView):
def post(self,request,*args,**kwargs):
id = request.data.get('id')
Schedule.objects.get(id=id).delete()
return Response({'message': '删除成功', 'code': 0}, status=status.HTTP_200_OK)
class ScheduleDetail(APIView):
def post(self,request,*args,**kwargs):
"""
日程展示
:param request:
:param args:
:param kwargs:
:return:
"""
sches = Schedule.objects.filter(state="未完成")
page = request.data.get('page')
per_page = request.data.get('per_page')
total = len(sches)
paginator = Paginator(sches, per_page)
try:
user_agents_page = paginator.page(page)
except PageNotAnInteger:
user_agents_page = paginator.page(1)
except EmptyPage:
user_agents_page = paginator.page(paginator.num_pages)
data = []
for info in user_agents_page.object_list:
data.append({
"id": info.id,
"title": info.title,
"tiems": info.tiems,
"end_time": info.end_time,
"remark": info.remark,
'state': info.state,
})
return Response({'message': '展示成功', "total": total, 'data': data, 'code': 0}, status=status.HTTP_200_OK)
class handleSchedule(APIView):
def post(self,request,*args,**kwargs):
id = request.data.get('id')
state = request.data.get('state')
if not all([id, state]):
return Response({'status': 'error', 'message': '缺少参数', 'code': 1}, status=status.HTTP_400_BAD_REQUEST)
sc = Schedule.objects.get(id=id)
sc.state=state
sc.save(update_fields=['state'])
return Response({'message': '修改成功', 'code': 0}, status=status.HTTP_200_OK)
class AddRermission(APIView):
"""
添加权限
"""
def post(self,request,*args,**kwargs):
permission_name = request.data.get('permission_name')
permission_logo = request.data.get('permission_logo')
parent = request.data.get('parent')
if not all([permission_name,permission_logo,parent]):
return Response({'status': 'error', 'message': '缺少参数', 'code': 1}, status=status.HTTP_400_BAD_REQUEST)
permission.objects.create(
permission_name=permission_name,
permission_logo=permission_logo,
parent=parent,
)
return Response({'message': '添加成功', 'code': 0}, status=status.HTTP_200_OK)
class DisplayRermission(APIView):
def post(self,request,*args,**kwargs):
permissions = permission.objects.all()
# 先将数据转换为字典格式
data = []
permission_dict = {}
for per in permissions:
item = {
"id": str(per.id),
"permission_name": per.permission_name,
"permission_logo": per.permission_logo,
"parent": str(per.parent),
"children": []
}
data.append(item)
permission_dict[str(per.id)] = item
# 构建树形结构
tree = []
for item in data:
parent_id = item["parent"]
# 如果parent是0或者不存在说明是根节点
if parent_id == "0" or parent_id not in permission_dict:
tree.append(item)
else:
# 找到父节点并添加到children中
parent_node = permission_dict.get(parent_id)
if parent_node:
parent_node["children"].append(item)
return Response({
'message': '展示成功',
"data": tree,
'code': 0
}, status=status.HTTP_200_OK)
class DeleteRermission(APIView):
def post(self,request,*args,**kwargs):
ID = request.data.get('id')
permission.objects.get(id=ID).delete()
return Response({'message': '删除成功', 'code': 0}, status=status.HTTP_200_OK)
class EditRermission(APIView):
def post(self,request,*args,**kwargs):
id = request.data.get('id')
permission_name = request.data.get('permission_name')
permission_logo = request.data.get('permission_logo')
parent = request.data.get('parent')
per = permission.objects.get(id=id)
if permission_name:
per.permission_name = permission_name
per.save(update_fields=['permission_name'])
if permission_logo:
per.permission_logo = permission_logo
per.save(update_fields=['permission_logo'])
if parent:
per.parent = parent
per.save(update_fields=['parent'])
return Response({'message': '修改成功', 'code': 0}, status=status.HTTP_200_OK)
class addRole(APIView):
def post(self,request,*args,**kwargs):
RoleName = request.data.get('RoleName')
remark = request.data.get('remark')
if not all([RoleName]):
return Response({'status': 'error', 'message': '缺少参数', 'code': 1}, status=status.HTTP_400_BAD_REQUEST)
role.objects.create(RoleName=RoleName,remark=remark)
return Response({'message': '添加成功', 'code': 0}, status=status.HTTP_200_OK)
class DeleteRole(APIView):
def post(self,request,*args,**kwargs):
id = request.data.get('id')
role.objects.get(id=id).delete()
return Response({'message': '删除成功', 'code': 0}, status=status.HTTP_200_OK)
class EditRole(APIView):
def post(self,request,*args,**kwargs):
id = request.data.get('id')
RoleName = request.data.get('RoleName')
remark = request.data.get('remark')
if not all([id]):
return Response({'status': 'error', 'message': '缺少参数', 'code': 1}, status=status.HTTP_400_BAD_REQUEST)
ro = role.objects.get(id=id)
if RoleName:
ro.RoleName = RoleName
ro.save(update_fields=['RoleName'])
if remark:
ro.remark = remark
ro.save(update_fields=['remark'])
return Response({'message': '编辑成功', 'code': 0}, status=status.HTTP_200_OK)
class displayRole(APIView):
def post(self,request,*args,**kwargs):
RoleName = request.data.get('RoleName')
obj = Q()
if RoleName:
obj = Q(RoleName__icontains=RoleName)
roles = role.objects.filter(obj)
data = []
for ro in roles:
data.append({
"id": str(ro.id),
"role_name": ro.RoleName,
"remark": ro.remark,
})
return Response({'message': '展示成功','data' :data,'code': 0}, status=status.HTTP_200_OK)
class modifypermissions(APIView):
def post(self,request,*args,**kwargs):
id = request.data.get('id')
permissionId = request.data.get('permissionId')
if not all([id,permissionId]):
return Response({'status': 'error', 'message': '缺少参数', 'code': 1}, status=status.HTTP_400_BAD_REQUEST)
permissionId = ast.literal_eval(permissionId)
ro = role.objects.get(id=id)
ro.permissionId = permissionId
ro.save(update_fields=['permissionId'])
return Response({'message': '权限修改成功', 'code': 0}, status=status.HTTP_200_OK)