This commit is contained in:
njdaoyehu 2025-05-14 13:05:30 +08:00
parent f539747c03
commit 84bfb5a4fa

View File

@ -3,8 +3,10 @@
<BasicForm @register="registerForm" @field-value-change="handleValuesChanged" /> <BasicForm @register="registerForm" @field-value-change="handleValuesChanged" />
<BasicTable @register="registerTable"> <BasicTable @register="registerTable">
<template #toolbar> <template #toolbar>
<div style="margin-right: 20px; color: #ffffff; font-size: 14px;"> {{ paramData.length }} </div>
<a-button type="primary" :icon="h(PlusOutlined)" @click="handleCreate"> </a-button> <a-button type="primary" :icon="h(PlusOutlined)" @click="handleCreate"> </a-button>
<a-button type="primary" :icon="h(EyeOutlined)" :disabled="importDisabled" @click="handleOpenFileDialog">OCR识别</a-button> <a-button type="primary" :icon="h(EyeOutlined)" :disabled="importDisabled" @click="handleOpenFileDialog">OCR识别</a-button>
<a-button type="primary" :icon="h(FileSyncOutlined)" style="font-size: 10px;" :disabled="importDisabled" @click="handleParamData">根据墙体类型和方向整理OCR识别的数据</a-button>
<a-button type="primary" :icon="h(FileExcelOutlined)" :disabled="importDisabled" @click="handleImport">导入Excel</a-button> <a-button type="primary" :icon="h(FileExcelOutlined)" :disabled="importDisabled" @click="handleImport">导入Excel</a-button>
<Popconfirm <Popconfirm
title="确定要清空预埋件列表吗?" title="确定要清空预埋件列表吗?"
@ -67,7 +69,7 @@ import { formSchema } from './schema';
import { BasicDrawer, useDrawerInner } from '@/components/Drawer'; import { BasicDrawer, useDrawerInner } from '@/components/Drawer';
import * as TaskApi from '@/api/data/taskApi'; import * as TaskApi from '@/api/data/taskApi';
import { BasicTable, useTable, TableAction } from '@/components/Table'; import { BasicTable, useTable, TableAction } from '@/components/Table';
import { EyeOutlined, PlusOutlined, MinusOutlined, FileExcelOutlined } from "@ant-design/icons-vue"; import { EyeOutlined, PlusOutlined, MinusOutlined, FileSyncOutlined, FileExcelOutlined } from "@ant-design/icons-vue";
import { Popconfirm } from 'ant-design-vue'; import { Popconfirm } from 'ant-design-vue';
import Modal from "@/views/data/task/modal.vue"; import Modal from "@/views/data/task/modal.vue";
import { useModal } from '/@/components/Modal'; import { useModal } from '/@/components/Modal';
@ -248,6 +250,7 @@ const handleOpenFileDialog = () => {
emit("ocrClick", data); emit("ocrClick", data);
}; };
// EXCEL
const handleImport = () => { const handleImport = () => {
WebViewService.importExcel().then((res: any) => { WebViewService.importExcel().then((res: any) => {
const data = getFieldsValue(); const data = getFieldsValue();
@ -266,12 +269,6 @@ const handleImport = () => {
items.forEach((d: any) => { items.forEach((d: any) => {
if (d.wallType.toUpperCase() === data.wallType && d.direction === data.direction) { if (d.wallType.toUpperCase() === data.wallType && d.direction === data.direction) {
const items = paramData.value.filter((p: any) => p.code === d.code); const items = paramData.value.filter((p: any) => p.code === d.code);
// if (data.wallType === "B") {
// const nX: any = d["y"];
// const nY: any = d["x"];
// d.x = nX;
// d.y = nY;
// }
if (items.length === 0) { if (items.length === 0) {
paramData.value.push({...d}); paramData.value.push({...d});
} else { } else {
@ -316,20 +313,11 @@ const handleValuesChanged = () => {
importDisabled.value = data.wallType === undefined || data.direction === undefined; importDisabled.value = data.wallType === undefined || data.direction === undefined;
}; };
// OCR
const setParamData = (data: any) => { const setParamData = (data: any) => {
const items = handleParamData(data);
if (!paramData.value) if (!paramData.value)
paramData.value = []; paramData.value = [];
items.forEach((d: any) => { data.forEach((d: any) => {
if (d.hasOwnProperty("zm")) {
delete d.zm;
}
if (d.hasOwnProperty("nX")) {
delete d.nX;
}
if (d.hasOwnProperty("nY")) {
delete d.nY;
}
const items = paramData.value.filter((p: any) => p.code === d.code); const items = paramData.value.filter((p: any) => p.code === d.code);
if (items.length === 0) { if (items.length === 0) {
paramData.value.push({...d}); paramData.value.push({...d});
@ -341,28 +329,34 @@ const setParamData = (data: any) => {
WebViewService.setMessage('数据导入成功!', "success").then(() => {}); WebViewService.setMessage('数据导入成功!', "success").then(() => {});
}; };
const handleParamData = (items: any) => { // OCR
const handleParamData = () => {
const data = getFieldsValue(); const data = getFieldsValue();
const wallType = data.wallType; const wallType = data.wallType;
const direction = data.direction; const direction = data.direction;
// x // x
const uniqueListX = Array.from(new Map(items.map((item: any) => [item.x, item])).values()); const uniqueListX = Array.from(new Map(paramData.value.map((item: any) => [item.x, item])).values());
// y // y
const uniqueListY = Array.from(new Map(items.map((item: any) => [item.y, item])).values()); const uniqueListY = Array.from(new Map(paramData.value.map((item: any) => [item.y, item])).values());
// B // B
items.forEach((d: any) => { paramData.value.forEach((d: any) => {
if (wallType === "B类" && uniqueListX.length <= 3 && uniqueListY.length > 3) { if (wallType === "B类" && uniqueListX.length <= 3 && uniqueListY.length > 3) {
const nX: any = d["y"]; const nX: any = d["y"];
const nY: any = d["x"]; const nY: any = d["x"];
d.nX = nX; d.nX = nX;
d.nY = nY; d.nY = nY;
} else {
const nX: any = d["x"];
const nY: any = d["y"];
d.nX = nX;
d.nY = nY;
} }
}); });
// //
const uniqueY = Array.from(new Map(items.map((item: any) => [item.nY, item])).values()); const uniqueY = Array.from(new Map(paramData.value.map((item: any) => [item.nY, item])).values());
const maxY = Math.max(...uniqueY.map((item: any) => Number(item.nY))); const maxY = Math.max(...uniqueY.map((item: any) => Number(item.nY)));
const minY = Math.min(...uniqueY.map((item: any) => Number(item.nY))); const minY = Math.min(...uniqueY.map((item: any) => Number(item.nY)));
items.forEach((d: any) => { paramData.value.forEach((d: any) => {
if (Number(d.nY) === minY) { if (Number(d.nY) === minY) {
d.zm = 1; d.zm = 1;
} else if (Number(d.nY) === maxY) { } else if (Number(d.nY) === maxY) {
@ -373,7 +367,23 @@ const handleParamData = (items: any) => {
d.zm = 1; d.zm = 1;
} }
}); });
return direction === "正面" ? items.filter((d: any) => { return d.zm === 1 }).map((d: any) => ({...d})) : items.filter((d: any) => { return d.zm === 0 }).map((d: any) => ({...d})); paramData.value = direction === "正面" ? paramData.value.filter((d: any) => {
return d.zm === 1
}).map((d: any) => ({...d})) : paramData.value.filter((d: any) => {
return d.zm === 0
}).map((d: any) => ({...d}));
paramData.value.forEach((d: any) => {
if (d.hasOwnProperty("zm")) {
delete d.zm;
}
if (d.hasOwnProperty("nX")) {
delete d.nX;
}
if (d.hasOwnProperty("nY")) {
delete d.nY;
}
});
WebViewService.setMessage('数据整理完成!', "success").then(() => {});
} }
defineExpose({ defineExpose({