diy-confirm-popup.php 2.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990
  1. <template id="diy-confirm-popup">
  2. <div class="diy-confirm-popup" :style="popStyle" v-show="show">
  3. <div class="popup-title">{{ title }}</div>
  4. <div flex="cross:center main:center">
  5. <el-button v-if="showConfrimBtn" type="primary" size="mini" @click.stop="confirm">{{ confirmText }}</el-button>
  6. <el-button v-if="showCancelBtn" size="mini" plain @click.stop="cancel">{{ cancelText }}</el-button>
  7. </div>
  8. </div>
  9. </template>
  10. <script>
  11. Vue.component('diy-confirm-popup', {
  12. name: "diy-confirm-popup",
  13. props: {
  14. title: { // 弹窗标题
  15. type: String,
  16. default: '确定删除吗'
  17. },
  18. show: { // 是否展示弹窗
  19. type: Boolean,
  20. default: false
  21. },
  22. popStyle: { // 弹窗最外层自定义样式
  23. type: Object,
  24. default: () => {
  25. return {}
  26. }
  27. },
  28. showConfrimBtn: { // 是否展示确定按钮
  29. type: Boolean,
  30. default: true
  31. },
  32. showCancelBtn: { // 是否展示取消按钮
  33. type: Boolean,
  34. default: true
  35. },
  36. confirmText: { // 确定按钮文字
  37. type: String,
  38. default: '确定'
  39. },
  40. cancelText: { // 取消按钮文字
  41. type: String,
  42. default: '取消'
  43. }
  44. },
  45. template: '#diy-confirm-popup',
  46. methods: {
  47. confirm() {
  48. this.$emit('confirm')
  49. },
  50. cancel() {
  51. this.$emit('close')
  52. }
  53. }
  54. })
  55. </script>
  56. <style>
  57. .diy-confirm-popup {
  58. position: absolute;
  59. top: 20px;
  60. right: 15px;
  61. width: 120px;
  62. height: 64px;
  63. border-radius: 4px;
  64. padding: 0 10px;
  65. font-size: 12px;
  66. box-shadow: 0 0 8px rgb(0 0 0 / 10%);
  67. text-align: center;
  68. z-index: 15;
  69. background: #fff;
  70. cursor: pointer;
  71. }
  72. .popup-title {
  73. color: #999;
  74. text-align: center;
  75. line-height: 34px;
  76. }
  77. .diy-confirm-popup .el-button--primary {
  78. color: var(--primary);
  79. background-color: transparent;
  80. }
  81. .diy-confirm-popup .el-button--primary:hover {
  82. border: 1px solid var(--primary)
  83. }
  84. .diy-confirm-popup .el-button--mini, .el-button--mini.is-round {
  85. padding: 4px 10px;
  86. }
  87. </style>