diff --git a/src/renderer/src/I18n/zh-CN.ts b/src/renderer/src/I18n/zh-CN.ts index e4dea9b..ea63d0e 100644 --- a/src/renderer/src/I18n/zh-CN.ts +++ b/src/renderer/src/I18n/zh-CN.ts @@ -158,6 +158,7 @@ export default { project: '工程信息', device: '设备管理', modelManage: '模型管理', + graphLabelManage: '军标管理', version: '版本信息' }, auths: { @@ -214,5 +215,9 @@ export default { model: { title: '模型选择', setting: '默认模型参数设置' + }, + graph: { + title: '军标选择', + setting: '默认军标参数设置' } } diff --git a/src/renderer/src/api/graphLabel/index.ts b/src/renderer/src/api/graphLabel/index.ts new file mode 100644 index 0000000..9b8feb2 --- /dev/null +++ b/src/renderer/src/api/graphLabel/index.ts @@ -0,0 +1,93 @@ +import request from '@/axios/request' +//军标库 +export const GraphApi = { + //创建军标库 + createModelDB: async (data: any) => { + return await request.post({ + url: `/militaryLibrary/createMilitaryLibrary`, + data + }) + }, + //导入军标库 + importModelDB: async (data: any) => { + return await request.post({ + url: `/militaryLibrary/importMilitaryLibrary`, + data + }) + }, + //删除军标 + delModel: async (data: any) => { + return await request.post({ + url: `/militaryLibrary/deleteMilitary`, + data, + }) + }, + //删除军标类型 + delModelType: async (data: any) => { + return await request.post({ + url: `/militaryLibrary/deleteMilitaryType`, + data, + }) + }, + //添加军标类型 + addModelType: async (data: any) => { + return await request.post({ + url: `/militaryLibrary/addMilitaryType`, + data + }) + }, + //修改军标类型名称 + updateMilitaryTypeName: async (data: any) => { + return await request.post({ + url: `/militaryLibrary/updateMilitaryTypeName`, + data + }) + }, + //军标类型列表 + modelTypeList: async () => { + return await request.get({ + url: `/militaryLibrary/militaryTypeList` + }) + }, + //添加军标文件 + addGraph: async (data: any) => { + return await request.post({ + url: `/militaryLibrary/addMilitaryFile`, + data, + headers: { + 'Content-Type': 'multipart/form-data' + } + }) + }, + //根据军标类型查看军标列表 + showModelByType: async (data: any) => { + return await request.post({ + url: `/militaryLibrary/militaryList`, + data, + // headers: { + // 'content-type': 'application/x-www-form-urlencoded' + // } + }) + }, + //更新军标信息 + updatePoster: async (data: any) => { + return await request.post({ + url: `/militaryLibrary/uploadMilitaryInfo`, + data + }) + }, + // //默认军标参数设置 + // modelSetting: async (data: any) => { + // return await request.post({ + // url: `/businessConfig/addBusinessConfig`, + // data, + // }) + // }, + // //获取默认军标参数设置 + // getModelSetting: async () => { + // return await request.get({ + // url: `/businessConfig/list` + // }) + // }, + +} diff --git a/src/renderer/src/api/model/index.ts b/src/renderer/src/api/model/index.ts index de6862a..2614e2c 100644 --- a/src/renderer/src/api/model/index.ts +++ b/src/renderer/src/api/model/index.ts @@ -36,6 +36,13 @@ export const ModelApi = { data }) }, + //修改模型类型名称 + updateModelTypeName: async (data: any) => { + return await request.post({ + url: `/modelLibrary/updateModelTypeName`, + data + }) + }, //模型类型列表 modelTypeList: async () => { return await request.get({ diff --git a/src/renderer/src/common/initMapData.ts b/src/renderer/src/common/initMapData.ts index 3395a3d..4ea2e79 100644 --- a/src/renderer/src/common/initMapData.ts +++ b/src/renderer/src/common/initMapData.ts @@ -44,6 +44,11 @@ export const initMapData = async (type, data, cd) => { case 'model': entityObject = new YJ.Obj.Model(window.earth, data) break + case 'military': + console.log('data', data) + entityObject = new YJ.Obj.GroundSvg(window.earth, data) + entityObject.load(() => { }) + break case 'terrain': data.host = baseURL entityObject = new YJ.Obj.Terrain(window.earth, data) diff --git a/src/renderer/src/views/components/headers/components/setPup/components/graphLabelManage.vue b/src/renderer/src/views/components/headers/components/setPup/components/graphLabelManage.vue new file mode 100644 index 0000000..75f8770 --- /dev/null +++ b/src/renderer/src/views/components/headers/components/setPup/components/graphLabelManage.vue @@ -0,0 +1,819 @@ + + + + + diff --git a/src/renderer/src/views/components/headers/components/setPup/components/modelManage copy.vue b/src/renderer/src/views/components/headers/components/setPup/components/modelManage copy.vue deleted file mode 100644 index f516341..0000000 --- a/src/renderer/src/views/components/headers/components/setPup/components/modelManage copy.vue +++ /dev/null @@ -1,443 +0,0 @@ - - - - - diff --git a/src/renderer/src/views/components/headers/components/setPup/components/modelManage.vue b/src/renderer/src/views/components/headers/components/setPup/components/modelManage.vue index f96caed..e7685be 100644 --- a/src/renderer/src/views/components/headers/components/setPup/components/modelManage.vue +++ b/src/renderer/src/views/components/headers/components/setPup/components/modelManage.vue @@ -1,7 +1,11 @@ @@ -140,7 +150,7 @@ import { $recvElectronChanel, $changeComponentShow } from '@/utils/communication' -const fs = require("fs"); +const fs = require('fs') const eventBus: any = inject('bus') var clickTreeNode: any = reactive({}) @@ -180,6 +190,7 @@ var sortableInstance: any = reactive(null) //--------------添加模型类型---------------- var dialogVisible: any = ref(false) +var dialogTitle: any = ref('添加模型类型') var modelType: any = ref('') const handleClose = () => { @@ -193,16 +204,30 @@ const addType = () => { if (!modelType.value) { return ElMessage.warning('请输入模型类型名称') } - let params = { - name: modelType.value, - parentId: clickTreeNode && clickTreeNode.id ? clickTreeNode.id : undefined - } - ModelApi.addModelType(params).then((res) => { - if (res.code == 0 || res.code == 200) { - ElMessage.success('添加成功') - getModelList() + if (dialogTitle.value == '添加模型类型') { + let params = { + name: modelType.value, + parentId: clickTreeNode && clickTreeNode.id ? clickTreeNode.id : undefined } - }) + ModelApi.addModelType(params).then((res) => { + if (res.code == 0 || res.code == 200) { + ElMessage.success('添加成功') + getModelList() + } + }) + } else { + let params = { + name: modelType.value, + id: clickTreeNode.id + } + ModelApi.updateModelTypeName(params).then((res) => { + if (res.code == 0 || res.code == 200) { + ElMessage.success('修改成功') + getModelList() + } + }) + } + modelType.value = '' dialogVisible.value = false } @@ -285,30 +310,30 @@ const createModelDB = async () => { } //导入模型库 -const importModelDB = ()=>{ +const importModelDB = () => { let option = { - properties: ["openFile"], - filters: [ - { - name: '模型库', //、底图 - extensions: ['model'], - }, - ], - }; - $sendElectronChanel("open-directory-dialog", option); - $recvElectronChanel("selectedItem", (e, path) => { - if (path.length) addModelDB(path[0]); - }); + properties: ['openFile'], + filters: [ + { + name: '模型库', //、底图 + extensions: ['model'] + } + ] + } + $sendElectronChanel('open-directory-dialog', option) + $recvElectronChanel('selectedItem', (e, path) => { + if (path.length) addModelDB(path[0]) + }) } -const addModelDB = (path)=>{ - let formData = new FormData() - formData.append('modelPath',path) - ModelApi.importModelDB(formData).then(res=>{ +const addModelDB = (path) => { + let formData = new FormData() + formData.append('modelPath', path) + ModelApi.importModelDB(formData).then((res) => { if (res.code == 0 || res.code == 200) { - ElMessage.success('导入成功') - getModelList() - } + ElMessage.success('导入成功') + getModelList() + } }) } @@ -481,9 +506,13 @@ const loadModelsByType = (typeId: string) => { } const handleAddType = () => { + dialogTitle.value = '添加模型类型' + modelType.value = '' dialogVisible.value = true } const handleAddChildType = (row: TypeNode) => { + dialogTitle.value = '添加模型类型' + modelType.value = '' dialogVisible.value = true } @@ -492,11 +521,13 @@ const handleImportModel = (row: TypeNode) => { } const handleRenameType = (row: TypeNode) => { + dialogTitle.value = '模型类型重命名' + modelType.value = row.label + dialogVisible.value = true console.log('重命名类型', row) } const handleDeleteType = (row: TypeNode) => { - ElMessageBox.confirm('是否删除数据?', '警告', { confirmButtonText: '确定', cancelButtonText: '取消', @@ -520,7 +551,6 @@ const handleEdit = (row: ModelItem) => { } const updatePoster1 = (row, flag = false, path = '') => { let cb = (c) => { - const formData = new FormData() formData.append('modelId', row.id) formData.append('file', c) @@ -552,71 +582,69 @@ const updatePoster1 = (row, flag = false, path = '') => { } } -const updatePoster = (row, flag = false, path = "")=> { - let that = this; - let cb = (c) => { - - const formData = new FormData() - formData.append('modelId', row.id) - formData.append('file', c) - ModelApi.updatePoster(formData).then((res) => { - if (res.code == 0 || res.code == 200) { - getModelListByType(row.modelTypeId) - ElMessage.success('添加成功') - } - }) - }; - if (!flag) { - let option = { - properties: ["openFile"], - filters: [ - { - name: "图片", - extensions: ["png", "jpg", "jpeg"], - }, - ], - }; - $sendElectronChanel("open-directory-dialog", option); - $recvElectronChanel("selectedItem", (e, paths) => { - if (paths.length) { - // 取出路径中的文件名 - let name = getNamefromPath(paths[0]); - // 读取文件 - fs.readFile(paths[0], (err, data) => { - const blob = new Blob([data], { - type: "image/png, image/jpeg, image/jpg", - }); - var file = new File([blob], `${name}` + ".png"); - cb(file); - }); - // cb(paths[0]); - } - }); - } else { - cb(path); +const updatePoster = (row, flag = false, path = '') => { + let that = this + let cb = (c) => { + const formData = new FormData() + formData.append('modelId', row.id) + formData.append('file', c) + ModelApi.updatePoster(formData).then((res) => { + if (res.code == 0 || res.code == 200) { + getModelListByType(row.modelTypeId) + ElMessage.success('添加成功') } + }) + } + if (!flag) { + let option = { + properties: ['openFile'], + filters: [ + { + name: '图片', + extensions: ['png', 'jpg', 'jpeg'] + } + ] + } + $sendElectronChanel('open-directory-dialog', option) + $recvElectronChanel('selectedItem', (e, paths) => { + if (paths.length) { + // 取出路径中的文件名 + let name = getNamefromPath(paths[0]) + // 读取文件 + fs.readFile(paths[0], (err, data) => { + const blob = new Blob([data], { + type: 'image/png, image/jpeg, image/jpg' + }) + var file = new File([blob], `${name}` + '.png') + cb(file) + }) + // cb(paths[0]); + } + }) + } else { + cb(path) + } +} + +const getNamefromPath = (path) => { + let index = 1 + if (path.endsWith('.json')) { + index = 2 + } + let arr = path.split('/') + let str = arr[arr.length - index] + + let name = str + if (!path.endsWith('.json')) { + let arr1 = str.split('.') + arr1.pop() + name = arr1.join('.') } - const getNamefromPath = (path) => { - let index = 1; - if (path.endsWith(".json")) { - index = 2; - } - let arr = path.split("/"); - let str = arr[arr.length - index]; - - let name = str; - if (!path.endsWith(".json")) { - let arr1 = str.split("."); - arr1.pop(); - name = arr1.join("."); - } - - return name; + return name } const handleDelete = (row: ModelItem) => { - ElMessageBox.confirm('是否删除数据?', '警告', { confirmButtonText: '确定', cancelButtonText: '取消', diff --git a/src/renderer/src/views/components/headers/components/setPup/setPup.vue b/src/renderer/src/views/components/headers/components/setPup/setPup.vue index fd38b71..8c7e8f9 100644 --- a/src/renderer/src/views/components/headers/components/setPup/setPup.vue +++ b/src/renderer/src/views/components/headers/components/setPup/setPup.vue @@ -25,6 +25,9 @@ + + + @@ -41,6 +44,7 @@ import engineering from './components/engineering.vue' import equipment from './components/equipment.vue' import version from './components/version.vue' import modelManage from './components/modelManage.vue' +import graphLabelManage from './components/graphLabelManage.vue' import { useI18n } from 'vue-i18n' const { t } = useI18n() diff --git a/src/renderer/src/views/components/leftSide/leftSideFirst.vue b/src/renderer/src/views/components/leftSide/leftSideFirst.vue index 5ab2310..2f45dbf 100644 --- a/src/renderer/src/views/components/leftSide/leftSideFirst.vue +++ b/src/renderer/src/views/components/leftSide/leftSideFirst.vue @@ -202,6 +202,16 @@ const handleClick = (item: any, e) => { type: 'warning' }) } + } else if (item.key === 'military') { + //军标库 + if ((window as any).checkAuthIsValid) { + eventBus.emit('openGraph', true) + } else { + ElMessage({ + message: '您没有该功能的权限', + type: 'warning' + }) + } } } const fold = () => { diff --git a/src/renderer/src/views/components/propertyBox/model copy.vue b/src/renderer/src/views/components/propertyBox/graph.vue similarity index 55% rename from src/renderer/src/views/components/propertyBox/model copy.vue rename to src/renderer/src/views/components/propertyBox/graph.vue index 67de218..4f439f4 100644 --- a/src/renderer/src/views/components/propertyBox/model copy.vue +++ b/src/renderer/src/views/components/propertyBox/graph.vue @@ -4,7 +4,7 @@ @@ -13,55 +13,80 @@
- - + - - + + +
+ + @@ -430,7 +430,7 @@ max="99999999" v-model="entityOptions.labelFar" /> - px + m @@ -488,7 +488,6 @@ -