wangzhibo
2026-07-16 b57020623cf0c946706573bf102e548c3a544423
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
import { Mitt } from "../utils/mitt";
import { isFunction } from "lodash-es";
import { getCurrentInstance, inject, reactive } from "vue";
 
export function useCore() {
    const crud = inject("crud") as ClCrud.Ref;
    const mitt = inject("mitt") as Mitt;
 
    return {
        crud,
        mitt
    };
}
 
export function useConfig() {
    return inject("__config__") as Config;
}
 
export function useBrowser() {
    return inject("__browser__") as Browser;
}
 
export function useRefs() {
    const refs = reactive<{ [key: string]: obj }>({});
 
    function setRefs(name: string) {
        return (el: any) => {
            refs[name] = el;
        };
    }
 
    return { refs, setRefs };
}
 
export function useProxy(ctx: any) {
    const { type }: any = getCurrentInstance();
    const { mitt, crud } = useCore();
 
    // 挂载
    crud[type.name] = ctx;
 
    // 事件
    mitt.on("crud.proxy", ({ name, data = [], callback }: any) => {
        if (ctx[name]) {
            let d = null;
 
            if (isFunction(ctx[name])) {
                d = ctx[name](...data);
            } else {
                d = ctx[name];
            }
 
            if (callback) {
                callback(d);
            }
        }
    });
 
    return ctx;
}
 
export function useElApi(keys: string[], el: any) {
    const apis: obj = {};
 
    keys.forEach((e) => {
        apis[e] = (...args: any[]) => {
            return el.value[e](...args);
        };
    });
 
    return apis;
}
 
export * from "./crud";