From 368b9f9c12deba82f7016d00a7845c9ba308ff58 Mon Sep 17 00:00:00 2001
From: shilixia <2309368887@qq.com>
Date: Mon, 13 Sep 2021 16:08:15 +0800
Subject: [PATCH] hetong,xiugai
---
hb_client/package.json | 1 +
hb_client/src/router/index.js | 89 ++++++++++---------
hb_client/src/views/mtm/material.vue | 34 +++++--
hb_client/src/views/sam/customer.vue | 29 ++----
.../inm/migrations/0002_fifo_inventory.py | 51 +++++++++++
.../mtm/migrations/0012_auto_20210913_1412.py | 23 +++++
hb_server/apps/mtm/models.py | 4 +-
.../sam/migrations/0002_auto_20210913_0954.py | 77 ++++++++++++++++
8 files changed, 231 insertions(+), 77 deletions(-)
create mode 100644 hb_server/apps/inm/migrations/0002_fifo_inventory.py
create mode 100644 hb_server/apps/mtm/migrations/0012_auto_20210913_1412.py
create mode 100644 hb_server/apps/sam/migrations/0002_auto_20210913_0954.py
diff --git a/hb_client/package.json b/hb_client/package.json
index 4f3c7a1..3deb725 100644
--- a/hb_client/package.json
+++ b/hb_client/package.json
@@ -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": {
diff --git a/hb_client/src/router/index.js b/hb_client/src/router/index.js
index d612662..8310390 100644
--- a/hb_client/src/router/index.js
+++ b/hb_client/src/router/index.js
@@ -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',
diff --git a/hb_client/src/views/mtm/material.vue b/hb_client/src/views/mtm/material.vue
index 8179d8a..950ff75 100644
--- a/hb_client/src/views/mtm/material.vue
+++ b/hb_client/src/views/mtm/material.vue
@@ -4,7 +4,7 @@
@@ -45,17 +47,20 @@
{{ scope.row.number }}
-
- {{ options_[scope.row.type] }}
+
+ {{options_[scope.row.type]}}
{{ scope.row.name }}
-
- {{ scope.row.number }}
+
+ {{ scope.row.specification }}
+
{{ scope.row.unit }}
@@ -109,6 +114,10 @@
+
+
+
+
{
diff --git a/hb_client/src/views/sam/customer.vue b/hb_client/src/views/sam/customer.vue
index 54312db..bb6bea7 100644
--- a/hb_client/src/views/sam/customer.vue
+++ b/hb_client/src/views/sam/customer.vue
@@ -101,19 +101,19 @@
:rules="rule1"
>
-
+
-
+
-
+
-
+
-
+
@@ -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" }],
},
};
},
diff --git a/hb_server/apps/inm/migrations/0002_fifo_inventory.py b/hb_server/apps/inm/migrations/0002_fifo_inventory.py
new file mode 100644
index 0000000..20fb89c
--- /dev/null
+++ b/hb_server/apps/inm/migrations/0002_fifo_inventory.py
@@ -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,
+ },
+ ),
+ ]
diff --git a/hb_server/apps/mtm/migrations/0012_auto_20210913_1412.py b/hb_server/apps/mtm/migrations/0012_auto_20210913_1412.py
new file mode 100644
index 0000000..853adac
--- /dev/null
+++ b/hb_server/apps/mtm/migrations/0012_auto_20210913_1412.py
@@ -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='物料类型'),
+ ),
+ ]
diff --git a/hb_server/apps/mtm/models.py b/hb_server/apps/mtm/models.py
index 06f1672..6ff1701 100644
--- a/hb_server/apps/mtm/models.py
+++ b/hb_server/apps/mtm/models.py
@@ -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)
diff --git a/hb_server/apps/sam/migrations/0002_auto_20210913_0954.py b/hb_server/apps/sam/migrations/0002_auto_20210913_0954.py
new file mode 100644
index 0000000..30d2680
--- /dev/null
+++ b/hb_server/apps/sam/migrations/0002_auto_20210913_0954.py
@@ -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='所属合同'),
+ ),
+ ]