<template>
|
<el-form class="demo-ruleForm">
|
<el-form-item label="" style="display: inline-block">
|
<div class="uploading-center">
|
<div class="uploading">
|
<dragUpload
|
:limit="1"
|
:orgId="parseInt(orgId)"
|
:staffId="parseInt(staffId)"
|
@fileSuccess="fatherMethod"
|
@file-uploading="showUploadProcess"
|
:type="'AUDIENCE'"
|
:action="'/dream_dev/player/importPlayer'"
|
>
|
<div class="uploading-btn-to">
|
<i class="iconfont iconAdd"></i> 上传
|
</div>
|
<div class="el-upload__tip" slot="tip">
|
只能上传.xls,.xlsx文件
|
</div>
|
</dragUpload>
|
</div>
|
<div class="download-file">
|
<i class="iconfont iconFile"></i>
|
<a href="/static/学员导入模板.xlsx" download
|
>下载学员模板</a
|
>
|
</div>
|
</div>
|
<div style="font-size: 12px; color: #6993ff" v-if="hasAudience">
|
已上传,如需修改直接点击上传
|
<i
|
class="el-icon-close"
|
title="删除"
|
@click="clearaudience"
|
></i>
|
</div>
|
</el-form-item>
|
|
<el-progress
|
v-show="progress"
|
type="circle"
|
:percentage="percentage"
|
:status="progressStatus"
|
></el-progress>
|
</el-form>
|
</template>
|
|
<script>
|
import dragUpload from "@/components/drag-upload";
|
var self = null;
|
export default {
|
inject: ["reload"],
|
name: "Creation",
|
data() {
|
return {
|
orgId: 0,
|
staffId: 0,
|
hasAudience: false,
|
progress: false,
|
percentage: 0,
|
progressStatus: ""
|
};
|
},
|
components: { dragUpload },
|
methods: {
|
downloadlist() {
|
window.open("../../../assets/学员导入模板.xlsx", "_blank");
|
// this.download('downPlayerTemplate', '学员导入模板.xlsx')
|
},
|
clearaudience() {
|
this.hasAudience = false;
|
},
|
fatherMethod(res, type) {
|
// if (res.falseLst === null) {
|
// this.$message.success("上传数据成功");
|
// this.$emit("load-success");
|
// } else if (res.falseLst.length >= 1) {
|
// let errortips = "";
|
// res.falseLst.map((item) => {
|
// errortips += (`${item.playerRoll}` + `${item.cause} \r\n`).replace('[]', '');
|
// });
|
// this.$message({
|
// message: `导入数据成功导入${res.successNum}条,错误信息:${errortips}`,
|
// type: "error",
|
// duration: 6000,
|
// });
|
// }
|
},
|
showUploadProcess() {
|
self.progress = true
|
setTimeout(function () {
|
const eventSource = new EventSource('/dream_dev/sse-stream/' + JSON.parse(localStorage.getItem("selectStaff")).id);
|
|
eventSource.onmessage = function (event) {
|
const res = JSON.parse(event.data)
|
self.percentage = parseInt(res.current * 100 / res.total)
|
if (res.current == res.total) {
|
self.progressStatus = 'success'
|
if (res.falseLst === null) {
|
self.$message.success("上传数据成功");
|
self.$emit("load-success");
|
} else if (res.falseLst.length >= 1) {
|
let errortips = "";
|
res.falseLst.map((item) => {
|
errortips += (`${item.playerRoll}` + `${item.cause} \r\n`).replace('[]', '');
|
});
|
self.$message({
|
message: `导入数据成功导入${res.successNum}条,错误信息:${errortips}`,
|
type: "error",
|
duration: 6000,
|
});
|
}
|
}
|
};
|
|
eventSource.onerror = function (err) {
|
console.error("EventSource failed:", err);
|
eventSource.close();
|
};
|
}, 3 * 1000);
|
}
|
},
|
created() {
|
self = this
|
const selectStaff = JSON.parse(localStorage.getItem("selectStaff"));
|
this.orgId = selectStaff.org.id;
|
this.staffId = selectStaff.id;
|
},
|
};
|
</script>
|
|
<style lang="scss" scoped>
|
.demo-ruleForm {
|
text-align: center;
|
}
|
.creation-center {
|
padding: 40px 40px 40px 40px;
|
}
|
.uploading-center {
|
display: flex;
|
flex-direction: row;
|
> .uploading {
|
min-height: 40px;
|
line-height: 40px;
|
box-sizing: border-box;
|
border-radius: 4px;
|
}
|
.uploading-btn-to {
|
width: 100px;
|
line-height: 38px;
|
height: 38px;
|
border-radius: 3px;
|
text-align: center;
|
padding: 0 0px;
|
cursor: pointer;
|
user-select: none;
|
margin-left: 0;
|
color: #ffa800;
|
font-size: 14px;
|
border: 1px solid #ffbe41;
|
> i {
|
color: #ffbe41;
|
font-size: 12px;
|
margin-right: 5px;
|
}
|
}
|
> .download-file {
|
float: left;
|
display: flex;
|
flex-direction: row;
|
margin-left: 20px;
|
color: #6993ff;
|
font-size: 14px;
|
cursor: pointer;
|
user-select: none;
|
height: 40px;
|
> div {
|
width: 117px;
|
margin-left: 5px;
|
}
|
}
|
}
|
.uploading-center-style {
|
::v-deep .upload-demo {
|
::v-deep .el-upload {
|
line-height: 38px;
|
}
|
}
|
}
|
::v-deep .uploading-center > .uploading {
|
line-height: 37px;
|
}
|
</style>
|