chengsc
2025-04-14 d2588d8d1305171e7716055b23a6b5706e9cc04b
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
import { createApp } from 'vue';
import pinia from '/@/stores/index';
import App from '/@/App.vue';
import router from '/@/router';
import { directive } from '/@/directive/index';
import { i18n } from '/@/i18n/index';
import other from '/@/utils/other';
import ElementPlus from 'element-plus';
import '/@/theme/index.scss';
// 动画库
import 'animate.css';
// 栅格布局
import VueGridLayout from 'vue-grid-layout';
// 电子签名
import VueSignaturePad from 'vue-signature-pad';
// 组织架构图
import vue3TreeOrg from 'vue3-tree-org';
import 'vue3-tree-org/lib/vue3-tree-org.css';
// VForm3 表单设计
import VForm3 from 'vform3-builds';
import 'vform3-builds/dist/designer.style.css';
// 关闭自动打印
import { disAutoConnect } from 'vue-plugin-hiprint';
disAutoConnect();
 
const app = createApp(App);
 
directive(app);
other.elSvg(app);
 
// #region  FastCrud配置
import { FastCrud } from '@fast-crud/fast-crud';
import '@fast-crud/fast-crud/dist/style.css';
import ui from '@fast-crud/ui-element';
import { FsExtendsUploader, FsExtendsEditor } from '@fast-crud/fast-extends';
import '@fast-crud/fast-extends/dist/style.css';
app.use(ui);
app.use(FastCrud, {
    i18n,
    commonOptions() {
        return {
            request: {
                transformQuery: ({ page, form, sort }) => {
                    const order = sort == null ? {} : { orderProp: sort.prop, orderAsc: sort.asc };
                    return { page: page?.currentPage, pageSize: page?.pageSize, ...form, ...order };
                },
                // page请求结果转换
                transformRes: ({ res }) => {
                    const records = res.data.result.items;
                    const total = res.data.result.total;
                    const currentPage = res.data.result.page;
                    const pageSize = res.data.result.pageSize;
                    return {
                        currentPage: currentPage,
                        pageSize: pageSize,
                        total: total,
                        records,
                    };
                },
                form: {
                    display: 'flex', // 表单布局
                    labelWidth: '120px', // 表单label宽度
                },
            },
        };
    },
});
 
const baseURL = import.meta.env.VITE_API_URL;
import request from '/@/utils/request';
import { getToken } from '/@/utils/axios-utils';
// 文件上传
app.use(FsExtendsUploader, {
    defaultType: 'form',
    form: {
        action: baseURL + '/api/sysFile/uploadFile',
        name: 'file',
        withCredentials: false,
        uploadRequest: async (props) => {
            const { action, file, onProgress } = props;
            const data = new FormData();
            data.append('file', file);
            const token = getToken();
            const Authorization = token ? `Bearer ${token}` : null;
            const result = await request({
                url: action,
                method: 'post',
                data,
                headers: {
                    'Content-Type': 'multipart/form-data',
                    Authorization: Authorization,
                },
                timeout: 60000,
                onUploadProgress(progress) {
                    onProgress({ percent: Math.round((progress.loaded / progress.total!) * 100) });
                },
            });
            if (result) {
                return result.data;
            } else {
                throw new Error(result.message);
            }
        },
        async successHandle(ret: any) {
            return {
                url: baseURL + '/' + ret.result.filePath + '/' + ret.result.id + ret.result.suffix,
                key: ret.result.fileName,
            };
        },
    },
});
 
// 富文本编辑器
app.use(FsExtendsEditor, {
    wangEditor: {},
});
// #endregion
 
app.use(pinia).use(router).use(ElementPlus).use(i18n).use(VueGridLayout).use(VForm3).use(VueSignaturePad).use(vue3TreeOrg).mount('#app');