upload-excel-s.vue
2.38 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
103
104
105
106
<style>
.upload-iframe {
display: none;
}
.upload-btn {
display: inline-block;
position: relative;
overflow: hidden;
vertical-align: middle;
top:-5px;
}
.upload-btn input[type="file"] {
position: absolute;
top: 0;
left: 0;
font-size: 100px;
opacity: 0;
cursor: pointer;
}
</style>
<template>
<section style="margin-top:0px;">
<my-tag :tag-name="tag" v-if="type == 'file'" :class="class">
<iframe :id="iframeName" :name="iframeName" @load="loaded" class="upload-iframe"></iframe>
<form :id="formId" action="/file/upload/excel/{{exceltype}}" method="post" :target="iframeName" style="
display: inline;" enctype="multipart/form-data">
<slot>{{label}}</slot>
<input type="file" name="uploadFile" @change="upload">
</form>
</my-tag>
</section>
</template>
<script>
module.exports = {
props: {
label: {
type: String,
default: '选择文件'
},
class: {
type: Array,
default: function () {
return [];
},
coerce: function (val) {
return ['upload-btn'].concat(val || []);
}
},
tag: {
type: String,
default: 'div'
},
model: {
type: String,
require: true,
twoWay: true
},
type: {
type: String,
default: 'img'
},
multiple: false,
exceltype:'hospital'
},
data: function () {
return {
iframeName: 'uploadVue' + Math.random().toString(32).substr(2),
formId: 'upload-form-' + Math.random().toString(32).substr(2)
}
},
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;
}
try {
var result = JSON.parse(content);
if (result.errorCode==0) {
this.$dispatch('file-change', result.data);
} else {
this.MessageBox.alert(result.message);
}
} catch(e) {
this.MessageBox.alert(e.message);
}
},
upload: function (event) {
document.getElementById(this.formId).submit();
}
}
};
</script>