添加排序

This commit is contained in:
guanj
2025-10-14 20:38:59 +08:00
parent 77b35d3395
commit 78a4b1685c
2 changed files with 42 additions and 75 deletions

View File

@@ -1,66 +1,40 @@
<template> <template>
<div id="mt-edit" class="relative flex-auto w-1/1 h-1/1 dark"> <div id="mt-edit" class="relative flex-auto w-1/1 h-1/1 dark">
<el-container class="h-1/1"> <el-container class="h-1/1">
<el-header <el-header height="45px" class="dark:bg-myDarkBgColor cb-border p-0 select-none"
height="45px" @mousedown="mainPanelRef?.stopListenerKeyDown()">
class="dark:bg-myDarkBgColor cb-border p-0 select-none" <header-panel v-model:leftAside="aside_state.left_show" v-model:rightAside="aside_state.right_show"
@mousedown="mainPanelRef?.stopListenerKeyDown()" v-model:lock-state="globalStore.lock" :selected-items-id="globalStore.selected_items_id"
> :group-enabled="header_group_enabled" :un-group-enabled="header_un_group_enabled"
<header-panel :align-enabled="header_align_enabled" :delete-enabled="header_delete_enabled"
v-model:leftAside="aside_state.left_show"
v-model:rightAside="aside_state.right_show"
v-model:lock-state="globalStore.lock"
:selected-items-id="globalStore.selected_items_id"
:group-enabled="header_group_enabled"
:un-group-enabled="header_un_group_enabled"
:align-enabled="header_align_enabled"
:delete-enabled="header_delete_enabled"
:undo-enabled="cacheStore.historyIndex > 0" :undo-enabled="cacheStore.historyIndex > 0"
:redo-enabled="cacheStore.historyIndex < cacheStore.history.length - 1" :redo-enabled="cacheStore.historyIndex < cacheStore.history.length - 1"
:real-time-data="globalStore.real_time_data" :real-time-data="globalStore.real_time_data" :use-thumbnail="mtEidtProps.useThumbnail"
:use-thumbnail="mtEidtProps.useThumbnail" @on-group-click="mainPanelRef?.createGroupItem" @on-ungroup-click="mainPanelRef?.onUngroup"
@on-group-click="mainPanelRef?.createGroupItem" @on-delete-click="onDeleteClick" @on-export-click="onExportClick"
@on-ungroup-click="mainPanelRef?.onUngroup" @on-tree-click="done_json_tree_visiable = true" @on-help-click="onHelpClick"
@on-delete-click="onDeleteClick" @align-selected="onAlignSelected" @on-redo-click="onRedoClick" @on-undo-click="onUndoClick"
@on-export-click="onExportClick" @on-import-click="onImportClick" @on-return-click="emits('onReturnClick')"
@on-tree-click="done_json_tree_visiable = true" @on-save-click="onSaveClick" @on-preview-click="onPreviewClick"
@on-help-click="onHelpClick" @on-thumbnail-click="onThumbnailClick" @on-draw-line-click="onDrawLineClick"
@align-selected="onAlignSelected" @on-save-all="onSaveAll"></header-panel>
@on-redo-click="onRedoClick"
@on-undo-click="onUndoClick"
@on-import-click="onImportClick"
@on-return-click="emits('onReturnClick')"
@on-save-click="onSaveClick"
@on-preview-click="onPreviewClick"
@on-thumbnail-click="onThumbnailClick"
@on-draw-line-click="onDrawLineClick"
@on-save-all="onSaveAll"
></header-panel>
</el-header> </el-header>
<el-container class="h-[calc(100%-45px-40px)]"> <el-container class="h-[calc(100%-45px-40px)]">
<el-aside <el-aside :width="aside_state.left_show ? '300px' : '0px'"
:width="aside_state.left_show ? '300px' : '0px'"
class="dark:bg-myDarkBgColor cr-border mt-edit-aside h-1/1 select-none mt-edit-aside-left" class="dark:bg-myDarkBgColor cr-border mt-edit-aside h-1/1 select-none mt-edit-aside-left"
@mousedown="mainPanelRef?.stopListenerKeyDown()" @mousedown="mainPanelRef?.stopListenerKeyDown()">
>
<tabs></tabs> <tabs></tabs>
<!-- <left-aside :leftAsideConfig="leftAsideStore.config"></left-aside> --> <!-- <left-aside :leftAsideConfig="leftAsideStore.config"></left-aside> -->
</el-aside> </el-aside>
<el-main class="dark:bg-myMainDarkBgColor" @mousedown="mainPanelRef?.beginListenerKeyDown()"> <el-main class="dark:bg-myMainDarkBgColor" @mousedown="mainPanelRef?.beginListenerKeyDown()">
<main-panel <main-panel ref="mainPanelRef" :group-enabled="header_group_enabled"
ref="mainPanelRef" :un-group-enabled="header_un_group_enabled" :delete-enabled="header_delete_enabled"
:group-enabled="header_group_enabled" :line-append-enable="line_append_enable"></main-panel>
:un-group-enabled="header_un_group_enabled"
:delete-enabled="header_delete_enabled"
:line-append-enable="line_append_enable"
></main-panel>
</el-main> </el-main>
<el-aside <el-aside :width="aside_state.right_show ? '300px' : '0px'"
:width="aside_state.right_show ? '300px' : '0px'"
class="dark:bg-myDarkBgColor cl-border mt-edit-aside select-none" class="dark:bg-myDarkBgColor cl-border mt-edit-aside select-none"
@mousedown="mainPanelRef?.stopListenerKeyDown()" @mousedown="mainPanelRef?.stopListenerKeyDown()">
>
<right-aside> <right-aside>
<template v-if="hasDeviceBindSlot" #deviceBind="{ item }"> <template v-if="hasDeviceBindSlot" #deviceBind="{ item }">
<slot name="deviceBind" :item="item" /> <slot name="deviceBind" :item="item" />
@@ -72,36 +46,22 @@
<footer-panel></footer-panel> <footer-panel></footer-panel>
</el-footer> </el-footer>
</el-container> </el-container>
<el-dialog <el-dialog :close-on-click-modal="false" v-model="import_visible" title="数据导入"
:close-on-click-modal="false" @close="mainPanelRef?.beginListenerKeyDown()">
v-model="import_visible"
title="数据导入"
@close="mainPanelRef?.beginListenerKeyDown()"
>
<import-json ref="importJsonRef"></import-json> <import-json ref="importJsonRef"></import-json>
<template #footer> <template #footer>
<el-button type="primary" @click="onImportYes">确定</el-button> <el-button type="primary" @click="onImportYes">确定</el-button>
</template> </template>
</el-dialog> </el-dialog>
<el-dialog <el-dialog :close-on-click-modal="false" v-model="export_visible" title="数据导出"
:close-on-click-modal="false" @close="mainPanelRef?.beginListenerKeyDown()">
v-model="export_visible" <export-json :done-json="objectDeepClone(globalStore.done_json)" :canvas-cfg="globalStore.canvasCfg"
title="数据导出" :grid-cfg="globalStore.gridCfg"></export-json>
@close="mainPanelRef?.beginListenerKeyDown()"
>
<export-json
:done-json="objectDeepClone(globalStore.done_json)"
:canvas-cfg="globalStore.canvasCfg"
:grid-cfg="globalStore.gridCfg"
></export-json>
</el-dialog> </el-dialog>
<el-drawer v-model="done_json_tree_visiable" title="图形结构树" direction="ltr" size="30%"> <el-drawer v-model="done_json_tree_visiable" title="图形结构树" direction="ltr" size="30%">
<done-tree <done-tree :done-json="globalStore.done_json" :selected-items-id="globalStore.selected_items_id"
:done-json="globalStore.done_json"
:selected-items-id="globalStore.selected_items_id"
@update-selected-items-id="onTreeUpdateSelectedItemsId" @update-selected-items-id="onTreeUpdateSelectedItemsId"
@update-selected-id-hide="onDoneTreeUpdateSelectedIdHide" @update-selected-id-hide="onDoneTreeUpdateSelectedIdHide"></done-tree>
></done-tree>
</el-drawer> </el-drawer>
</div> </div>
</template> </template>
@@ -229,9 +189,15 @@ const onSaveClick = () => {
} }
const useData = useDataStore() const useData = useDataStore()
const onSaveAll = () => { const onSaveAll = async () => {
let data: any = await useData.dataTree.map((item, ind) => {
item.sort = ind
return item
})
let form = new FormData() let form = new FormData()
let blob = new Blob([JSON.stringify(useData.dataTree)], { let blob = new Blob([JSON.stringify(data)], {
type: 'application/json' type: 'application/json'
}) })
form.append('multipartFile', blob) form.append('multipartFile', blob)
@@ -261,6 +227,7 @@ defineExpose({
.mt-edit-aside { .mt-edit-aside {
transition: width 0.3s; transition: width 0.3s;
} }
.mt-edit-aside-left { .mt-edit-aside-left {
padding-left: 5px; padding-left: 5px;
} }

View File

@@ -800,9 +800,9 @@ const searchDevicesConnect = (transmissionDeviceIds: string[]) => {
] ]
// 查找所有开关元素 // 查找所有开关元素
const switchElements = savedExportJson.value.json.filter(item => targetKeywords.some(keyword => const switchElements = savedExportJson.value.json.filter(item =>
item.title?.includes(keyword) targetKeywords.some(keyword => item.title?.includes(keyword))
)) )
// const switchElements = savedExportJson.value.json.filter(item => // const switchElements = savedExportJson.value.json.filter(item =>
// bindList.value.some(keyword => item.id?.includes(keyword) && item.lineId=='') // bindList.value.some(keyword => item.id?.includes(keyword) && item.lineId=='')
// ) // )