UNIVPLMDataIntegration/Web/src/main.ts
zuohuaijun 5295f1cd7a 😎代码优化
2024-08-10 03:54:29 +08:00

123 lines
3.4 KiB
TypeScript

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 'virtual:uno.css';
// 动画库
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';
// Vxe-Table
import { setupVXETable } from '/@/hooks/setupVXETableHook';
// 关闭自动打印
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(setupVXETable).use(i18n).use(VueGridLayout).use(VForm3).use(VueSignaturePad).use(vue3TreeOrg).mount('#app');