|
@@ -24,50 +24,63 @@
|
|
|
class="upload-box"
|
|
|
action="#"
|
|
|
:auto-upload="false"
|
|
|
+ :accept="acceptType"
|
|
|
:on-change="handleFileChange"
|
|
|
+ :on-remove="handleFileRemove"
|
|
|
:file-list="fileList"
|
|
|
- :multiple="true"
|
|
|
>
|
|
|
<div class="upload-button">
|
|
|
<span>文件</span>
|
|
|
- <el-button type="primary">上传</el-button>
|
|
|
+ <el-button type="primary" :disabled="!selectedGroup">上传</el-button>
|
|
|
</div>
|
|
|
</el-upload>
|
|
|
</div>
|
|
|
|
|
|
- <div class="upload-tips">
|
|
|
+ <div class="upload-tips" v-if="selectedGroup !== 1">
|
|
|
<div class="tip-item">
|
|
|
- <div class="tip-content">支持jpg、png、jpeg、mp4、wav、mp3、3ds格式文件上传,文件大小小于 2G</div>
|
|
|
+ <div class="tip-content">支持jpg、png、jpeg、mp4、wav、mp3、shp格式文件上传,文件大小 <= 2G</div>
|
|
|
</div>
|
|
|
|
|
|
<div class="tip-item">
|
|
|
- <div class="tip-content">上传.zip:需要zip内上传,包含数据和模型,mix文件包含不使用的文件,文件名不使用中文字符,如:</div>
|
|
|
+ <div class="tip-content">上传 obj:需使用zip包上传。包含贴图、模型、mtl文件,包内不得包含文件夹,文件名不得使用中文。如图:</div>
|
|
|
<div class="tip-example">
|
|
|
<img src="@/assets/image/libraryImg/examplezip.png" alt="示例zip" />
|
|
|
</div>
|
|
|
</div>
|
|
|
|
|
|
<div class="tip-item">
|
|
|
- <div class="tip-content">上传.gltf/.glb:需要zip内上传,包含不使用自定义文件,文件名不使用中文字符,文件大小小于 1G,如:</div>
|
|
|
+ <div class="tip-content">上传ply/las/laz:需使用zip包上传,包内不得包含文件夹,文件名不得使用中文。文件大小 <= 1G。如图:</div>
|
|
|
<div class="tip-example">
|
|
|
<img src="@/assets/image/libraryImg/egzip.png" alt="示例gltf" />
|
|
|
</div>
|
|
|
</div>
|
|
|
|
|
|
<div class="tip-item">
|
|
|
- <div class="tip-content">上传.osgb:需要zip内上传,包含 Data 文件夹,xml 文件,包含不使用的文件,文件名不使用中文字符,文件大小小于 2G,如:</div>
|
|
|
+ <div class="tip-content">上传.osgb:需使用zip包上传,包含 Data 文件夹,xml 文件,包含不使用的文件夹,文件名不得使用中文。文件大小 <= 1G。如图:</div>
|
|
|
<div class="tip-example">
|
|
|
<img src="@/assets/image/libraryImg/osgbzip.png" alt="示例osgb" />
|
|
|
</div>
|
|
|
</div>
|
|
|
|
|
|
<div class="tip-item">
|
|
|
- <div class="tip-content">上传.b3dm:需要zip内上传,包含 Tileset.json 文件,包含json文件,包含不使用的文件,文件名不使用中文字符,文件大小小于 1G,如:</div>
|
|
|
+ <div class="tip-content">上传.b3dm:需使用zip包上传,包含 Tile 文件夹,内含json文件,包含不使用的文件夹,文件名不得使用中文。文件大小 <= 1G。如图:</div>
|
|
|
<div class="tip-example">
|
|
|
<img src="@/assets/image/libraryImg/b3dmzip.png" alt="示例b3dm" />
|
|
|
</div>
|
|
|
</div>
|
|
|
</div>
|
|
|
+ <div class="upload-tips" v-else>
|
|
|
+ <div class="tip-item">
|
|
|
+ <div class="tip-content">支持obj、glb格式文件上传,文件大小 <= 5MB</div>
|
|
|
+ </div>
|
|
|
+
|
|
|
+ <div class="tip-item">
|
|
|
+ <div class="tip-content">上传 obj:需使用zip包上传。包含贴图、模型、mtl文件,包内不得包含文件夹,文件名不得使用中文。如图:</div>
|
|
|
+ <div class="tip-example">
|
|
|
+ <img src="@/assets/image/libraryImg/examplezip.png" alt="示例zip" />
|
|
|
+ </div>
|
|
|
+ </div>
|
|
|
+ </div>
|
|
|
</div>
|
|
|
|
|
|
<template #footer>
|
|
@@ -96,7 +109,13 @@ const props = defineProps({
|
|
|
});
|
|
|
|
|
|
const emit = defineEmits(['update:visible', 'refresh']);
|
|
|
-
|
|
|
+const acceptType = computed(() => {
|
|
|
+ if (selectedGroup.value == 1) {
|
|
|
+ return '.obj,.glb,.zip';
|
|
|
+ } else {
|
|
|
+ return '.jpg,.png,.jpeg,.mp4,.wav,.mp3,.shp,.zip';
|
|
|
+ }
|
|
|
+});
|
|
|
const dialogVisible = computed({
|
|
|
get: () => props.visible,
|
|
|
set: (val) => emit('update:visible', val)
|
|
@@ -110,6 +129,11 @@ const handleFileChange = (file, files) => {
|
|
|
fileList.value = files;
|
|
|
};
|
|
|
|
|
|
+// 处理文件删除
|
|
|
+const handleFileRemove = (file, fileList) => {
|
|
|
+ handleFileChange({}, []);
|
|
|
+};
|
|
|
+
|
|
|
// 关闭弹窗
|
|
|
const handleClose = () => {
|
|
|
dialogVisible.value = false;
|
|
@@ -123,12 +147,12 @@ const handleUpload = async () => {
|
|
|
ElMessage.warning('请选择分组');
|
|
|
return;
|
|
|
}
|
|
|
-
|
|
|
+
|
|
|
if (fileList.value.length === 0) {
|
|
|
ElMessage.warning('请选择要上传的文件');
|
|
|
return;
|
|
|
}
|
|
|
-
|
|
|
+
|
|
|
try {
|
|
|
// 这里实现文件上传逻辑
|
|
|
const formData = new FormData();
|