useGlobalToast.ts 1.9 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162
  1. import type { ToastOptions } from 'wot-design-uni/components/wd-toast/types'
  2. import { defineStore } from 'pinia'
  3. interface GlobalToast {
  4. toastOptions: ToastOptions
  5. currentPage: string
  6. }
  7. const defaultOptions: ToastOptions = {
  8. duration: 2000,
  9. show: false,
  10. zIndex: 99999999999,
  11. }
  12. export const useGlobalToast = defineStore('global-toast', {
  13. state: (): GlobalToast => ({
  14. toastOptions: defaultOptions,
  15. currentPage: '',
  16. }),
  17. getters: {},
  18. actions: {
  19. // 打开Toast
  20. show(option: ToastOptions | string) {
  21. this.currentPage = getCurrentPath()
  22. const options = CommonUtil.deepMerge(defaultOptions, typeof option === 'string' ? { msg: option } : option) as ToastOptions
  23. this.toastOptions = CommonUtil.deepMerge(options, {
  24. show: true,
  25. position: options.position || 'middle',
  26. }) as ToastOptions
  27. },
  28. // 成功提示
  29. success(option: ToastOptions | string) {
  30. this.show(CommonUtil.deepMerge({
  31. iconName: 'success',
  32. duration: 1500,
  33. }, typeof option === 'string' ? { msg: option } : option) as ToastOptions)
  34. },
  35. // 关闭提示
  36. error(option: ToastOptions | string) {
  37. this.show(CommonUtil.deepMerge({
  38. iconName: 'error',
  39. direction: 'vertical',
  40. }, typeof option === 'string' ? { msg: option } : option) as ToastOptions)
  41. },
  42. // 常规提示
  43. info(option: ToastOptions | string) {
  44. this.show(CommonUtil.deepMerge({
  45. iconName: 'info',
  46. }, typeof option === 'string' ? { msg: option } : option) as ToastOptions)
  47. },
  48. // 警告提示
  49. warning(option: ToastOptions | string) {
  50. this.show(CommonUtil.deepMerge({
  51. iconName: 'warning',
  52. }, typeof option === 'string' ? { msg: option } : option) as ToastOptions)
  53. },
  54. // 关闭Toast
  55. close() {
  56. this.toastOptions = defaultOptions
  57. this.currentPage = ''
  58. },
  59. },
  60. })