diff --git a/backend/dvadmin/system/views/file_list.py b/backend/dvadmin/system/views/file_list.py index 660964d..38354d4 100644 --- a/backend/dvadmin/system/views/file_list.py +++ b/backend/dvadmin/system/views/file_list.py @@ -2,12 +2,13 @@ import hashlib import mimetypes import django_filters +from django.db import connection from rest_framework import serializers from rest_framework.decorators import action from application import dispatch from dvadmin.system.models import FileList -from dvadmin.utils.json_response import DetailResponse +from dvadmin.utils.json_response import DetailResponse, SuccessResponse from dvadmin.utils.serializers import CustomModelSerializer from dvadmin.utils.viewset import CustomModelViewSet @@ -99,13 +100,17 @@ class FileViewSet(CustomModelViewSet): @action(methods=['GET'], detail=False) def get_all(self, request): - return DetailResponse(data=self.get_serializer(self.get_queryset(), many=True).data) + data1 = self.get_serializer(self.get_queryset(), many=True).data + data2 = [] + if dispatch.is_tenants_mode(): + from django_tenants.utils import schema_context + with schema_context('public'): + data2 = self.get_serializer(FileList.objects.all(), many=True).data + return DetailResponse(data=data2+data1) - def get_queryset(self): + def list(self, request, *args, **kwargs): if self.request.query_params.get('system', 'False') == 'True' and dispatch.is_tenants_mode(): - from django_tenants.utils import tenant_context, get_tenant_model - with tenant_context(get_tenant_model().objects.filter(schema_name='public').first()): - print('系统内置文件') - return super().get_queryset() - print('常规文件') - return super().get_queryset() + from django_tenants.utils import schema_context + with schema_context('public'): + return super().list(request, *args, **kwargs) + return super().list(request, *args, **kwargs) diff --git a/web/src/components/fileSelector/index.vue b/web/src/components/fileSelector/index.vue index 68553e8..ba02e8c 100644 --- a/web/src/components/fileSelector/index.vue +++ b/web/src/components/fileSelector/index.vue @@ -73,7 +73,7 @@
+ @tab-change="handleTabChange" v-if="!isSuperTenent"> @@ -101,8 +101,9 @@ + :data="{ upload_method: 1 }" :drag="false" :show-file-list="false" :accept="AcceptList[tabsActived % 4]" + :on-success="() => { listRequest(); listRequestAll(); uploadRef.clearFiles(); }" + v-if="tabsActived > 3 ? isSuperTenent : true"> 上传{{ TypeLabel[tabsActived % 4] }} @@ -110,7 +111,7 @@
-
@@ -140,8 +141,9 @@ import { pluginsAll } from '/@/views/plugins/index'; import { storeToRefs } from "pinia"; import { useUserInfo } from "/@/stores/userInfo"; -const isTenentMode = true || pluginsAll && pluginsAll.length && pluginsAll.indexOf('dvadmin3-tenents-web') >= 0; -const isSuperTenent = true || (storeToRefs(useUserInfo())).userInfos.schema_name === 'public'; +const isTenentMode = pluginsAll && pluginsAll.length && pluginsAll.indexOf('dvadmin3-tenants-web') >= 0; +const userInfos = storeToRefs(useUserInfo()).userInfos +const isSuperTenent = userInfos.value.schema_name === 'public'; const TypeLabel = ['图片', '视频', '音频', '文件'] const AcceptList = ['image/*', 'video/*', 'audio/*', '']; const props = defineProps({ @@ -173,8 +175,8 @@ const props = defineProps({ // inputType不为selector时生效 inputSize: { type: Number, default: 100 }, - // v-model绑定的值是file数据的哪个key,默认是id - valueKey: { type: String, default: 'id' }, + // v-model绑定的值是file数据的哪个key,默认是url + valueKey: { type: String, default: 'url' }, } as any); const selectVisiable = ref(false); @@ -200,6 +202,8 @@ const listRequest = async () => { upload_method: 1, ...filterForm }); + listData.value = []; + await nextTick(); listData.value = res.data; pageForm.total = res.total; pageForm.page = res.page;