优化字典数据列表,表单

This commit is contained in:
XIE7654
2025-07-16 10:52:48 +08:00
parent b82b38940b
commit baa650ea64
5 changed files with 49 additions and 7 deletions

View File

@@ -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']
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)

View File

@@ -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,
};

View File

@@ -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,
},
];
}

View File

@@ -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) {

View File

@@ -80,6 +80,7 @@ export function useColumns(): VxeTableGridOptions<SystemLoginLogApi.SystemLoginL
{
field: 'user_ip',
title: '登录地址',
width: 150,
},
{
field: 'user_agent',