iview-admin:Table组件的使用

近在使用iview-admin开发prometheus和alertmanager管理平台,用到最多就是Table和Form两个组件了,本文重点介绍Table组件的使用。官方文档在 表格 - View Design (iviewui.com),如果有小伙伴有情趣可以去细看文档。

具体实例如下:

<template>
  <div>
    <Card>
      <tables ref="tables" v-model="tableData" :columns="columns"/>
    </Card>
  </div>
</template>

<script>
import Tables from '_c/tables'

export default {
  name: 'rules',
  components: {
    Tables
  },
  data () {
    
    return {
      tableData: [],
      columns: [
        { title: '编号', align: 'center', key: 'id', sortable: true },
        { title: '告警名称', align: 'center', key: 'alert_name' },
        {
          title: '告警等级',
          align: 'center',
          key: 'severity',
          render: (h, params) => {
            if (params.row.severity === 'warning') {
              return h('div', '警告')
            } else if (params.row.severity === 'critical') {
              return h('div', '危急')
            } else if (params.row.severity === 'emergency') {
              return h('div', '紧急')
            }
          }
        },
        { title: '表达式', align: 'center', key: 'expr' },
        { title: '持续时长', align: 'center', key: 'duration' },
        { title: '标题', align: 'center', key: 'summary' },
        { title: '描述', align: 'center', key: 'description' },
        { title: '数据源', align: 'center', key: 'datasource' },
        { title: '告警策略', align: 'center', key: 'group' },
        {
          title: '操作',
          align: 'center',
          type: 'operator',
          render: (h, params) => {
            return h('div', [
              h('a', {
                style: {
                  'margin-right': '10px',
                  'color': '#1890ff',
                  'font-size': '14px'
                },
                on: {
                  click: () => {
                    this.edit(params)
                  }
                }
              }, '编辑'),
              h('Poptip', {
                props: {
                  confirm: true,
                  title: '你确定要删除吗?'
                },
                on: {
                  'on-ok': () => {
                    this.delete(params)
                  }
                }
              }, [
                h('a', {
                  style: {
                    'margin-right': '10px',
                    'color': '#1890ff',
                    'font-size': '14px'
                  }
                }, '删除')
              ])
            ])
          }
        }
      ]
    }
  },
  methods: {
    initRulesData () {
      this.filterPromRule()
    },
    filterPromRule () {
      getPromRule().then(resp => {
        if (resp.data.code === 0) {
          this.tableData = resp.data.data
        } else {
          this.$Message.error('获取prometheus规则失败!')
        }
      })
    },
    edit (params) {
      this.prometheusRuleModel.id = params.row.id
      this.prometheusRuleModel.duration = params.row.duration
      this.prometheusRuleModel.datasource = params.row.datasource_id
      this.prometheusRuleModel.summary = params.row.summary
      this.prometheusRuleModel.description = params.row.description
      this.prometheusRuleModel.alertName = params.row.alert_name
      this.prometheusRuleModel.group = params.row.group_id
      this.prometheusRuleModel.severity = params.row.severity
      this.prometheusRuleModel.monitorMetrics = params.row.expr.split(/[><=]/)[0]
      this.prometheusRuleModel.alarmThreshold = params.row.expr.split(/[><=]/)[1]
      this.prometheusRuleModel.symbols = params.row.expr[params.row.expr.search(/[><=]/)]
      this.modalTitle = '修改prometheus告警规则'
      this.modalType = 'edit'
      this.createModal = true
    },
    delete (params) {
      deletePromRule(params.row.id).then(resp => {
        if (resp.data.code === 0) {
          this.initRulesData()
        } else {
          this.$Message.error('删除prometheus规则失败!')
        }
      })
    }
  },
  mounted () {
    this.initRulesData()
  }
}
</script>

<style>

</style>

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值