controller.tsx 2.6 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980
  1. import SelectListItemModal from "./components/SelectListItemModal";
  2. import { MaterialController } from "../../../modules/resource/controllers/MaterialController";
  3. import PreviewModal from "../components/PreviewModal";
  4. import { queenApi } from "queenjs";
  5. export default function createController(resource:any, isSelectModel:boolean, selectType :string) {
  6. const {controls, actions} = resource;
  7. const showModal = async (type: string) => {
  8. const ctrl = resource.controls.matTempListCtrl;
  9. ctrl.state.query = type == "video" ? { hasVideo: true } : {}
  10. ctrl.loadPage(1);
  11. const record = await resource.showModal(<SelectListItemModal ListCtrl={ctrl} onPreview={(record) => {
  12. showPreviewModal({
  13. url:record.thumbnail,
  14. fileType:type == "video" ? "video":'image'
  15. })
  16. }} />, {
  17. title: `${type === "image" ? "图片" : "视频"}模板中心`,
  18. width: "1000px",
  19. });
  20. resource.actions.selectMaterial(record);
  21. };
  22. const showPreviewModal = (data: {
  23. url: string;
  24. fileType: "image" | "video";
  25. }) => {
  26. resource.showModal(<PreviewModal data={data} />, {
  27. title: "预览",
  28. width: "1000px",
  29. centered: true
  30. });
  31. };
  32. const ctrl = new MaterialController();
  33. ctrl.imageCtrl = controls.materialImageListCtrl;
  34. ctrl.vidoeCtrl = controls.materialVideoListCtrl;
  35. ctrl.taskCtrl = controls.renderTaskListCtrl;
  36. ctrl.state.isSelect = isSelectModel;
  37. if (selectType) ctrl.state.selectType = selectType;
  38. ctrl.onBtnClick = async function (name: string) {
  39. if (name == "upload") {
  40. const uploaded = await resource.actions.uploadMaterial();
  41. ctrl.switchTab(uploaded.fileType, false);
  42. if (uploaded && uploaded.file?.url) {
  43. if (ctrl.state.isSelect) {
  44. ctrl.onCloseDialog(uploaded.file?.url);
  45. return;
  46. }
  47. }
  48. ctrl.getCurrControl().loadPage(1);
  49. return;
  50. }
  51. queenApi.messageSuccess("功能开发中, 敬请期待!")
  52. //showModal(name);
  53. };
  54. ctrl.onItemClick = async function (name, record) {
  55. if (name == "delete") {
  56. await actions.deleteMaterial(record);
  57. this.getCurrControl().fresh();
  58. return;
  59. }
  60. else if (name == "preview") return showPreviewModal({
  61. url: record.file.url,
  62. fileType: record.fileType,
  63. });
  64. else if (name == "use") {
  65. console.log(name, record);
  66. ctrl.onCloseDialog(record.file.url);
  67. return;
  68. }
  69. return actions.downloadMaterial(record);
  70. };
  71. return ctrl
  72. }