feat(字典管理): 字典管理

完成字典管理的对接
This commit is contained in:
猿小天
2023-03-06 11:26:56 +08:00
parent 4de58819e5
commit c63ad90821
5 changed files with 17 additions and 22 deletions

View File

@@ -54,21 +54,17 @@ class DictionaryViewSet(CustomModelViewSet):
extra_filter_class = [] extra_filter_class = []
search_fields = ['label'] search_fields = ['label']
def list(self,request): def get_queryset(self):
"""懒加载""" params = self.request.query_params
params = request.query_params
parent = params.get('parent', None) parent = params.get('parent', None)
if params: if params:
if parent: if parent:
queryset = self.queryset.filter(status=1, parent=parent) queryset = self.queryset.filter(status=1, parent=parent)
else: else:
queryset = self.queryset.filter(status=1) queryset = self.queryset.filter(status=1, parent__isnull=True)
else: else:
queryset = self.queryset.filter(status=1, parent__isnull=True) queryset = self.queryset.filter(status=1, parent__isnull=True)
queryset = self.filter_queryset(queryset) return queryset
serializer = DictionarySerializer(queryset, many=True, request=request)
data = serializer.data
return SuccessResponse(data=data)
class InitDictionaryViewSet(APIView): class InitDictionaryViewSet(APIView):

View File

@@ -1,13 +1,13 @@
import * as api from './api'; import * as api from './api';
import { dict, PageQuery, AddReq, DelReq, EditReq, CrudExpose, CrudOptions } from '@fast-crud/fast-crud'; import { dict, PageQuery, AddReq, DelReq, EditReq, CrudExpose, CrudOptions } from '@fast-crud/fast-crud';
import { dictionary } from '/@/utils/dictionary'; import { dictionary } from '/@/utils/dictionary';
import {ref} from 'vue'; import {nextTick, ref} from 'vue';
interface CreateCrudOptionsTypes { interface CreateCrudOptionsTypes {
crudOptions: CrudOptions; crudOptions: CrudOptions;
} }
export const createCrudOptions = function ({ crudExpose, subDictRef,showSub }: { crudExpose: CrudExpose; subDictRef: any,showSub:any }): CreateCrudOptionsTypes { export const createCrudOptions = function ({ crudExpose, subDictRef }: { crudExpose: CrudExpose; subDictRef: any }): CreateCrudOptionsTypes {
const pageRequest = async (query: PageQuery) => { const pageRequest = async (query: PageQuery) => {
return await api.GetList(query); return await api.GetList(query);
}; };
@@ -42,10 +42,12 @@ export const createCrudOptions = function ({ crudExpose, subDictRef,showSub }: {
//@ts-ignore //@ts-ignore
click: (context: any) => { click: (context: any) => {
const {row} = context const {row} = context
console.log(subDictRef.value.crudBinding)
// showSub.value = true
subDictRef.value.currentRow = row
subDictRef.value.drawer = true; subDictRef.value.drawer = true;
nextTick(()=>{
subDictRef.value.setSearchFormData({ form: { parent: row.id } });
subDictRef.value.doRefresh();
})
}, },
}, },

View File

@@ -1,7 +1,7 @@
<template> <template>
<fs-page> <fs-page>
<fs-crud ref="crudRef" v-bind="crudBinding"> </fs-crud> <fs-crud ref="crudRef" v-bind="crudBinding"> </fs-crud>
<subDict ref="subDictRef" :row-id="rowId"></subDict> <subDict ref="subDictRef"></subDict>
</fs-page> </fs-page>
</template> </template>
@@ -14,10 +14,6 @@ import subDict from './subDict/index.vue';
//字典配置ref //字典配置ref
const subDictRef = ref(); const subDictRef = ref();
const rowId: Ref<number> = ref(0);
defineExpose({ subDictRef, rowId });
// crud组件的ref // crud组件的ref
const crudRef = ref(); const crudRef = ref();
// crud 配置的ref // crud 配置的ref

View File

@@ -7,7 +7,7 @@ interface CreateCrudOptionsTypes {
crudOptions: CrudOptions; crudOptions: CrudOptions;
} }
export const createCrudOptions = function ({ crudExpose,currentRow }: { crudExpose: CrudExpose,currentRow:any }): CreateCrudOptionsTypes { export const createCrudOptions = function ({ crudExpose }: { crudExpose: CrudExpose }): CreateCrudOptionsTypes {
const pageRequest = async (query: PageQuery) => { const pageRequest = async (query: PageQuery) => {
return await api.GetList(query); return await api.GetList(query);
}; };

View File

@@ -7,7 +7,7 @@
</template> </template>
<script lang="ts" setup> <script lang="ts" setup>
import { ref, onMounted, defineProps, computed } from 'vue'; import {ref, onMounted, defineProps, computed, watch} from 'vue';
import { useExpose, useCrud } from '@fast-crud/fast-crud'; import { useExpose, useCrud } from '@fast-crud/fast-crud';
import { createCrudOptions } from './crud'; import { createCrudOptions } from './crud';
import { ElMessageBox } from 'element-plus'; import { ElMessageBox } from 'element-plus';
@@ -40,10 +40,11 @@ const handleClose = (done: () => void) => {
// catch error // catch error
}); });
}; };
const {setSearchFormData,doRefresh} = crudExpose
defineExpose({ drawer }); defineExpose({ drawer,setSearchFormData,doRefresh });
// 页面打开后获取列表数据 // 页面打开后获取列表数据
onMounted(() => { onMounted(() => {
// console.log(48,currentRow)
crudExpose.doRefresh(); crudExpose.doRefresh();
}); });
</script> </script>