cshenfu
2024-06-27 58aa6e282bb343503be3cb198948328ea3ed7b79
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
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
/**
 * vk-unicloud框架客户端(前端)
 * author    VK
 */
import userCenter         from './libs/vk-unicloud/vk-unicloud-user-center'
import callFunctionUtil   from './libs/vk-unicloud/vk-unicloud-callFunctionUtil'
import pubfn              from './libs/function/index'
import modal              from './libs/function/modal'
import navigate           from './libs/function/vk.navigate'
import localStorage       from './libs/function/vk.localStorage'
import aliyunOSSUtil      from './libs/function/aliyunOSSUtil'
import openapi            from './libs/openapi/index'
import requestUtil        from './libs/function/vk.request'
import importObject       from './libs/function/vk.importObject'
 
import filters            from './libs/function/vk.filters'
import mixin              from './libs/mixin/mixin.js'
import initPermission     from './libs/function/permission'
import storeMixin         from './libs/store/mixin/mixin'
import initGlobalError    from './libs/store/libs/error'
import consoleLog         from './libs/install/console.log'
import updateManager      from './libs/function/updateManager.js'
// #ifdef H5
import h5                 from './libs/function/vk.h5'
// #endif
 
 
 
var vk = {
    userCenter,
    callFunctionUtil,
    /**
     * 发起一个云函数请求
     */
    callFunction:     callFunctionUtil.callFunction,
    checkToken:       callFunctionUtil.checkToken,
    uploadFile:       callFunctionUtil.uploadFile,
    getConfig:        callFunctionUtil.getConfig,
    emitRefreshToken: callFunctionUtil.emitRefreshToken,
    onRefreshToken:   callFunctionUtil.onRefreshToken,
    offRefreshToken:  callFunctionUtil.offRefreshToken,
    pubfn,
 
    // #ifdef H5
    h5,
    // #endif
 
    alert:             modal.alert,
    toast:             modal.toast,
    confirm:           modal.confirm,
    prompt:            modal.prompt,
    showActionSheet:   modal.showActionSheet,
    showLoading:       modal.showLoading,
    hideLoading:       modal.hideLoading,
    setLoading:        modal.setLoading,
 
    navigate,
    // 保留当前页面,并进行页面跳转
    navigateTo:              navigate.navigateTo,
    // 关闭当前页面,并进行页面跳转
    redirectTo:              navigate.redirectTo,
    // 并关闭所有页面,并进行页面跳转
    reLaunch:                navigate.reLaunch,
    // 并关闭所有非tab页面,并进行tab面跳转
    switchTab:               navigate.switchTab,
    // 页面返回
    navigateBack:            navigate.navigateBack,
    // 跳转到首页
    navigateToHome:          navigate.navigateToHome,
    // 跳转到登录页
    navigateToLogin:         navigate.navigateToLogin,
    // 跳转到小程序
    navigateToMiniProgram:   navigate.navigateToMiniProgram,
    // 触发全局的自定义事件,附加参数都会传给监听器回调函数。
    $emit:                   navigate.$emit,
    // 监听全局的自定义事件,事件由 uni.$emit 触发,回调函数会接收事件触发函数的传入参数。
    $on:                     navigate.$on,
    // 触发全局的自定义事件,附加参数都会传给监听器回调函数。
    $once:                   navigate.$once,
    // 移除全局自定义事件监听器。
    $off:                    navigate.$off,
    // 本地缓存
    localStorage:            localStorage,
 
    // 获取应用语言列表
    getLocaleList:           pubfn.getLocaleList,
    // 获取应用当前语言
    getLocale:               pubfn.getLocale,
    // 获取应用当前语言对象
    getLocaleObject:         pubfn.getLocaleObject,
    // 设置应用当前语言
    setLocale:               pubfn.setLocale,
    
 
    // 本地缓存
    ...localStorage,
    // 阿里云oss
    aliyunOSSUtil,
    // 更新管理器
    updateManager,
    // 开放API
    openapi,
    // 请求库
    requestUtil,
    // 发起URL请求
    request: requestUtil.request,
    // 导出云对象
    importObject
};
// vk实例初始化
vk.init = function(obj = {}) {
    let {
        Vue, // Vue实例
        config, // 配置
        store, // vuex简写法则(新版本无需传store)
    } = obj;
    if (typeof store !== "undefined") {
        // 兼容旧版本
        Vue.use(store);
    } else {
        // 新版本无需传store
        Vue.mixin(storeMixin);
        if (config.globalError) {
            Vue.use(initGlobalError);
        }
    }
    // 自定义云函数路由配置
    vk.callFunctionUtil.setConfig(config);
    // 重写 console.log
    Vue.use(consoleLog);
};
 
vk.getGlobalObject = function() {
    if (typeof globalThis === "object") return globalThis;
    if (typeof self === "object") return self;
    if (typeof window === "object") return window;
    if (typeof global === "object") return global;
};
// 加载拓展功能
vk.use = function(obj, util) {
    for (let name in obj) {
        if (obj[name] && typeof obj[name].init === "function") {
            obj[name].init(util);
        }
        vk[name] = obj[name];
    }
};
 
const install = Vue => {
    // 全局混入
    Vue.mixin(mixin);
    // #ifndef VUE3
    // 加载全局过滤器开始
    for (let i in filters) {
        Vue.filter(i, filters[i]);
    }
    Vue.prototype.vk = vk;
    Vue.prototype.$fn = vk.pubfn;
 
    // #endif
 
    // #ifdef VUE3
    // 将vk挂载到Vue实例
    Vue.config.globalProperties.vk = vk;
    Vue.config.globalProperties.$fn = vk.pubfn;
    // #endif
 
    // 将vk挂载到uni对象
    if (typeof uni == "object") uni.vk = vk;
    // 将vk挂载到全局
    let vkGlobalThis = vk.getGlobalObject();
    if (typeof vkGlobalThis == "object") vkGlobalThis.vk = vk;
    let util = { vk };
    // 加载插件
    vk.use({
        callFunctionUtil: vk.callFunctionUtil,
        openapi: vk.openapi
    }, util);
    initPermission(Vue);
}
 
export default {
    install
}