vue框架之 vue+element+axios 实现弹框显示后台数据列表

  最近在做一个前后端分离的前端项目,目前只有我一个人以前没有做过前端任何的项目,知识自学过一些前端知识。组长没有说用什么框架,所以我选择了最近挺火的vue框架。从开始听到任务到现在整整一个月时间了,框架已经搭起来了,目前先把功能实现了,页面好看不好看的后期在做。之前没有咋写过博客,啥时候高兴了写一个,有的写得不还被我删了,从现在起,如果在不忙的情况下我会坚持下去。废话不多说,开始。

  功能:是类似于商品的详情页面,点击详情按钮,查询后台的数据,并且在弹出框中显示出来。

  参照官网:https://element.eleme.cn/#/zh-CN/component/dialog

  以下是我自己写的。

 1 <template>
 2   <div>
 3     弹窗显示
 4     {{tagid}}
 5     <!-- Table  @click="dialogTableVisible = true" -->
 6     <el-button type="text" @click="getTagDetail(tagId=2)">详情</el-button>
 7 
 8     <el-dialog title="标签详情" :visible.sync="dialogTableVisible">
 9       <el-table :data="gridData">
10         <el-table-column property="tagId" prop="tagId" label="序号" width="50"></el-table-column>
11         <el-table-column property="tag" prop="tag" label="标签编码" width="100"></el-table-column>

17 </el-table> 18 </el-dialog> 19 20 </div> 21 </template> 22 23 <script> 24 export default { 25 data () { 26 return { 27 tagId: '', 28 tag: '', 29 34 gridData: [{ 35 tagId: '', 36 tag: '', 37 42 }], 43 51 dialogTableVisible: false, 52 dialogFormVisible: false, 53 formLabelWidth: '120px' 54 } 55 }, 56 methods: { 57 getTagDetail: function () { 58 // eslint-disable-next-line no-undef 59 this.dialogTableVisible = true 60 this.$axios({ 61 method: 'post', 62 url: 'http://xxx。xxx', 63 data: { 64 'data': { 65 'tagId': this.tagId 66 } 67 } 68 }).then((response) => { 69 console.log(response.data.data) 70 this.tagId = response.data.data.tagId 71 // console.log(this.tagId) 72 this.gridData[0].tagId = this.tagId 73 this.tag = response.data.data.tag // 第一种方法 74 this.gridData[0].tag = this.tag 75 80 // 第二种方法. this.gridData[0].tag= response.data.data.dataSchema 81 }) 82 } 83 } 84 } 85 </script>

 简单介绍一个运行流程:

  点击详情 带着参数(id=x)进入getTagDetails方法,显示弹框,axios进行后台查询,response里给返回的数组进行赋值。

我在这里的花费时间较长的地点:

1.prop 是变量的属性,propperty不是

2.赋值的时候因为我是数组形式的,所以要带着角标进行赋值,如果你是几行数据的话,那么你可以response进行循环赋值。

3.赋值的时候第一种方法和第二种方法 都可以

转载于:https://www.cnblogs.com/tdcqcrtd/p/11217659.html

  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
断点续传是指在文件上传过程中,如果上传中断,可以从上传中断的地方开始继续上传,避免重新上传整个文件。在使用 VueElementAxios 和 Qs 实现断点续传时,可以按照以下步骤进行操作: 1. 前端页面部分 在前端页面中,可以使用 Element 组件库来实现上传文件的功能。例如可以使用 el-upload 组件来上传文件,代码如下: ``` <template> <el-upload class="upload-demo" action="yourUploadUrl" :auto-upload="false" :on-change="handleChange" :data="uploadData" :file-list="fileList" :http-request="uploadFile" > <el-button slot="trigger" size="small" type="primary">选取文件</el-button> <el-button size="small" type="success" :disabled="!fileList.length" @click="submitUpload">上传到服务器</el-button> <div slot="tip" class="el-upload__tip">只能上传jpg/png文件,且不超过500kb</div> </el-upload> </template> ``` 在模板中,el-upload 组件的属性值中,我们需要设置以下内容: - `action` 属性:设置上传文件的地址。 - `auto-upload` 属性:设置是否自动上传。 - `on-change` 属性:设置文件上传状态改变时的回调函数。 - `data` 属性:设置上传文件时需要携带的参数。 - `file-list` 属性:设置已经上传的文件列表。 - `http-request` 属性:设置文件上传的函数,我们在这里定义上传文件的逻辑。 接下来,我们需要在 data 函数中定义 fileList 和 uploadData 对象,代码如下: ``` data() { return { fileList: [], uploadData: { chunkSize: 1024 * 1024, // 文件切片大小 chunks: 0, // 切片总数 chunkIndex: 0, // 当前切片编号 fileSize: 0, // 文件大小 fileName: '', // 文件名 fileMd5: '', // 文件md5值 uploadUrl: '', // 上传接口地址 }, } }, ``` 在这里,我们需要定义上传文件时需要携带的参数。其中,chunkSize 表示每个切片的大小,chunks 表示总共需要切片的数量,chunkIndex 表示当前上传的切片编号,fileSize 表示文件的大小,fileName 表示文件的名称,fileMd5 表示文件的 md5 值,uploadUrl 表示上传接口的地址。 然后,我们需要在 methods 函数中定义 handleChange、uploadFile 和 submitUpload 函数。其中,handleChange 函数用来监听文件上传状态的改变,uploadFile 函数用来上传文件,submitUpload 函数用来提交上传请求。代码如下: ``` methods: { handleChange(file) { this.fileList = [file] this.uploadData.fileSize = file.size this.uploadData.fileName = file.name this.uploadData.fileMd5 = 'md5' this.uploadData.uploadUrl = 'uploadUrl' this.uploadData.chunks = Math.ceil(file.size / this.uploadData.chunkSize) }, async uploadFile(file) { const index = this.uploadData.chunkIndex++ const startByte = index * this.uploadData.chunkSize const endByte = Math.min((index + 1) * this.uploadData.chunkSize, this.uploadData.fileSize) const chunkFile = file.slice(startByte, endByte) const formData = new FormData() formData.append('file', chunkFile) formData.append('chunkIndex', index) formData.append('fileName', this.uploadData.fileName) formData.append('fileMd5', this.uploadData.fileMd5) const { data } = await this.$axios.post(this.uploadData.uploadUrl, formData, { headers: { 'Content-Type': 'multipart/form-data' } }) if (index === this.uploadData.chunks - 1) { console.log('upload success') } else { this.uploadFile(file) } }, async submitUpload() { if (!this.fileList.length) return this.uploadData.chunkIndex = 0 await this.uploadFile(this.fileList[0].raw) } }, ``` 在这里,handleChange 函数将上传文件的基本信息保存到 uploadData 对象中,uploadFile 函数用来上传文件,submitUpload 函数用来提交上传请求。其中,uploadFile 函数是核心部分,它通过循环上传每个切片,如果上传成功,则继续上传下一个切片,否则重新上传当前切片。 2. 后端接口部分 在后端接口中,需要实现文件上传的逻辑。由于是断点续传,所以需要实现上传切片、合并切片的功能。例如可以使用 Node.js 和 Express 框架实现上传文件的功能,代码如下: ``` const express = require('express') const multer = require('multer') const path = require('path') const fs = require('fs') const app = express() app.use(express.static('public')) app.post('/upload', multer({ dest: 'uploads/' }).single('file'), (req, res) => { const { fileName, fileMd5, chunkIndex } = req.body const chunkFile = req.file const chunkDir = path.join(__dirname, `./uploads/${fileMd5}`) const filePath = path.join(chunkDir, `${fileName}-${chunkIndex}`) if (!fs.existsSync(chunkDir)) { fs.mkdirSync(chunkDir) } fs.renameSync(chunkFile.path, filePath) res.json({ code: 0, message: '上传成功', }) }) app.post('/merge', (req, res) => { const { fileName, fileMd5, chunks } = req.body const chunkDir = path.join(__dirname, `./uploads/${fileMd5}`) const filePath = path.join(chunkDir, fileName) const chunkPaths = [] for (let i = 0; i < chunks; i++) { chunkPaths.push(path.join(chunkDir, `${fileName}-${i}`)) } let ws = fs.createWriteStream(filePath) chunkPaths.forEach((chunkPath) => { let rs = fs.createReadStream(chunkPath) rs.on('end', () => { fs.unlinkSync(chunkPath) }) rs.pipe(ws, { end: false }) }) ws.on('close', () => { fs.rmdirSync(chunkDir) res.json({ code: 0, message: '上传成功', }) }) }) app.listen(3000, () => { console.log('server is running at http://localhost:3000') }) ``` 在这里,我们实现了两个接口,一个是上传切片的接口 `/upload`,一个是合并切片的接口 `/merge`。其中,上传切片的接口会将上传的切片保存到指定的目录下,并返回上传成功的消息;合并切片的接口会将上传的所有切片合并成一个完整的文件,并删除上传的切片。注意,在合并切片的过程中,需要使用 fs.createWriteStream 和 fs.createReadStream 将切片合并成一个完整的文件。 以上就是使用 VueElementAxios 和 Qs 实现文件上传的断点续传的完整流程。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值