马宇豪
2025-02-25 31dcd2ac79af82cc149f34fbfb6ffd3d4a91a3cd
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
<template>
    <el-dialog v-model="dialogVisible" title="导入Excel" width="50%" :fullscreen="full" draggable>
        <el-button @click="toggleFullscreen" size="small" class="pot" :icon="FullScreen"></el-button>
        <el-upload
            v-model:file-list="fileList"
            class="upload-demo"
            action="https://run.mocky.io/v3/9d059bf9-4660-45f2-925d-ce80ad6c4d15"
            multiple
            :on-preview="handlePreview"
            :on-remove="handleRemove"
            :before-remove="beforeRemove"
            :limit="3"
            :on-exceed="handleExceed"
        >
            <el-button>下载模板</el-button>
            <el-button type="primary">点击上传</el-button>
            <template #tip>
                <div class="el-upload__tip">只允许导入“xls”或“xlsx”格式文件!</div>
            </template>
        </el-upload>
    </el-dialog>
</template>
<script lang="ts">
import { ref, toRefs, reactive, defineComponent, computed } from 'vue';
import { ElMessage, ElMessageBox } from 'element-plus';
import type { UploadProps, UploadUserFile } from 'element-plus';
import { FullScreen } from '@element-plus/icons-vue';
export default defineComponent({
    setup() {
        let dialogVisible = ref<boolean>(false);
        const fileList = ref<UploadUserFile[]>([
            {
                name: 'element-plus-logo.svg',
                url: 'https://element-plus.org/images/element-plus-logo.svg',
            },
            {
                name: 'element-plus-logo2.svg',
                url: 'https://element-plus.org/images/element-plus-logo.svg',
            },
        ]);
 
        const handleRemove: UploadProps['onRemove'] = (file, uploadFiles) => {
            console.log(file, uploadFiles);
        };
 
        const handlePreview: UploadProps['onPreview'] = (uploadFile) => {
            console.log(uploadFile);
        };
 
        const handleExceed: UploadProps['onExceed'] = (files, uploadFiles) => {
            ElMessage.warning(`The limit is 3, you selected ${files.length} files this time, add up to ${files.length + uploadFiles.length} totally`);
        };
 
        const beforeRemove: UploadProps['beforeRemove'] = (uploadFile, uploadFiles) => {
            return ElMessageBox.confirm(`Cancel the transfert of ${uploadFile.name} ?`).then(
                () => true,
                () => false
            );
        };
        // 打开弹窗
        const openDialog = (type: string, value: any, projectList: any, projectId: string) => {
            dialogVisible.value = true;
        };
        //全屏
        const full = ref(false);
        const toggleFullscreen = () => {
            if (full.value == false) {
                full.value = true;
            }else{
        full.value = false;
      }
        };
        return {
            dialogVisible,
            fileList,
            handleRemove,
            handlePreview,
            handleExceed,
            beforeRemove,
            openDialog,
      full,
      toggleFullscreen,
      FullScreen
        };
    },
});
</script>
<style scoped>
</style>