index.vue 1.34 KB
<style rel="stylesheet/scss" lang="scss" scoped>
.sf-confirm-icon {
  margin-right: 5px;
  font-size: 16px;
  color: #faad14;
}
.sf-confirm-title {
  font-size: 14px;
  margin: 0px 0px 5px 0px;
}
.sf-confirm-button-panel {
  margin: 0;
  text-align: right;
}
</style>

<template>
  <el-popover :placement="placement" :trigger="trigger" v-model="visible">
    <div>
      <p class="sf-confirm-title">
        <i class="el-icon-info sf-confirm-icon"></i>
        <span>{{ title }}</span>
      </p>
      <p class="sf-confirm-button-panel">
        <el-button size="mini" plain @click="cancel">否</el-button>
        <el-button size="mini" type="primary" style="margin-left: 5px" @click="confirm">是</el-button>
      </p>
    </div>
    <span @click.stop slot="reference">
      <slot></slot>
    </span>
  </el-popover>
</template>
<script>
  export default {
    name: 'Confirm',
    props: {
      title: {
        type: String,
        default: '是否执行当前操作?'
      },
      placement: {
        type: String,
        default: 'top'
      },
      trigger: String
    },
    data () {
      return {
        visible: false
      }
    },
    methods: {
      cancel () {
        this.visible = false;
        this.$emit('cancel');
      },
      confirm () {
        this.visible = false;
        this.$emit('confirm');
      }
    }
  };
</script>