vue+element根据表格行数据弹窗展示详情信息

效果图:在这里插入图片描述
代码:

<div class="center-container">
      <el-table border stripe :data="tableData height="100%">
        <template slot="empty">
          <el-empty description="暂无数据"></el-empty>
        </template>
        <el-table-column prop="" label="操作账号" min-width="100"></el-table-column>
        <el-table-column label="状态" min-width="120">
        <!--根据状态值显示内容(两种写法,这里是第一种)-->
          <template slot-scope="scope">
            <p>{{scope.row.status | Status}}</p>
          </template>
        </el-table-column>
        <el-table-column prop="onlineStatus" label="操作" min-width="140">
          <template slot-scope="scope">
            <el-button @click="handleClick(scope.row)" type="info" :size="$formSize" icon="el-icon-document">详情</el-button>
          </template>
        </el-table-column>
      </el-table>
      <el-dialog title="系统日志详情" :visible.sync="show" width="40%">
        <el-descriptions :column="1">
          <el-descriptions-item label="操作模块">{{systemLogform.businessTypeStr}}</el-descriptions-item>
          <el-descriptions-item label="登录信息">{{systemLogform.operName}} / {{systemLogform.operIp}}</el-descriptions-item>
          <el-descriptions-item label="请求地址">{{systemLogform.operUrl}}</el-descriptions-item>
          <el-descriptions-item label="请求方式">{{systemLogform.requestMethod}}</el-descriptions-item>
          <el-descriptions-item label="操作方法">{{systemLogform.method}}</el-descriptions-item>
          <el-descriptions-item label="请求参数">
            <json-viewer :value="systemLogform.operParam" :expand-depth=100 copyable boxed sort></json-viewer>
          </el-descriptions-item>
          <el-descriptions-item label="返回参数">
            <json-viewer :value="systemLogform.jsonResult" :expand-depth=100 copyable boxed sort></json-viewer>
          </el-descriptions-item>
          <el-descriptions-item label="状态">
          <!--根据状态值显示内容(两种写法,这里是第二种)-->
            <el-tag type="success" v-if="systemLogform.status === '1'">正常</el-tag>
            <el-tag type="warning" v-else>不正常</el-tag>
          </el-descriptions-item>
        </el-descriptions>
      </el-dialog>
    </div>
<script>
import BaseMixin from "@/mixins/base";
import request from "@/utils/request";
import SETTING from "@/settings";

export default {
  mixins: [BaseMixin],
  //根据状态值显示内容(两种写法,这里是第一种),filters和data、methods同级
  filters: {
    Status (status) {
      if (status == 1) { return "成功" }
      else { return "失败" }
    }
  },
  data () {
    return {
      show: false,//控制弹窗显示
      systemLogform: {
        businessTypeStr: '',
        operName: '',
        operIp: '',
        operUrl: '',
        requestMethod: '',
        method: '',
        operParam: '',
        jsonResult: '',
        status: ''
      },
    };
  },
  methods: {
    getList () {//调用接口获取表格数据
      request({
        url: `${SETTING.IOT_LOG_CENTER}/system/operate/log/page`,
        params: {
          page: this.pagination.page,
          limit: this.pagination.size,
          ...this.searchForm,
        },
      }).then((res) => {
          if (res.code === "200") {
            this.tableData = res.data
            this.pagination.total = res.total
          }
        },
        (_) => {
          this.$message({
            type: "error",
            message: _.message || "查询列表失败",
          });
        }
      );
    },
    handleClick (row) {
      this.show = true //控制弹窗显示
      //这里代码有些冗余(主要是使用了vue-json-viewer)
      //this.systemLogform = row 
      this.systemLogform.businessTypeStr = row.businessTypeStr
      this.systemLogform.operName = row.operName
      this.systemLogform.operIp = row.operIp
      this.systemLogform.operUrl = row.operUrl
      this.systemLogform.requestMethod = row.requestMethod
      this.systemLogform.method = row.method
      //这里是因为有时候接口传过来的字符串为空需要做个判断,JSON.parse()方法对数据也比较严格,报错写在后面
      this.systemLogform.operParam = row.operParam != "" ? JSON.parse(row.operParam) : {}
      this.systemLogform.jsonResult = row.jsonResult != "" ? JSON.parse(row.jsonResult) : {}
      this.systemLogform.status = row.status
    }
  },
};
</script>
  1. 报错:[Vue warn]: Error in v-on handler: “SyntaxError: Unexpected end of JSON input”

在这里插入图片描述

  1. 报错:[Vue warn]: Error in v-on handler: “SyntaxError: Unexpected token o in JSON at position 1”

在这里插入图片描述

报这两个错是因为第一个JSON数据没有完整结束,第二个key和value需要用到’'单引号的格式,当然这些都可以直接去修改数据,规定好数据格式。

  • 4
    点赞
  • 27
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
VueElement可以一起使用来封装一个选人弹窗。首先,我们需要使用Vue框架来构建弹窗组件,然后使用Element UI库来实现弹窗的样式和组件。 在Vue中,我们可以使用组件的方式来封装选人弹窗。首先,我们需要创建一个组件文件,命名为"selectUserModal.vue"。然后,在该组件中,我们可以使用Element UI的Modal组件作为弹窗容器,使用Form组件和Table组件等来展示选择人员的界面。 在"selectUserModal.vue"中,我们可以定义一个data属性来存储选择的人员信息,以及一个visible属性来控制弹窗显示和隐藏。我们还可以定义一些方法来处理用户的选择操作,如确定选择和取消选择等。 在弹窗的界面中,我们可以使用Form组件来展示与人员选择相关的输入框,如搜索框和筛选条件等。然后,在表格展示人员列表,可以使用Table组件,并绑定数据源和列定义。 为了实现人员选择操作,我们可以提供一个确认按钮,当用户点击确认按钮,我们可以触发一个自定义事件,并将选择的人员信息作为参数进传递。其他的操作,如点击表格即选中人员,我们也可以在相应的方法中进处理。 当组件完成后,我们可以在其他Vue页面中引用该组件,并传递参数来控制弹窗显示。通过监听自定义事件,我们可以在父组件中获取到选择的人员信息,并进相应的操作。 总结起来,通过VueElement的配合,我们可以封装一个选人弹窗组件,使其能在Vue项目中方便地使用,并具有良好的交互和样式。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值