From 7bdd1a6c8a5198a023e9069963f73803488f51c1 Mon Sep 17 00:00:00 2001 From: shilixia <2309368887@qq.com> Date: Mon, 13 Dec 2021 10:48:19 +0800 Subject: [PATCH 1/8] =?UTF-8?q?=E5=92=A8=E8=AF=A2=E8=B5=84=E6=96=99?= =?UTF-8?q?=E5=88=86=E4=BA=AB?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- client/.env.development | 4 +- client/package.json | 1 + client/src/api/consulting.js | 31 ++ client/src/api/policy.js | 31 ++ client/src/api/professional.js | 31 ++ client/src/api/validation.js | 31 ++ client/src/router/index.js | 32 ++ client/src/views/consulting/policy.vue | 269 +++++++++++++++ client/src/views/consulting/professional.vue | 270 +++++++++++++++ client/src/views/consulting/regulatory.vue | 325 ++++++++++++++++++ client/src/views/consulting/validation.vue | 270 +++++++++++++++ client/src/views/supervision/mytask.vue | 2 +- server/apps/consulting/__init__.py | 0 server/apps/consulting/admin.py | 3 + server/apps/consulting/apps.py | 5 + .../consulting/migrations/0001_initial.py | 39 +++ .../migrations/0002_professional.py | 36 ++ .../migrations/0003_policy_validation.py | 54 +++ server/apps/consulting/migrations/__init__.py | 0 server/apps/consulting/models.py | 47 +++ server/apps/consulting/serializers.py | 47 +++ server/apps/consulting/tests.py | 3 + server/apps/consulting/urls.py | 13 + server/apps/consulting/views.py | 51 +++ server/server/settings.py | 4 +- server/server/urls.py | 2 + 26 files changed, 1597 insertions(+), 4 deletions(-) create mode 100644 client/src/api/consulting.js create mode 100644 client/src/api/policy.js create mode 100644 client/src/api/professional.js create mode 100644 client/src/api/validation.js create mode 100644 client/src/views/consulting/policy.vue create mode 100644 client/src/views/consulting/professional.vue create mode 100644 client/src/views/consulting/regulatory.vue create mode 100644 client/src/views/consulting/validation.vue create mode 100644 server/apps/consulting/__init__.py create mode 100644 server/apps/consulting/admin.py create mode 100644 server/apps/consulting/apps.py create mode 100644 server/apps/consulting/migrations/0001_initial.py create mode 100644 server/apps/consulting/migrations/0002_professional.py create mode 100644 server/apps/consulting/migrations/0003_policy_validation.py create mode 100644 server/apps/consulting/migrations/__init__.py create mode 100644 server/apps/consulting/models.py create mode 100644 server/apps/consulting/serializers.py create mode 100644 server/apps/consulting/tests.py create mode 100644 server/apps/consulting/urls.py create mode 100644 server/apps/consulting/views.py diff --git a/client/.env.development b/client/.env.development index aacde3e..c5200d4 100644 --- a/client/.env.development +++ b/client/.env.development @@ -3,8 +3,8 @@ ENV = 'development' # base api #VUE_APP_BASE_API = 'http://10.0.11.127:8000/api' -#VUE_APP_BASE_API = 'http://127.0.0.1:8000/api' -VUE_APP_BASE_API = 'https://testsearch.ctc.ac.cn/api' +VUE_APP_BASE_API = 'http://127.0.0.1:8000/api' +#VUE_APP_BASE_API = 'https://testsearch.ctc.ac.cn/api' #VUE_APP_BASE_API = 'http://47.95.0.242:9101/api' diff --git a/client/package.json b/client/package.json index a7eed94..80319cf 100644 --- a/client/package.json +++ b/client/package.json @@ -17,6 +17,7 @@ "dependencies": { "@riophae/vue-treeselect": "^0.4.0", "axios": "0.18.1", + "element-china-area-data": "^5.0.2", "element-ui": "2.13.0", "file-saver": "^2.0.2", "js-cookie": "2.2.0", diff --git a/client/src/api/consulting.js b/client/src/api/consulting.js new file mode 100644 index 0000000..6e595cf --- /dev/null +++ b/client/src/api/consulting.js @@ -0,0 +1,31 @@ +import request from '@/utils/request' + + +export function createRegulatory(data) { + return request({ + url: '/consulting/regulatory/', + method: 'post', + data + }) +} + +export function getRegulatoryList(query) { + return request({ + url: '/consulting/regulatory/', + method: 'get', + params: query + }) +} +export function deleteRegulatory(id) { + return request({ + url: `/consulting/regulatory/${id}/`, + method: 'delete' + }) +} +export function updateRegulatory(id, data) { + return request({ + url: `/consulting/regulatory/${id}/`, + method: 'put', + data + }) +} \ No newline at end of file diff --git a/client/src/api/policy.js b/client/src/api/policy.js new file mode 100644 index 0000000..3e437a2 --- /dev/null +++ b/client/src/api/policy.js @@ -0,0 +1,31 @@ +import request from '@/utils/request' + + +export function createPolicy(data) { + return request({ + url: '/consulting/policy/', + method: 'post', + data + }) +} + +export function getPolicyList(query) { + return request({ + url: '/consulting/policy/', + method: 'get', + params: query + }) +} +export function deletePolicy(id) { + return request({ + url: `/consulting/policy/${id}/`, + method: 'delete' + }) +} +export function updatePolicy(id, data) { + return request({ + url: `/consulting/policy/${id}/`, + method: 'put', + data + }) +} \ No newline at end of file diff --git a/client/src/api/professional.js b/client/src/api/professional.js new file mode 100644 index 0000000..42bfca7 --- /dev/null +++ b/client/src/api/professional.js @@ -0,0 +1,31 @@ +import request from '@/utils/request' + + +export function createProfessional(data) { + return request({ + url: '/consulting/professional/', + method: 'post', + data + }) +} + +export function getProfessionalList(query) { + return request({ + url: '/consulting/professional/', + method: 'get', + params: query + }) +} +export function deleteProfessional(id) { + return request({ + url: `/consulting/professional/${id}/`, + method: 'delete' + }) +} +export function updateProfessional(id, data) { + return request({ + url: `/consulting/professional/${id}/`, + method: 'put', + data + }) +} \ No newline at end of file diff --git a/client/src/api/validation.js b/client/src/api/validation.js new file mode 100644 index 0000000..3276f92 --- /dev/null +++ b/client/src/api/validation.js @@ -0,0 +1,31 @@ +import request from '@/utils/request' + + +export function createValidation(data) { + return request({ + url: '/consulting/validation/', + method: 'post', + data + }) +} + +export function getValidationList(query) { + return request({ + url: '/consulting/validation/', + method: 'get', + params: query + }) +} +export function deleteValidation(id) { + return request({ + url: `/consulting/validation/${id}/`, + method: 'delete' + }) +} +export function updateValidation(id, data) { + return request({ + url: `/consulting/validation/${id}/`, + method: 'put', + data + }) +} \ No newline at end of file diff --git a/client/src/router/index.js b/client/src/router/index.js index aaba5cb..19bd7ba 100644 --- a/client/src/router/index.js +++ b/client/src/router/index.js @@ -136,6 +136,38 @@ export const asyncRoutes = [ }, ] + } + , + { + path: '/consulting', + component: Layout, + redirect: '/consulting/', + name: 'consulting', + meta: { title: '咨询资料分享', icon: 'guide', perms: ['regulatory_views'] }, + alwaysShow: true, + children: [ + { + path: 'regulatory', + name: 'regulatory', + component: () => import('@/views/consulting/regulatory.vue'), + meta: { title: '监管信息', perms: ['regulatory_view'] } + }, { + path: 'professional', + name: 'professional', + component: () => import('@/views/consulting/professional.vue'), + meta: { title: '专业领域要求', perms: ['professional_view'] } + }, { + path: 'policy', + name: 'policy', + component: () => import('@/views/consulting/policy.vue'), + meta: { title: '政策咨询', perms: ['policy_view'] } + }, { + path: 'validation', + name: 'validation', + component: () => import('@/views/consulting/validation.vue'), + meta: { title: '能力验证', perms: ['validation_view'] } + }, + ] }, { path: '/supervision', diff --git a/client/src/views/consulting/policy.vue b/client/src/views/consulting/policy.vue new file mode 100644 index 0000000..5c62a84 --- /dev/null +++ b/client/src/views/consulting/policy.vue @@ -0,0 +1,269 @@ + + diff --git a/client/src/views/consulting/professional.vue b/client/src/views/consulting/professional.vue new file mode 100644 index 0000000..902db87 --- /dev/null +++ b/client/src/views/consulting/professional.vue @@ -0,0 +1,270 @@ + + diff --git a/client/src/views/consulting/regulatory.vue b/client/src/views/consulting/regulatory.vue new file mode 100644 index 0000000..94196f3 --- /dev/null +++ b/client/src/views/consulting/regulatory.vue @@ -0,0 +1,325 @@ + + diff --git a/client/src/views/consulting/validation.vue b/client/src/views/consulting/validation.vue new file mode 100644 index 0000000..f1bc81c --- /dev/null +++ b/client/src/views/consulting/validation.vue @@ -0,0 +1,270 @@ + + diff --git a/client/src/views/supervision/mytask.vue b/client/src/views/supervision/mytask.vue index 60ff3b1..9149fad 100644 --- a/client/src/views/supervision/mytask.vue +++ b/client/src/views/supervision/mytask.vue @@ -136,7 +136,7 @@ export default { }, handleFilter() { this.listQuery.page = 1; - + this.getList(); }, handleDo(val){ diff --git a/server/apps/consulting/__init__.py b/server/apps/consulting/__init__.py new file mode 100644 index 0000000..e69de29 diff --git a/server/apps/consulting/admin.py b/server/apps/consulting/admin.py new file mode 100644 index 0000000..8c38f3f --- /dev/null +++ b/server/apps/consulting/admin.py @@ -0,0 +1,3 @@ +from django.contrib import admin + +# Register your models here. diff --git a/server/apps/consulting/apps.py b/server/apps/consulting/apps.py new file mode 100644 index 0000000..b3c0c5a --- /dev/null +++ b/server/apps/consulting/apps.py @@ -0,0 +1,5 @@ +from django.apps import AppConfig + + +class QualityConfig(AppConfig): + name = 'consulting' diff --git a/server/apps/consulting/migrations/0001_initial.py b/server/apps/consulting/migrations/0001_initial.py new file mode 100644 index 0000000..1c067e9 --- /dev/null +++ b/server/apps/consulting/migrations/0001_initial.py @@ -0,0 +1,39 @@ +# Generated by Django 3.0.5 on 2021-12-13 01:56 + +from django.conf import settings +from django.db import migrations, models +import django.db.models.deletion +import django.utils.timezone + + +class Migration(migrations.Migration): + + initial = True + + dependencies = [ + migrations.swappable_dependency(settings.AUTH_USER_MODEL), + ('system', '0018_auto_20210430_1156'), + ] + + operations = [ + migrations.CreateModel( + name='Regulatory', + 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(blank=True, default='', verbose_name='描述')), + ('provinces', models.CharField(default='', max_length=100, verbose_name='省份')), + ('type', models.CharField(choices=[(1, '通知'), (2, '结果')], default=1, max_length=50, verbose_name='材料类别')), + ('create_by', models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.SET_NULL, related_name='regulatory_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='regulatory_update_by', to=settings.AUTH_USER_MODEL, verbose_name='最后编辑人')), + ], + options={ + 'verbose_name': '监管信息', + 'verbose_name_plural': '监管信息', + }, + ), + ] diff --git a/server/apps/consulting/migrations/0002_professional.py b/server/apps/consulting/migrations/0002_professional.py new file mode 100644 index 0000000..a784eca --- /dev/null +++ b/server/apps/consulting/migrations/0002_professional.py @@ -0,0 +1,36 @@ +# Generated by Django 3.0.5 on 2021-12-13 02:11 + +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'), + ('consulting', '0001_initial'), + ] + + operations = [ + migrations.CreateModel( + name='Professional', + 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(blank=True, default='', verbose_name='描述')), + ('create_by', models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.SET_NULL, related_name='professional_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='professional_update_by', to=settings.AUTH_USER_MODEL, verbose_name='最后编辑人')), + ], + options={ + 'verbose_name': '专业领域要求', + 'verbose_name_plural': '专业领域要求', + }, + ), + ] diff --git a/server/apps/consulting/migrations/0003_policy_validation.py b/server/apps/consulting/migrations/0003_policy_validation.py new file mode 100644 index 0000000..10e2407 --- /dev/null +++ b/server/apps/consulting/migrations/0003_policy_validation.py @@ -0,0 +1,54 @@ +# Generated by Django 3.0.5 on 2021-12-13 02:34 + +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'), + ('consulting', '0002_professional'), + ] + + operations = [ + migrations.CreateModel( + name='Validation', + 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(blank=True, default='', verbose_name='描述')), + ('create_by', models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.SET_NULL, related_name='validation_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='validation_update_by', to=settings.AUTH_USER_MODEL, verbose_name='最后编辑人')), + ], + options={ + 'verbose_name': '政策咨询', + 'verbose_name_plural': '政策咨询', + }, + ), + migrations.CreateModel( + name='Policy', + 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(blank=True, default='', verbose_name='描述')), + ('create_by', models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.SET_NULL, related_name='policy_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='policy_update_by', to=settings.AUTH_USER_MODEL, verbose_name='最后编辑人')), + ], + options={ + 'verbose_name': '政策咨询', + 'verbose_name_plural': '政策咨询', + }, + ), + ] diff --git a/server/apps/consulting/migrations/__init__.py b/server/apps/consulting/migrations/__init__.py new file mode 100644 index 0000000..e69de29 diff --git a/server/apps/consulting/models.py b/server/apps/consulting/models.py new file mode 100644 index 0000000..91c6ee1 --- /dev/null +++ b/server/apps/consulting/models.py @@ -0,0 +1,47 @@ +from django.db import models +from utils.model import BaseModel +from apps.system.models import CommonAModel, File +# Create your models here. + + +class Regulatory(CommonAModel): + type_choices = ( + (1, '通知'), + (2, '结果') + ) + name = models.CharField('名称', max_length=100) + description = models.TextField('描述', default="", blank=True) + file = models.ForeignKey(File, on_delete=models.CASCADE) + provinces=models.CharField('省份', max_length=100, default="",) + type = models.CharField('材料类别', max_length=50, + choices=type_choices, default=1) + class Meta: + verbose_name = '监管信息' + verbose_name_plural = verbose_name +class Professional(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 +class Policy(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 +class Validation(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/consulting/serializers.py b/server/apps/consulting/serializers.py new file mode 100644 index 0000000..f8a589e --- /dev/null +++ b/server/apps/consulting/serializers.py @@ -0,0 +1,47 @@ +from re import template +from django.db.models.base import Model +from rest_framework import serializers +from .models import * +from apps.system.serializers import FileSerializer +from rest_framework.exceptions import ParseError, APIException + +class RegulatorySerializer(serializers.ModelSerializer): + + file_ = FileSerializer(source='file', read_only=True) + class Meta: + model = Regulatory + fields = '__all__' + @staticmethod + def setup_eager_loading(queryset): + queryset = queryset.select_related('file') + return queryset +class ProfessionalSerializer(serializers.ModelSerializer): + + file_ = FileSerializer(source='file', read_only=True) + class Meta: + model = Professional + fields = '__all__' + @staticmethod + def setup_eager_loading(queryset): + queryset = queryset.select_related('file') + return queryset +class PolicySerializer(serializers.ModelSerializer): + + file_ = FileSerializer(source='file', read_only=True) + class Meta: + model = Policy + fields = '__all__' + @staticmethod + def setup_eager_loading(queryset): + queryset = queryset.select_related('file') + return queryset +class ValidationSerializer(serializers.ModelSerializer): + + file_ = FileSerializer(source='file', read_only=True) + class Meta: + model = Validation + fields = '__all__' + @staticmethod + def setup_eager_loading(queryset): + queryset = queryset.select_related('file') + return queryset \ No newline at end of file diff --git a/server/apps/consulting/tests.py b/server/apps/consulting/tests.py new file mode 100644 index 0000000..7ce503c --- /dev/null +++ b/server/apps/consulting/tests.py @@ -0,0 +1,3 @@ +from django.test import TestCase + +# Create your tests here. diff --git a/server/apps/consulting/urls.py b/server/apps/consulting/urls.py new file mode 100644 index 0000000..fc59a21 --- /dev/null +++ b/server/apps/consulting/urls.py @@ -0,0 +1,13 @@ +from django.urls import path, include +from rest_framework import routers +from .views import RegulatoryViewSet,ProfessionalViewSet,PolicyViewSet,ValidationViewSet + +router = routers.DefaultRouter() +router.register('regulatory', RegulatoryViewSet, basename='regulatory') +router.register('professional', ProfessionalViewSet, basename='professional') +router.register('policy', PolicyViewSet, basename='policy') +router.register('validation', ValidationViewSet, basename='validation') +urlpatterns = [ + path('', include(router.urls)) +] + diff --git a/server/apps/consulting/views.py b/server/apps/consulting/views.py new file mode 100644 index 0000000..f28fc63 --- /dev/null +++ b/server/apps/consulting/views.py @@ -0,0 +1,51 @@ +from django.conf import settings +from django.core.cache import cache +from django.db.models import Count, Q +from django.db.models.query import QuerySet +from django.http import request +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.exceptions import PermissionDenied +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 +from utils.pagination import PageOrNot + +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 + +from .models import * +from .serializers import * +# Create your views here. +class RegulatoryViewSet(OptimizationMixin, PageOrNot, CreateUpdateModelAMixin, ModelViewSet): + perms_map = {'get': '*', 'post': 'regulatory_create', + 'put': 'regulatory_update', 'delete': 'regulatory_delete'} + queryset = Regulatory.objects.all() + serializer_class = RegulatorySerializer + ordering = ['-id'] + search_fields = ['provinces'] + ordering_fields = ['provinces'] + filterset_fields = ['provinces'] +class ProfessionalViewSet(OptimizationMixin, PageOrNot, CreateUpdateModelAMixin, ModelViewSet): + perms_map = {'get': '*', 'post': 'professional_create', + 'put': 'professional_update', 'delete': 'professional_delete'} + queryset = Professional.objects.all() + serializer_class = ProfessionalSerializer + ordering = ['-id'] +class PolicyViewSet(OptimizationMixin, PageOrNot, CreateUpdateModelAMixin, ModelViewSet): + perms_map = {'get': '*', 'post': 'policy_create', + 'put': 'policy_update', 'delete': 'policy_delete'} + queryset = Policy.objects.all() + serializer_class = PolicySerializer + ordering = ['-id'] +class ValidationViewSet(OptimizationMixin, PageOrNot, CreateUpdateModelAMixin, ModelViewSet): + perms_map = {'get': '*', 'post': 'validation_create', + 'put': 'policy_update', 'delete': 'validation_delete'} + queryset = Validation.objects.all() + serializer_class = ValidationSerializer + ordering = ['-id'] diff --git a/server/server/settings.py b/server/server/settings.py index a822c57..8ef3c8a 100644 --- a/server/server/settings.py +++ b/server/server/settings.py @@ -46,7 +46,9 @@ INSTALLED_APPS = [ 'apps.ability', 'apps.supervision', 'apps.quality', - 'apps.vod' + 'apps.vod', + 'apps.consulting' + ] MIDDLEWARE = [ diff --git a/server/server/urls.py b/server/server/urls.py index 6eb991f..3140f0b 100644 --- a/server/server/urls.py +++ b/server/server/urls.py @@ -48,6 +48,8 @@ urlpatterns = [ path('api/supervision/', include('apps.supervision.urls')), path('api/quality/', include('apps.quality.urls')), path('api/vod/', include('apps.vod.urls')), + path('api/consulting/', include('apps.consulting.urls')), + path('api/docs/', include_docs_urls(title="接口文档",authentication_classes=[], permission_classes=[])), path('api/', include(router.urls)), ] + static(settings.MEDIA_URL, document_root=settings.MEDIA_ROOT) + static(settings.STATIC_URL, document_root=settings.STATIC_ROOT) From 73ba89f20f750b2742d925c5b393cc43cc85151b Mon Sep 17 00:00:00 2001 From: shilixia <2309368887@qq.com> Date: Tue, 14 Dec 2021 17:01:21 +0800 Subject: [PATCH 2/8] xiugai --- client/src/router/index.js | 4 +- client/src/views/consulting/policy.vue | 4 +- client/src/views/consulting/professional.vue | 136 ++++++++++++------ client/src/views/consulting/regulatory.vue | 44 +++++- client/src/views/consulting/validation.vue | 121 ++++++++++++++-- .../0004_professional_professionalfield.py | 18 +++ .../migrations/0005_auto_20211214_1408.py | 32 +++++ .../migrations/0006_auto_20211214_1552.py | 18 +++ server/apps/consulting/models.py | 27 +++- server/apps/consulting/views.py | 3 + 10 files changed, 348 insertions(+), 59 deletions(-) create mode 100644 server/apps/consulting/migrations/0004_professional_professionalfield.py create mode 100644 server/apps/consulting/migrations/0005_auto_20211214_1408.py create mode 100644 server/apps/consulting/migrations/0006_auto_20211214_1552.py diff --git a/client/src/router/index.js b/client/src/router/index.js index 19bd7ba..5024799 100644 --- a/client/src/router/index.js +++ b/client/src/router/index.js @@ -143,7 +143,7 @@ export const asyncRoutes = [ component: Layout, redirect: '/consulting/', name: 'consulting', - meta: { title: '咨询资料分享', icon: 'guide', perms: ['regulatory_views'] }, + meta: { title: '资讯资料分享', icon: 'guide', perms: ['consulting_views'] }, alwaysShow: true, children: [ { @@ -160,7 +160,7 @@ export const asyncRoutes = [ path: 'policy', name: 'policy', component: () => import('@/views/consulting/policy.vue'), - meta: { title: '政策咨询', perms: ['policy_view'] } + meta: { title: '政策资讯', perms: ['policy_view'] } }, { path: 'validation', name: 'validation', diff --git a/client/src/views/consulting/policy.vue b/client/src/views/consulting/policy.vue index 5c62a84..e1c5d2d 100644 --- a/client/src/views/consulting/policy.vue +++ b/client/src/views/consulting/policy.vue @@ -69,7 +69,7 @@ 上传文件 diff --git a/client/src/views/consulting/professional.vue b/client/src/views/consulting/professional.vue index 902db87..17b4f08 100644 --- a/client/src/views/consulting/professional.vue +++ b/client/src/views/consulting/professional.vue @@ -1,11 +1,13 @@