diff --git a/client_mp/pages/login/login_password.vue b/client_mp/pages/login/login_password.vue index e0edf32..c76fbe3 100644 --- a/client_mp/pages/login/login_password.vue +++ b/client_mp/pages/login/login_password.vue @@ -82,15 +82,19 @@ export default { this.$u.api.getUserInfo().then(res=>{ this.$u.vuex('vuex_user', res.data) // 修改资源请求地址 - this.$u.vuex('vuex_user.avatar', this.vuex_user.avatar + + this.$u.vuex('vuex_user.avatar', res.data.avatar + '?token=' + this.vuex_token) - console.log(this.vuex_user) }) uni.reLaunch({ url:'/pages/home/home' }) } - ) + ).catch(e=>{ + uni.showToast({ + title:'账户密码错误', + icon:'none' + }) + }) } else { console.log('验证失败'); } diff --git a/server/apps/quality/migrations/0015_document.py b/server/apps/quality/migrations/0015_document.py new file mode 100644 index 0000000..4e20057 --- /dev/null +++ b/server/apps/quality/migrations/0015_document.py @@ -0,0 +1,36 @@ +# Generated by Django 3.0.5 on 2021-06-25 03:17 + +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), + ('system', '0018_auto_20210430_1156'), + ('quality', '0014_inspecttask_template'), + ] + + operations = [ + migrations.CreateModel( + name='Document', + fields=[ + ('id', models.AutoField(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='名称')), + ('description', models.TextField(default='', verbose_name='描述')), + ('create_by', models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.SET_NULL, related_name='document_create_by', to=settings.AUTH_USER_MODEL, verbose_name='创建人')), + ('file', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to='system.File')), + ('update_by', models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.SET_NULL, related_name='document_update_by', to=settings.AUTH_USER_MODEL, verbose_name='最后编辑人')), + ], + options={ + 'verbose_name': '质量文件库', + 'verbose_name_plural': '质量文件库', + }, + ), + ] diff --git a/server/apps/quality/migrations/0016_auto_20210625_1118.py b/server/apps/quality/migrations/0016_auto_20210625_1118.py new file mode 100644 index 0000000..6553b3d --- /dev/null +++ b/server/apps/quality/migrations/0016_auto_20210625_1118.py @@ -0,0 +1,18 @@ +# Generated by Django 3.0.5 on 2021-06-25 03:18 + +from django.db import migrations, models + + +class Migration(migrations.Migration): + + dependencies = [ + ('quality', '0015_document'), + ] + + operations = [ + migrations.AlterField( + model_name='document', + name='description', + field=models.TextField(blank=True, default='', verbose_name='描述'), + ), + ] diff --git a/server/apps/quality/models.py b/server/apps/quality/models.py index 9de3872..b62d6e7 100644 --- a/server/apps/quality/models.py +++ b/server/apps/quality/models.py @@ -121,4 +121,12 @@ class InspectRecord(CommonAModel): verbose_name = '巡查记录' verbose_name_plural = verbose_name - \ No newline at end of file +class Document(CommonAModel): + + name = models.CharField('名称', max_length=100) + description = models.TextField('描述', default="", blank=True) + file = models.ForeignKey(File, on_delete=models.CASCADE) + + class Meta: + verbose_name = '质量文件库' + verbose_name_plural = verbose_name \ No newline at end of file diff --git a/server/apps/quality/serializers.py b/server/apps/quality/serializers.py index 570daa6..ba1e3ca 100644 --- a/server/apps/quality/serializers.py +++ b/server/apps/quality/serializers.py @@ -4,6 +4,18 @@ from rest_framework import serializers from .models import * from apps.system.serializers import OrganizationSerializer,FileListSerializer,UserSimpleSerializer,OrganizationSimpleSerializer, FileSimpleSerializer from rest_framework.exceptions import ParseError, APIException + +class DocumentSerializer(serializers.ModelSerializer): + + file_ = FileListSerializer(source='file', read_only=True) + class Meta: + model = Document + fields = '__all__' + @staticmethod + def setup_eager_loading(queryset): + queryset = queryset.select_related('file') + return queryset + class InspectItemSerializer(serializers.ModelSerializer): cate_name = serializers.StringRelatedField(source='cate', read_only=True) class Meta: diff --git a/server/apps/quality/urls.py b/server/apps/quality/urls.py index e18fe4a..1e65ce8 100644 --- a/server/apps/quality/urls.py +++ b/server/apps/quality/urls.py @@ -1,6 +1,6 @@ from django.urls import path, include from rest_framework import routers -from .views import InspectItemViewSet, InspectTaskViewSet, InspectTeamViewSet, InspectTemplateViewSet, SubtaskViewSet, InspectRecordViewSet, InspectDeptViewSet, InspectTemplate +from .views import DocumentViewSet, InspectItemViewSet, InspectTaskViewSet, InspectTeamViewSet, InspectTemplateViewSet, SubtaskViewSet, InspectRecordViewSet, InspectDeptViewSet, InspectTemplate router = routers.DefaultRouter() router.register('inspectitem', InspectItemViewSet, basename="inspectitem") @@ -10,6 +10,7 @@ router.register('inspectrecord', InspectRecordViewSet, basename='inspectrecord') router.register('inspectdept', InspectDeptViewSet, basename='inspectdept') router.register('inspecttemplate', InspectTemplateViewSet, basename='inspecttemplate') router.register('inspectteam', InspectTeamViewSet, basename='inspectteam') +router.register('document', DocumentViewSet, basename='document') urlpatterns = [ path('', include(router.urls)) ] \ No newline at end of file diff --git a/server/apps/quality/views.py b/server/apps/quality/views.py index 5b330ab..13711f8 100644 --- a/server/apps/quality/views.py +++ b/server/apps/quality/views.py @@ -14,7 +14,7 @@ from rest_framework.response import Response from rest_framework.viewsets import GenericViewSet, ModelViewSet from utils.pagination import PageOrNot -from apps.system.mixins import CreateUpdateCustomMixin, OptimizationMixin +from apps.system.mixins import CreateUpdateCustomMixin, CreateUpdateModelAMixin, OptimizationMixin from apps.system.models import Organization from apps.system.permission import get_permission_list, has_permission from apps.system.permission_data import RbacFilterSet @@ -23,6 +23,14 @@ from .models import * from .serializers import * from .permission import IsSubInspectTaskLeader, IsInspectRecordChecker # Create your views here. +class DocumentViewSet(OptimizationMixin, PageOrNot, CreateUpdateModelAMixin, ModelViewSet): + perms_map = {'get': '*', 'post': 'qualitydocument_create', + 'put': 'qualitydocument_update', 'delete': 'qualitydocument_delete'} + queryset = Document.objects.all() + serializer_class = DocumentSerializer + ordering = ['-id'] + search_fields = ['name'] + class InspectTemplateViewSet(PageOrNot, CreateUpdateCustomMixin, ModelViewSet): """ diff --git a/server/apps/system/views.py b/server/apps/system/views.py index dbcc47e..0506bd7 100644 --- a/server/apps/system/views.py +++ b/server/apps/system/views.py @@ -359,7 +359,7 @@ class UserViewSet(PageOrNot, ModelViewSet): """ UserThird.objects.filter(user=request.user, type='wx_mp').delete() return Response() - + class WXMPlogin(APIView): authentication_classes=[] permission_classes=[] @@ -420,6 +420,7 @@ class FileViewSet(ModelViewSet): from rest_framework_simplejwt.state import token_backend from django.http import HttpResponseForbidden, HttpResponse import urllib.parse as urlparse + def mediaauth(request): token = "" token = request.COOKIES.get('token', None)