settings.ts 3.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125
  1. // 引入fast-crud
  2. import { FastCrud, useTypes } from '@fast-crud/fast-crud';
  3. const { getType } = useTypes();
  4. import '@fast-crud/fast-crud/dist/style.css';
  5. import { setLogger } from '@fast-crud/fast-crud';
  6. // element
  7. import ui from '@fast-crud/ui-element';
  8. import { request } from '/@/utils/service';
  9. //扩展包
  10. import { FsExtendsEditor,FsExtendsUploader } from '@fast-crud/fast-extends';
  11. import '@fast-crud/fast-extends/dist/style.css';
  12. import { successMessage, successNotification } from '/@/utils/message';
  13. export default {
  14. async install(app: any, options: any) {
  15. // 先安装ui
  16. app.use(ui);
  17. // 然后安装FastCrud
  18. app.use(FastCrud, {
  19. //i18n, //i18n配置,可选,默认使用中文,具体用法请看demo里的 src/i18n/index.js 文件
  20. // 此处配置公共的dictRequest(字典请求)
  21. async dictRequest({ dict }: any) {
  22. //根据dict的url,异步返回一个字典数组
  23. return await request({ url: dict.url, params: dict.params || {} }).then((res:any)=>{
  24. return res.data
  25. });
  26. },
  27. //公共crud配置
  28. commonOptions() {
  29. return {
  30. request: {
  31. //接口请求配置
  32. //你项目后台接口大概率与fast-crud所需要的返回结构不一致,所以需要配置此项
  33. //请参考文档http://fast-crud.docmirror.cn/api/crud-options/request.html
  34. transformQuery: ({ page, form, sort }: any) => {
  35. if (sort.asc !== undefined) {
  36. form['ordering'] = `${sort.asc ? '' : '-'}${sort.prop}`;
  37. }
  38. //转换为你pageRequest所需要的请求参数结构
  39. return { page: page.currentPage, limit: page.pageSize, ...form };
  40. },
  41. transformRes: ({ res }: any) => {
  42. //将pageRequest的返回数据,转换为fast-crud所需要的格式
  43. //return {records,currentPage,pageSize,total};
  44. return { records: res.data, currentPage: res.page, pageSize: res.limit, total: res.total };
  45. },
  46. },
  47. form: {
  48. afterSubmit(ctx: any) {
  49. // 增加crud提示
  50. if (ctx.res.code == 2000) {
  51. successNotification(ctx.res.msg);
  52. }
  53. },
  54. },
  55. toolbar: {
  56. buttons: {
  57. compact: {
  58. show: false
  59. }
  60. }
  61. },
  62. /* search: {
  63. layout: 'multi-line',
  64. collapse: true,
  65. col: {
  66. span: 4,
  67. },
  68. options: {
  69. labelCol: {
  70. style: {
  71. width: '100px',
  72. },
  73. },
  74. },
  75. }, */
  76. };
  77. },
  78. });
  79. //富文本
  80. app.use(FsExtendsEditor, {
  81. wangEditor: {
  82. width: 300,
  83. },
  84. });
  85. // 文件上传
  86. app.use(FsExtendsUploader, {
  87. defaultType: "form",
  88. form: {
  89. action: `/api/system/file/`,
  90. name: "file",
  91. withCredentials: false,
  92. uploadRequest: async ({ action, file, onProgress }) => {
  93. // @ts-ignore
  94. const data = new FormData();
  95. data.append("file", file);
  96. return await request({
  97. url: action,
  98. method: "post",
  99. timeout: 60000,
  100. headers: {
  101. "Content-Type": "multipart/form-data"
  102. },
  103. data,
  104. onUploadProgress: (p) => {
  105. onProgress({ percent: Math.round((p.loaded / p.total) * 100) });
  106. }
  107. });
  108. },
  109. successHandle(ret) {
  110. // 上传完成后的结果处理, 此处应返回格式为{url:xxx,key:xxx}
  111. return {
  112. url: getBaseURL() + ret.data.url,
  113. key: ret.data.id
  114. };
  115. }
  116. }
  117. })
  118. setLogger({ level: 'error' });
  119. // 设置自动染色
  120. const dictComponentList = ['dict-cascader', 'dict-checkbox', 'dict-radio', 'dict-select', 'dict-switch', 'dict-tree'];
  121. dictComponentList.forEach((val) => {
  122. getType(val).column.component.color = 'auto';
  123. });
  124. },
  125. };