hetong,xiugai

This commit is contained in:
shilixia 2021-09-13 16:08:15 +08:00
parent 1b6c7c5e07
commit 368b9f9c12
8 changed files with 231 additions and 77 deletions

View File

@ -29,6 +29,7 @@
"vue-json-editor": "^1.4.3",
"vue-router": "^3.5.2",
"vuex": "^3.6.2",
"webpack-dev-server": "^4.2.0",
"xlsx": "^0.17.1"
},
"devDependencies": {

View File

@ -80,6 +80,49 @@ export const constantRoutes = [
* the routes that need to be dynamically loaded based on user perms
*/
export const asyncRoutes = [
{
path: '/mtm',
component: Layout,
redirect: '/mtm/material/',
name: 'mtm',
meta: { title: '制造管理', icon: 'example', perms: ['procurement_set'] },
children: [
{
path: 'material',
name: 'material',
component: () => import('@/views/mtm/material'),
meta: { title: '物料清单', icon: 'example', perms: ['vendor_manage'] }
},
{
path: 'process',
name: 'process',
component: () => import('@/views/mtm/process'),
meta: { title: '工序管理', icon: 'example', perms: ['vendor_manage'] }
},
{
path: 'step/:id',
name: 'Step',
component: () => import('@/views/mtm/step.vue'),
meta: { title: '子工序', perms: ['vendor_manage'] },
hidden: true
}
,
{
path: 'stepdo/:id',
name: 'StepDo',
component: () => import('@/views/mtm/stepdo.vue'),
meta: { title: '子工序查看', perms: ['vendor_manage'] },
hidden: true
},
{
path: '/mtm/productprocess/',
name: 'productprocess',
component: () => import('@/views/mtm/productprocess'),
meta: { title: '产品管理', icon: 'example', perms: ['vendor_manage'] }
},
]
},
{
path: '/equipment',
component: Layout,
@ -91,13 +134,13 @@ export const asyncRoutes = [
path: 'index',
name: 'index',
component: () => import('@/views/equipment/index'),
meta: { title: '设备台账', icon: 'example', perms: ['index_manage'] }
meta: { title: '生产设备', icon: 'example', perms: ['index_manage'] }
},
{
path: 'index',
name: 'index',
component: () => import('@/views/equipment/index'),
meta: { title: '运维记录', icon: 'example', perms: ['index_manage'] }
meta: { title: '监视和测量设备', icon: 'example', perms: ['index_manage'] }
}
]
},
@ -144,48 +187,6 @@ export const asyncRoutes = [
]
},
{
path: '/mtm',
component: Layout,
redirect: '/mtm/material/',
name: 'mtm',
meta: { title: '制造管理', icon: 'example', perms: ['procurement_set'] },
children: [
{
path: 'material',
name: 'material',
component: () => import('@/views/mtm/material'),
meta: { title: '物料', icon: 'example', perms: ['vendor_manage'] }
},
{
path: 'process',
name: 'process',
component: () => import('@/views/mtm/process'),
meta: { title: '工序', icon: 'example', perms: ['vendor_manage'] }
},
{
path: 'step/:id',
name: 'Step',
component: () => import('@/views/mtm/step.vue'),
meta: { title: '子工序', perms: ['vendor_manage'] },
hidden: true
}
,
{
path: 'stepdo/:id',
name: 'StepDo',
component: () => import('@/views/mtm/stepdo.vue'),
meta: { title: '子工序查看', perms: ['vendor_manage'] },
hidden: true
},
{
path: '/mtm/productprocess/',
name: 'productprocess',
component: () => import('@/views/mtm/productprocess'),
meta: { title: '产品工艺', icon: 'example', perms: ['vendor_manage'] }
},
]
},
{
path: '/procurement',

View File

@ -4,7 +4,7 @@
<div>
<el-input
v-model="listQuery.search"
placeholder="原料名称/原料编号"
placeholder="物料名称/物料编号"
style="width: 300px"
class="filter-item"
@keyup.enter.native="handleFilter"
@ -37,7 +37,9 @@
border
fit
stripe
highlight-current-row
highlight-current-row
max-height="600"
height="100"
v-el-height-adaptive-table="{bottomOffset: 50}"
>
<el-table-column type="index" width="50" />
@ -45,17 +47,20 @@
<template slot-scope="scope">{{ scope.row.number }}</template>
</el-table-column>
<el-table-column label="物料类别">
<template slot-scope="scope"> {{ options_[scope.row.type] }}</template>
<el-table-column label="物料类别" :filters="[{ text: '成品', value: 1 }, { text: '半成品', value: 2 },{ text: '主要原料', value: 3 }, { text: '辅助原料', value: 4 }]"
:filter-method="filterTag"
filter-placement="bottom-end">
<template slot-scope="scope"> {{options_[scope.row.type]}}</template>
</el-table-column>
<el-table-column label="物料名称">
<template slot-scope="scope">{{ scope.row.name }}</template>
</el-table-column>
<el-table-column label="物料编">
<template slot-scope="scope">{{ scope.row.number }}</template>
<el-table-column label="规格型">
<template slot-scope="scope">{{ scope.row.specification }}</template>
</el-table-column>
<el-table-column label="计量单位">
<template slot-scope="scope">{{ scope.row.unit }}</template>
</el-table-column>
@ -109,6 +114,10 @@
<el-form-item label="物料编号" prop="number">
<el-input v-model="material.number" placeholder="物料编号" />
</el-form-item>
<el-form-item label="规格型号" prop="specification">
<el-input v-model="material.specification" placeholder="规格型号" />
</el-form-item>
<el-form-item label="计量单位" prop="unit">
<el-select style="width: 100%" v-model="material.unit" placeholder="请选择">
<el-option
@ -175,7 +184,8 @@ export default {
"1":'成品',
"2":'半成品',
"3":'原料',
"3":'主要原料',
"4":'辅助原料',
},
options: [{
@ -186,7 +196,10 @@ export default {
label: '半成品'
}, {
value: 3,
label: '原料'
label: '主要原料'
}, {
value: 4,
label: '辅助原料'
}],
unitoptions:[
{
@ -231,7 +244,10 @@ export default {
this.listLoading = false;
});
},
filterTag(value, row) {
return row.type === value;
},
//工序清单
getProcessList() {
getProcessList().then((res) => {

View File

@ -101,19 +101,19 @@
:rules="rule1"
>
<el-form-item label="客户名称" prop="name">
<el-input v-model="customer.name" placeholder="仓库名称" />
<el-input v-model="customer.name" placeholder="客户名称" />
</el-form-item>
<el-form-item label="客户地址" prop="address">
<el-input v-model="customer.address" placeholder="仓库编号" />
<el-input v-model="customer.address" placeholder="客户地址" />
</el-form-item>
<el-form-item label="联系人" prop="contact">
<el-input v-model="customer.contact" placeholder="具体地点" />
<el-input v-model="customer.contact" placeholder="联系人" />
</el-form-item>
<el-form-item label="联系电话" prop="contact_phone">
<el-input v-model="customer.contact_phone" placeholder="仓库编号" />
<el-input v-model="customer.contact_phone" placeholder="联系电话" />
</el-form-item>
<el-form-item label="描述" prop="description">
<el-input v-model="customer.description" placeholder="具体地点" />
<el-input v-model="customer.description" placeholder="描述" />
</el-form-item>
</el-form>
@ -141,29 +141,12 @@ export default {
customerList: {
count: 0,
},
options: [{
value: 0,
label: '运转正常'
}, {
value: 1,
label: '停用'
}, {
value: 2,
label: '报废'
}],
listQuery: {
page: 1,
page_size: 20,
},
keeperOptions:[],
depOptions:[],
listLoading: true,
dialogVisible: false,
dialogType: "new",
rule1: {
name: [{ required: true, message: "请输入", trigger: "blur" }],
number: [{ required: true, message: "请输入", trigger: "blur" }],
place: [{ required: true, message: "请输入", trigger: "blur" }],
},
};
},

View File

@ -0,0 +1,51 @@
# Generated by Django 3.2.6 on 2021-09-13 01:54
from django.conf import settings
from django.db import migrations, models
import django.db.models.deletion
import django.utils.timezone
class Migration(migrations.Migration):
dependencies = [
('mtm', '0011_alter_recordformfield_field_type'),
migrations.swappable_dependency(settings.AUTH_USER_MODEL),
('inm', '0001_initial'),
]
operations = [
migrations.CreateModel(
name='Inventory',
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='删除标记')),
('count', models.IntegerField(default=0, verbose_name='数量')),
('create_by', models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.SET_NULL, related_name='inventory_create_by', to=settings.AUTH_USER_MODEL, verbose_name='创建人')),
('material', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to='mtm.material', verbose_name='物料信息')),
('update_by', models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.SET_NULL, related_name='inventory_update_by', to=settings.AUTH_USER_MODEL, verbose_name='最后编辑人')),
('warehouse', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to='inm.warehouse', verbose_name='所在仓库')),
],
options={
'verbose_name': '库存表',
'verbose_name_plural': '库存表',
},
),
migrations.CreateModel(
name='FIFO',
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='删除标记')),
('type', models.IntegerField(default=1, verbose_name='出入库类型')),
('create_by', models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.SET_NULL, related_name='fifo_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='fifo_update_by', to=settings.AUTH_USER_MODEL, verbose_name='最后编辑人')),
],
options={
'abstract': False,
},
),
]

View File

@ -0,0 +1,23 @@
# Generated by Django 3.2.6 on 2021-09-13 06:12
from django.db import migrations, models
class Migration(migrations.Migration):
dependencies = [
('mtm', '0011_alter_recordformfield_field_type'),
]
operations = [
migrations.AddField(
model_name='material',
name='specification',
field=models.CharField(blank=True, max_length=100, null=True, verbose_name='规格型号'),
),
migrations.AlterField(
model_name='material',
name='type',
field=models.CharField(choices=[(1, '成品'), (2, '半成品'), (3, '主要原料'), (4, '辅助原料')], default=1, max_length=20, verbose_name='物料类型'),
),
]

View File

@ -15,7 +15,8 @@ class Material(CommonAModel):
type_choices=(
(1, '成品'),
(2, '半成品'),
(3, '原材料')
(3, '主要原料'),
(4,'辅助原料')
)
unit_choices =(
('', ''),
@ -23,6 +24,7 @@ class Material(CommonAModel):
)
name = models.CharField('物料名称', max_length=100, unique=True)
number = models.CharField('编号', max_length=100, unique=True)
specification = models.CharField('规格型号', max_length=100, null=True, blank=True)
type = models.CharField('物料类型', choices= type_choices, max_length=20, default=1)
sort_str = models.CharField('排序字符', max_length=100, null=True, blank=True)
processes = models.JSONField('工艺流程', default=list, blank=True)

View File

@ -0,0 +1,77 @@
# Generated by Django 3.2.6 on 2021-09-13 01:54
from django.conf import settings
from django.db import migrations, models
import django.db.models.deletion
import django.utils.timezone
class Migration(migrations.Migration):
dependencies = [
migrations.swappable_dependency(settings.AUTH_USER_MODEL),
('sam', '0001_initial'),
]
operations = [
migrations.CreateModel(
name='Contract',
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=100, verbose_name='合同名称')),
('number', models.CharField(max_length=100, unique=True, verbose_name='合同编号')),
('amount', models.IntegerField(default=0, verbose_name='合同金额')),
('sign_date', models.DateField(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='contract_create_by', to=settings.AUTH_USER_MODEL, verbose_name='创建人')),
],
options={
'verbose_name': '合同信息',
'verbose_name_plural': '合同信息',
},
),
migrations.RemoveField(
model_name='customer',
name='country',
),
migrations.RemoveField(
model_name='customer',
name='phone',
),
migrations.RemoveField(
model_name='order',
name='contact',
),
migrations.AddField(
model_name='customer',
name='contact_phone',
field=models.CharField(max_length=11, null=True, unique=True, verbose_name='联系电话'),
),
migrations.AlterField(
model_name='customer',
name='contact',
field=models.CharField(default=1, max_length=20, verbose_name='联系人'),
preserve_default=False,
),
migrations.DeleteModel(
name='Contact',
),
migrations.AddField(
model_name='contract',
name='customer',
field=models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, related_name='contact_customer', to='sam.customer', verbose_name='关联客户'),
),
migrations.AddField(
model_name='contract',
name='update_by',
field=models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.SET_NULL, related_name='contract_update_by', to=settings.AUTH_USER_MODEL, verbose_name='最后编辑人'),
),
migrations.AddField(
model_name='order',
name='contract',
field=models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.SET_NULL, to='sam.contract', verbose_name='所属合同'),
),
]