//@ts-nocheck
import { t_dialogOptions } from "./xSingle/dialog/dialog";
import { State_UI } from "./State_UI";
import { LayerUtils } from "./xSingle/layer/LayerUtils";
import { message, Modal, ModalFuncProps, notification } from "ant-design-vue";
import $ from "jquery";
import { xU } from "./ventoseUtils";
/* 静态方法,与APP实例无关,引用有直接可用 */
const useModel = type => {
return ({ title = "", content = "" }) => {
return new Promise((resolve, reject) => {
title = (isDefault => {
if (isDefault) {
const title_map = {
success: State_UI.$t("成功").label,
info: State_UI.$t("提示").label,
error: State_UI.$t("错误").label,
warning: State_UI.$t("警告").label
};
return title_map[type];
} else {
return title;
}
})(!title);
Modal[type]({
title,
icon: (
),
content: content,
onOk() {
resolve("ok");
},
onCancel() {
reject();
},
okText: State_UI.$t("确定").label,
class: "test"
});
});
};
};
LayerUtils.loading = function (indexDelete) {
this.loading.count = this.loading.count || 1;
this.loading.deep = this.loading.deep || new Set();
$("body").trigger("click");
if (indexDelete >= 0) {
if (this.loading.deep.has(indexDelete)) {
/* 如果size不是一,则不需要消失 */
this.loading.deep.delete(indexDelete);
if (this.loading.deep.size === 0) {
LayerUtils.close(this.loading.index);
}
} else {
console.error("loading", indexDelete);
}
} else {
/* 全局单例,如果有一个,如果loading,不需要new loading */
let indexAdd = this.loading.count++;
if (this.loading.deep.size === 0) {
this.loading.index = LayerUtils.load(1);
}
this.loading.deep.add(indexAdd);
return indexAdd;
}
};
export const UI = {
confirm(options) {
options.okText = options.okText || State_UI.$t("确定").label;
options.cancelText = options.cancelText || State_UI.$t("取消").label;
Modal.confirm(options);
},
dialog: {
/* installUIDialogComponent Vue3 依赖外部plugin,没有全局的 */
component: async (options: t_dialogOptions) => null,
success: useModel("success"),
info: useModel("info"),
error: useModel("error"),
warning: useModel("warning"),
confirm: (options: ModalFuncProps) => {
return new Promise(async (resolve, reject) => {
options.okText = options.okText || State_UI.$t("确定").label;
options.cancelText = options.cancelText || State_UI.$t("取消").label;
if (options.onOk) {
const onOk = options.onOk;
options.onOk = () => {
return onOk(resolve, reject);
};
} else {
options.onOk = () => resolve("ok");
}
if (options.onCancel) {
const onCancel = options.onCancel;
options.onCancel = () => {
onCancel(resolve, reject);
};
} else {
options.onCancel = () => reject();
}
Modal.confirm(options);
});
},
delete({ title, content } = {}) {
title = title || State_UI.$t("删除").label;
content = content || State_UI.$t("删除确认提示").label;
return new Promise((resolve, reject) => {
Modal.confirm({
title,
icon: ,
content,
okType: "danger",
okText: State_UI.$t("确定").label,
cancelText: State_UI.$t("取消").label,
onOk() {
resolve("ok");
},
onCancel() {
reject();
}
});
});
}
},
message,
notification: new Proxy(notification, {
get(target, p, receiver) {
const m = target[p];
return new Proxy(m, {
apply(target, thisArg, argArray) {
if (typeof argArray[0] === "string") {
argArray[0] = xU.merge({ message: argArray[0] }, argArray[1] || {});
}
return target.apply(thisArg, argArray);
}
});
}
}),
layer: LayerUtils
};