window.vue 1.7 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667
  1. <template>
  2. <ui-dialog>
  3. <template #header>
  4. <span style="font-size: 16px">{{ title }}</span>
  5. <i class="iconfont icon-close" @click="onNo('close')" v-if="showCloseIcon"></i>
  6. </template>
  7. <template v-if="$slots.content">
  8. <slot name="content"></slot>
  9. </template>
  10. <template v-else>
  11. <div class="message" v-html="content"></div>
  12. </template>
  13. <template #footer>
  14. <ui-button type="cancel" @click="onNo" v-if="showCancelButton">{{ noText }}</ui-button>
  15. <ui-button :class="{ disabled: !canSubmit }" type="submit primary" @click="onOk">{{ okText }}</ui-button>
  16. </template>
  17. </ui-dialog>
  18. </template>
  19. <script>
  20. import { defineComponent } from 'vue'
  21. export default defineComponent({
  22. name: 'UIWindow',
  23. props: {
  24. title: {
  25. type: String,
  26. default: '提示',
  27. },
  28. content: {
  29. type: String,
  30. default: '',
  31. },
  32. okText: {
  33. type: String,
  34. default: '确定',
  35. },
  36. noText: {
  37. type: String,
  38. default: '取消',
  39. },
  40. showCloseIcon: {
  41. type: Boolean,
  42. default: true,
  43. },
  44. showCancelButton: {
  45. type: Boolean,
  46. default: true,
  47. },
  48. canSubmit: {
  49. type: Boolean,
  50. default: true,
  51. },
  52. },
  53. emits: ['ok', 'no'],
  54. setup: function (props, ctx) {
  55. const onNo = name => {
  56. ctx.emit('no', name)
  57. }
  58. const onOk = () => {
  59. ctx.emit('ok')
  60. }
  61. return {
  62. onNo,
  63. onOk,
  64. }
  65. },
  66. })
  67. </script>