赞
踩
此功能在做的时候网上有很多的案例,但是都是基于Export2Excel.js文件和Blob.js文件来做的,我做的这个不是这种的,感觉还是比较有难度的,因此做了记录,希望能帮助你
废话不多说,先上代码块
<!--上传文件弹窗--> <!--文件上传组件就不多介绍,Element-UI官网还是比较详细的--> <el-dialog :title="dialogParams.title" :visible.sync="dialogParams.visible" :close-on-click-modal="false" :top="'5%'" custom-class="el-dialog--width960"> <el-form :inline="false" :model="data = data01.Content" :rules="rules" ref="data01"> <--注意,之所以此处加这个提示,是因为后天接口的限制,上传Excel 2007版本以上的Excel文件,文件后缀是xlsx,就会报错,所以此处只能上传xls后缀的Excel文件--> <div class="boxTitle"><span class="warninger">上传文件后缀必须是(xls),且根据模板上传,否则不能上传成功</span></div> <el-form-item label="采购详情表" prop="MDM017402" :label-width="dialogParams.formLabelWidth"> <el-upload :action="uploadParams.url" :data="uploadParams.data" :before-upload="beforeUpload" :on-success="uploadSuccess" :file-list="fileList" :disabled="uploadStatus"> <el-button size="small" type="success" :disabled="uploadStatus">点击上传</el-button> </el-upload> </el-form-item> <--v-if="uploadParams.preview" 控制预览表格,只有上传成功才可以看到表格,否则不显示--> <el-form-item v-if="uploadParams.preview" label="预览" prop="MDM017402" :label-width="dialogParams.formLabelWidth"> <el-table :data="data01.Content.MDM017402" //上传成功以后,接收返回的数据并显示到表格中 border max-height="240" style="width: calc(100% - 15px)"> <el-table-column type="index" width="60"> </el-table-column> <el-table-column v-for="(item, index) in uploadParams.colModel" :key="index" :prop="item.prop" :label="item.label" :width="item.width"> </el-table-column> </el-table> </el-form-item> </el-form> <span slot="footer" class="dialog-footer"> <el-button type="primary" @click="submitForm(data01)" :loading="submitStatus">确定上传</el-button> </span> </el-dialog>
在这里插入代码片,注意,我自己的Script代码中有好多变量您可能用不到,可以根据自己的实际情况进行选择 <script> export default { return { data01: { //获取列表提交单据 Content: { CardName: '', //查询参数1 UserName:'', //查询参数2 CardCode: '', //查询参数3 MDM017402:[], //存放预览表格数据的数组变量 OMS005301List:[], //用来存放文件上传成功以后解析的数据 BeginTime:'', //上传文件表格数据所需字段 (开始时间) CustomerCode:'', //上传文件表格数据所需字段 (客户代码) CustomerName:'', //上传文件表格数据所需字段(客户名称) EndTime:'', //上传文件表格数据所需字段(结束时间) ItemCode:'', //上传文件表格数据所需字段 (物料代码) ItemName:'', //上传文件表格数据所需字段 (物料名称) }, Method: 'Q', //接口查询参数 page: 1, //分页参数 rows: 50, //分页参数 sidx: 'DocEntry', //排序参数 sord: 'DESC' //排序参数 }, data02: { Content: { "CardCode": "", "CardName": "" } }, total: 0, DropdownSaler:[], selectArr: [], //选中单据 tableData: [], fileList:[], Loading: false, rules: {}, //表单验证 dialogParams: { // 上传文件模态框参数 title: '淘宝采购详情记录单上传', visible: false, // 上传文件模态不显示 formLabelWidth: '85px' }, uploadParams: { // uploadParams文件上传参数 url: global.OMS + '/OMS0053/OMS005302', //上传接口 data: { Content:'' }, preview: false, // 上传文件模态不显示 colModel: [ //声明一个数组,将上传数据绑定到表格中 { prop: 'ItemCode', label: '物料代码', width: '100' }, { prop: 'ItemName', label: '物料名称', width: '200' }, { prop: 'TaoBaoLink', label: '淘宝链接', width: '200' }, { prop: 'CustomerCode', label: '客户代码', width: '200' }, { prop: 'Remarks', label: '备注', width: '200' }, ] }, uploadStatus: false, submitStatus: false } }, //钩子函数 created() { //在页面创建前调用请求数据接口的函数 this.MDM017402() }, methods:{ pageChange(val) { this.data01.page = val this.MDM017402() }, sizeChange(val) { this.data01.rows = val this.MDM017402() }, searchClick() { //搜索 this.MDM017402() }, beforeUpload (file) { //上传文件之前的钩子,参数为上传的文件,若返回 false 或者返回 Promise 且被 reject,则停止上传。 file && (this.uploadStatus = true) }, uploadSuccess (response, fileList) { //response为上传文件的表格数据 //fileList为上传的文件列表, 例如: [{name: 'food.jpg', url: 'https://xxx.cdn.com/xxx.jpg'}] /* console.log(response)*/ if (response.Status === 200) { this.$notify({ type: 'success', titie: '上传成功', message: '上传成功' }) this.uploadParams.preview = true; //此处需要将返回的字符串数据进行解析,JSON.parse() 方法用于将一个 JSON 字符串转换为对象。 this.data01.Content.MDM017402 = JSON.parse(response.Content) ; } else { this.$notify.warning({ title: '解析失败', message: response.Status + ':' + response.MessageString }) } }, //数据获取请求函数 MDM017402() { this.$axios({ method: 'post', url: global.OMS + '/OMS88888888888', //请求接口 data: this.data01 //请求接口的参数 }) .then((res) => { if(res.data.Status === 200) { res.data.Content ? (this.tableData = res.data.Content.rows, this.total = res.data.Content.records) : (this.tableData = [], this.total = 0) } else { this.$notify({ type: 'warning', title: '找不到该数据', /*message: res.data.Status + res.data.Message*/ }) this.tableData = [] //查询时,如果查不到改项目,整个表格数据为空,此处表格中的data的值就是取自tableData [ ] 数组中 } }, (err) => { this.$notify({ type: 'warning', title: '找不到该数据', message: err //抛出后台返回的错误 }) }) }, //提交保存表格数据 submitForm () { this.$refs.data01.validate((valid) => { //对整个form表单做了数据验证 if (valid) { console.log(this.data01.Content.MDM017402) if (this.data01.Content.MDM017402) { this.submitStatus = true //预览表格显示 //将获取的MDM017402的数据返回一个新数组,数组中copy的元素为原始2113数组5261元4102素调用函数处理后的值。 this.data01.Content.MDM017402.map((item, index, array) => { array[index] = { //将上面预览表格数据 ItemCode: item.ItemCode, ItemName: item.ItemName, UserCode: item.UserCode, TaoBaoLink: item.TaoBaoLink, CustomerCode:item.CustomerCode, Remarks:item.Remarks } }) //将上传的数据解析,并转换格式 this.data01.Content.OMS005301List = JSON.parse(JSON.stringify(this.data01.Content.MDM017402)) this.$axios({ method: 'post', url: global.OMS + '/OMS0053/OMS005303', data: this.data01 }).then((res) => { if (res.data.Status === 200) { this.$notify.success({ title: '上传成功', message: ' 上传成功' }) this.dialogParams.visible = false this.MDM017402() this.submitStatus = false } else { console.warn(res.data) this.$notify.warning({ title: '上传失败', message: res.data.Status + ':' + res.data.Message }) } }, (err) => { console.warn(err) }) } else { this.$notify.warning({ title: '上传失败', message: '没有数据' }) } } else { return false } }) }, } } </script>
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。