1
李喆(开发组)
2025-03-18 c978996d3e0390c0050479be4684af895cfb72cd
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
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
<template>
    <el-main>
        <el-card shadow="never" header="文件示例">
            <sc-upload-file v-model="fileurl" :limit="3" :data="{otherData:'demo'}" tip="最多上传3个文件,单个文件不要超过10M,请上传xlsx/docx格式文件">
                <el-button type="primary" icon="el-icon-upload">上传附件</el-button>
            </sc-upload-file>
        </el-card>
 
        <el-card shadow="never" header="文件示例(值为对象数组,适合保存原始文件名)">
            <sc-upload-file v-model="fileurlArr" :limit="3" tip="最多上传3个文件,单个文件不要超过10M,请上传xlsx/docx格式文件">
                <el-button type="primary" icon="el-icon-upload">上传附件</el-button>
            </sc-upload-file>
        </el-card>
 
        <el-card shadow="never" header="图片卡片示例(已开启拖拽排序)">
            <sc-upload-multiple v-model="fileurl2" draggable :limit="3" tip="最多上传3个文件,单个文件不要超过10M,请上传图像格式文件"></sc-upload-multiple>
        </el-card>
 
        <el-card shadow="never" header="单图像示例">
            <el-space wrap :size="8">
                <sc-upload v-model="fileurl3"></sc-upload>
                <sc-upload v-model="fileurl4" title="自定义标题" icon="el-icon-picture"></sc-upload>
                <sc-upload v-model="fileurl5" :apiObj="uploadApi" accept="image/jpg,image/png" :on-success="success" :width="220">
                    <div class="custom-empty">
                        <el-icon><el-icon-upload /></el-icon>
                        <p>自定义插槽</p>
                    </div>
                </sc-upload>
                <sc-upload v-model="fileurl6" round icon="el-icon-avatar" title="开启圆形"></sc-upload>
                <sc-upload v-model="fileurl7" title="开启剪裁" :cropper="true" :compress="1" :aspectRatio="1/1"></sc-upload>
            </el-space>
        </el-card>
 
 
 
        <el-card shadow="never" header="在验证表单中使用">
            <el-form ref="ruleForm" :model="form" :rules="rules" label-width="100px">
                <el-form-item label="身份证" required>
                    <el-space wrap :size="8">
                        <el-form-item prop="file1">
                            <sc-upload v-model="form.file1" title="人像面"></sc-upload>
                        </el-form-item>
                        <el-form-item prop="file2">
                            <sc-upload v-model="form.file2" title="国徽面"></sc-upload>
                        </el-form-item>
                    </el-space>
                </el-form-item>
                <el-form-item label="其他凭证" prop="file3">
                    <sc-upload-multiple v-model="form.file3"></sc-upload-multiple>
                </el-form-item>
                <el-form-item label="附件" prop="file4">
                    <sc-upload-file v-model="form.file4" :limit="1" drag>
                        <el-icon class="el-icon--upload"><el-icon-upload-filled /></el-icon>
                            <div class="el-upload__text">
                              Drop file here or <em>click to upload</em>
                            </div>
                    </sc-upload-file>
                </el-form-item>
                <el-form-item label="日期" prop="date">
                    <el-date-picker type="date" placeholder="选择日期" v-model="form.date"></el-date-picker>
                </el-form-item>
                <el-form-item>
                    <el-button type="primary" @click="submitForm">保存</el-button>
                    <el-button @click="resetForm">重置</el-button>
                </el-form-item>
            </el-form>
        </el-card>
 
    </el-main>
</template>
 
<script>
    export default {
        name: 'upload',
        data() {
            return {
                uploadApi: this.$API.common.upload,
                fileurlArr: [
                    {
                        name: '销售合同模板.xlsx',
                        url: 'http://www.scuiadmin.com/files/220000198611262243.xlsx'
                    },
                    {
                        name: '企业员工联系方式.xlsx',
                        url: 'http://www.scuiadmin.com/files/350000201004261875.xlsx',
                    }
                ],
                fileurl: "http://www.scuiadmin.com/files/220000198611262243.xlsx,http://www.scuiadmin.com/files/350000201004261875.xlsx",
                fileurl2: "img/auth_banner.jpg,img/avatar3.gif",
                fileurl3: "img/auth_banner.jpg",
                fileurl4: "",
                fileurl5: "",
                fileurl6: "",
                fileurl7: "",
                form: {
                    file1: "",
                    file2: "",
                    file3: "",
                    file4: "",
                    date: ""
                },
                rules: {
                    file1: [
                        {required: true, message: '请上传', trigger: 'change'}
                    ],
                    file2: [
                        {required: true, message: '请上传', trigger: 'change'}
                    ],
                    file3: [
                        {required: true, message: '请上传', trigger: 'change'}
                    ],
                    file4: [
                        {required: true, message: '请上传附件', trigger: 'change'}
                    ],
                    date: [
                        {required: true, message: '请选择日期', trigger: 'change'}
                    ]
                }
            }
        },
        methods: {
            success(response){
                this.$alert(`success函数钩子,可用于类似OCR返回信息,return false后阻止后续执行,回调参数打开控制台查看`, {
                    title: "提示",
                    type: "success"
                })
                console.log(response);
                return false;
            },
            submitForm(){
                this.$refs.ruleForm.validate((valid) => {
                    if (valid) {
                        alert('请看控制台输出');
                        console.log(this.form);
                    }else{
                        return false;
                    }
                })
            },
            resetForm(){
                this.$refs.ruleForm.resetFields();
            }
        }
    }
</script>
 
<style scoped>
    .el-card+.el-card {margin-top: 15px;}
    .imglist .el-col+.el-col {margin-left: 8px;}
 
    .custom-empty {width: 100%;height: 100%;display: flex;flex-direction: column;align-items: center;justify-content: center;background: #8c939d;border-radius:5px;}
    .custom-empty i {font-size: 30px;color: #fff;}
    .custom-empty p {font-size: 12px;font-weight: normal;color: #fff;margin-top: 10px;}
</style>