From 1867f77fbb997c5dd09a23e545b0fc8cb125cbdf Mon Sep 17 00:00:00 2001 From: lxy <10179281+lxy0722@user.noreply.gitee.com> Date: Tue, 2 Jul 2024 10:03:18 +0800 Subject: [PATCH 01/45] =?UTF-8?q?=E5=88=9D=E6=AC=A1=E4=B8=8A=E4=BC=A0=20?= =?UTF-8?q?=E5=A2=9E=E5=8A=A0=E4=BA=A7=E6=B5=8B=E5=B7=A5=E5=85=B7=E6=A8=A1?= =?UTF-8?q?=E5=9D=97app?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- backend/app/__init__.py | 1 + backend/app/test_tool/__init__.py | 0 backend/app/test_tool/admin.py | 3 + backend/app/test_tool/apps.py | 6 + backend/app/test_tool/migrations/__init__.py | 0 backend/app/test_tool/models.py | 71 +++ backend/app/test_tool/serializers.py | 108 ++++ backend/app/test_tool/tests.py | 3 + backend/app/test_tool/urls.py | 23 + backend/app/test_tool/views.py | 194 ++++++++ backend/application/settings.py | 10 +- backend/application/urls.py | 6 + backend/dvadmin/utils/filters.py | 32 +- backend/requirements.txt | 2 + web/.env | 2 +- web/src/components/avatarSelector/index.vue | 2 +- web/src/layout/footer/index.vue | 3 +- web/src/settings.ts | 8 +- web/src/views/fileList/api.ts | 41 ++ web/src/views/fileList/crud.tsx | 132 +++++ web/src/views/fileList/index.vue | 26 + web/src/views/system/areas/crud.tsx | 9 +- .../menu/components/MenuTreeCom/index.vue | 1 + web/src/views/system/messageCenter/crud.tsx | 2 +- web/src/views/system/whiteList/crud.tsx | 1 + web/src/views/testTool/api.ts | 95 ++++ web/src/views/testTool/crud.tsx | 467 ++++++++++++++++++ web/src/views/testTool/download.tsx | 74 +++ web/src/views/testTool/index.vue | 30 ++ web/src/views/testToolLicense/api.ts | 84 ++++ web/src/views/testToolLicense/crud.tsx | 252 ++++++++++ web/src/views/testToolLicense/index.vue | 30 ++ 32 files changed, 1698 insertions(+), 20 deletions(-) create mode 100644 backend/app/__init__.py create mode 100644 backend/app/test_tool/__init__.py create mode 100644 backend/app/test_tool/admin.py create mode 100644 backend/app/test_tool/apps.py create mode 100644 backend/app/test_tool/migrations/__init__.py create mode 100644 backend/app/test_tool/models.py create mode 100644 backend/app/test_tool/serializers.py create mode 100644 backend/app/test_tool/tests.py create mode 100644 backend/app/test_tool/urls.py create mode 100644 backend/app/test_tool/views.py create mode 100644 web/src/views/fileList/api.ts create mode 100644 web/src/views/fileList/crud.tsx create mode 100644 web/src/views/fileList/index.vue create mode 100644 web/src/views/testTool/api.ts create mode 100644 web/src/views/testTool/crud.tsx create mode 100644 web/src/views/testTool/download.tsx create mode 100644 web/src/views/testTool/index.vue create mode 100644 web/src/views/testToolLicense/api.ts create mode 100644 web/src/views/testToolLicense/crud.tsx create mode 100644 web/src/views/testToolLicense/index.vue diff --git a/backend/app/__init__.py b/backend/app/__init__.py new file mode 100644 index 00000000..9bad5790 --- /dev/null +++ b/backend/app/__init__.py @@ -0,0 +1 @@ +# coding=utf-8 diff --git a/backend/app/test_tool/__init__.py b/backend/app/test_tool/__init__.py new file mode 100644 index 00000000..e69de29b diff --git a/backend/app/test_tool/admin.py b/backend/app/test_tool/admin.py new file mode 100644 index 00000000..8c38f3f3 --- /dev/null +++ b/backend/app/test_tool/admin.py @@ -0,0 +1,3 @@ +from django.contrib import admin + +# Register your models here. diff --git a/backend/app/test_tool/apps.py b/backend/app/test_tool/apps.py new file mode 100644 index 00000000..395cfd21 --- /dev/null +++ b/backend/app/test_tool/apps.py @@ -0,0 +1,6 @@ +from django.apps import AppConfig + + +class TestAppConfig(AppConfig): + default_auto_field = 'django.db.models.BigAutoField' + name = 'app.test_tool' diff --git a/backend/app/test_tool/migrations/__init__.py b/backend/app/test_tool/migrations/__init__.py new file mode 100644 index 00000000..e69de29b diff --git a/backend/app/test_tool/models.py b/backend/app/test_tool/models.py new file mode 100644 index 00000000..7cf01f6f --- /dev/null +++ b/backend/app/test_tool/models.py @@ -0,0 +1,71 @@ +# coding=utf-8 + +import hashlib +import os + +from django.db import models + +# Create your models here. +from dvadmin.utils.models import CoreModel, SoftDeleteModel, table_prefix + + +def media_file_name(instance, filename): + h = instance.md5sum + basename, ext = os.path.splitext(filename) + return os.path.join("files", h[:1], h[1:2], h + ext.lower()) + + +class TestToolsFileListModel(CoreModel): + name = models.CharField(max_length=200, null=True, blank=True, verbose_name="名称", help_text="名称") + url = models.FileField(upload_to=media_file_name, null=True, blank=True, ) + file_url = models.CharField(max_length=255, blank=True, verbose_name="文件地址", help_text="文件地址") + engine = models.CharField(max_length=100, default='local', blank=True, verbose_name="引擎", help_text="引擎") + mime_type = models.CharField(max_length=100, blank=True, verbose_name="Mime类型", help_text="Mime类型") + size = models.CharField(max_length=36, blank=True, verbose_name="文件大小", help_text="文件大小") + md5sum = models.CharField(max_length=36, blank=True, verbose_name="文件md5", help_text="文件md5") + version = models.CharField(max_length=36, blank=True, verbose_name="工具版本", help_text="工具版本") + update_comment = models.TextField(blank=True, verbose_name="工具更新说明", help_text="工具更新说明") + forced_update = models.BooleanField(default=False, blank=True, verbose_name="强制更新", help_text="强制更新") + platform = models.CharField(max_length=36, blank=True, verbose_name="工具平台", help_text="工具平台") + status = models.BooleanField(default=True, verbose_name="启用状态", help_text="启用状态") + + def save(self, *args, **kwargs): + if not self.md5sum: # file is new + md5 = hashlib.md5() + for chunk in self.url.chunks(): + md5.update(chunk) + self.md5sum = md5.hexdigest() + if not self.size: + self.size = self.url.size + if not self.file_url: + url = media_file_name(self, self.name) + self.file_url = f'media/{url}' + super(TestToolsFileListModel, self).save(*args, **kwargs) + + class Meta: + db_table = table_prefix + "test_tools_list" + verbose_name = "产测工具管理" + verbose_name_plural = verbose_name + ordering = ("-version",) + # constraints = [ + # models.UniqueConstraint(fields=['version'], name='tool_version_unique_together', + # violation_error_message='当前版本已经存在,请勿重复上传') + # ] + + +class TestToolLicenseModel(SoftDeleteModel, CoreModel): + license = models.CharField(max_length=200, verbose_name="license", help_text="license") + uuid = models.CharField(max_length=200, unique=True, verbose_name="uuid", help_text="uuid") + comment = models.TextField(max_length=999, blank=True, verbose_name="备注", help_text="备注") + status = models.BooleanField(default=True, verbose_name="启用状态", help_text="启用状态") + + class Meta: + db_table = table_prefix + "test_tool_license" + verbose_name = "产测工具授权管理" + verbose_name_plural = verbose_name + ordering = ("-create_datetime",) + constraints = [ + models.UniqueConstraint(fields=['uuid'], name='tool_uuid_unique_together', + violation_error_message='当前uuid已经存在,请勿重复上传') + ] + diff --git a/backend/app/test_tool/serializers.py b/backend/app/test_tool/serializers.py new file mode 100644 index 00000000..948ae594 --- /dev/null +++ b/backend/app/test_tool/serializers.py @@ -0,0 +1,108 @@ +# coding=utf-8 + +import hashlib + + +from application import dispatch +from rest_framework import serializers +from dvadmin.utils.json_response import DetailResponse, ErrorResponse + + +from app.test_tool.models import TestToolsFileListModel, TestToolLicenseModel +from dvadmin.utils.serializers import CustomModelSerializer + + +class TestToolModelSerializer(CustomModelSerializer): + url = serializers.SerializerMethodField(read_only=True) + + def get_url(self, instance): + + if getattr(instance, 'file_url', None) is None: + return '' + + return instance.file_url or f'media/{str(instance.url)}' + + class Meta: + model = TestToolsFileListModel + fields = "__all__" + + def create(self, validated_data): + file = self.initial_data.get('file') + + if file is None: + return DetailResponse() + + if 'update_comment' not in validated_data or \ + 'version' not in validated_data or \ + 'forced_update' not in validated_data or \ + 'platform' not in validated_data or \ + 'file' not in self.initial_data: + raise KeyError("缺少必要参数") + + file_engine = dispatch.get_system_config_values("fileStorageConfig.file_engine") or 'local' + file_backup = dispatch.get_system_config_values("fileStorageConfig.file_backup") + + file_size = file.size + validated_data['name'] = str(file) + validated_data['size'] = file_size + md5 = hashlib.md5() + for chunk in file.chunks(): + md5.update(chunk) + + validated_data['md5sum'] = md5.hexdigest() + validated_data['engine'] = file_engine + validated_data['mime_type'] = file.content_type + + if file_backup: + validated_data['url'] = file + if file_engine == 'oss': + from dvadmin_cloud_storage.views.aliyun import ali_oss_upload + file_path = ali_oss_upload(file) + if file_path: + validated_data['file_url'] = file_path + else: + raise ValueError("上传失败") + elif file_engine == 'cos': + from dvadmin_cloud_storage.views.tencent import tencent_cos_upload + file_path = tencent_cos_upload(file) + if file_path: + validated_data['file_url'] = file_path + else: + raise ValueError("上传失败") + else: + validated_data['url'] = file + # 审计字段 + try: + request_user = self.request.user + validated_data['dept_belong_id'] = request_user.dept.id + validated_data['creator'] = request_user.id + validated_data['modifier'] = request_user.id + except: + pass + return super().create(validated_data) + + def info_update(self, validated_data): + """ + 更新文件信息 + """ + if self.initial_data.get('url') is None: + return ErrorResponse(data='请先上传文件', msg="请先上传文件") + + info = TestToolsFileListModel.objects.filter(file_url=f"{self.initial_data.get('url')[0]}") + if not info: + return ErrorResponse(data='请先上传文件', msg="请先上传文件") + + data = TestToolModelSerializer(info[0]).data + data['update_comment'] = validated_data.get('update_comment') + data['version'] = validated_data.get('version') + data['forced_update'] = validated_data.get('forced_update') + + self.update(info[0], data) + return DetailResponse(data="保存成功", msg="保存成功") + + +class TestToolLicenseModelSerializer(CustomModelSerializer): + + class Meta: + model = TestToolLicenseModel + fields = "__all__" diff --git a/backend/app/test_tool/tests.py b/backend/app/test_tool/tests.py new file mode 100644 index 00000000..7ce503c2 --- /dev/null +++ b/backend/app/test_tool/tests.py @@ -0,0 +1,3 @@ +from django.test import TestCase + +# Create your tests here. diff --git a/backend/app/test_tool/urls.py b/backend/app/test_tool/urls.py new file mode 100644 index 00000000..4fd7111c --- /dev/null +++ b/backend/app/test_tool/urls.py @@ -0,0 +1,23 @@ +# coding=utf-8 + +from rest_framework.routers import SimpleRouter +from django.urls import path +from django.http import HttpResponse, JsonResponse +from dvadmin.system.views.clause import PrivacyView, TermsServiceView + +from .views import ToolFileViewSet, ToolLicenseViewSet + +router = SimpleRouter() +# 这里进行注册路径,并把视图关联上,这里的api地址以视图名称为后缀,这样方便记忆api/CrudDemoModelViewSet +router.register("tool", ToolFileViewSet) +router.register("license", ToolLicenseViewSet) + +urlpatterns = [ + + path('latestVersion/', ToolFileViewSet.as_view({'get': 'get_latest_version'})), + path('forcedUpdateVersion/', ToolFileViewSet.as_view({'get': 'get_forced_update_version'})), + path('historyUpdateNote/', ToolFileViewSet.as_view({'get': 'get_history_update_note'})), + path('get_license/', ToolLicenseViewSet.as_view({'get': 'get_license'})), +] + +urlpatterns += router.urls diff --git a/backend/app/test_tool/views.py b/backend/app/test_tool/views.py new file mode 100644 index 00000000..68220d32 --- /dev/null +++ b/backend/app/test_tool/views.py @@ -0,0 +1,194 @@ +import os + + +from cryptography.fernet import Fernet + +from application import dispatch +from app.test_tool.models import TestToolsFileListModel, TestToolLicenseModel +from dvadmin.utils.json_response import DetailResponse, SuccessResponse, ErrorResponse + +from dvadmin.utils.viewset import CustomModelViewSet +from dvadmin.system.models import SystemConfig + +from app.test_tool.serializers import TestToolModelSerializer, TestToolLicenseModelSerializer + + +class ToolFileViewSet(CustomModelViewSet): + """ + 产测工具管理接口 + list:查询 + create:新增 + update:修改 + retrieve:单例 + destroy:删除 + """ + + queryset = TestToolsFileListModel.objects.all() + serializer_class = TestToolModelSerializer + # filter_fields = ['name', 'version', 'update_comment', 'platform', 'status'] + # filter_fields = '__all__' # 某些字段不允许模塑搜索 + permission_classes = [] + + class Meta: + exclude = ['url', 'file_url', 'creator'] # 排除字段 + + def get_latest_version(self, request): + """ + 查询最新的工具版本信息 + """ + + if request.query_params.get('platform', None) is None: + return ErrorResponse(data=[{"platform:": "windows | macOSX"}], msg="platform字段为空") + + queryset = self.filter_queryset(self.get_queryset()).exclude(status=False) + + if not queryset: + return DetailResponse(data=[], msg="暂无新版本") + + serializer = self.get_serializer(queryset[0], request=request) + + return DetailResponse(data=serializer.data, msg="获取成功") + + def get_forced_update_version(self, request): + """ + 查询最新的强制更新工具版本信息 + """ + if request.query_params.get('platform', None) is None: + return ErrorResponse(data=[], msg="platform字段为空>>>windows | macOSX") + + queryset = self.filter_queryset(self.get_queryset()).exclude(status=False).exclude(forced_update=False) + # queryset = ToolFileViewSet.queryset.filter(forced_update=True, + # platform=request.query_params.get('platform'), + # status=True) + if not queryset: + return DetailResponse(data=[], msg="暂无强制更新版本") + + serializer = self.get_serializer(queryset[0], request=request) + + return DetailResponse(data=serializer.data, msg="获取成功") + + def get_history_update_note(self, request): + """ + 查询历史更新说明 + """ + + if request.query_params.get('platform', None) is None: + return ErrorResponse(data=[], msg="platform字段为空>>>windows | macOSX") + + queryset = self.filter_queryset(self.get_queryset()) + if request.query_params.get('start_version', None) is not None: + queryset = queryset.filter(version__gt=request.query_params.get('start_version')) + + if request.query_params.get('end_version', None) is not None: + queryset = queryset.filter(version__lte=request.query_params.get('end_version')) + + if not queryset: + return DetailResponse(data=[], msg="暂无更新版本说明") + + update_note = "" + for i in queryset: + update_note += f"{i.version}\r\n{i.update_comment}\r\n\r\n\r\n" + + return DetailResponse(data={"update_comment": update_note}, msg="获取成功") + + def destroy(self, request, *args, **kwargs): + instance = self.get_object() + + # 配置是否删除本地文件, 前端配置 + if dispatch.get_system_config_values("test_tool.remove_is_deleted"): + try: + os.remove(instance.file_url) + except FileNotFoundError: # 删除文件的目的就是为了删除文件,所以找不到文件就认为删除了 + pass + + instance.delete() + return DetailResponse(data=[], msg="删除成功") + + def create(self, request, *args, **kwargs): + version = request.data.get('version', None) + platform = request.data.get('platform', None) + + if self.get_queryset().filter(version=version, platform=platform): + return ErrorResponse(data=[], msg=f"{platform}系统已经存在版本号:{version}的产测工具.请勿重复上传") + + return super().create(request, *args, **kwargs) + + +class ToolLicenseViewSet(CustomModelViewSet): + """ + 产测工具lisense管理接口 + list:查询 + create:新增 + update:修改 + retrieve:单例 + destroy:删除 + """ + + queryset = TestToolLicenseModel.objects.all() + serializer_class = TestToolLicenseModelSerializer + filter_fields = "__all__" + permission_classes = [] + _fernet = Fernet(b'fLoKjwCwE-NOsb2LGHNMLMa9ZHW000DFXgQrQ6UaruY=') # 产测工具密钥 + + def parse_license(self, uuid, uuid_license): + + data = self._fernet.decrypt(uuid_license).decode() + return data == uuid + + def generate_license(self, uuid, uuid_license): + + # 如果license 已经存在且和现有的UUID校验一致通过,直接返回license + if uuid_license and self.parse_license(uuid, uuid_license): + return uuid_license + + data = self._fernet.encrypt(f'{uuid}'.encode()).decode() + return data + + def get_license(self, request): + """ + 获取产测工具license + """ + if request.query_params.get('uuid', None) is None: + return ErrorResponse(data=[], msg="uuid字段为空") + + queryset = self.filter_queryset(self.get_queryset()) + if not queryset: + return DetailResponse(data=[], msg="暂无license") + + serializer = self.get_serializer(queryset[0], request=request) + + return DetailResponse(data=serializer.data, msg="获取成功") + + def update(self, request, *args, **kwargs): + request.data['license'] = self.generate_license(request.data['uuid'], request.data['license']) + + return super().update(request, *args, **kwargs) + + def create(self, request, *args, **kwargs): + + # 获取是否启动自动授权 + + request.data['status'] = dispatch.get_system_config_values("test_tool.license_auto_authorized") + + request.data['license'] = self.generate_license(request.data['uuid'], request.data.get('license', '')) + + queryset = TestToolLicenseModel.objects.filter(is_deleted=True, uuid=request.data['uuid']) + + if queryset: # 软删除恢复数据 + instance = queryset[0] + instance.is_deleted = False + partial = kwargs.pop('partial', False) + serializer = self.get_serializer(instance, data=request.data, request=request, partial=partial) + serializer.is_valid(raise_exception=True) + + 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 DetailResponse(data=serializer.data, msg="更新成功") + + return super().create(request, *args, **kwargs) + diff --git a/backend/application/settings.py b/backend/application/settings.py index 8b2c8c2d..36a3ce9b 100644 --- a/backend/application/settings.py +++ b/backend/application/settings.py @@ -62,6 +62,12 @@ INSTALLED_APPS = [ "dvadmin.system", ] +MY_APPS = [ + 'app.test_tool' +] + +INSTALLED_APPS += MY_APPS + MIDDLEWARE = [ "dvadmin.utils.middleware.HealthCheckMiddleware", "django.middleware.security.SecurityMiddleware", @@ -369,8 +375,8 @@ CAPTCHA_CHALLENGE_FUNCT = "captcha.helpers.math_challenge" # 加减乘除验证 DEFAULT_AUTO_FIELD = "django.db.models.AutoField" API_LOG_ENABLE = True -# API_LOG_METHODS = 'ALL' # ['POST', 'DELETE'] -API_LOG_METHODS = ["POST", "UPDATE", "DELETE", "PUT"] # ['POST', 'DELETE'] +API_LOG_METHODS = 'ALL' # ['POST', 'DELETE'] +# API_LOG_METHODS = ["POST", "UPDATE", "DELETE", "PUT"] # ['POST', 'DELETE'] API_MODEL_MAP = { "/token/": "登录模块", "/api/login/": "登录模块", diff --git a/backend/application/urls.py b/backend/application/urls.py index 6648052a..78b97eeb 100644 --- a/backend/application/urls.py +++ b/backend/application/urls.py @@ -90,3 +90,9 @@ urlpatterns = ( + static(settings.STATIC_URL, document_root=settings.STATIC_URL) + [re_path(ele.get('re_path'), include(ele.get('include'))) for ele in settings.PLUGINS_URL_PATTERNS] ) + +MY_URLS = [ + path("testTool/", include("app.test_tool.urls"), name="test_tool"), +] + +urlpatterns += MY_URLS diff --git a/backend/dvadmin/utils/filters.py b/backend/dvadmin/utils/filters.py index 05c0dfb8..863e3e88 100644 --- a/backend/dvadmin/utils/filters.py +++ b/backend/dvadmin/utils/filters.py @@ -24,11 +24,14 @@ from rest_framework.filters import BaseFilterBackend from django_filters.conf import settings from dvadmin.system.models import Dept, ApiWhiteList, RoleMenuButtonPermission from dvadmin.utils.models import CoreModel +from app.test_tool.models import TestToolsFileListModel + class CoreModelFilterBankend(BaseFilterBackend): """ 自定义时间范围过滤器 """ + def filter_queryset(self, request, queryset, view): create_datetime_after = request.query_params.get('create_datetime_after', None) create_datetime_before = request.query_params.get('create_datetime_before', None) @@ -37,7 +40,8 @@ class CoreModelFilterBankend(BaseFilterBackend): if any([create_datetime_after, create_datetime_before, update_datetime_after, update_datetime_before]): create_filter = Q() if create_datetime_after and create_datetime_before: - create_filter &= Q(create_datetime__gte=create_datetime_after) & Q(create_datetime__lte=create_datetime_before) + create_filter &= Q(create_datetime__gte=create_datetime_after) & Q( + create_datetime__lte=create_datetime_before) elif create_datetime_after: create_filter &= Q(create_datetime__gte=create_datetime_after) elif create_datetime_before: @@ -46,7 +50,8 @@ class CoreModelFilterBankend(BaseFilterBackend): # 更新时间范围过滤条件 update_filter = Q() if update_datetime_after and update_datetime_before: - update_filter &= Q(update_datetime__gte=update_datetime_after) & Q(update_datetime__lte=update_datetime_before) + update_filter &= Q(update_datetime__gte=update_datetime_after) & Q( + update_datetime__lte=update_datetime_before) elif update_datetime_after: update_filter &= Q(update_datetime__gte=update_datetime_after) elif update_datetime_before: @@ -56,6 +61,7 @@ class CoreModelFilterBankend(BaseFilterBackend): return queryset return queryset + def get_dept(dept_id: int, dept_all_list=None, dept_list=None): """ 递归获取部门的所有下级部门 @@ -146,10 +152,10 @@ class DataLevelPermissionsFilter(BaseFilterBackend): # (4, "自定数据权限") re_api = api _pk = request.parser_context["kwargs"].get('pk') - if _pk: # 判断是否是单例查询 - re_api = re.sub(_pk,'{id}', api) + if _pk: # 判断是否是单例查询 + re_api = re.sub(_pk, '{id}', api) role_id_list = request.user.role.values_list('id', flat=True) - role_permission_list=RoleMenuButtonPermission.objects.filter( + role_permission_list = RoleMenuButtonPermission.objects.filter( role__in=role_id_list, role__status=1, menu_button__api=re_api, @@ -158,7 +164,7 @@ class DataLevelPermissionsFilter(BaseFilterBackend): ) dataScope_list = [] # 权限范围列表 for ele in role_permission_list: - # 判断用户是否为超级管理员角色/如果拥有[全部数据权限]则返回所有数据 + # 判断用户是否为超级管理员角色/如果拥有[全部数据权限]则返回所有数据 if ele.get("data_range") == 3: return queryset dataScope_list.append(ele.get("data_range")) @@ -271,7 +277,6 @@ class CustomDjangoFilterBackend(DjangoFilterBackend): if filterset_fields and queryset is not None: MetaBase = getattr(self.filterset_base, "Meta", object) - class AutoFilterSet(self.filterset_base): @classmethod def get_all_model_fields(cls, model): @@ -281,8 +286,8 @@ class CustomDjangoFilterBackend(DjangoFilterBackend): f.name for f in sorted(opts.fields + opts.many_to_many) if (f.name == "id") - or not isinstance(f, models.AutoField) - and not (getattr(f.remote_field, "parent_link", False)) + or not isinstance(f, models.AutoField) + and not (getattr(f.remote_field, "parent_link", False)) ] @classmethod @@ -296,9 +301,9 @@ class CustomDjangoFilterBackend(DjangoFilterBackend): exclude = cls._meta.exclude assert not (fields is None and exclude is None), ( - "Setting 'Meta.model' without either 'Meta.fields' or 'Meta.exclude' " - "has been deprecated since 0.15.0 and is now disallowed. Add an explicit " - "'Meta.fields' or 'Meta.exclude' to the %s class." % cls.__name__ + "Setting 'Meta.model' without either 'Meta.fields' or 'Meta.exclude' " + "has been deprecated since 0.15.0 and is now disallowed. Add an explicit " + "'Meta.fields' or 'Meta.exclude' to the %s class." % cls.__name__ ) # Setting exclude with no fields implies all other fields. @@ -378,6 +383,9 @@ class CustomDjangoFilterBackend(DjangoFilterBackend): return filters class Meta(MetaBase): + # 视图定义过滤字段 + if hasattr(view, "Meta") and hasattr(view.Meta, "exclude"): + exclude = view.Meta.exclude # 排除字段 model = queryset.model fields = filterset_fields diff --git a/backend/requirements.txt b/backend/requirements.txt index 4824df60..6dd2aab9 100644 --- a/backend/requirements.txt +++ b/backend/requirements.txt @@ -29,3 +29,5 @@ gunicorn==21.2.0 gevent==23.9.1 Pillow==10.1.0 dvadmin-celery==1.0.5 +cryptography==42.0.8 + diff --git a/web/.env b/web/.env index 0d828a79..682bb753 100644 --- a/web/.env +++ b/web/.env @@ -1,5 +1,5 @@ # port 端口号 -VITE_PORT = 8080 +VITE_PORT = 80 VITE_API_URL = 'http://dvadmin3api.django.icu:8001' # open 运行 npm run dev 时自动打开浏览器 VITE_OPEN = false diff --git a/web/src/components/avatarSelector/index.vue b/web/src/components/avatarSelector/index.vue index f979cb09..93c203ad 100644 --- a/web/src/components/avatarSelector/index.vue +++ b/web/src/components/avatarSelector/index.vue @@ -23,7 +23,7 @@
- + 选择 diff --git a/web/src/layout/footer/index.vue b/web/src/layout/footer/index.vue index 67e6e5c0..56dd4ba5 100644 --- a/web/src/layout/footer/index.vue +++ b/web/src/layout/footer/index.vue @@ -1,7 +1,8 @@ diff --git a/web/src/settings.ts b/web/src/settings.ts index 61881d31..a3d2db7d 100644 --- a/web/src/settings.ts +++ b/web/src/settings.ts @@ -13,6 +13,11 @@ import {FsExtendsEditor, FsExtendsUploader } from '@fast-crud/fast-extends'; import '@fast-crud/fast-extends/dist/style.css'; import {successNotification} from '/@/utils/message'; import XEUtils from "xe-utils"; +import { compute, } from '@fast-crud/fast-crud'; +import {CrudExpose } from '@fast-crud/fast-crud'; + +// import context from '@fast-crud/ui-interface/dist/d/context'; + export default { async install(app: any, options: any) { // 先安装ui @@ -90,7 +95,7 @@ export default { action: `/api/system/file/`, name: "file", withCredentials: false, - uploadRequest: async ({ action, file, onProgress }: { action: string; file: any; onProgress: Function }) => { + uploadRequest: async ({ action, file, onProgress}: { action: string; file: any; onProgress: Function}) => { // @ts-ignore const data = new FormData(); data.append("file", file); @@ -115,6 +120,7 @@ export default { ...ret.data }; } + // onprogress() }, valueBuilder(context: any){ const { row, key } = context diff --git a/web/src/views/fileList/api.ts b/web/src/views/fileList/api.ts new file mode 100644 index 00000000..7c5708b1 --- /dev/null +++ b/web/src/views/fileList/api.ts @@ -0,0 +1,41 @@ +import { request } from '/@/utils/service'; +import { UserPageQuery, AddReq, DelReq, EditReq, InfoReq } from '@fast-crud/fast-crud'; + +export const apiPrefix = '/api/system/file/'; +export function GetList(query: UserPageQuery) { + return request({ + url: apiPrefix, + method: 'get', + params: query, + }); +} +export function GetObj(id: InfoReq) { + return request({ + url: apiPrefix + id, + method: 'get', + }); +} + +export function AddObj(obj: AddReq) { + return request({ + url: apiPrefix, + method: 'post', + data: obj, + }); +} + +export function UpdateObj(obj: EditReq) { + return request({ + url: apiPrefix + obj.id + '/', + method: 'put', + data: obj, + }); +} + +export function DelObj(id: DelReq) { + return request({ + url: apiPrefix + id + '/', + method: 'delete', + data: { id }, + }); +} diff --git a/web/src/views/fileList/crud.tsx b/web/src/views/fileList/crud.tsx new file mode 100644 index 00000000..5c6a0d5a --- /dev/null +++ b/web/src/views/fileList/crud.tsx @@ -0,0 +1,132 @@ +import * as api from './api'; +import { UserPageQuery, AddReq, DelReq, EditReq, CrudExpose, CrudOptions, CreateCrudOptionsProps, CreateCrudOptionsRet } from '@fast-crud/fast-crud'; + +export const createCrudOptions = function ({ crudExpose }: CreateCrudOptionsProps): CreateCrudOptionsRet { + const pageRequest = async (query: UserPageQuery) => { + return await api.GetList(query); + }; + const editRequest = async ({ form, row }: EditReq) => { + form.id = row.id; + return await api.UpdateObj(form); + }; + const delRequest = async ({ row }: DelReq) => { + return await api.DelObj(row.id); + }; + const addRequest = async ({ form }: AddReq) => { + return await api.AddObj(form); + }; + return { + crudOptions: { + actionbar: { + buttons: { + add: { + show: false, + }, + }, + }, + request: { + pageRequest, + addRequest, + editRequest, + delRequest, + }, + rowHandle: { + //固定右侧 + fixed: 'right', + width: 200, + show:false, + buttons: { + view: { + show: false, + }, + edit: { + iconRight: 'Edit', + type: 'text', + }, + remove: { + iconRight: 'Delete', + type: 'text', + }, + }, + }, + columns: { + _index: { + title: '序号', + form: { show: false }, + column: { + //type: 'index', + align: 'center', + width: '70px', + columnSetDisabled: true, //禁止在列设置中选择 + formatter: (context) => { + //计算序号,你可以自定义计算规则,此处为翻页累加 + let index = context.index ?? 1; + let pagination = crudExpose!.crudBinding.value.pagination; + return ((pagination!.currentPage ?? 1) - 1) * pagination!.pageSize + index + 1; + }, + }, + }, + search: { + title: '关键词', + column: { + show: false, + }, + search: { + show: true, + component: { + props: { + clearable: true, + }, + placeholder: '请输入关键词', + }, + }, + form: { + show: false, + component: { + props: { + clearable: true, + }, + }, + }, + }, + name: { + title: '文件名称', + search: { + show: true, + }, + type: 'input', + column:{ + minWidth: 120, + }, + form: { + component: { + placeholder: '请输入文件名称', + }, + }, + }, + url: { + title: '文件地址', + type: 'file-uploader', + search: { + disabled: true, + }, + column:{ + minWidth: 200, + }, + }, + md5sum: { + title: '文件MD5', + search: { + disabled: true, + }, + column:{ + minWidth: 120, + }, + form: { + disabled: false, + }, + }, + }, + }, + }; +}; diff --git a/web/src/views/fileList/index.vue b/web/src/views/fileList/index.vue new file mode 100644 index 00000000..119c73a0 --- /dev/null +++ b/web/src/views/fileList/index.vue @@ -0,0 +1,26 @@ + + + diff --git a/web/src/views/system/areas/crud.tsx b/web/src/views/system/areas/crud.tsx index 01d18602..007441cd 100644 --- a/web/src/views/system/areas/crud.tsx +++ b/web/src/views/system/areas/crud.tsx @@ -75,7 +75,7 @@ export const createCrudOptions = function ({crudExpose}: CreateCrudOptionsProps) }, }, pagination: { - show: false, + show: true, }, table: { rowKey: 'id', @@ -92,6 +92,13 @@ export const createCrudOptions = function ({crudExpose}: CreateCrudOptionsProps) align: 'center', width: '70px', columnSetDisabled: true, //禁止在列设置中选择 + // formatter: (context) => { + // //计算序号,你可以自定义计算规则,此处为翻页累加 + // console.log(context.index) + // let index = context.index ?? 1; + // let pagination = crudExpose!.crudBinding.value.pagination; + // return ((pagination!.currentPage ?? 1) - 1) * pagination!.pageSize + index + 1; + // }, }, }, // pcode: { diff --git a/web/src/views/system/menu/components/MenuTreeCom/index.vue b/web/src/views/system/menu/components/MenuTreeCom/index.vue index 91a9988e..127c0e75 100644 --- a/web/src/views/system/menu/components/MenuTreeCom/index.vue +++ b/web/src/views/system/menu/components/MenuTreeCom/index.vue @@ -142,6 +142,7 @@ const handleTreeLoad = (node: Node, resolve: Function) => { * 树的点击事件 */ const handleNodeClick = (record: MenuTreeItemType, node: Node) => { + console.log(record, node) treeSelectMenu.value = record; treeSelectNode.value = node; emit('treeClick', record); diff --git a/web/src/views/system/messageCenter/crud.tsx b/web/src/views/system/messageCenter/crud.tsx index 57331940..7669ea03 100644 --- a/web/src/views/system/messageCenter/crud.tsx +++ b/web/src/views/system/messageCenter/crud.tsx @@ -349,7 +349,7 @@ export const createCrudOptions = function ({ }, ], component: { - disabled: true, + // disabled: true, id: '1', // 当同一个页面有多个editor时,需要配置不同的id editorConfig: { // 是否只读 diff --git a/web/src/views/system/whiteList/crud.tsx b/web/src/views/system/whiteList/crud.tsx index 7104cdae..94e8056e 100644 --- a/web/src/views/system/whiteList/crud.tsx +++ b/web/src/views/system/whiteList/crud.tsx @@ -199,6 +199,7 @@ export const createCrudOptions = function ({crudExpose}: CreateCrudOptionsProps) ], component: { span: 24, + filterable: true, props: { elProps: { allowCreate: true, diff --git a/web/src/views/testTool/api.ts b/web/src/views/testTool/api.ts new file mode 100644 index 00000000..5f9aed4a --- /dev/null +++ b/web/src/views/testTool/api.ts @@ -0,0 +1,95 @@ +import { Stream } from 'stream'; +import { request, downloadFile } from '/@/utils/service'; +import { UserPageQuery, AddReq, DelReq, EditReq, InfoReq } from '@fast-crud/fast-crud'; +import { getBaseURL } from '/@/utils/baseUrl' + +export const apiPrefix = '/testTool/tool/'; +export function GetList(query: UserPageQuery) { + return request({ + url: apiPrefix, + method: 'get', + params: query, + }); +} +export function GetObj(id: InfoReq) { + return request({ + url: apiPrefix + id, + method: 'get', + }); +} +export function AddObj(obj: AddReq) { + return request({ + url: apiPrefix, + method: 'post', + data: obj, + }); +} + +export function UpdateObj(obj: EditReq) { + return request({ + url: apiPrefix + obj.id + '/', + method: 'put', + data: obj, + }); +} + +export function DelObj(id: DelReq) { + return request({ + url: apiPrefix + id + '/', + method: 'delete', + data: { id }, + }); +} + + +export function downloadObj(url: any, fileName: any) { + + // return request({ + // url: url, + // responseType: 'blob', + // timeout: 600000 + // // headers: {Accept: 'application/vnd.openxmlformats-officedocument'} + // }).then((res: any) => { + // // const xlsxName = window.decodeURI(res.headers['content-disposition'].split('=')[1]) + // // const fileName = xlsxName || `${filename}.xlsx` + // if (res) { + // const blob = new Blob([res.data], { type: 'charset=utf-8' }) + // const elink = document.createElement('a') + // elink.download = fileName + // elink.style.display = 'none' + // elink.href = URL.createObjectURL(blob) + // document.body.appendChild(elink) + // elink.click() + // URL.revokeObjectURL(elink.href) // 释放URL 对象0 + // document.body.removeChild(elink) + // } + // }) + + // window.open("http://127.0.0.1:8000/" + url); + // const a = document.createElement('a'); + // a.style.display = 'none'; + // a.download = 'xx'; + // a.href = getBaseURL() + url; + // document.body.appendChild(a); + // a.click(); + // document.body.removeChild(a); + + + const elink = document.createElement('a') + elink.download = fileName + elink.style.display = 'none' + elink.href = URL.createObjectURL(getBaseURL() +url) + document.body.appendChild(elink) + elink.click() + URL.revokeObjectURL(elink.href) // 释放URL 对象0 + document.body.removeChild(elink) + +} + +export function exportData(params: any) { + return downloadFile({ + url: apiPrefix + 'export_data/', + params: params, + method: 'get', + }); +} \ No newline at end of file diff --git a/web/src/views/testTool/crud.tsx b/web/src/views/testTool/crud.tsx new file mode 100644 index 00000000..d2f0f1f8 --- /dev/null +++ b/web/src/views/testTool/crud.tsx @@ -0,0 +1,467 @@ +import * as api from './api'; +import { errorMessage, successMessage } from '/@/utils/message'; +import {dictionary} from '/@/utils/dictionary'; +import {compute, dict, UserPageQuery, AddReq, DelReq, EditReq, CrudExpose, CrudOptions, CreateCrudOptionsProps, CreateCrudOptionsRet,FormWrapperContext } from '@fast-crud/fast-crud'; +import {request} from '/@/utils/service'; +import {getBaseURL} from '/@/utils/baseUrl'; +import {auth} from "/@/utils/authFunction"; + + +export const createCrudOptions = function ({ crudExpose }: CreateCrudOptionsProps): CreateCrudOptionsRet { + + const pageRequest = async (query: UserPageQuery) => { + return await api.GetList(query); + }; + const editRequest = async ({ form, row }: EditReq) => { + form.id = row.id; + return await api.UpdateObj(form); + }; + const delRequest = async ({ row }: DelReq) => { + return await api.DelObj(row.id); + }; + const addRequest = async ({ form }: AddReq) => { + return await api.AddObj(form); + }; + const downloadFile = async (row: any)=>{ + // ajax.downloadFile(file_url,null,"tt") + + await api.downloadObj(row.file_url, row.name) + } + const valueChange = async (data: any) => { + console.log(data) + return + }; + + return { + crudOptions: { + actionbar: { + buttons: { + add: { + show: auth('testTool:Create'), + text: '上传', + }, + // upload: { + // show: true, + // text: "test", + // click: () => { + // open + // }, + // } + }, + }, + tabs: { + show: true, + name:'platform', //对应查询字段key + defaultOption:{ + show:true, //是否显示默认页签 + value: '', //点击此页签时,对应的查询value + label: "全部" //页签显示名称 + } + }, + editForm: { + wrapper:{ + title:"修改上传信息" + }, + disable: true, + component: { + disable: true, + } + }, + addForm:{ + // watch({form}){ + // //实时计算c=a+b + // console.log(form) + // // close(1) + + // }, + wrapper:{ + title:"上传产测工具", + buttons: { + ok: {show: false}, // fs-button配置 + cancel: {show: false}, // fs-button配置 + close: { + show: true, + text: '关闭', order: 2, + click: (ctx: any) => { + ctx.close() + }, + }, + }, + }, + // doSubmit: async (context)=> { + // console.log(context) + // } + }, + request: { + pageRequest, + addRequest, + editRequest, + delRequest, + }, + rowHandle: { + //固定右侧 + fixed: 'right', + align: 'center', + width: 200, + show: true, + buttons: { + + view: { + show: false, + }, + edit: { + iconRight: 'Edit', + type: 'text', + show: auth('testTool:Update'), + }, + remove: { + iconRight: 'Delete', + type: 'text', + show: auth('testTool:Delete') + }, + download: { + iconRight: 'Download', + type: 'text', + text: '下载', + show: auth('testTool:Download'), + click: (ctx: any) => { + const {row} = ctx; + downloadFile(row) + + }, + }, + }, + }, + columns: { + _index: { + title: '序号', + form: { show: false }, + column: { + //type: 'index', + align: 'center', + width: '70px', + columnSetDisabled: true, //禁止在列设置中选择 + formatter: (context) => { + //计算序号,你可以自定义计算规则,此处为翻页累加 + let index = context.index ?? 1; + let pagination = crudExpose!.crudBinding.value.pagination; + return ((pagination!.currentPage ?? 1) - 1) * pagination!.pageSize + index + 1; + }, + fixed: "left", + }, + }, + + version: { + title: '工具版本', + column: { + show: true, + align: 'center', + width: '150px', + sortable: true, + fixed: "left", + }, + search: { + show: true, + component: { + props: { + clearable: true, + }, + placeholder: '请输入工具版本', + }, + }, + form: { + rules: [ + // 表单校验规则 + { + required: true, + message: '必填项', + }, + ], + show: true, + component: { + placeholder: '请输入工具版本', + props: { + clearable: true, + }, + + }, + }, + }, + status: { + title: '启用状态', + search: { + show: true, + // disabled: true, + }, + type: 'dict-radio', + column: { + minWidth: 120, + width: '120px', + component: { + name: 'fs-dict-switch', + activeText: '', + inactiveText: '', + + style: '--el-switch-on-color: var(--el-color-primary); --el-switch-off-color: #dcdfe6', + onChange: compute((context) => { + return () => { + api.UpdateObj(context.row).then((res: APIResponseData) => { + successMessage(res.msg as string); + }); + }; + }), + }, + }, + dict: dict({ + data: dictionary('button_status_bool'), + }), + form: { + show: false, + // rules: [ + // // 表单校验规则 + // { + // required: true, + // message: '必填项', + // }, + // ], + // value: false, + } + }, + create_datetime: { + title: '创建时间', + search: { + disabled: true, + }, + column:{ + align: 'center', + width: '200px', + sortable: true + }, + form: { + show: false, + disabled: false, + }, + }, + name: { + title: '工具名称', + search: { + show: false, + }, + type: 'input', + column:{ + align: 'center', + width: '150px' + }, + form: { + show: false, + component: { + placeholder: '请输入工具名称', + }, + }, + }, + platform: { + title: '系统平台', + type: 'dict-select', + dict: dict({ + data: dictionary('tool_platform'), + }), + search: { + show: true, + }, + column:{ + align: 'center', + minWidth: 100, + width: "150px", + }, + form: { + helper: "工具所属的系统平台", + rules: [ + // 表单校验规则 + { + required: true, + message: '必填项', + }, + ], + component: { + placeholder: '请选择工具平台', + filterable: true, + }, + }, + }, + size: { + title: '文件大小', + type: 'text', + search: { + show: false, + }, + column:{ + align: 'center', + width: '150px', + formatter: (context) => { + + return Math.floor(context.row.size / (1024 * 1024)) + 'MB'; + }, + }, + form: { + show: false, + }, + }, + forced_update: { + title: '强制更新', + search: { + // show: true, + disabled: true, + }, + type: 'dict-radio', + column: { + minWidth: 120, + width: '120px', + component: { + name: 'fs-dict-switch', + activeText: '', + inactiveText: '', + style: '--el-switch-on-color: var(--el-color-primary); --el-switch-off-color: #dcdfe6', + onChange: compute((context) => { + return () => { + api.UpdateObj(context.row).then((res: APIResponseData) => { + successMessage(res.msg as string); + }); + }; + }), + }, + }, + dict: dict({ + data: dictionary('button_status_bool'), + }), + form: { + helper: "是否要求低于该版本的强制更新", + rules: [ + // 表单校验规则 + { + required: true, + message: '必填项', + }, + ], + value: false, + } + }, + url: { + title: '文件地址', + type: 'file-uploader', + + search: { + disabled: true, + }, + column:{ + show: false, + // align: 'center', + width: '350px', + component: { + + async buildUrl(value: any) { + return getBaseURL() + value; + } + } + }, + + form: { + rules: [ + // 表单校验规则 + { + required: true, + message: '必填项', + }, + ], + component:{ + // disabled: true, + limit: 1, + uploader: { + action: api.apiPrefix, + uploadRequest: async ({ action, file, onProgress}: { action: string; file: any; onProgress: Function}) => { + // @ts-ignore + const data = new FormData(); + const getFormData = crudExpose.getFormData() + console.log("uploadRequest", data) + data.append("file", file); + data.append("version", getFormData.version) + data.append("update_comment", getFormData.update_comment) + data.append("forced_update", getFormData.forced_update) + data.append("platform", getFormData.platform) + + return await request({ + url: action, + method: "post", + timeout: 60000, + headers: { + "Content-Type": "multipart/form-data" + }, + data, + onUploadProgress: (p: any) => { + onProgress({percent: Math.round((p.loaded / p.total) * 100)}); + } + }); + }, + }, + beforeUpload: (context: any) => { + const FormData = crudExpose.getFormData() + console.log("beforeUpload", context) + + if (!FormData.hasOwnProperty("update_comment") + || !FormData.hasOwnProperty("version") + || !FormData.hasOwnProperty("forced_update") + || !FormData.hasOwnProperty("platform")) { + errorMessage("请先填写信息") + throw new Error("请先填写信息") + } + + if (FormData.update_comment == "" + || FormData.version == "" + || FormData.platform == "") { + errorMessage("信息不能为空") + throw new Error("信息不能为空") + } + + }, + uploadRequest: (context: any) => { + console.log("uploadRequest", context) + }, + onSuccess: (context: any) => { + console.log("success", context, crudExpose.getFormData()) + // crudExpose() + // window.close() + // const FormData = crudExpose.getFormData() + // addRequest(FormData) + }, + }, + }, + + }, + update_comment: { + title: '更新说明', + type: ['textarea', 'colspan'], + // style: {height: '200px'}, + search: { + show: false, + }, + column:{ + align: 'center', + minWidth: 200, + }, + form: { + rules: [ + // 表单校验规则 + { + required: true, + message: '必填项', + }, + ], + component: { + placeholder: '请输入更新说明', + }, + }, + }, + }, + + }, + }; +}; diff --git a/web/src/views/testTool/download.tsx b/web/src/views/testTool/download.tsx new file mode 100644 index 00000000..4214fd52 --- /dev/null +++ b/web/src/views/testTool/download.tsx @@ -0,0 +1,74 @@ +import axios from "axios" +import * as auth from '@/utils/auth.js' +let ajax = axios.create({ +    baseURL: process.env.VUE_APP_BASE_API, +    timeout: 100000 +}); +ajax.interceptors.request.use(config => { +        config.headers = { +            Authorization: auth.getToken(), +            // OrgId: auth.getUser().orgId, +            // UserId: auth.getUser().id, +        } +        return config +    }, +    err => { +        return Promise.reject(err) +    }) +let downloadFile = async (url, formData, options) => { +    await ajax.post(url, formData, {responseType: 'arraybuffer'}).then(resp => download(resp, options)) +} +let getFile = async (url, options) => { +    await ajax.get(url, {responseType: 'blob'}).then(resp => download(resp, options)) +} +let download = (resp, options) => { +    let blob = new Blob([resp.data], {type: options.fileType ? options.fileType : 'application/octet-binary'}) +    //创建下载的链接 +    let href = window.URL.createObjectURL(blob) +    downloadBlob(href, options.fileName) +} +let downloadBlob = (blobUrl, fileName, revokeObjectURL) => { +    let downloadElement = document.createElement('a') +    downloadElement.href = blobUrl +    //下载后文件名 +    downloadElement.download = fileName +    document.body.appendChild(downloadElement) +    //点击下载 +    downloadElement.click() +    //下载完成移除元素 +    document.body.removeChild(downloadElement) +    if (revokeObjectURL == null || revokeObjectURL) { +        //释放掉blob对象 +        window.URL.revokeObjectURL(blobUrl) +    } +} +let getDownloadFileUrl = async (url, fileType) => { +    let blob +    await ajax.get(url, {responseType: 'blob'}).then(resp => { +        blob = new Blob([resp.data], {type: fileType ? fileType : 'application/octet-binary'}); +    }) +    return window.URL.createObjectURL(blob); +} +let getDownloadFileUrlByPost = async (url, data, fileType) => { +    let blob +    await ajax.post(url, data, {responseType: 'blob'}).then(resp => { +        blob = new Blob([resp.data], {type: fileType ? fileType : 'application/octet-binary'}); +    }) +    return window.URL.createObjectURL(blob); +} +let getDownloadFileBlob = async (url, fileType) => { +    let blob +    await ajax.get(url, {responseType: 'blob'}).then(resp => { +        blob = new Blob([resp.data], {type: fileType ? fileType : 'application/octet-binary'}); +    }) +    return blob; +} +export default { +    ajax, +    downloadFile, +    getFile, +    getDownloadFileUrl, +    getDownloadFileUrlByPost, +    getDownloadFileBlob, +    downloadBlob +} \ No newline at end of file diff --git a/web/src/views/testTool/index.vue b/web/src/views/testTool/index.vue new file mode 100644 index 00000000..11c1b768 --- /dev/null +++ b/web/src/views/testTool/index.vue @@ -0,0 +1,30 @@ + + + diff --git a/web/src/views/testToolLicense/api.ts b/web/src/views/testToolLicense/api.ts new file mode 100644 index 00000000..bc33a140 --- /dev/null +++ b/web/src/views/testToolLicense/api.ts @@ -0,0 +1,84 @@ +import { Stream } from 'stream'; +import { request, downloadFile } from '/@/utils/service'; +import { UserPageQuery, AddReq, DelReq, EditReq, InfoReq } from '@fast-crud/fast-crud'; +import { getBaseURL } from '/@/utils/baseUrl' + +export const apiPrefix = '/testTool/license/'; +export function GetList(query: UserPageQuery) { + return request({ + url: apiPrefix, + method: 'get', + params: query, + }); +} +export function GetObj(id: InfoReq) { + return request({ + url: apiPrefix + id, + method: 'get', + }); +} +export function AddObj(obj: AddReq) { + return request({ + url: apiPrefix, + method: 'post', + data: obj, + }); +} + +export function UpdateObj(obj: EditReq) { + return request({ + url: apiPrefix + obj.id + '/', + method: 'put', + data: obj, + }); +} + +export function DelObj(id: DelReq) { + return request({ + url: apiPrefix + id + '/', + method: 'delete', + data: { id }, + }); +} + + +export function downloadObj(url: any, fileName: any) { + + // return request({ + // url: url, + // responseType: 'blob', + // timeout: 600000 + // // headers: {Accept: 'application/vnd.openxmlformats-officedocument'} + // }).then((res: any) => { + // // const xlsxName = window.decodeURI(res.headers['content-disposition'].split('=')[1]) + // // const fileName = xlsxName || `${filename}.xlsx` + // if (res) { + // const blob = new Blob([res.data], { type: 'charset=utf-8' }) + // const elink = document.createElement('a') + // elink.download = fileName + // elink.style.display = 'none' + // elink.href = URL.createObjectURL(blob) + // document.body.appendChild(elink) + // elink.click() + // URL.revokeObjectURL(elink.href) // 释放URL 对象0 + // document.body.removeChild(elink) + // } + // }) + + // window.open("http://127.0.0.1:8000/" + url); + const a = document.createElement('a'); + a.style.display = 'none'; + a.download = 'xx'; + a.href = getBaseURL() + url;; + document.body.appendChild(a); + a.click(); + document.body.removeChild(a); +} + +export function exportData(params: any) { + return downloadFile({ + url: apiPrefix + 'export_data/', + params: params, + method: 'get', + }); +} \ No newline at end of file diff --git a/web/src/views/testToolLicense/crud.tsx b/web/src/views/testToolLicense/crud.tsx new file mode 100644 index 00000000..8f3bba83 --- /dev/null +++ b/web/src/views/testToolLicense/crud.tsx @@ -0,0 +1,252 @@ +import * as api from './api'; +import { errorMessage, successMessage } from '/@/utils/message'; +import {dictionary} from '/@/utils/dictionary'; +import {compute, dict, UserPageQuery, AddReq, DelReq, EditReq, CrudExpose, CrudOptions, CreateCrudOptionsProps, CreateCrudOptionsRet,FormWrapperContext } from '@fast-crud/fast-crud'; +import {request} from '/@/utils/service'; +import {getBaseURL} from '/@/utils/baseUrl'; +import {auth} from "/@/utils/authFunction"; + +import { log } from 'console'; +import { fa } from 'element-plus/es/locale'; +import { close } from 'fs'; + +export const createCrudOptions = function ({ crudExpose }: CreateCrudOptionsProps): CreateCrudOptionsRet { + + const pageRequest = async (query: UserPageQuery) => { + return await api.GetList(query); + }; + const editRequest = async ({ form, row }: EditReq) => { + form.id = row.id; + return await api.UpdateObj(form); + }; + const delRequest = async ({ row }: DelReq) => { + return await api.DelObj(row.id); + }; + const addRequest = async ({ form }: AddReq) => { + return await api.AddObj(form); + }; + const downloadFile = async (row: any)=>{ + await api.downloadObj(row.file_url, row.name) + } + + return { + crudOptions: { + actionbar: { + buttons: { + add: { + show: auth('testToolLicense:Create'), + text: '添加', + }, + }, + }, + // tabs: { + // show: true, + // name:'status', //对应查询字段key + // defaultOption:{ + // show:true, //是否显示默认页签 + // value: '', //点击此页签时,对应的查询value + // label: "全部" //页签显示名称 + // } + // }, + editForm: { + wrapper:{ + title:"生成License", + buttons: { + ok: {show: true, text: "生成"}, // fs-button配置 + + }, + }, + }, + request: { + pageRequest, + addRequest, + editRequest, + delRequest, + }, + rowHandle: { + //固定右侧 + fixed: 'right', + align: 'center', + width: 200, + show: true, + buttons: { + + view: { + show: false, + }, + edit: { + iconRight: 'Edit', + type: 'text', + text: '生成', + show: auth('testToolLicense:Update'), + }, + remove: { + iconRight: 'Delete', + type: 'text', + show: auth('testToolLicense:Delete') + }, + download: { + iconRight: 'Download', + type: 'text', + text: '下载', + show: auth('testToolLicense:Download'), + click: (ctx: any) => { + const blob = new Blob([ctx.row.license], { type: "text/plain; charset=utf-8" }); + const elink = document.createElement('a') + elink.download = 'license' + elink.style.display = 'none' + elink.href = URL.createObjectURL(blob) + document.body.appendChild(elink) + elink.click() + URL.revokeObjectURL(elink.href) // 释放URL 对象0 + document.body.removeChild(elink) + }, + }, + }, + }, + columns: { + _index: { + title: '序号', + form: { show: false }, + column: { + //type: 'index', + align: 'center', + width: '70px', + columnSetDisabled: true, //禁止在列设置中选择 + formatter: (context) => { + //计算序号,你可以自定义计算规则,此处为翻页累加 + let index = context.index ?? 1; + let pagination = crudExpose!.crudBinding.value.pagination; + return ((pagination!.currentPage ?? 1) - 1) * pagination!.pageSize + index + 1; + }, + fixed: "left", + }, + }, + uuid: { + title: 'uuid', + column: { + show: true, + align: 'center', + width: '250px', + sortable: true, + }, + search: { + show: true, + component: { + props: { + clearable: true, + }, + placeholder: '请输入uuid', + }, + }, + form: { + rules: [ + // 表单校验规则 + { + required: true, + message: '必填项', + }, + ], + show: true, + component: { + placeholder: '请输入uuid', + props: { + clearable: true, + }, + + }, + }, + }, + status: { + title: '启用状态', + search: { + show: true, + // disabled: true, + }, + type: 'dict-radio', + column: { + minWidth: 120, + width: '120px', + component: { + name: 'fs-dict-switch', + activeText: '', + inactiveText: '', + + style: '--el-switch-on-color: var(--el-color-primary); --el-switch-off-color: #dcdfe6', + onChange: compute((context) => { + return () => { + api.UpdateObj(context.row).then((res: APIResponseData) => { + successMessage(res.msg as string); + }); + }; + }), + }, + }, + dict: dict({ + data: dictionary('button_status_bool'), + }), + form: { + show: false, + // rules: [ + // // 表单校验规则 + // { + // required: true, + // message: '必填项', + // }, + // ], + // value: false, + } + }, + license: { + title: 'license', + search: { + show: true, + }, + type: 'input', + column:{ + align: 'center', + width: '400px' + }, + form: { + show: false, + component: { + placeholder: '请输入license', + }, + }, + }, + comment: { + title: '备注', + type: ['textarea', 'colspan'], + search: { + show: true, + }, + column:{ + align: 'center', + minWidth: 200, + }, + form: { + component: { + placeholder: '请输入备注', + }, + }, + }, + create_datetime: { + title: '创建时间', + search: { + disabled: true, + }, + column:{ + align: 'center', + width: '200px', + sortable: true + }, + form: { + show: false, + disabled: false, + }, + }, + }, + + }, + }; +}; diff --git a/web/src/views/testToolLicense/index.vue b/web/src/views/testToolLicense/index.vue new file mode 100644 index 00000000..e32b8e72 --- /dev/null +++ b/web/src/views/testToolLicense/index.vue @@ -0,0 +1,30 @@ + + + -- Gitee From 0e9a3532d3bffdb09fdd211db3a2f2435a243474 Mon Sep 17 00:00:00 2001 From: lxy <10179281+lxy0722@user.noreply.gitee.com> Date: Thu, 4 Jul 2024 09:51:46 +0800 Subject: [PATCH 02/45] =?UTF-8?q?=E6=8E=88=E6=9D=83=E6=9D=83=E9=99=90?= =?UTF-8?q?=E9=BB=98=E8=AE=A4=E8=AE=BE=E7=BD=AE=E4=B8=BA=E5=85=A8=E9=83=A8?= =?UTF-8?q?=E6=95=B0=E6=8D=AE=E6=9D=83=E9=99=90?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../views/role_menu_button_permission.py | 52 +++++++++---------- 1 file changed, 26 insertions(+), 26 deletions(-) diff --git a/backend/dvadmin/system/views/role_menu_button_permission.py b/backend/dvadmin/system/views/role_menu_button_permission.py index b86952c2..b578db6f 100644 --- a/backend/dvadmin/system/views/role_menu_button_permission.py +++ b/backend/dvadmin/system/views/role_menu_button_permission.py @@ -23,13 +23,13 @@ class RoleMenuButtonPermissionSerializer(CustomModelSerializer): """ 菜单按钮-序列化器 """ + class Meta: model = RoleMenuButtonPermission fields = "__all__" read_only_fields = ["id"] - class RoleMenuButtonPermissionCreateUpdateSerializer(CustomModelSerializer): """ 初始化菜单按钮-序列化器 @@ -67,17 +67,17 @@ class RoleButtonPermissionSerializer(CustomModelSerializer): return None return obj.data_range - class Meta: model = MenuButton - fields = ['id','name','value','isCheck','data_range'] + fields = ['id', 'name', 'value', 'isCheck', 'data_range'] -class RoleFieldPermissionSerializer(CustomModelSerializer): +class RoleFieldPermissionSerializer(CustomModelSerializer): class Meta: model = FieldPermission fields = "__all__" + class RoleMenuFieldSerializer(CustomModelSerializer): is_query = serializers.SerializerMethodField() is_create = serializers.SerializerMethodField() @@ -103,9 +103,10 @@ class RoleMenuFieldSerializer(CustomModelSerializer): if queryset: return queryset.is_update return False + class Meta: model = MenuField - fields = ['id','field_name','title','is_query','is_create','is_update'] + fields = ['id', 'field_name', 'title', 'is_query', 'is_create', 'is_update'] class RoleMenuPermissionSerializer(CustomModelSerializer): @@ -121,6 +122,7 @@ class RoleMenuPermissionSerializer(CustomModelSerializer): parent_list = Menu.get_all_parent(instance['id']) names = [d["name"] for d in parent_list] return "/".join(names) + def get_isCheck(self, instance): params = self.request.query_params return RoleMenuPermission.objects.filter( @@ -130,19 +132,18 @@ class RoleMenuPermissionSerializer(CustomModelSerializer): def get_btns(self, instance): btn_list = MenuButton.objects.filter(menu__id=instance['id']).values('id', 'name', 'value') - serializer = RoleButtonPermissionSerializer(btn_list,many=True,request=self.request) - return serializer.data + serializer = RoleButtonPermissionSerializer(btn_list, many=True, request=self.request) + return serializer.data def get_columns(self, instance): col_list = MenuField.objects.filter(menu=instance['id']) - serializer = RoleMenuFieldSerializer(col_list,many=True,request=self.request) + serializer = RoleMenuFieldSerializer(col_list, many=True, request=self.request) return serializer.data - - class Meta: model = Menu - fields = ['id','name','isCheck','btns','columns'] + fields = ['id', 'name', 'isCheck', 'btns', 'columns'] + class RoleMenuButtonPermissionViewSet(CustomModelViewSet): """ @@ -167,8 +168,8 @@ class RoleMenuButtonPermissionViewSet(CustomModelViewSet): :return: menu,btns,columns """ params = request.query_params - role = params.get('role',None) - if role is None: + role = params.get('role', None) + if role is None: return ErrorResponse(msg="未获取到角色信息") is_superuser = request.user.is_superuser # if is_superuser: @@ -182,11 +183,11 @@ class RoleMenuButtonPermissionViewSet(CustomModelViewSet): # return DetailResponse(data=data) data = [] if is_superuser: - queryset = Menu.objects.filter(status=1,is_catalog=False).values('name', 'id').all() + queryset = Menu.objects.filter(status=1, is_catalog=False).values('name', 'id').all() else: role_id = request.user.role.values_list('id', flat=True) - menu_list = RoleMenuPermission.objects.filter(role__in=role_id).values_list('id',flat=True) - queryset = Menu.objects.filter(status=1, is_catalog=False,id__in=menu_list).values('name', 'id') + menu_list = RoleMenuPermission.objects.filter(role__in=role_id).values_list('id', flat=True) + queryset = Menu.objects.filter(status=1, is_catalog=False, id__in=menu_list).values('name', 'id') for item in queryset: parent_list = Menu.get_all_parent(item['id']) names = [d["name"] for d in parent_list] @@ -214,7 +215,7 @@ class RoleMenuButtonPermissionViewSet(CustomModelViewSet): return DetailResponse(data=data) @action(methods=['PUT'], detail=True, permission_classes=[IsAuthenticated]) - def set_role_premission(self,request,pk): + def set_role_premission(self, request, pk): """ 对角色的菜单和按钮及按钮范围授权: :param request: @@ -234,19 +235,18 @@ class RoleMenuButtonPermissionViewSet(CustomModelViewSet): # RoleMenuPermission.objects.create(role_id=pk, menu_id=menu.get('id')) for btn in menu.get('btns', []): if btn.get('isCheck'): - data_range = btn.get('data_range',0) or 0 - instance = RoleMenuButtonPermission.objects.create(role_id=pk, menu_button_id=btn.get('id'),data_range=data_range) - instance.dept.set(btn.get('dept',[])) + data_range = btn.get('data_range', None) or 3 # 默认数据权限为全部 + instance = RoleMenuButtonPermission.objects.create(role_id=pk, menu_button_id=btn.get('id'), + data_range=data_range) + instance.dept.set(btn.get('dept', [])) for col in menu.get('columns', []): - FieldPermission.objects.update_or_create(role_id=pk,field_id=col.get('id'),defaults={ - "is_query":col.get('is_query'), - "is_create":col.get('is_create'), - "is_update":col.get('is_update') + FieldPermission.objects.update_or_create(role_id=pk, field_id=col.get('id'), defaults={ + "is_query": col.get('is_query'), + "is_create": col.get('is_create'), + "is_update": col.get('is_update') }) return DetailResponse(msg="授权成功") - - @action(methods=['GET'], detail=False, permission_classes=[IsAuthenticated]) def role_menu_get_button(self, request): """ -- Gitee From 58b2e307c28116905e264645bd1de9ccf5e98c47 Mon Sep 17 00:00:00 2001 From: lxy <10179281+lxy0722@user.noreply.gitee.com> Date: Thu, 4 Jul 2024 09:52:30 +0800 Subject: [PATCH 03/45] =?UTF-8?q?=E4=BF=AE=E6=94=B9=E7=B3=BB=E7=BB=9F?= =?UTF-8?q?=E9=85=8D=E7=BD=AE=E6=96=87=E4=BB=B6=E5=AD=97=E6=AE=B5?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- backend/app/test_tool/views.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/backend/app/test_tool/views.py b/backend/app/test_tool/views.py index 68220d32..c5eb979b 100644 --- a/backend/app/test_tool/views.py +++ b/backend/app/test_tool/views.py @@ -95,7 +95,7 @@ class ToolFileViewSet(CustomModelViewSet): instance = self.get_object() # 配置是否删除本地文件, 前端配置 - if dispatch.get_system_config_values("test_tool.remove_is_deleted"): + if dispatch.get_system_config_values("tool.remove_is_deleted"): try: os.remove(instance.file_url) except FileNotFoundError: # 删除文件的目的就是为了删除文件,所以找不到文件就认为删除了 @@ -168,7 +168,7 @@ class ToolLicenseViewSet(CustomModelViewSet): # 获取是否启动自动授权 - request.data['status'] = dispatch.get_system_config_values("test_tool.license_auto_authorized") + request.data['status'] = dispatch.get_system_config_values("tool.license_auto_authorized") request.data['license'] = self.generate_license(request.data['uuid'], request.data.get('license', '')) -- Gitee From fd339568530b9100df080eaa5970367e3c719dff Mon Sep 17 00:00:00 2001 From: lxy <10179281+lxy0722@user.noreply.gitee.com> Date: Thu, 4 Jul 2024 09:54:46 +0800 Subject: [PATCH 04/45] =?UTF-8?q?=E8=8F=9C=E5=8D=95=E6=8E=88=E6=9D=83?= =?UTF-8?q?=E5=A2=9E=E5=8A=A0=E4=B8=80=E9=94=AE=E6=8E=88=E6=9D=83=E5=9F=BA?= =?UTF-8?q?=E6=9C=AC=E5=8A=9F=E8=83=BD?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- backend/dvadmin/system/views/menu_button.py | 27 +- .../menu/components/MenuButtonCom/crud.tsx | 235 +++++++++++++++++- 2 files changed, 251 insertions(+), 11 deletions(-) diff --git a/backend/dvadmin/system/views/menu_button.py b/backend/dvadmin/system/views/menu_button.py index 2a6c7428..84c1e446 100644 --- a/backend/dvadmin/system/views/menu_button.py +++ b/backend/dvadmin/system/views/menu_button.py @@ -10,7 +10,7 @@ from django.db.models import F from rest_framework.decorators import action from rest_framework.permissions import IsAuthenticated -from dvadmin.system.models import MenuButton, RoleMenuButtonPermission +from dvadmin.system.models import MenuButton, RoleMenuButtonPermission, Menu from dvadmin.utils.json_response import DetailResponse, SuccessResponse from dvadmin.utils.serializers import CustomModelSerializer from dvadmin.utils.viewset import CustomModelViewSet @@ -80,4 +80,27 @@ class MenuButtonViewSet(CustomModelViewSet): else: role_id = request.user.role.values_list('id', flat=True) queryset = RoleMenuButtonPermission.objects.filter(role__in=role_id).values_list('menu_button__value',flat=True).distinct() - return DetailResponse(data=queryset) \ No newline at end of file + return DetailResponse(data=queryset) + + @action(methods=['post'], detail=False, permission_classes=[IsAuthenticated]) + def batch_create(self, request, *args, **kwargs): + """ + 批量创建菜单“增删改查查”权限 + 创建的数据来源于菜单,需要规范创建菜单参数 + value:菜单的component_name:method + api:菜单的web_path增加'/api'前缀,并根据method增加{id} + """ + menu_obj = Menu.objects.filter(id=request.data['menu']).first() + result_list = [ + {'menu': menu_obj.id, 'name': '新增', 'value': f'{menu_obj.component_name}:Create', 'api': f'/api{menu_obj.component_name}/', 'method': 1}, + {'menu': menu_obj.id, 'name': '删除', 'value': f'{menu_obj.component_name}:Delete', 'api': f'/api{menu_obj.component_name}/{{id}}/', 'method': 3}, + {'menu': menu_obj.id, 'name': '编辑', 'value': f'{menu_obj.component_name}:Update', 'api': f'/api{menu_obj.component_name}/{{id}}/', 'method': 2}, + {'menu': menu_obj.id, 'name': '查询', 'value': f'{menu_obj.component_name}:Search', 'api': f'/api{menu_obj.component_name}/', 'method': 0}, + {'menu': menu_obj.id, 'name': '详情', 'value': f'{menu_obj.component_name}:Retrieve', 'api': f'/api{menu_obj.component_name}/{{id}}/', 'method': 0}, + {'menu': menu_obj.id, 'name': '复制', 'value': f'{menu_obj.component_name}:Copy', 'api': f'/api{menu_obj.component_name}/', 'method': 1}, + {'menu': menu_obj.id, 'name': '导入', 'value': f'{menu_obj.component_name}:Import', 'api': f'/api{menu_obj.component_name}/import_data/', 'method': 1}, + {'menu': menu_obj.id, 'name': '导出', 'value': f'{menu_obj.component_name}:Export', 'api': f'/api{menu_obj.component_name}/export_data/', 'method': 1},] + serializer = self.get_serializer(data=result_list, many=True) + serializer.is_valid(raise_exception=True) + serializer.save() + return SuccessResponse(serializer.data, msg="批量创建成功") \ No newline at end of file diff --git a/web/src/views/system/menu/components/MenuButtonCom/crud.tsx b/web/src/views/system/menu/components/MenuButtonCom/crud.tsx index c1a7a1f0..cf82166e 100644 --- a/web/src/views/system/menu/components/MenuButtonCom/crud.tsx +++ b/web/src/views/system/menu/components/MenuButtonCom/crud.tsx @@ -2,10 +2,185 @@ import {AddReq, DelReq, EditReq, dict, CreateCrudOptionsRet, CreateCrudOptionsPr import * as api from './api'; import {auth} from '/@/utils/authFunction' import {request} from '/@/utils/service'; + + + +// 注释编号:django-vue3-admin-crud035117:代码开始行 +// 功能说明:自定义表单From,做一键添加添加权限的功能 + +let selectedId:any = null // 注释编号:django-vue3-admin-crud285811:定义selectedId来保存当前选中的菜单ID + + +// 注释编号:django-vue3-admin-crud075911:重新定义一条新增对象的函数 +const addImportRequest = async (form: AddReq) => { + return await api.AddObj(form); +}; + + +import { + CrudExpose, + CrudOptions, + useColumns, + useFormWrapper, + } from "@fast-crud/fast-crud"; + + +function useCustomFormWrapperDemo(crudExpose: CrudExpose) { + // 自定义表单配置 + const { buildFormOptions } = useColumns(); + const customOptions: CrudOptions = { + + + //在这里自定义表单的字段 + columns: { + keywords: { + title: "输入权限关键字符", + type: "text", + form: { + rules: [{required: true, message: '关键字符必填'}], + }, + }, + api: { + title: '接口地址', + search: {show: false}, + type: 'dict-select', + dict: dict({ + getData() { + return request({url: '/swagger.json'}).then((res: any) => { + const ret = Object.keys(res.paths); + console.log(ret) + const data = []; + for (const item of ret) { + const obj: any = {}; + obj.label = item; + obj.value = item; + data.push(obj); + } + return data; + }); + }, + }), + column: { + minWidth: 250, + sortable: true, + }, + form: { + rules: [{required: true, message: '必填项'}], + component: { + props: { + allowCreate: true, + filterable: true, + clearable: true, + }, + }, + helper: { + render() { + return ; + }, + }, + }, + }, + }, + form: { + labelWidth: '150px', + col: {span: 24}, + wrapper: { + width: 600, + is: 'el-dialog', + // 传入form页面的title名称 + title: "一键添加通用权限", + }, + + // 注释编号:django-vue3-admin-crud155411:代码开始行 + // 功能说明:这里写标准化的按钮权限数据 + async doSubmit({ form }) { + // 检查 keywords 和 selectedId 的有效性 + + const keywords = form.keywords; + const baseApiPath = form.api; + + var suffix_ = '' + + if (baseApiPath[baseApiPath.length - 1] != '/') { + var suffix_ = '/' + } + + if (!keywords || !selectedId || !baseApiPath) { + console.error("Invalid keywords or selectedId."); + return false; + } + + // const baseApiPath = "/api/"; + + + // 定义操作类型及其对应的method, 如下其中method方法的为对应是get:0、post:1、put:2、DELETE:3 + const operations = [ + { name: "删除", action: "Delete", method: 3, suffix: suffix_ + "{id}/" }, + { name: "复制", action: "Copy", method: 0, suffix: "" }, + { name: "导入", action: "Import", method: 1, suffix: suffix_ + "import_data/" }, + { name: "导出", action: "Export", method: 1, suffix: suffix_ + "export_data/" }, + { name: "新增", action: "Create", method: 1, suffix: "" }, + { name: "查询", action: "Search", method: 0, suffix: "" }, + { name: "编辑", action: "Update", method: 2, suffix: suffix_ + "{id}/" }, + { name: "详情", action: "Retrieve", method: 0, suffix: suffix_ + "{id}/" }, + ]; + + try { + // 使用 Promise.all 并行处理请求 + const promises = operations.map(async ({ name, action, method, suffix }) => { + const value = `${keywords}:${action}`; + // const api = `${baseApiPath}${keywords}${suffix}`; + const api = `${baseApiPath}${suffix}`; + const obj = { value, name, method, api, menu: selectedId }; + await addImportRequest(obj); + }); + + await Promise.all(promises); + + crudExpose.doRefresh(); // 一定要刷新当前页面 + } catch (error) { + console.error("Failed to submit requests:", error); + return false; // 错误时返回false,可以根据实际需要调整 + } + + + return true; // 无论如何都要关闭当前窗口 + } + // 注释编号:django-vue3-admin-crud155411:代码结束行 + + } + + }; + + const { openDialog } = useFormWrapper(); + //使用crudOptions结构来构建自定义表单配置 + //打开自定义表单 + const openCustomForm = async () => { + const formOptions = buildFormOptions(customOptions); + const dialogRef = await openDialog(formOptions); + + }; + + return { + openCustomForm, + }; + } + +// 注释编号:django-vue3-admin-crud035117:代码结束行 + + + //此处为crudOptions配置 export const createCrudOptions = function ({crudExpose, context}: CreateCrudOptionsProps): CreateCrudOptionsRet { + + const { openCustomForm } = useCustomFormWrapperDemo(crudExpose); // 注释编号:django-vue3-admin-crud260010:定义自定义表单 + const pageRequest = async () => { - if (context!.selectOptions.value.id) { + if (context!.selectOptions.value.id){ + + selectedId = context!.selectOptions.value.id; // 注释编号:django-vue3-admin-crud545209:把当前选中的菜单id赋值给selectedId + return await api.GetList({menu: context!.selectOptions.value.id} as any); } else { return undefined; @@ -40,22 +215,64 @@ export const createCrudOptions = function ({crudExpose, context}: CreateCrudOpti add: { show: auth('btn:Create') }, + // 注释编号:django-vue3-admin-crud401314:代码开始行 + // 功能说明:添加一键添加通用权限按钮 + addImport:{ + text: '一键添加通用权限', //按钮显示名称 + type: "success", + async click() { + await openCustomForm(); + }, + show: auth('btn:addImport') + }, + // 注释编号:django-vue3-admin-crud401314:代码结束行 + + export:{ + show: false //因为在setting中配置了默认show,所以这里需要配置成隐藏 + } + }, }, rowHandle: { //固定右侧 fixed: 'right', - width: 200, + width: 290, buttons: { - view: { - show: false, - }, + view: { + // type: 'text', + show: true, + // style:{color: "#67C23A"}, + order: 1, + }, edit: { - icon: '', - type: 'primary', - show: auth('btn:Update') + // icon: '', + // type: 'text', + // style:{color: "#E6A23C"}, + order: 2, + show: auth('btn:Update') }, + copy: { + text: '复制', //按钮显示名称 + // type: 'text', //按钮类型 + order: 3, //排序,这个看自己喜欢排在什么位置了 + // style:{color: "#606266"}, + title: '复制', + click: (context: any): void => { + // 这里必须拿到了context里面的row属性并且赋值给newrow,接下来做一个深拷贝出来一个全新与源对象无关系的对象row + let newrow = context.row; + let row = JSON.parse(JSON.stringify(newrow)); + // 官方调用openAdd: (context: OpenEditContext, formOpts?: OpenDialogProps) => Promise;其中formOpts就是指form的选择配置 + // 第一个参数只能传命名为row的参数,别的名称好像不行。 + // 第二个参数是传了form的title名称进去{wrapper:{title:"复制数据"}},如果要传其它参数,可根据情况而定 + crudExpose.openAdd({row},{wrapper:{title:"复制数据"}}) + + }, + show: auth('btn:Copy') + }, remove: { + // icon: '', + // type: 'text', + // style:{color: "#E6A23C"}, show: auth('btn:Delete') }, }, @@ -212,4 +429,4 @@ export const createCrudOptions = function ({crudExpose, context}: CreateCrudOpti }, }, }; -}; +}; \ No newline at end of file -- Gitee From c492b34c9007d5ea89c3eed8ae6e5a2eb8d8ceb0 Mon Sep 17 00:00:00 2001 From: lxy <10179281+lxy0722@user.noreply.gitee.com> Date: Thu, 4 Jul 2024 09:55:17 +0800 Subject: [PATCH 05/45] =?UTF-8?q?=E4=BA=A7=E6=B5=8B=E5=B7=A5=E5=85=B7?= =?UTF-8?q?=E4=B8=8A=E4=BC=A0=E5=AE=8C=E6=88=90=E5=A2=9E=E5=8A=A0=E6=8F=90?= =?UTF-8?q?=E7=A4=BA=E6=B6=88=E6=81=AF?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- web/src/views/testTool/crud.tsx | 27 +++++++++++---------------- 1 file changed, 11 insertions(+), 16 deletions(-) diff --git a/web/src/views/testTool/crud.tsx b/web/src/views/testTool/crud.tsx index d2f0f1f8..f1ef5f37 100644 --- a/web/src/views/testTool/crud.tsx +++ b/web/src/views/testTool/crud.tsx @@ -1,5 +1,5 @@ import * as api from './api'; -import { errorMessage, successMessage } from '/@/utils/message'; +import { errorMessage, successMessage, successNotification } from '/@/utils/message'; import {dictionary} from '/@/utils/dictionary'; import {compute, dict, UserPageQuery, AddReq, DelReq, EditReq, CrudExpose, CrudOptions, CreateCrudOptionsProps, CreateCrudOptionsRet,FormWrapperContext } from '@fast-crud/fast-crud'; import {request} from '/@/utils/service'; @@ -68,12 +68,6 @@ export const createCrudOptions = function ({ crudExpose }: CreateCrudOptionsProp } }, addForm:{ - // watch({form}){ - // //实时计算c=a+b - // console.log(form) - // // close(1) - - // }, wrapper:{ title:"上传产测工具", buttons: { @@ -84,13 +78,11 @@ export const createCrudOptions = function ({ crudExpose }: CreateCrudOptionsProp text: '关闭', order: 2, click: (ctx: any) => { ctx.close() + crudExpose.doRefresh(); }, }, }, }, - // doSubmit: async (context)=> { - // console.log(context) - // } }, request: { pageRequest, @@ -381,7 +373,7 @@ export const createCrudOptions = function ({ crudExpose }: CreateCrudOptionsProp // @ts-ignore const data = new FormData(); const getFormData = crudExpose.getFormData() - console.log("uploadRequest", data) + // console.log("uploadRequest", data) data.append("file", file); data.append("version", getFormData.version) data.append("update_comment", getFormData.update_comment) @@ -404,7 +396,7 @@ export const createCrudOptions = function ({ crudExpose }: CreateCrudOptionsProp }, beforeUpload: (context: any) => { const FormData = crudExpose.getFormData() - console.log("beforeUpload", context) + // console.log("beforeUpload", context) if (!FormData.hasOwnProperty("update_comment") || !FormData.hasOwnProperty("version") @@ -422,11 +414,14 @@ export const createCrudOptions = function ({ crudExpose }: CreateCrudOptionsProp } }, - uploadRequest: (context: any) => { - console.log("uploadRequest", context) - }, + // uploadRequest: (context: any) => { + // console.log("uploadRequest", context) + // }, onSuccess: (context: any) => { - console.log("success", context, crudExpose.getFormData()) + successNotification('上传成功!') + // console.log("success", context, crudExpose.getFormData()) + // crudExpose.doRefresh(); + // crudExpose.doSelectCurrentRow(context) // crudExpose() // window.close() // const FormData = crudExpose.getFormData() -- Gitee From f5362b237917bde1db90b7a0b6dfda95c25c3096 Mon Sep 17 00:00:00 2001 From: lxy <10179281+lxy0722@user.noreply.gitee.com> Date: Thu, 4 Jul 2024 09:56:49 +0800 Subject: [PATCH 06/45] =?UTF-8?q?=E5=8E=BB=E9=99=A4=E7=99=BB=E5=BD=95?= =?UTF-8?q?=E6=9B=B4=E6=96=B0=E6=8F=90=E7=A4=BA=E3=80=81=E4=B8=AA=E4=BA=BA?= =?UTF-8?q?=E9=9A=90=E8=97=8F=E4=BB=A3=E7=A0=81=E4=BB=93=E5=BA=93=E3=80=81?= =?UTF-8?q?=E7=99=BB=E5=BD=95=E7=95=8C=E9=9D=A2=E5=8F=96=E6=B6=88=E4=BA=8C?= =?UTF-8?q?=E7=BB=B4=E7=A0=81?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- web/src/layout/navBars/breadcrumb/user.vue | 2 +- web/src/layout/upgrade/index.vue | 2 +- web/src/views/system/login/index.vue | 4 +- web/src/views/testTool/download.tsx | 74 ---------------------- 4 files changed, 4 insertions(+), 78 deletions(-) delete mode 100644 web/src/views/testTool/download.tsx diff --git a/web/src/layout/navBars/breadcrumb/user.vue b/web/src/layout/navBars/breadcrumb/user.vue index 61793c97..c948a870 100644 --- a/web/src/layout/navBars/breadcrumb/user.vue +++ b/web/src/layout/navBars/breadcrumb/user.vue @@ -93,7 +93,7 @@ {{ $t('message.user.dropdown1') }} {{ $t('message.user.dropdown2') }} - {{ $t('message.user.dropdown6') }} + {{ $t('message.user.dropdown5') }} diff --git a/web/src/layout/upgrade/index.vue b/web/src/layout/upgrade/index.vue index 9419fcc9..ec744ad1 100644 --- a/web/src/layout/upgrade/index.vue +++ b/web/src/layout/upgrade/index.vue @@ -81,7 +81,7 @@ const delayShow = () => { }; // 页面加载时 onMounted(() => { - delayShow(); + // delayShow(); // 不显示更新 setTimeout(() => { state.btnTxt = t('message.upgrade.btnTwo'); }, 200); diff --git a/web/src/views/system/login/index.vue b/web/src/views/system/login/index.vue index dbaf0611..f35c048f 100644 --- a/web/src/views/system/login/index.vue +++ b/web/src/views/system/login/index.vue @@ -33,11 +33,11 @@ --> - + diff --git a/web/src/views/testTool/download.tsx b/web/src/views/testTool/download.tsx deleted file mode 100644 index 4214fd52..00000000 --- a/web/src/views/testTool/download.tsx +++ /dev/null @@ -1,74 +0,0 @@ -import axios from "axios" -import * as auth from '@/utils/auth.js' -let ajax = axios.create({ -    baseURL: process.env.VUE_APP_BASE_API, -    timeout: 100000 -}); -ajax.interceptors.request.use(config => { -        config.headers = { -            Authorization: auth.getToken(), -            // OrgId: auth.getUser().orgId, -            // UserId: auth.getUser().id, -        } -        return config -    }, -    err => { -        return Promise.reject(err) -    }) -let downloadFile = async (url, formData, options) => { -    await ajax.post(url, formData, {responseType: 'arraybuffer'}).then(resp => download(resp, options)) -} -let getFile = async (url, options) => { -    await ajax.get(url, {responseType: 'blob'}).then(resp => download(resp, options)) -} -let download = (resp, options) => { -    let blob = new Blob([resp.data], {type: options.fileType ? options.fileType : 'application/octet-binary'}) -    //创建下载的链接 -    let href = window.URL.createObjectURL(blob) -    downloadBlob(href, options.fileName) -} -let downloadBlob = (blobUrl, fileName, revokeObjectURL) => { -    let downloadElement = document.createElement('a') -    downloadElement.href = blobUrl -    //下载后文件名 -    downloadElement.download = fileName -    document.body.appendChild(downloadElement) -    //点击下载 -    downloadElement.click() -    //下载完成移除元素 -    document.body.removeChild(downloadElement) -    if (revokeObjectURL == null || revokeObjectURL) { -        //释放掉blob对象 -        window.URL.revokeObjectURL(blobUrl) -    } -} -let getDownloadFileUrl = async (url, fileType) => { -    let blob -    await ajax.get(url, {responseType: 'blob'}).then(resp => { -        blob = new Blob([resp.data], {type: fileType ? fileType : 'application/octet-binary'}); -    }) -    return window.URL.createObjectURL(blob); -} -let getDownloadFileUrlByPost = async (url, data, fileType) => { -    let blob -    await ajax.post(url, data, {responseType: 'blob'}).then(resp => { -        blob = new Blob([resp.data], {type: fileType ? fileType : 'application/octet-binary'}); -    }) -    return window.URL.createObjectURL(blob); -} -let getDownloadFileBlob = async (url, fileType) => { -    let blob -    await ajax.get(url, {responseType: 'blob'}).then(resp => { -        blob = new Blob([resp.data], {type: fileType ? fileType : 'application/octet-binary'}); -    }) -    return blob; -} -export default { -    ajax, -    downloadFile, -    getFile, -    getDownloadFileUrl, -    getDownloadFileUrlByPost, -    getDownloadFileBlob, -    downloadBlob -} \ No newline at end of file -- Gitee From 846e82d0293175a687ade833d8029a098b0eb14e Mon Sep 17 00:00:00 2001 From: lxy <10179281+lxy0722@user.noreply.gitee.com> Date: Thu, 4 Jul 2024 14:49:32 +0800 Subject: [PATCH 07/45] =?UTF-8?q?=E4=BF=AE=E6=94=B9=E7=99=BB=E5=BD=95?= =?UTF-8?q?=E9=A1=B5=E9=85=8D=E7=BD=AE?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- web/index.html | 20 ++++++------ web/public/backend_logo.jpeg | Bin 0 -> 619332 bytes web/public/logo.png | Bin 0 -> 50808 bytes web/src/layout/footer/index.vue | 2 +- .../views/system/login/component/account.vue | 30 +++++++++++++++++- web/src/views/system/login/index.vue | 30 +++++++++++------- 6 files changed, 58 insertions(+), 24 deletions(-) create mode 100644 web/public/backend_logo.jpeg create mode 100644 web/public/logo.png diff --git a/web/index.html b/web/index.html index 9515e84b..4010d649 100644 --- a/web/index.html +++ b/web/index.html @@ -6,25 +6,25 @@ - django-vue-admin + 海盈智联
diff --git a/web/public/backend_logo.jpeg b/web/public/backend_logo.jpeg new file mode 100644 index 0000000000000000000000000000000000000000..a9866ed0f8fcaab85dc9522a7a34b5033cea05db GIT binary patch literal 619332 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 !=cbdr>MKdqkf1Wu?|1WGzrTB#W8p4gxE}vo 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 rtHI)b-7zB`b$$(*I{=61t(B+Gg+66 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

U0mTbVlG| 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

OrQ&w}p}5*tO}L;9&4 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 literal 0 HcmV?d00001 diff --git a/web/public/logo.png b/web/public/logo.png new file mode 100644 index 0000000000000000000000000000000000000000..49b4cb5fd4ce86bec32a92a9d756b584c7505163 GIT binary patch literal 50808 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 literal 0 HcmV?d00001 diff --git a/web/src/layout/footer/index.vue b/web/src/layout/footer/index.vue index 56dd4ba5..adc0ce8d 100644 --- a/web/src/layout/footer/index.vue +++ b/web/src/layout/footer/index.vue @@ -2,7 +2,7 @@

diff --git a/web/src/views/system/login/component/account.vue b/web/src/views/system/login/component/account.vue index ee4e64fa..116b6264 100644 --- a/web/src/views/system/login/component/account.vue +++ b/web/src/views/system/login/component/account.vue @@ -216,9 +216,36 @@ export default defineComponent({ + diff --git a/web/src/views/system/login/index.vue b/web/src/views/system/login/index.vue index f35c048f..862cfb8c 100644 --- a/web/src/views/system/login/index.vue +++ b/web/src/views/system/login/index.vue @@ -23,7 +23,7 @@ getThemeConfig.globalTitle }} 欢迎您! -
@@ -120,6 +120,12 @@ onMounted(() => { -- Gitee From 7e2158975f003bbba20131d291e18c10deab679c Mon Sep 17 00:00:00 2001 From: lxy <10179281+lxy0722@user.noreply.gitee.com> Date: Fri, 23 Aug 2024 17:28:47 +0800 Subject: [PATCH 29/45] =?UTF-8?q?=E7=89=A9=E6=96=99=E7=AE=A1=E7=90=86?= =?UTF-8?q?=E6=A8=A1=E5=9D=97=E5=A2=9E=E5=8A=A0=E5=AF=BC=E5=87=BA=E5=8A=9F?= =?UTF-8?q?=E8=83=BD=E3=80=81=E7=94=B3=E8=AF=B7=E7=89=A9=E6=96=99=E8=A1=8C?= =?UTF-8?q?=E9=80=A0=E4=BD=9C=E6=8C=89=E9=92=AE=E5=8A=A8=E6=80=81=E8=AE=A1?= =?UTF-8?q?=E7=AE=97=E6=98=BE=E7=A4=BA?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- backend/app/material/models.py | 25 +-- backend/app/material/serializers.py | 101 ++++++++++++ backend/app/material/views.py | 111 +++++++++++-- web/src/views/materialApplyFor/api.ts | 2 +- web/src/views/materialApplyFor/crud.tsx | 174 +++++++++++++++----- web/src/views/materialApplyFor/index.vue | 11 +- web/src/views/materialBase/crud.tsx | 15 ++ web/src/views/materialInventory/crud.tsx | 17 ++ web/src/views/materialOperationlog/crud.tsx | 51 ++---- 9 files changed, 397 insertions(+), 110 deletions(-) diff --git a/backend/app/material/models.py b/backend/app/material/models.py index 7f110731..5f137ee1 100644 --- a/backend/app/material/models.py +++ b/backend/app/material/models.py @@ -18,20 +18,21 @@ class MaterialBaseInfo(CoreModel, SoftDeleteModel): class Meta: db_table = table_prefix + "material" - verbose_name = "维修物料基础信息管理" + verbose_name = "物料基础信息管理" verbose_name_plural = verbose_name ordering = ("-create_datetime", "-update_datetime") class MaterialInventory(CoreModel): number = models.IntegerField(default=0, verbose_name="剩余库存", help_text="剩余库存") - """ - 0: 安全库存 - 1: 及时补充库存 - 2: 紧急补充库存 - 3: 无库存 - """ - safety_stock_level = models.IntegerField(default=3, null=True, blank=True, verbose_name="剩余安全库存等级", help_text="剩余安全库存等级") + SAFETY_STOCK_LEVEL = ( + (0, "安全库存"), + (1, "及时补充库存"), + (2, "紧急补充库存"), + (3, "无库存"), + ) + safety_stock_level = models.IntegerField(default=3, choices=SAFETY_STOCK_LEVEL, null=True, blank=True, + verbose_name="剩余安全库存等级", help_text="剩余安全库存等级") code = models.OneToOneField( to="MaterialBaseInfo", on_delete=models.PROTECT, @@ -43,7 +44,7 @@ class MaterialInventory(CoreModel): class Meta: db_table = table_prefix + "material_inventory" - verbose_name = "维修物料库存数量管理" + verbose_name = "物料库存数量管理" verbose_name_plural = verbose_name ordering = ("-create_datetime", "-update_datetime") @@ -53,7 +54,7 @@ class MaterialRecords(CoreModel): (0, "入库"), (1, "出库"), ) - record_type = models.CharField(choices=RECORD_TYPE, max_length=255, null=True, blank=True, verbose_name="出入库类型", help_text="出入库类型") + record_type = models.IntegerField(choices=RECORD_TYPE, null=True, blank=True, verbose_name="出入库类型", help_text="出入库类型") receive_name = models.CharField(max_length=255, null=True, blank=True, verbose_name="领用人", help_text="领用人") number = models.IntegerField(null=True, blank=True, verbose_name="数量", help_text="数量") code = models.ForeignKey( @@ -66,7 +67,7 @@ class MaterialRecords(CoreModel): class Meta: db_table = table_prefix + "material_number_records" - verbose_name = "维修物料出入库记录" + verbose_name = "物料出入库记录" verbose_name_plural = verbose_name ordering = ("-create_datetime", "-update_datetime") @@ -95,6 +96,6 @@ class MaterialApplyFor(CoreModel): class Meta: db_table = table_prefix + "material_apply_for" - verbose_name = "维修物料申请" + verbose_name = "物料申请" verbose_name_plural = verbose_name ordering = ("-create_datetime", "-update_datetime") diff --git a/backend/app/material/serializers.py b/backend/app/material/serializers.py index 8e3a1967..aac8161f 100644 --- a/backend/app/material/serializers.py +++ b/backend/app/material/serializers.py @@ -9,6 +9,20 @@ from app.material.models import MaterialBaseInfo, MaterialInventory, MaterialRec from dvadmin.utils.serializers import CustomModelSerializer from dvadmin.system.models import Users +RECORD_TYPE = {} +for i in MaterialRecords.RECORD_TYPE: + RECORD_TYPE[i[0]] = i[1] + + +EXAMINE_TYPE = {} +for i in MaterialApplyFor.EXAMINE_TYPE: + EXAMINE_TYPE[i[0]] = i[1] + + +SAFETY_STOCK_LEVEL = {} +for i in MaterialInventory.SAFETY_STOCK_LEVEL: + SAFETY_STOCK_LEVEL[i[0]] = i[1] + class MaterialBaseInfoSerializer(CustomModelSerializer): @@ -26,6 +40,17 @@ class MaterialBaseInfoUpdateSerializer(CustomModelSerializer): fields = "__all__" +class MaterialBaseInfoExportSerializer(CustomModelSerializer): + type = serializers.CharField(read_only=True) + name = serializers.CharField(read_only=True) + code = serializers.CharField(read_only=True) + user_name = serializers.CharField(source='creator.name', read_only=True) + + class Meta: + model = MaterialBaseInfo + fields = "__all__" + + class MaterialInventoryCreateSerializer(CustomModelSerializer): class Meta: @@ -33,6 +58,27 @@ class MaterialInventoryCreateSerializer(CustomModelSerializer): fields = "__all__" +class MaterialInventoryExportSerializer(CustomModelSerializer): + type = serializers.CharField(source='code.type', read_only=True) + name = serializers.CharField(source='code.name', read_only=True) + code = serializers.CharField(source='code.code', read_only=True) + specification = serializers.CharField(source='code.specification', read_only=True) + safety_stock = serializers.CharField(source='code.safety_stock', read_only=True) + storage_location = serializers.CharField(source='code.storage_location', read_only=True) + user_name = serializers.CharField(source='creator.name', read_only=True) + safety_stock_level = serializers.SerializerMethodField(read_only=True) + + class Meta: + model = MaterialInventory + fields = "__all__" + + def get_safety_stock_level(self, instance): + if not hasattr(instance, "safety_stock_level") or instance.safety_stock_level not in SAFETY_STOCK_LEVEL: + return None + + return SAFETY_STOCK_LEVEL[instance.safety_stock_level] + + class MaterialInventorySerializer(CustomModelSerializer): type = serializers.CharField(source='code.type', read_only=True) name = serializers.CharField(source='code.name', read_only=True) @@ -51,6 +97,27 @@ class MaterialRecordsUpdateSerializer(CustomModelSerializer): fields = "__all__" +class MaterialRecordsExportSerializer(CustomModelSerializer): + type = serializers.CharField(source='code.type', read_only=True) + name = serializers.CharField(source='code.name', read_only=True) + code = serializers.CharField(source='code.code', read_only=True) + specification = serializers.CharField(source='code.specification', read_only=True) + safety_stock = serializers.CharField(source='code.safety_stock', read_only=True) + storage_location = serializers.CharField(source='code.storage_location', read_only=True) + user_name = serializers.CharField(source='creator.name', read_only=True) + record_type = serializers.SerializerMethodField(read_only=True) + + class Meta: + model = MaterialRecords + fields = "__all__" + + def get_record_type(self, instance): + if not hasattr(instance, "record_type") or instance.record_type not in RECORD_TYPE: + return None + + return RECORD_TYPE[instance.record_type] + + class MaterialRecordsSerializer(CustomModelSerializer): type = serializers.CharField(source='code.type', read_only=True) name = serializers.CharField(source='code.name', read_only=True) @@ -88,6 +155,40 @@ class MaterialApplyForSerializer(CustomModelSerializer): return None +class MaterialApplyForExportSerializer(CustomModelSerializer): + type = serializers.CharField(source='code.type', read_only=True) + name = serializers.CharField(source='code.name', read_only=True) + code = serializers.CharField(source='code.code', read_only=True) + specification = serializers.CharField(source='code.specification', read_only=True) + safety_stock = serializers.CharField(source='code.safety_stock', read_only=True) + storage_location = serializers.CharField(source='code.storage_location', read_only=True) + user_name = serializers.CharField(source='creator.name', read_only=True) + examine_user_name = serializers.SerializerMethodField(method_name='get_examine_user_name', read_only=True) + examine_status = serializers.SerializerMethodField(method_name='get_examine_status', read_only=True) + + class Meta: + model = MaterialApplyFor + fields = "__all__" + + def get_examine_user_name(self, instance): + if not hasattr(instance, "examine_user"): + return None + queryset = ( + Users.objects.filter(id=instance.examine_user) + .values_list("name", flat=True) + .first() + ) + if queryset: + return queryset + return None + + def get_examine_status(self, instance): + if not hasattr(instance, "examine_status") or instance.examine_status not in EXAMINE_TYPE: + return None + + return EXAMINE_TYPE[instance.examine_status] + + class MaterialApplyForCreateSerializer(CustomModelSerializer): class Meta: diff --git a/backend/app/material/views.py b/backend/app/material/views.py index 49c604bd..06336a0e 100644 --- a/backend/app/material/views.py +++ b/backend/app/material/views.py @@ -9,8 +9,6 @@ from django.db import transaction from rest_framework.filters import BaseFilterBackend from dvadmin.utils.permission import CustomPermission -from application import dispatch -from app.material.models import MaterialBaseInfo, MaterialInventory, MaterialRecords, MaterialApplyFor from dvadmin.utils.json_response import DetailResponse, SuccessResponse, ErrorResponse from dvadmin.utils.viewset import CustomModelViewSet @@ -44,11 +42,30 @@ class CustomModelFilterBanked(BaseFilterBackend): class MaterialBaseInfoViewSet(CustomModelViewSet): """ - 物料基本信息 + 物料基本信息接口 + list:查询 + create:新增 + update:修改 + retrieve:单例 + destroy:删除 + get_material_type:获取所有物料类型 + get_material_name:获取所有物料类型名称 + get_id:根据id获取物料信息 """ queryset = MaterialBaseInfo.objects.all() serializer_class = MaterialBaseInfoSerializer update_serializer_class = MaterialBaseInfoUpdateSerializer + export_field_label = { + 'type': "物料类型", + 'name': "物料名称", + 'code': "物料编码", + 'safety_stock': "安全库存", + 'storage_location': "存放位置", + 'user_name': "创建人", + 'create_datetime': "创建时间", + 'update_datetime': "更新时间", + } + export_serializer_class = MaterialBaseInfoExportSerializer @transaction.atomic def create(self, request, *args, **kwargs): @@ -65,18 +82,20 @@ class MaterialBaseInfoViewSet(CustomModelViewSet): except: return ErrorResponse(msg='type参数类型错误') + # 当天 00:00:00:00 - 23:59:59:999999 today = datetime.date.today() + today = datetime.datetime(today.year, today.month, today.day, 0, 0, 0, 0) + tomorrow = datetime.datetime(today.year, today.month, today.day, 23, 59, 59, 999999) + # tomorrow = today + datetime.timedelta(hours=23, minutes=59, seconds=59) + + # 删选当天创建的数据, 删除的数据不进行过滤 + count = MaterialBaseInfo.objects.filter(create_datetime__range=(today, tomorrow), is_deleted=None) + # 生成物料编码 - material_code = str(MaterialBaseInfo.objects.latest('id').id + 1).zfill(4) - # material_code = str(self.get_queryset().filter(type=material_type).count() + 1).zfill(8) - # material_code = MaterialBaseInfo.objects.filter(update_datetime__range=(today, today), is_deleted=1) - # # material_code = MaterialBaseInfo.objects.filter(update_datetime=today, is_deleted=1) - # print(material_code) - # print() - # print(MaterialBaseInfo._meta.auto_field) - # print(dir(MaterialBaseInfo._meta.auto_field)) + material_code = str(count.count() + 1).zfill(4) + # 补充物料编码 - request.data['code'] = f"HY-{today.year}{today.month}{today.day}-{material_code}" + request.data['code'] = f"HY-{today.strftime('%Y%m%d')}-{material_code}" queryset = MaterialBaseInfo.objects.filter(name=request.data["name"], is_deleted=None) @@ -185,11 +204,30 @@ class MaterialBaseInfoViewSet(CustomModelViewSet): class MaterialInventoryViewSet(CustomModelViewSet): """ - 物料库存 + 物料库存管理接口 + list:查询 + create:新增 + update:修改 + retrieve:单例 + destroy:删除 + get_all_user:获取所有用户 """ queryset = MaterialInventory.objects.all() serializer_class = MaterialInventorySerializer extra_filter_class = [CoreModelFilterBankend, DataLevelPermissionsFilter, CustomModelFilterBanked] + export_field_label = { + 'type': "物料类型", + 'name': "物料名称", + 'code': "物料编码", + "number": "剩余库存", + 'safety_stock': "安全库存", + "safety_stock_level": "剩余库存等级", + 'storage_location': "存放位置", + 'user_name': "创建人", + 'create_datetime': "创建时间", + 'update_datetime': "更新时间", + } + export_serializer_class = MaterialInventoryExportSerializer def create(self, request, *args, **kwargs): @@ -270,22 +308,65 @@ class MaterialInventoryViewSet(CustomModelViewSet): class MaterialRecordsViewSet(CustomModelViewSet): """ - 物料基本信息 + 物料出入库记录接口 + list:查询 + create:新增 + update:修改 + retrieve:单例 + destroy:删除 """ queryset = MaterialRecords.objects.all() serializer_class = MaterialRecordsSerializer extra_filter_class = [CoreModelFilterBankend, DataLevelPermissionsFilter, CustomModelFilterBanked] + export_field_label = { + 'type': "物料类型", + 'name': "物料名称", + 'code': "物料编码", + 'safety_stock': "安全库存", + 'storage_location': "存放位置", + "number": "数量", + "record_type": "操作类型", + "receive_name": "领用人", + 'user_name': "创建人", + 'create_datetime': "创建时间", + 'update_datetime': "更新时间", + } + export_serializer_class = MaterialRecordsExportSerializer class MaterialApplyForViewSet(CustomModelViewSet): """ - 物料基本信息 + 物料申请接口 + list:查询 + create:新增 + update:修改 + retrieve:单例 + destroy:删除 + revocation:撤销申请 + examine:审核申请 + dismissal:驳回申请 """ queryset = MaterialApplyFor.objects.all() serializer_class = MaterialApplyForSerializer create_serializer_class = MaterialApplyForCreateSerializer extra_filter_class = [CoreModelFilterBankend, DataLevelPermissionsFilter, CustomModelFilterBanked] + export_field_label = { + 'type': "物料类型", + 'name': "物料名称", + 'code': "物料编码", + 'safety_stock': "安全库存", + 'storage_location': "存放位置", + "number": "申请数量", + 'user_name': "申请人", + 'reason': "申请原因", + "examine_status": "审核状态", + "examine_user_name": "审核人", + 'url': "申请链接", + 'create_datetime': "创建时间", + 'update_datetime': "更新时间", + } + export_serializer_class = MaterialApplyForExportSerializer def create(self, request, *args, **kwargs): diff --git a/web/src/views/materialApplyFor/api.ts b/web/src/views/materialApplyFor/api.ts index 0570b280..a383261f 100644 --- a/web/src/views/materialApplyFor/api.ts +++ b/web/src/views/materialApplyFor/api.ts @@ -1,6 +1,6 @@ import { Stream } from 'stream'; import { request, downloadFile } from '/@/utils/service'; -import { UserPageQuery, AddReq, DelReq, EditReq, InfoReq } from '@fast-crud/fast-crud'; +import { PageQuery, UserPageQuery, AddReq, DelReq, EditReq, InfoReq } from '@fast-crud/fast-crud'; import { getBaseURL } from '/@/utils/baseUrl' export const apiPrefix = 'api/material/apply_for/'; diff --git a/web/src/views/materialApplyFor/crud.tsx b/web/src/views/materialApplyFor/crud.tsx index 023daf1f..404da81f 100644 --- a/web/src/views/materialApplyFor/crud.tsx +++ b/web/src/views/materialApplyFor/crud.tsx @@ -10,14 +10,60 @@ import {auth} from "/@/utils/authFunction"; import {customCrudConfig} from "/@/utils/customCrudMaterial"; import {createCrudOptions as UserCreateCrudOptions} from '/@/views/user/curd'; -// import * as UserTableApi from '/@//views/user/api'; + import {createCrudOptions as MaterialBasecreateCrudOptions} from '/@/views/materialBase/crud'; import * as materialBaseTableApi from '/@/views/materialBase/api'; -import { ref } from "vue"; +import * as UsereApi from '/@/views/system/personal/api'; + +import { reactive, ref } from "vue"; +import { useCompute } from "@fast-crud/fast-crud"; +import { da } from 'element-plus/es/locale'; +var user_id = -1; + +const state = reactive({ + newsInfoList: [], + personalForm: { + avatar: '', + username: '', + name: '', + email: '', + mobile: '', + gender: '', + dept_info: { + dept_id: 0, + dept_name: '', + }, + role_info: [ + { + id: 0, + name: '', + }, + ], + }, +}); + + +var UserInfo = {id: -1, is_superuser: false} + +export const getUserInfo = function () { + UsereApi.GetUserInfo({}).then((res: any) => { + // const { data } = res; + UserInfo = res.data + // state.personalForm.creator = data.avatar || ''; + // state.personalForm.avatar = data.avatar || ''; + // state.personalForm.username = data.username || ''; + // state.personalForm.name = data.name || ''; + // state.personalForm.email = data.email || ''; + // state.personalForm.mobile = data.mobile || ''; + // state.personalForm.gender = data.gender; + // state.personalForm.dept_info.dept_name = data.dept_info.dept_name || ''; + // state.personalForm.role_info = data.role_info || []; + }); +}; export const createCrudOptions = function ({ crudExpose, context}: CreateCrudOptionsProps): CreateCrudOptionsRet { - const api_address = "api/material/apply_for/operation/" + const {compute} = useCompute() const pageRequest = async (query: UserPageQuery) => { return await api.GetList(query); }; @@ -31,6 +77,10 @@ export const createCrudOptions = function ({ crudExpose, context}: CreateCrudOpt const addRequest = async ({ form }: AddReq) => { return await api.AddObj(form); }; + const exportRequest = async (query: UserPageQuery) => { + return await api.exportData(query); + }; + const selectedIds = ref([]); const onSelectionChange = (changed) => { @@ -65,6 +115,16 @@ export const createCrudOptions = function ({ crudExpose, context}: CreateCrudOpt show: auth('materialApply:Create'), text: "申请", }, + export: { + icon: "Upload", + style:{backgroundColor: "#6495ED", color: "white"}, + text: '导出', //按钮文字 + title: '导出', //鼠标停留显示的信息 + show: auth('materialApply:Export'), + click() { + return exportRequest(crudExpose!.getSearchFormData()); + }, + }, examine: { text: "审核通过", icon: "SuccessFilled", @@ -174,14 +234,30 @@ export const createCrudOptions = function ({ crudExpose, context}: CreateCrudOpt text: "重新申请", size: "small", style:{backgroundColor: "#8A2BE2", color: "white"}, - show: auth('materialApply:Update'), + show: compute(({row})=>{ + if (auth('materialApply:Update') === false) { + return false + } + if (row.creator !== UserInfo.id && UserInfo.is_superuser !== true) { + return false + } + return true + }), }, remove: { order: 5, iconRight: 'Delete', text: "删除申请", size: "small", - show: auth('materialApply:Delete'), + show: compute(({row})=>{ + if (auth('materialApply:Delete') === false) { + return false + } + if (row.creator !== UserInfo.id && UserInfo.is_superuser !== true) { + return false + } + return true + }), }, view: { order: 0, @@ -201,7 +277,6 @@ export const createCrudOptions = function ({ crudExpose, context}: CreateCrudOpt size: "small", style:{backgroundColor: "#32CD32", color: "white"}, click: async ({row}) => { - console.log(row.examine_status) if (row.examine_status != 1){ errorMessage('当前状态不允许审核') return false @@ -226,6 +301,10 @@ export const createCrudOptions = function ({ crudExpose, context}: CreateCrudOpt return false } const {value} = await ElMessageBox.prompt("请输入驳回原因!", "审核提示"); + if (value == "" || value == null) { + errorMessage("请输入驳回原因!") + return + } updateRequest({"ids": [row.id], "examine_opinion": value}, "dismissal") } }, @@ -236,7 +315,15 @@ export const createCrudOptions = function ({ crudExpose, context}: CreateCrudOpt text: "撤销申请", title: "撤销申请", size: "small", - show: auth('materialApply:Revocation'), + show: compute(({row})=>{ + if (auth('materialApply:Revocation') === false) { + return false + } + if (row.creator !== UserInfo.id && UserInfo.is_superuser !== true) { + return false + } + return true + }), style:{backgroundColor: "#EEC900", color: "white"}, click: async ({row}) => { if (row.examine_status !== 1){ @@ -397,24 +484,6 @@ export const createCrudOptions = function ({ crudExpose, context}: CreateCrudOpt }, }, }, - examine_user_name: { - title: '审核人', - search: { - show: false, - }, - type: 'text', - column:{ - align: 'center', - sortable: true, - width: 120, - }, - form: { - show: false - }, - viewForm: { - show: true - } - }, examine_status: { title: '审核状态', search: { @@ -436,24 +505,6 @@ export const createCrudOptions = function ({ crudExpose, context}: CreateCrudOpt show: true } }, - examine_opinion: { - title: '审核意见', - search: { - show: false, - }, - type: 'text', - column:{ - align: 'center', - sortable: true, - width: 150, - }, - form: { - show: false - }, - viewForm: { - show: true - } - }, reason: { title: '申请理由', search: { @@ -493,7 +544,24 @@ export const createCrudOptions = function ({ crudExpose, context}: CreateCrudOpt show: true }, }, - // ...commonCrudConfig({description: {form: false,table: false,search: false,}}), + examine_opinion: { + title: '审核意见', + search: { + show: false, + }, + type: 'text', + column:{ + align: 'center', + sortable: true, + width: 150, + }, + form: { + show: false + }, + viewForm: { + show: true + } + }, creator_name: { title: '申请人', type: "table-select", @@ -545,6 +613,24 @@ export const createCrudOptions = function ({ crudExpose, context}: CreateCrudOpt show: true }, }, + examine_user_name: { + title: '审核人', + search: { + show: false, + }, + type: 'text', + column:{ + align: 'center', + sortable: true, + width: 120, + }, + form: { + show: false + }, + viewForm: { + show: true + } + }, create_datetime: { title: '申请时间', type: 'datetime', diff --git a/web/src/views/materialApplyFor/index.vue b/web/src/views/materialApplyFor/index.vue index 1fc1efd5..0bc0d3c8 100644 --- a/web/src/views/materialApplyFor/index.vue +++ b/web/src/views/materialApplyFor/index.vue @@ -11,7 +11,10 @@ diff --git a/web/src/views/materialBase/crud.tsx b/web/src/views/materialBase/crud.tsx index 38d789af..cbb07d27 100644 --- a/web/src/views/materialBase/crud.tsx +++ b/web/src/views/materialBase/crud.tsx @@ -24,14 +24,29 @@ export const createCrudOptions = function ({ crudExpose }: CreateCrudOptionsProp return await api.AddObj(form); }; + const exportRequest = async (query: UserPageQuery) => { + return await api.exportData(query); + }; + return { crudOptions: { actionbar: { buttons: { add: { + icon: "CirclePlusFilled", show: auth('materialBaseInfo:Create'), text: '添加', }, + export: { + icon: "Upload", + style:{backgroundColor: "#6495ED", color: "white"}, + text: '导出', //按钮文字 + title: '导出', //鼠标停留显示的信息 + show: auth('materialBaseInfo:Export'), + click() { + return exportRequest(crudExpose!.getSearchFormData()); + }, + }, }, }, // tabs: { diff --git a/web/src/views/materialInventory/crud.tsx b/web/src/views/materialInventory/crud.tsx index b0e92329..03084bb0 100644 --- a/web/src/views/materialInventory/crud.tsx +++ b/web/src/views/materialInventory/crud.tsx @@ -26,6 +26,10 @@ export const createCrudOptions = function ({ crudExpose, context}: CreateCrudOpt const addRequest = async ({ form }: AddReq) => { return await api.AddObj(form); }; + const exportRequest = async (query: UserPageQuery) => { + return await api.exportData(query); + }; + const inRequest = async ( row : any) => { row.type = 0 row.number = 1 @@ -46,6 +50,16 @@ export const createCrudOptions = function ({ crudExpose, context}: CreateCrudOpt add: { show: false, }, + export: { + icon: "Upload", + style:{backgroundColor: "#6495ED", color: "white"}, + text: '导出', //按钮文字 + title: '导出', //鼠标停留显示的信息 + show: auth('materialInventory:Export'), + click() { + return exportRequest(crudExpose!.getSearchFormData()); + }, + }, }, }, // tabs: { @@ -89,6 +103,7 @@ export const createCrudOptions = function ({ crudExpose, context}: CreateCrudOpt show: false, }, in: { + icon: "CirclePlusFilled", style:{backgroundColor: "#32CD32", color: "white"}, text: '入库', show: auth('materialInventory:Update'), @@ -115,8 +130,10 @@ export const createCrudOptions = function ({ crudExpose, context}: CreateCrudOpt }, }, out: { + icon: "RemoveFilled", style:{backgroundColor: "#00BFFF", color: "white"}, text: '出库', + size: "100", show: auth('materialInventory:Update'), click: (ctx: any) => { let row = JSON.parse(JSON.stringify({"record_type": 1, 'id': ctx.row.id})); diff --git a/web/src/views/materialOperationlog/crud.tsx b/web/src/views/materialOperationlog/crud.tsx index 239d3747..db0c7f79 100644 --- a/web/src/views/materialOperationlog/crud.tsx +++ b/web/src/views/materialOperationlog/crud.tsx @@ -30,6 +30,10 @@ export const createCrudOptions = function ({ crudExpose }: CreateCrudOptionsProp const addRequest = async ({ form }: AddReq) => { return await api.AddObj(form); }; + const exportRequest = async (query: UserPageQuery) => { + return await api.exportData(query); + }; + return { crudOptions: { actionbar: { @@ -37,43 +41,16 @@ export const createCrudOptions = function ({ crudExpose }: CreateCrudOptionsProp add: { show: false, text: '添加', - // click(ctx) { - // let row = JSON.parse(JSON.stringify({"record_type": 0})); - // crudExpose.openEdit({row},{ - // columns: { - // number: { - // title: "入库数量", - // }, - // receive_name: { - // show: false - // }, - // description: { - // col: {span: 24}, - // show: true, - // }, - // }, - // wrapper:{ - // title:"物料入库" - // } - // }) - // crudExpose.openEdit({row},{ - // columns: { - // number: { - // title: "入库数量", - // }, - // receive_name: { - // show: false - // }, - // description: { - // col: {span: 24}, - // show: true, - // }, - // }, - // wrapper:{ - // title:"物料入库" - // } - // }) - // }, + }, + export: { + icon: "Upload", + style:{backgroundColor: "#6495ED", color: "white"}, + text: '导出', //按钮文字 + title: '导出', //鼠标停留显示的信息 + show: auth('materialOperationLog:Export'), + click() { + return exportRequest(crudExpose!.getSearchFormData()); + }, }, }, }, -- Gitee From 1ae32e614d6fd1553010c41867fd55a19761e55a Mon Sep 17 00:00:00 2001 From: lxy <10179281+lxy0722@user.noreply.gitee.com> Date: Sat, 24 Aug 2024 17:30:41 +0800 Subject: [PATCH 30/45] =?UTF-8?q?=E7=89=A9=E6=96=99=E7=AE=A1=E7=90=86?= =?UTF-8?q?=E7=B3=BB=E7=BB=9F=E7=94=B3=E8=AF=B7=E5=8D=95=E6=A8=A1=E5=9D=97?= =?UTF-8?q?=E5=A2=9E=E5=8A=A0=E6=B6=88=E6=81=AF=E9=80=9A=E7=9F=A5=E5=8A=9F?= =?UTF-8?q?=E8=83=BD?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- backend/app/material/models.py | 5 +- backend/app/material/views.py | 136 +++++++++++++++++++++-- web/src/App.vue | 11 ++ web/src/utils/customCrudMaterial.ts | 9 +- web/src/views/materialApplyFor/crud.tsx | 72 ++++-------- web/src/views/materialBase/api.ts | 12 +- web/src/views/materialBase/crud.tsx | 71 +++++++++++- web/src/views/materialInventory/crud.tsx | 59 ++++++++++ 8 files changed, 302 insertions(+), 73 deletions(-) diff --git a/backend/app/material/models.py b/backend/app/material/models.py index 5f137ee1..abca01cb 100644 --- a/backend/app/material/models.py +++ b/backend/app/material/models.py @@ -39,7 +39,8 @@ class MaterialInventory(CoreModel): # to_field="id", verbose_name="关联物料编码", help_text="关联物料编码", - default=None + default=None, + related_name="inventory", ) class Meta: @@ -63,6 +64,7 @@ class MaterialRecords(CoreModel): # to_field="code", verbose_name="关联物料编码", help_text="关联物料编码", + related_name="records", ) class Meta: @@ -92,6 +94,7 @@ class MaterialApplyFor(CoreModel): # to_field="code", verbose_name="关联物料编码", help_text="关联物料编码", + related_name="apply_for", ) class Meta: diff --git a/backend/app/material/views.py b/backend/app/material/views.py index 06336a0e..282727be 100644 --- a/backend/app/material/views.py +++ b/backend/app/material/views.py @@ -1,22 +1,45 @@ import os import datetime - +from django.db import transaction from rest_framework.decorators import action from rest_framework.permissions import IsAuthenticated - -from django.db import transaction from rest_framework.filters import BaseFilterBackend -from dvadmin.utils.permission import CustomPermission from dvadmin.utils.json_response import DetailResponse, SuccessResponse, ErrorResponse - from dvadmin.utils.viewset import CustomModelViewSet +from dvadmin.utils.permission import CustomPermission from dvadmin.utils.filters import DataLevelPermissionsFilter, CoreModelFilterBankend +from dvadmin.system.models import Users, Role, MenuButton, RoleMenuButtonPermission + +from dvadmin.system.views.message_center import websocket_push from app.material.serializers import * +class GetPermissionUsers: + def __init__(self, request, *args, **kwargs): + self.request = request + + def get_permission_role(self, url='/api/material/apply_for/operation/examine/', method=2): + + queryset = RoleMenuButtonPermission.objects.filter(menu_button__api=url, menu_button__method=method) + + return queryset.values_list("role_id", flat=True) + + def get_permission_users(self, role_id): + users = Users.objects.filter(role__in=role_id, is_superuser=False, is_active=True).exclude(id=self.request.user.id) + + return users.values_list("id", flat=True) + + def get_users(self, api_url, method): + roles = self.get_permission_role(api_url, method) + if not roles: + return [] + + return self.get_permission_users(roles) + + class CustomModelFilterBanked(BaseFilterBackend): """ 自定义过滤器 @@ -97,12 +120,12 @@ class MaterialBaseInfoViewSet(CustomModelViewSet): # 补充物料编码 request.data['code'] = f"HY-{today.strftime('%Y%m%d')}-{material_code}" - queryset = MaterialBaseInfo.objects.filter(name=request.data["name"], is_deleted=None) - # 判断是否有删除记录 + queryset = MaterialBaseInfo.objects.filter(name=request.data["name"], is_deleted=True) if queryset.count() > 0: instance = queryset[0] + """ 没有设置的字段设置为None """ @@ -161,21 +184,65 @@ class MaterialBaseInfoViewSet(CustomModelViewSet): # 保存 inventory_obj.save() + if getattr(inventory_obj, '_prefetched_objects_cache', None): + # If 'prefetch_related' has been applied to a queryset, we need to + # forcibly invalidate the prefetch cache on the instance. + inventory_obj._prefetched_objects_cache = {} + return data + def list(self, request, *args, **kwargs): + """" + 前端code字段多页面共用,查询时返回关联的id字段 + """ + if code := request.query_params.get("code", ""): + queryset = self.get_queryset().filter(id=code) + + page = self.paginate_queryset(queryset) + if page is not None: + serializer = self.get_serializer(page, many=True, request=request) + return self.get_paginated_response(serializer.data) + + serializer = self.get_serializer(queryset, many=True) + return SuccessResponse(data=serializer.data) + + return super().list(request, *args, **kwargs) + def destroy(self, request, *args, **kwargs): """ 物料删除 """ instance = self.get_object() - instance_inventory = MaterialInventory.objects.get(code=instance.id) - if instance_inventory.number > 0: - return ErrorResponse(msg=f'该物料还有库存: {instance_inventory.number},禁止删除!!!') + if instance.inventory.number > 0: + return ErrorResponse(msg=f'该物料还有库存: {instance.inventory.number},禁止删除!!!') instance.delete() return DetailResponse(data=[], msg="删除成功") + @action(methods=['delete'], detail=False, permission_classes=[CustomPermission]) + def multiple_delete(self, request, *args, **kwargs): + + request_data = request.data + keys = request_data.get('keys', None) + if not keys: + return ErrorResponse(msg="未获取到keys字段") + + instances = [] + err_msg = [] + for instance in self.get_queryset().filter(id__in=keys): + instances.append(instance) + if instance.inventory.number > 0: + err_msg.append(f'物料编码:{instance.code}还有库存: {instance.inventory.number},禁止删除!!!') + # return ErrorResponse(msg=f'该物料:{instance.name}还有库存: {instance.inventory.number},禁止删除!!!') + if err_msg: + return ErrorResponse(msg=err_msg) + + for instance in instances: + instance.delete() + + return DetailResponse(data=[], msg=f"{len(instances)}条记录已删除") + @action(methods=['get'], detail=False, permission_classes=[IsAuthenticated]) def get_material_type(self, request, *args, **kwargs): data = [] @@ -297,6 +364,7 @@ class MaterialInventoryViewSet(CustomModelViewSet): elif 1 <= inventory <= safety_stock: level = 2 return level + # path('inventory/get_all_user/', MaterialInventoryViewSet.as_view({'get': 'get_all_user'})), @action(methods=['get'], detail=False, permission_classes=[]) @@ -380,16 +448,47 @@ class MaterialApplyForViewSet(CustomModelViewSet): data = super().create(request, *args, **kwargs) + for user_id in GetPermissionUsers(request).get_users('/api/material/apply_for/operation/examine/', 2): + websocket_push(user_id, message={ + "sender": 'system', + "contentType": 'MATERIAL', + "content": f'{request.user.name}提交了新的物料申请, 请及时查看', + "unread": 1}) + return DetailResponse(data=data.data, msg="申请成功") def update(self, request, *args, **kwargs): + if request.data['examine_status'] not in [1, 2, 3]: return ErrorResponse(msg='当前状态不允许重新申请') request.data['examine_status'] = 1 # 设置为待审核状态 request.data['examine_opinion'] = None # 设置审核意见为None + request.data['examine_user'] = None # 设置审核人为None - return super().update(request, *args, **kwargs) + partial = kwargs.pop('partial', False) + + instance = self.get_object() + if instance.creator.id != request.user.id: + return ErrorResponse(msg='只能由“申请用户”重新修改提交') + + serializer = self.get_serializer(instance, data=request.data, request=request, partial=partial) + serializer.is_valid(raise_exception=True) + 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 = {} + + for user_id in GetPermissionUsers(request).get_users('/api/material/apply_for/operation/examine/', 2): + websocket_push(user_id, message={ + "sender": 'system', + "contentType": 'MATERIAL', + "content": f'{request.user.name}重新提交了物料申请, 请及时查看', + "unread": 1}) + + return DetailResponse(data=serializer.data, msg="重新提交成功") def destroy(self, request, *args, **kwargs): instance = self.get_object() @@ -436,6 +535,13 @@ class MaterialApplyForViewSet(CustomModelViewSet): # 一条数据不满足则不保存 for obj in queryset: + websocket_push(obj.creator.id, + message={ + "sender": 'system', + "contentType": 'MATERIAL', + "content": f'您提交的物料申请已通过审核!', + "unread": 1} + ) obj.save() return DetailResponse(msg=f'审核成功') @@ -456,7 +562,13 @@ class MaterialApplyForViewSet(CustomModelViewSet): # 一条数据不满足则不保存 for obj in queryset: + websocket_push(obj.creator.id, + message={ + "sender": 'system', + "contentType": 'MATERIAL', + "content": f'您提交的物料申请被驳回!驳回原因:{request.data["examine_opinion"]}!', + "unread": 1} + ) obj.save() return DetailResponse(msg='驳回申请成功') - diff --git a/web/src/App.vue b/web/src/App.vue index 56f585e2..d5d27814 100644 --- a/web/src/App.vue +++ b/web/src/App.vue @@ -106,6 +106,17 @@ watch( import { messageCenterStore } from '/@/stores/messageCenter'; const wsReceive = (message: any) => { const data = JSON.parse(message.data); + if (data.contentType === 'MATERIAL') { + ElNotification({ + title: '物料系统消息', + message: data.content, + type: 'info', + position: 'bottom-right', + duration: 0, + }); + return + } + const { unread } = data; const messageCenter = messageCenterStore(); messageCenter.setUnread(unread); diff --git a/web/src/utils/customCrudMaterial.ts b/web/src/utils/customCrudMaterial.ts index 8d59fe5f..c3b441f6 100644 --- a/web/src/utils/customCrudMaterial.ts +++ b/web/src/utils/customCrudMaterial.ts @@ -13,7 +13,7 @@ addTypes({ } }) -export const customCrudConfig = () => { +export const customCrudConfig = (crudExpose: {}) => { return { type: { @@ -37,6 +37,12 @@ export const customCrudConfig = () => { label: 'type', cache: true, }), + // addForm: { + // // 添加表单时,不清空数据 + // valueChange({ form, value, getComponentRef }) { + + // } + // }, form: { show: true, component: { @@ -58,7 +64,6 @@ export const customCrudConfig = () => { valueChange({ form, value, getComponentRef }) { form.name = ""; // 将“name”的值置空 form.code = ""; // 将“code”的值置空 - getComponentRef("name").reloadDict(); // 触发“city”重新加载字典 getComponentRef("code").reloadDict(); // 触发“city”重新加载字典 // if (value) { diff --git a/web/src/views/materialApplyFor/crud.tsx b/web/src/views/materialApplyFor/crud.tsx index 404da81f..019cf3c0 100644 --- a/web/src/views/materialApplyFor/crud.tsx +++ b/web/src/views/materialApplyFor/crud.tsx @@ -16,49 +16,15 @@ import * as materialBaseTableApi from '/@/views/materialBase/api'; import * as UsereApi from '/@/views/system/personal/api'; -import { reactive, ref } from "vue"; +import { ref } from "vue"; import { useCompute } from "@fast-crud/fast-crud"; -import { da } from 'element-plus/es/locale'; -var user_id = -1; - -const state = reactive({ - newsInfoList: [], - personalForm: { - avatar: '', - username: '', - name: '', - email: '', - mobile: '', - gender: '', - dept_info: { - dept_id: 0, - dept_name: '', - }, - role_info: [ - { - id: 0, - name: '', - }, - ], - }, -}); var UserInfo = {id: -1, is_superuser: false} export const getUserInfo = function () { UsereApi.GetUserInfo({}).then((res: any) => { - // const { data } = res; UserInfo = res.data - // state.personalForm.creator = data.avatar || ''; - // state.personalForm.avatar = data.avatar || ''; - // state.personalForm.username = data.username || ''; - // state.personalForm.name = data.name || ''; - // state.personalForm.email = data.email || ''; - // state.personalForm.mobile = data.mobile || ''; - // state.personalForm.gender = data.gender; - // state.personalForm.dept_info.dept_name = data.dept_info.dept_name || ''; - // state.personalForm.role_info = data.role_info || []; }); }; @@ -81,12 +47,6 @@ export const createCrudOptions = function ({ crudExpose, context}: CreateCrudOpt return await api.exportData(query); }; - const selectedIds = ref([]); - - const onSelectionChange = (changed) => { - selectedIds.value = changed.map((item) => item.id); - }; - const updateRequest = async (data: {}, operation="") => { await request({ url: "api/material/apply_for/operation/" + operation + "/", @@ -106,6 +66,12 @@ export const createCrudOptions = function ({ crudExpose, context}: CreateCrudOpt crudExpose.doRefresh() }; + const selectedIds = ref([]); + + const onSelectionChange = (changed) => { + selectedIds.value = changed.map((item) => item.id); + }; + return { crudOptions: { actionbar: { @@ -229,10 +195,10 @@ export const createCrudOptions = function ({ crudExpose, context}: CreateCrudOpt show: true, buttons: { edit: { - order: 1, + order: 2, iconRight: 'Edit', text: "重新申请", - size: "small", + // size: "small", style:{backgroundColor: "#8A2BE2", color: "white"}, show: compute(({row})=>{ if (auth('materialApply:Update') === false) { @@ -245,10 +211,10 @@ export const createCrudOptions = function ({ crudExpose, context}: CreateCrudOpt }), }, remove: { - order: 5, + order: 4, iconRight: 'Delete', text: "删除申请", - size: "small", + // size: "small", show: compute(({row})=>{ if (auth('materialApply:Delete') === false) { return false @@ -260,21 +226,21 @@ export const createCrudOptions = function ({ crudExpose, context}: CreateCrudOpt }), }, view: { - order: 0, + order: 5, iconRight: 'View', text: "查看详情", - size: "small", + // size: "small", style: {backgroundColor: "#9FB6CD", color: "white"}, show: auth('materialApply:Retrieve'), }, examine: { - order: 2, + order: 0, iconRight: 'SuccessFilled', // dropdown: true, text: "审核通过", title: "审核通过", show: auth('materialApply:Examine'), - size: "small", + // size: "small", style:{backgroundColor: "#32CD32", color: "white"}, click: async ({row}) => { if (row.examine_status != 1){ @@ -286,14 +252,14 @@ export const createCrudOptions = function ({ crudExpose, context}: CreateCrudOpt } }, dismissal: { - order: 3, + order: 1, iconRight: 'CircleCloseFilled', // dropdown: true, // type: 'text', text: "驳回申请", title: "驳回", show: auth('materialApply:Dismissal'), - size: "small", + // size: "small", style:{backgroundColor: "#00BFFF", color: "white"}, click: async ({row}) => { if (row.examine_status != 1){ @@ -309,12 +275,12 @@ export const createCrudOptions = function ({ crudExpose, context}: CreateCrudOpt } }, revocation: { - order: 4, + order: 3, iconRight: 'BottomLeft', // type: 'text', text: "撤销申请", title: "撤销申请", - size: "small", + // size: "small", show: compute(({row})=>{ if (auth('materialApply:Revocation') === false) { return false diff --git a/web/src/views/materialBase/api.ts b/web/src/views/materialBase/api.ts index 7fa8d52b..ca41d82f 100644 --- a/web/src/views/materialBase/api.ts +++ b/web/src/views/materialBase/api.ts @@ -57,4 +57,14 @@ export function exportData(params: any) { params: params, method: 'get', }); -} \ No newline at end of file +} + + +export function MultipleDelObj(data: {}) { + return request({ + url: apiPrefix + 'multiple_delete/', + method: 'delete', + data: data, + }); +} + diff --git a/web/src/views/materialBase/crud.tsx b/web/src/views/materialBase/crud.tsx index cbb07d27..f6166b39 100644 --- a/web/src/views/materialBase/crud.tsx +++ b/web/src/views/materialBase/crud.tsx @@ -1,5 +1,6 @@ import * as api from './api'; -import { errorMessage, successMessage } from '/@/utils/message'; +import { ElMessageBox} from 'element-plus'; +import { errorMessage, successMessage, successNotification } from '/@/utils/message'; import {dictionary} from '/@/utils/dictionary'; import {compute, dict, UserPageQuery, AddReq, DelReq, EditReq, CrudExpose, CrudOptions, CreateCrudOptionsProps, CreateCrudOptionsRet,FormWrapperContext } from '@fast-crud/fast-crud'; @@ -8,6 +9,10 @@ import {auth} from "/@/utils/authFunction"; import {commonCrudConfig} from "/@/utils/commonCrud"; import {customCrudConfig} from "/@/utils/customCrudMaterial"; +import { ref } from "vue"; +import { useCompute } from "@fast-crud/fast-crud"; + + export const createCrudOptions = function ({ crudExpose }: CreateCrudOptionsProps): CreateCrudOptionsRet { const pageRequest = async (query: UserPageQuery) => { @@ -27,7 +32,17 @@ export const createCrudOptions = function ({ crudExpose }: CreateCrudOptionsProp const exportRequest = async (query: UserPageQuery) => { return await api.exportData(query); }; + + const MultipleDelRequest = async (data: {}) => { + return await api.MultipleDelObj(data); + }; + const selectedIds = ref([]); + + const onSelectionChange = (changed) => { + selectedIds.value = changed.map((item) => item.id); + }; + return { crudOptions: { actionbar: { @@ -43,8 +58,26 @@ export const createCrudOptions = function ({ crudExpose }: CreateCrudOptionsProp text: '导出', //按钮文字 title: '导出', //鼠标停留显示的信息 show: auth('materialBaseInfo:Export'), - click() { - return exportRequest(crudExpose!.getSearchFormData()); + click: async () => { + return await exportRequest(crudExpose!.getSearchFormData()); + }, + }, + m_delete: { + icon: "DeleteFilled", + style:{backgroundColor: "#FF2520", color: "white"}, + text: '批量删除', //按钮文字 + title: '批量删除', //鼠标停留显示的信息 + show: auth('materialBaseInfo:MultipleDelete'), + click: async () => { + if (selectedIds.value?.length < 1) { + errorMessage("请先勾选记录"); + return + } + await ElMessageBox.confirm(`确定要删除这${selectedIds.value.length}条记录吗`, "确认"); + const req = await MultipleDelRequest({"keys": selectedIds.value}) + selectedIds.value = []; + successNotification(req.msg) + crudExpose.doRefresh() }, }, }, @@ -122,6 +155,17 @@ export const createCrudOptions = function ({ crudExpose }: CreateCrudOptionsProp }, addForm: { columns: { + // 默认事件,当字段值改变会清空其他字段内容 + type: { + valueChange({ form, value, getComponentRef }) { + + } + }, + name: { + valueChange({ form, value, getComponentRef }) { + + } + }, code: { show: false } @@ -134,7 +178,26 @@ export const createCrudOptions = function ({ crudExpose }: CreateCrudOptionsProp } } }, + table: { + rowKey: "id", + onSelectionChange + }, columns: { + $checked: { + title: "选择", + form: { show: false}, + column: { + show: auth('materialBaseInfo:MultipleDelete'), + type: "selection", + align: "center", + width: "55px", + columnSetDisabled: true, //禁止在列设置中选择 + // selectable(row, index) { + // // return row.examine_status === 1; //设置第一行不允许选择 + // return true; //设置第一行不允许选择 + // } + } + }, _index: { title: '序号', form: { show: false }, @@ -152,7 +215,7 @@ export const createCrudOptions = function ({ crudExpose }: CreateCrudOptionsProp fixed: "left", }, }, - ...customCrudConfig(), + ...customCrudConfig(crudExpose), specification: { title: '物料规格', search: { diff --git a/web/src/views/materialInventory/crud.tsx b/web/src/views/materialInventory/crud.tsx index 03084bb0..b5da5992 100644 --- a/web/src/views/materialInventory/crud.tsx +++ b/web/src/views/materialInventory/crud.tsx @@ -1,5 +1,8 @@ import * as api from './api'; import { errorMessage, successMessage } from '/@/utils/message'; +import tableSelector from '/@/components/tableSelector/index.vue'; +import { shallowRef, computed } from 'vue'; + import {dictionary} from '/@/utils/dictionary'; import {compute, dict, UserPageQuery, AddReq, DelReq, EditReq, CrudExpose, CrudOptions, CreateCrudOptionsProps, CreateCrudOptionsRet,FormWrapperContext } from '@fast-crud/fast-crud'; @@ -305,6 +308,62 @@ export const createCrudOptions = function ({ crudExpose, context}: CreateCrudOpt }, }, }, + // receive_name: { + // show: false, + // // type: "table-select", + // dict: dict({ + // value: "name", + // label: "name", + // }), + // title: '领用人', + // column: { + // show: false, + // columnSetDisabled: true, //禁止在列设置中选择 + // }, + // form: { + // show: false, + // rules: [ + // // 表单校验规则 + // { + // required: true, + // message: '请输入领用人', + // }, + // ], + // component: { + // name: shallowRef(tableSelector), + // vModel: 'modelValue', + // displayLabel: compute(({ row }) => { + // if (row) { + // return row.user_info; + // } + // return null; + // }), + // tableConfig: { + // url: '/api/system/user/', + // label: 'name', + // value: 'id', + // isMultiple: true, + // columns: [ + // { + // prop: 'username', + // label: '用户账号', + // width: 120, + // }, + // { + // prop: 'name', + // label: '用户名称', + // width: 120, + // }, + // { + // prop: 'dept_name', + // label: '用户部门', + // width: 120, + // }, + // ], + // }, + // }, + // }, + // }, }, }, -- Gitee From 8f4bcd9fc59ba32ae10b23357e283367bf8dfdf4 Mon Sep 17 00:00:00 2001 From: lxy <10179281+lxy0722@user.noreply.gitee.com> Date: Mon, 26 Aug 2024 18:56:50 +0800 Subject: [PATCH 31/45] =?UTF-8?q?=E6=B6=88=E6=81=AF=E9=80=9A=E7=9F=A5?= =?UTF-8?q?=E4=BC=98=E5=8C=96?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- backend/app/material/views.py | 115 +++++++--- web/src/App.vue | 2 +- web/src/utils/customCrudMaterial.ts | 6 - web/src/views/materialApplyFor/crud.tsx | 33 ++- web/src/views/materialInventory/crud.tsx | 82 ++----- web/src/views/materialOperationlog/crud.tsx | 27 +-- web/src/views/system/messageCenter/crud.tsx | 43 +++- web/src/views/system/messageCenter/index.vue | 4 +- web/src/views/testTool/crud.tsx | 4 +- web/src/views/user/{curd.tsx => crud.tsx} | 215 +------------------ 10 files changed, 180 insertions(+), 351 deletions(-) rename web/src/views/user/{curd.tsx => crud.tsx} (44%) diff --git a/backend/app/material/views.py b/backend/app/material/views.py index 282727be..b536e52a 100644 --- a/backend/app/material/views.py +++ b/backend/app/material/views.py @@ -12,23 +12,75 @@ from dvadmin.utils.permission import CustomPermission from dvadmin.utils.filters import DataLevelPermissionsFilter, CoreModelFilterBankend from dvadmin.system.models import Users, Role, MenuButton, RoleMenuButtonPermission -from dvadmin.system.views.message_center import websocket_push +from dvadmin.system.views.message_center import websocket_push as message_push, MessageCenterCreateSerializer from app.material.serializers import * -class GetPermissionUsers: - def __init__(self, request, *args, **kwargs): - self.request = request +def websocket_push_designated_user(user_id, title, message, material_type=None, material_name=None, number=None): + """ + 主动推送消息 + """ + try: + data = MessageCenterCreateSerializer(data={ + 'title': title, + 'target_type': 0, + 'target_user': [user_id], + 'content': f'

{message}

' + f'

物料类型:{material_type}

' + f'

物料名称:{material_name}

' + f'

申请数量:{number}

' + }) + data.is_valid(raise_exception=True) + data.save() + + message_push(user_id, + message={ + "sender": 'system', + "contentType": 'MATERIAL', + "content": message, + "unread": 0} + ) + + except: + pass + + +def websocket_push_designated_role(role, title, message): + """ + 主动推送消息 + """ + try: + data = MessageCenterCreateSerializer(data={ + 'title': title, + 'target_type': 1, + 'target_role': role, + 'content': f'

{message}

' + }) + data.is_valid(raise_exception=True) + data.save() + for user in GetPermissionUsers().get_permission_users(role): + message_push(user, + message={ + "sender": 'system', + "contentType": 'MATERIAL', + "title": title, + "content": message, + "unread": 1} + ) + except: + pass + - def get_permission_role(self, url='/api/material/apply_for/operation/examine/', method=2): +class GetPermissionUsers: + def get_permission_role(self, url, method): queryset = RoleMenuButtonPermission.objects.filter(menu_button__api=url, menu_button__method=method) return queryset.values_list("role_id", flat=True) def get_permission_users(self, role_id): - users = Users.objects.filter(role__in=role_id, is_superuser=False, is_active=True).exclude(id=self.request.user.id) + users = Users.objects.filter(role__in=role_id, is_superuser=False, is_active=True) return users.values_list("id", flat=True) @@ -448,12 +500,11 @@ class MaterialApplyForViewSet(CustomModelViewSet): data = super().create(request, *args, **kwargs) - for user_id in GetPermissionUsers(request).get_users('/api/material/apply_for/operation/examine/', 2): - websocket_push(user_id, message={ - "sender": 'system', - "contentType": 'MATERIAL', - "content": f'{request.user.name}提交了新的物料申请, 请及时查看', - "unread": 1}) + websocket_push_designated_role( + GetPermissionUsers().get_permission_role('/api/material/apply_for/operation/examine/', 2), + title='物料申请通知', + message=f'{request.user.name}提交了新的物料申请, 请及时查看', + ) return DetailResponse(data=data.data, msg="申请成功") @@ -481,12 +532,11 @@ class MaterialApplyForViewSet(CustomModelViewSet): # forcibly invalidate the prefetch cache on the instance. instance._prefetched_objects_cache = {} - for user_id in GetPermissionUsers(request).get_users('/api/material/apply_for/operation/examine/', 2): - websocket_push(user_id, message={ - "sender": 'system', - "contentType": 'MATERIAL', - "content": f'{request.user.name}重新提交了物料申请, 请及时查看', - "unread": 1}) + websocket_push_designated_role( + GetPermissionUsers().get_permission_role('/api/material/apply_for/operation/examine/', 2), + title='物料重新提交通知', + message=f'{request.user.name}重新提交了物料申请, 请及时查看', + ) return DetailResponse(data=serializer.data, msg="重新提交成功") @@ -535,13 +585,13 @@ class MaterialApplyForViewSet(CustomModelViewSet): # 一条数据不满足则不保存 for obj in queryset: - websocket_push(obj.creator.id, - message={ - "sender": 'system', - "contentType": 'MATERIAL', - "content": f'您提交的物料申请已通过审核!', - "unread": 1} - ) + websocket_push_designated_user(obj.creator.id, + title='物料申请审核通知', + message=f'您提交的物料申请已通过审核!', + material_type=obj.code.type, + material_name=obj.code.name, + number=obj.number, + ) obj.save() return DetailResponse(msg=f'审核成功') @@ -562,13 +612,14 @@ class MaterialApplyForViewSet(CustomModelViewSet): # 一条数据不满足则不保存 for obj in queryset: - websocket_push(obj.creator.id, - message={ - "sender": 'system', - "contentType": 'MATERIAL', - "content": f'您提交的物料申请被驳回!驳回原因:{request.data["examine_opinion"]}!', - "unread": 1} - ) + websocket_push_designated_user(obj.creator.id, + title='物料申请审核通知', + message=f'您提交的物料申请已被驳回!驳回原因:{request.data["examine_opinion"]}!', + material_type=obj.code.type, + material_name=obj.code.name, + number=obj.number + ) + obj.save() return DetailResponse(msg='驳回申请成功') diff --git a/web/src/App.vue b/web/src/App.vue index d5d27814..6326581c 100644 --- a/web/src/App.vue +++ b/web/src/App.vue @@ -108,7 +108,7 @@ const wsReceive = (message: any) => { const data = JSON.parse(message.data); if (data.contentType === 'MATERIAL') { ElNotification({ - title: '物料系统消息', + title: data.title, message: data.content, type: 'info', position: 'bottom-right', diff --git a/web/src/utils/customCrudMaterial.ts b/web/src/utils/customCrudMaterial.ts index c3b441f6..ec399772 100644 --- a/web/src/utils/customCrudMaterial.ts +++ b/web/src/utils/customCrudMaterial.ts @@ -37,12 +37,6 @@ export const customCrudConfig = (crudExpose: {}) => { label: 'type', cache: true, }), - // addForm: { - // // 添加表单时,不清空数据 - // valueChange({ form, value, getComponentRef }) { - - // } - // }, form: { show: true, component: { diff --git a/web/src/views/materialApplyFor/crud.tsx b/web/src/views/materialApplyFor/crud.tsx index 019cf3c0..173ff10e 100644 --- a/web/src/views/materialApplyFor/crud.tsx +++ b/web/src/views/materialApplyFor/crud.tsx @@ -9,7 +9,7 @@ import {auth} from "/@/utils/authFunction"; import {customCrudConfig} from "/@/utils/customCrudMaterial"; -import {createCrudOptions as UserCreateCrudOptions} from '/@/views/user/curd'; +import {createCrudOptions as UserCreateCrudOptions} from '/@/views/user/crud'; import {createCrudOptions as MaterialBasecreateCrudOptions} from '/@/views/materialBase/crud'; import * as materialBaseTableApi from '/@/views/materialBase/api'; @@ -387,16 +387,33 @@ export const createCrudOptions = function ({ crudExpose, context}: CreateCrudOpt rowKey: "id", //element-plus 必传 createCrudOptions: MaterialBasecreateCrudOptions, crudOptionsOverride: { - form: { - wrapper: { - draggable: false, - // width: '400px', //antdv对话框的宽度 - // width: 400, + columns: { + $checked: { + column:{ + show: false, + columnSetDisabled: true, //禁止在列设置中选择 + }, + }, + }, + actionbar: { + buttons: { + add: { + show: false + } }, }, - rowHandle: { - show: false, + + // show: false, + buttons: { + edit: { + show: false + }, + remove: { + show: false + } + + }, // fixed: "right" } } diff --git a/web/src/views/materialInventory/crud.tsx b/web/src/views/materialInventory/crud.tsx index b5da5992..79f9d4b2 100644 --- a/web/src/views/materialInventory/crud.tsx +++ b/web/src/views/materialInventory/crud.tsx @@ -11,7 +11,7 @@ import {auth} from "/@/utils/authFunction"; import {commonCrudConfig} from "/@/utils/commonCrud"; import {customCrudConfig} from "/@/utils/customCrudMaterial"; -import {createCrudOptions as UserCreateCrudOptions} from '/@/views/user/curd'; +import {createCrudOptions as UserCreateCrudOptions} from '/@/views/user/crud'; export const createCrudOptions = function ({ crudExpose, context}: CreateCrudOptionsProps): CreateCrudOptionsRet { @@ -293,77 +293,35 @@ export const createCrudOptions = function ({ crudExpose, context}: CreateCrudOpt multiple: false, rowKey: "name", //element-plus 必传 createCrudOptions: UserCreateCrudOptions, + dialog: { + width: "700px", + }, crudOptionsOverride: { - form: { - wrapper: { - draggable: false, + search: { + columns: { + username: { + search: { + show: false, + }, + }, + }, + buttons: { + reset: { + show: false + } }, }, - rowHandle: { show: false, // fixed: "right" - } + }, + toolbar: { + show: false + }, } }, }, }, - // receive_name: { - // show: false, - // // type: "table-select", - // dict: dict({ - // value: "name", - // label: "name", - // }), - // title: '领用人', - // column: { - // show: false, - // columnSetDisabled: true, //禁止在列设置中选择 - // }, - // form: { - // show: false, - // rules: [ - // // 表单校验规则 - // { - // required: true, - // message: '请输入领用人', - // }, - // ], - // component: { - // name: shallowRef(tableSelector), - // vModel: 'modelValue', - // displayLabel: compute(({ row }) => { - // if (row) { - // return row.user_info; - // } - // return null; - // }), - // tableConfig: { - // url: '/api/system/user/', - // label: 'name', - // value: 'id', - // isMultiple: true, - // columns: [ - // { - // prop: 'username', - // label: '用户账号', - // width: 120, - // }, - // { - // prop: 'name', - // label: '用户名称', - // width: 120, - // }, - // { - // prop: 'dept_name', - // label: '用户部门', - // width: 120, - // }, - // ], - // }, - // }, - // }, - // }, }, }, diff --git a/web/src/views/materialOperationlog/crud.tsx b/web/src/views/materialOperationlog/crud.tsx index db0c7f79..e76d55bd 100644 --- a/web/src/views/materialOperationlog/crud.tsx +++ b/web/src/views/materialOperationlog/crud.tsx @@ -1,8 +1,8 @@ import * as api from './api'; import { errorMessage, successMessage } from '/@/utils/message'; import {dictionary} from '/@/utils/dictionary'; -import {request} from '/@/utils/service'; -import { Session } from '/@/utils/storage'; +import tableSelector from '/@/components/tableSelector/index.vue'; +import { shallowRef, computed } from 'vue'; import {compute, dict, UserPageQuery, AddReq, DelReq, EditReq, CrudExpose, CrudOptions, CreateCrudOptionsProps, CreateCrudOptionsRet,FormWrapperContext } from '@fast-crud/fast-crud'; import {auth} from "/@/utils/authFunction"; @@ -10,8 +10,7 @@ import {auth} from "/@/utils/authFunction"; import {commonCrudConfig} from "/@/utils/commonCrud"; import {customCrudConfig} from "/@/utils/customCrudMaterial"; -import {createCrudOptions as T} from '/@/views/user/curd'; -// import createCrudOptionsText from "/@/views/user1/curd"; +import {createCrudOptions as T} from '/@/views/user/crud'; import * as textTableApi from "/@/views/user/api"; @@ -183,26 +182,6 @@ export const createCrudOptions = function ({ crudExpose }: CreateCrudOptionsProp } } }, - // receive_name: { - // show: true, - // search: { - // show: true, - // }, - // type: 'dict-select', - // dict: dict({ - // isTree: true, - // url: '/api/material/inventory/get_all_user/', - // value: 'name', - // label: 'name' - // }), - // title: '领用人', - // form: { - // component: { - // // placeholder: '' - // filterable: true, - // }, - // } - // }, ...commonCrudConfig({ create_datetime: { form: false, diff --git a/web/src/views/system/messageCenter/crud.tsx b/web/src/views/system/messageCenter/crud.tsx index dddc1a65..fc70481a 100644 --- a/web/src/views/system/messageCenter/crud.tsx +++ b/web/src/views/system/messageCenter/crud.tsx @@ -49,6 +49,24 @@ export default function ({ crudExpose, context }: CreateCrudOptionsProps): Creat return tabActivted.value !== 'receive' && auth('messageCenter:Create'); }), }, + all_mark_read: { + title: "当前页面全部标记为已读", + text: '全部标记为已读', //按钮文字 + show: computed(() => { + return tabActivted.value === 'receive' && auth('messageCenter:Create'); + }), + click: async () => { + const data = crudExpose.getTableData() + + for (var i=0; i @@ -17,7 +17,7 @@ import { useFs } from '@fast-crud/fast-crud'; import createCrudOptions from './crud'; //tab选择 -const tabActivted = ref('send'); +const tabActivted = ref('receive'); const onTabClick = (tab: any) => { const { paneName } = tab; tabActivted.value = paneName; diff --git a/web/src/views/testTool/crud.tsx b/web/src/views/testTool/crud.tsx index 1a0c55e0..eee283ad 100644 --- a/web/src/views/testTool/crud.tsx +++ b/web/src/views/testTool/crud.tsx @@ -360,17 +360,17 @@ export const createCrudOptions = function ({ crudExpose }: CreateCrudOptionsProp // @ts-ignore const data = new FormData(); const getFormData = crudExpose.getFormData() - // console.log("uploadRequest", data) data.append("file", file); data.append("version", getFormData.version) data.append("update_comment", getFormData.update_comment) data.append("forced_update", getFormData.forced_update) data.append("platform", getFormData.platform) + data.append("status", getFormData.status) return await request({ url: action, method: "post", - timeout: 60000, + timeout: 600000, headers: { "Content-Type": "multipart/form-data", "Authorization" : 'JWT ' + `${Session.get('token')}`, diff --git a/web/src/views/user/curd.tsx b/web/src/views/user/crud.tsx similarity index 44% rename from web/src/views/user/curd.tsx rename to web/src/views/user/crud.tsx index d9a6018e..83b293f1 100644 --- a/web/src/views/user/curd.tsx +++ b/web/src/views/user/crud.tsx @@ -9,17 +9,9 @@ import { CreateCrudOptionsProps, CreateCrudOptionsRet } from '@fast-crud/fast-crud'; -import {request} from '/@/utils/service'; -import {dictionary} from '/@/utils/dictionary'; -import {successMessage} from '/@/utils/message'; -import {auth} from '/@/utils/authFunction'; -// import {SystemConfigStore} from "/@/stores/systemConfig"; -// import {storeToRefs} from "pinia"; -// import {computed} from "vue"; -// import { Md5 } from 'ts-md5'; + import {commonCrudConfig} from "/@/utils/commonCrud"; -// export default function ({ expose }: CreateCrudOptionsProps): CreateCrudOptionsRet { export const createCrudOptions = function ({crudExpose}: CreateCrudOptionsProps): CreateCrudOptionsRet { const pageRequest = async (query: UserPageQuery) => { return await api.GetList(query); @@ -39,19 +31,6 @@ export const createCrudOptions = function ({crudExpose}: CreateCrudOptionsProps) return await api.exportData(query) } - // const resetToDefaultPasswordRequest = async (row:EditReq)=>{ - // await api.resetToDefaultPassword(row.id) - // successMessage("重置密码成功") - // } - - // const systemConfigStore = SystemConfigStore() - // const {systemConfig} = storeToRefs(systemConfigStore) - // const getSystemConfig = computed(() => { - // // console.log(systemConfig.value) - // return systemConfig.value - // }) - - return { crudOptions: { // table: { @@ -65,12 +44,6 @@ export const createCrudOptions = function ({crudExpose}: CreateCrudOptionsProps) editRequest, delRequest, }, - form: { - wrapper: { - draggable: true, - width: 400, - }, - }, actionbar: { show: false, buttons: { @@ -134,15 +107,17 @@ export const createCrudOptions = function ({crudExpose}: CreateCrudOptionsProps) }, }, username: { + show: false, title: '账号', search: { - show: true, + show: false, }, type: 'input', column: { minWidth: 100, //最小列宽 }, form: { + show: false, rules: [ // 表单校验规则 { @@ -155,36 +130,6 @@ export const createCrudOptions = function ({crudExpose}: CreateCrudOptionsProps) }, }, }, - // password: { - // title: '密码', - // type: 'password', - // column: { - // show: false, - // }, - // editForm: { - // show: false, - // }, - // form: { - // rules: [ - // // 表单校验规则 - // { - // required: true, - // message: '密码必填项', - // }, - // ], - // component: { - - // span: 12, - // showPassword: true, - // placeholder: '请输入密码', - // }, - // }, - // valueResolve({form}) { - // if (form.password) { - // form.password = Md5.hashStr(form.password) - // } - // } - // }, name: { title: '姓名', search: { @@ -248,159 +193,7 @@ export const createCrudOptions = function ({crudExpose}: CreateCrudOptionsProps) }, }, }, - // role: { - // title: '角色', - // search: { - // disabled: true, - // }, - // type: 'dict-select', - // dict: dict({ - // url: '/api/system/role/', - // value: 'id', - // label: 'name', - // }), - // column: { - // minWidth: 200, //最小列宽 - // formatter({value,row,index}){ - // const values = row.role_info.map((item:any) => item.name); - // return values.join(',') - // } - // }, - // form: { - // rules: [ - // // 表单校验规则 - // { - // required: true, - // message: '必填项', - // }, - // ], - // component: { - // multiple: true, - // filterable: true, - // placeholder: '请选择角色', - // }, - // }, - // }, - // mobile: { - // title: '手机号码', - // search: { - // show: true, - // }, - // type: 'input', - // column: { - // minWidth: 120, //最小列宽 - // }, - // form: { - // rules: [ - // { - // max: 20, - // message: '请输入正确的手机号码', - // trigger: 'blur', - // }, - // { - // pattern: /^1[3-9]\d{9}$/, - // message: '请输入正确的手机号码', - // }, - // ], - // component: { - // placeholder: '请输入手机号码', - // }, - // }, - // }, - // email: { - // title: '邮箱', - // column: { - // width: 260, - // }, - // form: { - // rules: [ - // { - // type: 'email', - // message: '请输入正确的邮箱地址', - // trigger: ['blur', 'change'], - // }, - // ], - // component: { - // placeholder: '请输入邮箱', - // }, - // }, - // }, - // gender: { - // title: '性别', - // type: 'dict-select', - // dict: dict({ - // data: dictionary('gender'), - // }), - // form: { - // value: 1, - // component: { - // span: 12, - // }, - // }, - // component: {props: {color: 'auto'}}, // 自动染色 - // }, - // user_type: { - // title: '用户类型', - // search: { - // show: true, - // }, - // type: 'dict-select', - // dict: dict({ - // data: dictionary('user_type'), - // }), - // column: { - // minWidth: 100, //最小列宽 - // }, - // form: { - // show: false, - // value: 0, - // component: { - // span: 12, - // }, - // }, - // }, - // is_active: { - // title: '状态', - // search: { - // show: true, - // }, - // type: 'dict-radio', - // column: { - // component: { - // name: 'fs-dict-switch', - // activeText: '', - // inactiveText: '', - // style: '--el-switch-on-color: var(--el-color-primary); --el-switch-off-color: #dcdfe6', - // onChange: compute((context) => { - // return () => { - // api.UpdateObj(context.row).then((res: APIResponseData) => { - // successMessage(res.msg as string); - // }); - // }; - // }), - // }, - // }, - // dict: dict({ - // data: dictionary('button_status_bool'), - // }), - // }, - // avatar: { - // title: '头像', - // type: 'avatar-cropper', - // form: { - // show: false, - // }, - // column: { - // minWidth: 400, //最小列宽 - // }, - // }, ...commonCrudConfig(), - // ...commonCrudConfig({ - // dept_belong_id: { - // form: true, - // table: true - // } - // }) }, }, }; -- Gitee From 40ca3d9f64c6bc7b7da69d4ffb7af12e89aeca1e Mon Sep 17 00:00:00 2001 From: lxy <10179281+lxy0722@user.noreply.gitee.com> Date: Fri, 16 Aug 2024 19:36:23 +0800 Subject: [PATCH 32/45] =?UTF-8?q?=E6=96=B0=E5=A2=9E=E7=89=A9=E6=96=99?= =?UTF-8?q?=E7=AE=A1=E7=90=86=E6=A8=A1=E5=9D=97,=E4=BA=A7=E6=B5=8B?= =?UTF-8?q?=E5=B7=A5=E5=85=B7=E6=A8=A1=E5=9D=97=E4=BC=98=E5=8C=96,?= =?UTF-8?q?=E6=B6=88=E6=81=AF=E4=B8=AD=E5=BF=83=E5=A2=9E=E5=8A=A0=E4=B8=80?= =?UTF-8?q?=E9=94=AE=E5=B7=B2=E8=AF=BB?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- backend/app/material/__init__.py | 0 backend/app/material/admin.py | 3 + backend/app/material/apps.py | 6 + backend/app/material/migrations/__init__.py | 0 backend/app/material/models.py | 104 +++ backend/app/material/serializers.py | 197 +++++ backend/app/material/tests.py | 3 + backend/app/material/urls.py | 21 + backend/app/material/views.py | 625 ++++++++++++++++ backend/app/test_tool/views.py | 5 +- backend/application/settings.py | 3 +- backend/application/urls.py | 1 + backend/dvadmin/utils/models.py | 20 +- web/src/App.vue | 11 + web/src/utils/customCrudMaterial.ts | 165 ++++ web/src/views/materialApplyFor/api.ts | 60 ++ web/src/views/materialApplyFor/crud.tsx | 748 +++++++++++++++++++ web/src/views/materialApplyFor/index.vue | 39 + web/src/views/materialBase/api.ts | 70 ++ web/src/views/materialBase/crud.tsx | 286 +++++++ web/src/views/materialBase/index.vue | 30 + web/src/views/materialInventory/api.ts | 52 ++ web/src/views/materialInventory/crud.tsx | 329 ++++++++ web/src/views/materialInventory/index.vue | 30 + web/src/views/materialOperationlog/api.ts | 51 ++ web/src/views/materialOperationlog/crud.tsx | 201 +++++ web/src/views/materialOperationlog/index.vue | 30 + web/src/views/system/messageCenter/crud.tsx | 43 +- web/src/views/system/messageCenter/index.vue | 4 +- web/src/views/testTool/crud.tsx | 4 +- web/src/views/user/api.ts | 66 ++ web/src/views/user/crud.tsx | 200 +++++ web/src/views/user/index.vue | 125 ++++ 33 files changed, 3516 insertions(+), 16 deletions(-) create mode 100644 backend/app/material/__init__.py create mode 100644 backend/app/material/admin.py create mode 100644 backend/app/material/apps.py create mode 100644 backend/app/material/migrations/__init__.py create mode 100644 backend/app/material/models.py create mode 100644 backend/app/material/serializers.py create mode 100644 backend/app/material/tests.py create mode 100644 backend/app/material/urls.py create mode 100644 backend/app/material/views.py create mode 100644 web/src/utils/customCrudMaterial.ts create mode 100644 web/src/views/materialApplyFor/api.ts create mode 100644 web/src/views/materialApplyFor/crud.tsx create mode 100644 web/src/views/materialApplyFor/index.vue create mode 100644 web/src/views/materialBase/api.ts create mode 100644 web/src/views/materialBase/crud.tsx create mode 100644 web/src/views/materialBase/index.vue create mode 100644 web/src/views/materialInventory/api.ts create mode 100644 web/src/views/materialInventory/crud.tsx create mode 100644 web/src/views/materialInventory/index.vue create mode 100644 web/src/views/materialOperationlog/api.ts create mode 100644 web/src/views/materialOperationlog/crud.tsx create mode 100644 web/src/views/materialOperationlog/index.vue create mode 100644 web/src/views/user/api.ts create mode 100644 web/src/views/user/crud.tsx create mode 100644 web/src/views/user/index.vue diff --git a/backend/app/material/__init__.py b/backend/app/material/__init__.py new file mode 100644 index 00000000..e69de29b diff --git a/backend/app/material/admin.py b/backend/app/material/admin.py new file mode 100644 index 00000000..8c38f3f3 --- /dev/null +++ b/backend/app/material/admin.py @@ -0,0 +1,3 @@ +from django.contrib import admin + +# Register your models here. diff --git a/backend/app/material/apps.py b/backend/app/material/apps.py new file mode 100644 index 00000000..32b36f37 --- /dev/null +++ b/backend/app/material/apps.py @@ -0,0 +1,6 @@ +from django.apps import AppConfig + + +class MaterialConfig(AppConfig): + default_auto_field = 'django.db.models.BigAutoField' + name = 'app.material' diff --git a/backend/app/material/migrations/__init__.py b/backend/app/material/migrations/__init__.py new file mode 100644 index 00000000..e69de29b diff --git a/backend/app/material/models.py b/backend/app/material/models.py new file mode 100644 index 00000000..abca01cb --- /dev/null +++ b/backend/app/material/models.py @@ -0,0 +1,104 @@ +# coding=utf-8 + + +from django.db import models + +# Create your models here. +from dvadmin.utils.models import CoreModel, SoftDeleteModel, table_prefix +from dvadmin.system.models import Users + + +class MaterialBaseInfo(CoreModel, SoftDeleteModel): + type = models.CharField(max_length=255, verbose_name="物料类型", help_text="物料类型") + name = models.CharField(unique=True, max_length=255, verbose_name="物料名称", help_text="物料名称") + code = models.CharField(unique=True, max_length=255, verbose_name="物料编码", help_text="物料编码") + specification = models.CharField(max_length=255, null=True, blank=True, verbose_name="物料规格", help_text="物料规格") + storage_location = models.CharField(max_length=255, null=True, blank=True, verbose_name="存放位置", help_text="存放位置") + safety_stock = models.IntegerField(default=0, verbose_name="安全库存", help_text="安全库存") + + class Meta: + db_table = table_prefix + "material" + verbose_name = "物料基础信息管理" + verbose_name_plural = verbose_name + ordering = ("-create_datetime", "-update_datetime") + + +class MaterialInventory(CoreModel): + number = models.IntegerField(default=0, verbose_name="剩余库存", help_text="剩余库存") + SAFETY_STOCK_LEVEL = ( + (0, "安全库存"), + (1, "及时补充库存"), + (2, "紧急补充库存"), + (3, "无库存"), + ) + safety_stock_level = models.IntegerField(default=3, choices=SAFETY_STOCK_LEVEL, null=True, blank=True, + verbose_name="剩余安全库存等级", help_text="剩余安全库存等级") + code = models.OneToOneField( + to="MaterialBaseInfo", + on_delete=models.PROTECT, + # to_field="id", + verbose_name="关联物料编码", + help_text="关联物料编码", + default=None, + related_name="inventory", + ) + + class Meta: + db_table = table_prefix + "material_inventory" + verbose_name = "物料库存数量管理" + verbose_name_plural = verbose_name + ordering = ("-create_datetime", "-update_datetime") + + +class MaterialRecords(CoreModel): + RECORD_TYPE = ( + (0, "入库"), + (1, "出库"), + ) + record_type = models.IntegerField(choices=RECORD_TYPE, null=True, blank=True, verbose_name="出入库类型", help_text="出入库类型") + receive_name = models.CharField(max_length=255, null=True, blank=True, verbose_name="领用人", help_text="领用人") + number = models.IntegerField(null=True, blank=True, verbose_name="数量", help_text="数量") + code = models.ForeignKey( + to="MaterialBaseInfo", + on_delete=models.PROTECT, + # to_field="code", + verbose_name="关联物料编码", + help_text="关联物料编码", + related_name="records", + ) + + class Meta: + db_table = table_prefix + "material_number_records" + verbose_name = "物料出入库记录" + verbose_name_plural = verbose_name + ordering = ("-create_datetime", "-update_datetime") + + +class MaterialApplyFor(CoreModel): + + examine_user = models.CharField(max_length=255, null=True, blank=True, verbose_name="审核人", help_text="审核人") + EXAMINE_TYPE = ( + (0, "审核通过"), + (1, "待审核"), + (2, "审核不通过"), + (3, "已撤回"), + ) + examine_status = models.IntegerField(default=1, choices=EXAMINE_TYPE, verbose_name="审核状态", help_text="审核状态") + examine_opinion = models.CharField(max_length=255, null=True, blank=True, verbose_name="审核意见", help_text="审核意见") + number = models.IntegerField(null=True, verbose_name="申请数量", help_text="申请数量") + reason = models.CharField(max_length=255, null=True, blank=True, verbose_name="申请理由", help_text="申请理由") + url = models.CharField(max_length=255, null=True, blank=True, verbose_name="申请链接", help_text="申请链接") + code = models.ForeignKey( + to="MaterialBaseInfo", + on_delete=models.PROTECT, + # to_field="code", + verbose_name="关联物料编码", + help_text="关联物料编码", + related_name="apply_for", + ) + + class Meta: + db_table = table_prefix + "material_apply_for" + verbose_name = "物料申请" + verbose_name_plural = verbose_name + ordering = ("-create_datetime", "-update_datetime") diff --git a/backend/app/material/serializers.py b/backend/app/material/serializers.py new file mode 100644 index 00000000..aac8161f --- /dev/null +++ b/backend/app/material/serializers.py @@ -0,0 +1,197 @@ +# coding=utf-8 + +from application import dispatch +from rest_framework import serializers +from dvadmin.utils.json_response import DetailResponse, ErrorResponse + + +from app.material.models import MaterialBaseInfo, MaterialInventory, MaterialRecords, MaterialApplyFor +from dvadmin.utils.serializers import CustomModelSerializer +from dvadmin.system.models import Users + +RECORD_TYPE = {} +for i in MaterialRecords.RECORD_TYPE: + RECORD_TYPE[i[0]] = i[1] + + +EXAMINE_TYPE = {} +for i in MaterialApplyFor.EXAMINE_TYPE: + EXAMINE_TYPE[i[0]] = i[1] + + +SAFETY_STOCK_LEVEL = {} +for i in MaterialInventory.SAFETY_STOCK_LEVEL: + SAFETY_STOCK_LEVEL[i[0]] = i[1] + + +class MaterialBaseInfoSerializer(CustomModelSerializer): + + class Meta: + model = MaterialBaseInfo + fields = "__all__" + + +class MaterialBaseInfoUpdateSerializer(CustomModelSerializer): + type = serializers.CharField(read_only=True) + code = serializers.CharField(read_only=True) + + class Meta: + model = MaterialBaseInfo + fields = "__all__" + + +class MaterialBaseInfoExportSerializer(CustomModelSerializer): + type = serializers.CharField(read_only=True) + name = serializers.CharField(read_only=True) + code = serializers.CharField(read_only=True) + user_name = serializers.CharField(source='creator.name', read_only=True) + + class Meta: + model = MaterialBaseInfo + fields = "__all__" + + +class MaterialInventoryCreateSerializer(CustomModelSerializer): + + class Meta: + model = MaterialInventory + fields = "__all__" + + +class MaterialInventoryExportSerializer(CustomModelSerializer): + type = serializers.CharField(source='code.type', read_only=True) + name = serializers.CharField(source='code.name', read_only=True) + code = serializers.CharField(source='code.code', read_only=True) + specification = serializers.CharField(source='code.specification', read_only=True) + safety_stock = serializers.CharField(source='code.safety_stock', read_only=True) + storage_location = serializers.CharField(source='code.storage_location', read_only=True) + user_name = serializers.CharField(source='creator.name', read_only=True) + safety_stock_level = serializers.SerializerMethodField(read_only=True) + + class Meta: + model = MaterialInventory + fields = "__all__" + + def get_safety_stock_level(self, instance): + if not hasattr(instance, "safety_stock_level") or instance.safety_stock_level not in SAFETY_STOCK_LEVEL: + return None + + return SAFETY_STOCK_LEVEL[instance.safety_stock_level] + + +class MaterialInventorySerializer(CustomModelSerializer): + type = serializers.CharField(source='code.type', read_only=True) + name = serializers.CharField(source='code.name', read_only=True) + code = serializers.CharField(source='code.code', read_only=True) + specification = serializers.CharField(source='code.specification', read_only=True) + + class Meta: + model = MaterialInventory + fields = "__all__" + + +class MaterialRecordsUpdateSerializer(CustomModelSerializer): + + class Meta: + model = MaterialRecords + fields = "__all__" + + +class MaterialRecordsExportSerializer(CustomModelSerializer): + type = serializers.CharField(source='code.type', read_only=True) + name = serializers.CharField(source='code.name', read_only=True) + code = serializers.CharField(source='code.code', read_only=True) + specification = serializers.CharField(source='code.specification', read_only=True) + safety_stock = serializers.CharField(source='code.safety_stock', read_only=True) + storage_location = serializers.CharField(source='code.storage_location', read_only=True) + user_name = serializers.CharField(source='creator.name', read_only=True) + record_type = serializers.SerializerMethodField(read_only=True) + + class Meta: + model = MaterialRecords + fields = "__all__" + + def get_record_type(self, instance): + if not hasattr(instance, "record_type") or instance.record_type not in RECORD_TYPE: + return None + + return RECORD_TYPE[instance.record_type] + + +class MaterialRecordsSerializer(CustomModelSerializer): + type = serializers.CharField(source='code.type', read_only=True) + name = serializers.CharField(source='code.name', read_only=True) + code = serializers.CharField(source='code.code', read_only=True) + specification = serializers.CharField(source='code.specification', read_only=True) + + class Meta: + model = MaterialRecords + fields = "__all__" + + +class MaterialApplyForSerializer(CustomModelSerializer): + type = serializers.CharField(source='code.type', read_only=True) + name = serializers.CharField(source='code.name', read_only=True) + code = serializers.CharField(source='code.code', read_only=True) + specification = serializers.CharField(source='code.specification', read_only=True) + # 前端重新申请时展示使用 + material = serializers.CharField(source='code.id', read_only=True) + examine_user_name = serializers.SerializerMethodField(method_name='get_examine_user_name', read_only=True) + + class Meta: + model = MaterialApplyFor + fields = "__all__" + + def get_examine_user_name(self, instance): + if not hasattr(instance, "examine_user"): + return None + queryset = ( + Users.objects.filter(id=instance.examine_user) + .values_list("name", flat=True) + .first() + ) + if queryset: + return queryset + return None + + +class MaterialApplyForExportSerializer(CustomModelSerializer): + type = serializers.CharField(source='code.type', read_only=True) + name = serializers.CharField(source='code.name', read_only=True) + code = serializers.CharField(source='code.code', read_only=True) + specification = serializers.CharField(source='code.specification', read_only=True) + safety_stock = serializers.CharField(source='code.safety_stock', read_only=True) + storage_location = serializers.CharField(source='code.storage_location', read_only=True) + user_name = serializers.CharField(source='creator.name', read_only=True) + examine_user_name = serializers.SerializerMethodField(method_name='get_examine_user_name', read_only=True) + examine_status = serializers.SerializerMethodField(method_name='get_examine_status', read_only=True) + + class Meta: + model = MaterialApplyFor + fields = "__all__" + + def get_examine_user_name(self, instance): + if not hasattr(instance, "examine_user"): + return None + queryset = ( + Users.objects.filter(id=instance.examine_user) + .values_list("name", flat=True) + .first() + ) + if queryset: + return queryset + return None + + def get_examine_status(self, instance): + if not hasattr(instance, "examine_status") or instance.examine_status not in EXAMINE_TYPE: + return None + + return EXAMINE_TYPE[instance.examine_status] + + +class MaterialApplyForCreateSerializer(CustomModelSerializer): + + class Meta: + model = MaterialApplyFor + fields = "__all__" + diff --git a/backend/app/material/tests.py b/backend/app/material/tests.py new file mode 100644 index 00000000..7ce503c2 --- /dev/null +++ b/backend/app/material/tests.py @@ -0,0 +1,3 @@ +from django.test import TestCase + +# Create your tests here. diff --git a/backend/app/material/urls.py b/backend/app/material/urls.py new file mode 100644 index 00000000..53c4e69d --- /dev/null +++ b/backend/app/material/urls.py @@ -0,0 +1,21 @@ +# coding=utf-8 + +from rest_framework.routers import SimpleRouter +from django.urls import path +from django.http import HttpResponse, JsonResponse +from dvadmin.system.views.clause import PrivacyView, TermsServiceView + +from .views import MaterialBaseInfoViewSet, MaterialInventoryViewSet, MaterialRecordsViewSet, MaterialApplyForViewSet + +router = SimpleRouter() +# 这里进行注册路径,并把视图关联上,这里的api地址以视图名称为后缀,这样方便记忆api/CrudDemoModelViewSet +router.register("base_info", MaterialBaseInfoViewSet) +router.register("inventory", MaterialInventoryViewSet) +router.register("operation_log", MaterialRecordsViewSet) +router.register("apply_for", MaterialApplyForViewSet) + +urlpatterns = [ + +] + +urlpatterns += router.urls diff --git a/backend/app/material/views.py b/backend/app/material/views.py new file mode 100644 index 00000000..b536e52a --- /dev/null +++ b/backend/app/material/views.py @@ -0,0 +1,625 @@ +import os +import datetime + +from django.db import transaction +from rest_framework.decorators import action +from rest_framework.permissions import IsAuthenticated +from rest_framework.filters import BaseFilterBackend + +from dvadmin.utils.json_response import DetailResponse, SuccessResponse, ErrorResponse +from dvadmin.utils.viewset import CustomModelViewSet +from dvadmin.utils.permission import CustomPermission +from dvadmin.utils.filters import DataLevelPermissionsFilter, CoreModelFilterBankend +from dvadmin.system.models import Users, Role, MenuButton, RoleMenuButtonPermission + +from dvadmin.system.views.message_center import websocket_push as message_push, MessageCenterCreateSerializer + +from app.material.serializers import * + + +def websocket_push_designated_user(user_id, title, message, material_type=None, material_name=None, number=None): + """ + 主动推送消息 + """ + try: + data = MessageCenterCreateSerializer(data={ + 'title': title, + 'target_type': 0, + 'target_user': [user_id], + 'content': f'

{message}

' + f'

物料类型:{material_type}

' + f'

物料名称:{material_name}

' + f'

申请数量:{number}

' + }) + data.is_valid(raise_exception=True) + data.save() + + message_push(user_id, + message={ + "sender": 'system', + "contentType": 'MATERIAL', + "content": message, + "unread": 0} + ) + + except: + pass + + +def websocket_push_designated_role(role, title, message): + """ + 主动推送消息 + """ + try: + data = MessageCenterCreateSerializer(data={ + 'title': title, + 'target_type': 1, + 'target_role': role, + 'content': f'

{message}

' + }) + data.is_valid(raise_exception=True) + data.save() + for user in GetPermissionUsers().get_permission_users(role): + message_push(user, + message={ + "sender": 'system', + "contentType": 'MATERIAL', + "title": title, + "content": message, + "unread": 1} + ) + except: + pass + + +class GetPermissionUsers: + + def get_permission_role(self, url, method): + queryset = RoleMenuButtonPermission.objects.filter(menu_button__api=url, menu_button__method=method) + + return queryset.values_list("role_id", flat=True) + + def get_permission_users(self, role_id): + users = Users.objects.filter(role__in=role_id, is_superuser=False, is_active=True) + + return users.values_list("id", flat=True) + + def get_users(self, api_url, method): + roles = self.get_permission_role(api_url, method) + if not roles: + return [] + + return self.get_permission_users(roles) + + +class CustomModelFilterBanked(BaseFilterBackend): + """ + 自定义过滤器 + """ + + def filter_queryset(self, request, queryset, view): + + # 库存模型过滤已经删数据 + if isinstance(view, MaterialInventoryViewSet): + queryset = queryset.exclude(code__is_deleted=True) + + if (query_material_type := request.query_params.get('type', '')) != '': + queryset = queryset.filter(code__type__icontains=query_material_type) + + if (query_material_name := request.query_params.get('name', '')) != '': + queryset = queryset.filter(code__name__icontains=query_material_name) + + if query_creator_name := request.query_params.get('creator_name', '') != '': + queryset = queryset.filter(creator__name=query_creator_name) + + return queryset + + +class MaterialBaseInfoViewSet(CustomModelViewSet): + """ + 物料基本信息接口 + list:查询 + create:新增 + update:修改 + retrieve:单例 + destroy:删除 + get_material_type:获取所有物料类型 + get_material_name:获取所有物料类型名称 + get_id:根据id获取物料信息 + """ + queryset = MaterialBaseInfo.objects.all() + serializer_class = MaterialBaseInfoSerializer + update_serializer_class = MaterialBaseInfoUpdateSerializer + export_field_label = { + 'type': "物料类型", + 'name': "物料名称", + 'code': "物料编码", + 'safety_stock': "安全库存", + 'storage_location': "存放位置", + 'user_name': "创建人", + 'create_datetime': "创建时间", + 'update_datetime': "更新时间", + } + export_serializer_class = MaterialBaseInfoExportSerializer + + @transaction.atomic + def create(self, request, *args, **kwargs): + # 获取物料类型 + material_type = request.data.get('type', None) + + if material_type is None: + return ErrorResponse(msg='缺少type(物料类型)参数') + + try: + if int(request.data.get('safety_stock', 0)) <= 0: + return ErrorResponse(msg='安全库存必须大于0') + + except: + return ErrorResponse(msg='type参数类型错误') + + # 当天 00:00:00:00 - 23:59:59:999999 + today = datetime.date.today() + today = datetime.datetime(today.year, today.month, today.day, 0, 0, 0, 0) + tomorrow = datetime.datetime(today.year, today.month, today.day, 23, 59, 59, 999999) + # tomorrow = today + datetime.timedelta(hours=23, minutes=59, seconds=59) + + # 删选当天创建的数据, 删除的数据不进行过滤 + count = MaterialBaseInfo.objects.filter(create_datetime__range=(today, tomorrow), is_deleted=None) + + # 生成物料编码 + material_code = str(count.count() + 1).zfill(4) + + # 补充物料编码 + request.data['code'] = f"HY-{today.strftime('%Y%m%d')}-{material_code}" + + # 判断是否有删除记录 + queryset = MaterialBaseInfo.objects.filter(name=request.data["name"], is_deleted=True) + if queryset.count() > 0: + + instance = queryset[0] + + """ + 没有设置的字段设置为None + """ + data = {} + for key in ["type", "name", "safety_stock", "storage_location", "safety_stock"]: + data[key] = request.data.get(key, None) + + for key, value in data.items(): + instance.__setattr__(key, value) + + instance.is_deleted = False # 设置未删除 + instance.save() + + return DetailResponse(data=instance.DICT_DATA, msg="新增成功") + + data = super().create(request, *args, **kwargs) + + # 关联属性 + serializer = MaterialInventoryCreateSerializer(request.user, + data={ + "code": data.data['data']['id'], + "number": 0, + "safety_stock_level": 3 + }, + request=request) + + serializer.is_valid(raise_exception=True) + serializer.create(serializer.validated_data) + + return data + + def update(self, request, *args, **kwargs): + """ + 更新时检查是否变更了安全库存数量 + """ + try: + if (safety_stock := int(request.data.get('safety_stock', 0))) <= 0: + return ErrorResponse(msg='安全库存必须大于0') + + except: + return ErrorResponse(msg='type参数类型错误') + + # 先获取原有数据 + instance = self.get_object() + + # 保存变更数据 + data = super().update(request, *args, **kwargs) + + # 变更安全库存数量需要变更安全库存等级 + if safety_stock != instance.safety_stock: + # 获取库存数据对象 + inventory_obj = MaterialInventory.objects.get(code=instance.id) + # 变更等级 + inventory_obj.safety_stock_level = MaterialInventoryViewSet.inventory_level(inventory_obj.number, + safety_stock) + # 保存 + inventory_obj.save() + + if getattr(inventory_obj, '_prefetched_objects_cache', None): + # If 'prefetch_related' has been applied to a queryset, we need to + # forcibly invalidate the prefetch cache on the instance. + inventory_obj._prefetched_objects_cache = {} + + return data + + def list(self, request, *args, **kwargs): + """" + 前端code字段多页面共用,查询时返回关联的id字段 + """ + if code := request.query_params.get("code", ""): + queryset = self.get_queryset().filter(id=code) + + page = self.paginate_queryset(queryset) + if page is not None: + serializer = self.get_serializer(page, many=True, request=request) + return self.get_paginated_response(serializer.data) + + serializer = self.get_serializer(queryset, many=True) + return SuccessResponse(data=serializer.data) + + return super().list(request, *args, **kwargs) + + def destroy(self, request, *args, **kwargs): + """ + 物料删除 + """ + instance = self.get_object() + + if instance.inventory.number > 0: + return ErrorResponse(msg=f'该物料还有库存: {instance.inventory.number},禁止删除!!!') + + instance.delete() + return DetailResponse(data=[], msg="删除成功") + + @action(methods=['delete'], detail=False, permission_classes=[CustomPermission]) + def multiple_delete(self, request, *args, **kwargs): + + request_data = request.data + keys = request_data.get('keys', None) + if not keys: + return ErrorResponse(msg="未获取到keys字段") + + instances = [] + err_msg = [] + for instance in self.get_queryset().filter(id__in=keys): + instances.append(instance) + if instance.inventory.number > 0: + err_msg.append(f'物料编码:{instance.code}还有库存: {instance.inventory.number},禁止删除!!!') + # return ErrorResponse(msg=f'该物料:{instance.name}还有库存: {instance.inventory.number},禁止删除!!!') + if err_msg: + return ErrorResponse(msg=err_msg) + + for instance in instances: + instance.delete() + + return DetailResponse(data=[], msg=f"{len(instances)}条记录已删除") + + @action(methods=['get'], detail=False, permission_classes=[IsAuthenticated]) + def get_material_type(self, request, *args, **kwargs): + data = [] + info = [] + queryset = MaterialBaseInfo.objects.filter(is_deleted=None).order_by('type') + for value in queryset.values('id', 'type'): + if value['type'] not in info: + data.append(value) + info.append(value['type']) + return SuccessResponse(data=data) + + @action(methods=['get'], detail=False, permission_classes=[IsAuthenticated]) + def get_material_type_name(self, request, *args, **kwargs): + queryset = MaterialBaseInfo.objects.filter(is_deleted=None).order_by('name') + if 'type' in request.query_params: + queryset = queryset.filter(type=request.query_params['type']) + + return SuccessResponse(data=queryset.values('id', 'name', 'code')) + + @action(methods=['get'], detail=False, permission_classes=[IsAuthenticated], url_path='byIds') + def get_id(self, request, *args, **kwargs): + queryset = MaterialBaseInfo.objects.filter(is_deleted=None).filter(id__in=list(request.query_params.values())) + serializer = self.get_serializer(queryset, many=True) + return DetailResponse(data=serializer.data) + + +class MaterialInventoryViewSet(CustomModelViewSet): + """ + 物料库存管理接口 + list:查询 + create:新增 + update:修改 + retrieve:单例 + destroy:删除 + get_all_user:获取所有用户 + """ + queryset = MaterialInventory.objects.all() + serializer_class = MaterialInventorySerializer + extra_filter_class = [CoreModelFilterBankend, DataLevelPermissionsFilter, CustomModelFilterBanked] + export_field_label = { + 'type': "物料类型", + 'name': "物料名称", + 'code': "物料编码", + "number": "剩余库存", + 'safety_stock': "安全库存", + "safety_stock_level": "剩余库存等级", + 'storage_location': "存放位置", + 'user_name': "创建人", + 'create_datetime': "创建时间", + 'update_datetime': "更新时间", + } + export_serializer_class = MaterialInventoryExportSerializer + + def create(self, request, *args, **kwargs): + + return ErrorResponse(msg='禁止手动创建库存记录') + + def update(self, request, *args, **kwargs): + if request.data.get('number', None) is None: + return ErrorResponse(msg='缺少number(数量)参数') + + if request.data.get('record_type', None) is None: + return ErrorResponse(msg='缺少record_type(操作类型)参数') + + try: + number = int(request.data['number']) + if request.data['number'] <= 0: + return ErrorResponse(msg='number(数量)参数必须大于0') + except ValueError: + return ErrorResponse(msg='number(数量)参数必须为整数') + + ######################################################################################################### + instance = self.get_object() + + # 判断是入库还是出库 + if request.data['record_type'] == 0: + instance.number += number + else: + + if instance.number - number < 0: + return ErrorResponse(msg=f'库存数量不足, 剩余库存数量:{instance.number}') + if request.data.get('receive_name', None) is None: + return ErrorResponse(msg='缺少receive_name(领用人)参数') + + instance.number -= number + + # 库存等级 + instance.safety_stock_level = self.inventory_level(instance.number, instance.code.safety_stock) + ######################################################################################################### + + # 操作记录 + request.data['code'] = instance.code.id + serializer = MaterialRecordsUpdateSerializer(request.user, data=request.data, request=request) + serializer.is_valid(raise_exception=True) + serializer.create(serializer.validated_data) + ######################################################################################################### + # 保存数据 + instance.save() + ######################################################################################################### + + partial = kwargs.pop('partial', False) + serializer = self.get_serializer(instance, data=request.data, request=request, partial=partial) + + serializer.is_valid(raise_exception=True) + + 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 DetailResponse(data=serializer.data, msg="更新成功") + + @staticmethod + def inventory_level(inventory, safety_stock): + level = 3 + if inventory >= safety_stock * 2: + level = 0 + elif safety_stock <= inventory <= safety_stock * 2: + level = 1 + elif 1 <= inventory <= safety_stock: + level = 2 + return level + + # path('inventory/get_all_user/', MaterialInventoryViewSet.as_view({'get': 'get_all_user'})), + + @action(methods=['get'], detail=False, permission_classes=[]) + def get_all_user(self, request, *args, **kwargs): + from dvadmin.system.models import Users + + return SuccessResponse(data=Users.objects.all().exclude(is_superuser=True).values('id', 'name', 'dept__parent')) + + +class MaterialRecordsViewSet(CustomModelViewSet): + """ + 物料出入库记录接口 + list:查询 + create:新增 + update:修改 + retrieve:单例 + destroy:删除 + """ + queryset = MaterialRecords.objects.all() + serializer_class = MaterialRecordsSerializer + extra_filter_class = [CoreModelFilterBankend, DataLevelPermissionsFilter, CustomModelFilterBanked] + export_field_label = { + 'type': "物料类型", + 'name': "物料名称", + 'code': "物料编码", + 'safety_stock': "安全库存", + 'storage_location': "存放位置", + "number": "数量", + "record_type": "操作类型", + "receive_name": "领用人", + 'user_name': "创建人", + 'create_datetime': "创建时间", + 'update_datetime': "更新时间", + } + export_serializer_class = MaterialRecordsExportSerializer + + +class MaterialApplyForViewSet(CustomModelViewSet): + """ + 物料申请接口 + list:查询 + create:新增 + update:修改 + retrieve:单例 + destroy:删除 + revocation:撤销申请 + examine:审核申请 + dismissal:驳回申请 + """ + + queryset = MaterialApplyFor.objects.all() + serializer_class = MaterialApplyForSerializer + create_serializer_class = MaterialApplyForCreateSerializer + extra_filter_class = [CoreModelFilterBankend, DataLevelPermissionsFilter, CustomModelFilterBanked] + export_field_label = { + 'type': "物料类型", + 'name': "物料名称", + 'code': "物料编码", + 'safety_stock': "安全库存", + 'storage_location': "存放位置", + "number": "申请数量", + 'user_name': "申请人", + 'reason': "申请原因", + "examine_status": "审核状态", + "examine_user_name": "审核人", + 'url': "申请链接", + 'create_datetime': "创建时间", + 'update_datetime': "更新时间", + } + export_serializer_class = MaterialApplyForExportSerializer + + def create(self, request, *args, **kwargs): + + material = request.data.get('material', None) + if material is None: + return ErrorResponse(msg='缺少material(申请物料)参数') + request.data['code'] = material + + # 删除该属性,前端用于表单申请字段,后端实际并无该字段 + del request.data['material'] + + data = super().create(request, *args, **kwargs) + + websocket_push_designated_role( + GetPermissionUsers().get_permission_role('/api/material/apply_for/operation/examine/', 2), + title='物料申请通知', + message=f'{request.user.name}提交了新的物料申请, 请及时查看', + ) + + return DetailResponse(data=data.data, msg="申请成功") + + def update(self, request, *args, **kwargs): + + if request.data['examine_status'] not in [1, 2, 3]: + return ErrorResponse(msg='当前状态不允许重新申请') + + request.data['examine_status'] = 1 # 设置为待审核状态 + request.data['examine_opinion'] = None # 设置审核意见为None + request.data['examine_user'] = None # 设置审核人为None + + partial = kwargs.pop('partial', False) + + instance = self.get_object() + if instance.creator.id != request.user.id: + return ErrorResponse(msg='只能由“申请用户”重新修改提交') + + serializer = self.get_serializer(instance, data=request.data, request=request, partial=partial) + serializer.is_valid(raise_exception=True) + 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 = {} + + websocket_push_designated_role( + GetPermissionUsers().get_permission_role('/api/material/apply_for/operation/examine/', 2), + title='物料重新提交通知', + message=f'{request.user.name}重新提交了物料申请, 请及时查看', + ) + + return DetailResponse(data=serializer.data, msg="重新提交成功") + + def destroy(self, request, *args, **kwargs): + instance = self.get_object() + + # 超级管理员允许删除 + if instance.examine_status != 1 and request.user.is_superuser is False: + return ErrorResponse(msg='当前状态不允许删除') + + # 判断是否为申请人或者超级管理员 + if instance.creator.id != request.user.id and request.user.is_superuser is False: + return ErrorResponse(msg='申请单必须由申请人删除') + + return super().destroy(request, *args, **kwargs) + + @action(methods=['put'], detail=False, permission_classes=[CustomPermission], url_path='operation/revocation') + def revocation(self, request, *args, **kwargs): + + queryset = self.queryset.get(id=request.data.get('id', None)) + if queryset.examine_status != 1: + return ErrorResponse(msg='该申请单状态不处于“待审核”,无法撤销') + + # 判断是否为申请人或者超级管理员 + if queryset.creator.id != request.user.id and request.user.is_superuser is False: + return ErrorResponse(msg='申请单必须由申请人撤销') + + queryset.examine_status = 3 + queryset.save() + + return DetailResponse(msg='撤销成功') + + @action(methods=['put'], detail=False, permission_classes=[CustomPermission], url_path='operation/examine') + def examine(self, request, *args, **kwargs): + queryset = self.queryset.filter(id__in=list(request.data.get('ids', []))) + if queryset.count() == 0: + return ErrorResponse(msg='审核失败, 没有找到该记录') + + for obj in queryset: + if obj.examine_status != 1: + return ErrorResponse(msg=f'该申请单不处于“待审核”状态,物料名称: {obj.code.name}') + + obj.examine_status = 0 + obj.examine_opinion = "通过" + obj.examine_user = request.user.id + + # 一条数据不满足则不保存 + for obj in queryset: + websocket_push_designated_user(obj.creator.id, + title='物料申请审核通知', + message=f'您提交的物料申请已通过审核!', + material_type=obj.code.type, + material_name=obj.code.name, + number=obj.number, + ) + obj.save() + + return DetailResponse(msg=f'审核成功') + + @action(methods=['put'], detail=False, permission_classes=[CustomPermission], url_path='operation/dismissal') + def dismissal(self, request, *args, **kwargs): + queryset = self.queryset.filter(id__in=list(request.data.get('ids', []))) + if queryset.count() == 0: + return ErrorResponse(msg='审核失败, 没有找到该记录') + + for obj in queryset: + if obj.examine_status != 1: + return ErrorResponse(msg=f'该申请单不处于“待审核”状态,物料名称: {obj.code.name}') + + obj.examine_status = 2 + obj.examine_user = request.user.id + obj.examine_opinion = request.data['examine_opinion'] + + # 一条数据不满足则不保存 + for obj in queryset: + websocket_push_designated_user(obj.creator.id, + title='物料申请审核通知', + message=f'您提交的物料申请已被驳回!驳回原因:{request.data["examine_opinion"]}!', + material_type=obj.code.type, + material_name=obj.code.name, + number=obj.number + ) + + obj.save() + + return DetailResponse(msg='驳回申请成功') diff --git a/backend/app/test_tool/views.py b/backend/app/test_tool/views.py index c8e13ece..b6a1abe1 100644 --- a/backend/app/test_tool/views.py +++ b/backend/app/test_tool/views.py @@ -228,12 +228,11 @@ class ToolLicenseViewSet(CustomModelViewSet): return ErrorResponse(data=[], msg="您没有该操作的执行权限。") # 获取是否启动自动授权 - request.data['status'] = dispatch.get_system_config_values("tool.license_auto_authorized") request.data['license'] = self.generate_license(request.data['uuid'], request.data.get('license', '')) - queryset = TestToolLicenseModel.objects.filter(is_deleted=True, uuid=request.data['uuid']) + queryset = TestToolLicenseModel.objects.filter(is_deleted=None, uuid=request.data['uuid']) if queryset: # 软删除恢复数据 instance = queryset[0] @@ -249,6 +248,6 @@ class ToolLicenseViewSet(CustomModelViewSet): # forcibly invalidate the prefetch cache on the instance. instance._prefetched_objects_cache = {} - return DetailResponse(data=serializer.data, msg="更新成功") + return DetailResponse(data=serializer.data, msg="创建成功") return super().create(request, *args, **kwargs) diff --git a/backend/application/settings.py b/backend/application/settings.py index 36a3ce9b..2a1c0be3 100644 --- a/backend/application/settings.py +++ b/backend/application/settings.py @@ -63,7 +63,8 @@ INSTALLED_APPS = [ ] MY_APPS = [ - 'app.test_tool' + 'app.test_tool', + 'app.material' ] INSTALLED_APPS += MY_APPS diff --git a/backend/application/urls.py b/backend/application/urls.py index 2fc8eeb5..261ed973 100644 --- a/backend/application/urls.py +++ b/backend/application/urls.py @@ -123,6 +123,7 @@ urlpatterns = ( MY_URLS = [ path("api/tool/", include("app.test_tool.urls"), name="test_tool"), + path("api/material/", include("app.material.urls"), name="material"), ] urlpatterns += MY_URLS diff --git a/backend/dvadmin/utils/models.py b/backend/dvadmin/utils/models.py index 7ed2f928..9b9f0982 100644 --- a/backend/dvadmin/utils/models.py +++ b/backend/dvadmin/utils/models.py @@ -26,18 +26,28 @@ class SoftDeleteManager(models.Manager): """支持软删除""" def __init__(self, *args, **kwargs): - self.__add_is_del_filter = False + # self.__add_is_del_filter = False + self.__get_all = False # 不筛选数据 super(SoftDeleteManager, self).__init__(*args, **kwargs) def filter(self, *args, **kwargs): # 考虑是否主动传入is_deleted - if not kwargs.get('is_deleted') is None: - self.__add_is_del_filter = True + if "is_deleted" in kwargs and kwargs.get('is_deleted') is None: + self.__get_all = True + + # 删除is_deleted字段,防止其他过滤器为None条件过滤 + kwargs.pop('is_deleted') + else: + self.__get_all = False + return super(SoftDeleteManager, self).filter(*args, **kwargs) def get_queryset(self): - if self.__add_is_del_filter: - return SoftDeleteQuerySet(self.model, using=self._db).exclude(is_deleted=False) + # 不进行筛选删除标记 + if self.__get_all: + self.__get_all = False # 仅允许一次 + return SoftDeleteQuerySet(self.model) + return SoftDeleteQuerySet(self.model).exclude(is_deleted=True) def get_by_natural_key(self, name): diff --git a/web/src/App.vue b/web/src/App.vue index 56f585e2..6326581c 100644 --- a/web/src/App.vue +++ b/web/src/App.vue @@ -106,6 +106,17 @@ watch( import { messageCenterStore } from '/@/stores/messageCenter'; const wsReceive = (message: any) => { const data = JSON.parse(message.data); + if (data.contentType === 'MATERIAL') { + ElNotification({ + title: data.title, + message: data.content, + type: 'info', + position: 'bottom-right', + duration: 0, + }); + return + } + const { unread } = data; const messageCenter = messageCenterStore(); messageCenter.setUnread(unread); diff --git a/web/src/utils/customCrudMaterial.ts b/web/src/utils/customCrudMaterial.ts new file mode 100644 index 00000000..ec399772 --- /dev/null +++ b/web/src/utils/customCrudMaterial.ts @@ -0,0 +1,165 @@ +import {dict, useTypes} from "@fast-crud/fast-crud"; + + +//添加自定义字段类型,使用type:'time2',你就可以省略下面的配置 +//不要写在页面里,这个是全局的,要写在vue.use(FastCrud)之后 +const { addTypes, getTypes } = useTypes() + +addTypes({ + 'custom':{ //如果与官方字段类型同名,将会覆盖官方的字段类型 + form: { component: { name: 'el-input' } }, + // column:{ component: {name: 'a-input'} }, // text=无类型 + search: { component: { name: 'fs-dict-select' } } + } +}) + +export const customCrudConfig = (crudExpose: {}) => { + return { + + type: { + title: '物料类型', + type: 'custom', + column: { + show: true, + align: 'center', + sortable: true, + width: 200, + }, + + search: { + show: true, + + }, + dict: dict({ + // isTree: true, + url: '/api/material/base_info/get_material_type/', + value: 'type', + label: 'type', + cache: true, + }), + form: { + show: true, + component: { + placeholder: '请输入物料类型', + filterable: true, + props: { + allowCreate: true, + filterable: true, + clearable: true, + }, + }, + rules: [ + // 表单校验规则 + { + required: true, + message: '请填写物料名称', + }, + ], + valueChange({ form, value, getComponentRef }) { + form.name = ""; // 将“name”的值置空 + form.code = ""; // 将“code”的值置空 + getComponentRef("name").reloadDict(); // 触发“city”重新加载字典 + getComponentRef("code").reloadDict(); // 触发“city”重新加载字典 + // if (value) { + // getComponentRef("name").reloadDict(); // 触发“city”重新加载字典 + // getComponentRef("code").reloadDict(); // 触发“city”重新加载字典 + // } + } + }, + }, + name: { + title: '物料名称', + search: { + show: true, + }, + type: 'custom', + dict: dict({ + value: 'name', + label: 'name', + cache: true, + prototype: true, + url({ form }) { + if (form && form.type != null) { + // 本数据字典的url是通过前一个select的选项决定的 + return `/api/material/base_info/get_material_type_name/?limit=999&type=${form.type}`; + } + return "/api/material/base_info/get_material_type_name/?limit=999"; // 返回undefined 将不加载字典 + }, + }), + column:{ + show: true, + align: 'center', + sortable: true, + width: 200, + + }, + form: { + show: true, + component: { + placeholder: '请填写物料名称', + filterable: true, + props: { + allowCreate: true, + filterable: true, + clearable: true, + }, + }, + rules: [ + // 表单校验规则 + { + required: true, + message: '请填写物料名称', + }, + ], + valueChange({ form, value, getComponentRef }) { + if (value) { + form.code = ''; // 清空物料编码, 防止不一致导致查询失效 + } + } + }, + }, + code: { + title: '物料编码', + search: { + show: true, + }, + column:{ + show: true, + align: 'center', + sortable: true, + width: 200, + }, + type: 'custom', + dict: dict({ + value: 'id', + label: 'code', + cache: true, + prototype: true, + url({ form }) { + if (form && form.type != null) { + // 本数据字典的url是通过前一个select的选项决定的 + return `/api/material/base_info/get_material_type_name/?limit=999&type=${form.type}`; + } + return "/api/material/base_info/get_material_type_name/?limit=999"; // 返回undefined 将不加载字典 + }, + }), + form: { + show: true, + component: { + placeholder: '请填写物料编码', + filterable: true, + props: { + allowCreate: true, + filterable: true, + clearable: true, + }, + }, + valueChange({ form, value, getComponentRef }) { + if (value) { + form.name = ''; // 清空物料名称, 防止不一致导致查询失效 + } + } + }, + }, + } +} diff --git a/web/src/views/materialApplyFor/api.ts b/web/src/views/materialApplyFor/api.ts new file mode 100644 index 00000000..a383261f --- /dev/null +++ b/web/src/views/materialApplyFor/api.ts @@ -0,0 +1,60 @@ +import { Stream } from 'stream'; +import { request, downloadFile } from '/@/utils/service'; +import { PageQuery, UserPageQuery, AddReq, DelReq, EditReq, InfoReq } from '@fast-crud/fast-crud'; +import { getBaseURL } from '/@/utils/baseUrl' + +export const apiPrefix = 'api/material/apply_for/'; +export function GetList(query: UserPageQuery) { + return request({ + url: apiPrefix, + method: 'get', + params: query, + }); +} +export function GetObj(id: InfoReq) { + return request({ + url: apiPrefix + id, + method: 'get', + }); +} +export function AddObj(obj: AddReq) { + return request({ + url: apiPrefix, + method: 'post', + data: obj, + }); +} + +export function UpdateObj(obj: EditReq) { + return request({ + url: apiPrefix + obj.id + '/', + method: 'put', + data: obj, + }); +} + +export function DelObj(id: DelReq) { + return request({ + url: apiPrefix + id + '/', + method: 'delete', + data: { id }, + }); +} + + +export function exportData(params: any) { + return downloadFile({ + url: apiPrefix + 'export_data/', + params: params, + method: 'get', + }); +} + + +export function UpdateStatue(id: any, status: any) { + return request({ + url: apiPrefix + 'revocation/', + method: 'put', + data: {"id": id, "status": status}, + }); +} \ No newline at end of file diff --git a/web/src/views/materialApplyFor/crud.tsx b/web/src/views/materialApplyFor/crud.tsx new file mode 100644 index 00000000..173ff10e --- /dev/null +++ b/web/src/views/materialApplyFor/crud.tsx @@ -0,0 +1,748 @@ +import * as api from './api'; +import { ElMessageBox, ElNotification} from 'element-plus'; +import { errorMessage, successMessage, successNotification, errorNotification,} from '/@/utils/message'; +import { request } from '/@/utils/service'; +import {dict, UserPageQuery, AddReq, DelReq, EditReq, CreateCrudOptionsProps, CreateCrudOptionsRet } from '@fast-crud/fast-crud'; +import {dictionary} from '/@/utils/dictionary'; + +import {auth} from "/@/utils/authFunction"; + +import {customCrudConfig} from "/@/utils/customCrudMaterial"; + +import {createCrudOptions as UserCreateCrudOptions} from '/@/views/user/crud'; + +import {createCrudOptions as MaterialBasecreateCrudOptions} from '/@/views/materialBase/crud'; +import * as materialBaseTableApi from '/@/views/materialBase/api'; + +import * as UsereApi from '/@/views/system/personal/api'; + +import { ref } from "vue"; +import { useCompute } from "@fast-crud/fast-crud"; + + +var UserInfo = {id: -1, is_superuser: false} + +export const getUserInfo = function () { + UsereApi.GetUserInfo({}).then((res: any) => { + UserInfo = res.data + }); +}; + +export const createCrudOptions = function ({ crudExpose, context}: CreateCrudOptionsProps): CreateCrudOptionsRet { + const {compute} = useCompute() + const pageRequest = async (query: UserPageQuery) => { + return await api.GetList(query); + }; + const editRequest = async ({ form, row }: EditReq) => { + form.id = row.id; + return await api.UpdateObj(form); + }; + const delRequest = async ({ row }: DelReq) => { + return await api.DelObj(row.id); + }; + const addRequest = async ({ form }: AddReq) => { + return await api.AddObj(form); + }; + const exportRequest = async (query: UserPageQuery) => { + return await api.exportData(query); + }; + + const updateRequest = async (data: {}, operation="") => { + await request({ + url: "api/material/apply_for/operation/" + operation + "/", + method: 'put', + data: data} + ).then((res: any) => { + if (res) { + if (res["code"] === 2000) { + successNotification(res["msg"]) + } + else { + errorNotification(res["msg"]) + } + } + }) + // 刷新 + crudExpose.doRefresh() + }; + + const selectedIds = ref([]); + + const onSelectionChange = (changed) => { + selectedIds.value = changed.map((item) => item.id); + }; + + return { + crudOptions: { + actionbar: { + buttons: { + add: { + icon: "CirclePlusFilled", + show: auth('materialApply:Create'), + text: "申请", + }, + export: { + icon: "Upload", + style:{backgroundColor: "#6495ED", color: "white"}, + text: '导出', //按钮文字 + title: '导出', //鼠标停留显示的信息 + show: auth('materialApply:Export'), + click() { + return exportRequest(crudExpose!.getSearchFormData()); + }, + }, + examine: { + text: "审核通过", + icon: "SuccessFilled", + size: "Big", + show: auth('materialApply:Examine'), + style:{backgroundColor: "#32CD32", color: "white"}, + click: async () => { + if (selectedIds.value?.length > 0) { + await ElMessageBox.confirm(`确定要批量审核这${selectedIds.value.length}条记录吗`, "确认"); + updateRequest({"ids": selectedIds.value}, "examine") + selectedIds.value = []; + } else { + errorMessage("请先勾选记录"); + } + } + }, + dismissal: { + text: "驳回申请", + icon: "CircleCloseFilled", + show: auth('materialApply:Dismissal'), + style:{backgroundColor: "#00BFFF", color: "white"}, + click: async () => { + if (selectedIds.value?.length > 0) { + const {value} = await ElMessageBox.prompt("请输入驳回原因!",`确定要 “驳回” 这${selectedIds.value.length}条记录吗? `); + if (value == "" || value == null) { + errorMessage("请输入驳回原因!") + return + } + updateRequest({"ids": selectedIds.value, "examine_opinion": value}, "dismissal") + + selectedIds.value = []; + } else { + errorMessage("请先勾选记录"); + } + } + }, + }, + }, + request: { + pageRequest, + addRequest, + editRequest, + delRequest, + }, + form: { + wrapper:{ + width: 500, + }, + col: { + span: 24 + } + }, + viewForm: { + wrapper:{ + width: "800", + }, + col: { + span: 12 + } + }, + addForm: { + columns: { + type: { + show: false + }, + name: { + show: false + }, + code: { + show: false + }, + material: { + show: true, + } + } + }, + editForm: { + columns: { + type: { + show: false + }, + name: { + show: false + }, + code: { + show: false + }, + material: { + show: true, + component: { + readonly: true, + // disabled: true + }, + } + } + }, + rowHandle: { + //固定右侧 + fixed: 'right', + align: 'center', + // width: 300, + show: true, + buttons: { + edit: { + order: 2, + iconRight: 'Edit', + text: "重新申请", + // size: "small", + style:{backgroundColor: "#8A2BE2", color: "white"}, + show: compute(({row})=>{ + if (auth('materialApply:Update') === false) { + return false + } + if (row.creator !== UserInfo.id && UserInfo.is_superuser !== true) { + return false + } + return true + }), + }, + remove: { + order: 4, + iconRight: 'Delete', + text: "删除申请", + // size: "small", + show: compute(({row})=>{ + if (auth('materialApply:Delete') === false) { + return false + } + if (row.creator !== UserInfo.id && UserInfo.is_superuser !== true) { + return false + } + return true + }), + }, + view: { + order: 5, + iconRight: 'View', + text: "查看详情", + // size: "small", + style: {backgroundColor: "#9FB6CD", color: "white"}, + show: auth('materialApply:Retrieve'), + }, + examine: { + order: 0, + iconRight: 'SuccessFilled', + // dropdown: true, + text: "审核通过", + title: "审核通过", + show: auth('materialApply:Examine'), + // size: "small", + style:{backgroundColor: "#32CD32", color: "white"}, + click: async ({row}) => { + if (row.examine_status != 1){ + errorMessage('当前状态不允许审核') + return false + } + await ElMessageBox.confirm("您确定要审核该记录吗?", "审核提示") + updateRequest({"ids": [row.id]}, "examine") + } + }, + dismissal: { + order: 1, + iconRight: 'CircleCloseFilled', + // dropdown: true, + // type: 'text', + text: "驳回申请", + title: "驳回", + show: auth('materialApply:Dismissal'), + // size: "small", + style:{backgroundColor: "#00BFFF", color: "white"}, + click: async ({row}) => { + if (row.examine_status != 1){ + errorMessage('当前状态不允许审核') + return false + } + const {value} = await ElMessageBox.prompt("请输入驳回原因!", "审核提示"); + if (value == "" || value == null) { + errorMessage("请输入驳回原因!") + return + } + updateRequest({"ids": [row.id], "examine_opinion": value}, "dismissal") + } + }, + revocation: { + order: 3, + iconRight: 'BottomLeft', + // type: 'text', + text: "撤销申请", + title: "撤销申请", + // size: "small", + show: compute(({row})=>{ + if (auth('materialApply:Revocation') === false) { + return false + } + if (row.creator !== UserInfo.id && UserInfo.is_superuser !== true) { + return false + } + return true + }), + style:{backgroundColor: "#EEC900", color: "white"}, + click: async ({row}) => { + if (row.examine_status !== 1){ + errorMessage('当前状态不允许撤销') + return false + } + await ElMessageBox.confirm("您确定要撤回该记录吗?", "撤回提示") + updateRequest({"id": row.id}, "revocation") + } + }, + }, + dropdown: { + show: false, + more: { + //更多按钮配置 + show: false, + type: "text", + text: "审核", + iconRight: "View", + icon: "" + } + } + }, + table: { + editable: { + mode: "cell", + }, + rowKey: "id", + onSelectionChange + }, + columns: { + $checked: { + title: "选择", + form: { show: false}, + column: { + show: auth('materialApply:Examine') || auth('materialApply:Dismissal') , + type: "selection", + align: "center", + width: "55px", + columnSetDisabled: true, //禁止在列设置中选择 + selectable(row, index) { + return row.examine_status === 1; //设置第一行不允许选择 + // return true; //设置第一行不允许选择 + } + } + }, + _index: { + title: '序号', + form: { show: false }, + column: { + //type: 'index', + align: 'center', + width: '70px', + columnSetDisabled: true, //禁止在列设置中选择 + formatter: (context) => { + //计算序号,你可以自定义计算规则,此处为翻页累加 + let index = context.index ?? 1; + let pagination = crudExpose!.crudBinding.value.pagination; + return ((pagination!.currentPage ?? 1) - 1) * pagination!.pageSize + index + 1; + }, + fixed: "left", + }, + }, + material: { + title: "申请物料", + order: 0, + type: "table-select", + dict: dict({ + value: "id", + label: "name", + getNodesByValues: async (values: any[]) => { + const data = await materialBaseTableApi.GetByIds(values) + return data.data; + } + }), + search: { + show: false, + }, + column:{ + show: false, + columnSetDisabled: true, //禁止在列设置中选择 + }, + form: { + show: false, + rules: [ + // 表单校验规则 + { + required: true, + message: '请填写申请物料', + }, + ], + component: { + placeholder: '请填写申请物料', + multiple: false, + rowKey: "id", //element-plus 必传 + createCrudOptions: MaterialBasecreateCrudOptions, + crudOptionsOverride: { + columns: { + $checked: { + column:{ + show: false, + columnSetDisabled: true, //禁止在列设置中选择 + }, + }, + }, + actionbar: { + buttons: { + add: { + show: false + } + }, + }, + rowHandle: { + + // show: false, + buttons: { + edit: { + show: false + }, + remove: { + show: false + } + + }, + // fixed: "right" + } + } + }, + }, + }, + ...customCrudConfig(), + specification: { + title: '物料规格', + search: { + show: false, + }, + type: 'text', + column:{ + align: 'center', + sortable: true, + width: 200, + show: false + }, + form: { + show: false, + component: { + placeholder: '请输入物料规格', + }, + }, + }, + number: { + title: '申请数量', + search: { + show: false, + }, + type: ['number'], + column:{ + align: 'center', + sortable: true, + width: 120, + }, + form: { + show: true, + rules: [ + // 表单校验规则 + { + type: 'number', + min: 1, + required: true, + message: '数量需要大于0', + }, + ], + component: { + placeholder: '请填写出库数量', + }, + }, + }, + examine_status: { + title: '审核状态', + search: { + show: true, + }, + type: 'dict-select', + dict: dict({ + data: dictionary('material_examine_status'), + }), + column:{ + align: 'center', + sortable: true, + width: 120, + }, + form: { + show: false + }, + viewForm: { + show: true + } + }, + reason: { + title: '申请理由', + search: { + show: false, + }, + type: ['textarea', 'colspan'], + column:{ + align: 'center', + sortable: true, + width: 150, + }, + form: { + show: true + }, + }, + url: { + title: '申请链接', + search: { + show: false, + }, + type: 'link', + column:{ + align: 'center', + width: 200, + component: { + on: { + // 注意:必须要on前缀 + onClick({row}) { + if (row.url) { + window.open(row.url); + } + } + } + } + }, + form: { + show: true + }, + }, + examine_opinion: { + title: '审核意见', + search: { + show: false, + }, + type: 'text', + column:{ + align: 'center', + sortable: true, + width: 150, + }, + form: { + show: false + }, + viewForm: { + show: true + } + }, + creator_name: { + title: '申请人', + type: "table-select", + dict: dict({ + value: "name", + label: "name", + // getNodesByValues: async (values: any[]) => { + // // if (1 != (1 % values)) { + // // return + // // } + // console.log(1, values, 2) + // const data = await UserTableApi.GetObj(values) + // console.log(data.data) + // return data.data; + // } + }), + search: { + show: true + }, + column: { + width: 100, + show: true, + type: 'text', + }, + form: { + show: false, + component: { + placeholder: '申请人', + multiple: false, + rowKey: "name", //element-plus 必传 + createCrudOptions: UserCreateCrudOptions, + crudOptionsOverride: { + form: { + wrapper: { + draggable: false, + // width: '400px', //antdv对话框的宽度 + // width: 400, + }, + }, + + rowHandle: { + show: false, + // fixed: "right" + } + } + }, + }, + viewForm: { + show: true + }, + }, + examine_user_name: { + title: '审核人', + search: { + show: false, + }, + type: 'text', + column:{ + align: 'center', + sortable: true, + width: 120, + }, + form: { + show: false + }, + viewForm: { + show: true + } + }, + create_datetime: { + title: '申请时间', + type: 'datetime', + search: { + show: true, + col: {span: 8}, + component: { + type: 'datetimerange', + props: { + 'start-placeholder': '开始时间', + 'end-placeholder': '结束时间', + 'value-format': 'YYYY-MM-DD HH:mm:ss', + 'picker-options': { + shortcuts: [{ + text: '最近一周', + onClick(picker) { + const end = new Date(); + const start = new Date(); + start.setTime(start.getTime() - 3600 * 1000 * 24 * 7); + picker.$emit('pick', [start, end]); + } + }, { + text: '最近一个月', + onClick(picker) { + const end = new Date(); + const start = new Date(); + start.setTime(start.getTime() - 3600 * 1000 * 24 * 30); + picker.$emit('pick', [start, end]); + } + }, { + text: '最近三个月', + onClick(picker) { + const end = new Date(); + const start = new Date(); + start.setTime(start.getTime() - 3600 * 1000 * 24 * 90); + picker.$emit('pick', [start, end]); + } + }] + } + } + }, + valueResolve(context: any) { + const {key, value} = context + //value解析,就是把组件的值转化为后台所需要的值 + //在form表单点击保存按钮后,提交到后台之前执行转化 + if (value) { + context.form.create_datetime_after = value[0] + context.form.create_datetime_before = value[1] + } + // ↑↑↑↑↑ 注意这里是form,不是row + } + }, + column: { + width: 160, + show: true, + sortable: true, + }, + form: { + show: false, + }, + viewForm: { + show: true + }, + }, + update_datetime: { + title: '最后更新时间', + type: 'datetime', + search: { + show: true, + col: {span: 8}, + component: { + type: 'datetimerange', + props: { + 'start-placeholder': '开始时间', + 'end-placeholder': '结束时间', + 'value-format': 'YYYY-MM-DD HH:mm:ss', + 'picker-options': { + shortcuts: [{ + text: '最近一周', + onClick(picker) { + const end = new Date(); + const start = new Date(); + start.setTime(start.getTime() - 3600 * 1000 * 24 * 7); + picker.$emit('pick', [start, end]); + } + }, { + text: '最近一个月', + onClick(picker) { + const end = new Date(); + const start = new Date(); + start.setTime(start.getTime() - 3600 * 1000 * 24 * 30); + picker.$emit('pick', [start, end]); + } + }, { + text: '最近三个月', + onClick(picker) { + const end = new Date(); + const start = new Date(); + start.setTime(start.getTime() - 3600 * 1000 * 24 * 90); + picker.$emit('pick', [start, end]); + } + }] + } + } + }, + valueResolve(context: any) { + const {key, value} = context + //value解析,就是把组件的值转化为后台所需要的值 + //在form表单点击保存按钮后,提交到后台之前执行转化 + if (value) { + context.form.create_datetime_after = value[0] + context.form.create_datetime_before = value[1] + } + // ↑↑↑↑↑ 注意这里是form,不是row + } + }, + column: { + width: 160, + show: true, + sortable: true, + }, + form: { + show: false, + }, + viewForm: { + show: true + }, + } + }, + }, + }; +}; diff --git a/web/src/views/materialApplyFor/index.vue b/web/src/views/materialApplyFor/index.vue new file mode 100644 index 00000000..0bc0d3c8 --- /dev/null +++ b/web/src/views/materialApplyFor/index.vue @@ -0,0 +1,39 @@ + + + diff --git a/web/src/views/materialBase/api.ts b/web/src/views/materialBase/api.ts new file mode 100644 index 00000000..ca41d82f --- /dev/null +++ b/web/src/views/materialBase/api.ts @@ -0,0 +1,70 @@ +import { Stream } from 'stream'; +import { request, downloadFile } from '/@/utils/service'; +import { UserPageQuery, AddReq, DelReq, EditReq, InfoReq } from '@fast-crud/fast-crud'; +import { getBaseURL } from '/@/utils/baseUrl' + +export const apiPrefix = 'api/material/base_info/'; +export function GetList(query: UserPageQuery) { + return request({ + url: apiPrefix, + method: 'get', + params: query, + }); +} +export function GetObj(id: InfoReq) { + return request({ + url: apiPrefix + id, + method: 'get', + }); +} + +export function GetByIds(ids: any) { + return request({ + url: apiPrefix + "byIds/", + method: 'get', + params: ids, + }); +} + +export function AddObj(obj: AddReq) { + return request({ + url: apiPrefix, + method: 'post', + data: obj, + }); +} + +export function UpdateObj(obj: EditReq) { + return request({ + url: apiPrefix + obj.id + '/', + method: 'put', + data: obj, + }); +} + +export function DelObj(id: DelReq) { + return request({ + url: apiPrefix + id + '/', + method: 'delete', + data: { id }, + }); +} + + +export function exportData(params: any) { + return downloadFile({ + url: apiPrefix + 'export_data/', + params: params, + method: 'get', + }); +} + + +export function MultipleDelObj(data: {}) { + return request({ + url: apiPrefix + 'multiple_delete/', + method: 'delete', + data: data, + }); +} + diff --git a/web/src/views/materialBase/crud.tsx b/web/src/views/materialBase/crud.tsx new file mode 100644 index 00000000..f6166b39 --- /dev/null +++ b/web/src/views/materialBase/crud.tsx @@ -0,0 +1,286 @@ +import * as api from './api'; +import { ElMessageBox} from 'element-plus'; +import { errorMessage, successMessage, successNotification } from '/@/utils/message'; +import {dictionary} from '/@/utils/dictionary'; +import {compute, dict, UserPageQuery, AddReq, DelReq, EditReq, CrudExpose, CrudOptions, CreateCrudOptionsProps, CreateCrudOptionsRet,FormWrapperContext } from '@fast-crud/fast-crud'; + +import {auth} from "/@/utils/authFunction"; + +import {commonCrudConfig} from "/@/utils/commonCrud"; +import {customCrudConfig} from "/@/utils/customCrudMaterial"; + +import { ref } from "vue"; +import { useCompute } from "@fast-crud/fast-crud"; + + +export const createCrudOptions = function ({ crudExpose }: CreateCrudOptionsProps): CreateCrudOptionsRet { + + const pageRequest = async (query: UserPageQuery) => { + return await api.GetList(query); + }; + const editRequest = async ({ form, row }: EditReq) => { + form.id = row.id; + return await api.UpdateObj(form); + }; + const delRequest = async ({ row }: DelReq) => { + return await api.DelObj(row.id); + }; + const addRequest = async ({ form }: AddReq) => { + return await api.AddObj(form); + }; + + const exportRequest = async (query: UserPageQuery) => { + return await api.exportData(query); + }; + + const MultipleDelRequest = async (data: {}) => { + return await api.MultipleDelObj(data); + }; + + const selectedIds = ref([]); + + const onSelectionChange = (changed) => { + selectedIds.value = changed.map((item) => item.id); + }; + + return { + crudOptions: { + actionbar: { + buttons: { + add: { + icon: "CirclePlusFilled", + show: auth('materialBaseInfo:Create'), + text: '添加', + }, + export: { + icon: "Upload", + style:{backgroundColor: "#6495ED", color: "white"}, + text: '导出', //按钮文字 + title: '导出', //鼠标停留显示的信息 + show: auth('materialBaseInfo:Export'), + click: async () => { + return await exportRequest(crudExpose!.getSearchFormData()); + }, + }, + m_delete: { + icon: "DeleteFilled", + style:{backgroundColor: "#FF2520", color: "white"}, + text: '批量删除', //按钮文字 + title: '批量删除', //鼠标停留显示的信息 + show: auth('materialBaseInfo:MultipleDelete'), + click: async () => { + if (selectedIds.value?.length < 1) { + errorMessage("请先勾选记录"); + return + } + await ElMessageBox.confirm(`确定要删除这${selectedIds.value.length}条记录吗`, "确认"); + const req = await MultipleDelRequest({"keys": selectedIds.value}) + selectedIds.value = []; + successNotification(req.msg) + crudExpose.doRefresh() + }, + }, + }, + }, + // tabs: { + // show: true, + // name:'status', //对应查询字段key + // defaultOption:{ + // show:true, //是否显示默认页签 + // value: '', //点击此页签时,对应的查询value + // label: "全部" //页签显示名称 + // } + // }, + // editForm: { + // wrapper:{ + // title:"生成License", + // buttons: { + // ok: {show: true, text: "生成"}, // fs-button配置 + + // }, + // }, + // }, + request: { + pageRequest, + addRequest, + editRequest, + delRequest, + }, + rowHandle: { + //固定右侧 + fixed: 'right', + align: 'center', + width: 300, + show: true, + buttons: { + + view: { + iconRight: 'View', + // type: 'text', + show: auth('materialBaseInfo:Search'), + }, + edit: { + iconRight: 'Edit', + // type: 'text', + text: '编辑', + show: auth('materialBaseInfo:Update'), + }, + remove: { + iconRight: 'Delete', + // type: 'text', + show: auth('materialBaseInfo:Delete') + } + }, + }, + viewForm: { + col: { + span: 12, //双例模式 + }, + wrapper: { + width: 1000 + }, + columns: { + code: { + show: true + } + } + }, + form: { + col: { + span: 24, //单例模式 + }, + wrapper: { + width: 400 + }, + }, + addForm: { + columns: { + // 默认事件,当字段值改变会清空其他字段内容 + type: { + valueChange({ form, value, getComponentRef }) { + + } + }, + name: { + valueChange({ form, value, getComponentRef }) { + + } + }, + code: { + show: false + } + } + }, + editForm: { + columns: { + code: { + show: false + } + } + }, + table: { + rowKey: "id", + onSelectionChange + }, + columns: { + $checked: { + title: "选择", + form: { show: false}, + column: { + show: auth('materialBaseInfo:MultipleDelete'), + type: "selection", + align: "center", + width: "55px", + columnSetDisabled: true, //禁止在列设置中选择 + // selectable(row, index) { + // // return row.examine_status === 1; //设置第一行不允许选择 + // return true; //设置第一行不允许选择 + // } + } + }, + _index: { + title: '序号', + form: { show: false }, + column: { + //type: 'index', + align: 'center', + width: '70px', + columnSetDisabled: true, //禁止在列设置中选择 + formatter: (context) => { + //计算序号,你可以自定义计算规则,此处为翻页累加 + let index = context.index ?? 1; + let pagination = crudExpose!.crudBinding.value.pagination; + return ((pagination!.currentPage ?? 1) - 1) * pagination!.pageSize + index + 1; + }, + fixed: "left", + }, + }, + ...customCrudConfig(crudExpose), + specification: { + title: '物料规格', + search: { + show: true, + }, + type: 'text', + column:{ + align: 'center', + sortable: true, + width: 300, + }, + form: { + show: true, + component: { + placeholder: '请输入物料规格', + }, + }, + }, + storage_location: { + title: '存放位置', + search: { + show: false, + }, + type: 'text', + column:{ + align: 'center', + sortable: true, + }, + form: { + show: true, + component: { + placeholder: '请输入存放位置', + }, + }, + }, + safety_stock: { + title: '安全库存', + search: { + show: false, + }, + type: 'number', + column:{ + align: 'center', + sortable: true, + width: 150, + }, + form: { + show: true, + rules: [ + // 表单校验规则 + { + type: 'number', + min: 1, + required: true, + message: '安全库存必须大于0', + } + ], + component: { + placeholder: '请输入安全库存', + }, + }, + }, + ...commonCrudConfig() + }, + + }, + }; +}; diff --git a/web/src/views/materialBase/index.vue b/web/src/views/materialBase/index.vue new file mode 100644 index 00000000..8c089468 --- /dev/null +++ b/web/src/views/materialBase/index.vue @@ -0,0 +1,30 @@ + + + diff --git a/web/src/views/materialInventory/api.ts b/web/src/views/materialInventory/api.ts new file mode 100644 index 00000000..d04cbebe --- /dev/null +++ b/web/src/views/materialInventory/api.ts @@ -0,0 +1,52 @@ +import { Stream } from 'stream'; +import { request, downloadFile } from '/@/utils/service'; +import { UserPageQuery, AddReq, DelReq, EditReq, InfoReq } from '@fast-crud/fast-crud'; +import { getBaseURL } from '/@/utils/baseUrl' + +export const apiPrefix = 'api/material/inventory/'; +export function GetList(query: UserPageQuery) { + return request({ + url: apiPrefix, + method: 'get', + params: query, + }); +} +export function GetObj(id: InfoReq) { + return request({ + url: apiPrefix + id, + method: 'get', + }); +} +export function AddObj(obj: AddReq) { + return request({ + url: apiPrefix, + method: 'post', + data: obj, + }); +} + +export function UpdateObj(obj: EditReq) { + console.log(obj) + return request({ + url: apiPrefix + obj.id + '/', + method: 'put', + data: obj, + }); +} + +export function DelObj(id: DelReq) { + return request({ + url: apiPrefix + id + '/', + method: 'delete', + data: { id }, + }); +} + + +export function exportData(params: any) { + return downloadFile({ + url: apiPrefix + 'export_data/', + params: params, + method: 'get', + }); +} \ No newline at end of file diff --git a/web/src/views/materialInventory/crud.tsx b/web/src/views/materialInventory/crud.tsx new file mode 100644 index 00000000..79f9d4b2 --- /dev/null +++ b/web/src/views/materialInventory/crud.tsx @@ -0,0 +1,329 @@ +import * as api from './api'; +import { errorMessage, successMessage } from '/@/utils/message'; +import tableSelector from '/@/components/tableSelector/index.vue'; +import { shallowRef, computed } from 'vue'; + +import {dictionary} from '/@/utils/dictionary'; +import {compute, dict, UserPageQuery, AddReq, DelReq, EditReq, CrudExpose, CrudOptions, CreateCrudOptionsProps, CreateCrudOptionsRet,FormWrapperContext } from '@fast-crud/fast-crud'; + +import {auth} from "/@/utils/authFunction"; + +import {commonCrudConfig} from "/@/utils/commonCrud"; +import {customCrudConfig} from "/@/utils/customCrudMaterial"; + +import {createCrudOptions as UserCreateCrudOptions} from '/@/views/user/crud'; + + +export const createCrudOptions = function ({ crudExpose, context}: CreateCrudOptionsProps): CreateCrudOptionsRet { + + const pageRequest = async (query: UserPageQuery) => { + return await api.GetList(query); + }; + const editRequest = async ({ form, row }: EditReq) => { + form.id = row.id; + return await api.UpdateObj(form); + }; + const delRequest = async ({ row }: DelReq) => { + return await api.DelObj(row.id); + }; + const addRequest = async ({ form }: AddReq) => { + return await api.AddObj(form); + }; + const exportRequest = async (query: UserPageQuery) => { + return await api.exportData(query); + }; + + const inRequest = async ( row : any) => { + row.type = 0 + row.number = 1 + return await api.UpdateObj(row); + }; + const outRequest = async ( row : any) => { + row.id = row.id; + row.type = 1 + row.number = 1 + row.receive_name = row.creator + return await api.UpdateObj(row); + }; + + return { + crudOptions: { + actionbar: { + buttons: { + add: { + show: false, + }, + export: { + icon: "Upload", + style:{backgroundColor: "#6495ED", color: "white"}, + text: '导出', //按钮文字 + title: '导出', //鼠标停留显示的信息 + show: auth('materialInventory:Export'), + click() { + return exportRequest(crudExpose!.getSearchFormData()); + }, + }, + }, + }, + // tabs: { + // show: true, + // name:'status', //对应查询字段key + // defaultOption:{ + // show:true, //是否显示默认页签 + // value: '', //点击此页签时,对应的查询value + // label: "全部" //页签显示名称 + // } + // }, + // editForm: { + // wrapper:{ + // title:"生成License", + // buttons: { + // ok: {show: true, text: "生成"}, // fs-button配置 + + // }, + // }, + // }, + request: { + pageRequest, + addRequest, + editRequest, + delRequest, + }, + rowHandle: { + //固定右侧 + fixed: 'right', + align: 'center', + // width: 300, + show: true, + buttons: { + edit: { + show: false + }, + remove: { + show: false + }, + view: { + show: false, + }, + in: { + icon: "CirclePlusFilled", + style:{backgroundColor: "#32CD32", color: "white"}, + text: '入库', + show: auth('materialInventory:Update'), + click(ctx) { + let row = JSON.parse(JSON.stringify({"record_type": 0, 'id': ctx.row.id})); + crudExpose.openEdit({row},{ + columns: { + number: { + title: "入库数量", + col: {span: 24}, + }, + receive_name: { + show: false + }, + description: { + col: {span: 24}, + show: true, + }, + }, + wrapper:{ + title:"物料入库" + " 【" + ctx.row.type + "】"+ "-【" + ctx.row.name + "】" + } + }) + }, + }, + out: { + icon: "RemoveFilled", + style:{backgroundColor: "#00BFFF", color: "white"}, + text: '出库', + size: "100", + show: auth('materialInventory:Update'), + click: (ctx: any) => { + let row = JSON.parse(JSON.stringify({"record_type": 1, 'id': ctx.row.id})); + crudExpose.openEdit({row},{ + columns: { + number: { + order: 0, + title: "出库数量", + col: {span: 24}, + }, + receive_name: { + show: true, + col: {span: 24}, + order: 1, + }, + description: { + col: {span: 24}, + show: true, + order: 2, + }, + }, + wrapper:{title:"物料出库" + " 【" + ctx.row.type + "】"+ "-【" + ctx.row.name + "】"} + }) + }, + } + }, + }, + editForm: { + wrapper:{ + width: 400, + }, + columns: { + type: { + show: false + }, + name: { + show: false + }, + code: { + show:false + } + } + }, + columns: { + _index: { + title: '序号', + form: { show: false }, + column: { + //type: 'index', + align: 'center', + width: '70px', + columnSetDisabled: true, //禁止在列设置中选择 + formatter: (context) => { + //计算序号,你可以自定义计算规则,此处为翻页累加 + let index = context.index ?? 1; + let pagination = crudExpose!.crudBinding.value.pagination; + return ((pagination!.currentPage ?? 1) - 1) * pagination!.pageSize + index + 1; + }, + fixed: "left", + }, + }, + ...customCrudConfig(), + specification: { + title: '物料规格', + search: { + show: false, + }, + type: 'text', + column:{ + align: 'center', + sortable: true, + }, + form: { + show: false, + component: { + placeholder: '请输入物料规格', + }, + }, + }, + number: { + title: '剩余库存', + search: { + show: false, + }, + type: ['number', 'colspan'], + column:{ + align: 'center', + sortable: true, + }, + form: { + show: true, + rules: [ + // 表单校验规则 + { + type: 'number', + min: 1, + required: true, + message: '数量需要大于0', + }, + ], + component: { + placeholder: '请填写出库数量', + }, + }, + }, + safety_stock_level: { + title: '安全库存等级', + search: { + show: false, + }, + type: 'dict-select', + dict: dict({ + data: dictionary('material_leval'), + }), + column:{ + align: 'center', + sortable: true, + }, + form: { + show: false + }, + }, + ...commonCrudConfig({ + description: { + form: true, + table: false, + search: false, + } + }), + // 只能在这定义类型,无法改动 + receive_name: { + show: false, + type: "table-select", + dict: dict({ + value: "name", + label: "name", + }), + title: '领用人', + column: { + show: false, + columnSetDisabled: true, //禁止在列设置中选择 + }, + form: { + show: false, + rules: [ + // 表单校验规则 + { + required: true, + message: '请输入领用人', + }, + ], + component: { + placeholder: '申请人', + multiple: false, + rowKey: "name", //element-plus 必传 + createCrudOptions: UserCreateCrudOptions, + dialog: { + width: "700px", + }, + crudOptionsOverride: { + search: { + columns: { + username: { + search: { + show: false, + }, + }, + }, + buttons: { + reset: { + show: false + } + }, + }, + rowHandle: { + show: false, + // fixed: "right" + }, + toolbar: { + show: false + }, + } + }, + }, + }, + }, + + }, + }; +}; diff --git a/web/src/views/materialInventory/index.vue b/web/src/views/materialInventory/index.vue new file mode 100644 index 00000000..0f409b74 --- /dev/null +++ b/web/src/views/materialInventory/index.vue @@ -0,0 +1,30 @@ + + + diff --git a/web/src/views/materialOperationlog/api.ts b/web/src/views/materialOperationlog/api.ts new file mode 100644 index 00000000..3f4b367b --- /dev/null +++ b/web/src/views/materialOperationlog/api.ts @@ -0,0 +1,51 @@ +import { Stream } from 'stream'; +import { request, downloadFile } from '/@/utils/service'; +import { UserPageQuery, AddReq, DelReq, EditReq, InfoReq } from '@fast-crud/fast-crud'; +import { getBaseURL } from '/@/utils/baseUrl' + +export const apiPrefix = 'api/material/operation_log/'; +export function GetList(query: UserPageQuery) { + return request({ + url: apiPrefix, + method: 'get', + params: query, + }); +} +export function GetObj(id: InfoReq) { + return request({ + url: apiPrefix + id, + method: 'get', + }); +} +export function AddObj(obj: AddReq) { + return request({ + url: apiPrefix, + method: 'post', + data: obj, + }); +} + +export function UpdateObj(obj: EditReq) { + return request({ + url: apiPrefix + obj.id + '/', + method: 'put', + data: obj, + }); +} + +export function DelObj(id: DelReq) { + return request({ + url: apiPrefix + id + '/', + method: 'delete', + data: { id }, + }); +} + + +export function exportData(params: any) { + return downloadFile({ + url: apiPrefix + 'export_data/', + params: params, + method: 'get', + }); +} \ No newline at end of file diff --git a/web/src/views/materialOperationlog/crud.tsx b/web/src/views/materialOperationlog/crud.tsx new file mode 100644 index 00000000..e76d55bd --- /dev/null +++ b/web/src/views/materialOperationlog/crud.tsx @@ -0,0 +1,201 @@ +import * as api from './api'; +import { errorMessage, successMessage } from '/@/utils/message'; +import {dictionary} from '/@/utils/dictionary'; +import tableSelector from '/@/components/tableSelector/index.vue'; +import { shallowRef, computed } from 'vue'; +import {compute, dict, UserPageQuery, AddReq, DelReq, EditReq, CrudExpose, CrudOptions, CreateCrudOptionsProps, CreateCrudOptionsRet,FormWrapperContext } from '@fast-crud/fast-crud'; + +import {auth} from "/@/utils/authFunction"; + +import {commonCrudConfig} from "/@/utils/commonCrud"; +import {customCrudConfig} from "/@/utils/customCrudMaterial"; + +import {createCrudOptions as T} from '/@/views/user/crud'; +import * as textTableApi from "/@/views/user/api"; + + +export const createCrudOptions = function ({ crudExpose }: CreateCrudOptionsProps): CreateCrudOptionsRet { + + const pageRequest = async (query: UserPageQuery) => { + return await api.GetList(query); + }; + const editRequest = async ({ form, row }: EditReq) => { + form.id = row.id; + return await api.UpdateObj(form); + }; + const delRequest = async ({ row }: DelReq) => { + return await api.DelObj(row.id); + }; + const addRequest = async ({ form }: AddReq) => { + return await api.AddObj(form); + }; + const exportRequest = async (query: UserPageQuery) => { + return await api.exportData(query); + }; + + return { + crudOptions: { + actionbar: { + buttons: { + add: { + show: false, + text: '添加', + }, + export: { + icon: "Upload", + style:{backgroundColor: "#6495ED", color: "white"}, + text: '导出', //按钮文字 + title: '导出', //鼠标停留显示的信息 + show: auth('materialOperationLog:Export'), + click() { + return exportRequest(crudExpose!.getSearchFormData()); + }, + }, + }, + }, + request: { + pageRequest, + addRequest, + editRequest, + delRequest, + }, + tabs: { + show: true, + name:'record_type', //对应查询字段key + defaultOption:{ + show:true, //是否显示默认页签 + value: '', //点击此页签时,对应的查询value + label: "全部记录" //页签显示名称 + } + }, + rowHandle: { + //固定右侧 + fixed: 'right', + align: 'center', + width: 150, + show: true, + buttons: { + + view: { + iconRight: 'View', + // type: 'text', + show: auth('materialOperationLog:Retrieve'), + }, + edit: { + show: false, + }, + remove: { + show: false + } + }, + }, + columns: { + _index: { + title: '序号', + form: { show: false }, + column: { + //type: 'index', + align: 'center', + width: '70px', + columnSetDisabled: true, //禁止在列设置中选择 + formatter: (context) => { + //计算序号,你可以自定义计算规则,此处为翻页累加 + let index = context.index ?? 1; + let pagination = crudExpose!.crudBinding.value.pagination; + return ((pagination!.currentPage ?? 1) - 1) * pagination!.pageSize + index + 1; + }, + fixed: "left", + }, + }, + ...customCrudConfig(), + specification: { + title: '物料规格', + search: { + show: false, + }, + type: 'text', + column:{ + align: 'center', + sortable: true, + width: 150, + }, + }, + record_type: { + title: '操作', + search: { + show: false, + }, + type: 'dict-select', + dict: dict({ + data: dictionary('material_in_out'), + }), + column:{ + align: 'center', + sortable: true, + }, + }, + number: { + title: '数量', + search: { + show: false, + }, + type: 'number', + column:{ + align: 'center', + sortable: true, + }, + }, + receive_name: { + title: "领用人", + search: { show: true }, + column:{ + align: 'center', + sortable: true, + }, + type: "table-select", + dict: dict({ + value: "name", + label: "name", + // getNodesByValues: async (values: any[]) => { + // return await textTableApi.GetObj(values); + // } + }), + form: { + component: { + multiple: false, + rowKey: "name", //element-plus 必传 + createCrudOptions: T, + crudOptionsOverride: { + form: { + wrapper: { + draggable: true, + // width: '400px', //antdv对话框的宽度 + width: 400, + }, + }, + + rowHandle: { + show: false, + // fixed: "right" + } + } + } + } + }, + ...commonCrudConfig({ + create_datetime: { + form: false, + table: true, + search: true, + }, + description: { + form: false, + table: true, + search: false, + } + }), + }, + + }, + }; +}; diff --git a/web/src/views/materialOperationlog/index.vue b/web/src/views/materialOperationlog/index.vue new file mode 100644 index 00000000..3675b238 --- /dev/null +++ b/web/src/views/materialOperationlog/index.vue @@ -0,0 +1,30 @@ + + + diff --git a/web/src/views/system/messageCenter/crud.tsx b/web/src/views/system/messageCenter/crud.tsx index dddc1a65..fc70481a 100644 --- a/web/src/views/system/messageCenter/crud.tsx +++ b/web/src/views/system/messageCenter/crud.tsx @@ -49,6 +49,24 @@ export default function ({ crudExpose, context }: CreateCrudOptionsProps): Creat return tabActivted.value !== 'receive' && auth('messageCenter:Create'); }), }, + all_mark_read: { + title: "当前页面全部标记为已读", + text: '全部标记为已读', //按钮文字 + show: computed(() => { + return tabActivted.value === 'receive' && auth('messageCenter:Create'); + }), + click: async () => { + const data = crudExpose.getTableData() + + for (var i=0; i @@ -17,7 +17,7 @@ import { useFs } from '@fast-crud/fast-crud'; import createCrudOptions from './crud'; //tab选择 -const tabActivted = ref('send'); +const tabActivted = ref('receive'); const onTabClick = (tab: any) => { const { paneName } = tab; tabActivted.value = paneName; diff --git a/web/src/views/testTool/crud.tsx b/web/src/views/testTool/crud.tsx index 1a0c55e0..eee283ad 100644 --- a/web/src/views/testTool/crud.tsx +++ b/web/src/views/testTool/crud.tsx @@ -360,17 +360,17 @@ export const createCrudOptions = function ({ crudExpose }: CreateCrudOptionsProp // @ts-ignore const data = new FormData(); const getFormData = crudExpose.getFormData() - // console.log("uploadRequest", data) data.append("file", file); data.append("version", getFormData.version) data.append("update_comment", getFormData.update_comment) data.append("forced_update", getFormData.forced_update) data.append("platform", getFormData.platform) + data.append("status", getFormData.status) return await request({ url: action, method: "post", - timeout: 60000, + timeout: 600000, headers: { "Content-Type": "multipart/form-data", "Authorization" : 'JWT ' + `${Session.get('token')}`, diff --git a/web/src/views/user/api.ts b/web/src/views/user/api.ts new file mode 100644 index 00000000..02a2ac6e --- /dev/null +++ b/web/src/views/user/api.ts @@ -0,0 +1,66 @@ +import { request,downloadFile } from '/@/utils/service'; +import { PageQuery, AddReq, DelReq, EditReq, InfoReq } from '@fast-crud/fast-crud'; + +export const apiPrefix = '/api/system/user/'; + +export function GetDept(query: PageQuery) { + return request({ + url: "/api/system/dept/all_dept/", + method: 'get', + params: query, + }); +} + +export function GetList(query: PageQuery) { + return request({ + url: apiPrefix, + method: 'get', + params: query, + }); +} +export function GetObj(id: InfoReq) { + return request({ + url: apiPrefix + id, + method: 'get', + }); +} + +export function AddObj(obj: AddReq) { + return request({ + url: apiPrefix, + method: 'post', + data: obj, + }); +} + +export function UpdateObj(obj: EditReq) { + return request({ + url: apiPrefix + obj.id + '/', + method: 'put', + data: obj, + }); +} + +export function DelObj(id: DelReq) { + return request({ + url: apiPrefix + id + '/', + method: 'delete', + data: { id }, + }); +} + +export function exportData(params:any){ + return downloadFile({ + url: apiPrefix + 'export_data/', + params: params, + method: 'get' + }) +} + + +export function resetToDefaultPassword(id:any){ + return request({ + url: apiPrefix + id + '/reset_to_default_password/', + method: 'put' + }) +} diff --git a/web/src/views/user/crud.tsx b/web/src/views/user/crud.tsx new file mode 100644 index 00000000..83b293f1 --- /dev/null +++ b/web/src/views/user/crud.tsx @@ -0,0 +1,200 @@ +import * as api from './api'; +import { + dict, + UserPageQuery, + AddReq, + DelReq, + EditReq, + compute, + CreateCrudOptionsProps, + CreateCrudOptionsRet +} from '@fast-crud/fast-crud'; + +import {commonCrudConfig} from "/@/utils/commonCrud"; + +export const createCrudOptions = function ({crudExpose}: CreateCrudOptionsProps): CreateCrudOptionsRet { + const pageRequest = async (query: UserPageQuery) => { + return await api.GetList(query); + }; + const editRequest = async ({form, row}: EditReq) => { + form.id = row.id; + return await api.UpdateObj(form); + }; + const delRequest = async ({row}: DelReq) => { + return await api.DelObj(row.id); + }; + const addRequest = async ({form}: AddReq) => { + return await api.AddObj(form); + }; + + const exportRequest = async (query: UserPageQuery) => { + return await api.exportData(query) + } + + return { + crudOptions: { + // table: { + // remove: { + // confirmMessage: '是否删除该用户?', + // }, + // }, + request: { + pageRequest, + addRequest, + editRequest, + delRequest, + }, + actionbar: { + show: false, + buttons: { + add: { + show: false + }, + // export: { + // text: "导出",//按钮文字 + // title: "导出",//鼠标停留显示的信息 + // show: auth('user:Export'), + // click() { + // return exportRequest(crudExpose!.getSearchFormData()) + // } + // } + } + }, + rowHandle: { + //固定右侧 + fixed: 'right', + width: 200, + show: false, + buttons: { + view: { + show: false, + }, + edit: { + iconRight: 'Edit', + type: 'text', + show: false, + }, + remove: { + iconRight: 'Delete', + type: 'text', + show: false, + }, + // custom: { + // text: '重设密码', + // type: 'text', + // show: auth('user:ResetPassword'), + // tooltip: { + // placement: 'top', + // content: '重设密码', + // }, + // //@ts-ignore + // click: (ctx: any) => { + // const {row} = ctx; + // resetToDefaultPasswordRequest(row) + // }, + // }, + }, + }, + columns: { + _index: { + title: '序号', + form: {show: false}, + column: { + type: 'index', + align: 'center', + width: '70px', + columnSetDisabled: true, //禁止在列设置中选择 + }, + }, + username: { + show: false, + title: '账号', + search: { + show: false, + }, + type: 'input', + column: { + minWidth: 100, //最小列宽 + }, + form: { + show: false, + rules: [ + // 表单校验规则 + { + required: true, + message: '账号必填项', + }, + ], + component: { + placeholder: '请输入账号', + }, + }, + }, + name: { + title: '姓名', + search: { + show: true, + }, + type: 'input', + column: { + minWidth: 100, //最小列宽 + }, + form: { + rules: [ + // 表单校验规则 + { + required: true, + message: '姓名必填项', + }, + ], + component: { + span: 12, + placeholder: '请输入姓名', + }, + }, + }, + dept: { + title: '部门', + search: { + show: true, + // disabled: true, + }, + type: 'dict-tree', + dict: dict({ + isTree: true, + url: '/api/system/dept/all_dept/', + value: 'id', + label: 'name' + }), + column: { + minWidth: 200, //最小列宽 + formatter({value,row,index}){ + return row.dept_name_all + } + }, + form: { + rules: [ + // 表单校验规则 + { + required: true, + message: '必填项', + }, + ], + component: { + filterable: true, + placeholder: '请选择', + props: { + checkStrictly:true, + props: { + value: 'id', + label: 'name', + }, + }, + }, + }, + }, + ...commonCrudConfig(), + }, + }, + }; +}; diff --git a/web/src/views/user/index.vue b/web/src/views/user/index.vue new file mode 100644 index 00000000..26fe0df5 --- /dev/null +++ b/web/src/views/user/index.vue @@ -0,0 +1,125 @@ + + + + + -- Gitee From cd618135dd1dca75e9f0126a91ad1c2e7bcd4830 Mon Sep 17 00:00:00 2001 From: lxy <10179281+lxy0722@user.noreply.gitee.com> Date: Wed, 4 Sep 2024 20:27:45 +0800 Subject: [PATCH 33/45] =?UTF-8?q?=E4=BC=98=E5=8C=96=E7=89=A9=E6=96=99?= =?UTF-8?q?=E7=94=B3=E8=AF=B7=E6=97=B6=E7=89=A9=E6=96=99=E9=80=89=E6=8B=A9?= =?UTF-8?q?=E6=96=B9=E5=BC=8F?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- backend/app/material/models.py | 2 +- backend/app/material/views.py | 15 +++++---- web/src/views/materialApplyFor/crud.tsx | 45 +++++++++++++++++++++++-- 3 files changed, 52 insertions(+), 10 deletions(-) diff --git a/backend/app/material/models.py b/backend/app/material/models.py index abca01cb..f1abdc27 100644 --- a/backend/app/material/models.py +++ b/backend/app/material/models.py @@ -47,7 +47,7 @@ class MaterialInventory(CoreModel): db_table = table_prefix + "material_inventory" verbose_name = "物料库存数量管理" verbose_name_plural = verbose_name - ordering = ("-create_datetime", "-update_datetime") + ordering = ("number", "-update_datetime") class MaterialRecords(CoreModel): diff --git a/backend/app/material/views.py b/backend/app/material/views.py index b536e52a..d0ed4f5c 100644 --- a/backend/app/material/views.py +++ b/backend/app/material/views.py @@ -312,7 +312,7 @@ class MaterialBaseInfoViewSet(CustomModelViewSet): if 'type' in request.query_params: queryset = queryset.filter(type=request.query_params['type']) - return SuccessResponse(data=queryset.values('id', 'name', 'code')) + return SuccessResponse(data=queryset.values('id', "type", 'name', 'code')) @action(methods=['get'], detail=False, permission_classes=[IsAuthenticated], url_path='byIds') def get_id(self, request, *args, **kwargs): @@ -490,13 +490,16 @@ class MaterialApplyForViewSet(CustomModelViewSet): def create(self, request, *args, **kwargs): - material = request.data.get('material', None) - if material is None: - return ErrorResponse(msg='缺少material(申请物料)参数') - request.data['code'] = material + material_id = request.data.get('id', -1) + if material_id is None: + return ErrorResponse(msg='申请的物料不存在,请先创建物料, 再提交申请') + if material_id == -1: + return ErrorResponse(msg='缺少id(主键)参数') + + request.data['code'] = material_id # 删除该属性,前端用于表单申请字段,后端实际并无该字段 - del request.data['material'] + # del request.data['material'] data = super().create(request, *args, **kwargs) diff --git a/web/src/views/materialApplyFor/crud.tsx b/web/src/views/materialApplyFor/crud.tsx index 173ff10e..7baba5a0 100644 --- a/web/src/views/materialApplyFor/crud.tsx +++ b/web/src/views/materialApplyFor/crud.tsx @@ -18,6 +18,7 @@ import * as UsereApi from '/@/views/system/personal/api'; import { ref } from "vue"; import { useCompute } from "@fast-crud/fast-crud"; +import { fa } from 'element-plus/es/locale'; var UserInfo = {id: -1, is_superuser: false} @@ -154,16 +155,54 @@ export const createCrudOptions = function ({ crudExpose, context}: CreateCrudOpt addForm: { columns: { type: { - show: false + show: true, + component: { + name: 'fs-dict-select', + cache: false, + props: { + allowCreate: true, + filterable: true, + clearable: true, + }, + }, + rules: [ + ], + valueChange({ form, value, getComponentRef }) { + form.name = ""; // 将“name”的值置空 + getComponentRef("name").reloadDict(); // 触发“city”重新加载字典 + }, }, name: { - show: false + show: true, + component: { + name: 'fs-dict-select', + cache: false, + props: { + allowCreate: true, + filterable: true, + clearable: true, + }, + }, + valueChange({ form, value, getComponentRef }) { + const data = getComponentRef(("name")).curDict.dataMap[value] + if (data !== undefined) { + // 设置默认值 + form.type = {"value": data.type, "label": data.type} + form.id = data.id + return true + } + form.id = null + } + }, + id: { + show: false, + value: null, }, code: { show: false }, material: { - show: true, + show: false, } } }, -- Gitee From f46f68e2033bde13bcfe105849f6550bebe68532 Mon Sep 17 00:00:00 2001 From: lxy <10179281+lxy0722@user.noreply.gitee.com> Date: Thu, 5 Dec 2024 20:48:18 +0800 Subject: [PATCH 34/45] =?UTF-8?q?=E4=BC=98=E5=8C=96=E4=BA=A7=E6=B5=8B?= =?UTF-8?q?=E5=B7=A5=E5=85=B7=E4=B8=8B=E8=BD=BD=E5=8A=9F=E8=83=BD=EF=BC=8C?= =?UTF-8?q?=E6=96=B0=E5=A2=9E=E4=BA=A7=E6=B5=8B=E5=B7=A5=E5=85=B7=E6=97=A5?= =?UTF-8?q?=E5=BF=97app?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- backend/app/test_tool/models.py | 42 ++++++++++++++++++++- backend/app/test_tool/serializers.py | 26 ++++--------- backend/app/test_tool/urls.py | 3 +- backend/app/test_tool/views.py | 55 +++++++++++++++++++++++++++- web/.env.development | 2 +- web/src/views/testTool/api.ts | 8 ++++ web/src/views/testTool/crud.tsx | 23 ++++++++---- 7 files changed, 127 insertions(+), 32 deletions(-) diff --git a/backend/app/test_tool/models.py b/backend/app/test_tool/models.py index 7cf01f6f..a5fb0688 100644 --- a/backend/app/test_tool/models.py +++ b/backend/app/test_tool/models.py @@ -2,6 +2,7 @@ import hashlib import os +import datetime from django.db import models @@ -11,8 +12,7 @@ from dvadmin.utils.models import CoreModel, SoftDeleteModel, table_prefix def media_file_name(instance, filename): h = instance.md5sum - basename, ext = os.path.splitext(filename) - return os.path.join("files", h[:1], h[1:2], h + ext.lower()) + return os.path.join("files", f"{datetime.date.today()}", h[-8:], filename) class TestToolsFileListModel(CoreModel): @@ -69,3 +69,41 @@ class TestToolLicenseModel(SoftDeleteModel, CoreModel): violation_error_message='当前uuid已经存在,请勿重复上传') ] + +class TestToolLogModel(CoreModel): + name = models.CharField(max_length=200, null=True, blank=True, verbose_name="文件名称", help_text="文件名称") + url = models.FileField(upload_to=media_file_name, null=True, blank=True, ) + file_url = models.CharField(max_length=255, blank=True, verbose_name="文件地址", help_text="文件地址") + engine = models.CharField(max_length=100, default='local', blank=True, verbose_name="引擎", help_text="引擎") + mime_type = models.CharField(max_length=100, blank=True, verbose_name="Mime类型", help_text="Mime类型") + size = models.CharField(max_length=36, blank=True, verbose_name="文件大小", help_text="文件大小") + md5sum = models.CharField(max_length=36, blank=True, verbose_name="文件md5", help_text="文件md5") + problem_description = models.CharField(max_length=255, null=True, blank=True, verbose_name="问题描述", help_text="问题描述") + platform = models.CharField(max_length=36, blank=True, verbose_name="工具平台", help_text="工具平台") + version = models.CharField(max_length=36, blank=True, verbose_name="工具版本", help_text="工具版本") + mes_info = models.CharField(max_length=255, null=True, blank=True, verbose_name="MES信息", help_text="MES信息") + os_info = models.TextField(blank=True, verbose_name="系统信息", help_text="系统信息") + network_info = models.TextField(blank=True, verbose_name="网络信息", help_text="网络信息") + cpu_info = models.TextField(blank=True, verbose_name="CPU信息", help_text="CPU信息") + memory_info = models.TextField(blank=True, verbose_name="内存信息", help_text="内存信息") + disk_info = models.TextField(blank=True, verbose_name="磁盘信息", help_text="磁盘信息") + script = models.TextField(blank=True, verbose_name="使用脚本", help_text="使用脚本") + + class Meta: + db_table = table_prefix + "test_tool_log" + verbose_name = "产测工具log" + verbose_name_plural = verbose_name + ordering = ("-create_datetime", "-update_datetime") + + def save(self, *args, **kwargs): + if not self.md5sum: # file is new + md5 = hashlib.md5() + for chunk in self.url.chunks(): + md5.update(chunk) + self.md5sum = md5.hexdigest() + if not self.size: + self.size = self.url.size + if not self.file_url: + url = media_file_name(self, self.name) + self.file_url = f'media/{url}' + super(TestToolLogModel, self).save(*args, **kwargs) diff --git a/backend/app/test_tool/serializers.py b/backend/app/test_tool/serializers.py index c36f159f..99b95c41 100644 --- a/backend/app/test_tool/serializers.py +++ b/backend/app/test_tool/serializers.py @@ -8,7 +8,7 @@ from rest_framework import serializers from dvadmin.utils.json_response import DetailResponse, ErrorResponse -from app.test_tool.models import TestToolsFileListModel, TestToolLicenseModel +from app.test_tool.models import TestToolsFileListModel, TestToolLicenseModel, TestToolLogModel from dvadmin.utils.serializers import CustomModelSerializer @@ -73,28 +73,16 @@ class TestToolModelSerializer(CustomModelSerializer): pass return super().create(validated_data) - def info_update(self, validated_data): - """ - 更新文件信息 - """ - if self.initial_data.get('url') is None: - return ErrorResponse(data='请先上传文件', msg="请先上传文件") - info = TestToolsFileListModel.objects.filter(file_url=f"{self.initial_data.get('url')[0]}") - if not info: - return ErrorResponse(data='请先上传文件', msg="请先上传文件") - - data = TestToolModelSerializer(info[0]).data - data['update_comment'] = validated_data.get('update_comment') - data['version'] = validated_data.get('version') - data['forced_update'] = validated_data.get('forced_update') +class TestToolLicenseModelSerializer(CustomModelSerializer): - self.update(info[0], data) - return DetailResponse(data="保存成功", msg="保存成功") + class Meta: + model = TestToolLicenseModel + fields = "__all__" -class TestToolLicenseModelSerializer(CustomModelSerializer): +class TestToolLogModelSerializer(TestToolModelSerializer): class Meta: - model = TestToolLicenseModel + model = TestToolLogModel fields = "__all__" diff --git a/backend/app/test_tool/urls.py b/backend/app/test_tool/urls.py index 86e90719..a9a02a47 100644 --- a/backend/app/test_tool/urls.py +++ b/backend/app/test_tool/urls.py @@ -5,12 +5,13 @@ from django.urls import path from django.http import HttpResponse, JsonResponse from dvadmin.system.views.clause import PrivacyView, TermsServiceView -from .views import ToolFileViewSet, ToolLicenseViewSet +from .views import ToolFileViewSet, ToolLicenseViewSet, ToolLogViewSet router = SimpleRouter() # 这里进行注册路径,并把视图关联上,这里的api地址以视图名称为后缀,这样方便记忆api/CrudDemoModelViewSet router.register("testTool", ToolFileViewSet) router.register("license", ToolLicenseViewSet) +router.register("log", ToolLogViewSet) urlpatterns = [ diff --git a/backend/app/test_tool/views.py b/backend/app/test_tool/views.py index b6a1abe1..1dc23ef1 100644 --- a/backend/app/test_tool/views.py +++ b/backend/app/test_tool/views.py @@ -4,7 +4,7 @@ import os from cryptography.fernet import Fernet from application import dispatch -from app.test_tool.models import TestToolsFileListModel, TestToolLicenseModel +from app.test_tool.models import TestToolsFileListModel, TestToolLicenseModel, TestToolLogModel from dvadmin.utils.json_response import DetailResponse, SuccessResponse, ErrorResponse from dvadmin.utils.viewset import CustomModelViewSet @@ -12,7 +12,7 @@ from dvadmin.utils.filters import DataLevelPermissionsFilter, CoreModelFilterBan from dvadmin.utils.permission import CustomPermission -from app.test_tool.serializers import TestToolModelSerializer, TestToolLicenseModelSerializer +from app.test_tool.serializers import TestToolModelSerializer, TestToolLicenseModelSerializer, TestToolLogModelSerializer class ToolFileViewSet(CustomModelViewSet): @@ -251,3 +251,54 @@ class ToolLicenseViewSet(CustomModelViewSet): return DetailResponse(data=serializer.data, msg="创建成功") return super().create(request, *args, **kwargs) + + +class ToolLogViewSet(CustomModelViewSet): + """ + 产测工具log接口 + list:查询 + create:新增 + update:修改 + retrieve:单例 + destroy:删除 + """ + queryset = TestToolLogModel.objects.all() + serializer_class = TestToolLogModelSerializer + + permission_classes = [] + custom_extra_filter_class = [CoreModelFilterBankend] + + class Meta: + exclude = ['url', 'file_url', 'creator'] # 排除字段 + + def list(self, request, *args, **kwargs): + if CustomPermission().has_permission(request, ToolLicenseViewSet) is not True: + return ErrorResponse(data=[], msg="您没有该操作的执行权限。") + + return super().list(request, *args, **kwargs) + + def update(self, request, *args, **kwargs): + if CustomPermission().has_permission(request, ToolLicenseViewSet) is not True: + return ErrorResponse(data=[], msg="您没有该操作的执行权限。") + + return super().update(request, *args, **kwargs) + + def retrieve(self, request, *args, **kwargs): + if CustomPermission().has_permission(request, ToolLicenseViewSet) is not True: + return ErrorResponse(data=[], msg="您没有该操作的执行权限。") + + return super().retrieve(request, *args, **kwargs) + + def create(self, request, *args, **kwargs): + """ + 不做权限校验,数据主要来自产测工具 + """ + return super().create(request, *args, **kwargs) + + def destroy(self, request, *args, **kwargs): + + return ErrorResponse(data=[], msg="该操作被禁止!") + + def multiple_delete(self, request, *args, **kwargs): + + return ErrorResponse(data=[], msg="该操作被禁止!") diff --git a/web/.env.development b/web/.env.development index 8f2e4f04..1c3ca5db 100644 --- a/web/.env.development +++ b/web/.env.development @@ -2,7 +2,7 @@ ENV = 'development' # 本地环境接口地址 -VITE_API_URL = 'http://172.16.17.169:8000' +VITE_API_URL = 'http://127.0.0.1:8000' # 是否启用按钮权限 VITE_PM_ENABLED = true diff --git a/web/src/views/testTool/api.ts b/web/src/views/testTool/api.ts index 21fcde0f..ea9cebe5 100644 --- a/web/src/views/testTool/api.ts +++ b/web/src/views/testTool/api.ts @@ -41,6 +41,14 @@ export function DelObj(id: DelReq) { }); } +export function getLastVersion(platform: any) { + return request({ + url: apiPrefix + 'latestVersion/', + method: 'get', + params: { "platform": platform }, + }); +} + export function downloadObj(url: any, fileName: any) { // 会全部下载完成,才会弹窗保存提醒 diff --git a/web/src/views/testTool/crud.tsx b/web/src/views/testTool/crud.tsx index eee283ad..adecab03 100644 --- a/web/src/views/testTool/crud.tsx +++ b/web/src/views/testTool/crud.tsx @@ -35,13 +35,22 @@ export const createCrudOptions = function ({ crudExpose }: CreateCrudOptionsProp show: auth('testTool:Create'), text: '上传', }, - // upload: { - // show: true, - // text: "test", - // click: () => { - // open - // }, - // } + download_windows: { + show: true, + text: "下载windows", + click: async (ctx: any) =>{ + const ret = await api.getLastVersion("windows"); + downloadFile(ret.data) + } + }, + download_mac: { + show: true, + text: "下载MAC", + click: async (ctx: any) =>{ + const ret = await api.getLastVersion("macOSX"); + downloadFile(ret.data) + } + } }, }, tabs: { -- Gitee From 5200540746d55ade0e3a75b96e8b611a36b44a31 Mon Sep 17 00:00:00 2001 From: lxy <10179281+lxy0722@user.noreply.gitee.com> Date: Sat, 7 Dec 2024 19:12:00 +0800 Subject: [PATCH 35/45] =?UTF-8?q?=E6=96=B0=E5=A2=9Ecelery=E6=A8=A1?= =?UTF-8?q?=E5=9D=97?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .gitmodules | 6 + backend/app/test_tool/models.py | 28 +++ backend/app/test_tool/serializers.py | 67 +----- backend/app/test_tool/views.py | 7 - backend/application/settings.py | 27 ++- backend/application/urls.py | 1 + backend/dvadmin/system/views/file_list.py | 4 - backend/dvadmin/utils/filters.py | 2 +- backend/requirements.txt | 5 + web/package.json | 1 + web/src/views/plugins/dvadmin3-celery-web | 1 + web/src/views/testTool/crud.tsx | 10 + web/src/views/testToolLog/api.ts | 84 ++++++++ web/src/views/testToolLog/crud.tsx | 239 ++++++++++++++++++++++ web/src/views/testToolLog/index.vue | 30 +++ 15 files changed, 432 insertions(+), 80 deletions(-) create mode 100644 .gitmodules create mode 160000 web/src/views/plugins/dvadmin3-celery-web create mode 100644 web/src/views/testToolLog/api.ts create mode 100644 web/src/views/testToolLog/crud.tsx create mode 100644 web/src/views/testToolLog/index.vue diff --git a/.gitmodules b/.gitmodules new file mode 100644 index 00000000..25f1ac39 --- /dev/null +++ b/.gitmodules @@ -0,0 +1,6 @@ +[submodule "web/src/views/plugins/dvadmin3-celery-web"] + path = web/src/views/plugins/dvadmin3-celery-web + url = https://gitee.com/wskaudh/dvadmin3-celery-web.git +[submodule "backend/plugins/dvadmin3-celery"] + path = backend/plugins/dvadmin3-celery + url = https://gitee.com/lxy0722/dvadmin3-celery.git diff --git a/backend/app/test_tool/models.py b/backend/app/test_tool/models.py index a5fb0688..f93c30bf 100644 --- a/backend/app/test_tool/models.py +++ b/backend/app/test_tool/models.py @@ -28,6 +28,20 @@ class TestToolsFileListModel(CoreModel): forced_update = models.BooleanField(default=False, blank=True, verbose_name="强制更新", help_text="强制更新") platform = models.CharField(max_length=36, blank=True, verbose_name="工具平台", help_text="工具平台") status = models.BooleanField(default=True, verbose_name="启用状态", help_text="启用状态") + UPLOAD_METHOD_CHOIDES = ( + (0, '默认上传'), + (1, '文件选择器上传'), + ) + upload_method = models.SmallIntegerField(default=0, blank=True, null=True, choices=UPLOAD_METHOD_CHOIDES, + verbose_name='上传方式', help_text='上传方式') + FILE_TYPE_CHOIDES = ( + (0, '图片'), + (1, '视频'), + (2, '音频'), + (3, '其他'), + ) + file_type = models.SmallIntegerField(default=3, choices=FILE_TYPE_CHOIDES, blank=True, null=True, + verbose_name='文件类型', help_text='文件类型') def save(self, *args, **kwargs): if not self.md5sum: # file is new @@ -88,6 +102,20 @@ class TestToolLogModel(CoreModel): memory_info = models.TextField(blank=True, verbose_name="内存信息", help_text="内存信息") disk_info = models.TextField(blank=True, verbose_name="磁盘信息", help_text="磁盘信息") script = models.TextField(blank=True, verbose_name="使用脚本", help_text="使用脚本") + UPLOAD_METHOD_CHOIDES = ( + (0, '默认上传'), + (1, '文件选择器上传'), + ) + upload_method = models.SmallIntegerField(default=0, blank=True, null=True, choices=UPLOAD_METHOD_CHOIDES, + verbose_name='上传方式', help_text='上传方式') + FILE_TYPE_CHOIDES = ( + (0, '图片'), + (1, '视频'), + (2, '音频'), + (3, '其他'), + ) + file_type = models.SmallIntegerField(default=3, choices=FILE_TYPE_CHOIDES, blank=True, null=True, + verbose_name='文件类型', help_text='文件类型') class Meta: db_table = table_prefix + "test_tool_log" diff --git a/backend/app/test_tool/serializers.py b/backend/app/test_tool/serializers.py index 99b95c41..15613da5 100644 --- a/backend/app/test_tool/serializers.py +++ b/backend/app/test_tool/serializers.py @@ -1,78 +1,17 @@ # coding=utf-8 -import hashlib - - -from application import dispatch -from rest_framework import serializers -from dvadmin.utils.json_response import DetailResponse, ErrorResponse - from app.test_tool.models import TestToolsFileListModel, TestToolLicenseModel, TestToolLogModel from dvadmin.utils.serializers import CustomModelSerializer +from dvadmin.system.views.file_list import FileSerializer -class TestToolModelSerializer(CustomModelSerializer): - url = serializers.SerializerMethodField(read_only=True) - - def get_url(self, instance): - - if getattr(instance, 'file_url', None) is None: - return '' - - return instance.file_url or f'media/{str(instance.url)}' +class TestToolModelSerializer(FileSerializer): class Meta: model = TestToolsFileListModel fields = "__all__" - def create(self, validated_data): - file = self.initial_data.get('file') - if file is None: - return ErrorResponse('请上传文件') - - file_engine = dispatch.get_system_config_values("fileStorageConfig.file_engine") or 'local' - file_backup = dispatch.get_system_config_values("fileStorageConfig.file_backup") - - file_size = file.size - validated_data['name'] = str(file) - validated_data['size'] = file_size - md5 = hashlib.md5() - for chunk in file.chunks(): - md5.update(chunk) - - validated_data['md5sum'] = md5.hexdigest() - validated_data['engine'] = file_engine - validated_data['mime_type'] = file.content_type - - if file_backup: - validated_data['url'] = file - if file_engine == 'oss': - from dvadmin_cloud_storage.views.aliyun import ali_oss_upload - file_path = ali_oss_upload(file) - if file_path: - validated_data['file_url'] = file_path - else: - raise ValueError("上传失败") - elif file_engine == 'cos': - from dvadmin_cloud_storage.views.tencent import tencent_cos_upload - file_path = tencent_cos_upload(file) - if file_path: - validated_data['file_url'] = file_path - else: - raise ValueError("上传失败") - else: - validated_data['url'] = file - # 审计字段 - try: - request_user = self.request.user - validated_data['dept_belong_id'] = request_user.dept.id - validated_data['creator'] = request_user.id - validated_data['modifier'] = request_user.id - except: - pass - return super().create(validated_data) - class TestToolLicenseModelSerializer(CustomModelSerializer): @@ -81,7 +20,7 @@ class TestToolLicenseModelSerializer(CustomModelSerializer): fields = "__all__" -class TestToolLogModelSerializer(TestToolModelSerializer): +class TestToolLogModelSerializer(FileSerializer): class Meta: model = TestToolLogModel diff --git a/backend/app/test_tool/views.py b/backend/app/test_tool/views.py index 1dc23ef1..dad3c82c 100644 --- a/backend/app/test_tool/views.py +++ b/backend/app/test_tool/views.py @@ -32,9 +32,6 @@ class ToolFileViewSet(CustomModelViewSet): permission_classes = [] custom_extra_filter_class = [CoreModelFilterBankend] - class Meta: - exclude = ['url', 'file_url', 'creator'] # 排除字段 - def filter_queryset(self, queryset): for backend in set(set(self.filter_backends) | set(self.custom_extra_filter_class or [])): @@ -266,10 +263,6 @@ class ToolLogViewSet(CustomModelViewSet): serializer_class = TestToolLogModelSerializer permission_classes = [] - custom_extra_filter_class = [CoreModelFilterBankend] - - class Meta: - exclude = ['url', 'file_url', 'creator'] # 排除字段 def list(self, request, *args, **kwargs): if CustomPermission().has_permission(request, ToolLicenseViewSet) is not True: diff --git a/backend/application/settings.py b/backend/application/settings.py index 9538a4ba..1d27dab1 100644 --- a/backend/application/settings.py +++ b/backend/application/settings.py @@ -60,6 +60,9 @@ INSTALLED_APPS = [ "captcha", "channels", "dvadmin.system", + 'django_celery_beat', + 'django_celery_results', + 'dvadmin3_celery', ] MY_APPS = [ @@ -162,7 +165,7 @@ STATICFILES_DIRS = [ MEDIA_ROOT = "media" # 项目下的目录 MEDIA_URL = "/media/" # 跟STATIC_URL类似,指定用户可以通过这个url找到文件 -#添加以下代码以后就不用写{% load staticfiles %},可以直接引用 +# 添加以下代码以后就不用写{% load staticfiles %},可以直接引用 STATICFILES_FINDERS = ( "django.contrib.staticfiles.finders.FileSystemFinder", "django.contrib.staticfiles.finders.AppDirectoriesFinder" @@ -411,11 +414,27 @@ PLUGINS_URL_PATTERNS = [] # ********** 一键导入插件配置开始 ********** # 例如: # from dvadmin_upgrade_center.settings import * # 升级中心 -from dvadmin3_celery.settings import * # celery 异步任务 +from dvadmin3_celery.settings import * # celery 异步任务 + # from dvadmin_third.settings import * # 第三方用户管理 # from dvadmin_ak_sk.settings import * # 秘钥管理管理 # from dvadmin_tenants.settings import * # 租户管理 -#from dvadmin_social_auth.settings import * -#from dvadmin_uniapp.settings import * +# from dvadmin_social_auth.settings import * +# from dvadmin_uniapp.settings import * # ... # ********** 一键导入插件配置结束 ********** + + +CACHES = { # 配置缓存 + "default": { + "BACKEND": "django_redis.cache.RedisCache", + "LOCATION": f'{REDIS_URL}/1', # 库名可自选1~16 + "OPTIONS": { + "CLIENT_CLASS": "django_redis.client.DefaultClient", + } + }, +} +CELERY_BROKER_URL = f'{REDIS_URL}/2' # 库名可自选1~16 +# BROKER_URL = f'{REDIS_URL}/2' # 库名可自选1~16 +CELERY_RESULT_BACKEND = 'django-db' # celery结果存储到数据库中 +CELERY_BEAT_SCHEDULER = 'django_celery_beat.schedulers.DatabaseScheduler' # Backend数据库 diff --git a/backend/application/urls.py b/backend/application/urls.py index 261ed973..c82ef237 100644 --- a/backend/application/urls.py +++ b/backend/application/urls.py @@ -115,6 +115,7 @@ urlpatterns = ( # 前端页面映射 path('web/', web_view, name='web_view'), path('web/', serve_web_files, name='serve_web_files'), + path(r'api/dvadmin_celery/', include('dvadmin3_celery.urls')), ] + static(settings.MEDIA_URL, document_root=settings.MEDIA_ROOT) + static(settings.STATIC_URL, document_root=settings.STATIC_URL) diff --git a/backend/dvadmin/system/views/file_list.py b/backend/dvadmin/system/views/file_list.py index eb972709..c0fed8d2 100644 --- a/backend/dvadmin/system/views/file_list.py +++ b/backend/dvadmin/system/views/file_list.py @@ -34,10 +34,6 @@ class FileSerializer(CustomModelSerializer): model = FileList fields = "__all__" - class Meta: - model = FileList - fields = "__all__" - def create(self, validated_data): file_engine = dispatch.get_system_config_values("fileStorageConfig.file_engine") or 'local' file_backup = dispatch.get_system_config_values("fileStorageConfig.file_backup") diff --git a/backend/dvadmin/utils/filters.py b/backend/dvadmin/utils/filters.py index d09a8a15..da808ace 100644 --- a/backend/dvadmin/utils/filters.py +++ b/backend/dvadmin/utils/filters.py @@ -340,7 +340,7 @@ class CustomDjangoFilterBackend(DjangoFilterBackend): from timezone_field import TimeZoneField # 不进行 过滤的model 类 - if isinstance(field, (models.JSONField, TimeZoneField)): + if isinstance(field, (models.JSONField, TimeZoneField, models.FileField)): continue # warn if the field doesn't exist. if field is None: diff --git a/backend/requirements.txt b/backend/requirements.txt index d095c305..6507bbdf 100644 --- a/backend/requirements.txt +++ b/backend/requirements.txt @@ -1,8 +1,12 @@ +async-timeout==5.0.1 Django==4.2.7 +django-celery-beat==2.7.0 +django-celery-results==2.5.1 django-comment-migrate==0.1.7 django-cors-headers==4.3.0 django-filter==23.3 django-ranged-response==0.2.0 +django-redis==5.4.0 djangorestframework==3.14.0 django-restql==0.15.3 django-simple-captcha==0.5.20 @@ -25,6 +29,7 @@ six==1.16.0 whitenoise==6.6.0 psycopg2==2.9.9 uvicorn==0.23.2 +eventlet==0.38.0 gunicorn==21.2.0 gevent==23.9.1 Pillow==10.1.0 diff --git a/web/package.json b/web/package.json index 7022283d..11d4aaf8 100644 --- a/web/package.json +++ b/web/package.json @@ -24,6 +24,7 @@ "axios": "^1.7.4", "countup.js": "^2.8.0", "cropperjs": "^1.6.2", + "dvadmin3-celery-web": "^1.0.2", "e-icon-picker": "2.1.1", "echarts": "^5.5.1", "echarts-gl": "^2.0.9", diff --git a/web/src/views/plugins/dvadmin3-celery-web b/web/src/views/plugins/dvadmin3-celery-web new file mode 160000 index 00000000..02d8bd04 --- /dev/null +++ b/web/src/views/plugins/dvadmin3-celery-web @@ -0,0 +1 @@ +Subproject commit 02d8bd0442f178b5880acecebcc543869e4aae0d diff --git a/web/src/views/testTool/crud.tsx b/web/src/views/testTool/crud.tsx index adecab03..878caf2f 100644 --- a/web/src/views/testTool/crud.tsx +++ b/web/src/views/testTool/crud.tsx @@ -37,17 +37,27 @@ export const createCrudOptions = function ({ crudExpose }: CreateCrudOptionsProp }, download_windows: { show: true, + style:{backgroundColor: "#315AFF", color: "white"}, text: "下载windows", click: async (ctx: any) =>{ const ret = await api.getLastVersion("windows"); + if (ret.data.length === 0){ + errorMessage("暂无版本!") + return false + } downloadFile(ret.data) } }, download_mac: { show: true, + style:{backgroundColor: "#3984FF", color: "white"}, text: "下载MAC", click: async (ctx: any) =>{ const ret = await api.getLastVersion("macOSX"); + if (ret.data.length === 0){ + errorMessage("暂无版本!") + return false + } downloadFile(ret.data) } } diff --git a/web/src/views/testToolLog/api.ts b/web/src/views/testToolLog/api.ts new file mode 100644 index 00000000..4aad0d7f --- /dev/null +++ b/web/src/views/testToolLog/api.ts @@ -0,0 +1,84 @@ +import { Stream } from 'stream'; +import { request, downloadFile } from '/@/utils/service'; +import { UserPageQuery, AddReq, DelReq, EditReq, InfoReq } from '@fast-crud/fast-crud'; +import { getBaseURL } from '/@/utils/baseUrl' + +export const apiPrefix = 'api/tool/log/'; +export function GetList(query: UserPageQuery) { + return request({ + url: apiPrefix, + method: 'get', + params: query, + }); +} +export function GetObj(id: InfoReq) { + return request({ + url: apiPrefix + id, + method: 'get', + }); +} +export function AddObj(obj: AddReq) { + return request({ + url: apiPrefix, + method: 'post', + data: obj, + }); +} + +export function UpdateObj(obj: EditReq) { + return request({ + url: apiPrefix + obj.id + '/', + method: 'put', + data: obj, + }); +} + +export function DelObj(id: DelReq) { + return request({ + url: apiPrefix + id + '/', + method: 'delete', + data: { id }, + }); +} + + +export function downloadObj(url: any, fileName: any) { + + // return request({ + // url: url, + // responseType: 'blob', + // timeout: 600000 + // // headers: {Accept: 'application/vnd.openxmlformats-officedocument'} + // }).then((res: any) => { + // // const xlsxName = window.decodeURI(res.headers['content-disposition'].split('=')[1]) + // // const fileName = xlsxName || `${filename}.xlsx` + // if (res) { + // const blob = new Blob([res.data], { type: 'charset=utf-8' }) + // const elink = document.createElement('a') + // elink.download = fileName + // elink.style.display = 'none' + // elink.href = URL.createObjectURL(blob) + // document.body.appendChild(elink) + // elink.click() + // URL.revokeObjectURL(elink.href) // 释放URL 对象0 + // document.body.removeChild(elink) + // } + // }) + + // window.open("http://127.0.0.1:8000/" + url); + const a = document.createElement('a'); + a.style.display = 'none'; + a.download = 'xx'; + a.href = getBaseURL() + url;; + document.body.appendChild(a); + a.click(); + document.body.removeChild(a); +} + +export function exportData(params: any) { + return downloadFile({ + url: apiPrefix + 'export_data/', + params: params, + method: 'get', + }); +} \ No newline at end of file diff --git a/web/src/views/testToolLog/crud.tsx b/web/src/views/testToolLog/crud.tsx new file mode 100644 index 00000000..e9902f86 --- /dev/null +++ b/web/src/views/testToolLog/crud.tsx @@ -0,0 +1,239 @@ +import * as api from './api'; +import { errorMessage, successMessage } from '/@/utils/message'; +import {dictionary} from '/@/utils/dictionary'; +import {compute, dict, UserPageQuery, AddReq, DelReq, EditReq, CrudExpose, CrudOptions, CreateCrudOptionsProps, CreateCrudOptionsRet,FormWrapperContext } from '@fast-crud/fast-crud'; + +import {auth} from "/@/utils/authFunction"; + +import {commonCrudConfig} from "/@/utils/commonCrud"; + +export const createCrudOptions = function ({ crudExpose }: CreateCrudOptionsProps): CreateCrudOptionsRet { + + const pageRequest = async (query: UserPageQuery) => { + return await api.GetList(query); + }; + const editRequest = async ({ form, row }: EditReq) => { + form.id = row.id; + return await api.UpdateObj(form); + }; + const delRequest = async ({ row }: DelReq) => { + return await api.DelObj(row.id); + }; + const addRequest = async ({ form }: AddReq) => { + return await api.AddObj(form); + }; + const downloadFile = async (row: any)=>{ + await api.downloadObj(row.file_url, row.name) + } + + return { + crudOptions: { + actionbar: { + buttons: { + add: { + show: false, + text: '添加', + }, + }, + }, + editForm: { + wrapper:{ + title:"生成License", + buttons: { + ok: {show: true, text: "生成"}, // fs-button配置 + + }, + }, + }, + request: { + pageRequest, + addRequest, + editRequest, + delRequest, + }, + rowHandle: { + //固定右侧 + fixed: 'right', + align: 'center', + width: 200, + show: true, + buttons: { + + view: { + iconRight: "View", + show: true, + type: 'text', + }, + edit: { + show: false, + iconRight: 'Edit', + type: 'text', + text: '编辑', + }, + remove: { + iconRight: 'Delete', + type: 'text', + show: false + }, + download: { + iconRight: 'Download', + type: 'text', + text: '下载', + show: auth('testToolLicense:Download'), + click: (ctx: any) => { + api.downloadObj(ctx.row.file_url, ctx.row.name) + }, + }, + }, + }, + columns: { + _index: { + title: '序号', + form: { show: false }, + column: { + //type: 'index', + align: 'center', + width: '70px', + columnSetDisabled: true, //禁止在列设置中选择 + formatter: (context) => { + //计算序号,你可以自定义计算规则,此处为翻页累加 + let index = context.index ?? 1; + let pagination = crudExpose!.crudBinding.value.pagination; + return ((pagination!.currentPage ?? 1) - 1) * pagination!.pageSize + index + 1; + }, + fixed: "left", + }, + }, + problem_description: { + title: '问题描述', + type: ['textarea', 'colspan'], + column: { + show: true, + align: 'center', + width: '150px', + sortable: true, + fixed: "left", + }, + search: { + show: true, + component: { + props: { + clearable: true, + }, + placeholder: '请输入工具版本', + }, + }, + }, + version: { + title: '工具版本', + column: { + show: true, + width: 150, + }, + search: { + show: true, + component: { + props: { + clearable: true, + }, + placeholder: '请输入工具版本', + }, + }, + }, + platform: { + title: '系统平台', + type: "text", + search: { + show: true, + }, + column:{ + align: 'center', + minWidth: 100, + } + }, + mes_info: { + title: 'MES信息', + type: ['textarea', 'colspan'], + search: { + show: false, + }, + column:{ + align: 'center', + minWidth: 100, + } + }, + os_info: { + title: '系统信息', + type: ['textarea', 'colspan'], + search: { + show: false, + }, + column:{ + align: 'center', + minWidth: 100, + show: false, + } + }, + network_info: { + title: '网络信息', + type: ['textarea', 'colspan'], + search: { + show: false, + }, + column:{ + align: 'center', + minWidth: 100, + width: "150px", + } + }, + cpu_info: { + title: 'CPU信息', + type: ['textarea', 'colspan'], + search: { + show: false, + }, + column:{ + align: 'center', + minWidth: 100, + } + }, + memory_info: { + title: '内存信息', + type: ['textarea', 'colspan'], + search: { + show: false, + }, + column:{ + align: 'center', + minWidth: 100, + } + }, + disk_info: { + title: '磁盘信息', + type: ['textarea', 'colspan'], + search: { + show: false, + }, + column:{ + align: 'center', + minWidth: 100, + } + }, + script: { + title: '测试脚本', + type: ['textarea', 'colspan'], + search: { + show: false, + }, + column:{ + align: 'center', + minWidth: 100, + show: false, + } + }, + ...commonCrudConfig() + }, + + }, + }; +}; diff --git a/web/src/views/testToolLog/index.vue b/web/src/views/testToolLog/index.vue new file mode 100644 index 00000000..da0a2bc1 --- /dev/null +++ b/web/src/views/testToolLog/index.vue @@ -0,0 +1,30 @@ + + + -- Gitee From 89ca34d3edb9f8e54e2778448265b4c7e0189141 Mon Sep 17 00:00:00 2001 From: lxy <10179281+lxy0722@user.noreply.gitee.com> Date: Sat, 7 Dec 2024 20:21:51 +0800 Subject: [PATCH 36/45] =?UTF-8?q?=E8=AE=BE=E7=BD=AElogo=E5=B0=BA=E5=AF=B8?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- web/src/views/system/login/index.vue | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/web/src/views/system/login/index.vue b/web/src/views/system/login/index.vue index 0f4d9c86..11003526 100644 --- a/web/src/views/system/login/index.vue +++ b/web/src/views/system/login/index.vue @@ -154,8 +154,10 @@ onMounted(() => { animation: logoAnimation 0.3s ease; img { - width: 52px; - height: 52px; + width: 30%; + height: 30%; + // width: 52px; + // height: 52px; } .login-left-logo-text { -- Gitee From e0a44bac7d151fc441f4b69dbe356d165d56dc92 Mon Sep 17 00:00:00 2001 From: lxy <10179281+lxy0722@user.noreply.gitee.com> Date: Mon, 9 Dec 2024 09:34:48 +0800 Subject: [PATCH 37/45] =?UTF-8?q?=E7=99=BB=E9=99=86=E9=A1=B5=E9=9D=A2?= =?UTF-8?q?=E5=AD=97=E4=BD=93=E9=A2=9C=E8=89=B2=E4=BC=98=E5=8C=96=E3=80=81?= =?UTF-8?q?=E8=8F=9C=E5=8D=95=E7=AE=A1=E7=90=86=E5=A2=9E=E5=8A=A0=E5=A4=8D?= =?UTF-8?q?=E5=88=B6=E6=8C=89=E9=92=AE?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../views/system/login/component/account.vue | 4 ++-- .../menu/components/MenuButtonCom/crud.tsx | 20 ++++++++++++++++++- 2 files changed, 21 insertions(+), 3 deletions(-) diff --git a/web/src/views/system/login/component/account.vue b/web/src/views/system/login/component/account.vue index c17a289f..8499b2c0 100644 --- a/web/src/views/system/login/component/account.vue +++ b/web/src/views/system/login/component/account.vue @@ -244,7 +244,7 @@ background-color:rgba(0,0,0,0); // background-color: rgba(0, 0, 0, 0) !important; -color: #fff; +color: #000; } // :deep(input:-webkit-autofill) { @@ -258,7 +258,7 @@ color: #fff; :deep(input::-webkit-input-placeholder) { -color: #fff; +color: #b3b3b3; } diff --git a/web/src/views/system/menu/components/MenuButtonCom/crud.tsx b/web/src/views/system/menu/components/MenuButtonCom/crud.tsx index 79675fba..3b8320e7 100644 --- a/web/src/views/system/menu/components/MenuButtonCom/crud.tsx +++ b/web/src/views/system/menu/components/MenuButtonCom/crud.tsx @@ -100,7 +100,7 @@ export const createCrudOptions = function ({crudExpose, context}: CreateCrudOpti rowHandle: { //固定右侧 fixed: 'right', - width: 200, + width: 220, buttons: { view: { show: false, @@ -113,6 +113,24 @@ export const createCrudOptions = function ({crudExpose, context}: CreateCrudOpti remove: { show: auth('btn:Delete') }, + copy: { + text: '复制', //按钮显示名称 + // type: 'text', //按钮类型 + show: auth('btn:Copy'), + order: 4, //排序,这个看自己喜欢排在什么位置了 + style:{color: "#606266"}, + title: '复制', + click: (context: any): void => { + // 这里必须拿到了context里面的row属性并且赋值给newrow,接下来做一个深拷贝出来一个全新与源对象无关系的对象row + let newrow = context.row; + let row = JSON.parse(JSON.stringify(newrow)); + // 官方调用openAdd: (context: OpenEditContext, formOpts?: OpenDialogProps) => Promise;其中formOpts就是指form的选择配置 + // 第一个参数只能传命名为row的参数,别的名称好像不行。 + // 第二个参数是传了form的title名称进去{wrapper:{title:"复制数据"}},如果要传其它参数,可根据情况而定 + crudExpose.openAdd({row},{wrapper:{title:"复制数据"}}) + + }, + }, }, }, request: { -- Gitee From afd749eaabfb6ae5408b5cc7a1c3b0149713ea4d Mon Sep 17 00:00:00 2001 From: lxy <10179281+lxy0722@user.noreply.gitee.com> Date: Tue, 31 Dec 2024 17:23:00 +0800 Subject: [PATCH 38/45] =?UTF-8?q?=E8=A7=92=E8=89=B2=E6=8E=88=E6=9D=83?= =?UTF-8?q?=E5=A2=9E=E5=8A=A0=E9=BB=98=E8=AE=A4=E8=AE=BE=E7=BD=AE?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../views/role_menu_button_permission.py | 9 ++- .../system/role/components/RoleMenuBtn.vue | 79 ++++++++++++++++++- 2 files changed, 86 insertions(+), 2 deletions(-) diff --git a/backend/dvadmin/system/views/role_menu_button_permission.py b/backend/dvadmin/system/views/role_menu_button_permission.py index 723cd2a6..b568ddde 100644 --- a/backend/dvadmin/system/views/role_menu_button_permission.py +++ b/backend/dvadmin/system/views/role_menu_button_permission.py @@ -231,14 +231,21 @@ class RoleMenuButtonPermissionViewSet(CustomModelViewSet): isCheck = data.get('isCheck', None) roleId = data.get('roleId', None) btnId = data.get('btnId', None) + data_range = data.get('data_range', 0) # 默认全部数据 if isCheck: # 添加权限:创建关联记录 - RoleMenuButtonPermission.objects.create(role_id=roleId, menu_button_id=btnId) + RoleMenuButtonPermission.objects.create(role_id=roleId, menu_button_id=btnId, data_range=data_range) else: # 删除权限:移除关联记录 RoleMenuButtonPermission.objects.filter(role_id=roleId, menu_button_id=btnId).delete() menu_btn_instance = MenuButton.objects.get(id=btnId) serializer = RoleMenuButtonSerializer(menu_btn_instance, request=request) + + # 设置自定义权限 + if isCheck and data_range == 4: + request.data['role_menu_btn_perm_id'] = serializer.data['role_menu_btn_perm_id'] + self.set_role_menu_btn_data_range(request) + return DetailResponse(data=serializer.data, msg="更新成功") @action(methods=['PUT'], detail=False, permission_classes=[IsAuthenticated]) diff --git a/web/src/views/system/role/components/RoleMenuBtn.vue b/web/src/views/system/role/components/RoleMenuBtn.vue index 8d0f1b41..e5885cb6 100644 --- a/web/src/views/system/role/components/RoleMenuBtn.vue +++ b/web/src/views/system/role/components/RoleMenuBtn.vue @@ -1,6 +1,36 @@