From 768d6156b7070f0ed6f527f61b3663de2fcc9368 Mon Sep 17 00:00:00 2001
From: shilixia <2309368887@qq.com>
Date: Tue, 28 Sep 2021 14:01:30 +0800
Subject: [PATCH] xial
---
hb_client/src/api/inm.js | 29 ++++++++++++++
hb_client/src/router/index.js | 18 ++++++++-
hb_client/src/views/em/record.vue | 1 +
hb_client/src/views/mtm/step.vue | 3 ++
hb_client/src/views/procurement/vendor.vue | 7 +++-
hb_client/src/views/system/userupdate.vue | 39 +++++++++++++++++++
.../hrm/migrations/0002_auto_20210924_1127.py | 35 +++++++++++++++++
hb_server/apps/hrm/models.py | 11 +++++-
hb_server/apps/inm/serializers.py | 22 ++++++++++-
hb_server/apps/inm/urls.py | 3 +-
hb_server/apps/inm/views.py | 19 ++++++++-
.../pum/migrations/0002_vendor_material.py | 18 +++++++++
hb_server/apps/pum/models.py | 1 +
13 files changed, 197 insertions(+), 9 deletions(-)
create mode 100644 hb_server/apps/hrm/migrations/0002_auto_20210924_1127.py
create mode 100644 hb_server/apps/pum/migrations/0002_vendor_material.py
diff --git a/hb_client/src/api/inm.js b/hb_client/src/api/inm.js
index 3258078..354861a 100644
--- a/hb_client/src/api/inm.js
+++ b/hb_client/src/api/inm.js
@@ -28,3 +28,32 @@ export function deleteWarehouse(id, data) {
data
})
}
+//物料
+export function getInventoryList(query) {
+ return request({
+ url: '/inm/inventory/',
+ method: 'get',
+ params: query
+ })
+}
+export function createInventory(data) {
+ return request({
+ url: '/inm/inventory/',
+ method: 'post',
+ data
+ })
+}
+export function updateInventory(id, data) {
+ return request({
+ url: `/inm/inventory/${id}/`,
+ method: 'put',
+ data
+ })
+}
+export function deleteInventory(id, data) {
+ return request({
+ url: `/inm/inventory/${id}/`,
+ method: 'delete',
+ data
+ })
+}
diff --git a/hb_client/src/router/index.js b/hb_client/src/router/index.js
index 9685b0e..b88f42e 100644
--- a/hb_client/src/router/index.js
+++ b/hb_client/src/router/index.js
@@ -225,12 +225,26 @@ export const asyncRoutes = [
name: 'warehouse',
component: () => import('@/views/inm/warehouse'),
meta: { title: '仓库', icon: 'example', perms: ['index_manage'] }
+ }
+ ,
+ {
+ path: 'warehouse',
+ name: 'warehouse',
+ component: () => import('@/views/inm/warehouse'),
+ meta: { title: '物料库存', icon: 'example', perms: ['index_manage'] }
},
{
path: 'warehouse',
name: 'warehouse',
component: () => import('@/views/inm/warehouse'),
- meta: { title: '仓库', icon: 'example', perms: ['index_manage'] }
+ meta: { title: '半成品库存', icon: 'example', perms: ['index_manage'] }
+ }
+ ,
+ {
+ path: 'warehouse',
+ name: 'warehouse',
+ component: () => import('@/views/inm/warehouse'),
+ meta: { title: '成品库存', icon: 'example', perms: ['index_manage'] }
}
]
},
@@ -253,7 +267,7 @@ export const asyncRoutes = [
path: 'vendor',
name: 'vendor',
component: () => import('@/views/procurement/vendor'),
- meta: { title: '供应商', icon: 'example', perms: ['vendor_manage'] }
+ meta: { title: '采购订单', icon: 'example', perms: ['vendor_manage'] }
}
]
},
diff --git a/hb_client/src/views/em/record.vue b/hb_client/src/views/em/record.vue
index a862578..0db948c 100644
--- a/hb_client/src/views/em/record.vue
+++ b/hb_client/src/views/em/record.vue
@@ -198,6 +198,7 @@ export default {
page: 1,
page_size: 20,
},
+ equipmentoptions:[],
state_:{
0:'合格',
1:'准用',
diff --git a/hb_client/src/views/mtm/step.vue b/hb_client/src/views/mtm/step.vue
index 48f3c4d..978f979 100644
--- a/hb_client/src/views/mtm/step.vue
+++ b/hb_client/src/views/mtm/step.vue
@@ -545,6 +545,7 @@
}
this.getList();
},
+ //新增工序
handleCreateStep() {
this.step = Object.assign({}, defaultstep);
this.dialogTypes = "new";
@@ -640,6 +641,7 @@
});
},
+ //新增记录表
handleCreate() {
this.recordform = Object.assign({}, defaultrecordform);
this.dialogType = "new";
@@ -648,6 +650,7 @@
this.$refs["Forms"].clearValidate();
});
},
+ //新增字段
handlefieldCreate() {
this.field_choice = [''];
diff --git a/hb_client/src/views/procurement/vendor.vue b/hb_client/src/views/procurement/vendor.vue
index 9f1892e..71c5579 100644
--- a/hb_client/src/views/procurement/vendor.vue
+++ b/hb_client/src/views/procurement/vendor.vue
@@ -54,6 +54,9 @@
{{ scope.row.address }}
+
+ {{ scope.row.material }}
+
{{ scope.row.description }}
@@ -114,7 +117,9 @@
-
+
+
+
+
+
+
+
@@ -51,6 +60,32 @@
/>
+
+
+
+
+
+
+
+
+
+
@@ -168,6 +203,10 @@ export default {
{ value: "男", label: "男" },
{ value: "女", label: "女" }
],
+ jobstateOptions:[
+ { value: 1, label: "在职" },
+ { value: 2, label: "离职" }
+ ],
rules: {
ID_number: [
diff --git a/hb_server/apps/hrm/migrations/0002_auto_20210924_1127.py b/hb_server/apps/hrm/migrations/0002_auto_20210924_1127.py
new file mode 100644
index 0000000..89485c7
--- /dev/null
+++ b/hb_server/apps/hrm/migrations/0002_auto_20210924_1127.py
@@ -0,0 +1,35 @@
+# Generated by Django 3.2.6 on 2021-09-24 03:27
+
+from django.db import migrations, models
+import django.db.models.deletion
+
+
+class Migration(migrations.Migration):
+
+ dependencies = [
+ ('system', '0003_auto_20210812_0909'),
+ ('hrm', '0001_initial'),
+ ]
+
+ operations = [
+ migrations.AddField(
+ model_name='employee',
+ name='academic',
+ field=models.CharField(blank=True, max_length=50, null=True, verbose_name='学历'),
+ ),
+ migrations.AddField(
+ model_name='employee',
+ name='birthdate',
+ field=models.DateField(blank=True, null=True, verbose_name='出生年月'),
+ ),
+ migrations.AddField(
+ model_name='employee',
+ name='job',
+ field=models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.SET_NULL, to='system.position', verbose_name='岗位'),
+ ),
+ migrations.AddField(
+ model_name='employee',
+ name='jobstate',
+ field=models.IntegerField(choices=[(1, '在职'), (2, '离职')], default=1, verbose_name='在职状态'),
+ ),
+ ]
diff --git a/hb_server/apps/hrm/models.py b/hb_server/apps/hrm/models.py
index adb8b44..c448e64 100644
--- a/hb_server/apps/hrm/models.py
+++ b/hb_server/apps/hrm/models.py
@@ -3,22 +3,31 @@ 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
-from apps.system.models import CommonAModel, CommonBModel, Organization, User, Dict, File
+from apps.system.models import CommonAModel, CommonBModel, Organization, User, Dict, File,Position
from utils.model import SoftModel, BaseModel
from simple_history.models import HistoricalRecords
+
class Employee(CommonAModel):
"""
员工信息
"""
+ jobstate_choices = (
+ (1, '在职'),
+ (2, '离职'),
+ )
user = models.OneToOneField(User, on_delete=models.CASCADE, related_name='employee_user')
number = models.CharField('人员编号', max_length=50,null=True, blank=True, unique=True)
photo = models.CharField('证件照', max_length=1000, null=True, blank=True)
ID_number = models.CharField('身份证号', max_length=100, null=True, blank=True)
gender = models.CharField('性别', max_length=10, default='男')
signature = models.CharField('签名图片', max_length=200, null=True, blank=True)
+ birthdate = models.DateField('出生年月', null=True, blank=True)
+ academic = models.CharField('学历', max_length=50, null=True, blank=True)
+ jobstate = models.IntegerField('在职状态', choices=jobstate_choices, default=1)
+ job = models.ForeignKey(Position, null=True, blank=True, on_delete=models.SET_NULL, verbose_name='岗位')
class Meta:
verbose_name = '员工补充信息'
verbose_name_plural = verbose_name
diff --git a/hb_server/apps/inm/serializers.py b/hb_server/apps/inm/serializers.py
index 06607f1..808f470 100644
--- a/hb_server/apps/inm/serializers.py
+++ b/hb_server/apps/inm/serializers.py
@@ -1,8 +1,9 @@
from rest_framework import serializers
-from apps.inm.models import WareHouse
+from apps.inm.models import WareHouse,Inventory
from apps.system.serializers import UserSimpleSerializer
+from apps.mtm.serializers import MaterialSimpleSerializer
class WareHouseSerializer(serializers. ModelSerializer):
create_by_=UserSimpleSerializer('create_by', read_only=True)
@@ -13,4 +14,21 @@ class WareHouseSerializer(serializers. ModelSerializer):
class WareHouseCreateUpdateSerializer(serializers.ModelSerializer):
class Meta:
model = WareHouse
- fields = ['name', 'number', 'place']
\ No newline at end of file
+ fields = ['name', 'number', 'place']
+
+class WareHouseSimpleSerializer(serializers.ModelSerializer):
+ class Meta:
+ model = WareHouse
+ fields = ['name', 'number', 'place']
+
+class InventorySerializer(serializers. ModelSerializer):
+ material_= MaterialSimpleSerializer(source='material', read_only=True)
+ warehouse_ = WareHouseSimpleSerializer(source='material', read_only=True)
+ class Meta:
+ model = Inventory
+ fields = '__all__'
+
+class InventoryCreateUpdateSerializer(serializers.ModelSerializer):
+ class Meta:
+ model = Inventory
+ fields = ['material', 'count', 'warehouse']
diff --git a/hb_server/apps/inm/urls.py b/hb_server/apps/inm/urls.py
index 4faa6f3..d680958 100644
--- a/hb_server/apps/inm/urls.py
+++ b/hb_server/apps/inm/urls.py
@@ -1,11 +1,12 @@
from django.db.models import base
from rest_framework import urlpatterns
-from apps.inm.views import WarehouseViewSet
+from apps.inm.views import WarehouseViewSet,InventoryViewSet
from django.urls import path, include
from rest_framework.routers import DefaultRouter
router = DefaultRouter()
router.register('warehouse', WarehouseViewSet, basename='warehouse')
+router.register('inventory', InventoryViewSet, basename='inventory')
urlpatterns = [
path('', include(router.urls)),
]
diff --git a/hb_server/apps/inm/views.py b/hb_server/apps/inm/views.py
index 62ae7ac..4c3b8c4 100644
--- a/hb_server/apps/inm/views.py
+++ b/hb_server/apps/inm/views.py
@@ -1,8 +1,8 @@
from django.shortcuts import render
from rest_framework.viewsets import ModelViewSet
-from apps.inm.models import WareHouse
-from apps.inm.serializers import WareHouseSerializer, WareHouseCreateUpdateSerializer
+from apps.inm.models import WareHouse,Inventory
+from apps.inm.serializers import WareHouseSerializer, WareHouseCreateUpdateSerializer,InventorySerializer,InventoryCreateUpdateSerializer
from apps.system.mixins import CreateUpdateModelAMixin, OptimizationMixin
@@ -23,3 +23,18 @@ class WarehouseViewSet(CreateUpdateModelAMixin, ModelViewSet):
if self.action in ['create', 'update']:
return WareHouseCreateUpdateSerializer
return WareHouseSerializer
+class InventoryViewSet(CreateUpdateModelAMixin, ModelViewSet):
+ """
+ 物料基本信息-增删改查
+ """
+ perms_map = {'*': '*'}
+ queryset = Inventory.objects.select_related('create_by').all()
+ serializer_class = InventorySerializer
+ filterset_fields = []
+ ordering_fields = ['create_time']
+ ordering = ['-create_time']
+
+ def get_serializer_class(self):
+ if self.action in ['create', 'update']:
+ return InventoryCreateUpdateSerializer
+ return InventorySerializer
diff --git a/hb_server/apps/pum/migrations/0002_vendor_material.py b/hb_server/apps/pum/migrations/0002_vendor_material.py
new file mode 100644
index 0000000..3bc35b3
--- /dev/null
+++ b/hb_server/apps/pum/migrations/0002_vendor_material.py
@@ -0,0 +1,18 @@
+# Generated by Django 3.2.6 on 2021-09-24 06:25
+
+from django.db import migrations, models
+
+
+class Migration(migrations.Migration):
+
+ dependencies = [
+ ('pum', '0001_initial'),
+ ]
+
+ operations = [
+ migrations.AddField(
+ model_name='vendor',
+ name='material',
+ field=models.CharField(blank=True, max_length=200, null=True, verbose_name='供应的物料'),
+ ),
+ ]
diff --git a/hb_server/apps/pum/models.py b/hb_server/apps/pum/models.py
index bf5d5a7..a705f8a 100644
--- a/hb_server/apps/pum/models.py
+++ b/hb_server/apps/pum/models.py
@@ -18,6 +18,7 @@ class Vendor(CommonAModel):
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)
+ material = models.CharField('供应的物料', max_length=200, blank=True, null=True)
class Meta:
verbose_name = '供应商信息'
verbose_name_plural = verbose_name