helper.ts 3.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112
  1. import { PageListController } from "@queenjs/controllers";
  2. import { queenApi } from "queenjs";
  3. import { ResourceModule } from ".";
  4. import { ComponentController } from "./controllers/ComponentController";
  5. export const helper = ResourceModule.helper({
  6. createFileName(fileName: string, dir: string) {
  7. const suffix = fileName.substring(fileName.lastIndexOf("."));
  8. if (/[\u4e00-\u9fa5]/.test(fileName) || fileName.length > 10) {
  9. fileName = `${this.controls.uploader.randomName(4)}${suffix}`;
  10. }
  11. return `${dir}/${Date.now()}_${this.controls.uploader.randomName(
  12. 6
  13. )}_${fileName}`;
  14. },
  15. createCompController() {
  16. const ctrl = new ComponentController();
  17. ctrl.ListCtrl = new PageListController(this.config?.httpConfig);
  18. ctrl.ListCtrl.setCrudPrefix("/frame");
  19. ctrl.createComp = this.actions.createComp;
  20. ctrl.onMenuClick = async (name, record) => {
  21. if (name == "delete") {
  22. await this.actions.deleteComp(record);
  23. ctrl.ListCtrl.fresh();
  24. } else if (name == "rename") {
  25. await this.actions.renameComp(record);
  26. }
  27. };
  28. return ctrl;
  29. },
  30. // createSourceController() {
  31. // const { controls, actions } = this;
  32. // const ctrl = new MaterialController();
  33. // ctrl.imageCtrl = controls.materialImageListCtrl;
  34. // ctrl.vidoeCtrl = controls.materialVideoListCtrl;
  35. // ctrl.taskCtrl = controls.renderTaskListCtrl;
  36. // ctrl.tplCtrl = controls.matTempListCtrl;
  37. // ctrl.onBtnClick = async function (name: string) {
  38. // if (name == "upload") {
  39. // const uploaded = await actions.uploadMaterial();
  40. // ctrl.switchTab(uploaded.fileType, false);
  41. // ctrl.getCurrControl().loadPage(1);
  42. // return;
  43. // }
  44. // ctrl.showDialog(name);
  45. // };
  46. // ctrl.onItemClick = function (name, record) {
  47. // if (name == "delete") return actions.deleteMaterial(record);
  48. // return actions.downloadMaterial(record);
  49. // };
  50. // return ctrl;
  51. // },
  52. async uploadResource(opts?: { accept?: string; multiple?: boolean }) {
  53. const result = [];
  54. const blobs = await queenApi.selectFile(opts);
  55. queenApi.showLoading("上传中……");
  56. for (const key in blobs) {
  57. const blob = blobs[key];
  58. const file = await this.controls.uploader.uploadFile(blob, "queenshow");
  59. const souceObj = {
  60. file,
  61. fileType: blob.type.split("/")[0],
  62. from: "upload",
  63. };
  64. result.push(souceObj);
  65. }
  66. queenApi.hideLoading();
  67. return result;
  68. },
  69. async uploadMaterials(opts?: { accept?: string; multiple?: boolean }) {
  70. const result: any = {
  71. successRow: [],
  72. failRow: [],
  73. };
  74. const blobs = await queenApi.selectFile(opts);
  75. queenApi.showLoading("上传中……");
  76. for (const key in blobs) {
  77. const blob = blobs[key];
  78. if (blob.type.indexOf("image") !== -1 && blob.size >= 10 * 1024 * 1024) {
  79. result.failRow.push(blob);
  80. } else if (
  81. blob.type.indexOf("video") !== -1 &&
  82. blob.size >= 200 * 1024 * 1024
  83. ) {
  84. result.failRow.push(blob);
  85. } else {
  86. const file = await this.controls.uploader.uploadFile(blob, "queenshow");
  87. const souceObj = {
  88. file,
  89. fileType: blob.type.split("/")[0],
  90. from: "upload",
  91. };
  92. result.successRow.push(souceObj);
  93. }
  94. }
  95. queenApi.hideLoading();
  96. return result;
  97. },
  98. });