Merge branch 'develop' of https://e.coding.net/ctcdevteam/hberp/hberp into develop
This commit is contained in:
commit
2fed5b2aec
|
@ -0,0 +1,46 @@
|
|||
# Generated by Django 3.2.6 on 2021-08-12 02:13
|
||||
|
||||
from django.conf import settings
|
||||
from django.db import migrations, models
|
||||
import django.db.models.deletion
|
||||
import django.utils.timezone
|
||||
|
||||
|
||||
class Migration(migrations.Migration):
|
||||
|
||||
initial = True
|
||||
|
||||
dependencies = [
|
||||
migrations.swappable_dependency(settings.AUTH_USER_MODEL),
|
||||
('system', '0003_auto_20210812_0909'),
|
||||
]
|
||||
|
||||
operations = [
|
||||
migrations.CreateModel(
|
||||
name='Equipment',
|
||||
fields=[
|
||||
('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
|
||||
('create_time', models.DateTimeField(default=django.utils.timezone.now, help_text='创建时间', verbose_name='创建时间')),
|
||||
('update_time', models.DateTimeField(auto_now=True, help_text='修改时间', verbose_name='修改时间')),
|
||||
('is_deleted', models.BooleanField(default=False, help_text='删除标记', verbose_name='删除标记')),
|
||||
('name', models.CharField(max_length=50, verbose_name='设备名称')),
|
||||
('number', models.CharField(max_length=50, unique=True, verbose_name='设备编号')),
|
||||
('model', models.CharField(blank=True, max_length=10, null=True, verbose_name='规格型号')),
|
||||
('factory', models.CharField(blank=True, max_length=50, null=True, verbose_name='生产厂')),
|
||||
('production_date', models.DateField(blank=True, null=True, verbose_name='生产日期')),
|
||||
('buy_date', models.DateField(blank=True, null=True, verbose_name='购置日期')),
|
||||
('state', models.CharField(choices=[(1, '运转正常'), (0, '停用'), (2, '报废')], default=1, max_length=11, verbose_name='设备状态')),
|
||||
('parameter', models.TextField(blank=True, null=True, verbose_name='技术参数')),
|
||||
('place', models.CharField(blank=True, max_length=50, null=True, verbose_name='存放位置')),
|
||||
('description', models.CharField(blank=True, max_length=200, null=True, verbose_name='描述')),
|
||||
('belong_dept', models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.SET_NULL, related_name='equipment_belong_dept', to='system.organization', verbose_name='所属部门')),
|
||||
('create_by', models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.SET_NULL, related_name='equipment_create_by', to=settings.AUTH_USER_MODEL, verbose_name='创建人')),
|
||||
('keeper', models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.CASCADE, to=settings.AUTH_USER_MODEL, verbose_name='保管人')),
|
||||
('update_by', models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.SET_NULL, related_name='equipment_update_by', to=settings.AUTH_USER_MODEL, verbose_name='最后编辑人')),
|
||||
],
|
||||
options={
|
||||
'verbose_name': '设备信息',
|
||||
'verbose_name_plural': '设备信息',
|
||||
},
|
||||
),
|
||||
]
|
|
@ -9,32 +9,31 @@ from simple_history.models import HistoricalRecords
|
|||
|
||||
|
||||
|
||||
class Equipment(BaseModel):
|
||||
class Equipment(CommonBModel):
|
||||
"""
|
||||
设备台账信息
|
||||
"""
|
||||
state_choices = (
|
||||
('启用', '启用'),
|
||||
('停用', '停用'),
|
||||
(1, '运转正常'),
|
||||
(0, '停用'),
|
||||
(2, '报废')
|
||||
)
|
||||
node = models.IntegerField('序号', max_length=50, default=0)
|
||||
name = models.CharField('设备名称', max_length=50)
|
||||
number = models.CharField('设备编号', max_length=50,null=True, blank=True, unique=True)
|
||||
model = models.CharField('规格型号', max_length=10,null=True, blank=True)
|
||||
factory = models.CharField('生产厂', max_length=50)
|
||||
country = models.CharField('国别', max_length=50)
|
||||
productiondate = models.DateField('生产日期', max_length=50,null=True, blank=True, unique=True)
|
||||
buydate = models.DateField('购置日期', max_length=10,null=True, blank=True)
|
||||
gznumber = models.IntegerField('购置数量', max_length=10,null=True, blank=True,default=0)
|
||||
state = models.CharField('设备状态', max_length=11,choices=state_choices, default='启用')
|
||||
indicators = models.CharField('技术指标', max_length=50)
|
||||
address = models.CharField('存放位置', max_length=50,null=True, blank=True, unique=True)
|
||||
contact = models.CharField('经管联系人', max_length=20, blank=True, null=True)
|
||||
contactphone = models.CharField('联系电话', max_length=11,unique=True, blank=True, null=True)
|
||||
number = models.CharField('设备编号', max_length=50, unique=True)
|
||||
model = models.CharField('规格型号', max_length=10, null=True, blank=True)
|
||||
factory = models.CharField('生产厂', max_length=50, null=True, blank=True)
|
||||
production_date = models.DateField('生产日期', null=True, blank=True)
|
||||
buy_date = models.DateField('购置日期', null=True, blank=True)
|
||||
state = models.CharField('设备状态', max_length=11, choices=state_choices, default=1)
|
||||
parameter = models.TextField('技术参数', null=True, blank=True)
|
||||
place = models.CharField('存放位置', max_length=50, null=True, blank=True)
|
||||
keeper = models.ForeignKey(User, verbose_name='保管人', on_delete=models.CASCADE, null=True, blank=True)
|
||||
description = models.CharField('描述', max_length=200, blank=True, null=True)
|
||||
|
||||
class Meta:
|
||||
verbose_name = '供应商信息'
|
||||
verbose_name = '设备信息'
|
||||
verbose_name_plural = verbose_name
|
||||
|
||||
def __str__(self):
|
||||
return self.name
|
||||
return self.name + '-' + self.name
|
||||
|
|
@ -0,0 +1,18 @@
|
|||
from rest_framework.serializers import ModelSerializer
|
||||
|
||||
from .models import Equipment
|
||||
from apps.system.serializers import OrganizationSimpleSerializer, UserSimpleSerializer
|
||||
|
||||
|
||||
class EquipmentSerializer(ModelSerializer):
|
||||
belong_dept_ = OrganizationSimpleSerializer(source='belong_dept', read_only=True)
|
||||
keeper_ = UserSimpleSerializer(source='keeper', read_only=True)
|
||||
class Meta:
|
||||
model = Equipment
|
||||
fields = '__all__'
|
||||
|
||||
@staticmethod
|
||||
def setup_eager_loading(queryset):
|
||||
""" Perform necessary eager loading of data. """
|
||||
queryset = queryset.select_related('belong_dept','keeper')
|
||||
return queryset
|
|
@ -0,0 +1,12 @@
|
|||
from django.db.models import base
|
||||
from rest_framework import urlpatterns
|
||||
from apps.em.views import EquipmentViewSet
|
||||
from django.urls import path, include
|
||||
from rest_framework.routers import DefaultRouter
|
||||
|
||||
router = DefaultRouter()
|
||||
router.register('equipment', EquipmentViewSet, basename='equipment')
|
||||
urlpatterns = [
|
||||
path('', include(router.urls)),
|
||||
]
|
||||
|
|
@ -1,3 +1,21 @@
|
|||
from django.shortcuts import render
|
||||
from rest_framework.viewsets import ModelViewSet
|
||||
|
||||
from apps.em.models import Equipment
|
||||
from apps.em.serializers import EquipmentSerializer
|
||||
from apps.system.mixins import OptimizationMixin
|
||||
|
||||
|
||||
# Create your views here.
|
||||
class EquipmentViewSet(ModelViewSet):
|
||||
"""
|
||||
设备台账-增删改查
|
||||
"""
|
||||
perms_map = {'get': '*', 'post': 'equipment_create',
|
||||
'put': 'equipment_update', 'delete': 'equipment_delete'}
|
||||
queryset = Equipment.objects.all()
|
||||
serializer_class = EquipmentSerializer
|
||||
search_fields = ['number', 'name', 'place']
|
||||
filterset_fields = ['belong_dept', 'keeper']
|
||||
ordering_fields = ['create_time']
|
||||
ordering = ['-create_time']
|
||||
|
|
|
@ -0,0 +1,38 @@
|
|||
# Generated by Django 3.2.6 on 2021-08-12 01:09
|
||||
|
||||
from django.conf import settings
|
||||
from django.db import migrations, models
|
||||
import django.db.models.deletion
|
||||
import django.utils.timezone
|
||||
|
||||
|
||||
class Migration(migrations.Migration):
|
||||
|
||||
initial = True
|
||||
|
||||
dependencies = [
|
||||
migrations.swappable_dependency(settings.AUTH_USER_MODEL),
|
||||
]
|
||||
|
||||
operations = [
|
||||
migrations.CreateModel(
|
||||
name='Vendor',
|
||||
fields=[
|
||||
('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
|
||||
('create_time', models.DateTimeField(default=django.utils.timezone.now, help_text='创建时间', verbose_name='创建时间')),
|
||||
('update_time', models.DateTimeField(auto_now=True, help_text='修改时间', verbose_name='修改时间')),
|
||||
('is_deleted', models.BooleanField(default=False, help_text='删除标记', verbose_name='删除标记')),
|
||||
('name', models.CharField(max_length=50, unique=True, verbose_name='供应商名称')),
|
||||
('contact', models.CharField(max_length=20, verbose_name='联系人')),
|
||||
('contact_phone', models.CharField(max_length=11, unique=True, verbose_name='联系电话')),
|
||||
('address', models.CharField(blank=True, max_length=200, null=True, verbose_name='地址')),
|
||||
('description', models.CharField(blank=True, max_length=200, null=True, verbose_name='描述')),
|
||||
('create_by', models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.SET_NULL, related_name='vendor_create_by', to=settings.AUTH_USER_MODEL, verbose_name='创建人')),
|
||||
('update_by', models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.SET_NULL, related_name='vendor_update_by', to=settings.AUTH_USER_MODEL, verbose_name='最后编辑人')),
|
||||
],
|
||||
options={
|
||||
'verbose_name': '供应商信息',
|
||||
'verbose_name_plural': '供应商信息',
|
||||
},
|
||||
),
|
||||
]
|
|
@ -1,5 +1,4 @@
|
|||
from django.db import models
|
||||
from django.contrib.auth.models import AbstractUser
|
||||
from django.db.models.base import Model
|
||||
import django.utils.timezone as timezone
|
||||
from django.db.models.query import QuerySet
|
||||
|
@ -9,16 +8,15 @@ from simple_history.models import HistoricalRecords
|
|||
|
||||
|
||||
|
||||
class Vendor(BaseModel):
|
||||
class Vendor(CommonAModel):
|
||||
"""
|
||||
供应商信息
|
||||
"""
|
||||
|
||||
name = models.CharField('供应商名称', max_length=50)
|
||||
gyname = models.CharField('供应品名称', max_length=50,null=True, blank=True, unique=True)
|
||||
model = models.CharField('规格型号', max_length=10,null=True, blank=True)
|
||||
contact = models.CharField('联系人', max_length=20, blank=True, null=True)
|
||||
contactphone = models.CharField('联系电话', max_length=11,unique=True, blank=True, null=True)
|
||||
name = models.CharField('供应商名称', max_length=50, unique=True)
|
||||
contact = models.CharField('联系人', max_length=20)
|
||||
contact_phone = models.CharField('联系电话', max_length=11, unique=True)
|
||||
address = models.CharField('地址', max_length=200, null=True, blank=True)
|
||||
description = models.CharField('描述', max_length=200, blank=True, null=True)
|
||||
class Meta:
|
||||
verbose_name = '供应商信息'
|
||||
|
|
|
@ -0,0 +1,9 @@
|
|||
from rest_framework.serializers import ModelSerializer
|
||||
|
||||
from .models import Vendor
|
||||
|
||||
|
||||
class VendorSerializer(ModelSerializer):
|
||||
class Meta:
|
||||
model = Vendor
|
||||
fields = '__all__'
|
|
@ -0,0 +1,12 @@
|
|||
from django.db.models import base
|
||||
from rest_framework import urlpatterns
|
||||
from apps.pum.views import VendorViewSet
|
||||
from django.urls import path, include
|
||||
from rest_framework.routers import DefaultRouter
|
||||
|
||||
router = DefaultRouter()
|
||||
router.register('vendor', VendorViewSet, basename='vendor')
|
||||
urlpatterns = [
|
||||
path('', include(router.urls)),
|
||||
]
|
||||
|
|
@ -1,3 +1,21 @@
|
|||
from django.shortcuts import render
|
||||
from rest_framework.viewsets import ModelViewSet
|
||||
|
||||
from apps.pum.models import Vendor
|
||||
from apps.pum.serializers import VendorSerializer
|
||||
from apps.system.mixins import OptimizationMixin
|
||||
|
||||
|
||||
# Create your views here.
|
||||
class VendorViewSet(ModelViewSet):
|
||||
"""
|
||||
供应商-增删改查
|
||||
"""
|
||||
perms_map = {'get': '*', 'post': 'vendor_create',
|
||||
'put': 'vendor_update', 'delete': 'vendor_delete'}
|
||||
queryset = Vendor.objects.all()
|
||||
serializer_class = VendorSerializer
|
||||
search_fields = ['name', 'contact']
|
||||
filterset_fields = []
|
||||
ordering_fields = ['create_time']
|
||||
ordering = ['-create_time']
|
||||
|
|
|
@ -0,0 +1,58 @@
|
|||
# Generated by Django 3.2.6 on 2021-08-12 01:09
|
||||
|
||||
from django.db import migrations, models
|
||||
|
||||
|
||||
class Migration(migrations.Migration):
|
||||
|
||||
dependencies = [
|
||||
('system', '0002_auto_20210718_0918'),
|
||||
]
|
||||
|
||||
operations = [
|
||||
migrations.AlterField(
|
||||
model_name='dict',
|
||||
name='id',
|
||||
field=models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID'),
|
||||
),
|
||||
migrations.AlterField(
|
||||
model_name='dicttype',
|
||||
name='id',
|
||||
field=models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID'),
|
||||
),
|
||||
migrations.AlterField(
|
||||
model_name='file',
|
||||
name='id',
|
||||
field=models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID'),
|
||||
),
|
||||
migrations.AlterField(
|
||||
model_name='historicaldict',
|
||||
name='id',
|
||||
field=models.BigIntegerField(auto_created=True, blank=True, db_index=True, verbose_name='ID'),
|
||||
),
|
||||
migrations.AlterField(
|
||||
model_name='organization',
|
||||
name='id',
|
||||
field=models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID'),
|
||||
),
|
||||
migrations.AlterField(
|
||||
model_name='permission',
|
||||
name='id',
|
||||
field=models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID'),
|
||||
),
|
||||
migrations.AlterField(
|
||||
model_name='position',
|
||||
name='id',
|
||||
field=models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID'),
|
||||
),
|
||||
migrations.AlterField(
|
||||
model_name='role',
|
||||
name='id',
|
||||
field=models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID'),
|
||||
),
|
||||
migrations.AlterField(
|
||||
model_name='user',
|
||||
name='id',
|
||||
field=models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID'),
|
||||
),
|
||||
]
|
|
@ -110,7 +110,16 @@ class OrganizationSerializer(serializers.ModelSerializer):
|
|||
model = Organization
|
||||
fields = '__all__'
|
||||
|
||||
class OrganizationSimpleSerializer(serializers.ModelSerializer):
|
||||
class Meta:
|
||||
model = Organization
|
||||
fields = ['id', 'name']
|
||||
|
||||
class UserSimpleSerializer(serializers.ModelSerializer):
|
||||
class Meta:
|
||||
model = User
|
||||
fields = ['id', 'username', 'name']
|
||||
|
||||
class UserListSerializer(serializers.ModelSerializer):
|
||||
"""
|
||||
用户列表序列化
|
||||
|
|
|
@ -46,7 +46,9 @@ INSTALLED_APPS = [
|
|||
"django_filters",
|
||||
'simple_history',
|
||||
'apps.system',
|
||||
'apps.monitor'
|
||||
'apps.monitor',
|
||||
'apps.pum',
|
||||
'apps.em',
|
||||
]
|
||||
|
||||
MIDDLEWARE = [
|
||||
|
|
|
@ -56,6 +56,8 @@ urlpatterns = [
|
|||
path('api/file/', include(router.urls)),
|
||||
path('api/system/', include('apps.system.urls')),
|
||||
path('api/monitor/', include('apps.monitor.urls')),
|
||||
path('api/pum/', include('apps.pum.urls')),
|
||||
path('api/em/', include('apps.em.urls')),
|
||||
|
||||
# 前端页面入口
|
||||
path('',TemplateView.as_view(template_name="index.html"))
|
||||
|
|
Loading…
Reference in New Issue