Browse Source

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

lianghongjie 1 year ago
parent
commit
ed198dfc5a

+ 42 - 29
src/modules/resource/helper.ts

@@ -2,6 +2,7 @@ import { PageListController } from "@queenjs/controllers";
 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) {
@@ -15,42 +16,54 @@ export const helper = ResourceModule.helper({
   },
 
   createCompController() {
-    const ctrl= new ComponentController();
+    const ctrl = new ComponentController();
     ctrl.ListCtrl = new PageListController(this.config?.httpConfig);
-    ctrl.ListCtrl.setCrudPrefix("/frame")
+    ctrl.ListCtrl.setCrudPrefix("/frame");
     ctrl.createComp = this.actions.createComp;
     ctrl.onMenuClick = async (name, record) => {
-      if(name == "delete") {
-       await this.actions.deletePromotion(record);
-       ctrl.ListCtrl.fresh();
+      if (name == "delete") {
+        await this.actions.deletePromotion(record);
+        ctrl.ListCtrl.fresh();
       }
-    }
+    };
 
     return ctrl;
   },
 
   createSourceController() {
-      const {controls, actions} = this;
-      
-      const ctrl = new MaterialController();
-      ctrl.imageCtrl = controls.materialImageListCtrl;
-      ctrl.vidoeCtrl = controls.materialVideoListCtrl;
-      ctrl.taskCtrl = controls.renderTaskListCtrl;
-      ctrl.tplCtrl = controls.matTempListCtrl;
-
-      ctrl.onBtnClick = async function (name: string) {
-        if (name == "upload") {
-          const uploaded = await actions.uploadMaterial();
-          ctrl.switchTab(uploaded.fileType, false);
-          ctrl.getCurrControl().loadPage(1);
-          return;
-        }
-        ctrl.showDialog(name);
-      };
-      ctrl.onItemClick = function (name, record) {
-        if (name == "delete") return actions.deleteMaterial(record);
-        return actions.downloadMaterial(record);
-      };
-      return ctrl
-  }
+    const { controls, actions } = this;
+
+    const ctrl = new MaterialController();
+    ctrl.imageCtrl = controls.materialImageListCtrl;
+    ctrl.vidoeCtrl = controls.materialVideoListCtrl;
+    ctrl.taskCtrl = controls.renderTaskListCtrl;
+    ctrl.tplCtrl = controls.matTempListCtrl;
+
+    ctrl.onBtnClick = async function (name: string) {
+      if (name == "upload") {
+        const uploaded = await actions.uploadMaterial();
+        ctrl.switchTab(uploaded.fileType, false);
+        ctrl.getCurrControl().loadPage(1);
+        return;
+      }
+      ctrl.showDialog(name);
+    };
+    ctrl.onItemClick = function (name, record) {
+      if (name == "delete") return actions.deleteMaterial(record);
+      return actions.downloadMaterial(record);
+    };
+    return ctrl;
+  },
+
+  async uploadResource(accept = "image/*") {
+    const [blob] = await queenApi.selectFile({ accept });
+    const data = await this.controls.uploader.uploadFile(blob, "queenshow");
+
+    const souceObj = {
+      file: data,
+      fileType: blob.type.split("/")[0],
+      from: "upload",
+    };
+    return souceObj;
+  },
 });

+ 1 - 1
src/pages/website/Promotion2/components/PromotionItem.tsx

@@ -44,7 +44,7 @@ export default defineUI({
 
       return (
         <div class={cx(itemStyles, "relative")}>
-          <View ratio={1.4} class="overflow-hidden relative">
+          <View ratio={1} class="overflow-hidden relative">
             <Image
               class="h-1/1 w-1/1 !object-contain bg-[#ebebeb]"
               src={record?.thumbnail}

+ 6 - 24
src/pages/website/Promotion2/components/ShareModal.tsx

@@ -1,5 +1,5 @@
+import { clipboard } from "@/utils";
 import { Image } from "@queenjs/ui";
-import { useClipboard } from "@vueuse/core";
 import { useQRCode } from "@vueuse/integrations/useQRCode";
 import { Button, Input } from "ant-design-vue";
 import { defineComponent } from "vue";
@@ -9,7 +9,7 @@ export default defineComponent({
   props: {
     record: any().isRequired,
   },
-  emits: ["edit", "update"],
+  emits: ["edit", "update", "changeThumnb"],
   setup(props, { slots, emit }) {
     let shareLink = location.origin + "/share.html?id=" + props.record._id;
     if (location.host == "www.infish.cn") {
@@ -19,29 +19,11 @@ export default defineComponent({
         props.record._id;
     }
 
-    const { copy } = useClipboard();
-
     const qrUrl = useQRCode(shareLink, { margin: 2 });
 
-    const savaData = (key: string, value: string) => {
-      emit("update", {
-        _id: props.record._id,
-        [key]: value,
-      });
-    };
-
-    const changeThumbnail = () => {
-      savaData(
-        "thumbnail",
-        "https://infishwaibao.oss-cn-chengdu.aliyuncs.com/queenshow/img/Logo.8478c1b4.png"
-      );
-    };
-
     return () => {
       const { record } = props;
 
-      console.log("qrUrl: ", qrUrl);
-
       return (
         <div class="flex items-start">
           <div>
@@ -65,7 +47,7 @@ export default defineComponent({
                 />
                 <div
                   class="absolute left-0 bottom-0 w-1/1 text-center py-5px text-14px bg-dark-200 bg-opacity-80 cursor-pointer"
-                  onClick={changeThumbnail}
+                  onClick={() => emit("changeThumnb")}
                 >
                   更换封面
                 </div>
@@ -75,9 +57,9 @@ export default defineComponent({
                   class="w-1/1"
                   defaultValue={record.title}
                   placeholder="请输入标题"
-                  onBlur={(e: any) => savaData("title", e.target.value)}
+                  onBlur={(e: any) => emit("update", { title: e.target.value })}
                 />
-                <Input placeholder="请输入描述" class="mt-10px w-1/1" />
+                {/* <Input placeholder="请输入描述" class="mt-10px w-1/1" /> */}
               </div>
             </div>
             <div class="mt-40px flex">
@@ -100,7 +82,7 @@ export default defineComponent({
                     class="mt-10px"
                     type="primary"
                     ghost
-                    onClick={() => copy(shareLink)}
+                    onClick={() => clipboard.copy(shareLink)}
                   >
                     复制链接
                   </Button>

+ 1 - 1
src/pages/website/Promotion2/components/index.tsx

@@ -27,7 +27,7 @@ export default defineUI({
           <slots.List
             gap="25px"
             class="my-30px"
-            columns={4}
+            columns={5}
             control={props.Controller.ListCtrl}
             item={(record: any) => (
               <PromotionItem

+ 11 - 1
src/pages/website/Promotion2/controller.tsx

@@ -14,6 +14,11 @@ export function createPromotinController(
   ctrl.ListCtrl.setCrudPrefix("/h5");
   ctrl.createPromotion = resource.actions.createPromotion;
 
+  function updateDesign(record: any, data: any) {
+    const designData: any = Object.assign({}, { _id: record._id }, data);
+    editor.https.saveDesign(designData);
+  }
+
   async function sharePromotion(record: any) {
     editor.actions.initDesign(record._id);
     editor.actions.switchMode("preview");
@@ -21,7 +26,12 @@ export function createPromotinController(
       <ShareModal
         record={record}
         onEdit={() => ctrl.onEdit(record)}
-        onUpdate={(data) => editor.https.saveDesign(data)}
+        onUpdate={(data) => updateDesign(record, data)}
+        onChangeThumnb={async () => {
+          const { file } = await resource.helper.uploadResource();
+          record.thumbnail = file.url;
+          updateDesign(record, { thumbnail: file.url });
+        }}
       >
         {{
           preview: () => <editor.components.Preview />,