fix(字典管理): 🐛 字典管理

字典管理
This commit is contained in:
猿小天
2023-03-06 01:49:39 +08:00
parent 284f09f90d
commit 4de58819e5
9 changed files with 39 additions and 9 deletions

View File

@@ -54,6 +54,22 @@ class DictionaryViewSet(CustomModelViewSet):
extra_filter_class = [] extra_filter_class = []
search_fields = ['label'] search_fields = ['label']
def list(self,request):
"""懒加载"""
params = request.query_params
parent = params.get('parent', None)
if params:
if parent:
queryset = self.queryset.filter(status=1, parent=parent)
else:
queryset = self.queryset.filter(status=1)
else:
queryset = self.queryset.filter(status=1, parent__isnull=True)
queryset = self.filter_queryset(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,14 @@
import { request } from '/@/utils/service'; import { request } from '/@/utils/service';
import { PageQuery, AddReq, DelReq, EditReq, InfoReq } from '@fast-crud/fast-crud'; import { PageQuery, AddReq, DelReq, EditReq, InfoReq } from '@fast-crud/fast-crud';
import XEUtils from 'xe-utils';
export const apiPrefix = '/api/system/dictionary/'; export const apiPrefix = '/api/system/dictionary/';
export function GetList(query: PageQuery) { export function GetList(query: PageQuery) {
return request({ return request({
url: apiPrefix, url: apiPrefix,
method: 'get', method: 'get',
data: query, params: {},
}); })
} }
export function GetObj(id: InfoReq) { export function GetObj(id: InfoReq) {
return request({ return request({

View File

@@ -1,12 +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';
interface CreateCrudOptionsTypes { interface CreateCrudOptionsTypes {
crudOptions: CrudOptions; crudOptions: CrudOptions;
} }
export const createCrudOptions = function ({ crudExpose, subDictRef }: { crudExpose: CrudExpose; subDictRef: any }): CreateCrudOptionsTypes { export const createCrudOptions = function ({ crudExpose, subDictRef,showSub }: { crudExpose: CrudExpose; subDictRef: any,showSub:any }): CreateCrudOptionsTypes {
const pageRequest = async (query: PageQuery) => { const pageRequest = async (query: PageQuery) => {
return await api.GetList(query); return await api.GetList(query);
}; };
@@ -39,8 +40,13 @@ export const createCrudOptions = function ({ crudExpose, subDictRef }: { crudExp
content: '字典配置', content: '字典配置',
}, },
//@ts-ignore //@ts-ignore
click: (opts: any) => { click: (context: any) => {
const {row} = context
console.log(subDictRef.value.crudBinding)
// showSub.value = true
subDictRef.value.currentRow = row
subDictRef.value.drawer = true; subDictRef.value.drawer = true;
}, },
}, },
}, },
@@ -58,6 +64,7 @@ export const createCrudOptions = function ({ crudExpose, subDictRef }: { crudExp
//计算序号,你可以自定义计算规则,此处为翻页累加 //计算序号,你可以自定义计算规则,此处为翻页累加
let index = context.index ?? 1; let index = context.index ?? 1;
let pagination = crudExpose.crudBinding.value.pagination; let pagination = crudExpose.crudBinding.value.pagination;
// @ts-ignore
return ((pagination.currentPage ?? 1) - 1) * pagination.pageSize + index + 1; return ((pagination.currentPage ?? 1) - 1) * pagination.pageSize + index + 1;
}, },
}, },

View File

@@ -6,7 +6,7 @@ export function GetList(query: PageQuery) {
return request({ return request({
url: apiPrefix, url: apiPrefix,
method: 'get', method: 'get',
data: query, params: query,
}); });
} }
export function GetObj(id: InfoReq) { export function GetObj(id: InfoReq) {

View File

@@ -2,11 +2,12 @@ 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 { request } from '/@/utils/service'; import { request } from '/@/utils/service';
import { dictionary } from '/@/utils/dictionary'; import { dictionary } from '/@/utils/dictionary';
import {watch} from "vue";
interface CreateCrudOptionsTypes { interface CreateCrudOptionsTypes {
crudOptions: CrudOptions; crudOptions: CrudOptions;
} }
export const createCrudOptions = function ({ crudExpose }: { crudExpose: CrudExpose }): CreateCrudOptionsTypes { export const createCrudOptions = function ({ crudExpose,currentRow }: { crudExpose: CrudExpose,currentRow:any }): CreateCrudOptionsTypes {
const pageRequest = async (query: PageQuery) => { const pageRequest = async (query: PageQuery) => {
return await api.GetList(query); return await api.GetList(query);
}; };
@@ -20,6 +21,7 @@ export const createCrudOptions = function ({ crudExpose }: { crudExpose: CrudExp
const addRequest = async ({ form }: AddReq) => { const addRequest = async ({ form }: AddReq) => {
return await api.AddObj(form); return await api.AddObj(form);
}; };
return { return {
crudOptions: { crudOptions: {
request: { request: {
@@ -41,6 +43,7 @@ export const createCrudOptions = function ({ crudExpose }: { crudExpose: CrudExp
//计算序号,你可以自定义计算规则,此处为翻页累加 //计算序号,你可以自定义计算规则,此处为翻页累加
let index = context.index ?? 1; let index = context.index ?? 1;
let pagination = crudExpose.crudBinding.value.pagination; let pagination = crudExpose.crudBinding.value.pagination;
// @ts-ignore
return ((pagination.currentPage ?? 1) - 1) * pagination.pageSize + index + 1; return ((pagination.currentPage ?? 1) - 1) * pagination.pageSize + index + 1;
}, },
}, },

View File

@@ -1,5 +1,5 @@
<template> <template>
<el-drawer size="70%" v-model="drawer" direction="rtl" destroy-on-close :before-close="handleClose"> <el-drawer size="70%" v-model="drawer" direction="rtl" destroy-on-close :before-close="handleClose">
<fs-page> <fs-page>
<fs-crud ref="crudRef" v-bind="crudBinding"> </fs-crud> <fs-crud ref="crudRef" v-bind="crudBinding"> </fs-crud>
</fs-page> </fs-page>
@@ -24,8 +24,10 @@ const { resetCrudOptions } = useCrud({ crudExpose, crudOptions });
//抽屉是否显示 //抽屉是否显示
const drawer = ref(false); const drawer = ref(false);
//抽屉关闭确认 //抽屉关闭确认
const handleClose = (done: () => void) => { const handleClose = (done: () => void) => {
ElMessageBox.confirm('您确定要关闭?', { ElMessageBox.confirm('您确定要关闭?', {
confirmButtonText: '确定', confirmButtonText: '确定',
cancelButtonText: '取消', cancelButtonText: '取消',

View File

@@ -33,7 +33,6 @@ export const createCrudOptions = function ({crudExpose}: { crudExpose: CrudExpos
delRequest delRequest
}, },
columns: { columns: {
id: { id: {
title: 'id', title: 'id',
form: { form: {

View File

@@ -41,6 +41,7 @@ export const createCrudOptions = function ({crudExpose,rolePermission}: {crudExp
}, },
click: (context:any):void => { click: (context:any):void => {
const {row} = context const {row} = context
// eslint-disable-next-line no-mixed-spaces-and-tabs
rolePermission.value.drawer=true rolePermission.value.drawer=true
rolePermission.value.editedRoleInfo = row rolePermission.value.editedRoleInfo = row
rolePermission.value.initGet() rolePermission.value.initGet()
@@ -69,6 +70,7 @@ export const createCrudOptions = function ({crudExpose,rolePermission}: {crudExp
//计算序号,你可以自定义计算规则,此处为翻页累加 //计算序号,你可以自定义计算规则,此处为翻页累加
let index = context.index ?? 1; let index = context.index ?? 1;
let pagination = crudExpose.crudBinding.value.pagination; let pagination = crudExpose.crudBinding.value.pagination;
// @ts-ignore
return ((pagination.currentPage ?? 1) - 1) * pagination.pageSize + index + 1; return ((pagination.currentPage ?? 1) - 1) * pagination.pageSize + index + 1;
}, },
}, },

View File

@@ -306,7 +306,7 @@ const onSaveButtonForm = async () => {
//选中的部门 //选中的部门
const checkedList = deptTree.value.getCheckedKeys() const checkedList = deptTree.value.getCheckedKeys()
form.dept = checkedList form.dept = checkedList
if (!buttonFormRef) return if (!buttonFormRef.value) return
await buttonFormRef.value.validate((valid, fields) => { await buttonFormRef.value.validate((valid, fields) => {
if (valid) { if (valid) {
api.CreatePermission(form).then((res:any)=>{ api.CreatePermission(form).then((res:any)=>{