Files
cdTestPlant3/chengduTestPlant/src/components/ma-upload/index.vue
2023-06-04 20:01:58 +08:00

73 lines
2.4 KiB
Vue
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
<!--
- 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>