zhuguifei
2025-04-28 442928123f63ee497d766f9a7a14f0a6ee067e25
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
/**
 * 以服务的方式,将对文件的一些操作挂载到 Vue 上
 * @description 各个服务的参数传递查看服务封装对应目录下的 index.js 文件,里面注明了需要传递的参数
 * @author 小鲤鱼听听
 */
 
/**
 * 动态引入操作文件的弹窗组件
 */
const fileOperateDialog = require.context(
    '@views/document/components/dialog',
    true,
    /\.\/(.*)\/index.js$/
)
/**
 * 服务挂载到 Vue - $openDialog,各个服务的名称为其对应的文件夹的名称
 * @description 例如,创建文件夹功能:服务封装路径 '@views/document/components/dialog/addFolder' ,则如下:
 * 在 *.vue 文件中,使用 this.$openDialog.addFolder 调用创建文件夹服务
 * 在 *.js 文件中,需要先在文件顶部引入 Vue ,即 import Vue from 'vue' ,然后使用 Vue.property.$openDialog.addFolder 调用创建文件夹服务
 */
const openDialog = fileOperateDialog
    .keys()
    .map((key) => {
        return { [key.split('/')[1]]: fileOperateDialog(key).default }
    })
    .reduce((pre, next) => {
        return { ...pre, ...next }
    }, {})
 
/**
 * 动态添加操作文件的遮罩或浮层组件
 */
const fileOperateBox = require.context(
    '@views/document/components/box',
    true,
    /\.\/(.*)\/index.js$/
)
/**
 * 服务挂载到 Vue - $openBox,各个服务的名称为其对应的文件夹的名称
 * @description 例如,图片预览功能:服务封装路径 '@views/document/components/box/imgPreview' ,则如下:
 * 在 *.vue 文件中,使用 this.$openDialog.imgPreview 调用图片预览服务
 * 在 *.js 文件中,需要先在文件顶部引入 Vue ,即 import Vue from 'vue' ,然后使用 Vue.property.$openDialog.imgPreview 调用图片预览服务
 */
const openBox = fileOperateBox
    .keys()
    .map((key) => {
        return { [key.split('/')[1]]: fileOperateBox(key).default }
    })
    .reduce((pre, next) => {
        return { ...pre, ...next }
    }, {})
 
export default { openDialog, openBox }