From 5b33dfb76c3123fbcd3e50986daa23f423f70e81 Mon Sep 17 00:00:00 2001 From: caoqianming Date: Fri, 7 May 2021 14:41:07 +0800 Subject: [PATCH] =?UTF-8?q?pc=E6=A3=80=E6=9F=A5=E9=A1=B5=E9=9D=A2=E4=BC=98?= =?UTF-8?q?=E5=8C=96?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- client/src/api/inspectteam.js | 30 + .../src/views/qualityinspect/inspeatTask.vue | 129 +-- .../src/views/qualityinspect/inspectTable.vue | 15 +- .../views/qualityinspect/inspecttaskdo.vue | 21 +- client/src/views/qualityinspect/mytaskdo.vue | 938 ++++++++++-------- client_mp/pages.json | 2 +- client_mp/pages/home/home.vue | 6 +- client_mp/pages/inspectrecord/index.vue | 9 +- .../pages/inspectrecord/recorddetail.vue | 4 +- client_mp/pages/inspectrecord/recorddo.vue | 10 +- client_mp/pages/login/login.vue | 47 +- client_mp/pages/subtask/subtaskdetail.vue | 8 +- server/apps/quality/serializers.py | 15 +- server/apps/quality/views.py | 22 +- 14 files changed, 745 insertions(+), 511 deletions(-) create mode 100644 client/src/api/inspectteam.js diff --git a/client/src/api/inspectteam.js b/client/src/api/inspectteam.js new file mode 100644 index 0000000..ba895a8 --- /dev/null +++ b/client/src/api/inspectteam.js @@ -0,0 +1,30 @@ +import request from '@/utils/request' +//巡查组 + +export function getInspectTeamList(query) { + return request({ + url: '/quality/inspectteam/', + method: 'get', + params: query + }) +} + + +export function createInspectTeam(data) { + return request({ + url: '/quality/inspectteam/', + method: 'post', + data + }) +} + + + +export function deleteInspectTeam(id, data) { + return request({ + url: `/quality/inspectteam/${id}/`, + method: 'delete', + data + }) +} + diff --git a/client/src/views/qualityinspect/inspeatTask.vue b/client/src/views/qualityinspect/inspeatTask.vue index f096ad6..5a1abd0 100644 --- a/client/src/views/qualityinspect/inspeatTask.vue +++ b/client/src/views/qualityinspect/inspeatTask.vue @@ -2,33 +2,33 @@
- - 搜索 - 重置 -
-
- 创建巡查任务 -
+ + 搜索 + 重置 +
+
+ 创建巡查任务 +
- - - - + - - + + - + + + + + + + - + - + - - + + @@ -120,13 +118,13 @@ - + @@ -136,12 +134,10 @@ type="date" placeholder="选择日期" value-format="yyyy-MM-dd" - style="width:100%" + style="width: 100%" > - -
取消 @@ -151,15 +147,21 @@
\ No newline at end of file diff --git a/client_mp/pages.json b/client_mp/pages.json index 7ff9890..a19b173 100644 --- a/client_mp/pages.json +++ b/client_mp/pages.json @@ -105,7 +105,7 @@ "globalStyle": { "navigationBarTextStyle": "white", "navigationBarTitleText": "uView", - "navigationBarBackgroundColor": "#2b85e4", + "navigationBarBackgroundColor": "#2581e4", "backgroundColor": "#FFFFFF" }, "tabBar": { diff --git a/client_mp/pages/home/home.vue b/client_mp/pages/home/home.vue index 9d69798..5578049 100644 --- a/client_mp/pages/home/home.vue +++ b/client_mp/pages/home/home.vue @@ -2,9 +2,9 @@ - + - 欢迎您:{{vuex_user.name}} + 欢迎您:{{vuex_user.name}} - + + --> @@ -145,6 +149,39 @@ export default { this.$u.toast('倒计时结束后再发送'); } }, + mpLogin(){ + uni.showLoading({ + title:'微信登录中...', + mask: true + }) + uni.login({ + provider: 'weixin', + success: (loginRes)=>{ + this.$u.api.wxmplogin({code:loginRes.code}).then(res=>{ + this.$u.vuex('vuex_token', res.data.access) + this.$u.api.getUserInfo().then(res=>{ + uni.hideLoading() + uni.showToast({ + title:"登录成功", + icon:"none" + }) + uni.reLaunch({ + url:"/pages/home/home" + }) + this.$u.vuex('vuex_user', res.data) + }) + }).catch(e=>{ + uni.hideLoading() + uni.showToast({ + title:"暂未绑定微信!", + icon:"none" + }) + uni.reLaunch({ + url:'/pages/login/login' + })}) + } + }); + } } }; diff --git a/client_mp/pages/subtask/subtaskdetail.vue b/client_mp/pages/subtask/subtaskdetail.vue index d3b722a..47f18fe 100644 --- a/client_mp/pages/subtask/subtaskdetail.vue +++ b/client_mp/pages/subtask/subtaskdetail.vue @@ -39,7 +39,7 @@ - + @@ -104,6 +104,12 @@ uni.navigateTo({ url:'/pages/inspectrecord/index' + this.$u.queryParams(item) }) + }, + touchStart(e){ + console.log(e) + }, + touchEnd(e){ + console.log(e) } } } diff --git a/server/apps/quality/serializers.py b/server/apps/quality/serializers.py index 739c47f..7ced2e2 100644 --- a/server/apps/quality/serializers.py +++ b/server/apps/quality/serializers.py @@ -3,7 +3,7 @@ from django.db.models.base import Model from rest_framework import serializers from .models import * from apps.system.serializers import OrganizationSerializer,FileListSerializer,UserSimpleSerializer,OrganizationSimpleSerializer, FileSimpleSerializer -from rest_framework.exceptions import ParseError +from rest_framework.exceptions import ParseError, APIException class InspectItemSerializer(serializers.ModelSerializer): cate_name = serializers.StringRelatedField(source='cate', read_only=True) class Meta: @@ -102,7 +102,7 @@ class InspectRecordDetailSerializer(serializers.ModelSerializer): return queryset class InspectTeamSerializer(serializers.ModelSerializer): - member_ = UserSimpleSerializer(source='member', read_only=True) + member__name = serializers.CharField(source='member.name', read_only=True) class Meta: model = InspectTeam fields = '__all__' @@ -112,6 +112,17 @@ class InspectTeamSerializer(serializers.ModelSerializer): queryset = queryset.select_related('member') return queryset + def create(self, validated_data): + if InspectTeam.objects.filter(subtask=validated_data.get('subtask'),member=validated_data.get('member')).exists(): + raise ParseError('成员已存在') + if validated_data.get('type') == '组长': + obj = InspectTeam.objects.get(type='组长', subtask=validated_data.get('subtask')) + obj.type='组员' + obj.save() + return InspectTeam.objects.create(**validated_data) + + + class InspectDeptSerializer(serializers.ModelSerializer): dept__name = serializers.CharField(source='dept.name', read_only=True) leader = serializers.SerializerMethodField() diff --git a/server/apps/quality/views.py b/server/apps/quality/views.py index eaefee3..a4796fd 100644 --- a/server/apps/quality/views.py +++ b/server/apps/quality/views.py @@ -7,7 +7,7 @@ from django.shortcuts import render from django.utils import timezone from rest_framework import status from rest_framework.decorators import action, permission_classes -from rest_framework.mixins import DestroyModelMixin, ListModelMixin, RetrieveModelMixin +from rest_framework.mixins import CreateModelMixin, DestroyModelMixin, ListModelMixin, RetrieveModelMixin from rest_framework.permissions import IsAdminUser from rest_framework.response import Response from rest_framework.viewsets import GenericViewSet, ModelViewSet @@ -166,11 +166,12 @@ class SubtaskViewSet(PageOrNot, CreateUpdateCustomMixin, OptimizationMixin, Mode r['create_by'] = request.user records.append(InspectRecord(**r)) for member in request.data['members']: - mmember = User.objects.get(pk=member) - data = {} - data['member'] = mmember - data['subtask'] = obj - members.append(InspectTeam(**data)) + if member != request.data['leader']: + mmember = User.objects.get(pk=member) + data = {} + data['member'] = mmember + data['subtask'] = obj + members.append(InspectTeam(**data)) InspectTeam.objects.bulk_create(members) InspectDept.objects.bulk_create(depts) InspectRecord.objects.bulk_create(records) @@ -245,7 +246,7 @@ class InspectDeptViewSet(OptimizationMixin, ListModelMixin, RetrieveModelMixin, return Response('检查状态错误', status=status.HTTP_400_BAD_REQUEST) -class InspectTeamViewSet(OptimizationMixin, ListModelMixin, RetrieveModelMixin, DestroyModelMixin, GenericViewSet): +class InspectTeamViewSet(PageOrNot, OptimizationMixin, ListModelMixin, CreateModelMixin, DestroyModelMixin, GenericViewSet): """ 子任务涉及组员表 """ @@ -253,6 +254,13 @@ class InspectTeamViewSet(OptimizationMixin, ListModelMixin, RetrieveModelMixin, queryset = InspectTeam.objects.all() serializer_class = InspectTeamSerializer filterset_fields = ['subtask'] + ordering = ['type'] + def destroy(self, request, *args, **kwargs): + instance = self.get_object() + if instance.type=='组长': + return Response('组长不可删除', status=status.HTTP_400_BAD_REQUEST) + instance.delete() + return Response(status=status.HTTP_204_NO_CONTENT) class InspectRecordViewSet(OptimizationMixin, PageOrNot, ModelViewSet): perms_map = {'get': '*', 'post': 'inspectrecord_create',