Confirm.vue 3.2 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495969798
  1. <template>
  2. <popup ref="Message" :show="show">
  3. <div class="ui-message ui-message-confirm" :style="{width:$lang=='zh'?'400px':'auto'}" :class="[isMaterial?'message-material':'dark']">
  4. <div class="ui-message-header" :class="{'header-material':isMaterial}">
  5. <span>{{title}}</span>
  6. <span @click="onNo" v-if="showCloseIcon">
  7. <i class="iconfont icon-close"></i>
  8. </span>
  9. </div>
  10. <div class="ui-message-main" :class="{'main-material':isMaterial}">
  11. <!-- <div class="ui-message-icon" :class="[icon?icon:null]"></div> -->
  12. <div class="ui-message-title">{{tips}}</div>
  13. <div class="ui-message-content" v-html="content"></div>
  14. </div>
  15. <div class="ui-message-footer" :class="{'footer-material':isMaterial}" v-if="okLink">
  16. <a
  17. :href="noLink"
  18. target="_blank"
  19. class="ui-button link cancel"
  20. @click="onNo"
  21. >{{noText}}</a>
  22. <a
  23. :href="okLink"
  24. target="_blank"
  25. class="ui-button link submit"
  26. @click="onOk"
  27. >{{okText}}</a>
  28. </div>
  29. <div v-else class="ui-message-footer" :class="{'footer-material':isMaterial}">
  30. <button class="ui-button cancel" :class="{deepcancel:!isMaterial}" @click="onNo">{{noText}}</button>
  31. <button class="ui-button submit" @click="onOk">{{okText}}</button>
  32. <button v-if="ok2" class="ui-button submit" @click="onOk2">{{ok2Text}}</button>
  33. </div>
  34. </div>
  35. </popup>
  36. </template>
  37. <script>
  38. import {i18n} from "@/lang"
  39. import Popup from "../popup";
  40. export default {
  41. name: "ui-confirm",
  42. components: {
  43. Popup
  44. },
  45. data() {
  46. return {
  47. isMaterial: window.location.pathname.indexOf('material.html')>-1 || window.location.pathname.indexOf('showMobile.html')>-1 || window.location.pathname.indexOf('show.html')>-1,
  48. show: false,
  49. showCloseIcon: true,
  50. duration: 0,
  51. title: i18n.t("tips.title"),
  52. tips: "",
  53. icon: null,
  54. content: "",
  55. okText: i18n.t("common.set"),
  56. ok2Text: i18n.t("common.set"),
  57. noText: i18n.t("common.giveup"),
  58. okLink: null,
  59. noLink: null,
  60. ok: null,
  61. ok2: null,
  62. no: null
  63. };
  64. },
  65. methods: {
  66. onOk() {
  67. if (this.ok && this.ok(this) === false) {
  68. return;
  69. }
  70. this.onClose();
  71. },
  72. onOk2() {
  73. if (this.ok2 && this.ok2(this) === false) {
  74. return;
  75. }
  76. this.onClose();
  77. },
  78. onNo() {
  79. this.no && this.no();
  80. this.onClose();
  81. },
  82. onClose() {
  83. setTimeout(() => {
  84. this.show = false;
  85. document.body.removeChild(this.$el);
  86. this.$destroy();
  87. }, this.duration);
  88. }
  89. }
  90. };
  91. </script>
  92. <style lang="less" scoped>
  93. .ui-message {
  94. min-width: 400px;
  95. height: 230px;
  96. }
  97. </style>