Переглянути джерело

Merge branch 'v1.9.0-jm-local' of http://192.168.0.115:3000/bill/fuse-code into v1.9.0-jm-local

xzw 2 місяців тому
батько
коміт
d1df0bcb57

+ 7 - 3
src/app.vue

@@ -65,8 +65,12 @@ watchEffect(() => {
   if (sdkLoaded.value && !params.testMap) {
     const checkUrl = `https://www.google.com/maps/vt/pb=!1m5!1m4!1i11!2i3339!3i1787!4i128!2m2!1e1!3i998!3m9!2szh-CN!3s!5e1105!12m1!1e4!12m1!1e47!12m1!1e3!4e0!5m1!1e0!23i1368782!23i1368785!23i4861626!23i10211310!23i4897086!23i47054629!23i72385654!23i72458815!23i10211069!23i94243289!23i94255677!23i10210500!23i94222679!23i72860224!23i10211515!23i94260020`;
     Promise.race([
+      new Promise((_, reject) => {
+        if (params.ga === "true") {
+          reject("ga版本");
+        }
+      }),
       fetch(checkUrl).then((res) => {
-        console.log(res);
         if (res.status !== 200) {
           throw "谷歌访问不了";
         } else {
@@ -76,10 +80,10 @@ watchEffect(() => {
       new Promise((r, j) => setTimeout(j, 3000)),
     ])
       .then(() => {
-        sdk.switchMapType(isStandard.value ? "satellite" : "standard", "amap");
+        sdk.switchMapType(isStandard.value ? "satellite" : "standard", "gmap");
       })
       .catch(() => {
-        sdk.switchMapType(isStandard.value ? "satellite" : "standard", "gmap");
+        sdk.switchMapType(isStandard.value ? "satellite" : "standard", "amap");
       });
   }
 });

+ 1 - 0
src/components/path/list.vue

@@ -5,6 +5,7 @@
       @delete="deletePath(path)"
       @updatePoints="(data) => updatePosition(index, data)"
       @updateLinePosition="(data) => updateLinePosition(index, data)"
+    @updateLineHeight="(data) => (paths[index].lineAltitudeAboveGround = data)"
       :ref="(node: any) => nodeHandler(index, node)"
       :path="path"
       :key="path.id"

+ 6 - 0
src/components/path/sign.vue

@@ -25,6 +25,7 @@ const emit = defineEmits<{
   (e: "delete"): void;
   (e: "updateLinePosition", val: Path["linePosition"]): void;
   (e: "updatePoints", val: Path["points"]): void;
+  (e: "updateLineHeight", val: Path["lineAltitudeAboveGround"]): void;
 }>();
 
 const getLineProps = () => ({
@@ -69,6 +70,11 @@ path.bus.on("changePoints", (points) => {
   }));
   emit("updatePoints", currentPoints);
 });
+path.bus.on("changeLineHeight", (val) => {
+  console.log("changeHeight");
+  emit("updateLineHeight", val);
+  clearTimeout(changLineTimeout);
+});
 watchEffect(() => {
   path.changeName(props.path.name);
 });

+ 1 - 4
src/lang/weblate/en.json

@@ -308,8 +308,5 @@
             "inquestAddress": "Inspection location",
             "times": "Inspection time"
         }
-    },
-    "mediaLibrary": {
-        "file": "file"
     }
-}
+}

+ 270 - 273
src/lang/weblate/ja.json

@@ -1,315 +1,312 @@
 {
     "resCode": {
-        "0": "リクエスト成功",
-        "4008": "トークンが失効しました",
-        "4010": "アクセス権限がありません"
-    },
-    "security": {
-        "name": "セキュリティ"
-    },
-    "floder": {
-        "name": "ファイル",
-        "record": "検証記録",
-        "extractList": "抽出リスト",
-        "photo": "写真製本"
+        "0": "Request successful",
+        "4008": "token has expired",
+        "4010": "You do not have access permission"
     },
     "sys": {
-        "search": "検索",
-        "all": "全て",
-        "download": "ダウンロード",
-        "create": "作成",
-        "rename": "名前変更",
-        "edit": "編集",
-        "add": "追加",
-        "unSaveMsg": "保存されていない操作があります。終了しますか?",
-        "404Page": "リソースが存在しないか削除されました",
-        "errPage": "エラーページ",
-        "delConfrm": "このデータを削除しますか?",
-        "del": "削除",
-        "quit": "終了",
-        "save": "保存",
-        "undata": "結果がありません",
-        "unSearchData": "検索結果がありません",
-        "addData": "データ追加",
-        "ok": "了解しました",
-        "serviceErr": "サービスに異常が発生しました。しばらくしてから再試行してください",
-        "other": "その他",
-        "crop": "トリミング",
-        "imgLoadErr": "画像の読み込みに失敗しました",
-        "tranCropImg": "トリミング画像を入力してください",
-        "cropIng": "トリミング中",
-        "tip": "ヒント",
-        "enter": "確定",
-        "cancel": "キャンセル",
+        "download": "Download",
+        "rename": "Rename",
+        "404Page": "The resource does not exist or has been deleted",
+        "errPage": "Error page",
+        "quit": "Exit",
         "upload": {
-            "place1": "ファイルをアップロード",
-            "accept": "{accept}などの形式をサポート",
-            "normalizeScale": "幅*高さの比率 {scale}",
-            "maxSize": "サイズは{sizeStr}以下",
-            "maxLen": "最大{maxLen}個まで",
-            "conAdd": "続けて追加",
-            "rep": "置換",
-            "previewErr": "プレビューの読み込みに失敗しました!",
-            "accErr": "形式エラー",
-            "accSuperErr": "{accept}形式のみサポート",
-            "scaleErr": "{name}の比率が{scale}ではありません",
-            "sizeErr": "{name}のサイズが{sizeStr}を超えています",
-            "lenErr": "最大{maxLen}個までアップロード可能です!"
+            "place1": "Upload file",
+            "maxLen": "The number should not exceed {maxLen}",
+            "previewErr": "Preview loading failed!",
+            "sizeErr": "The size of {name} exceeds {sizeStr}",
+            "scaleErr": "The scaled part of {name} is not {scale}",
+            "accept": "Supports {accept} formats,",
+            "normalizeScale": "Width-to-height ratio {scale}",
+            "maxSize": "Maximum size {sizeStr}.",
+            "rep": "Replace",
+            "accErr": "Format error",
+            "conAdd": "Continue adding",
+            "lenErr": "Only a maximum of {maxLen} files are supported!",
+            "accSuperErr": "Only supports file in {accept} format."
         },
-        "placeInput": "入力してください",
-        "placeSelect": "選択してください",
-        "unSelect": "選択肢がありません",
-        "unSearch": "検索結果なし",
-        "jsError": "メモリ不足です。複数のページやアプリを同時に開かないでください。ブラウザを再起動して再度開いてください。",
-        "viewPWD": "アクセスパスワード",
-        "placPWD": "パスワードを入力してください!",
-        "pwdErr": "パスワードが間違っています。再入力してください。",
-        "list": "データ一覧"
+        "placeInput": "Please enter",
+        "placeSelect": "Please select",
+        "placPWD": "Please enter the password!",
+        "search": "Search",
+        "all": "All",
+        "create": "Create",
+        "add": "Add",
+        "edit": "Edit",
+        "unSaveMsg": "You have unsaved changes. Are you sure you want to exit?",
+        "list": "Data list",
+        "delConfrm": "Are you sure you want to delete this data?",
+        "del": "Delete",
+        "undata": "No results",
+        "save": "Save",
+        "ok": "I understand",
+        "unSearchData": "No search results found",
+        "addData": "Add data",
+        "serviceErr": "An error occurred with the service. Please try again later.",
+        "crop": "Crop",
+        "other": "Other",
+        "tip": "Prompt",
+        "cropIng": "Cropping in progress",
+        "tranCropImg": "Please upload the cropped image.",
+        "imgLoadErr": "Failed to load image",
+        "enter": "Confirm",
+        "cancel": "Cancel",
+        "unSearch": "No results found",
+        "unSelect": "No options available",
+        "jsError": "Insufficient memory. Please avoid opening multiple pages or applications simultaneously. Try restarting your browser and reopening the content.",
+        "viewPWD": "Access password",
+        "pwdErr": "Incorrect password, please try again."
     },
     "material": {
-        "name": "メディアライブラリ",
-        "selectCount": "選択済みデータ",
-        "search": "名前で検索",
-        "uploadSuccess": "アップロード成功",
-        "uploadErr": "アップロード失敗",
-        "up": "+メディアライブラリからアップロード",
-        "uploadIng": "アップロード中",
-        "selectErr": "最大{count}件まで選択可能",
+        "up": "Upload from Media Library",
+        "uploadIng": "Uploading...",
+        "uploadErr": "Upload failed",
+        "uploadSuccess": "Upload successful",
+        "search": "Search by name",
+        "name": "Media Library",
+        "selectCount": "Selected data",
         "tabs": {
-            "name": "名前",
-            "format": "形式",
-            "size": "サイズ",
-            "status": "状態",
-            "group": "グループ",
-            "action": "操作"
-        }
-    },
-    "view": {
-        "name": "ビュー抽出",
-        "vName": "ビュー",
-        "defName": "ビュー{num}",
-        "nameErr": "ビュー名は必須です",
-        "all": "全てのビュー"
+            "action": "Operation",
+            "format": "Format",
+            "status": "Status",
+            "name": "Name",
+            "size": "Size",
+            "group": "Group"
+        },
+        "selectErr": "A maximum of {count} items can be selected"
     },
     "guide": {
-        "name": "ガイド",
-        "modelErr": "ガイドのモデルが削除されました。再生できません",
-        "defTitle": "ガイド{num}",
-        "nameErr": "ガイド名は必須です",
-        "pErr": "ポイントは2つ以上必要です",
+        "name": "Path",
+        "defTitle": "Path {num}",
+        "nameErr": "Path name cannot be empty",
+        "modelErr": "The model where the path is located has been deleted and cannot be played.",
+        "pErr": "The number of path points cannot be fewer than two.",
+        "pathName": "Rout({count})",
+        "path": {
+            "title": "Path name",
+            "showDirection": "Path arrow",
+            "lineWidth": "Path thickness",
+            "lineColor": "Path color",
+            "name": "Route",
+            "preview": "Preview path",
+            "pointDesc": "Description",
+            "fontSize": "Font size",
+            "applyConfirm": "Are you sure you want to apply this attribute to all locations?",
+            "reverseDirection": "Reverse arrow",
+            "pointTitle": "Edit point",
+            "visibilityRange": "Visible range",
+            "globalVisibility": "All range visible",
+            "stop": "Stop"
+        },
         "guide": {
-            "add": "視点を追加",
-            "time": "動画の長さ",
-            "name": "ツアー",
-            "clear": "画面をクリア",
-            "undata": "ツアーがありません",
-            "unItems": "空のガイドは保存できません!",
-            "delConfirm": "この画面を削除しますか?",
-            "clearConfirm": "画面をクリアしますか?"
+            "undata": "No navigation available",
+            "add": "Add viewpoint",
+            "clear": "Clear the view",
+            "time": "Video duration",
+            "name": "Guided tour",
+            "delConfirm": "Are you sure you want to delete this view?",
+            "clearConfirm": "Are you sure you want to clear the view?",
+            "unItems": "Unable to save empty path guide tour!"
         },
-        "pathName": "ルート({count})",
-        "guideName": "ツアー({count})",
-        "path": {
-            "lineWidth": "ルートの太さ",
-            "name": "ルート",
-            "title": "ルート名",
-            "lineColor": "ルートの色",
-            "showDirection": "ルートの矢印",
-            "reverseDirection": "矢印の向きを反転",
-            "fontSize": "文字サイズ",
-            "visibilityRange": "表示範囲",
-            "preview": "ルートをプレビュー",
-            "stop": "停止",
-            "pointTitle": "ポイント編集",
-            "pointDesc": "説明",
-            "globalVisibility": "全範囲で表示",
-            "applyConfirm": "この設定を全ての位置に適用しますか?"
-        }
+        "guideName": "Guided tour ({count})"
     },
     "measure": {
-        "area": {
-            "desc": "面積",
-            "unit": "面積"
-        },
-        "list": "測定リスト",
-        "name": "測定",
         "free": {
-            "desc": "自由",
-            "unit": "長さ"
+            "unit": "Length",
+            "desc": "Free"
         },
         "vertical": {
-            "desc": "垂直",
-            "unit": "長さ"
+            "unit": "Length",
+            "desc": "Vertical"
         },
-        "nameErr": "測定名は必須です"
-    },
-    "setting": {
-        "name": "設定",
-        "initView": "初期画面",
-        "back": "背景設定",
-        "backs": [
-            "なし",
-            "地図",
-            "青空と白雲",
-            "曇天",
-            "夜空",
-            "夕暮れ"
-        ]
-    },
-    "record": {
-        "name": "画面録画",
-        "vName": "録画",
-        "defName": "解説動画{num}",
-        "nameErr": "動画名は必須です",
-        "start": "録画開始",
-        "list": "全ての動画",
-        "delConfirm": "動画を削除しますか?",
-        "tag": "タグ",
-        "merge": "動画を結合",
-        "con": "録画を続ける",
-        "sizeErr": "制限サイズを超えました。保存後に続行してください!",
-        "backHandler": "バックグラウンド処理中"
-    },
-    "case": {
-        "name": "事件情報",
-        "tmName": "検証情報",
-        "sn": "事件名",
-        "summary": "事件概要",
-        "yv": "はい",
-        "nv": "いいえ",
-        "cols": {
-            "caseTitle": "事件名",
-            "caseNum": "登録番号",
-            "caseCategory": "事件カテゴリ",
-            "crimeTime": "発生時刻",
-            "homicideCase": "殺人事件か",
-            "caseRegion": "発生地域",
-            "criminalCase": "刑事事件か",
-            "caseAddress": "発生場所",
-            "latAndLong": "緯度経度"
+        "area": {
+            "desc": "Area",
+            "unit": "Area"
         },
-        "tmCols": {
-            "commandTime": "指令センター通話時刻",
-            "alarmTime": "通報時刻",
-            "alarmName": "通報者",
-            "assignDept": "指定/報告部署",
-            "inquestDept": "現場検証部署",
-            "assignType": "指定方法",
-            "inquestAddress": "検証場所",
-            "times": "検証時間"
-        }
+        "name": "Measurement",
+        "list": "Measurement list",
+        "nameErr": "Measurement name cannot be empty"
     },
     "tagging": {
         "tabs": {
-            "method": "抽出方法",
-            "typeId": "特徴の説明",
-            "part": "残留部位",
-            "principal": "抽出者"
+            "part": "Residual area",
+            "principal": "Extractor",
+            "method": "Extraction Method",
+            "typeId": "Feature description"
         },
-        "list": "タグリスト",
-        "name": "タグ",
-        "style": "アイコンスタイル",
         "type": {
-            "1": "痕跡",
-            "2": "手形",
-            "3": "足跡",
-            "4": "血液 ",
-            "5": "死体",
-            "6": "その他",
-            "7": "物的証拠"
+            "3": "Footprint",
+            "2": "Handprint",
+            "7": "Physical evidence",
+            "1": "Trace",
+            "4": "Bloodstain ",
+            "6": "Other",
+            "5": "Body"
         },
-        "plcTitle": "タグタイトルを入力してください",
-        "titleFex": "タイトル固定表示",
-        "plcType": "説明:",
-        "plcType1": "特徴の説明:",
-        "mic": "音声",
-        "plcPart": "残留部位:",
-        "plcMethod": "抽出方法:",
-        "plcPrincipal": "抽出者:",
-        "titleErr": "タグタイトルは必須です!",
-        "micPlc": "mp3/wav形式、30MB以下",
-        "media": "画像/動画",
-        "pleMedia": "画像/動画をアップロード",
-        "plcMedia1": "JPG、PNG、MP4形式、100MB以下、最大10ファイル",
-        "styleErr": "アイコンスタイルを選択してください!",
-        "apply": "全てに適用",
-        "posErr": "この位置には追加できません",
-        "pos": "配置",
-        "plcPos": "配置位置",
-        "posName": "位置",
-        "applyConfirm": "この設定を全ての位置に適用しますか?",
+        "plcTitle": "Please enter the tag title",
+        "plcPart": "Residual area:",
+        "mic": "Music",
+        "pleMedia": "Upload image/video",
+        "styleErr": "Please select an icon style!",
         "posTabs": {
-            "scale": "アイコンサイズ",
-            "rotation": "アイコン回転",
-            "fontSize": "文字サイズ",
-            "type": "アイコン配置方法",
             "typeVal": [
-                "浮遊",
-                "地面/壁面"
+                "Hover",
+                "Attach to Floor/Wall"
             ],
-            "lineHeight": "ガイド線の高さ",
-            "visibilityRange": "表示範囲",
-            "globalVisibility": "全範囲で表示"
+            "fontSize": "Font size",
+            "rotation": "Rotate icon",
+            "scale": "Icon size",
+            "type": "Icon placement method",
+            "visibilityRange": "Visible range",
+            "globalVisibility": "All range visible",
+            "lineHeight": "Wire height"
         },
-        "posTip": "モデル上をクリックしてタグ位置を選択してください"
+        "name": "Tag",
+        "list": "Tag list",
+        "style": "Icon style",
+        "plcType": "Description:",
+        "plcPrincipal": "Extractor:",
+        "plcMethod": "Extraction method:",
+        "titleFex": "Title pinned",
+        "plcType1": "Feature description:",
+        "micPlc": "Supports mp3/wav formats, ≤ 30MB",
+        "plcMedia1": "Supports JPG, PNG, MP4, and other formats, with a single file size not exceeding 100MB, and a maximum of 10 files allowed for upload.",
+        "titleErr": "Tag title is required!",
+        "media": "Image/Video",
+        "pos": "Place",
+        "plcPos": "Placement location",
+        "applyConfirm": "Are you sure you want to apply this attribute to all locations?",
+        "posName": "Location",
+        "apply": "Apply to all",
+        "posErr": "Unable to add current location",
+        "posTip": "Click on the model to select the tag position."
     },
     "scene": {
-        "list": "シーンリスト",
-        "manage": "シーン管理",
-        "add": "シーン追加",
-        "tabs": {
-            "name": "名前",
-            "type": "タイプ",
-            "createTime": "撮影/作成時刻"
-        },
         "typeRaws": {
-            "0": "Meshシーン",
-            "1": "Meshシーン",
-            "2": "点群シーン",
-            "4": "Meshシーン",
-            "5": "点群シーン",
-            "6": "Meshシーン",
-            "7": "Meshシーン"
+            "0": "Mesh Scene",
+            "1": "Mesh Scene",
+            "4": "Mesh Scene",
+            "6": "Mesh Scene",
+            "7": "Mesh Scene",
+            "2": "Point cloud scene",
+            "5": "Point cloud scene"
         },
+        "add": "Add scene",
+        "tabs": {
+            "name": "Name",
+            "createTime": "Capture/Creation Time",
+            "type": "Type"
+        },
+        "list": "Scene list",
+        "manage": "Scene management",
         "types": {
-            "0": "4DKanKan Minion/Mesh",
-            "1": "4DKanKan Minion/Mesh",
-            "2": "4DKanKan Mega/点群",
-            "3": "メディアライブラリ",
+            "5": "4DKanKan Meta/Point cloud",
             "4": "4DKanKan Mega/Mesh",
-            "5": "4DKanKan Meta/点群",
+            "2": "4DKanKan Mega/Point cloud",
+            "0": "4DKanKan Pro/Mesh",
+            "1": "4DKanKan Minion/Mesh",
+            "3": "Media Library",
             "6": "4DKanKan Meta/Mesh",
-            "7": "円周率/Mesh"
+            "7": "π/Mesh"
         }
     },
     "fuse": {
-        "name": "マルチ融合",
-        "label": "融合シーン",
-        "join": "結合",
-        "unModel": "モデルが存在しません!",
-        "model": "3Dモデル",
-        "pano": "パノラマ画像",
-        "dataQue": "データソース",
-        "dataSize": "データサイズ",
-        "dataTime": "撮影時関",
-        "sync": "同期検証",
-        "syncErr": "同期表示は{types}タイプのシーンのみサポートされます",
-        "repScale": "等倍スケーリング",
-        "defConfirm": "デフォルトに戻しますか?この操作は取り消せません",
-        "setScale": "スケール設定",
-        "opacity": "モデルの不透明度",
-        "registration": "位置合わせ",
-        "def": "デフォルトに戻す",
-        "move": "移動",
-        "flip": "回転",
-        "len": "長さ",
-        "reSelect": "ポイント再選択",
-        "selectTip": "2点を選択して実際の長さを入力してください",
-        "vre": "水平方向の位置を調整してください",
-        "hre": "垂直方向の位置を調整してください",
-        "opacity1": "不透明度"
+        "model": "3D model",
+        "registration": "Registration",
+        "len": "Length",
+        "selectTip": "Please select two points to mark a known length, and enter the actual length",
+        "opacity1": "Transparency",
+        "reSelect": "Reselect points",
+        "join": "Stitching",
+        "unModel": "Model does not exist!",
+        "label": "Merge scene",
+        "name": "Multi-convergence",
+        "dataTime": "Capture Time",
+        "dataSize": "Data size",
+        "dataQue": "Data source",
+        "repScale": "Uniform scaling",
+        "sync": "Simultaneous screen inspection",
+        "pano": "Panorama",
+        "syncErr": "Property viewing is only supported for {types} types of scenes. Please add this type of scene.",
+        "flip": "Rotate",
+        "opacity": "Model opacity",
+        "defConfirm": "Are you sure you want to restore to default? This action cannot be undone.",
+        "move": "Move",
+        "setScale": "Set scale",
+        "def": "Restore default",
+        "hre": "Please adjust the vertical position within the current window.",
+        "vre": "Please adjust the horizontal position within the current window."
+    },
+    "security": {
+        "name": "Security"
     },
-    "mediaLibrary": {
-        "file": "ファイル"
+    "floder": {
+        "name": "Case file",
+        "record": "Inspection Record",
+        "extractList": "Extraction List",
+        "photo": "Photo roll"
+    },
+    "view": {
+        "vName": "View",
+        "name": "View extraction",
+        "defName": "View{num}",
+        "nameErr": "View name cannot be empty",
+        "all": "All views"
+    },
+    "setting": {
+        "backs": [
+            "N/A",
+            "Map",
+            "Blue sky and white clouds",
+            "The sky is overcast with dark clouds.",
+            "Nighty sky",
+            "Evening"
+        ],
+        "name": "Setting",
+        "back": "Set sky",
+        "initView": "Initial Screen"
+    },
+    "record": {
+        "tag": "Tag",
+        "delConfirm": "Are you sure you want to delete this video?",
+        "nameErr": "Video name cannot be empty",
+        "defName": "Tutorial video{num}",
+        "list": "All videos",
+        "start": "Start recording",
+        "name": "Screen recording",
+        "vName": "Screen recording",
+        "con": "Continue recording",
+        "merge": "Merge videos",
+        "backHandler": "The backend is processing.",
+        "sizeErr": "The size limit has been exceeded, and recording cannot continue. You can save and resume recording!"
+    },
+    "case": {
+        "yv": "Yes",
+        "name": "Case information",
+        "sn": "Case name",
+        "summary": "Case summary",
+        "tmName": "Inspection information",
+        "cols": {
+            "criminalCase": "Is it a criminal case?",
+            "homicideCase": "Is it a homicide case?",
+            "caseTitle": "Case name",
+            "caseCategory": "Case category",
+            "caseRegion": "Incident area",
+            "crimeTime": "Incident time",
+            "caseNum": "Case number",
+            "caseAddress": "Incident location",
+            "latAndLong": "Latitude and Longitude"
+        },
+        "nv": "No",
+        "tmCols": {
+            "alarmName": "Reporter",
+            "alarmTime": "Report Time",
+            "commandTime": "Command Center Phone Hours",
+            "assignDept": "Assigned/Reporting Unit",
+            "inquestDept": "On-site inspection unit",
+            "assignType": "Assignment Method",
+            "inquestAddress": "Inspection location",
+            "times": "Inspection time"
+        }
     }
-}
+}

+ 12 - 38
src/lang/weblate/kr.json

@@ -48,8 +48,7 @@
             "sizeErr": "{name}의 크기가 {sizeStr}를 초과했습니다",
             "scaleErr": "{name}의 비율 부위는 {scale}이 아닙니다",
             "accSuperErr": "{accept} 형식의 파일만 지원합니다",
-            "lenErr": "최대 {maxLen}개의 파일만 지원됩니다!",
-            "previewErr": "미리보기 로딩에 실패했습니다!"
+            "lenErr": "최대 {maxLen}개의 파일만 지원됩니다!"
         },
         "cancel": "취소하다",
         "tip": "힌트",
@@ -61,10 +60,7 @@
         "jsError": "메모리가 부족합니다. 여러 페이지나 애플리케이션을 동시에 열지 마시고, 브라우저를 재시작한 후 다시 열어보십시오.",
         "pwdErr": "비밀번호가 틀렸습니다. 다시 입력해 주세요.",
         "viewPWD": "액세스 비밀번호",
-        "placPWD": "비밀번호를 입력해 주세요",
-        "rename": "다시 명명하다",
-        "errPage": "에러 페이지",
-        "quit": "나가다"
+        "placPWD": "비밀번호를 입력해 주세요"
     },
     "material": {
         "up": "+미디어 라이브러리에서 업로드",
@@ -81,8 +77,7 @@
             "format": "서식",
             "status": "상태"
         },
-        "selectErr": "최대 {count}항목을 선택하세요",
-        "search": "이름을 입력하여 검색하세요"
+        "selectErr": "최대 {count}항목을 선택하세요"
     },
     "view": {
         "name": "뷰 추출",
@@ -118,30 +113,19 @@
             "fontSize": "글자 크기",
             "applyConfirm": "이 속성을 모든 위치에 적용하시겠습니까?",
             "reverseDirection": "화살표 방향을 반대로 하다",
-            "pointTitle": "편집하다",
-            "lineWidth": "경로 두께",
-            "lineColor": "경로 색상",
-            "name": "노선",
-            "preview": "미리보기 경로"
-        },
-        "pathName": "노선({count})"
+            "pointTitle": "편집하다"
+        }
     },
     "measure": {
         "vertical": {
-            "desc": "수직",
-            "unit": "길이"
+            "desc": "수직"
         },
         "name": "측정하다",
         "list": "측정 목록",
         "free": {
-            "desc": "자유",
-            "unit": "길이"
+            "desc": "자유"
         },
-        "nameErr": "측정 명칭은 공란이 될 수 없습니다",
-        "area": {
-            "desc": "면적",
-            "unit": "면적"
-        }
+        "nameErr": "측정 명칭은 공란이 될 수 없습니다"
     },
     "setting": {
         "backs": [
@@ -203,8 +187,7 @@
         "tabs": {
             "method": "추출 방법",
             "typeId": "특징 기술",
-            "principal": "추출자",
-            "part": "유적 부분"
+            "principal": "추출자"
         },
         "name": "태그",
         "list": "태그 목록",
@@ -249,9 +232,7 @@
             "visibilityRange": "시야 범위",
             "lineHeight": "리드 높이"
         },
-        "posTip": "모델 위에서 클릭하여 라벨 위치를 선택해 주세요",
-        "plcPart": "유적 부분:",
-        "mic": "음악"
+        "posTip": "모델 위에서 클릭하여 라벨 위치를 선택해 주세요"
     },
     "scene": {
         "list": "장면 목록",
@@ -303,13 +284,6 @@
         "setScale": "비율을 설정하다",
         "hre": "현재 창에서 수직 방향 위치를 조정해 주세요",
         "vre": "현재 창에서 수평 방향 위치를 조정해 주세요",
-        "selectTip": "두 지점을 선택하여 알려진 길이를 표시하고, 실제 길이를 입력해 주세요",
-        "registration": "정합하다",
-        "opacity1": "투명도",
-        "reSelect": "다시 지점을 선택하다",
-        "len": "길이"
-    },
-    "mediaLibrary": {
-        "file": "공문서. 서류. 문건."
+        "selectTip": "두 지점을 선택하여 알려진 길이를 표시하고, 실제 길이를 입력해 주세요"
     }
-}
+}

Різницю між файлами не показано, бо вона завелика
+ 288 - 1163
src/lang/weblate/zh.json


+ 1 - 0
src/sdk/sdk.ts

@@ -232,6 +232,7 @@ export type PathProps = {
 }
 export type Path = {
   bus: Emitter<{
+    changeLineHeight: number
     activePoint: number
     // 标注点击事件
     click: void;

+ 9 - 2
src/views/folder/index.vue

@@ -22,7 +22,7 @@
 
 <script lang="ts" setup>
 import { LeftPano } from "@/layout";
-import { ref } from "vue";
+import { ref, watchEffect } from "vue";
 import { getUrlType, MetaType, saveAs } from "@/utils";
 import { Preview, MediaItem } from "@/components/static-preview/index.vue";
 import { floderRoots, getFlatFloders } from "@/store";
@@ -31,9 +31,16 @@ import Fire from "./fire/index.vue";
 
 import type { Floder, FloderRoot } from "@/store";
 import { useViewStack } from "@/hook";
-import { getResources, showRightPanoStack } from "@/env";
+import { getResources, params, showRightPanoStack } from "@/env";
 import { Message } from "bill/expose-common";
 import { ui18n } from "@/lang";
+import router, { RoutesName } from "@/router";
+
+watchEffect(() => {
+  if (router.currentRoute.value.name === RoutesName.fireInfo && params.ga !== "true") {
+    router.replace({ name: RoutesName.summaryShow });
+  }
+});
 
 const showInfo = ref(false);
 const currentNdx = ref(-1);