feat(字典管理): ✨ 字典管理
完成字典管理的对接
This commit is contained in:
@@ -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):
|
||||||
|
|||||||
@@ -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();
|
||||||
|
})
|
||||||
|
|
||||||
|
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
|
|||||||
@@ -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
|
||||||
|
|||||||
@@ -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);
|
||||||
};
|
};
|
||||||
|
|||||||
@@ -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>
|
||||||
|
|||||||
Reference in New Issue
Block a user