LibraryModal.tsx 3.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126
  1. import { BusController } from "@/controllers/natsController";
  2. import { TreeController } from "@/controllers/queentreeController";
  3. import "@/modules/_default/viewerStorage";
  4. import { useQueditor } from "@queenjs-modules/queditor";
  5. import {
  6. initQueentreeExplorer,
  7. NodeTypes,
  8. } from "@queenjs-modules/queentree-explorer";
  9. import PickNodeSteps from "@queenjs-modules/queentree-explorer/components/PickNodeSteps";
  10. import PickNodeStep from "@queenjs-modules/queentree-explorer/components/PickNodeSteps/PickNodeStep";
  11. import { StepController } from "@queenjs-modules/queentree-explorer/components/PickNodeSteps/StepController";
  12. import { Exception, useModal } from "queenjs";
  13. import { defineComponent } from "vue";
  14. import { array, string } from "vue-types";
  15. export default defineComponent({
  16. props: {
  17. nodeTypes: array<NodeTypes>().def(["packProd"]),
  18. apiName: string().isRequired,
  19. title:string().isRequired,
  20. },
  21. setup(props) {
  22. document.title = props.title || "queentree选择资源";
  23. const queditor = useQueditor();
  24. const stepCtrol = new StepController(1);
  25. // const modal = useModal();
  26. const _bus = new BusController();
  27. _bus.init(_bus.getQuery("bus"));
  28. const _tree = new TreeController(_bus);
  29. initQueentreeExplorer({
  30. config: {
  31. showNodeToolbar: true,
  32. nodeListColumns: 6,
  33. },
  34. });
  35. // 获取Pack中场景相关的资源
  36. function getRelatedSourceByScene(
  37. pack: any,
  38. sceneId: any
  39. ) {
  40. const packNew = {...pack};
  41. const scenes = packNew.scenes.filter((item:any)=>item.id==sceneId);
  42. packNew.scenes = scenes;
  43. return packNew;
  44. }
  45. async function submit() {
  46. try {
  47. const pickedNode = stepCtrol.state.data.pickNodes[0];
  48. const pack = await pickedNode.getAssetDetail();
  49. let ret;
  50. switch (pickedNode.nodeType) {
  51. case "matGroupItem":
  52. ret = pack.source.colorCards.find(
  53. (d: any) => d.id == pickedNode.state.id
  54. );
  55. break;
  56. case "packMat":
  57. ret = pack.source.mats.find(
  58. (d: any) => d.id == pickedNode.state.id
  59. );
  60. break;
  61. case "mat":
  62. ret = pack.source
  63. break;
  64. case "packProd":
  65. ret = queditor.helper.getRelatedSourceByProduct(
  66. pack.source as any,
  67. pickedNode.state.id
  68. );
  69. break;
  70. case "packItem":
  71. ret = getRelatedSourceByScene(
  72. pack.source as any,
  73. pickedNode.state.id
  74. );
  75. break;
  76. }
  77. console.log( props.apiName, ret);
  78. _tree.CloseTreeOpen(props.apiName, ret)
  79. return;
  80. } catch (error: any) {
  81. Exception.error(error?.toString());
  82. }
  83. _tree.CloseTreeOpen(props.apiName)
  84. }
  85. return () => {
  86. const { nodeTypes } = props;
  87. return (
  88. <PickNodeSteps
  89. onSubmit={submit}
  90. onCancel={() =>{
  91. console.log("cancel")
  92. _tree.CloseTreeOpen(props.apiName);
  93. }}
  94. control={stepCtrol}
  95. lastStepText="确定"
  96. steps={[
  97. {
  98. title: "选择",
  99. content: () => (
  100. <PickNodeStep
  101. control={stepCtrol}
  102. options={{
  103. nodeTypes: nodeTypes,
  104. }}
  105. />
  106. ),
  107. },
  108. ]}
  109. />
  110. );
  111. };
  112. },
  113. });