main.ts 3.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109
  1. import { createApp } from 'vue';
  2. import pinia from '/@/stores/index';
  3. import App from '/@/App.vue';
  4. import router from '/@/router';
  5. import { directive } from '/@/directive/index';
  6. import { i18n } from '/@/i18n/index';
  7. import other from '/@/utils/other';
  8. import ElementPlus from 'element-plus';
  9. import '/@/theme/index.scss';
  10. import VueGridLayout from 'vue-grid-layout';
  11. import VForm3 from 'vform3-builds'; // VForm3表单设计
  12. import 'vform3-builds/dist/designer.style.css'; // VForm3表单设计样式
  13. import VueSignaturePad from 'vue-signature-pad'; // 电子签名
  14. import vue3TreeOrg from 'vue3-tree-org'; // 组织架构图
  15. import 'vue3-tree-org/lib/vue3-tree-org.css'; // 组织架构图样式
  16. import 'animate.css'; // 动画库
  17. import { disAutoConnect } from 'vue-plugin-hiprint';
  18. disAutoConnect();
  19. const app = createApp(App);
  20. directive(app);
  21. other.elSvg(app);
  22. //#region FastCrud配置
  23. import { FastCrud } from "@fast-crud/fast-crud";
  24. import "@fast-crud/fast-crud/dist/style.css";
  25. import ui from "@fast-crud/ui-element";
  26. import { FsExtendsUploader, FsExtendsEditor } from "@fast-crud/fast-extends";
  27. import "@fast-crud/fast-extends/dist/style.css";
  28. import { getToken } from '/@/utils/axios-utils';
  29. app.use(ui);
  30. app.use(FastCrud, {
  31. i18n,
  32. commonOptions() {
  33. return {
  34. request: {
  35. transformQuery: ({ page, form, sort }) => {
  36. const order = sort == null ? {} : { orderProp: sort.prop, orderAsc: sort.asc }
  37. return { page: page.currentPage, pageSize: page.pageSize, ...form, ...order };
  38. },
  39. // page请求结果转换
  40. transformRes: ({ res }) => {
  41. const records = res.data.result.items;
  42. const total = res.data.result.total;
  43. const currentPage = res.data.result.page;
  44. const pageSize = res.data.result.pageSize;
  45. return {
  46. currentPage: currentPage, pageSize: pageSize, total: total, records
  47. }
  48. },
  49. form: {
  50. display: 'flex', // 表单布局
  51. labelWidth: '120px' // 表单label宽度
  52. }
  53. },
  54. };
  55. },
  56. });
  57. const baseURL = import.meta.env.VITE_API_URL;
  58. import request from '/@/utils/request';
  59. //文件上传
  60. app.use(FsExtendsUploader, {
  61. defaultType: 'form',
  62. form: {
  63. action: baseURL + '/api/sysFile/uploadFile',
  64. name: 'file',
  65. withCredentials: false,
  66. uploadRequest: async props => {
  67. const { action, file, onProgress } = props;
  68. const data = new FormData();
  69. data.append('file', file);
  70. const token = getToken();
  71. const Authorization = token ? `Bearer ${token}` : null;
  72. const result = await request({
  73. url: action,
  74. method: 'post',
  75. data,
  76. headers: {
  77. 'Content-Type': 'multipart/form-data',
  78. "Authorization": Authorization
  79. },
  80. timeout: 60000,
  81. onUploadProgress(progress) {
  82. onProgress({ percent: Math.round((progress.loaded / progress.total!) * 100) });
  83. }
  84. });
  85. if (result) {
  86. return result.data
  87. } else {
  88. throw new Error(result.message);
  89. }
  90. },
  91. async successHandle(ret: any) {
  92. return {
  93. url: baseURL + "/" + ret.result.filePath + "/" + ret.result.id + ret.result.suffix,
  94. key: ret.result.fileName
  95. };
  96. }
  97. }
  98. });
  99. //富文本编辑器
  100. app.use(FsExtendsEditor, {
  101. wangEditor: {}
  102. });
  103. //#endregion
  104. app.use(pinia).use(router).use(ElementPlus).use(i18n).use(VueGridLayout).use(VForm3).use(VueSignaturePad).use(vue3TreeOrg).mount('#app');