瀏覽代碼

feat: 同步翻译和下载模块

jinx 1 年之前
父節點
當前提交
ee6509c2d1

File diff suppressed because it is too large
+ 16 - 0
packages/app-cdfg/src/assets/svg/guide/pic_kankan.svg


File diff suppressed because it is too large
+ 9 - 0
packages/app-cdfg/src/assets/svg/repair/down.svg


File diff suppressed because it is too large
+ 13 - 0
packages/app-cdfg/src/assets/svg/repair/mosaic-icon.svg


+ 23 - 1
packages/app-cdfg/src/locales/zh.json

@@ -249,6 +249,21 @@
     },
     "video.name": "空間貼圖",
     "repair": {
+      "toolbar": {
+        "screenShot": "截屏",
+        "resetCamera": "水平放置相機",
+        "resetSize": "恢復1:1視圖",
+        "uploadMark": "上传水印",
+        "opacity": "透明度",
+        "scale": "缩放",
+        "move": "移动",
+        "addWaterMaskTips": "已上传的水印将会被替换,是否继续?",
+        "leftTop": "左上角",
+        "rightTop": "右上角",
+        "centerCenter": "居中",
+        "leftBottom": "左下角",
+        "rightBottom": "右下角"
+    },
         "toolbox": {
             "sceneModel": "場景模型",
             "sceneModelTips1": "如何使用場景模型?",
@@ -281,7 +296,14 @@
             "modelTips": "上傳模型前請查看",
             "contorlTips": "操作提示",
             "controlTips_zh": "該功能需要使用場景原始數據,需要較長時間等待,如需繼續使用,請微信掃碼聯系客服:",
-            "controlTips_en": "該功能需要使用場景原始數據,需要較長時間等待,如需繼續使用,請聯系客服 service{'@'}4dage.com<br/>我們將在收到郵件後第一時間聯系您。"
+            "controlTips_en": "該功能需要使用場景原始數據,需要較長時間等待,如需繼續使用,請聯系客服 service{'@'}4dage.com<br/>我們將在收到郵件後第一時間聯系您。",
+            "fileLarge_zh": "文件過大,下載失敗。如需繼續下載,請微信掃碼聯繫客服:",
+            "fileLarge_en": "文件過大,下載失敗。如需繼續下載,請聯繫客服 service{'@'}4dage.com ",
+            "process": "後台正在處理您的請求,請耐心等待",
+            "processFinish": "後台已完成處理,您現在可以下載全景圖",
+            "processFailed": "後台處理失敗,請重試",
+            "uploadSingle": "單張上傳",
+            "uploadMore": "批量上傳"
         }
     },
     "repair.name": "場景修復",

+ 248 - 84
packages/app-cdfg/src/store/modules/repair.js

@@ -1,84 +1,248 @@
-// import * as apis from '@/apis/scene-edit.js'
-import { useApp, getApp, getNum } from '@/app'
-import { Loading, Dialog } from '@kankan/components'
-
-export default {
-    namespaced: true,
-    state() {
-        return {
-            mosaic: false,
-            screenshot: false,
-        }
-    },
-    getters: {
-        mosaic: state => state.mosaic,
-        screenshot: state => state.screenshot,
-    },
-    mutations: {
-        setData(state, payload) {
-            for (let key in payload) {
-                state[key] = payload[key]
-            }
-        },
-        update(state, payload) {
-            this.commit('enterEdit')
-        },
-        cancel(state, payload) {
-            state.mosaic = false
-            state.screenshot = false
-            getApp().RepairManager.edit.exitMosicEditing()
-            this.commit('leaveEdit')
-
-            this.commit('setToolbox', { show: true })
-            this.commit('setToolbar', { show: true, full: false })
-            this.commit('setSceneUI', true)
-        },
-    },
-    actions: {
-        save({ state, commit, dispatch, rootGetters }, payload) {
-            let data = getApp().RepairManager.edit.getMosaicSavingInfo()
-            const panoId = rootGetters['panoId']
-            const params = {
-                num: getNum(),
-                data: JSON.stringify([{ panoId, rect: data.rect, dir: data.dir }]),
-            }
-
-            return getApp()
-                .remote_editor.mosaics_add(params)
-                .then(res => {
-                    if (res.success) {
-                        commit('cancel')
-                    }
-                    return res
-                })
-                .catch(err => {
-                    console.log(err)
-                    return err
-                })
-        },
-        uploadPanorama({ commit, state }, payload) {
-            return getApp().remote_editor.uploadPanorama(payload)
-        },
-        downloadPanorama({ commit, state, rootState }, payload) {
-            let parmas = { num: rootState.scene.metadata.num }
-            return getApp().remote_editor.downloadPanorama({ ...parmas, ...payload })
-        },
-
-        uploadModel({ commit, state, rootState }, payload) {
-            let parmas = { num: rootState.scene.metadata.num }
-            return getApp().remote_editor.uploadModel({ ...parmas, ...payload })
-        },
-        downloadModel({ commit, state, rootState }, payload) {
-            let parmas = { num: rootState.scene.metadata.num }
-            return getApp().remote_editor.downloadModel({ ...parmas })
-        },
-        uploadVideo({ commit, state, rootState }, payload) {
-            let parmas = { num: rootState.scene.metadata.num }
-            return getApp().remote_editor.uploadBallScreenVideo({ ...parmas, ...payload })
-        },
-        downloadVideo({ commit, state, rootState }, payload) {
-            let parmas = { num: rootState.scene.metadata.num }
-            return getApp().remote_editor.downloadBallScreenVideo({ ...parmas, ...payload })
-        },
-    },
-}
+// import * as apis from '@/apis/scene-edit.js'
+import { useApp, getApp, getNum } from '@/app'
+import { Loading, Dialog } from '@kankan/components'
+
+export default {
+    namespaced: true,
+    state() {
+        return {
+            metadata: null,
+            enterMosaic: false,
+            showMosaics: false,
+            screenshot: false,
+            waterMark: null,
+            mosaics: [],
+        }
+    },
+    getters: {
+        enterMosaic: state => state.enterMosaic,
+        showMosaics: state => state.showMosaics,
+        mosaics: (state, getters, rootState, rootGetters) => {
+            const mosaics = rootGetters['scene/metadata'].mosaicList || []
+            state.mosaics = JSON.parse(JSON.stringify(mosaics))
+            return state.mosaics
+        },
+        screenshot: state => state.screenshot,
+        waterMark: (state, getters, rootState, rootGetters) => {
+            state.metadata = rootGetters['scene/metadata']
+            if (!state.waterMark) {
+                state.waterMark = state.metadata.waterMark || null
+            }
+            return state.waterMark
+        },
+    },
+    mutations: {
+        setData(state, payload) {
+            for (let key in payload) {
+                state[key] = payload[key]
+            }
+        },
+        update(state, payload) {
+            this.commit('enterEdit')
+        },
+        cancel(state, payload) {
+            state.showMosaics = false
+            state.enterMosaic = false
+            state.screenshot = false
+            // getApp().RepairManager.edit.exitMosicEditing()
+            getApp().MinMap.hide(true)
+            this.commit('leaveEdit')
+
+            this.commit('setToolbox', { show: true })
+            this.commit('setToolbar', { show: true, full: false })
+            this.commit('setSceneUI', true)
+        },
+        save(state, payload) {
+            state.enterMosaic = false
+            state.screenshot = false
+            // getApp().RepairManager.edit.exitMosicEditing()
+            // this.commit('leaveEdit')
+
+            this.commit('setToolbox', { show: true })
+            this.commit('setToolbar', { show: true, full: false })
+            this.commit('setSceneUI', true)
+        },
+    },
+    actions: {
+        deleteWaterMark({ state, commit, dispatch, rootGetters }, payload) {
+            const params = {
+                num: getNum(),
+                fileName: state.waterMark,
+            }
+            Loading.show()
+            return new Promise((resolve, reject) => {
+                getApp()
+                    .remote_editor.waterMark_delete(params)
+                    .then(res => {
+                        Loading.hide()
+                        if (res.success) {
+                            state.waterMark = null
+                            // let metadata = JSON.parse(JSON.stringify(state.metadata))
+                            if (state.metadata.waterMark) {
+                                delete state.metadata.waterMark
+                            }
+
+                            this.commit('scene/update', state.metadata)
+                            state.waterMark = null
+                            resolve({ type: 'toast', tips: 'success', msg: 'common.deleteSuccess' })
+                        } else {
+                            resolve({ type: 'toast', tips: 'error', msg: 'common.deleteFail' })
+                        }
+                    })
+                    .catch(err => {
+                        Loading.hide()
+                        resolve({ type: 'toast', tips: 'error', msg: 'common.deleteFail' })
+                        reject(err)
+                    })
+            })
+        },
+        deleteMosaic({ state, commit, dispatch, rootGetters }, payload) {
+            const params = {
+                num: getNum(),
+                panoIdList: payload.panoIdList,
+            }
+            Loading.show()
+            return new Promise(function (resolve, reject) {
+                getApp()
+                    .remote_editor.mosaics_delete(params)
+                    .then(res => {
+                        Loading.hide()
+
+                        if (res.success) {
+                            // if (payload.index) {
+                            //     state.mosaics.splice(payload.index, 1)
+                            // } else {
+                            //     state.mosaics = []
+                            // }
+
+                            //遍历删除马赛克
+                            let list = []
+                            for (let i = 0; i < payload.panoIdList.length; i++) {
+                                for (let j = 0; j < state.mosaics.length; j++) {
+                                    if (payload.panoIdList[i] == state.mosaics[j].panoId) {
+                                        list.push(j)
+                                    }
+                                }
+                                getApp().RepairManager.edit.deletePaint(payload.panoIdList[i])
+                            }
+                            for (let i = list.length - 1; i >= 0; i--) {
+                                state.mosaics.splice(list[i], 1)
+                            }
+                            resolve({ type: 'toast', tips: 'success', msg: 'common.deleteSuccess' })
+                        } else {
+                            resolve({ type: 'toast', tips: 'error', msg: 'common.deleteFail' })
+                        }
+                    })
+                    .catch(err => {
+                        Loading.hide()
+                        resolve({ type: 'toast', tips: 'error', msg: 'common.deleteFail' })
+                        reject(err)
+                        console.error(err)
+                    })
+            })
+        },
+        saveWaterMark({ state, commit, dispatch, rootGetters }, payload) {
+            const params = {
+                num: getNum(),
+                fileName: payload.fileName,
+            }
+
+            return new Promise(function (resolve, reject) {
+                getApp()
+                    .remote_editor.waterMark_add(params)
+                    .then(res => {
+                        if (res.success) {
+                            resolve(res)
+                        } else {
+                            resolve(res)
+                        }
+                    })
+                    .catch(err => {
+                        reject(err)
+                    })
+            })
+        },
+        async mosaicSave({ state, commit, dispatch, rootGetters }, payload) {
+            // let data = getApp().RepairManager.edit.getMosaicSavingInfo()
+            Loading.show()
+            let { data, func, panoId } = getApp().RepairManager.edit.savePaint()
+            // const panoId = rootGetters['panoId']
+            let fileName = getNum() + '-' + panoId + '.png'
+            let params = {}
+            let mosaicPic = await this.dispatch('scene/upload_files', { base64: data, bizType: 'mosaic-pic', num: getNum(), type: 0, fileName: fileName })
+            if (mosaicPic.success) {
+                params.num = getNum()
+                params.data = JSON.stringify([{ fileName: fileName, panoId }])
+            } else {
+                resolve({ type: 'toast', tips: 'error', msg: 'common.saveFail' })
+                return
+            }
+
+            return new Promise(function (resolve, reject) {
+                getApp()
+                    .remote_editor.mosaics_add(params)
+                    .then(res => {
+                        Loading.hide()
+                        if (res.success) {
+                            func()
+                            let has = false
+                            if (state.mosaics.length > 0) {
+                                for (let i = 0; i < state.mosaics.length; i++) {
+                                    if (state.mosaics[i].panoId == panoId) {
+                                        has = true
+                                        // console.log(has)
+                                        state.mosaics[i] = { data, panoId }
+                                    }
+                                }
+                            }
+                            if (!has) {
+                                state.mosaics.unshift({ fileName: fileName, panoId })
+                            }
+                            getApp().RepairManager.edit.cancelPaint()
+                            commit('save')
+                            resolve(res)
+                        } else {
+                            resolve({ type: 'toast', tips: 'error', msg: 'common.saveFail' })
+                        }
+                    })
+                    .catch(err => {
+                        Loading.hide()
+                        reject({ type: 'toast', tips: 'error', msg: 'common.busy' })
+                        console.error(err)
+                    })
+            })
+        },
+        uploadPanorama({ commit, state }, payload) {
+            return getApp().remote_editor.uploadPanorama(payload)
+        },
+        downloadPanorama({ commit, state, rootState }, payload) {
+            let parmas = { num: rootState.scene.metadata.num }
+            return getApp().remote_editor.downloadPanorama({ ...parmas, ...payload })
+        },
+
+        uploadModel({ commit, state, rootState }, payload) {
+            let parmas = { num: rootState.scene.metadata.num }
+            return getApp().remote_editor.uploadModel({ ...parmas, ...payload })
+        },
+        downloadModel({ commit, state, rootState }, payload) {
+            let parmas = { num: rootState.scene.metadata.num }
+            return getApp().remote_editor.downloadModel({ ...parmas })
+        },
+        uploadVideo({ commit, state, rootState }, payload) {
+            let parmas = { num: rootState.scene.metadata.num }
+            return getApp().remote_editor.uploadBallScreenVideo({ ...parmas, ...payload })
+        },
+        downloadVideo({ commit, state, rootState }, payload) {
+            let parmas = { num: rootState.scene.metadata.num }
+            return getApp().remote_editor.downloadBallScreenVideo({ ...parmas, ...payload })
+        },
+        getInfo({ commit, state, rootState }, payload) {
+            let params = {
+                num: getNum(),
+                ...payload,
+            }
+
+            return getApp().remote_editor.getAsynOperLog(params)
+        },
+    },
+}

File diff suppressed because it is too large
+ 1845 - 1064
packages/app-cdfg/src/views/repair/Toolbox.Content.vue