tangning 2 ヶ月 前
コミット
3d98a5e74c

+ 13 - 1
src/config/locale.vue

@@ -9,9 +9,21 @@ import { ref, computed } from 'vue'
 import { ui18n } from "@/i18n";
 import zh from "element-plus/dist/locale/zh-cn.mjs";
 import en from 'element-plus/dist/locale/en.mjs';
+import ja from 'element-plus/dist/locale/ja.mjs';
+import kr from 'element-plus/dist/locale/ko.mjs';
+
 const lang = ui18n.locale
 const locale = computed(() => {
   console.log('computedlang', lang);
-  return lang == "en" ? en : zh;
+  switch (lang.value) {
+    case 'ja':
+      return ja;
+    case 'kr':
+      return kr;
+    case 'en':
+      return en;
+    default:
+      return zh;
+  }
 });
 </script>

+ 49 - 15
src/i18n/weblate/en.json

@@ -158,7 +158,8 @@
             "irealTitle": "Small object modeling",
             "smart3DTitle": "Drone modeling",
             "media": "Media library",
-            "case": "Case management"
+            "case": "Case management",
+            "library": "Media Library"
         },
         "scene": {
             "name": "Title",
@@ -171,11 +172,12 @@
             "laserClo": "Point Cloud Scene",
             "laserObj": "Mesh Scene",
             "calcTip": "please be patient as producing obj files takes a long time.",
-            "editReCalc": "The editing scene has been recalculated"
+            "editReCalc": "The editing scene has been recalculated",
+            "calcDone": "Calculation Completion Time"
         },
-        "kankan": "4DKanKan Minion",
-        "laser": "4DKanKan Mega",
-        "shenguang": "4DKanKan Meta",
+        "kankan": "Minion",
+        "laser": "Mega",
+        "shenguang": "Meta",
         "other": {
             "currentSN": "Current SN:",
             "existsNot": "Use the SN code already present in the camera list, as the current SN code does not match.",
@@ -238,7 +240,8 @@
             "8008": "This function cannot be used due to the original data of the scene has expired.",
             "8009": "The copied scene does not support being recalculated",
             "8010": "The current scene necessitates a recalculation prior to generating to OBJ scenes. Confirm to recalculate?",
-            "8011": "The current scene necessitates a recalculation prior to downloading the offline package. Confirm to recalculate?"
+            "8011": "The current scene necessitates a recalculation prior to downloading the offline package. Confirm to recalculate?",
+            "3101": "Calculating"
         },
         "plugin": {
             "unzip": {
@@ -253,7 +256,7 @@
         "the3PartyWarmTip": "The third-party app is opening, please move to the third-party app later!",
         "yes1": "OK",
         "exit-msg": "The program will continue to run in the background after you close the page. To exit, please open the system tray in the lower right corner and select 'Exit Program'.",
-        "lang": "language",
+        "lang": "Multilingual",
         "selectAll": "All",
         "cantcal": {
             "content": {
@@ -297,7 +300,15 @@
             "calcing": "Calculating",
             "packingFailure": "Packaging failed.",
             "unPacking": "Not packaged",
-            "unGenerate": "Not generated"
+            "unGenerate": "Not generated",
+            "packed": "Packaging completed at {time}",
+            "stoping": "Pause",
+            "isCopyExist": "The scene already exists. Do you want to save it as a copy?",
+            "import": "Import",
+            "exportingOut": "Exporting...",
+            "firstPacking": "Packaging",
+            "updateAt": "Updating at",
+            "reFirstPacking": "Repackaged"
         },
         "multiLang": "Multi-language",
         "migrateScene": {
@@ -318,9 +329,24 @@
             "miss_case": "Please select scene!",
             "status_4": "Recalculating",
             "status_-1": "Calculation Failed",
-            "status_2": "Calculation successful"
+            "status_2": "Calculation successful",
+            "status_6": " In queue",
+            "errmsg_full": "Packaging failed: insufficient local storage space.",
+            "status_5": "Pause",
+            "status_7": "Copying...",
+            "errmsg": "Packaging error",
+            "packedTime": "Packing time",
+            "add_case": "New Case",
+            "empty": "No projects available",
+            "unKeySearch": "No projects found",
+            "local": "Local Path",
+            "status_1": "Calculation failed",
+            "errmsg_8038": "Scenario calculation in progress / Calculation failed, unable to package"
         },
-        "calcFailureTip": "Are you sure you want to recalculate? Some actions cannot be undone. Note: Recalculating the point cloud scene will clear some data, such as merged datasets, hotspots, etc. Please proceed with caution."
+        "calcFailureTip": "Are you sure you want to recalculate? Some actions cannot be undone. Note: Recalculating the point cloud scene will clear some data, such as merged datasets, hotspots, etc. Please proceed with caution.",
+        "ikown": "Get it",
+        "path_no_ample": "Insufficient disk space",
+        "path_no_exist": "The path does not exist."
     },
     "coord": {
         "edit": {
@@ -372,7 +398,8 @@
             "webMercator": "Geodetic coordinate",
             "gis": "Geodetic coordinate",
             "pro": "Projected coordinate"
-        }
+        },
+        "zoomLevel": "Zoom Level"
     },
     "dataset": {
         "exists": "Added",
@@ -569,7 +596,9 @@
         "exitWarmTip": "Exiting the program now will interrupt the task being synchronized or calculated, are you sure to exit?",
         "sysFailAndUdriveTip": "Synchronization fails, do not pull out the USB flash drive during synchronization, or modify the synchronized directory.",
         "noAppWarmTip": "The program was not detected. Please follow the operation instructions and place the program file in the following directory:",
-        "noAppUnknownError": "Operation failed. Recommended to check if the following applications are authorized:"
+        "noAppUnknownError": "Operation failed. Recommended to check if the following applications are authorized:",
+        "expand": "Expand",
+        "retract": "Collapse"
     },
     "measure": {
         "exportPDF": "Export PDF",
@@ -1108,7 +1137,12 @@
         "addScene": "Add Scene",
         "delTops": "Are you sure you want to delete?",
         "ycTips": "Are you sure you want to remove the current scene?",
-        "sceneName": "Scene name"
+        "sceneName": "Scene name",
+        "yctipsErr": "Unable to remove. The scene has been added to the multi-fusion. Please delete the scene from the multi-fusion before trying again.",
+        "searchData": "Search Results",
+        "yctips": "Unable to remove. The scene has been added to the multi-fusion. Please delete the scene from the multi-fusion before trying again.",
+        "nameSearch": "Search by name",
+        "selectAdd": "Select Address"
     },
     "mediaLibrary": {
         "title": "Media Library",
@@ -1155,8 +1189,8 @@
             "uplooadfiletype": "Supports jpg, png, jpeg, mp4, wav, mp3, shp, zip format file uploads.",
             "uplooadSize": "Uploaded files cannot exceed 2G!",
             "uplooadSuccess": "Uploaded successfully",
-            "objtips": "obj: You need to use a zip package to upload. Contains textures, models, and mtl files. The package must not contain folders, and the file name must not use Chinese. As shown in the figure: ",
-            "osgbtips": "Upload osgb: You need to use a zip package to upload. Contains Data folders and xml files. The package must not contain folders, and the file name must not use Chinese. As shown in the figure: ",
+            "objtips": "obj: You need to use a zip package to upload. Contains textures, models, and mtl files. The package must not contain folders, and the file name must not use Chinese. As shown in the figure:",
+            "osgbtips": "Upload osgb: You need to use a zip package to upload. Contains Data folders and xml files. The package must not contain folders, and the file name must not use Chinese. As shown in the figure:",
             "noName": "Please enter a name"
         },
         "file": "file"

+ 43 - 9
src/i18n/weblate/ja.json

@@ -49,7 +49,8 @@
         "lng": "軽度",
         "height": "座標高さ",
         "ctrls": "制御点",
-        "copySuccess": "コピー成功!"
+        "copySuccess": "コピー成功!",
+        "zoomLevel": "ズームレベル"
     },
     "program": {
         "rocre": {
@@ -210,7 +211,8 @@
             "smart3DTitle": "ドローンでモデルを生成",
             "irealTitle": "小型物体モデル",
             "media": "メディアライブラリ",
-            "case": "事件管理"
+            "case": "事件管理",
+            "library": "メディアライブラリ"
         },
         "scene": {
             "name": "物件名",
@@ -223,7 +225,8 @@
             "laserClo": "点群",
             "laserObj": "Obj",
             "calcTip": "Objの生成は少々長いので、お待ちください",
-            "editReCalc": "このシーンは再計算されました。"
+            "editReCalc": "このシーンは再計算されました。",
+            "calcDone": "計算完了時間"
         },
         "kankan": "4DKK_Minion",
         "laser": "4DKK_Mega",
@@ -290,7 +293,8 @@
             "8008": "この原本データは期間切れでした。この操作はできません。",
             "8009": "コピーのシーンは再計算がサポートされていません。",
             "8010": "このシーンのObj生成するには再計算が必要です。再計算を確定ですか?",
-            "8011": "このシーンのダウンロードは再計算が必要です。再計算を確定ですか?"
+            "8011": "このシーンのダウンロードは再計算が必要です。再計算を確定ですか?",
+            "3101": "計算中です"
         },
         "lackSuperPower": "権限が不足です。管理者としてソフトを起動してください。",
         "plugin": {
@@ -349,7 +353,15 @@
             "calcing": "計算中",
             "packingFailure": "パッケージングに失敗しました",
             "unPacking": "パッケージングされていない",
-            "unGenerate": "未生成"
+            "unGenerate": "未生成",
+            "packed": "{time}にパッケージング",
+            "stoping": "ていし",
+            "isCopyExist": "シーンは既に存在します。コピーとして保存しますか?",
+            "import": "インポート",
+            "exportingOut": "エクスポート中",
+            "firstPacking": "ファイル圧縮",
+            "updateAt": "更新日時:",
+            "reFirstPacking": "再パッケージ"
         },
         "case": {
             "create": "案件を作成",
@@ -366,13 +378,28 @@
             "miss_case": "シーンを選択してください",
             "status_4": "再計算中",
             "status_-1": "計算失敗",
-            "status_2": "計算成功"
+            "status_2": "計算成功",
+            "unKeySearch": "案件が見つかりませんでした",
+            "status_6": " 待ち行列中",
+            "status_5": "ていし",
+            "status_7": "コピー中",
+            "errmsg": "ファイルの圧縮に失敗しました。",
+            "errmsg_full": "ファイルの圧縮に失敗しました。ローカルの空き容量が不足しています。",
+            "packedTime": "圧縮時間",
+            "add_case": "新しい案件を追加",
+            "empty": "現在、案件はありません",
+            "local": "ローカルパス",
+            "status_1": "計算に失敗しました",
+            "errmsg_8038": "シナリオ計算中 / 計算失敗、パッケージ化できません"
         },
         "multiLang": "多言語",
         "migrateScene": {
             "fail_import": "導入に失敗しました。パッケージデータの形式を確認してください。"
         },
-        "calcFailureTip": "再計算を確定しますか?一部の操作は取り消すことができません。\n注意:点群シーンの再計算により、マージされたデータセットやホットスポットなどの一部のデータが削除されますので、ご注意ください。"
+        "calcFailureTip": "再計算を確定しますか?一部の操作は取り消すことができません。\n注意:点群シーンの再計算により、マージされたデータセットやホットスポットなどの一部のデータが削除されますので、ご注意ください。",
+        "ikown": "了解しました",
+        "path_no_ample": "ディスク容量が不足しています",
+        "path_no_exist": "指定されたパスは存在しません"
     },
     "crop": {
         "calcConfirm": "確認して計算しますか?\n計算には時間がかかる場合があるため、この操作を実行する前に点群\nのトリミングが完了していることを確認してください。",
@@ -1001,7 +1028,9 @@
         "exitWarmTip": "退出するにはシンクロ中または計算中のプロジェクトを中止します。退出を確認しますか?",
         "sysFailAndUdriveTip": "シンクロに失敗しました。USBの連続、または保存先のルートを確保してください。",
         "noAppWarmTip": "プログラムは検出されないです。操作説明に従って、プログラムファイルを以下のディレクトリに置いてください:",
-        "noAppUnknownError": "操作に失敗しました。以下のソフトがライセンスされているかを確認することをお勧めします。"
+        "noAppUnknownError": "操作に失敗しました。以下のソフトがライセンスされているかを確認することをお勧めします。",
+        "expand": "開く",
+        "retract": "折りたたむ"
     },
     "tool": {
         "magnify": "拡大鏡",
@@ -1108,7 +1137,12 @@
         "caseView": "案件をプレビュー",
         "delTops": "キャンセルを確定しますか",
         "ycTips": "現在のシーンを本当に削除しますか?",
-        "sceneName": "物件名"
+        "sceneName": "物件名",
+        "searchData": "検索結果",
+        "yctips": "削除できません。シーンはすでにマルチフュージョンに追加されています。マルチフュージョンに移動してシーンを削除してから、もう一度お試しください。",
+        "yctipsErr": "削除できません。シーンはすでにマルチフュージョンに追加されています。マルチフュージョンに移動してシーンを削除してから、もう一度お試しください。",
+        "nameSearch": "名前を入力して検索",
+        "selectAdd": "住所を選択"
     },
     "mediaLibrary": {
         "Modeling": "傾斜撮影",

+ 43 - 9
src/i18n/weblate/kr.json

@@ -141,7 +141,8 @@
             "laserClo": "점 클라우드 씬",
             "calcTip": "Obj 씬 생성에는 시간이 걸릴 수 있습니다. 잠시만 기다려 주세요.",
             "calc": "씬 계산",
-            "editReCalc": "편집 중인 씬이 재계산되었습니다."
+            "editReCalc": "편집 중인 씬이 재계산되었습니다.",
+            "calcDone": "계산이 완료되는 시간"
         },
         "errCode": {
             "204": "중복 전송하지 마십시오. 나중에 다시 시도하십시오",
@@ -156,7 +157,8 @@
             "3113": "카메라 인증 키가 유효하지 않습니다.",
             "3110": "카메라 키 교체는 재사용할 수 없습니다.",
             "3111": "카메라 키 교체가 유효하지 않습니다.",
-            "3107": "인증에 성공했습니다. 최신 인증 결과를 확인해 주세요."
+            "3107": "인증에 성공했습니다. 최신 인증 결과를 확인해 주세요.",
+            "3101": "계산 중"
         },
         "exit-msg": "페이지를 닫아도 프로그램은 백그라운드에서 계속 실행됩니다. 종료하려면 우측 하단 트레이에서 프로그램 종료를 선택해 주세요.",
         "OpenFile": {
@@ -197,7 +199,15 @@
             "migrageS_title": "장면 이전",
             "re_generate": "다시 생성",
             "re_calc_done_time": "재계산 완료 시간",
-            "buildEndTime": "재계산 완료 시간"
+            "buildEndTime": "재계산 완료 시간",
+            "packed": "컴퓨터 시스템, {time}에 패키징됨",
+            "isCopyExist": "장면이 이미 존재합니다. 복사본으로 저장하시겠습니까?",
+            "stoping": "중지",
+            "import": "가져오기",
+            "exportingOut": "내보내기 진행 중",
+            "firstPacking": "압축",
+            "updateAt": "{시간}에 업데이트됨",
+            "reFirstPacking": "다시 패키징"
         },
         "multiLang": "다국어",
         "menu": {
@@ -221,7 +231,8 @@
             "secoundLayout": "시스템",
             "settingLayout": "시스템 설정",
             "langTip": "선택한 경로에 중국어를 포함해서는 안 된다",
-            "selectTitle": "장면 저장 경로를 선택하세요"
+            "selectTitle": "장면 저장 경로를 선택하세요",
+            "library": "미디어 저장소"
         },
         "migrateScene": {
             "fail_import": "가져오기 실패, 올바른 씬 패키지 데이터를 업로드해 주세요."
@@ -241,7 +252,19 @@
             "status_2": "계산 성공",
             "miss_case_title": "케이스 이름을 입력해 주세요!",
             "miss_case": "씬을 선택해 주세요!",
-            "status_4": "재계산 중입니다."
+            "status_4": "재계산 중입니다.",
+            "status_6": " 컴퓨터 시스템, 대기 중",
+            "status_5": "컴퓨터 시스템, 중지",
+            "status_7": "복사 중",
+            "errmsg": "압축 실패",
+            "errmsg_full": "패키징에 실패했습니다. 로컬 저장 공간이 부족합니다.",
+            "packedTime": "압축 시간",
+            "add_case": "새로운 케이스 추가",
+            "empty": "프로젝트가 없습니다",
+            "unKeySearch": "프로젝트를 찾을 수 없습니다",
+            "local": "로컬 경로",
+            "status_1": "계산 실패",
+            "errmsg_8038": "시나리오 계산 중 / 계산 실패, 패키징 할 수 없습니다"
         },
         "cantcal": {
             "content": {
@@ -320,7 +343,10 @@
         "lang": "언어",
         "jxcalc": "계산을 계속 진행하시겠습니까?",
         "back": "돌아가다",
-        "linkUP": "USB 메모리를 연결하다"
+        "linkUP": "USB 메모리를 연결하다",
+        "ikown": "알겠습니다",
+        "path_no_ample": "디스크 공간이 부족합니다",
+        "path_no_exist": "해당 경로가 존재하지 않습니다."
     },
     "common": {
         "sure": "확정",
@@ -413,7 +439,8 @@
         "lat": "위도",
         "lng": "경도",
         "height": "고도",
-        "selectType": "좌표 유형을 선택하세요"
+        "selectType": "좌표 유형을 선택하세요",
+        "zoomLevel": "줌 레벨"
     },
     "view": {
         "scene": "3D",
@@ -1065,7 +1092,9 @@
         "leave": "나가다",
         "hide": "숨기기",
         "reset": "재설정하다",
-        "downloadWXSuccess": "브라우저로 열어서 다시 시도해 주세요"
+        "downloadWXSuccess": "브라우저로 열어서 다시 시도해 주세요",
+        "retract": "접기",
+        "expand": "펼치기"
     },
     "sceneDetail": {
         "title": "씬 데이터"
@@ -1079,7 +1108,12 @@
         "delTops": "삭제하시겠습니까?",
         "ycTips": "현재 씬을 제거하시겠습니까?",
         "sceneName": "장면 이름",
-        "caseView": "케이스 미리보기"
+        "caseView": "케이스 미리보기",
+        "searchData": "검색 결과",
+        "yctips": "제거할 수 없습니다. 장면이 다원 융합에 포함되어 있습니다. 다원 융합에 들어가 장면을 삭제한 후 다시 시도하세요.",
+        "selectAdd": "주소 선택",
+        "yctipsErr": "제거할 수 없습니다. 장면이 다원 융합에 포함되어 있습니다. 다원 융합에 들어가 장면을 삭제한 후 다시 시도하세요.",
+        "nameSearch": "이름 입력 후 검색"
     },
     "mediaLibrary": {
         "Modeling": "경사 촬영",

+ 100 - 11
src/i18n/weblate/zh.json

@@ -82,6 +82,7 @@
         "serverErr": "服务出现问题,稍后重试",
         "yes": "是",
         "no": "否",
+        "ikown": "我知道了",
         "continueDown": "继续下载",
         "delete": "删除",
         "back": "返回",
@@ -159,7 +160,7 @@
             "init": "初次生成",
             "success": "已生成",
             "reset": "正在重新生成",
-            "down": "下载",
+            "down": "离线包",
             "downSuccess": "下载成功",
             "recalc": "重算",
             "fush": "融合",
@@ -171,7 +172,7 @@
                 "un": "未计算",
                 "ing": "计算中",
                 "err": "计算失败",
-                "pause": "计算暂停",
+                "pause": "停",
                 "copy": "复制中",
                 "lineup": "排队中"
             },
@@ -184,8 +185,8 @@
                 "com": "编辑",
                 "copy": "正在复制"
             },
-            "delMsg": "删除后不可恢复,确定删除此数据?",
-            "recalcMsg": "确定重算?部分此操作无法撤销。 注意:重算点云场景会清空部分数据如合并的数据集、热点等,请谨慎操作。",
+            "delMsg": "确定删除?此操作无法撤销。",
+            "recalcMsg": "确定重算?部分此操作无法撤销。",
             "e57GenIng": "生成e57中",
             "e57Gen": "生成e57",
             "e57Down": "下载e57"
@@ -196,7 +197,7 @@
             "scene": "场景管理",
             "camera": "相机管理",
             "edit": "场景编辑",
-            "case": "案件",
+            "case": "案件管理",
             "library": "媒体库",
             "secoundLayout": "系统",
             "settingLayout": "设置系统",
@@ -281,6 +282,7 @@
         "gotoDeskSetting": "去设置",
         "errCode": {
             "204": "不允许重复提交,请稍后再试",
+            "3101": "正在计算中",
             "3106": "相机授权Key与当前设备不匹配",
             "3107": "验证成功,请查看最新授权结果。",
             "3108": "相机授权Key不能重复使用",
@@ -346,10 +348,11 @@
             "shootStartTime": "开始拍摄时间",
             "buildTime": "计算时长",
             "buildEndTime": "重算完成时间",
+            "packed": "于{time}打包",
             "packing": "打包中",
             "calcing": "计算中",
             "exporting": "导入中",
-            "packingFailure": "打包失败",
+            "packingFailure": "计算失败",
             "unPacking": "未打包",
             "unGenerate": "未生成",
             "firstPacking": "打包",
@@ -378,6 +381,7 @@
             "status_4": "重算中",
             "status_3": "未计算",
             "updateTime": "更新时间",
+            "packedTime": "打包时间",
             "miss_case_title": "请填写案件名称!",
             "miss_case": "请选择场景!",
             "add_case": "新增案件",
@@ -385,10 +389,16 @@
             "status_6": " 排队中",
             "status_7": "复制中",
             "status_1": "计算失败",
-            "empty": "暂无项目"
+            "empty": "暂无项目",
+            "local": "本地路径",
+            "unKeySearch": "未搜索到项目",
+            "errmsg": "打包失败",
+            "errmsg_full": "打包失败,本地空间存储不足。",
+            "errmsg_8038": "场景计算中/计算失败,无法打包。"
         },
-        "calcFailureTip": "确定重算?部分此操作无法撤销。 注意:重算点云场景会清空部分数据如合并的数据集、热点等,请谨慎操作。",
-        "path_no_exist": "该路径不存在。"
+        "calcFailureTip": "确定重算?部分此操作无法撤销。",
+        "path_no_exist": "该路径不存在。",
+        "path_no_ample": "磁盘空间不足"
     },
     "crop": {
         "title": "裁剪点云",
@@ -1131,7 +1141,86 @@
         "searchData": "搜索结果",
         "yctips": "无法移除,场景已加入多元融合,请进入多元融合删除场景后再试",
         "yctipsErr": "无法移除,场景已加入多元融合,请进入多元融合删除场景后再试",
-        "selectAdd": "选择地址"
+        "selectAdd": "选择地址",
+        "errCode": {
+            "0": "操作成功",
+            "1": "操作失败",
+            "500": "系统错误",
+            "3008": "用户已存在,可直接登录。",
+            "3014": "账号或密码不正确",
+            "4001": "参数缺少",
+            "4006": "该账号已停止使用",
+            "4008": "用户未登录",
+            "4009": "没有角色",
+            "4010": "没有权限",
+            "4011": "没有部门",
+            "4012": "用户已存在",
+            "4013": "用户不存在",
+            "4014": "两次密码不一致,请重新输入",
+            "4015": "当前账号无权限,请联系相关管理员处理",
+            "4016": "火调项目不存在",
+            "4017": "链接未授权或已失效,无法访问",
+            "4018": "访问密码缺失",
+            "4019": "密码错误,请重新输入。",
+            "4020": "路由解析失败",
+            "4021": "访问密码只能是4位字母或数字",
+            "4022": "访问密码为生成",
+            "4023": "验证码不正确",
+            "4024": "验证码获取过于频繁请稍后",
+            "6000": "该用户已绑定相机,请先绑定至其他用户,再修改该用户所属架构。",
+            "6001": "该组织已存在,请勿重复创建",
+            "6002": "存在下级组织,不可删除",
+            "6003": "组织下存在用户,不可删除",
+            "6004": "相机不存在",
+            "6005": "相机已绑定,不可重复绑定",
+            "6006": "部门不存在",
+            "6007": "火调项目已经存在,无需重复添加",
+            "6008": "项目未关联场景",
+            "6009": "案件不存在",
+            "6010": "修改失败,部门上级不能是自己或下级",
+            "6011": "部门上限为四级",
+            "6012": "无权操作",
+            "7001": "文件上传失败",
+            "7002": "上传文件不存在",
+            "7003": "文件上传过大",
+            "7004": "热点icon不存在",
+            "7005": "文件类型错误",
+            "7006": "文件内容错误",
+            "7007": "文件内容错误,缺少obj",
+            "7008": "系统默认icon不存在",
+            "7009": "系统默认icon不能删除",
+            "7010": "当前场景已被使用,不可删除",
+            "7011": "视频文件夹不存在",
+            "7012": "案件不存在",
+            "7013": "合成视频失败",
+            "7014": "模型不存在",
+            "7015": "当前场景已被删除",
+            "7016": "文件名不能包含中文",
+            "7017": "文件名超过长度限制",
+            "7018": "场景资源文件为空,无法添加",
+            "7019": "案件已有设置,无法新增",
+            "7020": "深时点云场景下载失败",
+            "7021": "文件不存在,或已被刪除",
+            "7022": "案件图标超过上限",
+            "7023": "场景被移除",
+            "8022": "相机容量不足",
+            "8023": "该案件已有勘验笔录",
+            "8024": "该案件未有勘验笔录",
+            "8025": "相机版本号已存在",
+            "8026": "相机版本号不存在",
+            "8027": "相机版本状态错误",
+            "8028": "媒体库文件不存在",
+            "8029": "授权访问失败",
+            "8030": "无法移除,场景已加入多元融合,请进入多元融合删除场景后再试",
+            "8031": "文件类型不符合规则",
+            "8032": "上传失败,请检查文件格式。",
+            "8033": "文件名不得含有中文",
+            "8034": "解压失败",
+            "8035": "获取磁盘空间失败",
+            "8036": "磁盘空间不足",
+            "8037": "场景下载失败",
+            "8038": "场景计算中/计算失败,无法打包。"
+        }
     },
     "mediaLibrary": {
         "title": "媒体库",
@@ -1178,7 +1267,7 @@
             "uplooadfiletype": "支持jpg、png、jpeg、mp4、wav、mp3 、shp、zip格式文件上传。",
             "uplooadSize": "文件大小 ≤ 2G!",
             "uplooadSuccess": "上传成功",
-            "objtips": "上传 obj:需使用zip包上传。包含贴图、模型、mtl文件,文件名不得使用中文。如图:",
+            "objtips": "上传 obj:需使用zip包上传。包含贴图、模型、mtl文件,包内不得包含文件夹,文件名不得使用中文。如图:",
             "osgbtips": "上传 osgb:需使用zip包上传。包含 Data 文件夹、xml文件,包内不得包含文件夹,文件名不得使用中文。如图:",
             "noName": "请输入名称"
         },

+ 1 - 1
src/request/index.ts

@@ -112,7 +112,7 @@ const responseInterceptor = (res: AxiosResponse<any, any>) => {
   //     window.open(window.location.origin + "/admin/#/statistics/scene");
   //   });
   // };
-  // console.log("responseInterceptor", res);
+  console.log("responseInterceptor", res);
   if (!successCode.includes(res.data.code) && res.config.responseType != "blob") {
     let errMsg = res.data.msg || res.data.message;
     openErrorMsg(errMsg);

+ 48 - 3
src/store/case.ts

@@ -45,6 +45,7 @@ import {
   fileaddOrUpdate,
   uploadUrl,
 } from "@/request";
+import { useI18n } from "@/i18n";
 import { router } from "@/router";
 import { ModelScene, QuoteScene, Scene, SceneType } from "./scene";
 import { CaseFile } from "./caseFile";
@@ -310,17 +311,56 @@ export const getTipsList = (key) =>
     }
   });
 
-  export const getGaoDeGaoDeList = (key,type=1) =>{
+  export const getGaoDeGaoDeList = (key,type=1, isGoogle = true) =>{
+    const {locale} = useI18n()
     let url = `https://restapi.amap.com/v3/place/text?keywords=${key}&page=1&offset=5&output=JSON&key=3609daa52e8ae4493393292213e2fb98`
+    if(!isGoogle){
+      url = `https://places.googleapis.com/v1/places:searchText`
+    }
     if(type != 1){
       url = `https://restapi.amap.com/v3/geocode/regeo?location=${key}&&radius=1000&extensions=all&key=3609daa52e8ae4493393292213e2fb98`
     }
+    
+    if(type != 1 && !isGoogle){
+      url = `https://geocode.googleapis.com/v4beta/geocode/location/${key}?key=AIzaSyCXrpYDFKCValgJgc5TDIbZHrOdKSHAq-M`
+    }
     return axios.post('/fusion/notAuth/forwardReq',  { 
-          "method":"get",
+          "method":!isGoogle && type == 1?"post":"get",
+          "headers":{
+            // "languageCode": locale.value,
+            // "language": locale.value,
+            'Content-Type': 'application/json',
+            'X-Goog-Api-Key': 'AIzaSyCXrpYDFKCValgJgc5TDIbZHrOdKSHAq-M',
+            'X-Goog-FieldMask': 'places.displayName,places.formattedAddress,places.id,places.location',
+          },
           url,
+          jsonParam:{
+            "textQuery" : key,
+            "languageCode": 'zh-CN',
+            // "language": locale.value
+          },
      });
   }
   
+  
+  export const getGoogleList = (key,type=1) =>{
+    let url = `https://places.googleapis.com/v1/places:searchText`
+    if(type != 1){
+      url = `https://restapi.amap.com/v3/geocode/regeo?location=${key}&&radius=1000&extensions=all&key=3609daa52e8ae4493393292213e2fb98`
+    }
+    return axios.post('/fusion/notAuth/forwardReq',  { 
+          "method":"post",
+          "headers":{
+            'Content-Type': 'application/json',
+            'X-Goog-Api-Key': 'AIzaSyCXrpYDFKCValgJgc5TDIbZHrOdKSHAq-M',
+            'X-Goog-FieldMask': 'places.displayName,places.formattedAddress,places.id,places.location',
+          },
+          jsonParam:{
+            "textQuery" : key,
+          },
+          url,
+     });
+  }
 export const getTipsNames = (name) =>
   axios.get(getTipsName, { params: { name } });
 
@@ -375,6 +415,11 @@ export const getUrlSrc = (item, caseId) => {
   param.swssmxUrl = `${params.swssUrl}?lang=${langKey}&serve_link=${param.laserRoot}&basePath=${param.laserRoot}&m=${item.num}`;
   param.swkkUrl = `${params.swkkUrl}?lang=${langKey}&app_server=${params.ip}:${params.swkkPort}&m=${item.num}&app_resource=${param.root}/${item.mapping}`;
   param.fuse = `${params.fuse}?caseId=${caseId}&ip=${params.ip}&ga=${params.ga}&swkkPort=${params.swkkPort}&swssUrl=${params.swssUrl }&swkkUrl=${params.swkkUrl && params.swkkUrl.replace('epg','spg')}&laserServicePort=${params.laserServicePort}&servicePort=${params.servicePort}&lang=${langKey}&app_server=${ip}${params.swkkPort}&testMap=1&static=${params.static||''}&`;
+  let param101 = ''
+  if(item.type == 101){
+    param101 = `title=${item.fileName}&single&type=${item.fileFormat}&fileUrl=${item.fileUrl}&convertType =${item.convertType}`
+    item.wgs84 && (param101 + `&wgs84=${item.wgs84}&gcj02=${item.gcj02}`)
+  }
   let SceneType = {
     0: param.swkkUrl,//`/spg.html?m=${item.num}`,
     1: param.swkkUrl,//`/spg.html?m=${item.num}`,
@@ -386,7 +431,7 @@ export const getUrlSrc = (item, caseId) => {
     7: param.swkkUrl,//`/spg.html?m=${item.num}`,
     99: param.fuse + '#/show/fireInfo',//多元融合查看页面`/code/index.html?caseId=${caseId}&single#/show`,
     100: param.fuse + '#/fuseEdit/merge',//多元融合编辑页面`/code/index.html?caseId=${caseId}&single#/show`,
-    101: param.fuse + `title=${item.fileName}&single&type=${item.fileFormat}&fileUrl=${item.fileUrl}` + '#/sign-model',//多元融合模型查看页面`/code/index.html?caseId=${caseId}&single#/show`,
+    101: param.fuse + param101 + '#/sign-model',//多元融合模型查看页面`/code/index.html?caseId=${caseId}&single#/show`,
     102: param.root,//资源访问链接,
   };
   return SceneType[item.type];

+ 39 - 11
src/view/case/draw/selectMapleaftImages.vue

@@ -42,9 +42,10 @@
 
 <script setup lang="ts">
 import AMapLoader from "@amap/amap-jsapi-loader";
+import { Loader } from "@googlemaps/js-api-loader"
 import { Search } from "@element-plus/icons-vue";
 import { wgs84_to_gcj02 } from "./map";
-import { getTipsList, getGaoDeGaoDeList, getTipsNames, getCaseInfo } from "@/store/case";
+import { getTipsList, getGaoDeGaoDeList, getGoogleList, getTipsNames, getCaseInfo } from "@/store/case";
 import { ref, watchEffect, onMounted, computed } from "vue";
 import { QuiskExpose } from "@/helper/mount";
 import { ElMessage, ElMessageBox, genFileId } from "element-plus";
@@ -78,7 +79,11 @@ var Gaode = L.tileLayer.chinaProvider("GaoDe.Normal.Map", {
 var baseLayers = {
   [ui18n.t("coord.edit.gmap")]: Gaode,
 };
-
+const loader = new Loader({
+  apiKey: "AIzaSyBGUvCR1bppO9pfuS0MUWzuftiZ127y4Os",
+  version: "weekly",
+  libraries: ["places"], // 可选:加载额外的库,例如 places 库
+});
 let map: any = {};
 const issearch = ref(false);
 let clickMarker;
@@ -108,7 +113,7 @@ function detectProxy() {
         img.onerror = () => resolve(true);
         img.src = `https://www.google.com/images/searchbox/desktop_searchbox_sprites318_hr.webp?t=${Date.now()}`;
         // 设置超时
-        setTimeout(() => resolve(true), 1000);
+        setTimeout(() => resolve(true), 1500);
     });
 }
 onMounted(async () => {
@@ -122,7 +127,7 @@ if(!isGoogle.value){
     center = caseInfoData.value.latAndLong.split(",");
   }
   console.log("caseInfoData", caseInfoData.value.latAndLong, center);
-
+  isGoogle.value = true
   // 'map'为HTML节点id
   map = L.map(mapEl.value, {
     center: center, //中心坐标
@@ -142,16 +147,24 @@ if(!isGoogle.value){
   }
   console.log("baseLayers", baseLayers);
   L.control.layers(baseLayers, null).addTo(map);
+  map.on('baselayerchange',function(res){
+    isGoogle.value = res.name === "Google map" ? false : true;
+  })
   map.on("click", async function (e) {
     // 获取点击位置的经纬度坐标
     console.log("click", e);
     var latitude = e.latlng.lat;
     var longitude = e.latlng.lng;
     console.log("click", e, [longitude, latitude]);
-    let ress = await getGaoDeGaoDeList(`${longitude},${latitude}`, 2)
-    let data = ress.data && JSON.parse(ress.data) || {};
-    console.log("click",data, ress);
-    let formatted_address = data.regeocode && data.regeocode.formatted_address || "";
+    let formatted_address = ''
+    if(!isGoogle.value){
+      let ress = await getGaoDeGaoDeList(`${longitude},${latitude}`, 2, isGoogle.value)
+      let data = ress.data && JSON.parse(ress.data) || {};
+      console.log("click",data, ress);
+      formatted_address = data.regeocode && data.regeocode.formatted_address || "";
+    }else{
+      formatted_address  = `${latitude}, ${longitude}`
+    }
     searchInfo.value = {
       text: formatted_address.length ? formatted_address : "",
       lat: latitude,
@@ -196,20 +209,35 @@ watchEffect(async (onCleanup) => {
 const placeSearch = async () => {
   // let res = await
 }
+const placeGgSearch = async () => {
+  const { Place } = loader("places");
+  loader.Place.searchByText().then(async (res) => {
+    console.log("res", res);
+
+});
+}
 const getMapInfo = (): MapInfo => {
   var zoom = map.getZoom(); //获取当前地图级别
   var center = map.getCenter();
   return {
     text: "",
-    zoom,
-    lat: center.lat,
     lng: center.lng,
   };
 };
 const onSearch = (val) => {
   issearch.value = true;
-  getGaoDeGaoDeList(val).then((res) => {
+  getGaoDeGaoDeList(val, 1, isGoogle.value).then((res) => {
     let data = res.data && JSON.parse(res.data);
+    if(!isGoogle.value){
+      data.pois = data.places.map(item => {
+        return {
+          ...item,
+          location: `${item.location.longitude},${item.location.latitude}`,
+          name: item.displayName.text,
+
+        }
+      })
+    }
     keywordList.value = data.pois;
     keyword.value = val;
     console.log("getTipsList",data, keywordList.value, keyword.value);

+ 4 - 4
src/view/material/index.vue

@@ -245,15 +245,15 @@ const handleCommand =  async (command: string | number | object, item) => {
       break;
     default:
       // window.open(item.filesUrl)
-      console.log("other", item);
-      if(item.filesId){
+      var suffix = item.filesUrl && item.filesUrl.match(/.[^.]+$/)[0] || '.docx';//.txt
+      console.log("downloadFile", item, suffix)
+      if(item.filesId && item.createType == 'online'){
           const res = await exportCaseInquestInfo(item.filesId);
           const href = URL.createObjectURL(res)
-          var suffix = item.filesUrl && item.filesUrl.match(/.[^.]+$/)[0] || '.docx';//.txt
           saveAs(href, item.filesTitle+suffix);
           return;
       }
-      downloadFile(item.filesUrl, item.filesTitle)
+      downloadFile(item.filesUrl, item.filesTitle+suffix)
   }
   // ElMessage(`click on item ${command}`)
 }

+ 1 - 1
src/view/vrmodel/list.vue

@@ -2,7 +2,7 @@
   <com-head :options="headOptions" v-model="params.pagging.state.query.isObj">
     <el-form label-width="84px" inline>
       <slot name="header" />
-      <el-form-item class="searh-btns" style="grid-area: 1 / 4 / 2 / 4">
+      <el-form-item class="searh-btns" style="grid-area: 1 / 5 / 2 / 7">
         <el-button type="primary" @click="params.pagging.refresh">{{$t('program.case.query')}}</el-button>
         <el-button type="primary" plain @click="params.pagging.queryReset"
           >{{$t('sys.reset')}}</el-button