gemercheung 2 년 전
부모
커밋
de97004077

+ 4 - 5
packages/qjkankan-editor/public/static/template/customTooltip.xml

@@ -197,7 +197,6 @@
          );
           <!-- 2 hover  -->
         if(hoverstatus == 2,
-            trace('测试');
            set(layer[get(tooltipname)].visible,false);
             delayedcall(0.1,
              txtadd(tooltipname, 'tooltip_', get(name)); 
@@ -332,15 +331,15 @@
             
                 Math.cos(dtrCos,calc(-35* Math.PI/180));
                 Math.sin(dtrSin,calc(-35* Math.PI/180));
-                set(newX,calc(40 * dtrCos));
-                set(newY,calc(40 * dtrSin + 40));
+                set(dist,40);
+                set(newX,calc(dist * dtrCos));
+                set(newY,calc(dist * dtrSin + dist));
                 <!-- newx = allHeight * Math.cos(dtrCos) + x -->
                 trace('newX::',get(newX));
                 trace('newY::',get(newY));
                 <!-- trace('dtrSin::',dtrSin); -->
-                set(layer[get(dirItem)].x,0);
+                copy(layer[get(dirItem)].x,0);
                 copy(layer[get(dirItem)].y,allHeight);
-                <!-- set(layer[get(dirItem)].offset,'100%'); -->
                 set(layer[get(dirItem)].rotate,35);
                  <!-- set(layer[get(dirItem)].transfrom,'tranlate(100%)'); -->
             );

+ 74 - 73
packages/qjkankan-editor/src/lang/_en.json

@@ -596,11 +596,11 @@
     "audio_limit": "The file is too large. Support MP3 files: ≤ 20MB",
     "audio_fail": "Format error. Support MP3 files: ≤ 20MB",
     "upload_material": "Upload materials",
-    "new_folder": "新建文件夹",
-    "new_folder_placeholder": "请输入文件夹名,限50字",
-    "folder_name_already_used": "文件夹已存在",
-    "move_folder": "移动",
-    "move_folder_to": "移动到",
+    "new_folder": "New Folder",
+    "new_folder_placeholder": "Please enter a folder name up to 50 characters in length",
+    "folder_name_already_used": "Folder already exists",
+    "move_folder": "Move",
+    "move_folder_to": "Move to",
     "no_folder_need_create": "暂无文件夹,请先创建文件夹",
     "rename_folder_placeholder": "请输入文件夹名,限15字",
     "video_size": "Support MP4 files: ≤ 200MB",
@@ -636,9 +636,9 @@
     "delete_material": "Delete material",
     "comfirm_delete_material": "Confirm to delete the material?",
 
-    "can_not_delete_folder_when_uploading": "正在上传素材,请不要删除文件夹。",
-    "delete_folder": "删除文件夹",
-    "comfirm_delete_folder": "确定要删除文件夹以及包含的素材吗?",
+    "can_not_delete_folder_when_uploading": "Please do not delete the folder while the material is being uploaded.",
+    "delete_folder": "Delete folder",
+    "comfirm_delete_folder": "Are you sure you wish to delete the folder and its contents?",
 
     "save_done": "Save successfully",
 
@@ -646,7 +646,7 @@
     "at_least_one_scene": "At least one scene can be previewed. Please go to \"Scene Navigation\" to add",
     "exitVr": "Exit VR",
     "dir": "目录",
-    "root_dir": "根目录",
+    "root_dir": "Root Directory",
     "no_more_data": "没有更多数据了",
     "converinfo_no_valid": "请将开场封面内容填写完整!"
   },
@@ -667,35 +667,35 @@
     "save": "Save"
   },
   "edit_settings": {
-    "coverBase_button":"开场封面",
-    "coverBase_button_tips":"整个作品的开场内容,可以设置为图片或视频形式。",
-    "cover_show": "显示开场封面",
-    "cover_pull_tit":"封面类型",
-    "coverSelecVideoAndImg":"图片+视频",
-    "coverSelecImg":"图片",
-    "coverSelecVideo":"视频",
-    "coverImgTit":"图片设置",
-    "coverUpTit1":"建议1920*1080px,2M以内,jpg / gif / png格式",
-    "coverUpTit2":"建议750*1624px,1M以内,jpg / gif / png格式",
-    "coverUpTit3":"建议300*300px,100kb以内,jpg格式",
+    "coverBase_button":"Opening Cover",
+    "coverBase_button_tips":"The opening content of the entire project may be presented as an image or video.",
+    "cover_show": "Show opening cover",
+    "cover_pull_tit":"Cover Type",
+    "coverSelecVideoAndImg":"Image + Video",
+    "coverSelecImg":"Image",
+    "coverSelecVideo":"Video",
+    "coverImgTit":"Image Settings",
+    "coverUpTit1":"1920*1080 pixels, within 2M, jpg/gif/png format is recommended",
+    "coverUpTit2":"750*1624 pixels ,within 1M, jpg/gif/png format is recommended",
+    "coverUpTit3":"300*300 pixels, within 100kb, jpg format is recommended",
     "coverUpTit4":"建议1920*1080px,5M以内,mp4格式",
     "coverUpTit5":"建议750*1624px,5M以内,mp4格式",
-    "coverImgLoc1":"居中",
-    "coverImgLoc2":"全屏",
-    "coverImgBacTit":"背景设置",
-    "coverImgBacSelec1":"纯色填充",
-    "coverImgBacSelec2":"图片平铺",
-    "coverVideoTit":"视频设置",
-    "select_video":"选择视频",
-    "coverImgInWay":"进入方式",
-    "coverImgInWayTit":"是否开启3秒倒计时后自动进入",
-    "coverVideoInWay":"进入方式",
-    "coverVideoInWayTit":"视频播放完自动进入",
+    "coverImgLoc1":"Center",
+    "coverImgLoc2":"Full Screen",
+    "coverImgBacTit":"Background Settings",
+    "coverImgBacSelec1":"Fill Color",
+    "coverImgBacSelec2":"Background-repeat",
+    "coverVideoTit":"Video Settings",
+    "select_video":"Select Video",
+    "coverImageInWay":"Entry method",
+    "coverImageInWayTit":"Automatic entry after 3 seconds countdown",
+    "coverVideoInWay":"Entry method",
+    "coverVideoInWayTit":"Auto-entry after video playback",
     "coverVideoControl":"视频控件",
-    "coverVideoControlTit":"视频控件是否显示",
-    "coverImageOrder":"出现顺序",
-    "coverImageOrderTit1":"开场图片先出现",
-    "coverImageOrderTit2":"开场图片后出现",
+    "coverVideoControlTit":"Display the video control or not",
+    "coverImageOrder":"Displaying Order",
+    "coverImageOrderTit1":"Images will appear before the video begins to play",
+    "coverImageOrderTit2":"Images will appear after the video begins to play",
     "auto_pano": "Rotation",
     "enter_auto": "Enter the rotation mode (takes 3 mins to complete per rotation)",
     "set_bgm": "Set the BGM",
@@ -764,7 +764,7 @@
     "自定义LOGO": "Custom Logo",
     "自定义遮罩": "Custom Mask",
     "自定义按钮": "Custom Button",
-    "开场封面": "开场封面",
+    "开场封面": "Opening Cover",
 
 
     "素材": "Material",
@@ -829,37 +829,37 @@
     "hotspot_name": "Hotspots",
     "hotspot_icon": "Select Icon",
     "hotspot_icon_type": {
-      "system_icon": "系统图标",
-      "custom_image": "自定义图片",
-      "serial_frame": "序列帧",
-      "personalized_tag": "个性标签"
+      "system_icon": "Default icon",
+      "custom_image": "Custom images",
+      "serial_frame": "Sequential Frames",
+      "personalized_tag": "Custom labels"
     },
-    "add_icon": "添加图标",
-    "add_custom_icon_rule": "300*300px,支持jpg/png格式",
-    "add_serial_frame_rule": "最大宽度:300px,高度不限",
-    "frame_total_number": "序列帧总帧数",
-    "frame_duration": "总播放时长",
-    "select_icon": "选择图标",
-    "if_show_marking_line": "是否显示标注线",
+    "add_icon": "Add Icon",
+    "add_custom_icon_rule": "300*300 pixels, jpg format is recommended",
+    "add_serial_frame_rule": "Maximum width: 300 pixels, unlimited height",
+    "frame_total_number": "Total Frames",
+    "frame_duration": "Total Play Time",
+    "select_icon": "Choose Icon",
+    "if_show_marking_line": "Display dimension line or not",
     "shape_filling_color": "形状填充",
-    "shape_border_color": "形状描边",
-    "text_color": "文字颜色",
+    "shape_border_color": "Stroke",
+    "text_color": "Color",
     "text_direction": "文字排序",
     "left_to_right": "从左到右",
     "top_to_down": "从上到下",
     "if_wrap": "是否换行显示",
     "text_num_per_line": "每行显示",
     "words": "字",
-    "hotspot_title": "热点标题",
-    "title_show_mode": "显示方式",
-    "show_on_hover": "鼠标悬浮",
-    "always_show": "一直显示",
-    "never_show": "不显示",
-    "title_position": "相对图标位置",
-    "title_top": "",
-    "title_bottom": "",
-    "title_left": "",
-    "title_right": "",
+    "hotspot_title": "Title",
+    "title_show_mode": "Display Methods",
+    "show_on_hover": "Hovering",
+    "always_show": "Show",
+    "never_show": "Hide",
+    "title_position": "Relative Position",
+    "title_top": "Up",
+    "title_bottom": "Down",
+    "title_left": "Left",
+    "title_right": "Right",
     "title_custom": "自定义拖动标题",
     "title_placeholder": "Enter a title with a maximum of 15 characters",
     "effect_settings": "Effect settings",
@@ -871,23 +871,23 @@
     "audio": "Audio",
     "link": "Hyperlink",
     "textarea": "Text",
-    "tag": "标签",
-    "image_text": "图文",
-    "article": "文章",
+    "tag": "Label",
+    "image_text": "Image&text",
+    "article": "Paragraph",
     "pdf": "PDF",
-    "phone": "电话",
+    "phone": "Tel",
     "hotspot_type_specific_settings_title": {
-      "scene": "热点场景",
-      "image": "热点图片",
-      "video": "热点视频",
-      "audio": "热点音频",
-      "link": "热点链接",
-      "textarea": "热点文本",
+      "scene": "Scene",
+      "image": "Image",
+      "video": "Video",
+      "audio": "Audio",
+      "link": "Link",
+      "textarea": "Text",
       "tag": "",
-      "imageText": "热点图文",
-      "article": "热点文章",
-      "pdf": "热点PDF",
-      "phone": "热点电话"
+      "imageText": "Image&text",
+      "article": "Paragraph",
+      "pdf": "PDF",
+      "phone": "Tel"
     },
     "icon_size": "Icon Size",
     "unit": "times",
@@ -949,6 +949,7 @@
     "FAILURE_3103": "Server someData.json file does not exist",
     "FAILURE_3200": "Failed to request for third-party API",
     "FAILURE_3201": "Failed to request the interface",
+    "FAILURE_3104": "The folder with the same name has already existed, please move the material directly",
     "FAILURE_error": "Network exception, please try again later",
     "tips":"Tips",
     "relogin":"Invalid login status; please log in again",

+ 1 - 0
packages/qjkankan-editor/src/lang/_zh.json

@@ -940,6 +940,7 @@
     "FAILURE_3103": "服务器someData.json文件不存在",
     "FAILURE_3200": "请求第三方API失败",
     "FAILURE_3201": "请求第三方API返回失败",
+    "FAILURE_3104": "存在同名文件夹,请直接移动素材",
     "FAILURE_error": "网络异常,请稍后再试",
     "tips": "提示",
     "relogin": "登录状态失效,请重新登录",

+ 5 - 1
packages/qjkankan-editor/src/utils/request.js

@@ -54,6 +54,7 @@ const statusCode = {
   FAILURE_CODE_3101: 3101, // "素材已经被引用, 不能删除"
   FAILURE_CODE_3102: 3102, // "计算中的场景不能删除"
   FAILURE_CODE_3103: 3103, // "服务器someData.json文件不存在"
+  FAILURE_CODE_3104: 3104, // "存在同名文件夹,请直接移动素材"
 
   // 32XX -> 请求第三方API错误
   FAILURE_CODE_3200: 3200, // "请求第三方API失败"
@@ -156,7 +157,10 @@ export function statusCodesHandler(result, callback) {
     $alert({ content: i18n.t('tips_code.FAILURE_3101') });
     return
   }
-  
+  if (result.code == statusCode.FAILURE_CODE_3104) {
+    $alert({ content: i18n.t('tips_code.FAILURE_3104') });
+    return
+  }
 
   if (result.code == statusCode.FAILURE_CODE_5001||result.code === statusCode.FAILURE_CODE_5002) {
     callback(result.code);

+ 1 - 1
packages/qjkankan-view/.env.testprod

@@ -6,4 +6,4 @@ VUE_APP_PROXY_URL='https://test.4dkankan.com/qjkankan/'
 VUE_APP_URL_FILL=/qjkankan
 # 接口请求地址
 VUE_APP_APIS_URL=https://test.4dkankan.com/
-VUE_APP_DEBBUG_FLAG=0427-03
+VUE_APP_DEBBUG_FLAG=0428-01

+ 2 - 2
packages/qjkankan-view/src/components/assembly/Opening.vue

@@ -2,7 +2,7 @@
   <!-- 视频 -->
   <div
     class="videocon"
-    v-if="isVideoMode || isMixinMode"
+    v-if="(isVideoMode || isMixinMode) && !isToApp"
     v-show="videoShow"
     :style="{
       zIndex: videoIndex,
@@ -54,7 +54,7 @@
 
   <div
     class="imgcon"
-    v-if="isImageMode || isMixinMode"
+    v-if="(isImageMode || isMixinMode) && !isToApp"
     v-show="imgShow"
     :style="{
       zIndex: imgIndex,

+ 29 - 27
packages/qjkankan-view/src/components/assembly/OpeningMobile.vue

@@ -2,7 +2,7 @@
   <!-- 视频 -->
   <div
     class="videocon"
-    v-if="isVideoMode || isMixinMode"
+    v-if="(isVideoMode || isMixinMode) && !isToApp"
     v-show="videoShow"
     :style="{
       zIndex: videoIndex,
@@ -56,7 +56,7 @@
 
   <div
     class="imgcon"
-    v-if="isImageMode || isMixinMode"
+    v-if="(isImageMode || isMixinMode) && !isToApp"
     v-show="imgShow"
     :style="{
       zIndex: imgIndex,
@@ -102,6 +102,7 @@ import {
   defineProps,
   unref,
   watchEffect,
+  onUnmounted,
 } from "vue";
 import { useStore } from "vuex";
 import { useApp } from "@/app";
@@ -157,8 +158,6 @@ const videoShow = ref(false);
 const imgIndex = ref(1);
 const videoIndex = ref(1);
 
-
-
 const handleVideoPlay = () => {
   // window.alert("play");
   let video = unref(openvideo$);
@@ -172,7 +171,7 @@ const handleVideoPlay = () => {
  *
  *  */
 
- const jumpImage = (from = 0) => {
+const jumpImage = (from = 0) => {
   // 0 来自元素click, 1.来自跳转按钮
   if (unref(isMixinMode)) {
     if (unref(showImageFirst)) {
@@ -207,7 +206,6 @@ const handleVideoPlay = () => {
   }
 };
 
-
 //手动跳转
 const jumpVideo = () => {
   if (unref(isMixinMode)) {
@@ -230,7 +228,7 @@ const startImageCount = () => {
     countdownImg.value--;
     if (countdownImg.value <= 0) {
       clearInterval(imgTimer.value);
-      countdownImg.value = 0
+      countdownImg.value = 0;
       isImageCountDone.value = true;
       imgTimer.value = null;
       return;
@@ -244,7 +242,7 @@ const startVideoCount = () => {
     countdownVideo.value--;
     if (countdownVideo.value <= 0) {
       clearInterval(videotimer.value);
-      countdownVideo.value = 0
+      countdownVideo.value = 0;
       isVideoCountDone.value = true;
       videotimer.value = null;
       return;
@@ -322,7 +320,6 @@ watch(
   }
 );
 
-
 //跳转到app
 const toApp = () => {
   if (!unref(isToApp)) {
@@ -337,28 +334,33 @@ const toApp = () => {
     });
   }
 };
-
+const handleVideoEnded = () => {
+  if (isVideoAutoNext.value) {
+    //混合模式
+    if (unref(isMixinMode)) {
+      //视频优先 直达图片
+      if (!unref(showImageFirst)) {
+        videoShow.value = false;
+        imgShow.value = true;
+        startImageCount();
+      } else {
+        toApp();
+      }
+    } else {
+      toApp();
+    }
+  }
+};
+onUnmounted(() => {
+  if (openvideo$.value) {
+    openvideo$.value.addEventListener("ended", handleVideoEnded, false);
+  }
+});
 onMounted(() => {
   console.log("coverData", unref(props.coverData));
 
   if (openvideo$.value) {
-    openvideo$.value.addEventListener("ended", () => {
-      if (isVideoAutoNext.value) {
-        //混合模式
-        if (unref(isMixinMode)) {
-          //视频优先 直达图片
-          if (!unref(showImageFirst)) {
-            videoShow.value = false;
-            imgShow.value = true;
-            startImageCount();
-          } else {
-            toApp();
-          }
-        } else {
-          toApp();
-        }
-      }
-    });
+    openvideo$.value.addEventListener("ended", handleVideoEnded, false);
 
     openvideo$.value.addEventListener("playing", () => {
       if (videoNeedPlay.value) {