Confirm.vue 1.5 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364
  1. <template>
  2. <ui-dialog>
  3. <template v-slot:header>
  4. <span>{{ title }}</span>
  5. <i class="iconfont icon-close" @click="close('no')"></i>
  6. </template>
  7. <template v-if="$slots.content">
  8. <slot name="content" />
  9. </template>
  10. <template v-else>
  11. <div class="message" v-html="content"></div>
  12. </template>
  13. <template v-slot:footer>
  14. <UIbutton v-if="!single" type="cancel" @click="close('no')">{{
  15. noText
  16. }}</UIbutton>
  17. <UIbutton type="primary" @click="close('ok')">{{ okText }}</UIbutton>
  18. </template>
  19. </ui-dialog>
  20. </template>
  21. <script lang="ts">
  22. // @ts-nocheck
  23. import { defineComponent } from "vue";
  24. import { isFunction, omit } from "./utils";
  25. import UIbutton from "../button";
  26. export default defineComponent({
  27. name: "ui-confirm",
  28. components: { UIbutton },
  29. props: {
  30. title: {
  31. type: String,
  32. default: "提示",
  33. },
  34. okText: {
  35. type: String,
  36. default: "确定",
  37. },
  38. noText: {
  39. type: String,
  40. default: "取消",
  41. },
  42. single: {
  43. type: Boolean,
  44. default: false,
  45. },
  46. func: Function,
  47. content: String,
  48. destroy: Function,
  49. showCloseIcon: Function,
  50. },
  51. setup: function (props, ctx) {
  52. const close = (result) => {
  53. if (isFunction(props.func) && props.func(result) === false) {
  54. return;
  55. }
  56. isFunction(props.destroy) && props.destroy();
  57. };
  58. return {
  59. ...omit(props, "destroy", "func"),
  60. close,
  61. };
  62. },
  63. });
  64. </script>