import type { MessageOptions, MessageResult } from 'wot-design-uni/components/wd-message-box/types' import { defineStore } from 'pinia' export type GlobalMessageOptions = MessageOptions & { success?: (res: MessageResult) => void fail?: (res: MessageResult) => void } interface GlobalMessage { messageOptions: GlobalMessageOptions | null currentPage: string } export const useGlobalMessage = defineStore('global-message', { state: (): GlobalMessage => ({ messageOptions: null, currentPage: '', }), actions: { show(option: GlobalMessageOptions | string) { this.currentPage = getCurrentPath() this.messageOptions = { ...(CommonUtil.isString(option) ? { title: option } : option), cancelButtonProps: { round: false, }, confirmButtonProps: { round: false, }, } }, alert(option: GlobalMessageOptions | string) { const messageOptions = CommonUtil.deepMerge({ type: 'alert' }, CommonUtil.isString(option) ? { title: option } : option) as MessageOptions messageOptions.showCancelButton = false this.show(messageOptions) }, confirm(option: GlobalMessageOptions | string) { const messageOptions = CommonUtil.deepMerge({ type: 'confirm' }, CommonUtil.isString(option) ? { title: option } : option) as MessageOptions messageOptions.showCancelButton = true this.show(messageOptions) }, prompt(option: GlobalMessageOptions | string) { const messageOptions = CommonUtil.deepMerge({ type: 'prompt' }, CommonUtil.isString(option) ? { title: option } : option) as MessageOptions messageOptions.showCancelButton = true this.show(messageOptions) }, close() { this.messageOptions = null this.currentPage = '' }, }, })