Browse Source

Merge branch 'dev' of http://124.70.149.18:10880/lianghj/queenshow into dev

bianjiang 1 year ago
parent
commit
fa65460b56
39 changed files with 226 additions and 125 deletions
  1. 1 1
      package.json
  2. 3 0
      src/assets/icons/components/IconCube.tsx
  3. 3 0
      src/assets/icons/components/IconGroup.tsx
  4. 3 0
      src/assets/icons/components/IconImage.tsx
  5. 3 0
      src/assets/icons/components/IconLocked.tsx
  6. 3 0
      src/assets/icons/components/IconText.tsx
  7. 3 0
      src/assets/icons/components/IconVideo.tsx
  8. 6 0
      src/assets/icons/index.ts
  9. 1 0
      src/assets/icons/svg/cube.svg
  10. 1 0
      src/assets/icons/svg/group.svg
  11. 1 0
      src/assets/icons/svg/image.svg
  12. 1 0
      src/assets/icons/svg/locked.svg
  13. 1 0
      src/assets/icons/svg/text.svg
  14. 1 0
      src/assets/icons/svg/video.svg
  15. 4 1
      src/hooks/initAuthDef.ts
  16. 1 0
      src/modules/editor/assets/icons/cube.svg
  17. 1 0
      src/modules/editor/assets/icons/group.svg
  18. 1 0
      src/modules/editor/assets/icons/image.svg
  19. 1 0
      src/modules/editor/assets/icons/text2.svg
  20. 1 0
      src/modules/editor/assets/icons/video2.svg
  21. 1 1
      src/modules/editor/components/CompUI/basicUI/Container/index.ts
  22. 4 1
      src/modules/editor/components/CompUI/basicUI/Image2/component.tsx
  23. 1 1
      src/modules/editor/components/CompUI/basicUI/Image2/index.ts
  24. 1 1
      src/modules/editor/components/CompUI/basicUI/Page/component.tsx
  25. 1 1
      src/modules/editor/components/CompUI/basicUI/Text/index.ts
  26. 1 1
      src/modules/editor/components/CompUI/basicUI/Video/index.ts
  27. 1 1
      src/modules/editor/components/CompUI/basicUI/Web3D/index.ts
  28. 15 16
      src/modules/editor/components/Preview/index.tsx
  29. 1 5
      src/modules/editor/components/Viewport/Slider/SliderLeft/index.tsx
  30. 2 2
      src/modules/launcher/index.ts
  31. 1 0
      src/modules/launcher/objects/Apis/index.ts
  32. 5 5
      src/modules/launcher/objects/Apis/queentree.ts
  33. 5 6
      src/modules/resource/actions/material.ts
  34. 1 1
      src/modules/resource/components/ResourceManager/Toolbar.tsx
  35. 35 3
      src/modules/resource/helper.ts
  36. 6 1
      src/pages/share/Promotion/index.tsx
  37. 21 12
      src/pages/website/Material2/components/Material.tsx
  38. 80 61
      src/pages/website/Material2/controller.tsx
  39. 4 4
      yarn.lock

+ 1 - 1
package.json

@@ -31,7 +31,7 @@
     "@queenjs-modules/queentree": "^0.0.10",
     "@queenjs-modules/queentree-explorer": "^0.0.6",
     "@queenjs-modules/queentree-explorer-viewer": "^0.0.3",
-    "@queenjs/components": "^0.0.19",
+    "@queenjs/components": "^0.0.20",
     "@queenjs/controllers": "^0.0.6",
     "@queenjs/icons": "^0.0.20",
     "@queenjs/theme": "^0.0.8",

+ 3 - 0
src/assets/icons/components/IconCube.tsx

@@ -0,0 +1,3 @@
+
+import { createIcon } from '@queenjs/icons';
+export const IconCube = createIcon(<svg viewBox="0 0 16 16"><g transform="translate(-1638 -912)"><rect fill="none" opacity="0.128" width="16" height="16" transform="translate(1638 912)"/><g transform="translate(-33.699 -8.514)"><path fill="none" stroke="#a9abaf" stroke-linejoin="round" d="M15.7,12l5.7,3.257v6.514l-5.7,3.257L10,21.771V15.257Z" transform="translate(1664 910)"/><path fill="none" stroke="#a9abaf" stroke-linejoin="round" stroke-linecap="round" d="M10,20l5.7,3.257L21.4,20" transform="translate(1664 905.257)"/><path fill="none" stroke="#a9abaf" stroke-linejoin="round" stroke-linecap="round" d="M24,28v6.514" transform="translate(1655.7 900.514)"/><path fill="none" stroke="#a9abaf" stroke-linejoin="round" d="M18.55,16l2.85,1.628v3.257M12.85,16,10,17.628v3.257m2.85,4.885L15.7,27.4l2.85-1.628" transform="translate(1664 907.628)"/></g></g></svg>)

+ 3 - 0
src/assets/icons/components/IconGroup.tsx

@@ -0,0 +1,3 @@
+
+import { createIcon } from '@queenjs/icons';
+export const IconGroup = createIcon(<svg viewBox="0 0 16 16"><g transform="translate(-292 -40)"><rect fill="none" opacity="0.128" width="16" height="16" transform="translate(292 40)"/><g transform="translate(288 35.707)"><rect fill="none" stroke="#a9abaf" stroke-linecap="round" stroke-linejoin="round" width="12" height="12" rx="1" transform="translate(6 6.293)"/></g><g transform="translate(291.156 38.863)"><rect fill="none" stroke="#a9abaf" stroke-linecap="round" stroke-linejoin="round" width="6" height="6" rx="1" transform="translate(5.844 6.137)"/></g></g></svg>)

+ 3 - 0
src/assets/icons/components/IconImage.tsx

@@ -0,0 +1,3 @@
+
+import { createIcon } from '@queenjs/icons';
+export const IconImage = createIcon(<svg viewBox="0 0 16 16"><g transform="translate(0 0.302)"><g transform="translate(1.771 1.772)"><path fill="none" stroke="#a9abaf" stroke-linecap="round" stroke-linejoin="round" d="M17.141,6H7.013A1.013,1.013,0,0,0,6,7.013V17.141a1.013,1.013,0,0,0,1.013,1.013H17.141a1.013,1.013,0,0,0,1.013-1.013V7.013A1.013,1.013,0,0,0,17.141,6Z" transform="translate(-6 -6)"/><path fill="none" stroke="#a9abaf" stroke-linecap="round" stroke-linejoin="round" d="M14.688,16.376A1.688,1.688,0,1,0,13,14.688,1.688,1.688,0,0,0,14.688,16.376Z" transform="translate(-10.637 -10.637)"/><path fill="none" stroke="#a9abaf" stroke-linecap="round" stroke-linejoin="round" d="M18.154,29.376,14.44,26l-3.376,3.039L8.7,27.013,6,29.039" transform="translate(-6 -19.248)"/></g><rect fill="none" opacity="0.2" width="16" height="16" transform="translate(0 -0.302)"/></g></svg>)

+ 3 - 0
src/assets/icons/components/IconLocked.tsx

@@ -0,0 +1,3 @@
+
+import { createIcon } from '@queenjs/icons';
+export const IconLocked = createIcon(<svg viewBox="0 0 14 14"><rect fill="none" width="14" height="14"/><g transform="translate(2.471 2.111)"><rect fill="none" stroke="#a9abaf" stroke-linejoin="round" width="9.327" height="6.218" rx="2" transform="translate(0 3.73)"/><path fill="none" stroke="#a9abaf" stroke-linejoin="round" stroke-linecap="round" d="M14,7.73V6.636A2.636,2.636,0,0,1,16.636,4a2.742,2.742,0,0,1,2.209,1.2,2.434,2.434,0,0,1,.426,1.438V7.73" transform="translate(-11.864 -4)"/><path fill="none" stroke="#a9abaf" stroke-linejoin="round" stroke-linecap="round" d="M24,30v1.582" transform="translate(-19.228 -23.803)"/></g></svg>)

+ 3 - 0
src/assets/icons/components/IconText.tsx

@@ -0,0 +1,3 @@
+
+import { createIcon } from '@queenjs/icons';
+export const IconText = createIcon(<svg viewBox="0 0 16 16"><g transform="translate(0 -0.078)"><rect fill="none" opacity="0.2" width="16" height="16" transform="translate(0 0.078)"/><g transform="translate(1.892 1.971)"><rect fill="none" stroke="#a9abaf" stroke-linejoin="round" width="12" height="12" rx="1" transform="translate(0.107 0.107)"/><g transform="translate(2.764 2.367)"><path fill="none" stroke="#a9abaf" stroke-linejoin="round" stroke-linecap="round" d="M16,17.192V16h6.36v1.192" transform="translate(-16 -16)"/><path fill="none" stroke="#a9abaf" stroke-linejoin="round" stroke-linecap="round" d="M22,34h1.59" transform="translate(-19.615 -26.845)"/><path fill="none" stroke="#a9abaf" stroke-linejoin="round" stroke-linecap="round" d="M24,18v6.36" transform="translate(-20.821 -17.205)"/></g></g></g></svg>)

+ 3 - 0
src/assets/icons/components/IconVideo.tsx

@@ -0,0 +1,3 @@
+
+import { createIcon } from '@queenjs/icons';
+export const IconVideo = createIcon(<svg viewBox="0 0 16 16"><g transform="translate(-292 -40)"><rect fill="none" opacity="0.128" width="16" height="16" transform="translate(292 40)"/><g transform="translate(288 35.707)"><rect fill="none" stroke="#a9abaf" stroke-linejoin="round" stroke-linecap="round" width="12" height="12" rx="1" transform="translate(6 6.293)"/><path fill="none" stroke="#a9abaf" stroke-linejoin="round" d="M18.5,18.845V16.206l2.285,1.319,2.285,1.319-2.285,1.319L18.5,21.484Z" transform="translate(-8.268 -6.75)"/></g></g></svg>)

+ 6 - 0
src/assets/icons/index.ts

@@ -5,13 +5,19 @@ export * from "./components/IconAlignC";
 export * from "./components/IconAlignL";
 export * from "./components/IconAlignR";
 export * from "./components/IconClear";
+export * from "./components/IconCube";
 export * from "./components/IconFloatOff";
 export * from "./components/IconFloatOn";
+export * from "./components/IconGroup";
+export * from "./components/IconImage";
 export * from "./components/IconLayerDown";
 export * from "./components/IconLayerUp";
+export * from "./components/IconLocked";
 export * from "./components/IconMove";
 export * from "./components/IconMusic";
 export * from "./components/IconQueen";
 export * from "./components/IconResizeY";
 export * from "./components/IconRotate";
+export * from "./components/IconText";
+export * from "./components/IconVideo";
 export * from "./components/IconWechat";

+ 1 - 0
src/assets/icons/svg/cube.svg

@@ -0,0 +1 @@
+<svg viewBox="0 0 16 16"><g transform="translate(-1638 -912)"><rect fill="none" opacity="0.128" width="16" height="16" transform="translate(1638 912)"/><g transform="translate(-33.699 -8.514)"><path fill="none" stroke="#a9abaf" stroke-linejoin="round" d="M15.7,12l5.7,3.257v6.514l-5.7,3.257L10,21.771V15.257Z" transform="translate(1664 910)"/><path fill="none" stroke="#a9abaf" stroke-linejoin="round" stroke-linecap="round" d="M10,20l5.7,3.257L21.4,20" transform="translate(1664 905.257)"/><path fill="none" stroke="#a9abaf" stroke-linejoin="round" stroke-linecap="round" d="M24,28v6.514" transform="translate(1655.7 900.514)"/><path fill="none" stroke="#a9abaf" stroke-linejoin="round" d="M18.55,16l2.85,1.628v3.257M12.85,16,10,17.628v3.257m2.85,4.885L15.7,27.4l2.85-1.628" transform="translate(1664 907.628)"/></g></g></svg>

+ 1 - 0
src/assets/icons/svg/group.svg

@@ -0,0 +1 @@
+<svg viewBox="0 0 16 16"><g transform="translate(-292 -40)"><rect fill="none" opacity="0.128" width="16" height="16" transform="translate(292 40)"/><g transform="translate(288 35.707)"><rect fill="none" stroke="#a9abaf" stroke-linecap="round" stroke-linejoin="round" width="12" height="12" rx="1" transform="translate(6 6.293)"/></g><g transform="translate(291.156 38.863)"><rect fill="none" stroke="#a9abaf" stroke-linecap="round" stroke-linejoin="round" width="6" height="6" rx="1" transform="translate(5.844 6.137)"/></g></g></svg>

+ 1 - 0
src/assets/icons/svg/image.svg

@@ -0,0 +1 @@
+<svg viewBox="0 0 16 16"><g transform="translate(0 0.302)"><g transform="translate(1.771 1.772)"><path fill="none" stroke="#a9abaf" stroke-linecap="round" stroke-linejoin="round" d="M17.141,6H7.013A1.013,1.013,0,0,0,6,7.013V17.141a1.013,1.013,0,0,0,1.013,1.013H17.141a1.013,1.013,0,0,0,1.013-1.013V7.013A1.013,1.013,0,0,0,17.141,6Z" transform="translate(-6 -6)"/><path fill="none" stroke="#a9abaf" stroke-linecap="round" stroke-linejoin="round" d="M14.688,16.376A1.688,1.688,0,1,0,13,14.688,1.688,1.688,0,0,0,14.688,16.376Z" transform="translate(-10.637 -10.637)"/><path fill="none" stroke="#a9abaf" stroke-linecap="round" stroke-linejoin="round" d="M18.154,29.376,14.44,26l-3.376,3.039L8.7,27.013,6,29.039" transform="translate(-6 -19.248)"/></g><rect fill="none" opacity="0.2" width="16" height="16" transform="translate(0 -0.302)"/></g></svg>

+ 1 - 0
src/assets/icons/svg/locked.svg

@@ -0,0 +1 @@
+<svg viewBox="0 0 14 14"><rect fill="none" width="14" height="14"/><g transform="translate(2.471 2.111)"><rect fill="none" stroke="#a9abaf" stroke-linejoin="round" width="9.327" height="6.218" rx="2" transform="translate(0 3.73)"/><path fill="none" stroke="#a9abaf" stroke-linejoin="round" stroke-linecap="round" d="M14,7.73V6.636A2.636,2.636,0,0,1,16.636,4a2.742,2.742,0,0,1,2.209,1.2,2.434,2.434,0,0,1,.426,1.438V7.73" transform="translate(-11.864 -4)"/><path fill="none" stroke="#a9abaf" stroke-linejoin="round" stroke-linecap="round" d="M24,30v1.582" transform="translate(-19.228 -23.803)"/></g></svg>

+ 1 - 0
src/assets/icons/svg/text.svg

@@ -0,0 +1 @@
+<svg viewBox="0 0 16 16"><g transform="translate(0 -0.078)"><rect fill="none" opacity="0.2" width="16" height="16" transform="translate(0 0.078)"/><g transform="translate(1.892 1.971)"><rect fill="none" stroke="#a9abaf" stroke-linejoin="round" width="12" height="12" rx="1" transform="translate(0.107 0.107)"/><g transform="translate(2.764 2.367)"><path fill="none" stroke="#a9abaf" stroke-linejoin="round" stroke-linecap="round" d="M16,17.192V16h6.36v1.192" transform="translate(-16 -16)"/><path fill="none" stroke="#a9abaf" stroke-linejoin="round" stroke-linecap="round" d="M22,34h1.59" transform="translate(-19.615 -26.845)"/><path fill="none" stroke="#a9abaf" stroke-linejoin="round" stroke-linecap="round" d="M24,18v6.36" transform="translate(-20.821 -17.205)"/></g></g></g></svg>

+ 1 - 0
src/assets/icons/svg/video.svg

@@ -0,0 +1 @@
+<svg viewBox="0 0 16 16"><g transform="translate(-292 -40)"><rect fill="none" opacity="0.128" width="16" height="16" transform="translate(292 40)"/><g transform="translate(288 35.707)"><rect fill="none" stroke="#a9abaf" stroke-linejoin="round" stroke-linecap="round" width="12" height="12" rx="1" transform="translate(6 6.293)"/><path fill="none" stroke="#a9abaf" stroke-linejoin="round" d="M18.5,18.845V16.206l2.285,1.319,2.285,1.319-2.285,1.319L18.5,21.484Z" transform="translate(-8.268 -6.75)"/></g></g></svg>

+ 4 - 1
src/hooks/initAuthDef.ts

@@ -7,7 +7,7 @@ export function initAuthDef() {
       httpConfig: {
         baseURL: Dict_Apis.auth,
       },
-      key: "queentreesku3d",
+      key: "queenshow",
       loginPath: "/login",
       loginJumpPath: "/",
       logoutJumpPath: "/login",
@@ -15,6 +15,9 @@ export function initAuthDef() {
       needCompanyLogin: false,
       needRegister: true,
       needResetPwd: true,
+      regInfo: {
+        key: "queenshow"
+      }
     },
   });
   auth.actions.initUser();

+ 1 - 0
src/modules/editor/assets/icons/cube.svg

@@ -0,0 +1 @@
+<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 16 16"><g transform="translate(-1638 -912)"><rect fill="none" opacity="0.128" width="16" height="16" transform="translate(1638 912)"/><g transform="translate(-33.699 -8.514)"><path fill="none" stroke="#a9abaf" stroke-linejoin="round" d="M15.7,12l5.7,3.257v6.514l-5.7,3.257L10,21.771V15.257Z" transform="translate(1664 910)"/><path fill="none" stroke="#a9abaf" stroke-linejoin="round" stroke-linecap="round" d="M10,20l5.7,3.257L21.4,20" transform="translate(1664 905.257)"/><path fill="none" stroke="#a9abaf" stroke-linejoin="round" stroke-linecap="round" d="M24,28v6.514" transform="translate(1655.7 900.514)"/><path fill="none" stroke="#a9abaf" stroke-linejoin="round" d="M18.55,16l2.85,1.628v3.257M12.85,16,10,17.628v3.257m2.85,4.885L15.7,27.4l2.85-1.628" transform="translate(1664 907.628)"/></g></g></svg>

+ 1 - 0
src/modules/editor/assets/icons/group.svg

@@ -0,0 +1 @@
+<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 16 16"><g transform="translate(-292 -40)"><rect fill="none" opacity="0.128" width="16" height="16" transform="translate(292 40)"/><g transform="translate(288 35.707)"><rect fill="none" stroke="#a9abaf" stroke-linecap="round" stroke-linejoin="round" width="12" height="12" rx="1" transform="translate(6 6.293)"/></g><g transform="translate(291.156 38.863)"><rect fill="none" stroke="#a9abaf" stroke-linecap="round" stroke-linejoin="round" width="6" height="6" rx="1" transform="translate(5.844 6.137)"/></g></g></svg>

+ 1 - 0
src/modules/editor/assets/icons/image.svg

@@ -0,0 +1 @@
+<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 16 16"><g transform="translate(0 0.302)"><g transform="translate(1.771 1.772)"><path fill="none" stroke="#a9abaf" stroke-linecap="round" stroke-linejoin="round" d="M17.141,6H7.013A1.013,1.013,0,0,0,6,7.013V17.141a1.013,1.013,0,0,0,1.013,1.013H17.141a1.013,1.013,0,0,0,1.013-1.013V7.013A1.013,1.013,0,0,0,17.141,6Z" transform="translate(-6 -6)"/><path fill="none" stroke="#a9abaf" stroke-linecap="round" stroke-linejoin="round" d="M14.688,16.376A1.688,1.688,0,1,0,13,14.688,1.688,1.688,0,0,0,14.688,16.376Z" transform="translate(-10.637 -10.637)"/><path fill="none" stroke="#a9abaf" stroke-linecap="round" stroke-linejoin="round" d="M18.154,29.376,14.44,26l-3.376,3.039L8.7,27.013,6,29.039" transform="translate(-6 -19.248)"/></g><rect fill="none" opacity="0.2" width="16" height="16" transform="translate(0 -0.302)"/></g></svg>

+ 1 - 0
src/modules/editor/assets/icons/text2.svg

@@ -0,0 +1 @@
+<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 16 16"><g transform="translate(0 -0.078)"><rect fill="none" opacity="0.2" width="16" height="16" transform="translate(0 0.078)"/><g transform="translate(1.892 1.971)"><rect fill="none" stroke="#a9abaf" stroke-linejoin="round" width="12" height="12" rx="1" transform="translate(0.107 0.107)"/><g transform="translate(2.764 2.367)"><path fill="none" stroke="#a9abaf" stroke-linejoin="round" stroke-linecap="round" d="M16,17.192V16h6.36v1.192" transform="translate(-16 -16)"/><path fill="none" stroke="#a9abaf" stroke-linejoin="round" stroke-linecap="round" d="M22,34h1.59" transform="translate(-19.615 -26.845)"/><path fill="none" stroke="#a9abaf" stroke-linejoin="round" stroke-linecap="round" d="M24,18v6.36" transform="translate(-20.821 -17.205)"/></g></g></g></svg>

+ 1 - 0
src/modules/editor/assets/icons/video2.svg

@@ -0,0 +1 @@
+<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 16 16"><g transform="translate(-292 -40)"><rect fill="none" opacity="0.128" width="16" height="16" transform="translate(292 40)"/><g transform="translate(288 35.707)"><rect fill="none" stroke="#a9abaf" stroke-linejoin="round" stroke-linecap="round" width="12" height="12" rx="1" transform="translate(6 6.293)"/><path fill="none" stroke="#a9abaf" stroke-linejoin="round" d="M18.5,18.845V16.206l2.285,1.319,2.285,1.319-2.285,1.319L18.5,21.484Z" transform="translate(-8.268 -6.75)"/></g></g></svg>

+ 1 - 1
src/modules/editor/components/CompUI/basicUI/Container/index.ts

@@ -5,7 +5,7 @@ export { Component } from "./component";
 
 export const options = {
   name: "图层",
-  thumbnail: require("@/modules/editor/assets/icons/container.svg"),
+  thumbnail: require("@/modules/editor/assets/icons/group.svg"),
 };
 
 export const { createComp, useCompData } = createCompHooks({

+ 4 - 1
src/modules/editor/components/CompUI/basicUI/Image2/component.tsx

@@ -20,7 +20,10 @@ export const Component = defineComponent({
       temImg.src = url;
 
       temImg.onload = function () {
-        comp.setH(comp.getW() / (temImg.width / temImg.height));
+        const ratio = temImg.width / temImg.height;
+        const W = temImg.width > comp.getW() ? comp.getW() : temImg.width;
+        comp.setW(W);
+        comp.setH(W / ratio);
         actions.onCompLayoutUpdated(comp);
         helper.extendStreamCard(store.currStreamCardId);
       };

+ 1 - 1
src/modules/editor/components/CompUI/basicUI/Image2/index.ts

@@ -6,7 +6,7 @@ export { Component } from "./component";
 
 export const options = {
   name: "图片",
-  thumbnail: require("@/modules/editor/assets/icons/picture.svg"),
+  thumbnail: require("@/modules/editor/assets/icons/image.svg"),
 };
 
 export const { createComp, useCompData } = createCompHooks({

+ 1 - 1
src/modules/editor/components/CompUI/basicUI/Page/component.tsx

@@ -19,7 +19,7 @@ export const Component = defineComponent({
     return () => (
       <div
         ref={compRef}
-        style={helper.createStyle(layout)}
+        style={helper.createStyle(layout || { size: [750] })}
         class={["!h-auto", editor.store.isEditMode ? pageEditStyle : ""]}
       >
         <div class="relative">

+ 1 - 1
src/modules/editor/components/CompUI/basicUI/Text/index.ts

@@ -6,7 +6,7 @@ export { Component } from "./component";
 
 export const options = {
   name: "文本",
-  thumbnail: require("@/modules/editor/assets/icons/text.svg"),
+  thumbnail: require("@/modules/editor/assets/icons/text2.svg"),
 };
 
 export const { createComp, useCompData } = createCompHooks({

+ 1 - 1
src/modules/editor/components/CompUI/basicUI/Video/index.ts

@@ -6,7 +6,7 @@ export { Component } from "./component";
 
 export const options = {
   name: "视频",
-  thumbnail: require("@/modules/editor/assets/icons/video.svg"),
+  thumbnail: require("@/modules/editor/assets/icons/video2.svg"),
 };
 
 export const { createComp, useCompData } = createCompHooks({

+ 1 - 1
src/modules/editor/components/CompUI/basicUI/Web3D/index.ts

@@ -7,7 +7,7 @@ export { Component } from "./component";
 
 export const options = {
   name: "3D",
-  thumbnail: require("@/modules/editor/assets/icons/3d.svg"),
+  thumbnail: require("@/modules/editor/assets/icons/cube.svg"),
 };
 
 export const { createComp, useCompData } = createCompHooks({

+ 15 - 16
src/modules/editor/components/Preview/index.tsx

@@ -1,27 +1,26 @@
 import { defineComponent } from "vue";
 import { useEditor } from "../..";
+import { DesignComp } from "../../objects/DesignTemp/DesignComp";
 import { CompUI } from "../CompUI";
-import { useCompRef } from "../CompUI/basicUI/hooks";
 
 export default defineComponent({
   setup() {
     const { store, helper } = useEditor();
-    const rootRef = useCompRef("root");
-
     return () => {
-      <div
-        ref={rootRef}
-        class="overflow-hidden !h-auto"
-        style={helper.createStyle(
-          helper.findRootComp()?.layout || { size: [750] }
-        )}
-      >
-        {store.pageCompIds.map((id) => {
-          const compKey = store.designData.compMap[id]?.compKey;
-          const Comp: any = (CompUI[compKey] || CompUI.Container).Component;
-          return Comp && <Comp key={id} compId={id} />;
-        })}
-      </div>;
+      const pageComp = helper.findRootComp();
+      if (!pageComp) return;
+      return (
+        <CompUI.Page.Component class="overflow-hidden" compId={pageComp.id}>
+          {{
+            Container: (children: any) => children,
+            CompItem(comp: DesignComp) {
+              const compKey = store.designData.compMap[comp.id]?.compKey;
+              const Comp: any = (CompUI[compKey] || CompUI.Container).Component;
+              return Comp && <Comp key={comp.id} compId={comp.id} />;
+            },
+          }}
+        </CompUI.Page.Component>
+      );
     };
   },
 });

+ 1 - 5
src/modules/editor/components/Viewport/Slider/SliderLeft/index.tsx

@@ -21,11 +21,7 @@ export default defineUI({
     const state = useReactive(() => ({
       currTabType: "senior",
       basicComps() {
-        return Array.from(compUICtrl.state.components.values()).filter(
-          (item) =>
-            item.compType === "basic" &&
-            !["Page", "Container", "Group"].includes(item.compKey)
-        );
+        return ["Text", "Image", "Video", "Web3D"].map(key => compUICtrl.state.components.get(key) as any);
       },
       currComps() {
         return Array.from(compUICtrl.state.components.values()).filter(

+ 2 - 2
src/modules/launcher/index.ts

@@ -4,7 +4,7 @@ import { components } from "./components";
 import { stores } from "./stores";
 import { BusController } from "@/controllers/natsController";
 import { IAppKeys } from "./objects/Application/types";
-import { queentreeApi } from "./apis/queentree";
+import { QueentreeApi } from "./objects/Apis";
 
 export class LauncherModule extends ModuleRoot {
   config = this.setConfig({
@@ -15,7 +15,7 @@ export class LauncherModule extends ModuleRoot {
   store = this.createStore(stores);
   actions = this.createActions(actions);
 
-  queentreeApi = this.use(queentreeApi);
+  queentreeApi = new QueentreeApi(this);
 
   controls = {
     natsCtrl: new BusController(),

+ 1 - 0
src/modules/launcher/objects/Apis/index.ts

@@ -0,0 +1 @@
+export * from "./queentree";

+ 5 - 5
src/modules/launcher/apis/queentree.ts → src/modules/launcher/objects/Apis/queentree.ts

@@ -1,8 +1,8 @@
-import { LauncherModule } from "..";
+import { ModuleControl } from "queenjs";
+import { LauncherModule } from "../..";
 
-export const queentreeApi = LauncherModule.define({
+export class QueentreeApi extends ModuleControl<LauncherModule> {
   async selectOneAsset(assetType: string) {
-    
     const { waitChanell } = await this.controls.natsCtrl.requestApi(
       "tree.selector.iframe.packcomp"
     );
@@ -14,5 +14,5 @@ export const queentreeApi = LauncherModule.define({
 
     //openIframe
     //wait iframe result
-  },
-});
+  }
+}

+ 5 - 6
src/modules/resource/actions/material.ts

@@ -2,15 +2,14 @@ import { queenApi } from "queenjs";
 import { ResourceModule } from "..";
 
 export const materialActions = ResourceModule.action({
-  async uploadMaterial() {
-    const files = await this.helper.uploadResource({
+  async createMaterial() {
+    const { successRow, failRow } = await this.helper.uploadMaterials({
       accept: "image/*, video/mp4",
       multiple: true,
     });
 
-    let souceObj = files[0];
-    for (const key in files) {
-      souceObj = files[key];
+    for (const key in successRow) {
+      const souceObj = successRow[key];
       await this.https.createResource(souceObj);
     }
 
@@ -18,7 +17,7 @@ export const materialActions = ResourceModule.action({
       fileType: this.store.type,
     };
     this.controls.materialListCtrl.loadPage(1);
-    return souceObj;
+    return { successRow, failRow };
   },
 
   async deleteMaterial(record) {

+ 1 - 1
src/modules/resource/components/ResourceManager/Toolbar.tsx

@@ -48,7 +48,7 @@ export default defineComponent({
             <Button
               ghost
               type="primary"
-              onClick={resource.actions.uploadMaterial}
+              onClick={resource.actions.createMaterial}
             >
               上传素材
             </Button>

+ 35 - 3
src/modules/resource/helper.ts

@@ -1,8 +1,7 @@
 import { PageListController } from "@queenjs/controllers";
+import { queenApi } from "queenjs";
 import { ResourceModule } from ".";
 import { ComponentController } from "./controllers/ComponentController";
-import { MaterialController } from "./controllers/MaterialController";
-import { queenApi } from "queenjs";
 
 export const helper = ResourceModule.helper({
   createFileName(fileName: string, dir: string) {
@@ -73,7 +72,40 @@ export const helper = ResourceModule.helper({
       };
       result.push(souceObj);
     }
-    
+
+    queenApi.hideLoading();
+    return result;
+  },
+
+  async uploadMaterials(opts?: { accept?: string; multiple?: boolean }) {
+    const result: any = {
+      successRow: [],
+      failRow: [],
+    };
+    const blobs = await queenApi.selectFile(opts);
+
+    queenApi.showLoading("上传中……");
+
+    for (const key in blobs) {
+      const blob = blobs[key];
+      if (blob.type.indexOf("image") !== -1 && blob.size >= 10 * 1024 * 1024) {
+        result.failRow.push(blob);
+      } else if (
+        blob.type.indexOf("video") !== -1 &&
+        blob.size >= 200 * 1024 * 1024
+      ) {
+        result.failRow.push(blob);
+      } else {
+        const file = await this.controls.uploader.uploadFile(blob, "queenshow");
+        const souceObj = {
+          file,
+          fileType: blob.type.split("/")[0],
+          from: "upload",
+        };
+        result.successRow.push(souceObj);
+      }
+    }
+
     queenApi.hideLoading();
     return result;
   },

+ 6 - 1
src/pages/share/Promotion/index.tsx

@@ -26,7 +26,12 @@ export default defineComponent(() => {
       editor.controls.wxCtrl.setShare(shareData);
     });
   }
-
+  // fetch("https://restapi.amap.com/v3/ip?key=6f53b2e09f72ad63423b2da6e08b25d7").then(response=>{
+  //    return response.json();
+  // }).then(data=>{
+  //   console.log(data);
+  // })
+  
   return () => (
     <div class="flex items-center justify-center h-100vh bg-gray-100">
       <div class={isPc() ? `h-668px scrollbar` : `h-full`}>

+ 21 - 12
src/pages/website/Material2/components/Material.tsx

@@ -22,9 +22,9 @@ export default defineUI({
       props.Controller.getCurrControl().loadPage(1);
     });
 
-        return ()=>{
+    return () => {
       const state = props.Controller.state;
-            const control = props.Controller.getCurrControl()
+      const control = props.Controller.getCurrControl();
 
       return (
         <div class={rootStyles}>
@@ -32,13 +32,12 @@ export default defineUI({
             <div class="flex items-baseline">
               <h3 class="text-22px m-0">我的素材</h3>
               <span class="ml-5px text-gray-300 text-12px">
-                (图片支持jpg、png、gif、svg,不超过5M,视频支持mp4,不超过200M)
+                (图片支持jpg、png、gif、svg,不超过10M,视频支持mp4,不超过200M)
               </span>
             </div>
           )}
 
           <slots.Toolbar Controller={props.Controller} />
-
           <slots.AssetsList
             columns={6}
             class="mt-30px"
@@ -46,19 +45,29 @@ export default defineUI({
             item={(record: any) => (
               <slots.MaterialItem
                 record={record}
-                  use={ state.currTab == "task" ? "task" : (state.isSelect? "select": "show")}
+                use={
+                  state.currTab == "task"
+                    ? "task"
+                    : state.isSelect
+                    ? "select"
+                    : "show"
+                }
                 onDelete={() => props.Controller.onItemClick("delete", record)}
-                  onDownload={() =>props.Controller.onItemClick("download", record)}
-                  onUse={()=>props.Controller.onItemClick("use", record)}
-                  onPreview={() =>props.Controller.onItemClick("preview", record)}
+                onDownload={() =>
+                  props.Controller.onItemClick("download", record)
+                }
+                onUse={() => props.Controller.onItemClick("use", record)}
+                onPreview={() =>
+                  props.Controller.onItemClick("preview", record)
+                }
               />
             )}
           />
-          </div>);
-        }
+        </div>
+      );
+    };
   },
-
-})
+});
 
 const rootStyles = css`
   .btn_tab {

+ 80 - 61
src/pages/website/Material2/controller.tsx

@@ -2,79 +2,98 @@ import SelectListItemModal from "./components/SelectListItemModal";
 import { MaterialController } from "../../../modules/resource/controllers/MaterialController";
 import PreviewModal from "../components/PreviewModal";
 import { queenApi } from "queenjs";
+import { ResourceModule } from "@/modules/resource";
 
-export default function createController(resource:any, isSelectModel:boolean, selectType :string) {
-    const {controls, actions} = resource;
-    const  showModal = async (type: string) => {
-        const ctrl = resource.controls.matTempListCtrl;
-        ctrl.state.query = type == "video" ? { hasVideo: true } : {}
-        ctrl.loadPage(1);
-        const record  = await resource.showModal(<SelectListItemModal ListCtrl={ctrl} onPreview={(record) => {
-          showPreviewModal({
-            url:record.thumbnail,
-            fileType:type == "video" ? "video":'image'
-          })
-        }}  />, {
-          title: `${type === "image" ? "图片" : "视频"}模板中心`,
-          width: "1000px",
-        });
-        resource.actions.selectMaterial(record);
-    };
+export default function createController(
+  resource: ResourceModule,
+  isSelectModel: boolean,
+  selectType: string
+) {
+  const { controls, actions } = resource;
 
-    const  showPreviewModal = (data: {
-      url: string;
-      fileType: "image" | "video";
-    }) => {
-      resource.showModal(<PreviewModal data={data}  />, {
-        title: "预览",
+  const showModal = async (type: string) => {
+    const ctrl = resource.controls.matTempListCtrl;
+    ctrl.state.query = type == "video" ? { hasVideo: true } : {};
+    ctrl.loadPage(1);
+    const record = await resource.showModal(
+      <SelectListItemModal
+        ListCtrl={ctrl}
+        onPreview={(record) => {
+          showPreviewModal({
+            url: record.thumbnail,
+            fileType: type == "video" ? "video" : "image",
+          });
+        }}
+      />,
+      {
+        title: `${type === "image" ? "图片" : "视频"}模板中心`,
         width: "1000px",
-        centered: true
-      }); 
+      }
+    );
+    resource.actions.selectMaterial(record);
   };
 
-    const ctrl = new MaterialController();
-    ctrl.imageCtrl = controls.materialImageListCtrl;
-    ctrl.vidoeCtrl = controls.materialVideoListCtrl;
-    ctrl.taskCtrl = controls.renderTaskListCtrl;
-    ctrl.state.isSelect = isSelectModel;
-    if (selectType) ctrl.state.selectType = selectType;
+  const showPreviewModal = (data: {
+    url: string;
+    fileType: "image" | "video";
+  }) => {
+    resource.showModal(<PreviewModal data={data} />, {
+      title: "预览",
+      width: "1000px",
+      centered: true,
+    });
+  };
 
-    ctrl.onBtnClick = async function (name: string) {
-      if (name == "upload") {
-        const uploaded = await resource.actions.uploadMaterial();
-        ctrl.switchTab(uploaded.fileType, false);
+  const ctrl = new MaterialController();
+  ctrl.imageCtrl = controls.materialImageListCtrl;
+  ctrl.vidoeCtrl = controls.materialVideoListCtrl;
+  ctrl.taskCtrl = controls.renderTaskListCtrl;
+  ctrl.state.isSelect = isSelectModel;
+  if (selectType) ctrl.state.selectType = selectType;
 
-        if (uploaded && uploaded.file?.url) {
-           if (ctrl.state.isSelect) {
-            ctrl.onCloseDialog(uploaded.file?.url);
-            return;
-           }
-        }
+  ctrl.onBtnClick = async function (name: string) {
+    if (name == "upload") {
+      const { successRow, failRow } = await resource.actions.createMaterial();
 
-        ctrl.getCurrControl().loadPage(1);
-        return;
+      if (failRow.length > 0) {
+        queenApi.messageError(
+          `${failRow.length}条数据上传失败,超过限制大小。`
+        );
       }
-      queenApi.messageSuccess("功能开发中, 敬请期待!")
-      //showModal(name);
-    };
-    ctrl.onItemClick = async function (name, record) {
-      if (name == "delete") {
-         await actions.deleteMaterial(record);
-         this.getCurrControl().fresh();
-         return;
+
+      const uploaded = successRow[0];
+      if (uploaded && uploaded.file?.url) {
+        ctrl.switchTab(uploaded?.fileType, false);
+        if (ctrl.state.isSelect) {
+          ctrl.onCloseDialog(uploaded.file?.url);
+          return;
+        }
       }
-      else if (name == "preview") return showPreviewModal({
+
+      ctrl.getCurrControl().loadPage(1);
+      return;
+    }
+    queenApi.messageSuccess("功能开发中, 敬请期待!");
+    //showModal(name);
+  };
+  ctrl.onItemClick = async function (name, record) {
+    if (name == "delete") {
+      await actions.deleteMaterial(record);
+      this.getCurrControl().fresh();
+      return;
+    } else if (name == "preview")
+      return showPreviewModal({
         url: record.file.url,
         fileType: record.fileType,
       });
-      else if (name == "use") {
-          console.log(name, record);
-          ctrl.onCloseDialog(record.file.url);
-          return;
-      }
+    else if (name == "use") {
+      // console.log(name, record);
+      ctrl.onCloseDialog(record.file.url);
+      return;
+    }
 
-      return actions.downloadMaterial(record);
-    };
+    return actions.downloadMaterial(record);
+  };
 
-    return ctrl
-}
+  return ctrl;
+}

+ 4 - 4
yarn.lock

@@ -1763,10 +1763,10 @@
   resolved "http://124.70.149.18:4873/@queenjs-modules%2fqueentree/-/queentree-0.0.10.tgz#f6344ab32ba0163a3b8cf4f4b9fe6641aef2bea7"
   integrity sha512-P4cIjXKgcvd8h3vVs4f1rGLNf3/Kd5G+qGiZN+idkLjiu22HU6SNmOVLUwV6PuKg+9sTPRn7FKamSHuFxXWX5g==
 
-"@queenjs/components@^0.0.19":
-  version "0.0.19"
-  resolved "http://124.70.149.18:4873/@queenjs%2fcomponents/-/components-0.0.19.tgz#b3a0a91cf24fd2b46610c338ab1f0d68e0e6af60"
-  integrity sha512-XEuCLkyy9o2CFZu1nPf+9ND/m+1D+ib6zn8oSfKtwcB1rvz/lL6e/iqSqdZnUZ6ia2GAI0gRKcA0/3FRYJDL6g==
+"@queenjs/components@^0.0.20":
+  version "0.0.20"
+  resolved "http://124.70.149.18:4873/@queenjs%2fcomponents/-/components-0.0.20.tgz#26e863f9e91d9b16804244c13b081b1e7c6496ff"
+  integrity sha512-iFMI2Q3OVemrkxIuIACWsip8MH8NhjoBusDKGtjeWf7J4eVe2gh1fUE8zdpFz4m4upgtlk6KDAfcNGRxbi1U/Q==
   dependencies:
     "@queenjs/utils" "^0.0.1"