This commit is contained in:
shilixia 2021-09-28 14:01:30 +08:00
parent cf5ab840b4
commit 768d6156b7
13 changed files with 197 additions and 9 deletions

View File

@ -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
})
}

View File

@ -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'] }
}
]
},

View File

@ -198,6 +198,7 @@ export default {
page: 1,
page_size: 20,
},
equipmentoptions:[],
state_:{
0:'合格',
1:'准用',

View File

@ -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 = [''];

View File

@ -54,6 +54,9 @@
<el-table-column label="地址">
<template slot-scope="scope">{{ scope.row.address }}</template>
</el-table-column>
<el-table-column label="供应物料">
<template slot-scope="scope">{{ scope.row.material }}</template>
</el-table-column>
<el-table-column label="备注">
<template slot-scope="scope">{{ scope.row.description }}</template>
@ -114,7 +117,9 @@
<el-form-item label="地址" prop="address">
<el-input v-model="vendor.address" placeholder="地址" />
</el-form-item>
<el-form-item label="供应物料" prop="material">
<el-input v-model="vendor.material" placeholder="供应物料" />
</el-form-item>
<el-form-item label="备注" prop="description">
<el-input

View File

@ -30,6 +30,15 @@
:style="{width: '100%'}"
></el-input>
</el-form-item>
<el-form-item label="学历" prop="academic">
<el-input
v-model="formData.academic"
placeholder="请输入学历"
clearable
:style="{width: '100%'}"
></el-input>
</el-form-item>
</el-col>
@ -51,6 +60,32 @@
/>
</el-select>
</el-form-item>
<el-form-item label="在职状态" prop="jobstate">
<el-select
v-model="formData.jobstate"
placeholder="请选择在职状态"
clearable
:style="{width: '100%'}"
>
<el-option
v-for="item in jobstateOptions"
:key="item.key"
:label="item.label"
:value="item.value"
/>
</el-select>
</el-form-item>
<el-form-item label="出生年月" prop="birthdate">
<el-date-picker
v-model="formData.birthdate"
type="date"
placeholder="选择日期"
value-format="yyyy-MM-dd"
style="width:100%"
>
</el-date-picker>
</el-form-item>
</el-col>
</el-row>
@ -168,6 +203,10 @@ export default {
{ value: "", label: "" },
{ value: "", label: "" }
],
jobstateOptions:[
{ value: 1, label: "在职" },
{ value: 2, label: "离职" }
],
rules: {
ID_number: [

View File

@ -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='在职状态'),
),
]

View File

@ -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

View File

@ -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']
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']

View File

@ -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)),
]

View File

@ -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

View File

@ -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='供应的物料'),
),
]

View File

@ -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