优化字典数据列表,表单

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 rest_framework import serializers, viewsets
from system.models import DictData from system.models import DictData
from utils.custom_model_viewSet import CustomModelViewSet 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): class DictDataSerializer(serializers.ModelSerializer):
@@ -10,7 +15,28 @@ class DictDataSerializer(serializers.ModelSerializer):
fields = '__all__' 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): class DictDataViewSet(CustomModelViewSet):
queryset = DictData.objects.filter(is_deleted=False) queryset = DictData.objects.filter(is_deleted=False)
serializer_class = DictDataSerializer 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); 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, createDictData,
deleteDictData, deleteDictData,
getDictDataList, getDictDataList,
getDictDataSimple,
patchDictData, patchDictData,
updateDictData, updateDictData,
}; };

View File

@@ -128,15 +128,17 @@ export function useColumns(
fixed: 'left', fixed: 'left',
title: 'id', title: 'id',
treeNode: true, treeNode: true,
width: 150, width: 50,
}, },
{ {
field: 'label', field: 'label',
title: '字典标签', title: '字典标签',
width: 100,
}, },
{ {
field: 'value', field: 'value',
title: '字典键值', title: '字典键值',
width: 100,
}, },
{ {
field: 'sort', field: 'sort',
@@ -187,7 +189,7 @@ export function useColumns(
headerAlign: 'center', headerAlign: 'center',
showOverflow: false, showOverflow: false,
title: '操作', title: '操作',
width: 200, width: 100,
}, },
]; ];
} }

View File

@@ -26,7 +26,7 @@ const [FormModal, formModalApi] = useVbenModal({
}); });
/** /**
* 编辑套餐 * 编辑字典数据
* @param row * @param row
*/ */
function onEdit(row: SystemDictDataApi.SystemDictData) { function onEdit(row: SystemDictDataApi.SystemDictData) {
@@ -37,14 +37,18 @@ function onEdit(row: SystemDictDataApi.SystemDictData) {
} }
/** /**
* 创建新套餐 * 创建字典数据
*/ */
function onCreate() { function onCreate() {
formModalApi.setData(null).open(); formModalApi
.setData({
dict_type: Number(route.query.dict_type),
})
.open();
} }
/** /**
* 删除套餐 * 删除字典数据
* @param row * @param row
*/ */
function onDelete(row: SystemDictDataApi.SystemDictData) { function onDelete(row: SystemDictDataApi.SystemDictData) {

View File

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