diff --git a/backend/dvadmin/system/views/user.py b/backend/dvadmin/system/views/user.py index c0aa72e..36510e3 100644 --- a/backend/dvadmin/system/views/user.py +++ b/backend/dvadmin/system/views/user.py @@ -15,12 +15,24 @@ from dvadmin.utils.validator import CustomUniqueValidator from dvadmin.utils.viewset import CustomModelViewSet +def recursion(instance,parent,result): + new_instance = getattr(instance,parent,None) + res = [] + data = getattr(instance, result, None) + if data: + res.append(data) + if new_instance: + array = recursion(new_instance,parent,result) + res+=(array) + return res + class UserSerializer(CustomModelSerializer): """ 用户管理-序列化器 """ dept_name = serializers.CharField(source='dept.name', read_only=True) role_info = DynamicSerializerMethodField() + dept_name_all = serializers.SerializerMethodField() class Meta: model = Users @@ -30,6 +42,11 @@ class UserSerializer(CustomModelSerializer): "post": {"required": False}, } + def get_dept_name_all(self, instance): + dept_name_all = recursion(instance.dept, "parent", "name") + dept_name_all.reverse() + return "/".join(dept_name_all) + def get_role_info(self, instance, parsed_query): roles = instance.role.all() # You can do what ever you want in here diff --git a/web/src/api/service.js b/web/src/api/service.js index 7470667..36659f1 100644 --- a/web/src/api/service.js +++ b/web/src/api/service.js @@ -224,7 +224,7 @@ export const downloadFile = function ({ url, params, method, filename }) { responseType: 'blob' // headers: {Accept: 'application/vnd.openxmlformats-officedocument'} }).then(res => { - const fileName = window.decodeURI(res.headers['content-disposition'].split('=')[1]) || filename + '.xls' || '文件导出.xls' + const fileName = window.decodeURI(filename + '.xls' || res.headers['content-disposition'].split('=')[1]) || '文件导出.xls' if (res) { const blob = new Blob([res.data], { type: 'charset=utf-8' }) const elink = document.createElement('a') diff --git a/web/src/views/system/user/crud.js b/web/src/views/system/user/crud.js index d4a3495..b79626d 100644 --- a/web/src/views/system/user/crud.js +++ b/web/src/views/system/user/crud.js @@ -3,7 +3,7 @@ import { urlPrefix as deptPrefix } from '../dept/api' import util from '@/libs/util' export const crudOptions = (vm) => { - util.filterParams(vm, ['dept_name', 'role_info{name}']) + util.filterParams(vm, ['dept_name', 'role_info{name}','dept_name_all']) return { pageOptions: { compact: true