Files
irc_web/src/components/feedBack/fun.js
T
DESKTOP-6C3NK6N\WXS fa2519cba4
continuous-integration/drone/push Build is passing
弹窗自动退出时关闭
2024-08-22 13:19:45 +08:00

37 lines
1.3 KiB
JavaScript

import Vue from "vue";
import FEEDBACKCOMP from "./index.vue";
const FBConstructor = Vue.extend(FEEDBACKCOMP);
let FBCINSTANCELIST = [];
const FB = options => {
const { type, callBack, cancelBack, trialId = null, Id = null, visitTaskId = null, SubjectVisitId = null } = options;
if (!type) throw `type is requred.but ${type}`
const id = `FB${new Date().getTime()}`;
const instance = new FBConstructor();
FBCINSTANCELIST.push(instance);
instance.id = id;
instance.vm = instance.$mount();
if (instance.vm.visible) return;
document.body.appendChild(instance.vm.$el);
instance.vm.open({ type, trialId, Id, visitTaskId, SubjectVisitId });
instance.vm.$on("success", (Id) => {
if (callBack) callBack();
});
instance.vm.$on("closed", () => {
document.body.removeChild(instance.vm.$el);
instance.vm.$destroy();
let index = FBCINSTANCELIST.findIndex(item => item.id === id);
FBCINSTANCELIST.splice(index, 1)
if (cancelBack) cancelBack()
});
return instance.vm;
}
FB.close = () => {
if (FBCINSTANCELIST.length <= 0) return;
FBCINSTANCELIST.forEach(item => {
document.body.removeChild(item.vm.$el);
item.vm.$destroy();
})
FBCINSTANCELIST = [];
}
export default FB;