uploads.vue
2.44 KB
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
<style>
.uploadsbox{position:relative;cursor:pointer;}
.uploadsbox form{display: inline-block;}
.uploadsbox input[type='file']{position:absolute;left:0px;top:0px;
width:100%;height:100%;z-index:100;opacity:0;
}
</style>
<template>
<div class="uploadsbox" v-bind:class="class"
:style="{display:display}"
>
<slot></slot>
<iframe class="upload-iframe" :id="iframeName" :name="iframeName" @load="loaded" >
</iframe>
<form action="/file/uploads/image" method="post"
enctype="multipart/form-data" :target="iframeName" :id="formId" >
<input type="file" name="uploadFile" :multiple="multiple"
v-on:change="upload" v-show="readonly" >
<input type="hidden" name="dataguid" id="dataguid" v-model="sdguid">
<input type="hidden" name="type" v-model="type">
<input type="hidden" name="maxNum" v-if="multiple==true" v-model="maxNum">
<input type="hidden" name="maxNum" v-if="multiple==false" v-model="1">
</form>
</div>
</template>
<script>
module.exports={
data:function(){
return {
iframeName:'uploadsbox_'+Math.random().toString(16).substr(2),
formId:'uploadsform_'+Math.random().toString(16).substr(2)
}
},props:{
display:{
type:String,
default:'inline-block'
},
type:{
type:String,
default:'image'
},
class:{
type:Array,
default:[]
},multiple:{
type:Boolean,
default:true
},readonly:{
type:Number,
default:1
},
sdguid:{
type:String,
default:'22222'
},
// 当前最大可以上传的图片数量
maxNum:{
type:Number,
default:4
}
},methods:{
loaded:function(event){
var content = "";
var pre=event.target.contentWindow.document.body.querySelector('pre') || '';
if(!pre){
pre = document.getElementById(this.iframeName).contentWindow;
content = pre.document.body.innerText || '';
if(content==''){
return ;
}
}else{
if(!pre){
return ;
}
content=pre.innerHTML;
}
var backObj = {};
backObj.sdguid = this.sdguid;
try{
var result=JSON.parse(content);
if(result.errorCode=='0'){
backObj.data = result.data;
var fileJsonStr = JSON.stringify(backObj);
this.model = fileJsonStr;
this.$emit('file-change', fileJsonStr);
}else{
this.MessageBox.alert(result.message);
}
}catch(e){
this.MessageBox.alert(e.message);
}
},
upload:function(){
document.querySelector('#'+this.formId).submit();
}
}
}
</script>