message.vue 5.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204
  1. <script setup lang="ts">
  2. import { h } from "vue";
  3. import hot from "@/assets/svg/hot.svg?component";
  4. import { message, closeAllMessage } from "@/utils/message";
  5. import { useRenderIcon } from "@/components/ReIcon/src/hooks";
  6. import Check from "~icons/ep/check";
  7. defineOptions({
  8. name: "Message"
  9. });
  10. </script>
  11. <template>
  12. <el-card shadow="never">
  13. <template #header>
  14. <div class="card-header">
  15. <span class="font-medium"> 消息提示 </span>
  16. </div>
  17. <el-link
  18. class="mt-2"
  19. href="https://github.com/pure-admin/vue-pure-admin/blob/main/src/views/components/message.vue"
  20. target="_blank"
  21. >
  22. 代码位置 src/views/components/message.vue
  23. </el-link>
  24. </template>
  25. <h4 class="mb-4!">Element Plus 的消息提示,点击弹出提示信息</h4>
  26. <el-space wrap>
  27. <el-button
  28. type="info"
  29. @click="message('Info类型消息', { customClass: 'el' })"
  30. >
  31. Info
  32. </el-button>
  33. <el-button
  34. type="success"
  35. @click="
  36. message('Success类型消息', { customClass: 'el', type: 'success' })
  37. "
  38. >
  39. Success
  40. </el-button>
  41. <el-button
  42. type="warning"
  43. @click="
  44. message('Warning类型消息', { customClass: 'el', type: 'warning' })
  45. "
  46. >
  47. Warning
  48. </el-button>
  49. <el-button
  50. type="danger"
  51. @click="message('Error类型消息', { customClass: 'el', type: 'error' })"
  52. >
  53. Error
  54. </el-button>
  55. <el-button
  56. @click="message('可关闭消息', { customClass: 'el', showClose: true })"
  57. >
  58. 可关闭
  59. </el-button>
  60. <el-button
  61. @click="
  62. message('分组消息合并', {
  63. customClass: 'el',
  64. type: 'success',
  65. grouping: true
  66. })
  67. "
  68. >
  69. 分组消息合并
  70. </el-button>
  71. <el-button
  72. @click="
  73. message('自定义消息图标', {
  74. customClass: 'el',
  75. icon: useRenderIcon(Check)
  76. })
  77. "
  78. >
  79. 自定义图标
  80. </el-button>
  81. <el-button
  82. @click="
  83. message('3秒后关闭', {
  84. customClass: 'el',
  85. duration: 3000,
  86. onClose: () =>
  87. message('消息已关闭', { customClass: 'el', type: 'success' })
  88. })
  89. "
  90. >
  91. 自定义延时关闭时间并设置关闭后其他操作
  92. </el-button>
  93. <el-button
  94. @click="
  95. message(
  96. h('p', null, [
  97. h('span', null, 'Message can be '),
  98. h('i', { style: 'color: teal' }, 'VNode')
  99. ]),
  100. { customClass: 'el' }
  101. )
  102. "
  103. >
  104. 自定义内容
  105. </el-button>
  106. <el-button
  107. @click="
  108. message('<strong>This is <i>HTML</i> string</strong>', {
  109. customClass: 'el',
  110. dangerouslyUseHTMLString: true
  111. })
  112. "
  113. >
  114. HTML 片段作为正文内容
  115. </el-button>
  116. </el-space>
  117. <el-divider />
  118. <h4 class="mb-4!">
  119. 类似 Ant Design 风格的消息提示,点击弹出提示信息(基于 ElMessage
  120. 样式改版,不会影响 ElMessage
  121. 原本样式,使用和打包大小成本极低并适配整体暗色风格)
  122. </h4>
  123. <el-space wrap>
  124. <el-button type="info" @click="message('Info类型消息')">Info</el-button>
  125. <el-button
  126. type="success"
  127. @click="message('Success类型消息', { type: 'success' })"
  128. >
  129. Success
  130. </el-button>
  131. <el-button
  132. type="warning"
  133. @click="message('Warning类型消息', { type: 'warning' })"
  134. >
  135. Warning
  136. </el-button>
  137. <el-button
  138. type="danger"
  139. @click="message('Error类型消息', { type: 'error' })"
  140. >
  141. Error
  142. </el-button>
  143. <el-button @click="message('可关闭消息', { showClose: true })">
  144. 可关闭
  145. </el-button>
  146. <el-button
  147. @click="message('分组消息合并', { type: 'success', grouping: true })"
  148. >
  149. 分组消息合并
  150. </el-button>
  151. <el-button
  152. @click="
  153. message('自定义消息图标', {
  154. icon: hot
  155. })
  156. "
  157. >
  158. 自定义图标
  159. </el-button>
  160. <el-button
  161. @click="
  162. message('3秒后关闭', {
  163. duration: 3000,
  164. onClose: () => message('消息已关闭', { type: 'success' })
  165. })
  166. "
  167. >
  168. 自定义延时关闭时间并设置关闭后其他操作
  169. </el-button>
  170. <el-button
  171. @click="
  172. message(
  173. h('p', null, [
  174. h('span', null, 'Message can be '),
  175. h('i', { style: 'color: teal' }, 'VNode')
  176. ])
  177. )
  178. "
  179. >
  180. 自定义内容
  181. </el-button>
  182. <el-button
  183. @click="
  184. message('<strong>This is <i>HTML</i> string</strong>', {
  185. dangerouslyUseHTMLString: true
  186. })
  187. "
  188. >
  189. HTML 片段作为正文内容
  190. </el-button>
  191. </el-space>
  192. <el-divider />
  193. <el-button @click="closeAllMessage"> 关闭所有消息提示 </el-button>
  194. </el-card>
  195. </template>