elementui + vue 弹窗实现 el-table 当前行记录的详细数据展示

页面展示的表格数据,点击ID会弹出当前记录的信息(如果页面数据信息很多,看着会很不直观,可以做一个弹窗把需要的数据都展示在弹窗里面)

// 这是表格获取的ID
<af-table-column
        prop="id"
        label="ID"
        align="center"
        >  
        <template slot-scope="scope">    
        									//scope.row  会获取当前ID行记录 
              <el-button type="text" @click="viewInfo(scope.row)" >{{scope.row.id}}</el-button>
         </template>
      </af-table-column>

		
	// 弹窗
	<el-dialog :title="dialogTitle" :visible.sync="dialogVisible1" width="50%" :close-on-click-modal="false"  >
  <el-tabs v-model="activeName" type="card">
    <el-tab-pane label="BaseInfos" name="first">
      <el-form :model='ticketInfoform'>
        <el-form-item label="Title"  >    
          <el-input v-model="ticketInfoform.issue_title" ></el-input>                     
                          </el-form-item>

            <el-form-item label="ID"  >    
          <el-input v-model="ticketInfoform.id"  ></el-input>                     
                          </el-form-item>

          <el-form-item label="Status"  >    
          <el-input v-model="ticketInfoform.status"  ></el-input>                     
                          </el-form-item>
                          
          <el-form-item label="Assignee"  >    
          <el-input v-model="ticketInfoform.assigned_to_username"  ></el-input>                     
                          </el-form-item>

          <el-form-item label="Submitted_Time"  >    
          <el-input v-model="ticketInfoform.submitted_time"  ></el-input>                     
                          </el-form-item>
          
          <el-form-item label="Type"  >    
          <el-input v-model="ticketInfoform.ticket_type"  ></el-input>                     
                          </el-form-item>

          <el-form-item label="Submitter"   >    
          <el-input v-model="ticketInfoform.submitter_username"  ></el-input>                     
                          </el-form-item>
      </el-form>

    </el-tab-pane>
    <el-tab-pane label="Comment History" name="second">配置管理</el-tab-pane>
    
  </el-tabs>
 
    <el-button @click="dialogVisible1 = false">取 消</el-button>
    <el-button type="primary" >确 定</el-button>
 
</el-dialog>


	<script>
		export default {
		  data() {
		    return {
					//该对象和后端获取的数据key相对应
				ticketInfoform:{
				        issue_title:'',
				        id:'',
				        Status:'',
				        Assignee:'',
				        Submitted_Time:'',
				        Type:'',
				        Submitter:'',

      },
		    }
		    }
			methods: {
				    // 点击ID 查看数据明细
				    viewInfo(row){
				      this.dialogTitle = 'BaseInfos Or History';
				      this.dialogVisible1 = true;
				      this.ticketInfoform = row

						//深拷贝方式一,逐个赋值 这种比较麻烦,代码冗余了解即可
						this.ticketInfoform.issue_title = row.issue_title
					    this.ticketInfoform.id = row.id
					    this.ticketInfoform.Status = row.Status
					    this.ticketInfoform.Assignee = row.Assignee
					    this.ticketInfoform.Submitted_Time = row.Submitted_Time
					    this.ticketInfoform.Type = row.Type
					    this.ticketInfoform.Submitter = row.Submitter

						//深拷贝方式二   (推荐)
						this.ticketInfoform = JSON.parse(JSON.stringify(row))
						
				    },
			
		    }

在这里插入图片描述

效果图

在这里插入图片描述

当然这个弹窗数据展示的格式还可以调整一下,这里仅记录一下大致的实现方式

但是这样会存在一个问题,这里修改ID的时候会连同页面上的ID一并修改,这显然是不符合逻辑的。因为在methods里面定义的方法,把row直接赋值给ticketInfoform,用的是浅拷贝它们的指针是指向同一个对象的,说白了就是操作的是同一个对象。所有要解决这个问题这里需要用深拷贝,把之前的数据完完全全的复制一份,是我们当前行的数据和之前的是两份,这样改变表单的数据才不会影响页面的表格。其他数据也一样

  • 5
    点赞
  • 19
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
好的,这个问题我可以回答。首先,我们需要在后端使用Spring Boot进数据的处理和接口的实现,然后在前端使用Vue框架进页面的展示数据的渲染。具体实现步骤如下: 1. 后端实现 首先,在后端我们需要使用Spring Boot框架进数据的处理和接口的实现。我们可以使用MyBatis或者Hibernate等ORM框架来进数据库的操作。在接口实现中,我们需要将查询到的数据以JSON格式返回给前端。例如: ```java @RestController @RequestMapping("/api") public class UserController { @Autowired private UserService userService; @GetMapping("/users") public List<User> getUsers() { return userService.getUsers(); } } ``` 其中,`userService.getUsers()`方法返回的是一个List<User>类型的数据,即查询到的所有用户数据。 2. 前端实现 接下来,在前端我们需要使用Vue框架进页面的展示数据的渲染。我们可以使用element-ui组件库中的el-table组件来展示数据。具体实现步骤如下: (1) 安装element-ui组件库 使用npm命令安装element-ui组件库: ``` npm install element-ui --save ``` (2) 在Vue组件中引入el-table组件 在Vue组件中引入el-table组件,并使用axios库从后端接口获取数据。例如: ```vue <template> <div> <el-table :data="users"> <el-table-column prop="id" label="ID"></el-table-column> <el-table-column prop="name" label="Name"></el-table-column> <el-table-column prop="age" label="Age"></el-table-column> <el-table-column prop="address" label="Address"></el-table-column> </el-table> </div> </template> <script> import axios from 'axios'; export default { data() { return { users: [] } }, mounted() { axios.get('/api/users').then(response => { this.users = response.data; }); } } </script> ``` 其中,`:data="users"`绑定了数据源,`el-table-column`定义了要展示的列。在`mounted()`方法中使用axios库从后端接口获取数据,并将数据赋值给`users`变量。 至此,我们就完成了基于Spring Boot和Vueel-table数据展示功能的实现

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

季布,

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值