diff --git a/test_client/src/views/analyse/examtest.vue b/test_client/src/views/analyse/examtest.vue index b501288..2cf4e3d 100644 --- a/test_client/src/views/analyse/examtest.vue +++ b/test_client/src/views/analyse/examtest.vue @@ -171,6 +171,9 @@ export default { }; }, computed: {}, + watch:{ + value:'setTimeRange', + }, created() { this.getList(); }, @@ -191,8 +194,9 @@ export default { this.listQuery = { page: 1, limit: 20, - search:'' + search:'', }; + this.value = [] this.getList(); }, handleDetail(scope) { @@ -205,6 +209,11 @@ export default { loading.close() window.open(response.data.path, "_blank"); }); + }, + setTimeRange(){ + this.listQuery.start = this.value[0], + this.listQuery.end = this.value[1], + this.getList() } } }; diff --git a/test_client/src/views/crm/consumer.vue b/test_client/src/views/crm/consumer.vue index e42f199..8305d8d 100644 --- a/test_client/src/views/crm/consumer.vue +++ b/test_client/src/views/crm/consumer.vue @@ -36,9 +36,9 @@ placeholder="姓名或手机号" style="width: 200px;" class="filter-item" - @keyup.enter.native="handleSearch" + @keyup.enter.native="handleFilter" /> - 搜索 + 搜索 @@ -114,7 +115,7 @@ {{ scope.row.workscope_name }} - + @@ -353,9 +354,6 @@ export default { this.listQuery.page = 1; this.getList(); }, - handleSearch() { - this.getList(this.listQuery); - }, handleAddUser() { this.consumer = Object.assign({}, defaultConsumer); this.dialogType = "new"; @@ -396,7 +394,7 @@ export default { const isEdit = this.dialogType === "edit"; if (isEdit) { let consumer = this.consumer - updateConsumer(this.consumer.id, consumer).then(() => { + updateConsumer(this.consumer.id, consumer).then(res => { // for (let index = 0; index < this.consumerList.length; index++) { // if (this.consumerList[index].id === this.consumer.id) { // this.consumerList.splice( @@ -409,12 +407,15 @@ export default { // } this.getList() this.dialogVisible = false; - this.$notify({ - title: "成功", - message: "编辑成功", - type: "success", - duration: 2000 - }); + if(res.code >=200){ + this.$notify({ + title: "成功", + message: "编辑成功", + type: "success", + duration: 2000 + }); + } + }); } else { createConsumer(this.consumer).then(res => { @@ -422,12 +423,15 @@ export default { // this.consumerList.unshift(this.consumer) this.getList(); this.dialogVisible = false; - this.$notify({ + if(res.code >=200){ + this.$notify({ title: "成功", message: "新增成功", type: "success", duration: 2000 }); + } + }); } } else { @@ -441,6 +445,16 @@ export default { loading.close() window.open(response.data.path, "_blank"); }); + }, + changeSort (val) { + if(val.order == 'ascending'){ + this.listQuery.ordering = val.prop + }else{ + this.listQuery.ordering = '-' + val.prop + } + + this.getList() + } } }; diff --git a/test_server/crm/views.py b/test_server/crm/views.py index 48b5fdf..8bf4b65 100644 --- a/test_server/crm/views.py +++ b/test_server/crm/views.py @@ -82,7 +82,7 @@ class ConsumerViewSet(ModelViewSet): serializer_class = ConsumerSerializer pagination_class = CommonPagination ordering_fields = ('id','company','create_time') - ordering = ['company','-create_time'] + ordering = ['-create_time', 'company'] filter_backends = [DjangoFilterBackend, SearchFilter, OrderingFilter] filterset_fields = ('company',) search_fields = ('^name','^username') @@ -94,10 +94,8 @@ class ConsumerViewSet(ModelViewSet): def create(self, request, *args, **kwargs): serializer = self.get_serializer(data=request.data) - if serializer.is_valid(): - instance = serializer.save() - else: - return Response(serializer.errors) + serializer.is_valid(raise_exception=True) + instance = serializer.save() if request.data.get('subjects', None): for i in request.data.get('subjects'): PaySubject.objects.get_or_create(consumer = instance, subject__id=i, defaults={'consumer':instance,'subject':Questioncat.objects.get(id=i)}) @@ -190,7 +188,6 @@ class ConsumerViewSet(ModelViewSet): if sheet['d2'].value != '工作类别': return Response({"error":"工作类别列错误!"}) companydict = {} - consumerdict = {} companys = Company.objects.filter(is_delete=0) for i in companys: companydict[i.name] = i.id diff --git a/test_server/examtest/views.py b/test_server/examtest/views.py index 6de6ed5..24309ee 100644 --- a/test_server/examtest/views.py +++ b/test_server/examtest/views.py @@ -1,6 +1,7 @@ from datetime import datetime from django.db.models import Avg +from django.db.models.query import QuerySet from django_filters.rest_framework import DjangoFilterBackend from openpyxl import Workbook, load_workbook from rest_framework import status @@ -210,6 +211,22 @@ class ExamTestViewSet(ModelViewSet): filter_backends = [DjangoFilterBackend, SearchFilter, OrderingFilter] filterset_fields = ['type','is_pass'] + def get_queryset(self): + assert self.queryset is not None, ( + "'%s' should either include a `queryset` attribute, " + "or override the `get_queryset()` method." + % self.__class__.__name__ + ) + queryset = self.queryset + + if isinstance(queryset, QuerySet): + # Ensure queryset is re-evaluated on each request. + queryset = queryset.all() + if self.request.query_params.get('start'): + queryset = queryset.filter(start_time__gte=self.request.query_params['start'] ) + if self.request.query_params.get('end'): + queryset = queryset.filter(start_time__lte=self.request.query_params['end']) + return queryset @action(methods=['get'], detail=False,url_path='self', url_name='selftest', perms_map = [{'*':'my_examtest'}]) def selftest(self, request, pk=None): ''' @@ -263,7 +280,7 @@ class ExamTestViewSet(ModelViewSet): @action(methods=['get'], detail=False, url_path='export', url_name='export_test', perms_map=[{'*':'export_test'}]) def export(self, request): - queryset = self.filter_queryset(self.queryset) + queryset = self.filter_queryset(self.get_queryset()) queryset = ExamTestListSerializer.setup_eager_loading(queryset) # 性能优化 serializer = ExamTestListSerializer(instance=queryset, many=True) path = export_test(serializer.data)