From baa650ea64af91a953dc23745eddf9f874abe0a3 Mon Sep 17 00:00:00 2001 From: XIE7654 <765462425@qq.com> Date: Wed, 16 Jul 2025 10:52:48 +0800 Subject: [PATCH] =?UTF-8?q?=E4=BC=98=E5=8C=96=E5=AD=97=E5=85=B8=E6=95=B0?= =?UTF-8?q?=E6=8D=AE=E5=88=97=E8=A1=A8=EF=BC=8C=E8=A1=A8=E5=8D=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- backend/system/views/dict_data.py | 28 ++++++++++++++++++- web/apps/web-antd/src/api/system/dict_data.ts | 9 ++++++ .../src/views/system/dict_data/data.ts | 6 ++-- .../src/views/system/dict_data/list.vue | 12 +++++--- .../src/views/system/login_log/data.ts | 1 + 5 files changed, 49 insertions(+), 7 deletions(-) diff --git a/backend/system/views/dict_data.py b/backend/system/views/dict_data.py index 7355068..92737ea 100644 --- a/backend/system/views/dict_data.py +++ b/backend/system/views/dict_data.py @@ -1,6 +1,11 @@ from rest_framework import serializers, viewsets from system.models import DictData from utils.custom_model_viewSet import CustomModelViewSet +from rest_framework.decorators import action +from rest_framework.response import Response +from django_filters import rest_framework as filters + +from utils.models import CommonStatus class DictDataSerializer(serializers.ModelSerializer): @@ -10,7 +15,28 @@ class DictDataSerializer(serializers.ModelSerializer): fields = '__all__' +class DictDataFilter(filters.FilterSet): + class Meta: + model = DictData + fields = ['dict_type'] + + +class DictDataLabelValueSerializer(serializers.ModelSerializer): + dict_type_value = serializers.CharField(source='dict_type.value') + + class Meta: + model = DictData + fields = ['label', 'value', 'dict_type'] + + class DictDataViewSet(CustomModelViewSet): queryset = DictData.objects.filter(is_deleted=False) serializer_class = DictDataSerializer - filterset_fields = ['dict_type'] \ No newline at end of file + filterset_class = DictDataFilter + + @action(detail=False, methods=['get']) + def simple(self, request): + # 复用filterset_class过滤DictData + queryset = self.get_queryset().filter(status=CommonStatus.ENABLED) + serializer = DictDataLabelValueSerializer(queryset, many=True) + return Response(serializer.data) \ No newline at end of file diff --git a/web/apps/web-antd/src/api/system/dict_data.ts b/web/apps/web-antd/src/api/system/dict_data.ts index e24cf39..89e3842 100644 --- a/web/apps/web-antd/src/api/system/dict_data.ts +++ b/web/apps/web-antd/src/api/system/dict_data.ts @@ -44,6 +44,14 @@ async function updateDictData( ) { return requestClient.put(`/system/dict_data/${id}/`, data); } + +/** + * 获取字典数据select用 + */ +async function getDictDataSimple() { + return requestClient.get(`/system/dict_data/simple/`); +} + /** * 更新字典数据 * @@ -69,6 +77,7 @@ export { createDictData, deleteDictData, getDictDataList, + getDictDataSimple, patchDictData, updateDictData, }; diff --git a/web/apps/web-antd/src/views/system/dict_data/data.ts b/web/apps/web-antd/src/views/system/dict_data/data.ts index e240103..eba13fd 100644 --- a/web/apps/web-antd/src/views/system/dict_data/data.ts +++ b/web/apps/web-antd/src/views/system/dict_data/data.ts @@ -128,15 +128,17 @@ export function useColumns( fixed: 'left', title: 'id', treeNode: true, - width: 150, + width: 50, }, { field: 'label', title: '字典标签', + width: 100, }, { field: 'value', title: '字典键值', + width: 100, }, { field: 'sort', @@ -187,7 +189,7 @@ export function useColumns( headerAlign: 'center', showOverflow: false, title: '操作', - width: 200, + width: 100, }, ]; } diff --git a/web/apps/web-antd/src/views/system/dict_data/list.vue b/web/apps/web-antd/src/views/system/dict_data/list.vue index fe06eda..d458533 100644 --- a/web/apps/web-antd/src/views/system/dict_data/list.vue +++ b/web/apps/web-antd/src/views/system/dict_data/list.vue @@ -26,7 +26,7 @@ const [FormModal, formModalApi] = useVbenModal({ }); /** - * 编辑套餐 + * 编辑字典数据 * @param row */ function onEdit(row: SystemDictDataApi.SystemDictData) { @@ -37,14 +37,18 @@ function onEdit(row: SystemDictDataApi.SystemDictData) { } /** - * 创建新套餐 + * 创建字典数据 */ function onCreate() { - formModalApi.setData(null).open(); + formModalApi + .setData({ + dict_type: Number(route.query.dict_type), + }) + .open(); } /** - * 删除套餐 + * 删除字典数据 * @param row */ function onDelete(row: SystemDictDataApi.SystemDictData) { diff --git a/web/apps/web-antd/src/views/system/login_log/data.ts b/web/apps/web-antd/src/views/system/login_log/data.ts index 9d82f3a..e6d3f0f 100644 --- a/web/apps/web-antd/src/views/system/login_log/data.ts +++ b/web/apps/web-antd/src/views/system/login_log/data.ts @@ -80,6 +80,7 @@ export function useColumns(): VxeTableGridOptions