Material.tsx 1.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263
  1. import { defineUI } from "queenjs";
  2. import Toolbar from "./MaterialToolbar"
  3. import { css, cx } from "@linaria/core";
  4. import { Button } from "ant-design-vue";
  5. import AssetsList from "@/components/AssetsList";
  6. import { any } from "vue-types";
  7. import MaterialItem from "./MaterialItem";
  8. import { onMounted } from "vue";
  9. import { MaterialController } from "@/modules/resource/controllers/MaterialController";
  10. export default defineUI({
  11. props: {
  12. Controller: any<MaterialController>().isRequired,
  13. },
  14. slots: {
  15. Toolbar,
  16. AssetsList,
  17. MaterialItem,
  18. },
  19. setup(props, { slots }) {
  20. onMounted(() => {
  21. props.Controller.getCurrControl().loadPage(1);
  22. });
  23. return ()=>{
  24. const state = props.Controller.state;
  25. const control = props.Controller.getCurrControl()
  26. return (<div class={rootStyles}>
  27. <h3 class="text-22px">我的素材</h3>
  28. <slots.Toolbar Controller={props.Controller} />
  29. <slots.AssetsList
  30. columns={6}
  31. class="mt-30px"
  32. control={control}
  33. item={(record: any) => (
  34. <slots.MaterialItem
  35. record={record}
  36. use={ state.currTab == "task" ? "task" : "show"}
  37. onDelete={() => props.Controller.onItemClick("delete", record)}
  38. onDownload={() =>props.Controller.onItemClick("download", record)}
  39. onPreview={() =>props.Controller.onItemClick("preview", record)}
  40. />
  41. )}
  42. />
  43. </div>);
  44. }
  45. },
  46. })
  47. const rootStyles = css`
  48. .btn_tab {
  49. padding: 3px 5px;
  50. &:hover,
  51. &.active {
  52. color: @inf-primary-color;
  53. }
  54. }
  55. `;