Merge branch 'zyl' of http://xny.yj-3d.com:3000/zhouyulong/electron-4 into zyl
This commit is contained in:
@ -1,7 +1,7 @@
|
||||
server:
|
||||
host: 127.0.0.1
|
||||
port: 8848
|
||||
path: C:\Users\MSI\AppData\Roaming\dzsp_shijingjun_offline_Y_save
|
||||
path: C:\Users\Administrator\AppData\Roaming\dzsp_shijingjun_offline_Y_save
|
||||
poi:
|
||||
global:
|
||||
enabled: false
|
||||
|
||||
2
src/renderer/components.d.ts
vendored
2
src/renderer/components.d.ts
vendored
@ -20,12 +20,10 @@ declare module 'vue' {
|
||||
ElDialog: typeof import('element-plus/es')['ElDialog']
|
||||
ElForm: typeof import('element-plus/es')['ElForm']
|
||||
ElFormItem: typeof import('element-plus/es')['ElFormItem']
|
||||
ElIcon: typeof import('element-plus/es')['ElIcon']
|
||||
ElImage: typeof import('element-plus/es')['ElImage']
|
||||
ElInput: typeof import('element-plus/es')['ElInput']
|
||||
ElOption: typeof import('element-plus/es')['ElOption']
|
||||
ElPagination: typeof import('element-plus/es')['ElPagination']
|
||||
ElPopconfirm: typeof import('element-plus/es')['ElPopconfirm']
|
||||
ElRow: typeof import('element-plus/es')['ElRow']
|
||||
ElSelect: typeof import('element-plus/es')['ElSelect']
|
||||
ElSlider: typeof import('element-plus/es')['ElSlider']
|
||||
|
||||
@ -511,6 +511,7 @@
|
||||
overflow-y: auto;
|
||||
scrollbar-gutter: stable;
|
||||
width: calc(100% + 1px);
|
||||
height: 194px;
|
||||
}
|
||||
|
||||
.YJ-custom-base-dialog>.content .table .align-center,
|
||||
|
||||
@ -688,6 +688,9 @@
|
||||
},
|
||||
nodeTitle: function (setting, node) {
|
||||
var t = setting.data.key.title === '' ? setting.data.key.name : setting.data.key.title
|
||||
if(!node[t]) {
|
||||
t = setting.data.key.name
|
||||
}
|
||||
var rawTitle = '' + node[t]
|
||||
if (typeof setting.data.render.title === 'function') {
|
||||
return setting.data.render.title.call(this, rawTitle, node)
|
||||
@ -1489,6 +1492,7 @@
|
||||
html.push('</a>')
|
||||
},
|
||||
makeDOMNodeNameBefore: function (html, setting, node) {
|
||||
console.log('=================', setting, node)
|
||||
var title = data.nodeTitle(setting, node),
|
||||
url = view.makeNodeUrl(setting, node),
|
||||
fontcss = view.makeNodeFontCss(setting, node),
|
||||
|
||||
@ -96,6 +96,10 @@ window.newFuzzySearch = function (
|
||||
let str = '<span style="color: whitesmoke;background-color: darkred;">' + h + '</span>'
|
||||
return str
|
||||
})
|
||||
item.title = item.oldname.replace(F, function (h) {
|
||||
let str = h
|
||||
return str
|
||||
})
|
||||
|
||||
// let a = item.name
|
||||
// a = '<span style="color: whitesmoke;background-color: darkred;">' + a + "</span>"
|
||||
|
||||
@ -85,8 +85,12 @@ service.interceptors.response.use(
|
||||
if (response.data.code == 401) {
|
||||
router.push('/')
|
||||
localStorage.removeItem('Authorization')
|
||||
ElMessage({
|
||||
message: "登录过期,请重新登录",
|
||||
type: 'error'
|
||||
})
|
||||
}
|
||||
if (![0, 200].includes(response.data.code)) {
|
||||
else if (![0, 200].includes(response.data.code)) {
|
||||
ElMessage({
|
||||
message: response.data.msg || response.data.message,
|
||||
type: 'error'
|
||||
|
||||
@ -10,13 +10,22 @@ export const addMapSource = async ({type, id, sourceName = '未命名对象', op
|
||||
let options: any = await initMapData(type, opt, null)
|
||||
let selectedNodes = window.treeObj.getSelectedNodes()
|
||||
let node = selectedNodes && selectedNodes[selectedNodes.length - 1]
|
||||
function getParentId(nd: any) {
|
||||
if (nd.sourceType === 'directory') {
|
||||
return nd.id
|
||||
} else {
|
||||
let parentNode = window.treeObj.getNodeByParam("id", nd.parentId, null);
|
||||
if(parentNode) {
|
||||
return getParentId(parentNode)
|
||||
}
|
||||
else {
|
||||
return
|
||||
}
|
||||
}
|
||||
}
|
||||
let parentId
|
||||
if (node) {
|
||||
if (node.sourceType === 'directory') {
|
||||
parentId = node.id
|
||||
} else {
|
||||
parentId = node.parentId
|
||||
}
|
||||
parentId = getParentId(node)
|
||||
}
|
||||
delete options.host
|
||||
if(options.attribute && options.attribute.rtmp) {
|
||||
|
||||
@ -150,7 +150,7 @@ let pageSize: any = ref(10)
|
||||
let pageNum: any = ref(1)
|
||||
let total: any = ref(0)
|
||||
const back = () => {
|
||||
ipcRenderer.send('toggle-fullscreen', false)
|
||||
// ipcRenderer.send('toggle-fullscreen', false)
|
||||
router.push({path: '/home'})
|
||||
}
|
||||
const handleSizeChange = (val) => {
|
||||
|
||||
@ -1,8 +1,8 @@
|
||||
<template>
|
||||
<div class="bottomMenuBox zIndex9" ref="bottomMenuBox">
|
||||
<div class="animate__animated bottomMenu">
|
||||
<div class="bottom_box" v-for="(item, i) of bottomMenuList" :key="i" :title="t('bottomMenu.' + item.sourceType)">
|
||||
<div class="bottom_box_content" @click="addMarker(item, $event)">
|
||||
<div class="bottom_box" v-for="(item, i) of bottomMenuList" :key="i">
|
||||
<div class="bottom_box_content" @click="addMarker(item, $event)" :title="t('bottomMenu.' + item.sourceType)">
|
||||
<svg class="bottom_box_bg" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink"
|
||||
width="117.030029296875" height="44" viewBox="0 0 117.030029296875 44" fill="none"
|
||||
preserveAspectRatio="none">
|
||||
@ -40,7 +40,7 @@
|
||||
</div>
|
||||
<div class="bottom_children" v-if="item.children" v-show="item.childrenShow">
|
||||
<div class="bottom_childre_box" v-for="(item2, m) of item.children" :key="m"
|
||||
@click="addMarker(item2, $event)">
|
||||
@click="addMarker(item2, $event)" :title="t('bottomMenu.' + item2.sourceType)">
|
||||
<svg class="bottom_childre_box_bg" xmlns="http://www.w3.org/2000/svg"
|
||||
xmlns:xlink="http://www.w3.org/1999/xlink" width="6vw" height="44.5" viewBox="0 0 119 35.5" fill="none"
|
||||
preserveAspectRatio="none">
|
||||
@ -595,6 +595,7 @@ const fold = () => {
|
||||
const itemDuration = 300
|
||||
if (isFolded.value) {
|
||||
// 展开状态
|
||||
bottomMenuBox.value.style.pointerEvents = 'unset'
|
||||
items.forEach((item: any, index) => {
|
||||
setTimeout(() => {
|
||||
item.style.transition = 'transform 0.3s ease'
|
||||
@ -606,6 +607,7 @@ const fold = () => {
|
||||
bottom_left.style.transform = 'rotate(270deg)'
|
||||
} else {
|
||||
// 折叠状态
|
||||
bottomMenuBox.value.style.pointerEvents = 'none'
|
||||
items.forEach((item: any, index: any) => {
|
||||
setTimeout(() => {
|
||||
item.style.transition = 'transform 0.3s ease'
|
||||
@ -817,6 +819,7 @@ document.addEventListener('click', (e: any) => {
|
||||
transition: all 0.3s ease;
|
||||
transform: rotate(270deg);
|
||||
cursor: pointer;
|
||||
pointer-events: all;
|
||||
|
||||
>svg {
|
||||
width: 100%;
|
||||
|
||||
@ -38,10 +38,12 @@
|
||||
</div>
|
||||
<div class="file_name">
|
||||
<span>{{ item.name }}</span>
|
||||
<span>{{ item.createdAt }}</span>
|
||||
<span class="pdfPath" :title="item.path">{{ item.path }}</span>
|
||||
</div>
|
||||
</div>
|
||||
<div class="item_right">
|
||||
<span style="color: rgba(var(--color-text2), 1)">{{ item.createdAt }}</span>
|
||||
<div class="but">
|
||||
<span v-if="item.isEnable">已启用</span>
|
||||
|
||||
<el-button
|
||||
@ -64,6 +66,7 @@
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="line"></div>
|
||||
<div class="engineering_title2">
|
||||
<span class="fankuai"></span>
|
||||
@ -91,10 +94,13 @@
|
||||
</div>
|
||||
<div class="file_name">
|
||||
<span>{{ item.name }}</span>
|
||||
<span>{{ item.createdAt }}</span>
|
||||
<!-- <span>{{ item.createdAt }}</span> -->
|
||||
<span class="pdfPath" :title="item.path">{{ item.path }}</span>
|
||||
</div>
|
||||
</div>
|
||||
<div class="item_right">
|
||||
<span style="color: rgba(var(--color-text2), 1)">{{ item.createdAt }}</span>
|
||||
<div class="but">
|
||||
<span v-if="item.isEnable">已启用</span>
|
||||
|
||||
<el-button
|
||||
@ -117,6 +123,7 @@
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="line"></div>
|
||||
<div class="engineering_title2">
|
||||
<span class="fankuai"></span>
|
||||
@ -242,6 +249,10 @@ const poiImport = () => {
|
||||
if (res.code === 200) {
|
||||
PoiApi.getPoiList().then((list) => {
|
||||
poiList.splice(0, poiList.length, ...list.data)
|
||||
poiList.map((item) => {
|
||||
let arr = item.path.split('/')
|
||||
item.name = arr[arr.length - 1]
|
||||
})
|
||||
//只有一个poi时默认启用
|
||||
if (poiList.length == 1) {
|
||||
let formData = new FormData()
|
||||
@ -390,6 +401,10 @@ var routeList: any = reactive([])
|
||||
const getList = async () => {
|
||||
let list = await RouteApi.getRouteList()
|
||||
routeList.splice(0, routeList.length, ...list.data)
|
||||
routeList.map((item) => {
|
||||
let arr = item.path.split('/')
|
||||
item.name = arr[arr.length - 1]
|
||||
})
|
||||
}
|
||||
getList()
|
||||
|
||||
@ -398,6 +413,10 @@ var poiList: any = reactive([])
|
||||
const getPoiList = async () => {
|
||||
let list = await PoiApi.getPoiList()
|
||||
poiList.splice(0, poiList.length, ...list.data)
|
||||
poiList.map((item) => {
|
||||
let arr = item.path.split('/')
|
||||
item.name = arr[arr.length - 1]
|
||||
})
|
||||
}
|
||||
getPoiList()
|
||||
|
||||
@ -680,7 +699,7 @@ function derive() {
|
||||
box-sizing: border-box;
|
||||
display: flex;
|
||||
line-height: 32px; // padding: 20px 0;
|
||||
padding: 0 0 20px 0;
|
||||
padding: 0 0 15px 0;
|
||||
.fankuai {
|
||||
width: 10px;
|
||||
height: 10px;
|
||||
@ -723,10 +742,10 @@ function derive() {
|
||||
.fileList {
|
||||
width: 100%;
|
||||
// height: 20vh;
|
||||
max-height: 20vh;
|
||||
max-height: 15vh;
|
||||
box-sizing: border-box;
|
||||
padding: 0 0 20px 0;
|
||||
|
||||
// padding: 0 0 16px 0;
|
||||
overflow-y: auto;
|
||||
.fileList_nav {
|
||||
width: 100%;
|
||||
height: 100%;
|
||||
@ -734,7 +753,7 @@ function derive() {
|
||||
overflow-y: auto; /* 垂直方向超出时显示滚动条 */
|
||||
.fileList_nav_item {
|
||||
width: 100%;
|
||||
height: 8vh;
|
||||
height: 7vh;
|
||||
// background-color: aqua;
|
||||
box-sizing: border-box;
|
||||
padding: 10px;
|
||||
@ -759,28 +778,57 @@ function derive() {
|
||||
display: flex;
|
||||
flex-direction: column;
|
||||
padding-left: 10px;
|
||||
width: calc(100% - 45px);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
// 滚动条优化
|
||||
.fileList_nav::-webkit-scrollbar {
|
||||
// .fileList::-webkit-scrollbar {
|
||||
// width: 5px;
|
||||
// height: 5px;
|
||||
// }
|
||||
|
||||
// .fileList::-webkit-scrollbar-thumb {
|
||||
// background-color: rgba(var(--color-base1), 1);
|
||||
// border-radius: 5px;
|
||||
// }
|
||||
|
||||
// .fileList::-webkit-scrollbar-track {
|
||||
// background-color: rgba(var(--color-base1), 0.2);
|
||||
// }
|
||||
}
|
||||
// 滚动条优化
|
||||
.fileList::-webkit-scrollbar {
|
||||
width: 5px;
|
||||
height: 5px;
|
||||
}
|
||||
|
||||
.fileList_nav::-webkit-scrollbar-thumb {
|
||||
.fileList::-webkit-scrollbar-thumb {
|
||||
background-color: rgba(var(--color-base1), 1);
|
||||
border-radius: 5px;
|
||||
}
|
||||
|
||||
.fileList_nav::-webkit-scrollbar-track {
|
||||
.fileList::-webkit-scrollbar-track {
|
||||
background-color: rgba(var(--color-base1), 0.2);
|
||||
}
|
||||
}
|
||||
.line {
|
||||
width: 100%;
|
||||
height: 1px;
|
||||
background-color: rgba(204, 204, 204, 0.2);
|
||||
}
|
||||
.pdfPath {
|
||||
display: inline-block;
|
||||
width: 100%;
|
||||
white-space: nowrap;
|
||||
overflow: hidden;
|
||||
text-overflow: ellipsis;
|
||||
color: rgba(var(--color-text2), 1);
|
||||
}
|
||||
.but {
|
||||
display: inline-block;
|
||||
width: 140px;
|
||||
text-align: right;
|
||||
margin-left: 10px;
|
||||
}
|
||||
</style>
|
||||
|
||||
@ -147,9 +147,20 @@ const getTableList = async () => {
|
||||
}
|
||||
|
||||
getTableList()
|
||||
|
||||
eventBus.on('addOptionResuit', () => {
|
||||
let func = () => {
|
||||
console.log('111111')
|
||||
getTableList()
|
||||
}
|
||||
// eventBus.on('addOptionResuit', () => {
|
||||
// console.log('111111')
|
||||
// getTableList()
|
||||
// })
|
||||
|
||||
onMounted(() => {
|
||||
eventBus.on('addOptionResuit', func)
|
||||
})
|
||||
onUnmounted(() => {
|
||||
eventBus.off('addOptionResuit', func)
|
||||
})
|
||||
|
||||
//------------------添加--------------------
|
||||
@ -232,7 +243,6 @@ const attachUpload = async () => {
|
||||
const params = new URLSearchParams()
|
||||
params.append('filePath', path[0])
|
||||
deviceApi.uploadSingle(params).then((res) => {
|
||||
console.log(res, 'res')
|
||||
ElMessage.success('导入成功')
|
||||
getTableList()
|
||||
})
|
||||
|
||||
@ -23,10 +23,16 @@
|
||||
</div>
|
||||
|
||||
<div class="nav_table">
|
||||
<el-table :data="tableData" height="40vh" style="width: 100%">
|
||||
<el-table
|
||||
:data="tableData"
|
||||
:header-cell-style="{ 'text-align': 'center' }"
|
||||
height="40vh"
|
||||
style="width: 100%"
|
||||
>
|
||||
<el-table-column type="index" label="序号" width="60" align="center" />
|
||||
<el-table-column prop="name" label="名称" />
|
||||
<el-table-column prop="num" label="总计数量" width="120" />
|
||||
<el-table-column prop="num" label="总计数量" />
|
||||
<el-table-column prop="unit" label="单位" />
|
||||
<el-table-column fixed="right" label="操作" width="160">
|
||||
<template #default="scope">
|
||||
<el-button type="primary" size="small" @click="edit('编辑物资', scope.row)">
|
||||
@ -116,9 +122,15 @@ const getTableList = async () => {
|
||||
}
|
||||
|
||||
getTableList()
|
||||
|
||||
eventBus.on('addOptionResuit2', () => {
|
||||
let func = () => {
|
||||
getTableList()
|
||||
}
|
||||
|
||||
onMounted(() => {
|
||||
eventBus.on('addOptionResuit2', func)
|
||||
})
|
||||
onUnmounted(() => {
|
||||
eventBus.off('addOptionResuit2', func)
|
||||
})
|
||||
|
||||
//------------------添加--------------------
|
||||
@ -144,7 +156,7 @@ var edit = (type, row) => {
|
||||
addForm = JSON.parse(JSON.stringify(row))
|
||||
// addForm.areaId = +row.areaId
|
||||
}
|
||||
eventBus.emit('openAddMaterial', { title: type, data: addForm })
|
||||
eventBus.emit('openAddMaterial', { title: row ? 'edit' : 'add', data: addForm })
|
||||
}
|
||||
|
||||
var delFun = (row) => {
|
||||
|
||||
@ -25,7 +25,7 @@
|
||||
</el-button>
|
||||
</div>
|
||||
<el-input
|
||||
v-model="photoName"
|
||||
v-model.trim="photoName"
|
||||
style="max-width: 150px"
|
||||
placeholder="请输入模型名称进行搜索"
|
||||
class="input-with-select"
|
||||
@ -97,7 +97,7 @@
|
||||
<template #default="{ row }">
|
||||
<el-image
|
||||
style="width: 80px; height: 60px"
|
||||
:src="service + row.posterDataUrl"
|
||||
:src="service + row.posterDataUrl + '?t=' + row.updatedAt"
|
||||
fit="contain"
|
||||
/>
|
||||
</template>
|
||||
@ -132,7 +132,7 @@
|
||||
|
||||
<!-- 添加类型弹窗 -->
|
||||
<el-dialog v-model="dialogVisible" :title="dialogTitle" width="30%" :before-close="handleClose">
|
||||
<el-input v-model="modelType" placeholder="请输入模型类型名称" />
|
||||
<el-input v-model.trim="modelType" placeholder="请输入模型类型名称" />
|
||||
<template #footer>
|
||||
<span class="dialog-footer">
|
||||
<el-button @click="closeDialog">取消</el-button>
|
||||
@ -522,7 +522,9 @@ const toggleExpand = (row: any) => {
|
||||
// loadModelsByType(row.id)
|
||||
contextMenu.visible && (contextMenu.visible = false)
|
||||
}
|
||||
let clickTypeId = null //存储点击数据,用来删除时更新右侧列表
|
||||
const getModelListByType = (id) => {
|
||||
clickTypeId = id
|
||||
let formData = new FormData()
|
||||
formData.append('modelTypeId', id)
|
||||
ModelApi.showModelByType(formData).then((res) => {
|
||||
@ -624,11 +626,16 @@ const handleDeleteType = (row: TypeNode) => {
|
||||
})
|
||||
.then(() => {
|
||||
let formData = new FormData()
|
||||
|
||||
formData.append('modelTypeId', row.id)
|
||||
ModelApi.delModelType(formData).then((res) => {
|
||||
if (res.code == 0 || res.code == 200) {
|
||||
ElMessage.success('删除成功')
|
||||
getModelList()
|
||||
//如果删除当前选中数据 清空右侧列表
|
||||
if (row.id === clickTypeId) {
|
||||
modelList.value = []
|
||||
}
|
||||
}
|
||||
})
|
||||
})
|
||||
|
||||
@ -1,5 +1,5 @@
|
||||
<template>
|
||||
<div class="leftBox">
|
||||
<div class="leftBox" ref="leftBoxRef">
|
||||
<div class="left animate__animated">
|
||||
<div class="menus">
|
||||
<div class="menus_itemBox" v-for="(item, index) in menuList" :title="t(`firstMenu.${item.name}`)">
|
||||
@ -249,6 +249,7 @@ const menuList: any = ref([
|
||||
const isFolded: any = ref(false) // 添加折叠状态
|
||||
const initialPositions: any = ref({}) // 保存初始位置
|
||||
const isAnimating: any = ref(false) // 添加动画状态
|
||||
const leftBoxRef = ref()
|
||||
onMounted(() => {
|
||||
let menusHeight = menuList.value.length * 65 + 'px'
|
||||
let height = menuList.value.length * 65 + 30 + 'px'
|
||||
@ -259,6 +260,8 @@ onMounted(() => {
|
||||
items.forEach((item: any, index: any) => {
|
||||
initialPositions.value[index] = item.style.transform || 'translateX(0)'
|
||||
})
|
||||
|
||||
document.addEventListener('click', handleClickOutside, true);
|
||||
})
|
||||
const leftSideSecondRef = ref()
|
||||
const handleClick = (item: any, e) => {
|
||||
@ -325,6 +328,7 @@ const fold = () => {
|
||||
const itemDelay = 100
|
||||
const itemDuration = 300
|
||||
if (isFolded.value) {
|
||||
leftBoxRef.value.style.pointerEvents = 'unset'
|
||||
left_bottom.style.bottom = '6.5vw'
|
||||
left_bottom.style.left = '72px'
|
||||
left_bottom.style.transform = 'rotate(0deg)'
|
||||
@ -337,6 +341,7 @@ const fold = () => {
|
||||
})
|
||||
} else {
|
||||
// 折叠状态
|
||||
leftBoxRef.value.style.pointerEvents = 'none'
|
||||
items.forEach((item: any, index: any) => {
|
||||
setTimeout(() => {
|
||||
item.style.transition = 'transform 0.3s ease'
|
||||
@ -364,23 +369,16 @@ const fold = () => {
|
||||
)
|
||||
}
|
||||
|
||||
const clickMenu = (item: any) => {
|
||||
console.log(item, 'item')
|
||||
switch (item.key) {
|
||||
case 'analysis':
|
||||
console.log('analysis')
|
||||
// eventBus.emit('analysisDialog')
|
||||
eventBus.emit('circleViewShedDialog') //添加高程后测试
|
||||
// eventBus.emit('submergeDialog')
|
||||
// eventBus.emit('profileDialog')
|
||||
// eventBus.emit('viewShedDialog')
|
||||
// eventBus.emit('cutFillDialog')
|
||||
// eventBus.emit('contourDialog')
|
||||
break
|
||||
default:
|
||||
break
|
||||
}
|
||||
// 外部点击的处理函数
|
||||
const handleClickOutside = (e) => {
|
||||
if (leftSideSecondRef.value && leftSideSecondRef.value.leftSideSecondRef && !leftSideSecondRef.value.leftSideSecondRef.contains(e.target)) {
|
||||
$('.leftSideSecond')[0].style.display = 'none'
|
||||
}
|
||||
};
|
||||
|
||||
onBeforeUnmount(() => {
|
||||
document.removeEventListener('click', handleClickOutside, true);
|
||||
})
|
||||
</script>
|
||||
|
||||
<style scoped lang="scss">
|
||||
@ -495,6 +493,7 @@ const clickMenu = (item: any) => {
|
||||
// background-size: 100% 100%;
|
||||
transition: all 0.3s ease;
|
||||
cursor: pointer;
|
||||
pointer-events: all;
|
||||
|
||||
>svg {
|
||||
width: 100%;
|
||||
|
||||
@ -1,5 +1,5 @@
|
||||
<template>
|
||||
<div class="leftSideSecond">
|
||||
<div ref="leftSideSecondRef" class="leftSideSecond">
|
||||
<svg
|
||||
class="leftSideSecond_bg"
|
||||
xmlns="http://www.w3.org/2000/svg"
|
||||
@ -144,7 +144,7 @@ ipcRenderer.invoke('get-available-port').then((port) => {
|
||||
availablePort.value = port
|
||||
})
|
||||
const obj: any = ref(null)
|
||||
const isclick = ref(false)
|
||||
const leftSideSecondRef = ref(null)
|
||||
const eventBus: any = inject('bus')
|
||||
const initList = (value) => {
|
||||
obj.value = value
|
||||
@ -1029,7 +1029,8 @@ const handleClick = (value = 'projectionDistanceMeasure') => {
|
||||
methodMap[value]()
|
||||
}
|
||||
defineExpose({
|
||||
initList
|
||||
initList,
|
||||
leftSideSecondRef
|
||||
})
|
||||
</script>
|
||||
<style>
|
||||
|
||||
@ -146,6 +146,7 @@ var submitProtal = () => {
|
||||
|
||||
if (res.code === 200) {
|
||||
ElMessage.success('操作成功')
|
||||
console.log('ccccccccc')
|
||||
eventBus.emit('addOptionResuit')
|
||||
}
|
||||
} else {
|
||||
|
||||
@ -1,5 +1,6 @@
|
||||
<template>
|
||||
<Dialog ref="baseDialog" :title="t('bottomMenu.groundText')" left="calc(50% - 198px)" top="calc(50% - 120px)" :closeCallback="closeCallBack">
|
||||
<Dialog ref="baseDialog" :title="t('bottomMenu.groundText')" left="calc(50% - 198px)" top="calc(50% - 120px)"
|
||||
:closeCallback="closeCallBack">
|
||||
<template #content>
|
||||
<textarea style="height: 40px; width: 348px;" v-model="text"></textarea>
|
||||
</template>
|
||||
@ -31,6 +32,10 @@ const open = () => {
|
||||
baseDialog.value?.open()
|
||||
}
|
||||
const confirm = () => {
|
||||
if (!text.value) {
|
||||
return
|
||||
}
|
||||
text.value = text.value.trim()
|
||||
if (!text.value) {
|
||||
return
|
||||
}
|
||||
@ -56,13 +61,22 @@ const confirm = () => {
|
||||
delete options.positions
|
||||
let selectedNodes = window.treeObj.getSelectedNodes()
|
||||
let node = selectedNodes && selectedNodes[selectedNodes.length - 1]
|
||||
function getParentId(nd: any) {
|
||||
if (nd.sourceType === 'directory') {
|
||||
return nd.id
|
||||
} else {
|
||||
let parentNode = window.treeObj.getNodeByParam("id", nd.parentId, null);
|
||||
if (parentNode) {
|
||||
return getParentId(parentNode)
|
||||
}
|
||||
else {
|
||||
return
|
||||
}
|
||||
}
|
||||
}
|
||||
let parentId
|
||||
if (node) {
|
||||
if (node.sourceType === 'directory') {
|
||||
parentId = node.id
|
||||
} else {
|
||||
parentId = node.parentId
|
||||
}
|
||||
parentId = getParentId(node)
|
||||
}
|
||||
let params: any = {
|
||||
id: id,
|
||||
|
||||
@ -9,15 +9,18 @@
|
||||
>
|
||||
<template #content>
|
||||
<el-form
|
||||
label-width="0px"
|
||||
label-width="80px"
|
||||
style="width: 300px"
|
||||
:model="addForm"
|
||||
:rules="peopleRules"
|
||||
ref="peopleFormRef"
|
||||
>
|
||||
<el-form-item label="" prop="name">
|
||||
<el-form-item label="物资名称" prop="name">
|
||||
<el-input v-model.trim="addForm.name" placeholder="请输入物资名称" clearable />
|
||||
</el-form-item>
|
||||
<el-form-item label="物资单位" prop="unit">
|
||||
<el-input v-model.trim="addForm.unit" placeholder="请输入物资单位" clearable />
|
||||
</el-form-item>
|
||||
</el-form>
|
||||
</template>
|
||||
<template #footer>
|
||||
@ -46,11 +49,13 @@ var addTitle = ref('')
|
||||
var peopleFormRef: any = ref('')
|
||||
|
||||
var addForm: any = ref({
|
||||
name: ''
|
||||
name: '',
|
||||
unit: ''
|
||||
})
|
||||
|
||||
const peopleRules: any = reactive({
|
||||
name: [{ required: true, message: '请输入名称', trigger: 'blur' }]
|
||||
name: [{ required: true, message: '请输入名称', trigger: 'blur' }],
|
||||
unit: [{ required: true, message: '请输入单位', trigger: 'blur' }]
|
||||
})
|
||||
|
||||
var cancel = () => {
|
||||
@ -68,12 +73,14 @@ var submitProtal = () => {
|
||||
const res = await MaterialApi.add(addForm.value)
|
||||
if (res.code === 200) {
|
||||
ElMessage.success('操作成功')
|
||||
console.log('aaaaaaaaaaaaa')
|
||||
eventBus.emit('addOptionResuit2')
|
||||
}
|
||||
} else {
|
||||
const res = await MaterialApi.update(addForm.value)
|
||||
if (res.code === 200) {
|
||||
ElMessage.success('操作成功')
|
||||
console.log('bbbbbbbbbbbb')
|
||||
eventBus.emit('addOptionResuit2')
|
||||
}
|
||||
}
|
||||
@ -87,13 +94,15 @@ var submitProtal = () => {
|
||||
}
|
||||
eventBus.on('openAddMaterial', (params) => {
|
||||
console.log(params, 'iuiuuiuiu')
|
||||
addTitle.value = params.title
|
||||
if (addTitle.value != '添加物资') {
|
||||
addTitle.value = params.title == 'add' ? '添加物资' : '修改物资'
|
||||
if (params.title == 'edit') {
|
||||
addForm.value.name = params.data.name
|
||||
addForm.value.unit = params.data.unit
|
||||
addForm.value.id = params.data.id
|
||||
} else {
|
||||
addForm.value = {
|
||||
name: ''
|
||||
name: '',
|
||||
unit: ''
|
||||
}
|
||||
}
|
||||
baseDialog.value?.open()
|
||||
|
||||
@ -1,5 +1,6 @@
|
||||
<template>
|
||||
<Dialog ref="baseDialog" :title="t('bottomMenu.standText')" left="calc(50% - 198px)" top="calc(50% - 120px)" :closeCallback="closeCallBack">
|
||||
<Dialog ref="baseDialog" :title="t('bottomMenu.standText')" left="calc(50% - 198px)" top="calc(50% - 120px)"
|
||||
:closeCallback="closeCallBack">
|
||||
<template #content>
|
||||
<textarea style="height: 40px; width: 348px;" v-model="text"></textarea>
|
||||
</template>
|
||||
@ -31,6 +32,10 @@ const open = () => {
|
||||
baseDialog.value?.open()
|
||||
}
|
||||
const confirm = () => {
|
||||
if (!text.value) {
|
||||
return
|
||||
}
|
||||
text.value = text.value.trim()
|
||||
if (!text.value) {
|
||||
return
|
||||
}
|
||||
@ -52,15 +57,23 @@ const confirm = () => {
|
||||
delete options.name
|
||||
let selectedNodes = window.treeObj.getSelectedNodes()
|
||||
let node = selectedNodes && selectedNodes[selectedNodes.length - 1]
|
||||
let parentId
|
||||
if (node) {
|
||||
if (node.sourceType === 'directory') {
|
||||
parentId = node.id
|
||||
function getParentId(nd: any) {
|
||||
if (nd.sourceType === 'directory') {
|
||||
return nd.id
|
||||
} else {
|
||||
let parentNode = window.treeObj.getNodeByParam("id", nd.parentId, null);
|
||||
if (parentNode) {
|
||||
return getParentId(parentNode)
|
||||
}
|
||||
else {
|
||||
parentId = node.parentId
|
||||
return
|
||||
}
|
||||
}
|
||||
}
|
||||
let parentId
|
||||
if (node) {
|
||||
parentId = getParentId(node)
|
||||
}
|
||||
|
||||
let params: any = {
|
||||
id: id,
|
||||
|
||||
@ -47,9 +47,9 @@ const props = defineProps({
|
||||
|
||||
const setInitialStyle = () => {
|
||||
let style = getdefaultLabelStyle(props.sourceType)
|
||||
let defaultStyle = JSON.parse(localStorage.getItem('defaultStyle') || '{}')
|
||||
let defaultStyle = JSON.parse(localStorage.getItem('defaultLabelStyle') || '{}')
|
||||
defaultStyle[props.sourceType] = style
|
||||
localStorage.setItem('defaultStyle', JSON.stringify(defaultStyle))
|
||||
localStorage.setItem('defaultLabelStyle', JSON.stringify(defaultStyle))
|
||||
ElMessage({
|
||||
message: `新增${props.type}风格设置成功!`,
|
||||
type: "success",
|
||||
|
||||
@ -7,6 +7,6 @@ let defaultLabelStyle = {
|
||||
}
|
||||
}
|
||||
//@ts-ignore
|
||||
export const getdefaultLabelStyle = (type) => {
|
||||
export const getdefaultLabelStyle = (type:any) => {
|
||||
return (type ? defaultLabelStyle[type] : defaultLabelStyle)
|
||||
}
|
||||
|
||||
@ -48,6 +48,6 @@ let defaultStyle = {
|
||||
}
|
||||
}
|
||||
//@ts-ignore
|
||||
export const getdefaultStyle = (type) => {
|
||||
export const getdefaultStyle = (type:any) => {
|
||||
return (type ? defaultStyle[type] : defaultStyle)
|
||||
}
|
||||
|
||||
@ -126,6 +126,7 @@ const open = async (id: any) => {
|
||||
})
|
||||
}
|
||||
const confirm = () => {
|
||||
entityOptions.value.text = entityOptions.value.text.trim()
|
||||
entityOptions.value.text = entityOptions.value.text || t("default.untitled")
|
||||
originalOptions = structuredClone(that.options)
|
||||
let params = structuredClone(that.options)
|
||||
|
||||
@ -13,6 +13,12 @@
|
||||
<div class="imageCon" ref="threeCanvas">
|
||||
<!-- <img class="image" :src="rowData.thumbnail" alt="" /> -->
|
||||
</div>
|
||||
<span
|
||||
class="label"
|
||||
style="display: inline-block; height: 30px; line-height: 30px; padding-left: 10px"
|
||||
>属性信息</span
|
||||
>
|
||||
<span class="custom-divider"></span>
|
||||
<div class="inputCon">
|
||||
<span class="label">模型名称</span>
|
||||
<input class="input" maxlength="40" type="text" v-model="rowData.name" />
|
||||
@ -21,7 +27,9 @@
|
||||
</template>
|
||||
<template #footer>
|
||||
<div style="position: absolute; left: -400px; display: flex">
|
||||
<button @click="setImage">设置预览图</button>
|
||||
<button @click="setImage">
|
||||
<svg-icon name="sys_set" :size="14" style="margin-top: -1px"></svg-icon>设置预览图
|
||||
</button>
|
||||
</div>
|
||||
<button @click="save">保存</button>
|
||||
<button @click="close">关闭</button>
|
||||
|
||||
@ -22,7 +22,8 @@
|
||||
<span class="label">滚动速度</span>
|
||||
<input type="range" max="100" min="0" step="1" v-model="entityOptions.speed">
|
||||
<div class="input-number" style="width: 100px;flex: 0 0 100px;margin-left: 10px;">
|
||||
<input class="input" type="number" title="" min="0" max="100" step="1" v-model="entityOptions.speed" @input="$handleInputLimit">
|
||||
<input class="input" type="number" title="" min="0" max="100" step="1" v-model="entityOptions.speed"
|
||||
@input="$handleInputLimit">
|
||||
<span class="arrow"></span>
|
||||
</div>
|
||||
</div>
|
||||
@ -46,10 +47,13 @@
|
||||
<script setup lang="ts">
|
||||
import { ref } from 'vue';
|
||||
import { inject } from "vue";
|
||||
import { useI18n } from 'vue-i18n'
|
||||
import { TreeApi } from '@/api/tree'
|
||||
import { ElMessage, ElMessageBox } from 'element-plus'
|
||||
import Dialog from '@/components/dialog/baseDialog.vue'
|
||||
import { useTreeNode } from '@/views/components/tree/hooks/treeNode'
|
||||
|
||||
const { t } = useI18n()
|
||||
const { cusUpdateNode, getSelectedNodes, cusRemoveNode } = useTreeNode()
|
||||
|
||||
const baseDialog: any = ref(null);
|
||||
@ -83,6 +87,8 @@ const open = async (id: any) => {
|
||||
})
|
||||
}
|
||||
const confirm = () => {
|
||||
entityOptions.value.text = entityOptions.value.text.trim()
|
||||
entityOptions.value.text = entityOptions.value.text || t("default.untitled")
|
||||
originalOptions = structuredClone(that.options)
|
||||
let params = structuredClone(that.options)
|
||||
baseDialog.value?.close()
|
||||
|
||||
@ -26,7 +26,7 @@ export function renderVector(node, ifFly = true) {
|
||||
sourceName: it.name,
|
||||
isShow: true
|
||||
}
|
||||
cusAddNodes(window.treeObj, node.id, [childNode])
|
||||
cusAddNodes(window.treeObj, node.id, [childNode], true)
|
||||
let zijiNodes: any = [];
|
||||
if (it.features && it.features.length) {
|
||||
it.features.forEach((item) => {
|
||||
@ -45,7 +45,7 @@ export function renderVector(node, ifFly = true) {
|
||||
});
|
||||
}
|
||||
|
||||
cusAddNodes(window.treeObj, childNode.id, zijiNodes)
|
||||
cusAddNodes(window.treeObj, childNode.id, zijiNodes, true)
|
||||
});
|
||||
}
|
||||
}
|
||||
|
||||
@ -512,6 +512,7 @@ export const useTree = () => {
|
||||
key: {
|
||||
//zdatas数据中表示节点name的属性key
|
||||
name: 'sourceName',
|
||||
title: 'title',
|
||||
checked: 'isShow'
|
||||
},
|
||||
simpleData: {
|
||||
|
||||
@ -532,7 +532,10 @@ export const useTreeNode = () => {
|
||||
parentNode = treeObj.getNodeByParam('id', parentNodeId, null)
|
||||
}
|
||||
let arr = treeObj.addNodes(parentNode, newNodes, isSilent)
|
||||
if(!isSilent) {
|
||||
treeObj.selectNode(arr[arr.length - 1])
|
||||
}
|
||||
|
||||
// 确保window.AllNodes存在并为数组
|
||||
window.AllNodes = (window.AllNodes || []).concat(arr)
|
||||
return arr
|
||||
|
||||
@ -265,7 +265,9 @@ const isShowTree = debounce(() => {
|
||||
isShow.value = !isShow.value
|
||||
const box1: any = document.querySelector('.box1')
|
||||
const arrow: any = document.querySelector('.arrowTree')
|
||||
const TreeIndex: any = document.querySelector('.TreeIndex')
|
||||
if (isShow.value) {
|
||||
TreeIndex.style.pointerEvents = 'none'
|
||||
// 隐藏box1
|
||||
box1.style.transform = 'translateX(110%)'
|
||||
setTimeout(() => {
|
||||
@ -275,6 +277,7 @@ const isShowTree = debounce(() => {
|
||||
arrow.style.right = '1em'
|
||||
}, 100)
|
||||
} else {
|
||||
TreeIndex.style.pointerEvents = 'unset'
|
||||
// 显示box1
|
||||
arrow.style.transform = 'rotate(180deg)'
|
||||
arrow.style.bottom = '-5px'
|
||||
@ -582,6 +585,7 @@ defineExpose({
|
||||
// background-size: 100% 100%;
|
||||
transition: transform 0.5s ease;
|
||||
transform: rotate(180deg);
|
||||
pointer-events: all;
|
||||
|
||||
> svg {
|
||||
width: 100%;
|
||||
|
||||
@ -126,6 +126,8 @@ import addMaterials from '../components/propertyBox/addMaterials.vue'
|
||||
|
||||
import { GisApi } from '@/api/gisApi'
|
||||
import { sysChange as utilsSysChange } from '@/utils/sysChange'
|
||||
import { getdefaultStyle } from '../components/propertyBox/defaultStyle/style'
|
||||
import { getdefaultLabelStyle } from '../components/propertyBox/defaultLabelStyle/style'
|
||||
|
||||
const { rightMenus } = useRightOperate()
|
||||
const firstMenuRef = ref(null)
|
||||
@ -137,6 +139,23 @@ let addStandTextRef = ref()
|
||||
let tree = ref()
|
||||
let selectImgRef = ref()
|
||||
let editdirectoryBox = ref()
|
||||
|
||||
// 标注标绘默认样式
|
||||
if (!localStorage.getItem('defaultStyle')) {
|
||||
let defaultStyle = getdefaultStyle(null)
|
||||
localStorage.setItem('defaultStyle', JSON.stringify(defaultStyle))
|
||||
}
|
||||
if (!localStorage.getItem('defaultLabelStyle')) {
|
||||
let defaultLabelStyle = getdefaultLabelStyle(null)
|
||||
localStorage.setItem('defaultLabelStyle', JSON.stringify(defaultLabelStyle))
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
eventBus.on('openDialog', async (sourceType: any, id: any) => {
|
||||
if (dynamicComponentRef.value && dynamicComponentRef.value.close) {
|
||||
dynamicComponentRef.value.close()
|
||||
@ -455,30 +474,30 @@ const createEarth = async () => {
|
||||
window.earth = await new YJ.YJEarth('earthContainer')
|
||||
let openLeftClick = await new YJ.Global.openLeftClick(window.earth)
|
||||
let openRightClick = await new YJ.Global.openRightClick(window.earth)
|
||||
// YJ.Global.MouseRightMenu(window.earth, true, (text, object) => {
|
||||
// switch (text) {
|
||||
// case 'rotateAround':
|
||||
// YJ.Global.rotateAround(window.earth, object.position)
|
||||
// break
|
||||
// case 'textBox':
|
||||
// let id = new YJ.Tools().randomString()
|
||||
// let name = '文本框'
|
||||
// addMapSource({
|
||||
// type: 'textBox',
|
||||
// id: id,
|
||||
// sourceName: name,
|
||||
// opt: {
|
||||
// id: id,
|
||||
// position: object.position
|
||||
// }
|
||||
// })
|
||||
// break
|
||||
// case 'attribute':
|
||||
// let node = window.treeObj.getNodeByParam('id', object.id, null)
|
||||
// rightMenus.edit.callback(eventBus, node)
|
||||
// break
|
||||
// }
|
||||
// })
|
||||
YJ.Global.MouseRightMenu(window.earth, true, (text, object) => {
|
||||
switch (text) {
|
||||
case 'rotateAround':
|
||||
YJ.Global.rotateAround(window.earth, object.position)
|
||||
break
|
||||
case 'textBox':
|
||||
let id = new YJ.Tools().randomString()
|
||||
let name = '文本框'
|
||||
addMapSource({
|
||||
type: 'textBox',
|
||||
id: id,
|
||||
sourceName: name,
|
||||
opt: {
|
||||
id: id,
|
||||
position: object.position
|
||||
}
|
||||
})
|
||||
break
|
||||
case 'attribute':
|
||||
let node = window.treeObj.getNodeByParam('id', object.id, null)
|
||||
rightMenus.edit.callback(eventBus, node)
|
||||
break
|
||||
}
|
||||
})
|
||||
|
||||
tree.value.initTreeCallBack()
|
||||
utilsSysChange(eventBus)
|
||||
|
||||
Reference in New Issue
Block a user