<!doctype html>
|
<html>
|
<head>
|
<meta charset="utf-8">
|
<title>上传文件附件</title>
|
<script src="../../js/vue/vue.js"></script>
|
<script src="../../js/vue/element-ui/lib/index.js"></script>
|
<script src="../../js/vue/page.js"></script>
|
<script src="../../js/myelement.js"></script>
|
|
<link href="../../js/vue/element-ui/lib/theme-chalk/index.css" rel="stylesheet">
|
<link href="../../css/myelement.css" rel="stylesheet">
|
<link href="../../css/iconfont.css" rel="stylesheet">
|
<link href="../../css/page.css" rel="stylesheet">
|
<link href="//at.alicdn.com/t/font_2374495_mkoo966o0uo.css" rel="stylesheet">
|
</head>
|
|
<body style="margin: 0px;">
|
<div id="vbody">
|
<div id="page_root">
|
<div ref="popup_body" style="width: 900px; height: 490px;padding-right: 20px;">
|
<div class="el-dialog__header">
|
<div class="dialog-title">
|
<i class="iconfont icon-customermanagement"></i>
|
<span> {{formAttr.title}} </span>
|
</div>
|
</div>
|
<div class="el-dialog__body" style="height: 350px;">
|
<div class="class_dataImport" style="padding: 0px 24px;">
|
<!-- 数据导入步骤 -->
|
<el-steps :active="add_Step" finish-status="success">
|
<!-- 步骤一 -->
|
<el-step title="选择文件"></el-step>
|
<!-- 步骤二 -->
|
<el-step title="预览"></el-step>
|
</el-steps>
|
<div
|
style="height: 300px; border: 1px solid #C0C4CC; padding:0px; box-sizing:boder-box; overflow: auto;">
|
<!-- 步骤一,选择数据文件 -->
|
<div v-if="add_Step == 0" style="width: 100%; height: 100%;" align="center">
|
<div style="padding-top: 90px; box-sizing:boder-box">
|
<el-upload ref="upload" class="upload-demo" :before-upload="beforeAvatarUpload"
|
:on-exceed="handleExceed" :action="upload_url" :headers="upload_headers"
|
:on-success="upload_change_" :on-error="upload_error"
|
:on-change="upload_change" :multiple="upload_multiple" :limit="1"
|
:file-list="fileList" :auto-upload="false">
|
<el-button size="small" type="primary">选择上传文件</el-button>
|
<div slot="tip" class="el-upload__tip">只能上传{{filetype}}文件</div>
|
</el-upload>
|
<div style="width: 100%; text-align: left;">
|
<!-- 上传时的反馈日志 -->
|
<li v-for="row in messagelist">{{row}}</li>
|
</div>
|
</div>
|
</div>
|
|
<!-- 导入数据的预览 -->
|
<div v-if="add_Step == 1" style="width: 100%; height: 100%;">
|
<el-image v-for="picimg in fileObjList"
|
style="width: 100px; height: 100px; margin-left: 10px;" :src="picimg.url"
|
fit="contain">
|
</el-image>
|
</div>
|
|
</div>
|
</div>
|
</div>
|
<div class="el-dialog__footer">
|
<!-- 下一页 -->
|
<el-button v-if="add_Step == 0" :disabled="disabled_NextStepLength" type="primary"
|
:loading="loading_nextStep" size="small" @click="NextStep">上传预览</el-button>
|
<el-button v-else-if="add_Step == 1" :disabled="disabled_NextStepLength" type="primary"
|
:loading="loading_nextStep" size="small" @click="saveRowTable">保 存</el-button>
|
|
<!-- 取 消/关 闭 -->
|
<el-button size="small" @click="closeDialog">关 闭</el-button>
|
</div>
|
</div>
|
</div>
|
<div id="page_loading" style="position: absolute; top:0px; width: 100vw; height: 50vh;">
|
<div class="spinner">
|
<div class="cube1"></div>
|
<div class="cube2"></div>
|
</div>
|
</div>
|
</div>
|
<script type="text/javascript">
|
new Vue({
|
el: "#vbody",
|
data: {
|
formAttr: {
|
istitle: false,
|
title: "附件信息",
|
columnnumber: 2,
|
labelwidth: "100px",
|
labelposition: "right",
|
size: "medium",
|
border: "0px solid #c6c6c600"
|
},
|
popupParames: {},
|
formData: {},
|
fileObjList: [],
|
|
//上传页面
|
add_Step: 0,
|
upload_url: "",
|
upload_headers: {},
|
upload_multiple: false, //是否允许多文件
|
fileList: [],
|
|
filetypelist: [],
|
filetype: "jpg/png",
|
loading_nextStep: false,
|
messagelist: [],
|
disabled_NextStepLength: false,
|
uploade_state: false,
|
|
},
|
|
created() {
|
this.popupParames = clone(Root.popupParames);
|
//this.upload_url = window.top.RootSetting.url + "root/file/exec";
|
this.upload_url = window.top.RootSetting.url + "root/api/upLoadImage";
|
},
|
mounted() {
|
var me = this;
|
if (this.popupParames.data) {
|
this.formData = clone(this.popupParames.data);
|
this.filetypelist = clone(this.popupParames.delta.filetypelist);
|
this.filetypelist.map(e=>{
|
e = e.toLowerCase();
|
if (me.filetype) {
|
me.filetype = e;
|
}
|
me.filetype += "/" + e;
|
});
|
}
|
this.$nextTick(() => { // 以服务的方式调用的 Loading 需要异步关闭
|
document.getElementById('page_root').style.display = "block";
|
document.getElementById('page_loading').style.display = "none";
|
|
//重新设置弹窗宽高
|
this.$nextTick(function() {
|
let w_ = this.$refs.popup_body.offsetWidth + "px";
|
let h_ = this.$refs.popup_body.offsetHeight + "px";
|
Root.setPopupWH(w_, h_);
|
})
|
});
|
},
|
|
methods: {
|
closeDialog() {
|
Root.hidePopup();
|
},
|
saveRowTable() {
|
this.saveAfter();
|
},
|
|
saveAfter() {
|
var me = this;
|
if (this.popupParames.callback) {
|
let obj = {
|
row: this.fileObjList
|
}
|
this.popupParames.callback(obj, function() {
|
if (me.popupParames.totab) {
|
Root.tab.removeItem(Root.tab.selected);
|
Root.tab.open(me.popupParames.parentOption, false);
|
} else {
|
Root.hidePopup();
|
}
|
});
|
} else {
|
alert("该按键事件缺失!")
|
}
|
},
|
|
beforeAvatarUpload(file) {
|
let FileName = file.name;
|
let index1 = FileName.lastIndexOf(".");
|
let index2 = FileName.length;
|
let suffix = FileName.substring(index1, index2).toLowerCase(); //后缀名
|
let isFileType = false;
|
|
if (this.filetypelist.length) {
|
this.filetypelist.map(e=>{
|
if (suffix === e) {
|
isFileType = true;
|
}
|
});
|
}
|
else {//没有设置则默认全部文件可传
|
isFileType = true;
|
}
|
|
if (!isFileType) {
|
this.$message.error('只能上传' + this.filetype + '文件');
|
} else {}
|
return isFileType;
|
},
|
handleExceed(files, fileList) {
|
this.$message.warning(
|
`当前限制选择 3 个文件,本次选择了 ${files.length} 个文件,共选择了 ${files.length + fileList.length} 个文件`);
|
},
|
|
/* 步骤下一步事件 */
|
NextStep() {
|
if (!this.uploade_state) {
|
this.submitUpload();
|
return;
|
} else if (this.add_Step == 1) {
|
this.saveRowTable();
|
}
|
},
|
|
/* 数据导入事件 */
|
submitUpload() {
|
this.loading_nextStep = true;
|
this.$refs.upload.submit();
|
},
|
|
/* 导入时文件状态改变事件*/
|
upload_change(file, fileList) {
|
console.log(file);
|
if (fileList.length > 0) {
|
this.disabled_NextStepLength = false;
|
}
|
},
|
|
/* 导入时文件成功事件 */
|
upload_change_(response, file, fileList) {
|
console.log(response);
|
this.uploade_state = true;
|
this.loading_nextStep = false;
|
this.add_Step = 1;
|
|
//var ids = response.data.ids;
|
var ids = [];
|
ids.push(response.data.id);
|
|
this.getFilePreview(ids);
|
},
|
|
getFilePreview(ids) {
|
let me = this;
|
getImgURL(this.fileObjList, ids, function(result){
|
me.fileObjList = result;
|
});
|
|
// this.fileObjList = ids.map(oneFileId => {
|
// return {
|
// id: oneFileId,
|
// url: getDownloadImgURL(oneFileId)
|
// }
|
// })
|
},
|
|
/* 导入时文件失败事件 */
|
upload_error(err, file, fileList) {
|
console.log(err);
|
this.loading_nextStep = false;
|
this.messagelist = ['上传请求失败'];
|
clearTimeout(this.timer);
|
this.$message({
|
message: '上传请求失败',
|
type: 'warning'
|
});
|
},
|
|
}
|
});
|
</script>
|
|
<style>
|
.el-input__inner {
|
padding: 0 2px;
|
}
|
</style>
|
|
</body>
|
</html>
|