修改截图样式不全问题

This commit is contained in:
guanj
2025-10-22 08:50:42 +08:00
parent 78a4b1685c
commit e10b451e68
4 changed files with 85 additions and 37 deletions

View File

@@ -289,7 +289,13 @@ const fetchData_wx = async () => {
// 指标数据
const indexList = async () => {
try {
const lineId = deptIds.value[deptIds.value.length - 1]
let lineId = ''
if (typeof deptIds.value === 'string') {
lineId = deptIds.value
} else {
lineId = deptIds.value[deptIds.value.length - 1]
}
{
const response = await targetList({ lineId: lineId })
if (response.data) {
@@ -304,6 +310,7 @@ const indexList = async () => {
const handleDeptChange = (deptId: []) => {
// labelString.value = fileRef.value.getCheckedNodes().pathLabels.join(" / ");
item_uid.value = []
indexString.value = ''
nextTick(() => {
//fileRef.value.getCheckedNodes()[0]?.label 最后一层的值
let name = []

View File

@@ -10,6 +10,7 @@ export const useGenThumbnail = async (canvas_id: string = 'mtCanvasArea') => {
// //记录要移除的svg元素
const shouldRemoveSvgNodes = []
// 获取到所有的SVG 得到一个数组 目前只有自定义连线需要特殊处理 别的元素直接使用html2canvas就可以
const svgElements: NodeListOf<HTMLElement> = document.body.querySelectorAll(`#${canvas_id} .mt-line-render`)
// 遍历这个数组
for (const item of svgElements) {
@@ -40,13 +41,14 @@ export const useGenThumbnail = async (canvas_id: string = 'mtCanvasArea') => {
const width = el.offsetWidth
const height = el.offsetHeight
const canvas = await html2canvas(el, {
useCORS: true,
scale: 2,
width,
height,
// width,
// height,
allowTaint: true,
windowHeight: height,
// windowHeight: height,
logging: false,
ignoreElements: element => {
if (element.classList.contains('mt-line-render')) {

View File

@@ -1,40 +1,66 @@
<template>
<div id="mt-edit" class="relative flex-auto w-1/1 h-1/1 dark">
<el-container class="h-1/1">
<el-header height="45px" class="dark:bg-myDarkBgColor cb-border p-0 select-none"
@mousedown="mainPanelRef?.stopListenerKeyDown()">
<header-panel 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"
<el-header
height="45px"
class="dark:bg-myDarkBgColor cb-border p-0 select-none"
@mousedown="mainPanelRef?.stopListenerKeyDown()"
>
<header-panel
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"
:redo-enabled="cacheStore.historyIndex < cacheStore.history.length - 1"
:real-time-data="globalStore.real_time_data" :use-thumbnail="mtEidtProps.useThumbnail"
@on-group-click="mainPanelRef?.createGroupItem" @on-ungroup-click="mainPanelRef?.onUngroup"
@on-delete-click="onDeleteClick" @on-export-click="onExportClick"
@on-tree-click="done_json_tree_visiable = true" @on-help-click="onHelpClick"
@align-selected="onAlignSelected" @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>
:real-time-data="globalStore.real_time_data"
:use-thumbnail="mtEidtProps.useThumbnail"
@on-group-click="mainPanelRef?.createGroupItem"
@on-ungroup-click="mainPanelRef?.onUngroup"
@on-delete-click="onDeleteClick"
@on-export-click="onExportClick"
@on-tree-click="done_json_tree_visiable = true"
@on-help-click="onHelpClick"
@align-selected="onAlignSelected"
@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-container class="h-[calc(100%-45px-40px)]">
<el-aside :width="aside_state.left_show ? '300px' : '0px'"
<el-aside
: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"
@mousedown="mainPanelRef?.stopListenerKeyDown()">
@mousedown="mainPanelRef?.stopListenerKeyDown()"
>
<tabs></tabs>
<!-- <left-aside :leftAsideConfig="leftAsideStore.config"></left-aside> -->
</el-aside>
<el-main class="dark:bg-myMainDarkBgColor" @mousedown="mainPanelRef?.beginListenerKeyDown()">
<main-panel ref="mainPanelRef" :group-enabled="header_group_enabled"
:un-group-enabled="header_un_group_enabled" :delete-enabled="header_delete_enabled"
:line-append-enable="line_append_enable"></main-panel>
<main-panel
ref="mainPanelRef"
:group-enabled="header_group_enabled"
:un-group-enabled="header_un_group_enabled"
:delete-enabled="header_delete_enabled"
:line-append-enable="line_append_enable"
></main-panel>
</el-main>
<el-aside :width="aside_state.right_show ? '300px' : '0px'"
<el-aside
:width="aside_state.right_show ? '300px' : '0px'"
class="dark:bg-myDarkBgColor cl-border mt-edit-aside select-none"
@mousedown="mainPanelRef?.stopListenerKeyDown()">
@mousedown="mainPanelRef?.stopListenerKeyDown()"
>
<right-aside>
<template v-if="hasDeviceBindSlot" #deviceBind="{ item }">
<slot name="deviceBind" :item="item" />
@@ -46,22 +72,36 @@
<footer-panel></footer-panel>
</el-footer>
</el-container>
<el-dialog :close-on-click-modal="false" v-model="import_visible" title="数据导入"
@close="mainPanelRef?.beginListenerKeyDown()">
<el-dialog
:close-on-click-modal="false"
v-model="import_visible"
title="数据导入"
@close="mainPanelRef?.beginListenerKeyDown()"
>
<import-json ref="importJsonRef"></import-json>
<template #footer>
<el-button type="primary" @click="onImportYes">确定</el-button>
</template>
</el-dialog>
<el-dialog :close-on-click-modal="false" v-model="export_visible" title="数据导出"
@close="mainPanelRef?.beginListenerKeyDown()">
<export-json :done-json="objectDeepClone(globalStore.done_json)" :canvas-cfg="globalStore.canvasCfg"
:grid-cfg="globalStore.gridCfg"></export-json>
<el-dialog
:close-on-click-modal="false"
v-model="export_visible"
title="数据导出"
@close="mainPanelRef?.beginListenerKeyDown()"
>
<export-json
:done-json="objectDeepClone(globalStore.done_json)"
:canvas-cfg="globalStore.canvasCfg"
:grid-cfg="globalStore.gridCfg"
></export-json>
</el-dialog>
<el-drawer v-model="done_json_tree_visiable" title="图形结构树" direction="ltr" size="30%">
<done-tree :done-json="globalStore.done_json" :selected-items-id="globalStore.selected_items_id"
<done-tree
:done-json="globalStore.done_json"
:selected-items-id="globalStore.selected_items_id"
@update-selected-items-id="onTreeUpdateSelectedItemsId"
@update-selected-id-hide="onDoneTreeUpdateSelectedIdHide"></done-tree>
@update-selected-id-hide="onDoneTreeUpdateSelectedIdHide"
></done-tree>
</el-drawer>
</div>
</template>
@@ -195,7 +235,6 @@ const onSaveAll = async () => {
return item
})
let form = new FormData()
let blob = new Blob([JSON.stringify(data)], {
type: 'application/json'

View File

@@ -54,9 +54,9 @@ class MQTT {
try {
// const mqttUrl = 'ws://192.168.1.103:8083/mqtt'
const mqttUrl =
localStorage.getItem('MqttUrl') == 'null'
localStorage.getItem('MQTTZUTAI') == 'null'
? 'ws://192.168.1.24:8085/mqtt'
: localStorage.getItem('MqttUrl')
: localStorage.getItem('MQTTZUTAI')
console.log('🚀 ~ MQTT ~ init ~ mqttUrl:', mqttUrl)
this.client = mqtt.connect(mqttUrl, this.defaultOptions as IClientOptions)
this.setupEventListeners()