73 lines
2.4 KiB
Vue
73 lines
2.4 KiB
Vue
<!--
|
||
- MineAdmin is committed to providing solutions for quickly building web applications
|
||
- Please view the LICENSE file that was distributed with this source code,
|
||
- For the full copyright and license information.
|
||
- Thank you very much for using MineAdmin.
|
||
-
|
||
- @Author X.Mo<root@imoi.cn>
|
||
- @Link https://gitee.com/xmo/mineadmin-vue
|
||
-->
|
||
<template>
|
||
<div>
|
||
<ma-image-upload v-if="props.type === 'image'" v-model="file" />
|
||
<ma-file-upload v-if="props.type === 'file'" v-model="file" />
|
||
<ma-chunk-upload v-if="props.type === 'chunk'" v-model="file" />
|
||
</div>
|
||
</template>
|
||
<script setup>
|
||
import { ref, watch, provide } from "vue"
|
||
import { Message } from "@arco-design/web-vue"
|
||
|
||
import uploadConfig from "@/config/upload"
|
||
import MaImageUpload from "./components/image-upload.vue"
|
||
import MaFileUpload from "./components/file-upload.vue"
|
||
import MaChunkUpload from "./components/chunk-upload.vue"
|
||
|
||
const emit = defineEmits(["update:modelValue"])
|
||
const file = ref()
|
||
const props = defineProps({
|
||
modelValue: { type: [String, Number, Array], default: () => {} },
|
||
title: { type: String, default: "buttonText" },
|
||
icon: { type: String, default: "icon-plus" },
|
||
rounded: { type: Boolean, default: false },
|
||
multiple: { type: Boolean, default: false },
|
||
disabled: { type: Boolean, default: false },
|
||
draggable: { type: Boolean, default: false },
|
||
size: { type: Number, default: 4 * 1024 * 1024 },
|
||
chunk: { type: Boolean, default: false },
|
||
chunkSize: { type: Number, default: 1 * 1024 * 1024 },
|
||
limit: { type: Number, default: 0 },
|
||
tip: { type: String, default: undefined },
|
||
type: { type: String, default: "image" },
|
||
accept: { type: String, default: "*" },
|
||
returnType: { type: String, default: "url" },
|
||
fileType: { type: String, default: "button" },
|
||
showList: { type: Boolean, default: true },
|
||
requestData: { type: Object, default: {} }
|
||
})
|
||
|
||
if (!["id", "url", "hash"].includes(props.returnType)) {
|
||
Message.error("MaUpload组件props的returnType只能为:id, url, hash 其中一个")
|
||
console.error("MaUpload组件props的returnType只能为:id, url, hash 其中一个")
|
||
}
|
||
|
||
watch(
|
||
() => props.modelValue,
|
||
(val) => {
|
||
file.value = val
|
||
},
|
||
{
|
||
deep: true,
|
||
immediate: true
|
||
}
|
||
)
|
||
|
||
provide("storageMode", uploadConfig.storageMode)
|
||
provide("config", props)
|
||
|
||
watch(
|
||
() => file.value,
|
||
(vl) => emit("update:modelValue", vl)
|
||
)
|
||
</script>
|