feat: ofm 车辆审批
This commit is contained in:
parent
0183234497
commit
ba8b258ee7
|
@ -58,39 +58,28 @@ class LendingSeal(CommonBDModel):
|
||||||
return_date = models.DateField('拟归还日期', blank=True, null=True)
|
return_date = models.DateField('拟归还日期', blank=True, null=True)
|
||||||
actual_return_date = models.DateField('实际归还日期', blank=True, null=True)
|
actual_return_date = models.DateField('实际归还日期', blank=True, null=True)
|
||||||
reason = models.CharField('借用理由', max_length=100, blank=True, null=True)
|
reason = models.CharField('借用理由', max_length=100, blank=True, null=True)
|
||||||
# submit_user = models.ForeignKey(
|
|
||||||
# User, verbose_name='提交人', on_delete=models.CASCADE, null=True, blank=True, related_name='seal_submit_user')
|
|
||||||
ticket = models.ForeignKey('wf.ticket', verbose_name='关联工单',
|
ticket = models.ForeignKey('wf.ticket', verbose_name='关联工单',
|
||||||
on_delete=models.SET_NULL, related_name='seal_ticket', null=True, blank=True, db_constraint=False)
|
on_delete=models.SET_NULL, related_name='seal_ticket', null=True, blank=True, db_constraint=False)
|
||||||
note = models.TextField('备注', null=True, blank=True)
|
note = models.TextField('备注', null=True, blank=True)
|
||||||
|
|
||||||
|
|
||||||
# class Vehicle(CommonADModel):
|
class Vehicle(CommonADModel):
|
||||||
# """TN: 用车申请"""
|
"""TN: 用车申请"""
|
||||||
|
start_time = models.DateField('出车时间', blank=True, null=True)
|
||||||
# submit_user = models.ForeignKey(
|
end_time = models.DateField('还车时间', blank=True, null=True)
|
||||||
# User, verbose_name='用车人', on_delete=models.CASCADE, null=True, blank=True, related_name='vehicle_submit_user')
|
location = models.CharField('出发地点', null=True, blank=True, max_length=100)
|
||||||
# approval_user = models.ForeignKey(
|
destination = models.CharField('到达地点', null=True, blank=True, max_length=100)
|
||||||
# User, verbose_name='审批人', on_delete=models.CASCADE, null=True, blank=True, related_name='vehicle_approval_user'
|
start_km = models.PositiveIntegerField('出发公里数')
|
||||||
# )
|
end_km = models.PositiveIntegerField('归还公里数')
|
||||||
# start_time = models.DateTimeField('出车时间')
|
actual_km = models.PositiveIntegerField('实际行驶公里数', editable=False)
|
||||||
# end_time = models.DateTimeField('还车时间')
|
is_city = models.BooleanField('是否市内用车', default=True)
|
||||||
# location = models.CharField('出发地点', null=True, blank=True, max_length=100)
|
reason = models.CharField('用车事由', max_length=100)
|
||||||
# destination = models.CharField('到达地点', null=True, blank=True, max_length=100)
|
ticket = models.ForeignKey('wf.ticket', verbose_name='关联工单',
|
||||||
# start_km = models.PositiveIntegerField('出发公里数')
|
on_delete=models.SET_NULL, related_name='vehicle_ticket', null=True, blank=True, db_constraint=False)
|
||||||
# end_km = models.PositiveIntegerField('归还公里数')
|
def save(self, *args, **kwargs):
|
||||||
# actual_km = models.PositiveIntegerField('实际行驶公里数', editable=False)
|
if self.end_km and self.start_km:
|
||||||
# is_city = models.BooleanField('是否市内用车', default=True)
|
self.actual_km = self.end_km - self.start_km
|
||||||
# reason = models.CharField('用车事由', max_length=100)
|
return super().save(*args, **kwargs)
|
||||||
# ticket = models.ForeignKey('wf.ticket', verbose_name='关联工单',
|
|
||||||
# on_delete=models.SET_NULL, related_name='vehicle_ticket', null=True, blank=True, db_constraint=False)
|
|
||||||
# state = models.PositiveIntegerField(
|
|
||||||
# '状态', choices=MTASK_STATES, default=MTASK_CREATED, help_text=str(MTASK_STATES))
|
|
||||||
|
|
||||||
# def save(self, *args, **kwargs):
|
|
||||||
# if self.end_km and self.start_km:
|
|
||||||
# self.actual_km = self.end_km - self.start_km
|
|
||||||
# return super().save(*args, **kwargs)
|
|
||||||
|
|
||||||
|
|
||||||
# class FileRecord(CommonBDModel):
|
# class FileRecord(CommonBDModel):
|
||||||
|
|
|
@ -1,5 +1,5 @@
|
||||||
from .models import (Mroom, MroomBooking, MroomSlot, LendingSeal)
|
from .models import (Mroom, MroomBooking, MroomSlot, LendingSeal, Vehicle)
|
||||||
# Vehicle, Publicity,
|
# , Publicity,
|
||||||
# FileRecord, BorrowRecord, Publicity, PatentInfo, PaperOfm, Platform, Project, PatentRecord, PaperRecord, ProjectApproval, ProjectInfo)
|
# FileRecord, BorrowRecord, Publicity, PatentInfo, PaperOfm, Platform, Project, PatentRecord, PaperRecord, ProjectApproval, ProjectInfo)
|
||||||
from apps.utils.serializers import CustomModelSerializer
|
from apps.utils.serializers import CustomModelSerializer
|
||||||
from rest_framework import serializers
|
from rest_framework import serializers
|
||||||
|
@ -80,17 +80,18 @@ class MroomSlotSerializer(CustomModelSerializer):
|
||||||
|
|
||||||
class LendingSealSerializer(CustomModelSerializer):
|
class LendingSealSerializer(CustomModelSerializer):
|
||||||
create_by_name = serializers.CharField(source='create_by.name', read_only=True)
|
create_by_name = serializers.CharField(source='create_by.name', read_only=True)
|
||||||
|
belong_dept_name = serializers.CharField(source='belong_dept.name', read_only=True)
|
||||||
class Meta:
|
class Meta:
|
||||||
model = LendingSeal
|
model = LendingSeal
|
||||||
fields = '__all__'
|
fields = '__all__'
|
||||||
read_only_fields = EXCLUDE_FIELDS
|
read_only_fields = EXCLUDE_FIELDS
|
||||||
|
|
||||||
|
|
||||||
# class VehicleSerializer(CustomModelSerializer):
|
class VehicleSerializer(CustomModelSerializer):
|
||||||
# class Meta:
|
class Meta:
|
||||||
# model = Vehicle
|
model = Vehicle
|
||||||
# fields = '__all__'
|
fields = '__all__'
|
||||||
# read_only_fields = EXCLUDE_FIELDS + ['actual_km']
|
read_only_fields = EXCLUDE_FIELDS + ['actual_km']
|
||||||
|
|
||||||
|
|
||||||
# class FileRecordSerializer(CustomModelSerializer):
|
# class FileRecordSerializer(CustomModelSerializer):
|
||||||
|
|
|
@ -1,7 +1,7 @@
|
||||||
|
|
||||||
from apps.wf.models import Ticket
|
from apps.wf.models import Ticket
|
||||||
# TicketFlow, Transition, Workflow, CustomField, State,
|
# TicketFlow, Transition, Workflow, CustomField, State,
|
||||||
from apps.ofm.models import LendingSeal
|
from apps.ofm.models import LendingSeal, Vehicle
|
||||||
from rest_framework.exceptions import ParseError
|
from rest_framework.exceptions import ParseError
|
||||||
|
|
||||||
|
|
||||||
|
@ -13,9 +13,6 @@ def seal_submit_validate(ins: LendingSeal):
|
||||||
|
|
||||||
def bind_lendingseal(ticket: Ticket, transition, new_ticket_data: dict):
|
def bind_lendingseal(ticket: Ticket, transition, new_ticket_data: dict):
|
||||||
ins = LendingSeal.objects.get(id=new_ticket_data['t_id'])
|
ins = LendingSeal.objects.get(id=new_ticket_data['t_id'])
|
||||||
# if ins.submit_time is not None:
|
|
||||||
# raise ParseError('该印章申请不可提交审批')
|
|
||||||
# seal_submit_validate(ins)
|
|
||||||
ticket_data = ticket.ticket_data
|
ticket_data = ticket.ticket_data
|
||||||
ticket_data.update({
|
ticket_data.update({
|
||||||
't_model': 'LendingSeal',
|
't_model': 'LendingSeal',
|
||||||
|
@ -28,3 +25,17 @@ def bind_lendingseal(ticket: Ticket, transition, new_ticket_data: dict):
|
||||||
ins.ticket = ticket
|
ins.ticket = ticket
|
||||||
ins.save()
|
ins.save()
|
||||||
|
|
||||||
|
def bind_vehicle(ticket: Ticket, transition, new_ticket_data: dict):
|
||||||
|
ins = Vehicle.objects.get(id=new_ticket_data['t_id'])
|
||||||
|
ticket_data = ticket.ticket_data
|
||||||
|
ticket_data.update({
|
||||||
|
't_model': 'Vehicle',
|
||||||
|
't_id': ins.id,
|
||||||
|
})
|
||||||
|
ticket.ticket_data = ticket_data
|
||||||
|
ticket.create_by = ins.create_by
|
||||||
|
ticket.save()
|
||||||
|
if ins.ticket is None:
|
||||||
|
ins.ticket = ticket
|
||||||
|
ins.save()
|
||||||
|
|
||||||
|
|
|
@ -1,7 +1,7 @@
|
||||||
from django.urls import path, include
|
from django.urls import path, include
|
||||||
from rest_framework.routers import DefaultRouter
|
from rest_framework.routers import DefaultRouter
|
||||||
from apps.ofm.views import (MroomViewSet, MroomBookingViewSet, MroomSlotViewSet,LendingSealViewSet)
|
from apps.ofm.views import (MroomViewSet, MroomBookingViewSet, MroomSlotViewSet,LendingSealViewSet, VehicleViewSet)
|
||||||
# , VehicleViewSet, FilerecordViewSet, SealModelViewSet,
|
# , , FilerecordViewSet, SealModelViewSet,
|
||||||
# FileborrowViewSet, PublicityViewSet, PatentInfoViewSet, PaperViewSet, PlatformViewSet,
|
# FileborrowViewSet, PublicityViewSet, PatentInfoViewSet, PaperViewSet, PlatformViewSet,
|
||||||
# ProjectViewSet, PatentRecordViewSet, PaperRecordViewSet, ProjectApprovalViewSet, ProjectInfoViewSet)
|
# ProjectViewSet, PatentRecordViewSet, PaperRecordViewSet, ProjectApprovalViewSet, ProjectInfoViewSet)
|
||||||
|
|
||||||
|
@ -14,7 +14,7 @@ router.register('mroombooking', MroomBookingViewSet, basename='mroombooking')
|
||||||
router.register('mroomslot', MroomSlotViewSet, basename='mroomslot')
|
router.register('mroomslot', MroomSlotViewSet, basename='mroomslot')
|
||||||
# router.register('sealmanage', SealManageViewSet, basename='sealmanage')
|
# router.register('sealmanage', SealManageViewSet, basename='sealmanage')
|
||||||
router.register('lendingseal', LendingSealViewSet, basename='lendingseal')
|
router.register('lendingseal', LendingSealViewSet, basename='lendingseal')
|
||||||
# router.register('vehicle', VehicleViewSet, basename='vehicle')
|
router.register('vehicle', VehicleViewSet, basename='vehicle')
|
||||||
# router.register('filerecord', FilerecordViewSet, basename='filerecord')
|
# router.register('filerecord', FilerecordViewSet, basename='filerecord')
|
||||||
# router.register('fileborrow', FileborrowViewSet, basename='fileborrow')
|
# router.register('fileborrow', FileborrowViewSet, basename='fileborrow')
|
||||||
# router.register('publicity', PublicityViewSet, basename='publicity')
|
# router.register('publicity', PublicityViewSet, basename='publicity')
|
||||||
|
|
|
@ -1,9 +1,9 @@
|
||||||
from django.shortcuts import render
|
from django.shortcuts import render
|
||||||
from apps.utils.viewsets import CustomModelViewSet, CustomGenericViewSet
|
from apps.utils.viewsets import CustomModelViewSet, CustomGenericViewSet
|
||||||
from .models import Mroom, MroomBooking, MroomSlot, LendingSeal
|
from .models import Mroom, MroomBooking, MroomSlot, LendingSeal, Vehicle
|
||||||
# Vehicle, FileRecord, Seal
|
# , FileRecord, Seal
|
||||||
# BorrowRecord, Publicity, PatentInfo, PaperOfm, Platform, Project, PatentRecord, PaperRecord, ProjectApproval, ProjectInfo)
|
# BorrowRecord, Publicity, PatentInfo, PaperOfm, Platform, Project, PatentRecord, PaperRecord, ProjectApproval, ProjectInfo)
|
||||||
from .serializers import (MroomSerializer, MroomBookingSerializer, MroomSlotSerializer, LendingSealSerializer)
|
from .serializers import (MroomSerializer, MroomBookingSerializer, MroomSlotSerializer, LendingSealSerializer, VehicleSerializer)
|
||||||
# ,SealSerializer,
|
# ,SealSerializer,
|
||||||
# LendingSealSerializer, FileRecordSerializer, BorrowRecordSerializer, PublicitySerializer,
|
# LendingSealSerializer, FileRecordSerializer, BorrowRecordSerializer, PublicitySerializer,
|
||||||
# PatentInfoSerializer, PaperSerializer, PlatformSerializer, ProjectSerializer, ProjectMemberSerializer, PaperRecordSerializer, ProjectApprovalSerializer, ProjectInfoSerializer)
|
# PatentInfoSerializer, PaperSerializer, PlatformSerializer, ProjectSerializer, ProjectMemberSerializer, PaperRecordSerializer, ProjectApprovalSerializer, ProjectInfoSerializer)
|
||||||
|
@ -102,27 +102,6 @@ class MroomSlotViewSet(CustomListModelMixin, CustomGenericViewSet):
|
||||||
filterset_fields = ["mroom", "mdate", "booking"]
|
filterset_fields = ["mroom", "mdate", "booking"]
|
||||||
|
|
||||||
|
|
||||||
# class SealModelViewSet(CustomModelViewSet):
|
|
||||||
# """list: 印章列表
|
|
||||||
|
|
||||||
# 印章列表
|
|
||||||
# """
|
|
||||||
# queryset = Seal.objects.all()
|
|
||||||
# serializer_class = SealSerializer
|
|
||||||
# filterset_fields = ["name"]
|
|
||||||
# ordering = ["name"]
|
|
||||||
|
|
||||||
|
|
||||||
# class SealManageViewSet(CustomModelViewSet):
|
|
||||||
# """list: 印章管理
|
|
||||||
|
|
||||||
# 印章管理
|
|
||||||
# """
|
|
||||||
# queryset = SealManage.objects.all()
|
|
||||||
# serializer_class = SealManageSerializer
|
|
||||||
# filterset_fields = ["seal"]
|
|
||||||
|
|
||||||
|
|
||||||
class LendingSealViewSet(CustomModelViewSet):
|
class LendingSealViewSet(CustomModelViewSet):
|
||||||
"""list: 印章外出
|
"""list: 印章外出
|
||||||
|
|
||||||
|
@ -134,17 +113,18 @@ class LendingSealViewSet(CustomModelViewSet):
|
||||||
serializer_class = LendingSealSerializer
|
serializer_class = LendingSealSerializer
|
||||||
filterset_class = SealFilter
|
filterset_class = SealFilter
|
||||||
ordering = ["create_time"]
|
ordering = ["create_time"]
|
||||||
|
data_filter = True
|
||||||
|
|
||||||
|
|
||||||
# class VehicleViewSet(CustomModelViewSet):
|
class VehicleViewSet(CustomModelViewSet):
|
||||||
# """list: 车辆
|
"""list: 车辆
|
||||||
|
|
||||||
# 车辆
|
车辆
|
||||||
# """
|
"""
|
||||||
# queryset = Vehicle.objects.all()
|
queryset = Vehicle.objects.all()
|
||||||
# serializer_class = VehicleSerializer
|
serializer_class = VehicleSerializer
|
||||||
# filterset_fields = ["submit_user"]
|
filterset_fields = ["submit_user"]
|
||||||
# ordering = ["create_time"]
|
ordering = ["create_time"]
|
||||||
|
|
||||||
|
|
||||||
# class FilerecordViewSet(CustomModelViewSet):
|
# class FilerecordViewSet(CustomModelViewSet):
|
||||||
|
|
Loading…
Reference in New Issue