From a3ec039c0087e7ed9443d1495636400a3a3c4ff1 Mon Sep 17 00:00:00 2001 From: caoqianming Date: Fri, 3 Dec 2021 10:11:15 +0800 Subject: [PATCH 1/9] =?UTF-8?q?=E5=8D=8A=E6=88=90=E5=93=81=E6=89=B9?= =?UTF-8?q?=E9=87=8F=E5=85=A5=E5=BA=93?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- hb_server/apps/wpm/serializers.py | 21 +++---- hb_server/apps/wpm/views.py | 94 +++++++++++++++++-------------- 2 files changed, 62 insertions(+), 53 deletions(-) diff --git a/hb_server/apps/wpm/serializers.py b/hb_server/apps/wpm/serializers.py index f7591de..091ed4f 100644 --- a/hb_server/apps/wpm/serializers.py +++ b/hb_server/apps/wpm/serializers.py @@ -18,16 +18,14 @@ from django.db import transaction class PickHalfSerializer(serializers.Serializer): id = serializers.PrimaryKeyRelatedField(queryset=SubProductionProgress.objects.all(), label='子计划进度ID') - wproducts = serializers.ListField(child=serializers.PrimaryKeyRelatedField(queryset=WProduct.objects.all(), label='半成品ID'), - required=False) # 从半成品表里直接修改状态 + wproducts = serializers.PrimaryKeyRelatedField(queryset=WProduct.objects.all(), label='半成品ID', many=True, required=False) # 从半成品表里直接修改状态 class PickDetailSerializer(serializers.Serializer): material = serializers.PrimaryKeyRelatedField(queryset=Material.objects.all(), label="物料ID") batch = serializers.CharField(label='物料批次', allow_blank=True) warehouse = serializers.PrimaryKeyRelatedField(queryset=WareHouse.objects.all(), label="仓库ID") pick_count = serializers.IntegerField(label="领料数量", required=False) - iproducts = serializers.ListField(child=serializers.PrimaryKeyRelatedField(queryset=IProduct.objects.all(), label='库存半成品ID'), - required=False) + iproducts = serializers.PrimaryKeyRelatedField(queryset=IProduct.objects.all(), label='库存半成品ID',required=False, many=True) class PickSerializer(serializers.Serializer): subproduction_plan=serializers.PrimaryKeyRelatedField(queryset=SubProductionPlan.objects.all(), label="子计划ID") @@ -172,8 +170,7 @@ class OperationCreateSerializer(serializers.Serializer): """ step = serializers.PrimaryKeyRelatedField(queryset=Step.objects.all(), label="子工序ID") # subproduction_plan = serializers.PrimaryKeyRelatedField(queryset=SubProductionPlan.objects.all(), label="子计划ID", required=False) - wproducts = serializers.ListField(child= - serializers.PrimaryKeyRelatedField(queryset=WProduct.objects.all()), label="半成品ID列表", required=False) + wproducts = serializers.PrimaryKeyRelatedField(queryset=WProduct.objects.all(), label="半成品ID列表", required=False, many=True) def validate(self, data): # subproduction_plan = data['subproduction_plan'] @@ -209,8 +206,7 @@ class OperationUpdateSerializer(serializers.ModelSerializer): class OperationInitSerializer(serializers.Serializer): step = serializers.PrimaryKeyRelatedField(queryset=Step.objects.all(), label="子工序ID") subproduction_plan = serializers.PrimaryKeyRelatedField(queryset=SubProductionPlan.objects.all(), label="子计划ID", required=False) - wproducts = serializers.ListField(child= - serializers.PrimaryKeyRelatedField(queryset=WProduct.objects.all()), label="半成品ID列表", required=False) + wproducts = serializers.PrimaryKeyRelatedField(queryset=WProduct.objects.all(), label="半成品ID列表", required=False, many=True) def validate(self, data): # subproduction_plan = data['subproduction_plan'] @@ -273,8 +269,7 @@ class OperationWproductListSerializer(serializers.ModelSerializer): class OperationSubmitSerializer(serializers.Serializer): step = serializers.PrimaryKeyRelatedField(queryset=Step.objects.all(), label="子工序ID") subproduction_plan = serializers.PrimaryKeyRelatedField(queryset=SubProductionPlan.objects.all(), label="子计划ID", required=False) - wproducts = serializers.ListField(child= - serializers.PrimaryKeyRelatedField(queryset=WProduct.objects.all()), label="半成品ID列表", required=False) + wproducts = serializers.PrimaryKeyRelatedField(queryset=WProduct.objects.all(), label="半成品ID列表", required=False, many=True) input = DoInputSerializer(many=True, required=False) output = DoOutputSerializer(many=True, required=False) forms = OperationRecordSerializer(many=True, required=False) @@ -307,6 +302,12 @@ class WproductPutInSerializer(serializers.Serializer): warehouse = serializers.PrimaryKeyRelatedField(queryset=WareHouse.objects.all(), label="仓库ID") remark = serializers.CharField(label="入库备注", required =False) +class WproductPutInsSerializer(serializers.Serializer): + warehouse = serializers.PrimaryKeyRelatedField(queryset=WareHouse.objects.all(), label="仓库ID") + wproducts = serializers.PrimaryKeyRelatedField(queryset=WProduct.objects.all(), label='半成品ID', many=True) + remark = serializers.CharField(label="入库备注", required =False) + + class OperationEquipListSerializer(serializers.Serializer): equip_ = EquipmentSimpleSerializer(source='equip', read_only=True) class Meta: diff --git a/hb_server/apps/wpm/views.py b/hb_server/apps/wpm/views.py index 39a7b08..2a9d3ad 100644 --- a/hb_server/apps/wpm/views.py +++ b/hb_server/apps/wpm/views.py @@ -18,7 +18,7 @@ from rest_framework.decorators import action from apps.wpm.filters import WMaterialFilterSet from apps.wpm.models import OperationEquip, OperationWproduct, Pick, PickWproduct, WMaterial, WProduct, Operation, OperationMaterial, OperationRecord, OperationRecordItem -from apps.wpm.serializers import OperationEquipListSerializer, OperationEquipUpdateSerializer, OperationMaterialCreate1Serailizer, OperationMaterialCreate2Serailizer, OperationMaterialCreate3Serializer, OperationMaterialListSerializer, OperationRecordListSerializer, OperationRecordSubmitSerializer, OperationUpdateSerializer, OperationWproductListSerializer, OperationCreateSerializer, OperationDetailSerializer, OperationListSerializer, PickHalfSerializer, PickSerializer, OperationInitSerializer, OperationSubmitSerializer, WMaterialListSerializer, WProductListSerializer, WplanPutInSerializer, WpmTestRecordCreateSerializer, WproductPutInSerializer +from apps.wpm.serializers import OperationEquipListSerializer, OperationEquipUpdateSerializer, OperationMaterialCreate1Serailizer, OperationMaterialCreate2Serailizer, OperationMaterialCreate3Serializer, OperationMaterialListSerializer, OperationRecordListSerializer, OperationRecordSubmitSerializer, OperationUpdateSerializer, OperationWproductListSerializer, OperationCreateSerializer, OperationDetailSerializer, OperationListSerializer, PickHalfSerializer, PickSerializer, OperationInitSerializer, OperationSubmitSerializer, WMaterialListSerializer, WProductListSerializer, WplanPutInSerializer, WpmTestRecordCreateSerializer, WproductPutInSerializer, WproductPutInsSerializer from rest_framework.response import Response from django.db import transaction from rest_framework import exceptions, serializers @@ -27,6 +27,7 @@ from apps.wpm.services import WpmServies from django.utils import timezone from utils.tools import ranstr from rest_framework import status +from django.db.models import Count # Create your views here. class WPlanViewSet(ListModelMixin, GenericViewSet): """ @@ -245,49 +246,56 @@ class WProductViewSet(ListModelMixin, GenericViewSet): wproduct.save() return Response() + + @action(methods=['post'], detail=True, perms_map={'post':'*'}, serializer_class=WproductPutInsSerializer) + @transaction.atomic + def putins(self, request, pk=None): + """ + 半成品批量入库 + """ + serializer= WproductPutInsSerializer(data=request.data) + serializer.is_valid(raise_exception=True) + vdata = serializer.data + wproducts = WProduct.objects.filter(pk__in=[x for x in vdata['wproducts']]) + warehouse = WareHouse.objects.get(id=vdata['warehouse']) + for i in wproducts: + if i.act_state is not WProduct.WPR_ACT_STATE_OK: + raise exceptions.APIException('存在不可入库产品') + # 聚合一下 + wproducts_a = wproducts.values('subproduction_plan', 'material', 'subproduction_plan__number').annotate(total=Count('id')) + # 创建入库记录 + remark = vdata.get('remark', '') + fifo = FIFO.objects.create(type=FIFO.FIFO_TYPE_DO_IN, + is_audited=True, auditor=request.user, inout_date=timezone.now(), create_by=request.user, remark=remark) + # 创建入库明细 + for i in wproducts_a: + fifoitem = FIFOItem() + fifoitem.is_tested = True + fifoitem.is_testok = True + fifoitem.warehouse = warehouse + fifoitem.material = i['material'] + fifoitem.count = i['total'] + fifoitem.batch = i['subproduction_plan__number'] + fifoitem.fifo = fifo + fifoitem.subproduction_plan = i['subproduction_plan'] + fifoitem.save() + + wproducts_items = wproducts.filter(subproduction_plan=i['subproduction_plan'], material=i['material']) + ips = [] + for i in wproducts_items: + # 创建入库明细半成品 + ip = {} + ip['fifoitem'] = fifoitem + ip['wproduct'] = i + ip['number'] = i.number + ip['material'] = i.material + ips.append(FIFOItemProduct(**ip)) + FIFOItemProduct.objects.bulk_create(ips) + # 更新库存并修改半成品进行状态 + update_inm(fifo) + wproducts.update(act_state=WProduct.WPR_ACT_STATE_INM, warehouse=warehouse, update_by=request.user) + return Response() - # @action(methods=['post'], detail=False, perms_map={'post':'*'}, serializer_class=WpmTestRecordCreateSerializer) - # @transaction.atomic - # def retest(self, request, pk=None): - # """ - # 复检 - # """ - # serializer = WpmTestRecordCreateSerializer(data=request.data) - # serializer.is_valid(raise_exception=True) - # vdata = serializer.validated_data - # record_data = vdata.pop('record_data') - # wproduct = vdata['wproduct'] - # if wproduct.act_state != WProduct.WPR_ACT_STATE_TORETEST: - # raise exceptions.APIException('该产品当前状态不可检验') - # if 'is_testok' not in vdata: - # raise exceptions.APIException('未填写检测结论') - - # obj = serializer.save(create_by = self.request.user, - # material=wproduct.material, number=wproduct.number, subproduction_plan=wproduct.subproduction_plan) - # tris = [] - # for m in record_data: # 保存记录详情 - # form_field = m['form_field'] - # m['field_name'] = form_field.field_name - # m['field_key'] = form_field.field_key - # m['field_type'] = form_field.field_type - # m['field_value'] = m['field_value'] - # m['sort'] = form_field.sort - # m['need_judge'] = form_field.need_judge - # m['is_testok'] = m['is_testok'] if 'is_testok' in m else None - # m['test_record'] = obj - # tris.append(TestRecordItem(**m)) - # TestRecordItem.objects.bulk_create(tris) - - # # 如果检测合格, 变更动态产品进行状态 - - # if obj.is_testok: - # wproduct.act_state = WProduct.WProduct.WPR_ACT_STATE_DOWAIT - # wproduct.save() - # else:# 如果不合格 - # wproduct.act_state = WProduct.WPR_ACT_STATE_NOTOK - # wproduct.save() - # return Response() - @action(methods=['post'], detail=True, perms_map={'post':'*'}, serializer_class=WproductPutInSerializer) @transaction.atomic def putin(self, request, pk=None): From 52be92e98bd1e120cc8a230eff7383339aa34eff Mon Sep 17 00:00:00 2001 From: caoqianming Date: Fri, 3 Dec 2021 10:12:21 +0800 Subject: [PATCH 2/9] =?UTF-8?q?=E5=8D=8A=E6=88=90=E5=93=81=E6=89=B9?= =?UTF-8?q?=E9=87=8F=E5=85=A5=E5=BA=93?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- hb_server/apps/wpm/views.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/hb_server/apps/wpm/views.py b/hb_server/apps/wpm/views.py index 2a9d3ad..de4c8ee 100644 --- a/hb_server/apps/wpm/views.py +++ b/hb_server/apps/wpm/views.py @@ -247,7 +247,7 @@ class WProductViewSet(ListModelMixin, GenericViewSet): return Response() - @action(methods=['post'], detail=True, perms_map={'post':'*'}, serializer_class=WproductPutInsSerializer) + @action(methods=['post'], detail=False, perms_map={'post':'*'}, serializer_class=WproductPutInsSerializer) @transaction.atomic def putins(self, request, pk=None): """ From 03e0f0d1a24aae1750f117e1ab0049e156cf0c3a Mon Sep 17 00:00:00 2001 From: caoqianming Date: Fri, 3 Dec 2021 10:51:07 +0800 Subject: [PATCH 3/9] =?UTF-8?q?=E7=8E=BB=E7=92=83=E6=89=B9=E9=87=8F?= =?UTF-8?q?=E5=85=A5=E5=BA=93?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- hb_server/apps/wpm/views.py | 9 +++++---- 1 file changed, 5 insertions(+), 4 deletions(-) diff --git a/hb_server/apps/wpm/views.py b/hb_server/apps/wpm/views.py index de4c8ee..b100adf 100644 --- a/hb_server/apps/wpm/views.py +++ b/hb_server/apps/wpm/views.py @@ -260,7 +260,7 @@ class WProductViewSet(ListModelMixin, GenericViewSet): warehouse = WareHouse.objects.get(id=vdata['warehouse']) for i in wproducts: if i.act_state is not WProduct.WPR_ACT_STATE_OK: - raise exceptions.APIException('存在不可入库产品') + raise exceptions.APIException('存在不可入库半成品') # 聚合一下 wproducts_a = wproducts.values('subproduction_plan', 'material', 'subproduction_plan__number').annotate(total=Count('id')) # 创建入库记录 @@ -269,15 +269,16 @@ class WProductViewSet(ListModelMixin, GenericViewSet): is_audited=True, auditor=request.user, inout_date=timezone.now(), create_by=request.user, remark=remark) # 创建入库明细 for i in wproducts_a: + spi = SubProductionPlan.objects.get(pk=i['subproduction_plan']) fifoitem = FIFOItem() fifoitem.is_tested = True fifoitem.is_testok = True fifoitem.warehouse = warehouse - fifoitem.material = i['material'] + fifoitem.material = Material.objects.get(pk=i['material']) fifoitem.count = i['total'] - fifoitem.batch = i['subproduction_plan__number'] + fifoitem.batch = spi.number fifoitem.fifo = fifo - fifoitem.subproduction_plan = i['subproduction_plan'] + fifoitem.subproduction_plan = spi fifoitem.save() wproducts_items = wproducts.filter(subproduction_plan=i['subproduction_plan'], material=i['material']) From 84ba718a98529dc3cdbc836077416aab4f6be727 Mon Sep 17 00:00:00 2001 From: caoqianming Date: Fri, 3 Dec 2021 11:26:13 +0800 Subject: [PATCH 4/9] =?UTF-8?q?=E9=A2=86=E5=8D=8A=E6=88=90=E5=93=81?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- hb_server/apps/wf/models.py | 12 ++++++++++++ hb_server/apps/wf/serializers.py | 2 +- hb_server/apps/wpm/serializers.py | 10 ++++------ hb_server/apps/wpm/views.py | 8 +++----- 4 files changed, 20 insertions(+), 12 deletions(-) diff --git a/hb_server/apps/wf/models.py b/hb_server/apps/wf/models.py index 4bc7d75..a9ae071 100644 --- a/hb_server/apps/wf/models.py +++ b/hb_server/apps/wf/models.py @@ -210,6 +210,18 @@ class Ticket(CommonBModel): act_state = models.IntegerField('进行状态', default=1, help_text='当前工单的进行状态', choices=act_state_choices) multi_all_person = models.JSONField('全部处理的结果', default=dict, blank=True, help_text='需要当前状态处理人全部处理时实际的处理结果,json格式') + +class TicketData(): + """ + 工单数据,自定义字段值 + """ + form_field = models.ForeignKey(CustomField, verbose_name='关联字段', on_delete=models.SET_NULL, db_constraint=False, null=True, blank=True) + field_name = models.CharField('字段名', max_length=50) + field_key = models.CharField('字段标识', max_length=50) + field_type = models.CharField('字段类型', choices=CustomField.field_type_choices, max_length=50) + field_value = models.JSONField('录入值', default=dict, blank=True) + sort = models.IntegerField('排序号', default=1) + class TicketFlow(BaseModel): """ 工单流转日志 diff --git a/hb_server/apps/wf/serializers.py b/hb_server/apps/wf/serializers.py index 45369a5..e79f121 100644 --- a/hb_server/apps/wf/serializers.py +++ b/hb_server/apps/wf/serializers.py @@ -52,7 +52,7 @@ class TicketCreateSerializer(serializers.ModelSerializer): transition = serializers.IntegerField(label='流转ID') class Meta: model=Ticket - fields=['title','workflow','ticket_data', 'transition'] + fields=['title','workflow', 'ticket_data', 'transition'] def create(self, validated_data): validated_data.pop('transition') diff --git a/hb_server/apps/wpm/serializers.py b/hb_server/apps/wpm/serializers.py index 091ed4f..b689a84 100644 --- a/hb_server/apps/wpm/serializers.py +++ b/hb_server/apps/wpm/serializers.py @@ -18,8 +18,11 @@ from django.db import transaction class PickHalfSerializer(serializers.Serializer): id = serializers.PrimaryKeyRelatedField(queryset=SubProductionProgress.objects.all(), label='子计划进度ID') - wproducts = serializers.PrimaryKeyRelatedField(queryset=WProduct.objects.all(), label='半成品ID', many=True, required=False) # 从半成品表里直接修改状态 + wproducts = serializers.ListField(child=serializers.PrimaryKeyRelatedField(queryset=WProduct.objects.all()) + , label='半成品ID', required=False) # 从半成品表里直接修改状态 +class PickHalfsSerializer(serializers.ListSerializer): + child = PickHalfSerializer() class PickDetailSerializer(serializers.Serializer): material = serializers.PrimaryKeyRelatedField(queryset=Material.objects.all(), label="物料ID") batch = serializers.CharField(label='物料批次', allow_blank=True) @@ -289,11 +292,6 @@ class WpmTestRecordCreateSerializer(serializers.ModelSerializer): model = TestRecord fields = ['form', 'record_data', 'is_testok', 'wproduct'] -class WproductPutInSerializer(serializers.Serializer): - """ - 半成品入库序列化 - """ - class WplanPutInSerializer(serializers.Serializer): warehouse = serializers.PrimaryKeyRelatedField(queryset=WareHouse.objects.all(), label="仓库ID") remark = serializers.CharField(label="入库备注", required =False) diff --git a/hb_server/apps/wpm/views.py b/hb_server/apps/wpm/views.py index b100adf..9d3b427 100644 --- a/hb_server/apps/wpm/views.py +++ b/hb_server/apps/wpm/views.py @@ -18,7 +18,7 @@ from rest_framework.decorators import action from apps.wpm.filters import WMaterialFilterSet from apps.wpm.models import OperationEquip, OperationWproduct, Pick, PickWproduct, WMaterial, WProduct, Operation, OperationMaterial, OperationRecord, OperationRecordItem -from apps.wpm.serializers import OperationEquipListSerializer, OperationEquipUpdateSerializer, OperationMaterialCreate1Serailizer, OperationMaterialCreate2Serailizer, OperationMaterialCreate3Serializer, OperationMaterialListSerializer, OperationRecordListSerializer, OperationRecordSubmitSerializer, OperationUpdateSerializer, OperationWproductListSerializer, OperationCreateSerializer, OperationDetailSerializer, OperationListSerializer, PickHalfSerializer, PickSerializer, OperationInitSerializer, OperationSubmitSerializer, WMaterialListSerializer, WProductListSerializer, WplanPutInSerializer, WpmTestRecordCreateSerializer, WproductPutInSerializer, WproductPutInsSerializer +from apps.wpm.serializers import OperationEquipListSerializer, OperationEquipUpdateSerializer, OperationMaterialCreate1Serailizer, OperationMaterialCreate2Serailizer, OperationMaterialCreate3Serializer, OperationMaterialListSerializer, OperationRecordListSerializer, OperationRecordSubmitSerializer, OperationUpdateSerializer, OperationWproductListSerializer, OperationCreateSerializer, OperationDetailSerializer, OperationListSerializer, PickHalfSerializer, PickHalfsSerializer, PickSerializer, OperationInitSerializer, OperationSubmitSerializer, WMaterialListSerializer, WProductListSerializer, WplanPutInSerializer, WpmTestRecordCreateSerializer, WproductPutInSerializer, WproductPutInsSerializer from rest_framework.response import Response from django.db import transaction from rest_framework import exceptions, serializers @@ -41,7 +41,7 @@ class WPlanViewSet(ListModelMixin, GenericViewSet): ordering_fields = [] ordering = ['-update_time'] - @action(methods=['post', 'get'], detail=True, perms_map={'post':'*', 'get':'*'}, serializer_class=PickHalfSerializer) + @action(methods=['post', 'get'], detail=True, perms_map={'post':'*', 'get':'*'}, serializer_class=PickHalfsSerializer) @transaction.atomic def pick_half(self, request, pk=None): """ @@ -56,7 +56,7 @@ class WPlanViewSet(ListModelMixin, GenericViewSet): material__type=Material.MA_TYPE_HALFGOOD, subproduction_plan=sp).select_related('material') return Response(SubProductionProgressSerializer(instance=spps, many=True).data) elif request.method=='POST': - serializer= PickHalfSerializer(data=request.data, many=True) + serializer= PickHalfsSerializer(data=request.data) serializer.is_valid(raise_exception=True) vdata = serializer.data first_step = Step.objects.get(pk=sp.steps[0]['id']) @@ -85,8 +85,6 @@ class WPlanViewSet(ListModelMixin, GenericViewSet): pw.material = i.material pw.subproduction_plan = i.suproduction_plan pw.save() - else: - raise exceptions.APIException('未选择任何玻璃') sp.is_picked = True sp.save() From 7752f459683033eea82ba3d5c3280b41b153885e Mon Sep 17 00:00:00 2001 From: shilixia <2309368887@qq.com> Date: Fri, 3 Dec 2021 15:18:49 +0800 Subject: [PATCH 5/9] xiugai --- hb_client/src/api/wpm.js | 18 +- hb_client/src/router/index.js | 18 +- hb_client/src/views/mtm/material.vue | 17 +- hb_client/src/views/mtm/materialDetail.vue | 230 +++++++++ hb_client/src/views/mtm/productprocess.vue | 4 +- hb_client/src/views/wpm/need.vue | 69 ++- hb_client/src/views/wpm/productjy.vue | 538 +++++++++++++++++++++ hb_client/src/views/wpm/worktask.vue | 12 +- 8 files changed, 884 insertions(+), 22 deletions(-) create mode 100644 hb_client/src/views/mtm/materialDetail.vue create mode 100644 hb_client/src/views/wpm/productjy.vue diff --git a/hb_client/src/api/wpm.js b/hb_client/src/api/wpm.js index 7e3462d..b274167 100644 --- a/hb_client/src/api/wpm.js +++ b/hb_client/src/api/wpm.js @@ -58,14 +58,6 @@ export function wproductTest(data) { data }) } -//半成品复检 -export function wproductRetest(data) { - return request({ - url: '/wpm/wproduct/retest/', - method: 'post', - data - }) -} //半成品入库 @@ -261,4 +253,14 @@ export function createTool(data) { }) } +//检验合格的半成品批量入库 +export function createputins(data) { + return request({ + url: '/wpm/wproduct/putins/', + method: 'post', + data + }) +} + + diff --git a/hb_client/src/router/index.js b/hb_client/src/router/index.js index b739f6c..2aa5dcb 100644 --- a/hb_client/src/router/index.js +++ b/hb_client/src/router/index.js @@ -112,6 +112,14 @@ export const asyncRoutes = [ component: () => import('@/views/mtm/materialdo.vue'), meta: { title: '绑定检查表', perms: ['vendor_manage'] }, hidden: true + } + , + { + path: 'materialDetail/:id', + name: 'MaterialDetail', + component: () => import('@/views/mtm/materialDetail.vue'), + meta: { title: '物料详情', perms: ['vendor_manage'] }, + hidden: true }, { path: 'process', @@ -201,11 +209,19 @@ export const asyncRoutes = [ hidden: true }, { - path: 'need/:id', + path: 'need', name: 'need', component: () => import('@/views/wpm/need'), meta: { title: '半成品检验', icon: 'example', perms: ['index_manage'] } } + , + { + path: 'productjy', + name: 'productjy', + component: () => import('@/views/wpm/productjy'), + meta: { title: '成品检验', icon: 'example', perms: ['index_manage'] } + } + ] }, { diff --git a/hb_client/src/views/mtm/material.vue b/hb_client/src/views/mtm/material.vue index afaf129..8d1677a 100644 --- a/hb_client/src/views/mtm/material.vue +++ b/hb_client/src/views/mtm/material.vue @@ -92,10 +92,16 @@ @click="handlebind(scope)" >检查表 + 编辑 + 详情 diff --git a/hb_client/src/views/mtm/productprocess.vue b/hb_client/src/views/mtm/productprocess.vue index f874189..7dd2203 100644 --- a/hb_client/src/views/mtm/productprocess.vue +++ b/hb_client/src/views/mtm/productprocess.vue @@ -46,14 +46,14 @@ {{products.name}} {{products.number}} diff --git a/hb_client/src/views/wpm/need.vue b/hb_client/src/views/wpm/need.vue index 37be5ee..1f6f670 100644 --- a/hb_client/src/views/wpm/need.vue +++ b/hb_client/src/views/wpm/need.vue @@ -99,15 +99,24 @@ + 批量入库 + + @@ -328,11 +337,38 @@ 取 消 确 定 + + + + + + + + + + + + + + + diff --git a/hb_client/src/views/wpm/worktask.vue b/hb_client/src/views/wpm/worktask.vue index 598af64..12da811 100644 --- a/hb_client/src/views/wpm/worktask.vue +++ b/hb_client/src/views/wpm/worktask.vue @@ -162,17 +162,12 @@ scope.row.step_.name }} - + - - - +