下载中心优化
This commit is contained in:
@@ -41,6 +41,9 @@ class DownloadCenterViewSet(CustomModelViewSet):
|
|||||||
serializer_class = DownloadCenterSerializer
|
serializer_class = DownloadCenterSerializer
|
||||||
filter_class = DownloadCenterFilterSet
|
filter_class = DownloadCenterFilterSet
|
||||||
permission_classes = []
|
permission_classes = []
|
||||||
|
extra_filter_class = []
|
||||||
|
|
||||||
def get_queryset(self):
|
def get_queryset(self):
|
||||||
|
if self.request.user.is_superuser:
|
||||||
|
return super().get_queryset()
|
||||||
return super().get_queryset().filter(creator=self.request.user)
|
return super().get_queryset().filter(creator=self.request.user)
|
||||||
|
|||||||
@@ -34,10 +34,6 @@ class FileSerializer(CustomModelSerializer):
|
|||||||
model = FileList
|
model = FileList
|
||||||
fields = "__all__"
|
fields = "__all__"
|
||||||
|
|
||||||
class Meta:
|
|
||||||
model = FileList
|
|
||||||
fields = "__all__"
|
|
||||||
|
|
||||||
def create(self, validated_data):
|
def create(self, validated_data):
|
||||||
file_engine = dispatch.get_system_config_values("fileStorageConfig.file_engine") or 'local'
|
file_engine = dispatch.get_system_config_values("fileStorageConfig.file_engine") or 'local'
|
||||||
file_backup = dispatch.get_system_config_values("fileStorageConfig.file_backup")
|
file_backup = dispatch.get_system_config_values("fileStorageConfig.file_backup")
|
||||||
|
|||||||
@@ -305,11 +305,10 @@ class ExportSerializerMixin:
|
|||||||
assert self.export_serializer_class, "'%s' 请配置对应的导出序列化器。" % self.__class__.__name__
|
assert self.export_serializer_class, "'%s' 请配置对应的导出序列化器。" % self.__class__.__name__
|
||||||
data = self.export_serializer_class(queryset, many=True, request=request).data
|
data = self.export_serializer_class(queryset, many=True, request=request).data
|
||||||
try:
|
try:
|
||||||
from dvadmin3_celery import settings
|
|
||||||
async_export_data.delay(
|
async_export_data.delay(
|
||||||
data,
|
data,
|
||||||
str(f"导出{get_verbose_name(queryset)}-{datetime.datetime.now().strftime('%Y%m%d%H%M%S')}.xlsx"),
|
str(f"导出{get_verbose_name(queryset)}-{datetime.datetime.now().strftime('%Y%m%d%H%M%S')}.xlsx"),
|
||||||
DownloadCenter.objects.create(creator=request.user, task_name=f'{get_verbose_name(queryset)}数据导出任务').pk,
|
DownloadCenter.objects.create(creator=request.user, task_name=f'{get_verbose_name(queryset)}数据导出任务', dept_belong_id=request.user.dept).pk,
|
||||||
self.export_field_label
|
self.export_field_label
|
||||||
)
|
)
|
||||||
return SuccessResponse(msg="导入任务已创建,请前往‘下载中心’等待下载")
|
return SuccessResponse(msg="导入任务已创建,请前往‘下载中心’等待下载")
|
||||||
|
|||||||
@@ -66,7 +66,7 @@
|
|||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</slot>
|
</slot>
|
||||||
<el-dialog v-model="selectVisiable" :draggable="false" width="50%" :align-center="false" :append-to-body="true"
|
<el-dialog v-model="selectVisiable" :draggable="true" width="50%" :align-center="false" :append-to-body="true"
|
||||||
@open="if (listData.length === 0) listRequest();" @close="onClose" @closed="onClosed" modal-class="_overlay">
|
@open="if (listData.length === 0) listRequest();" @close="onClose" @closed="onClosed" modal-class="_overlay">
|
||||||
<template #header>
|
<template #header>
|
||||||
<span class="el-dialog__title">文件选择</span>
|
<span class="el-dialog__title">文件选择</span>
|
||||||
@@ -248,7 +248,7 @@ const listRequest = async () => {
|
|||||||
});
|
});
|
||||||
listData.value = [];
|
listData.value = [];
|
||||||
await nextTick();
|
await nextTick();
|
||||||
listData.value = res.data;
|
listData.value = (res.data as any[]).map((item: any) => ({ ...item, url: getBaseURL(item.url) }));
|
||||||
pageForm.total = res.total;
|
pageForm.total = res.total;
|
||||||
pageForm.page = res.page;
|
pageForm.page = res.page;
|
||||||
pageForm.limit = res.limit;
|
pageForm.limit = res.limit;
|
||||||
@@ -277,8 +277,10 @@ const onItemClick = async (e: MouseEvent) => {
|
|||||||
if (target.classList.contains('active')) { target.classList.remove('active'); flat = -1; }
|
if (target.classList.contains('active')) { target.classList.remove('active'); flat = -1; }
|
||||||
else { target.classList.add('active'); flat = 1; }
|
else { target.classList.add('active'); flat = 1; }
|
||||||
if (data.value.length) {
|
if (data.value.length) {
|
||||||
if (flat === 1) data.value.push(fileId);
|
let _l = JSON.parse(JSON.stringify(data.value));
|
||||||
else data.value.splice(data.value.indexOf(fileId), 1);
|
if (flat === 1) _l.push(fileId);
|
||||||
|
else _l.splice(_l.indexOf(fileId), 1);
|
||||||
|
data.value = _l;
|
||||||
} else data.value = [fileId];
|
} else data.value = [fileId];
|
||||||
// 去重排序,<降序,>升序
|
// 去重排序,<降序,>升序
|
||||||
data.value = Array.from(new Set(data.value)).sort();
|
data.value = Array.from(new Set(data.value)).sort();
|
||||||
@@ -378,7 +380,7 @@ const data = ref<any>(null);
|
|||||||
const emit = defineEmits(['update:modelValue', 'onSave', 'onClose', 'onClosed']);
|
const emit = defineEmits(['update:modelValue', 'onSave', 'onClose', 'onClosed']);
|
||||||
watch(
|
watch(
|
||||||
() => props.modelValue,
|
() => props.modelValue,
|
||||||
(val) => data.value = val,
|
(val) => data.value = props.multiple ? JSON.parse(JSON.stringify(val)) : val,
|
||||||
{ immediate: true }
|
{ immediate: true }
|
||||||
);
|
);
|
||||||
const { ui } = useUi();
|
const { ui } = useUi();
|
||||||
|
|||||||
@@ -1,7 +1,7 @@
|
|||||||
<template>
|
<template>
|
||||||
<fs-page>
|
<fs-page>
|
||||||
<FileSelector v-model="selected" :showInput="false" ref="fileSelectorRef" :tabsShow="SHOW.ALL" :itemSize="120"
|
<FileSelector v-model="selected" :showInput="false" ref="fileSelectorRef" :tabsShow="SHOW.ALL" :itemSize="120"
|
||||||
:multiple="true" :selectable="false">
|
:multiple="false" :selectable="true" valueKey="url" inputType="image">
|
||||||
<!-- <template #input="scope">
|
<!-- <template #input="scope">
|
||||||
input:{{ scope }}
|
input:{{ scope }}
|
||||||
</template> -->
|
</template> -->
|
||||||
|
|||||||
Reference in New Issue
Block a user