From 9d7d7c0cbd4759ab84b02b26f8c38ed8e28799f0 Mon Sep 17 00:00:00 2001 From: guanj Date: Fri, 14 Nov 2025 14:08:01 +0800 Subject: [PATCH] =?UTF-8?q?=E4=BF=AE=E6=94=B9=E5=AF=BC=E5=85=A5json?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/components/mt-edit/components/add-element/index.vue | 4 ++++ .../mt-edit/components/layout/header-panel/index.vue | 6 ++++-- .../mt-edit/components/layout/left-aside-list/index.vue | 5 +++-- .../mt-edit/components/layout/main-panel/index.vue | 4 ++++ src/stores/menuList/index.ts | 8 +++----- src/utils/loadSvg.ts | 9 +++++---- 6 files changed, 23 insertions(+), 13 deletions(-) diff --git a/src/components/mt-edit/components/add-element/index.vue b/src/components/mt-edit/components/add-element/index.vue index 4804b81..6179c62 100644 --- a/src/components/mt-edit/components/add-element/index.vue +++ b/src/components/mt-edit/components/add-element/index.vue @@ -162,6 +162,10 @@ const options = [ { value: '自定义', label: '自定义' + }, + { + value: '特殊图元', + label: '特殊图元' } ] diff --git a/src/components/mt-edit/components/layout/header-panel/index.vue b/src/components/mt-edit/components/layout/header-panel/index.vue index 5acfc1c..828df63 100644 --- a/src/components/mt-edit/components/layout/header-panel/index.vue +++ b/src/components/mt-edit/components/layout/header-panel/index.vue @@ -55,12 +55,12 @@ - + - + @@ -229,7 +229,9 @@ import { useDark, useToggle, useFullscreen } from '@vueuse/core' import { ElIcon, ElDivider, ElPopover, ElButton, ElButtonGroup, ElImage, ElText, ElTag } from 'element-plus' import SvgAnalysis from '@/components/mt-edit/components/svg-analysis/index.vue' import type { IRealTimeData } from '@/components/mt-edit/store/types' +import { useDataStore } from '@/stores/menuList' import { ref } from 'vue' +const useData = useDataStore() type HeaderPanelProps = { leftAside: boolean rightAside: boolean diff --git a/src/components/mt-edit/components/layout/left-aside-list/index.vue b/src/components/mt-edit/components/layout/left-aside-list/index.vue index 6fc8e01..905a1c3 100644 --- a/src/components/mt-edit/components/layout/left-aside-list/index.vue +++ b/src/components/mt-edit/components/layout/left-aside-list/index.vue @@ -22,7 +22,7 @@ - + @@ -205,7 +205,7 @@ const onAddClick = () => { } // 删除功能,传索引行数 -function del(index: number) { +function del(index: number,row: any) { ElMessageBox.confirm('确定删除?', '提示', { confirmButtonText: '确定', cancelButtonText: '取消', @@ -214,6 +214,7 @@ function del(index: number) { .then(() => { // splice方法,传两个参数:第几行开始,删除多少条(如果未规定此参数,则删除从 index 开始到原数组结尾的所有元素) dataTrees.value.splice(index, 1) + useData.placeKid(row.kId) ElMessage({ type: 'success', message: '删除成功' diff --git a/src/components/mt-edit/components/layout/main-panel/index.vue b/src/components/mt-edit/components/layout/main-panel/index.vue index aaaa5df..57df0c3 100644 --- a/src/components/mt-edit/components/layout/main-panel/index.vue +++ b/src/components/mt-edit/components/layout/main-panel/index.vue @@ -1420,6 +1420,10 @@ watch( time.value = setTimeout(() => { console.log('🚀 ~ globalStore:', globalStore) + if(useData.keyName==''){ + ElMessage.warning('请选择图纸!') + } + const { exportJson } = genExportJson(globalStore.canvasCfg, globalStore.gridCfg, globalStore.done_json) // const data_model: any = { diff --git a/src/stores/menuList/index.ts b/src/stores/menuList/index.ts index 6799f1b..e9666b6 100644 --- a/src/stores/menuList/index.ts +++ b/src/stores/menuList/index.ts @@ -11,7 +11,7 @@ export const useDataStore = defineStore('data-store', { identifying: '0', mqttID: '', preview: '', - keyName: '',//选中的name + keyName: '', //选中的name wxqr: '', loading: true, display: false, //无锡项目进去是true,其他项目是false 控制预览的时候返回按钮的展示 @@ -68,18 +68,16 @@ export const useDataStore = defineStore('data-store', { modify(kId: number, val: string) { this.dataTree.forEach((item: any) => { if (item.kId == kId) { - - } }) }, // 放置kid placeKid(id: String) { this.identifying = id - this.dataTree.forEach((item: any) => { + this.keyName = '' + this.dataTree.forEach((item: any) => { if (item.kId == id) { this.keyName = item.name - } }) }, diff --git a/src/utils/loadSvg.ts b/src/utils/loadSvg.ts index 77f068b..acd5c55 100644 --- a/src/utils/loadSvg.ts +++ b/src/utils/loadSvg.ts @@ -25,14 +25,15 @@ interface SvgConfig { } } // 处理单个SVG元素的函数 -const processSvgItem = async (item: ElementItem): Promise => { +const processSvgItem = async (item: ElementItem, type: string): Promise => { try { const svgContent = await download({ filePath: item.path }) // 替换填充色用于缩略图 - const filledSvg = svgContent.replace(/(\sfill=(["']))[^"']*(\2)/g, '$1#000000$3') + const filledSvg = + type == '特殊图元' ? svgContent : svgContent.replace(/(\sfill=(["']))[^"']*(\2)/g, '$1#000000$3') // 移除原始填充色 - const cleanSvg = svgContent.replace(/\sfill=(["'])[^"']*\1/g, '') + const cleanSvg = type == '特殊图元' ? svgContent : svgContent.replace(/\sfill=(["'])[^"']*\1/g, '') return { id: item.id, @@ -142,7 +143,7 @@ const loadSvg = async () => { // 处理每个类型的元素并注册 for (const [type, items] of Object.entries(groupedElements)) { - const svgConfigs = await Promise.all(items.map(item => processSvgItem(item))) + const svgConfigs = await Promise.all(items.map(item => processSvgItem(item, type))) leftAsideStore.registerConfig(type, svgConfigs) } } catch (error) {