<template>
    <div @click="selectFile">
        <input type="file" ref="fileInput" v-show="false" @change="onFileChange" />
        <div>{{uploading?infoText:'上传文件'}}</div>
    </div>
</template>

<script>
export default {
    name: "oss-uploader",
    data() {
        return {
            uploading: false,
            infoText: "上传中...",
            cosConfig: []
        }
    },
    mounted() {
        this.$http({
            url: this.$http.adornUrl('/sys/oss/config'),
            method: 'get',
            params: this.$http.adornParams()
        }).then(({ data }) => {
            if (data && data.code === 200 && data.config.type) {
                this.cosConfig = data.config
            } else {
                this.$message.error('请先配置云存储相关信息!')
            }

        })
    },
    methods: {
        selectFile() {//选择文件
            if (!this.uploading) {
                this.$refs.fileInput.click();
            }
        },
        onFileChange() {
            let file = this.$refs.fileInput.files[0];
            this.uploading = true;
            let formData = new FormData();
            formData.append("file", file)
            this.$http({
                url: this.$http.adornUrl('/sys/oss/upload'),
                method: 'post',
                data: formData
            }).then(({ data }) => {
                console.log(data)
                if (data && data.code === 200) {
                    this.$emit('uploaded', data.url)
                } else {
                    this.$message.error("文件上传失败:" + data.msg)
                }
                this.uploading = false;
            })
        }
    }
}
</script>