From 157557aa5e52fc28dfb2695be2bd0c40b28699a1 Mon Sep 17 00:00:00 2001 From: qz_cx Date: Fri, 10 Oct 2025 16:05:53 +0800 Subject: [PATCH] Organized backend code and removed Restframework methods used in previous projects --- appStore/cpu2006/views.py | 6 +- appStore/cpu2017/views.py | 7 +- appStore/env/views.py | 7 +- appStore/errorList/views.py | 7 +- appStore/fio/views.py | 7 +- appStore/iozone/views.py | 5 +- appStore/jvm2008/views.py | 6 +- appStore/lmbench/views.py | 5 +- appStore/project/views.py | 5 +- appStore/stream/views.py | 5 +- appStore/testCase/views.py | 5 +- appStore/testMachine/views.py | 5 +- appStore/unixbench/views.py | 5 +- appStore/userConfig/views.py | 15 +- appStore/users/views.py | 8 +- appStore/utils/customer_mixin.py | 98 -------- appStore/utils/customer_view.py | 212 ------------------ .../src/views/errorViews/ErrorList.vue | 61 ++--- 18 files changed, 74 insertions(+), 395 deletions(-) delete mode 100644 appStore/utils/customer_mixin.py delete mode 100644 appStore/utils/customer_view.py diff --git a/appStore/cpu2006/views.py b/appStore/cpu2006/views.py index 05e984b..1d5013c 100644 --- a/appStore/cpu2006/views.py +++ b/appStore/cpu2006/views.py @@ -7,16 +7,14 @@ """ import numpy as np # Create your views here. -from rest_framework import status - +from rest_framework import status, viewsets from appStore.cpu2006.models import Cpu2006 from appStore.cpu2006.serializers import Cpu2006Serializer from appStore.project.models import Project from appStore.utils.common import json_response, get_error_message -from appStore.utils.customer_view import CusModelViewSet -class Cpu2006ViewSet(CusModelViewSet): +class Cpu2006ViewSet(viewsets.ModelViewSet): """ Cpu2006数据管理 """ diff --git a/appStore/cpu2017/views.py b/appStore/cpu2017/views.py index bb6b6a1..fc14d87 100644 --- a/appStore/cpu2017/views.py +++ b/appStore/cpu2017/views.py @@ -9,16 +9,14 @@ import math import numpy as np # Create your views here. -from rest_framework import status - +from rest_framework import status, viewsets from appStore.cpu2017.models import Cpu2017 from appStore.cpu2017.serializers import Cpu2017Serializer from appStore.project.models import Project from appStore.utils.common import LimsPageSet, json_response, get_error_message -from appStore.utils.customer_view import CusModelViewSet -class Cpu2017ViewSet(CusModelViewSet): +class Cpu2017ViewSet(viewsets.ModelViewSet): """ Cpu2017数据管理 """ @@ -161,6 +159,7 @@ class Cpu2017ViewSet(CusModelViewSet): datas[103]['column' + str(column_index)] = data['fp_PECrate2017_fp'] column_index += 1 title_index += 1 + # 基准数据和对比数据的平均数据 title = '平均值(基准数据)' if not base_column_index else '平均值' datas[0]['column' + str(column_index)] = title diff --git a/appStore/env/views.py b/appStore/env/views.py index 5c6fef2..6c2d043 100644 --- a/appStore/env/views.py +++ b/appStore/env/views.py @@ -8,19 +8,16 @@ import os import json from base64 import b64decode - from django.http import HttpRequest # Create your views here. -from rest_framework import status - +from rest_framework import status, viewsets from appStore.env.models import Env from appStore.env.serializers import EnvSerializer from appStore.project.models import Project from appStore.utils.common import LimsPageSet, json_response, get_error_message -from appStore.utils.customer_view import CusModelViewSet -class EnvViewSet(CusModelViewSet): +class EnvViewSet(viewsets.ModelViewSet): """ env数据管理 """ diff --git a/appStore/errorList/views.py b/appStore/errorList/views.py index d7a7acb..0547ece 100644 --- a/appStore/errorList/views.py +++ b/appStore/errorList/views.py @@ -9,14 +9,11 @@ from appStore.errorList.models import KytuningError from appStore.errorList.serializers import ErroirListSerializer from appStore.utils.common import LimsPageSet, json_response -from rest_framework.viewsets import ModelViewSet -from rest_framework import status - +from rest_framework import status, viewsets # Create your views here. -# class ErrorListViewSet(CusModelViewSet): -class ErrorListViewSet(ModelViewSet): +class ErrorListViewSet(viewsets.ModelViewSet): """ 错误收集数据管理 """ diff --git a/appStore/fio/views.py b/appStore/fio/views.py index 7706a52..2127824 100644 --- a/appStore/fio/views.py +++ b/appStore/fio/views.py @@ -6,16 +6,14 @@ * Date: Thu Feb 29 16:18:43 2024 +0800 """ # Create your views here. -from rest_framework import status - +from rest_framework import status, viewsets from appStore.fio.models import Fio from appStore.fio.serializers import FioSerializer from appStore.project.models import Project from appStore.utils.common import json_response, get_error_message -from appStore.utils.customer_view import CusModelViewSet -class FioViewSet(CusModelViewSet): +class FioViewSet(viewsets.ModelViewSet): """ fio数据管理 """ @@ -57,7 +55,6 @@ class FioViewSet(CusModelViewSet): datas[i]['column' + str(column_index)] = None column_index += 1 title_index += 1 - else: # 基准数据和对比数据的全部数据 for data in serializer.data: diff --git a/appStore/iozone/views.py b/appStore/iozone/views.py index ca0f260..242a272 100644 --- a/appStore/iozone/views.py +++ b/appStore/iozone/views.py @@ -8,16 +8,15 @@ import numpy as np # Create your views here. -from rest_framework import status +from rest_framework import status, viewsets from appStore.iozone.models import Iozone from appStore.iozone.serializers import IozoneSerializer from appStore.project.models import Project from appStore.utils.common import json_response, get_error_message -from appStore.utils.customer_view import CusModelViewSet -class IozoneViewSet(CusModelViewSet): +class IozoneViewSet(viewsets.ModelViewSet): """ iozone数据管理 """ diff --git a/appStore/jvm2008/views.py b/appStore/jvm2008/views.py index 46be0d8..d38ae5b 100644 --- a/appStore/jvm2008/views.py +++ b/appStore/jvm2008/views.py @@ -6,18 +6,16 @@ * Date: Thu Feb 29 16:18:43 2024 +0800 """ import numpy as np - # Create your views here. -from rest_framework import status +from rest_framework import status, viewsets from appStore.jvm2008.models import Jvm2008 from appStore.jvm2008.serializers import Jvm2008Serializer from appStore.project.models import Project from appStore.utils.common import json_response, get_error_message -from appStore.utils.customer_view import CusModelViewSet -class Jvm2008ViewSet(CusModelViewSet): +class Jvm2008ViewSet(viewsets.ModelViewSet): """ stream数据管理 """ diff --git a/appStore/lmbench/views.py b/appStore/lmbench/views.py index e936388..4521e6c 100644 --- a/appStore/lmbench/views.py +++ b/appStore/lmbench/views.py @@ -8,16 +8,15 @@ import math import numpy as np # Create your views here. -from rest_framework import status +from rest_framework import status, viewsets from appStore.lmbench.models import Lmbench from appStore.lmbench.serializers import LmbenchSerializer from appStore.project.models import Project from appStore.utils.common import json_response, get_error_message -from appStore.utils.customer_view import CusModelViewSet -class LmbenchViewSet(CusModelViewSet): +class LmbenchViewSet(viewsets.ModelViewSet): """ Lmbench数据管理 """ diff --git a/appStore/project/views.py b/appStore/project/views.py index 2712454..581568b 100644 --- a/appStore/project/views.py +++ b/appStore/project/views.py @@ -11,7 +11,7 @@ import json import logging from django.http import FileResponse, HttpResponse -from rest_framework import status +from rest_framework import status, viewsets from rest_framework.test import APIRequestFactory from appStore.utils.constants import EXCEL_TEMP from appStore.cpu2006.models import Cpu2006 @@ -27,14 +27,13 @@ from appStore.stream.models import Stream from appStore.unixbench.models import Unixbench from appStore.users.models import UserProfile from appStore.utils.common import json_response, get_error_message -from appStore.utils.customer_view import CusModelViewSet from appStore.utils.export_excel import stream_excel, cpu2017_excel, cpu2006_excel, jvm2008_excel, iozone_excel, \ fio_excel, unixbench_excel, lmbench_excel, env_excel log = logging.getLogger('mydjango') #这里的mydjango是settings中loggers里面对应的名字 -class ProjectViewSet(CusModelViewSet): +class ProjectViewSet(viewsets.ModelViewSet): """ project数据管理 """ diff --git a/appStore/stream/views.py b/appStore/stream/views.py index 3bc67d7..dfc2f9f 100644 --- a/appStore/stream/views.py +++ b/appStore/stream/views.py @@ -7,16 +7,15 @@ """ import numpy as np # Create your views here. -from rest_framework import status +from rest_framework import status, viewsets from appStore.project.models import Project from appStore.stream.models import Stream from appStore.stream.serializers import StreamSerializer from appStore.utils.common import json_response, get_error_message -from appStore.utils.customer_view import CusModelViewSet -class StreamViewSet(CusModelViewSet): +class StreamViewSet(viewsets.ModelViewSet): """ stream数据管理 """ diff --git a/appStore/testCase/views.py b/appStore/testCase/views.py index c55f738..5e4e3b7 100644 --- a/appStore/testCase/views.py +++ b/appStore/testCase/views.py @@ -17,13 +17,12 @@ from appStore.testCase.models import TestCase from appStore.testCase.serializers import TestCaseSerializer from appStore.utils.common import test_case, json_response, get_error_message from appStore.utils.constants import RESULT_LOG_FILE, RUN_KYTUNING_CONFIG_TEMP -from appStore.utils.customer_view import CusModelViewSet -from rest_framework import status +from rest_framework import status, viewsets # Create your views here. -class TestCaseViewSet(CusModelViewSet): +class TestCaseViewSet(viewsets.ModelViewSet): """ 测试用例数据管理 """ diff --git a/appStore/testMachine/views.py b/appStore/testMachine/views.py index 39e5546..5dbd5e5 100644 --- a/appStore/testMachine/views.py +++ b/appStore/testMachine/views.py @@ -7,10 +7,11 @@ """ from appStore.testMachine.models import TestMachine from appStore.testMachine.serializers import TestMachineSerializer -from appStore.utils.customer_view import CusModelViewSet +from rest_framework import status, viewsets + # Create your views here. -class TestMachineViewSet(CusModelViewSet): +class TestMachineViewSet(viewsets.ModelViewSet): """ 测试机器数据管理 """ diff --git a/appStore/unixbench/views.py b/appStore/unixbench/views.py index 0b2da15..afa0550 100644 --- a/appStore/unixbench/views.py +++ b/appStore/unixbench/views.py @@ -7,16 +7,15 @@ """ # Create your views here. import numpy as np -from rest_framework import status +from rest_framework import status, viewsets from appStore.project.models import Project from appStore.unixbench.models import Unixbench from appStore.unixbench.serializers import UnixbenchSerializer from appStore.utils.common import json_response, get_error_message -from appStore.utils.customer_view import CusModelViewSet -class UnixbenchViewSet(CusModelViewSet): +class UnixbenchViewSet(viewsets.ModelViewSet): """ Unixbench数据管理 """ diff --git a/appStore/userConfig/views.py b/appStore/userConfig/views.py index b183989..0310e19 100644 --- a/appStore/userConfig/views.py +++ b/appStore/userConfig/views.py @@ -5,12 +5,15 @@ * Author: wangqingzheng * Date: Fri Mar 1 10:10:52 2024 +0800 """ +from rest_framework import status, viewsets from appStore.userConfig.models import UserConfig from appStore.userConfig.serializers import UserConfigSerializer from appStore.utils.common import json_response -from appStore.utils.customer_view import CusModelViewSet + + # Create your views here. -class UserConfigViewSet(CusModelViewSet): + +class UserConfigViewSet(viewsets.ModelViewSet): """ 用户配置数据管理 """ @@ -26,7 +29,7 @@ class UserConfigViewSet(CusModelViewSet): if id == '0': # 获取最后一条数据 queryset = [queryset.first()] else: - queryset=queryset.filter(id=id) + queryset = queryset.filter(id=id) serializer = self.get_serializer(queryset, many=True) return json_response(serializer.data, status.HTTP_200_OK, '测试完成') @@ -64,7 +67,7 @@ class UserConfigViewSet(CusModelViewSet): if config_serializer.is_valid(): self.perform_create(config_serializer) return json_response(config_serializer.data, status.HTTP_200_OK, '创建成功!') - return json_response({}, status.HTTP_400_BAD_REQUEST,config_serializer.errors) + return json_response({}, status.HTTP_400_BAD_REQUEST, config_serializer.errors) def put(self, request, *args, **kwargs): id = request.data.get('id') @@ -72,7 +75,7 @@ class UserConfigViewSet(CusModelViewSet): return json_response({}, status.HTTP_205_RESET_CONTENT, '请传递正确的测试id') user_name = UserConfig.objects.filter(id=id).first().user_name if request.user.is_superuser or request.user.username == user_name: - config_data = UserConfig.objects.get(id=id) #get=filter.first() + config_data = UserConfig.objects.get(id=id) # get=filter.first() if not config_data: return json_response({}, status.HTTP_205_RESET_CONTENT, '没有该数据') config_data.config_name = request.data.get('config_name') @@ -116,5 +119,3 @@ class UserConfigViewSet(CusModelViewSet): return json_response({}, status.HTTP_200_OK, '删除成功') else: return json_response({}, status.HTTP_205_RESET_CONTENT, '此用户不允许删除该数据') - - diff --git a/appStore/users/views.py b/appStore/users/views.py index 3633153..80170b6 100644 --- a/appStore/users/views.py +++ b/appStore/users/views.py @@ -5,20 +5,16 @@ * Author: wqz * Date: Thu Aug 15 17:26:05 2024 +0800 """ -from rest_framework.authentication import SessionAuthentication - from appStore.users.models import UserProfile -from rest_framework import status +from rest_framework import status, viewsets from appStore.users.serializers import UserProfileSerializer from appStore.utils.common import json_response, get_error_message -from appStore.utils.customer_view import CusModelViewSet # Create your views here. -class UserProfileViewSet(CusModelViewSet): +class UserProfileViewSet(viewsets.ModelViewSet): """ 用户数据管理 """ - queryset = UserProfile.objects.all().order_by('-id') serializer_class = UserProfileSerializer diff --git a/appStore/utils/customer_mixin.py b/appStore/utils/customer_mixin.py deleted file mode 100644 index b1165c0..0000000 --- a/appStore/utils/customer_mixin.py +++ /dev/null @@ -1,98 +0,0 @@ -""" - * Copyright (c) KylinSoft Co., Ltd. 2024.All rights reserved. - * PilotGo-plugin licensed under the Mulan Permissive Software License, Version 2. - * See LICENSE file for more details. - * Author: wangqingzheng - * Date: Fri Feb 23 10:58:08 2024 +0800 -""" -#!/usr/bin/env python -# encoding: utf-8 -""" -@author: wqz -@time: 8/7/19 4:26 PM -""" -from rest_framework import status - -from appStore.utils.common import json_response, get_error_message, list_response - - -class CusCreateModelMixin(object): - """ - Create a model instance. - """ - - def create(self, request, *args, **kwargs): - serializer = self.get_serializer(data=request.data) - if serializer.is_valid(): - self.perform_create(serializer) - return json_response(serializer.data, status.HTTP_200_OK, '创建成功!') - return json_response(serializer.errors, status.HTTP_400_BAD_REQUEST, get_error_message(serializer)) - - def perform_create(self, serializer): - serializer.save() - - -class CusListModelMixin(object): - """ - List a queryset. - """ - def list(self, request, *args, **kwargs): - queryset = self.filter_queryset(self.get_queryset()) - try: - page = self.paginate_queryset(queryset) - except: - return json_response({}, status.HTTP_200_OK, '计划列表获取为空,可能是page/page_size参数不对') - if page is not None: - serializer = self.get_serializer(page, many=True) - result = serializer.data - result = self.get_paginated_response(result) - return list_response(result, status.HTTP_200_OK, '列表') - serializer = self.get_serializer(queryset, many=True) - return json_response(serializer.data, status.HTTP_200_OK, '列表') - - -class CusRetrieveModelMixin(object): - """ - Retrieve a model instance.单个 - """ - - def retrieve(self, request, *args, **kwargs): - instance = self.get_object() - serializer = self.get_serializer(instance) - return json_response(serializer.data, status.HTTP_200_OK, '获取成功!') - - -class CusUpdateModelMixin(object): - """ - Update a model instance. - """ - - def update(self, request, *args, **kwargs): - partial = kwargs.pop('partial', True) - instance = self.get_object() - serializer = self.get_serializer(instance, data=request.data, partial=partial) - if serializer.is_valid(): - self.perform_update(serializer) - if getattr(instance, '_prefetched_objects_cache', None): - # If 'prefetch_related' has been applied to a queryset, we need to - # forcibly invalidate the prefetch cache on the instance. - instance._prefetched_objects_cache = {} - return json_response(serializer.data, status.HTTP_200_OK, '更新成功!') - return json_response(serializer.errors, status.HTTP_400_BAD_REQUEST, get_error_message(serializer)) - - def perform_update(self, serializer): - serializer.save() - - -class CusDestroyModelMixin(object): - """ - Destroy a model instance. - """ - - def destroy(self, request, *args, **kwargs): - instance = self.get_object() - self.perform_destroy(instance) - return json_response(True, status.HTTP_200_OK, '删除成功!') - - def perform_destroy(self, instance): - instance.delete() diff --git a/appStore/utils/customer_view.py b/appStore/utils/customer_view.py deleted file mode 100644 index 96ae975..0000000 --- a/appStore/utils/customer_view.py +++ /dev/null @@ -1,212 +0,0 @@ -""" - * Copyright (c) KylinSoft Co., Ltd. 2024.All rights reserved. - * PilotGo-plugin licensed under the Mulan Permissive Software License, Version 2. - * See LICENSE file for more details. - * Author: wangqingzheng - * Date: Fri Feb 23 11:15:41 2024 +0800 -""" -#!/usr/bin/env python -# encoding: utf-8 -""" -@author: wqz -@time: 8/7/19 4:29 PM -""" -from collections import OrderedDict -from functools import update_wrapper -from inspect import getmembers - -from django.urls import NoReverseMatch -from django.utils.decorators import classonlymethod -from django.views.decorators.csrf import csrf_exempt - -from rest_framework import generics -from rest_framework.reverse import reverse - -from appStore.utils.customer_mixin import CusRetrieveModelMixin, CusListModelMixin, CusCreateModelMixin, \ - CusUpdateModelMixin, \ - CusDestroyModelMixin - - -def _is_extra_action(attr): - return hasattr(attr, 'mapping') - - -class ViewSetMixin(object): - """ - This is the magic. - Overrides `.as_view()` so that it takes an `actions` keyword that performs - the binding of HTTP methods to actions on the Resource. - For example, to create a concrete view binding the 'GET' and 'POST' methods - to the 'list' and 'create' actions... - view = MyViewSet.as_view({'get': 'list', 'post': 'create'}) - """ - - @classonlymethod - def as_view(cls, actions=None, **initkwargs): - """ - Because of the way class based views create a closure around the - instantiated view, we need to totally reimplement `.as_view`, - and slightly modify the view function that is created and returned. - """ - # The name and description initkwargs may be explicitly overridden for - # certain route confiugurations. eg, names of extra actions. - cls.name = None - cls.description = None - - # The suffix initkwarg is reserved for displaying the viewset type. - # This initkwarg should have no effect if the name is provided. - # eg. 'List' or 'Instance'. - cls.suffix = None - - # The detail initkwarg is reserved for introspecting the viewset type. - cls.detail = None - - # Setting a basename allows a view to reverse its action urls. This - # value is provided by the router through the initkwargs. - cls.basename = None - - # actions must not be empty - if not actions: - raise TypeError("The `actions` argument must be provided when " - "calling `.as_view()` on a ViewSet. For example " - "`.as_view({'get': 'list'})`") - - # sanitize keyword arguments - for key in initkwargs: - if key in cls.http_method_names: - raise TypeError("You tried to pass in the %s method name as a " - "keyword argument to %s(). Don't do that." - % (key, cls.__name__)) - if not hasattr(cls, key): - raise TypeError("%s() received an invalid keyword %r" % ( - cls.__name__, key)) - - # name and suffix are mutually exclusive - if 'name' in initkwargs and 'suffix' in initkwargs: - raise TypeError("%s() received both `name` and `suffix`, which are " - "mutually exclusive arguments." % (cls.__name__)) - - def view(request, *args, **kwargs): - self = cls(**initkwargs) - # We also store the mapping of request methods to actions, - # so that we can later set the action attribute. - # eg. `self.action = 'list'` on an incoming GET request. - self.action_map = actions - - # Bind methods to actions - # This is the bit that's different to a standard view - for method, action in actions.items(): - handler = getattr(self, action) - setattr(self, method, handler) - - if hasattr(self, 'get') and not hasattr(self, 'head'): - self.head = self.get - - self.request = request - self.args = args - self.kwargs = kwargs - - # And continue as usual - return self.dispatch(request, *args, **kwargs) - - # take name and docstring from class - update_wrapper(view, cls, updated=()) - - # and possible attributes set by decorators - # like csrf_exempt from dispatch - update_wrapper(view, cls.dispatch, assigned=()) - - # We need to set these on the view function, so that breadcrumb - # generation can pick out these bits of information from a - # resolved URL. - view.cls = cls - view.initkwargs = initkwargs - view.actions = actions - return csrf_exempt(view) - - def initialize_request(self, request, *args, **kwargs): - """ - Set the `.action` attribute on the view, depending on the request method. - """ - request = super(ViewSetMixin, self).initialize_request(request, *args, **kwargs) - method = request.method.lower() - if method == 'options': - # This is a special case as we always provide handling for the - # options method in the base `View` class. - # Unlike the other explicitly defined actions, 'metadata' is implicit. - self.action = 'metadata' - else: - self.action = self.action_map.get(method) - return request - - def reverse_action(self, url_name, *args, **kwargs): - """ - Reverse the action for the given `url_name`. - """ - url_name = '%s-%s' % (self.basename, url_name) - kwargs.setdefault('request', self.request) - - return reverse(url_name, *args, **kwargs) - - @classmethod - def get_extra_actions(cls): - """ - Get the methods that are marked as an extra ViewSet `@action`. - """ - return [method for _, method in getmembers(cls, _is_extra_action)] - - def get_extra_action_url_map(self): - """ - Build a map of {names: urls} for the extra actions. - This method will noop if `detail` was not provided as a view initkwarg. - """ - action_urls = OrderedDict() - - # exit early if `detail` has not been provided - if self.detail is None: - return action_urls - - # filter for the relevant extra actions - actions = [ - action for action in self.get_extra_actions() - if action.detail == self.detail - ] - - for action in actions: - try: - url_name = '%s-%s' % (self.basename, action.url_name) - url = reverse(url_name, self.args, self.kwargs, request=self.request) - view = self.__class__(**action.kwargs) - action_urls[view.get_view_name()] = url - except NoReverseMatch: - pass # URL requires additional arguments, ignore - - return action_urls - - - - - -class GenericViewSet(ViewSetMixin, generics.GenericAPIView): - """ - The GenericViewSet class does not provide any actions by default, - but does include the base set of generic view behavior, such as - the `get_object` and `get_queryset` methods. - """ - pass - - - - -class CusModelViewSet(CusCreateModelMixin, - CusRetrieveModelMixin, - CusUpdateModelMixin, - CusDestroyModelMixin, - CusListModelMixin, - GenericViewSet): - """ - 都允许 - """ - pass - - diff --git a/templates/front-project/src/views/errorViews/ErrorList.vue b/templates/front-project/src/views/errorViews/ErrorList.vue index 1c1c10b..1d864db 100644 --- a/templates/front-project/src/views/errorViews/ErrorList.vue +++ b/templates/front-project/src/views/errorViews/ErrorList.vue @@ -77,7 +77,7 @@
- + @@ -184,11 +184,12 @@ export default { solution: '', }, rules: { - errType: [{required: true, message: '请选择错误类型'}], - testType: [{required: true, message: '请选择测试类型'}], - errorDescription: [{required: true, message: '请输入错误描述'}], - errorExport: [{required: true, message: '请输入错误日志节选'}], - solution: [{required: true, message: '请输入解决方案'}], + errType: [{required: true, message: '请选择错误类型', trigger: 'change'}], + testType: [{required: true, message: '请选择测试类型', trigger: 'change'}], + errorDescription: [{required: true, message: '请输入错误描述', trigger: 'blur'}], + errorExport: [{required: true, message: '请输入错误日志节选', trigger: 'blur'}], + errorLogPath: [{required: true, message: '请选中错误数据', trigger: 'blur'}], + solution: [{required: true, message: '请输入解决方案', trigger: 'blur'}], }, dialogErrorPost: false, dialogErrorPut: false, @@ -230,6 +231,8 @@ export default { }, //新增的取消 closeInfo() { + // 重置表单的验证状态 + this.$refs.errorForm.resetFields(); this.dialogErrorPost = false this.dialogErrorPut = false }, @@ -245,8 +248,6 @@ export default { selectTestSure() { this.errorData.errorLogPath = this.testData.result_log_name this.dialogTest = false - console.log(this.testData) - console.log(this.errorData) }, //选择框只能单选 handleSelection(val) { @@ -260,25 +261,34 @@ export default { closeTest() { this.dialogTest = false }, - //确定新增数据 + addSure() { - this.dialogErrorPost = false; - const errData = { - error_type: this.errorData.errType, - test_type: this.errorData.testType, - error_description: this.errorData.errorDescription, - error_log_excerpt: this.errorData.errorExport, - error_log_path: this.errorData.errorLogPath, - solution: this.errorData.solution, - } - error_list('post', errData).then(response => { - if (response.data.code === 200) { - ElMessage({message: response.data.message, type: 'success'}) - this.getData() + //errorForm这个是上面form表单中的ref对应的标记 + console.log(this.$refs.errorForm,111) + this.$refs.errorForm.validate((valid) => { + if (valid) { + this.dialogErrorPost = false; + const errData = { + error_type: this.errorData.errType, + test_type: this.errorData.testType, + error_description: this.errorData.errorDescription, + error_log_excerpt: this.errorData.errorExport, + error_log_path: this.errorData.errorLogPath, + solution: this.errorData.solution, + }; + error_list('post', errData).then((response) => { + if (response.data.code === 200) { + ElMessage({message: response.data.message, type: 'success'}); + this.getData(); + } + }); + } else { + ElMessage({message: '请填写正确信息', type: 'success'}) + return false; } - }) + }); }, - //重置筛选 + reset() { this.errorData = { errType: '', @@ -337,7 +347,8 @@ export default { }) }, } -}; +} +; -- Gitee