showModal.vue 3.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134
  1. <template>
  2. <view class="uv-new-modal">
  3. <uv-modal ref="modal" :class="className" v-model:show="show" :title="params.title"
  4. :confirmText="params.confirmText" :cancelText="params.cancelText"
  5. :showConfirmButton="params.showConfirmButton" :showCancelButton="params.showCancelButton"
  6. :confirmColor="params.confirmColor" :cancelColor="params.cancelColor" :duration="params.duration||3000"
  7. :asyncClose="params.asyncClose" :buttonReverse="params.buttonReverse"
  8. :closeOnClickOverlay="params.closeOnClickOverlay" :confirmButtonShape="params.confirmButtonShape"
  9. @confirm="confirm" @cancel="cancel">
  10. <view class="slot-content">
  11. <view class="content">
  12. {{params.content}}
  13. </view>
  14. </view>
  15. </uv-modal>
  16. </view>
  17. </template>
  18. <script>
  19. export default {
  20. name: "uv-new-modal",
  21. data() {
  22. return {
  23. show: false,
  24. className: 'show-modal',
  25. params: {
  26. title: '提示',
  27. content: '',
  28. confirmText: '确认',
  29. cancelText: '取消',
  30. showConfirmButton: true,
  31. showCancelButton: false,
  32. confirmColor: '#15B3B2',
  33. cancelColor: '#606266',
  34. duration: 0,
  35. buttonReverse: false,
  36. asyncClose: false,
  37. closeOnClickOverlay: false,
  38. confirmButtonShape: '',
  39. }
  40. };
  41. },
  42. methods: {
  43. open(params) {
  44. this.params = Object.assign({}, this.params, params)
  45. //console.log(this.params);
  46. this.show = true;
  47. // this.$refs.modal.close();
  48. this.$refs.modal.open();
  49. },
  50. close() {
  51. this.show = false;
  52. this.$refs.modal.close();
  53. },
  54. confirm(e) {
  55. if (typeof(this.params.confirm) != 'undefined') {
  56. this.params.confirm(e);
  57. }
  58. this.$emit('confirm', e);
  59. this.$refs.modal.close();
  60. },
  61. cancel(e) {
  62. this.$refs.modal.close();
  63. if (typeof(this.params.cancel) != 'undefined') {
  64. this.params.cancel(e);
  65. }
  66. this.$emit('cancel', e);
  67. },
  68. }
  69. }
  70. </script>
  71. <style lang="scss" scoped>
  72. .uv-new-modal {
  73. .slot-content {
  74. text-align: center;
  75. color: #999;
  76. padding: 1rem 0;
  77. }
  78. .uv-popup {
  79. color: #13caca;
  80. ::v-deep .uv-modal {
  81. border-radius: .5rem;
  82. .uv-modal__button-group {
  83. height: auto;
  84. ::v-deep .uv-modal__button-group__wrapper--confirm {
  85. background: linear-gradient(to right, #13caca, #15B3B2);
  86. color: #fff;
  87. margin: .75rem 1.75rem .75rem .875rem;
  88. border-radius: 2rem;
  89. .uv-modal__button-group__wrapper__text {
  90. color: #fff !important;
  91. }
  92. }
  93. .uv-modal__button-group__wrapper--cancel {
  94. border: 1px solid var(--text-color);
  95. background-color: transparent;
  96. color: var(--text-color);
  97. margin: .75rem .875rem .75rem 1.75rem;
  98. border-radius: 2rem;
  99. .uv-modal__button-group__wrapper__text {
  100. color: var(--text-color) !important;
  101. }
  102. }
  103. .uv-modal__button-group__wrapper--only-confirm {
  104. background: linear-gradient(to right, #13caca, #15B3B2);
  105. color: #fff;
  106. margin: .75rem 1.75rem;
  107. border-radius: 2rem;
  108. .uv-modal__button-group__wrapper__text {
  109. color: #fff !important;
  110. }
  111. }
  112. }
  113. }
  114. }
  115. }
  116. </style>