修改障碍物保存逻辑

main
suixy 2 months ago
parent c25be02d00
commit ac6a9461f8

@ -145,3 +145,21 @@ export function DeleteCData(data) {
url: '/api/FodAirPort/DeleteCData', method: 'get', params: data url: '/api/FodAirPort/DeleteCData', method: 'get', params: data
}); });
} }
export function UpdateFodScopeData(data) {
return request({
url: '/api/FodAirPort/UpdateFodScopeData', method: 'post', data: data
});
}
export function GetFodScopeData(data) {
return request({
url: '/api/FodAirPort/GetFodScopeData',method: 'post', data: data
});
}
export function UpdateImage(data) {
return request({
url: '/api/Fod/UpdateImage', method: 'post', data: data
});
}

@ -228,21 +228,47 @@
<!-- 目标表格2 --> <!-- 目标表格2 -->
<el-card shadow="always" style="margin-top: 12px"> <el-card shadow="always" style="margin-top: 12px">
<el-table :data="tableData2" style="width: 100%"> <el-table
highlight-current-row
:data="tableData2.slice((currentPage2 - 1) * pageSize2, currentPage2 * pageSize2)"
style="width: 100%"
@row-click="table1Current"
>
<el-table-column type="selection" width="55"/>
<el-table-column label="序号" type="index" width="60"/> <el-table-column label="序号" type="index" width="60"/>
<el-table-column prop="name" label="目标名称" width="120"/> <el-table-column prop="Lon" label="目标经度" width="100"/>
<el-table-column prop="lon" label="目标经度" width="120"/> <el-table-column prop="Lat" label="目标纬度" width="100"/>
<el-table-column prop="lat" label="目标纬度" width="120"/> <el-table-column prop="rate" label="强度信息" width="100"/>
<el-table-column prop="deviation" label="deviation" width="120"/> <el-table-column v-if="false" label="强度信息" width="160">
<el-table-column prop="shielding" label="shielding" width="120"/>
<el-table-column label="操作" show-overflow-tooltip>
<template #default="scope"> <template #default="scope">
<el-button type="primary" link @click="delShildItem(scope.row)"> <el-rate :model-value="scope.row.rate || 3" disabled/>
删除 </template>
</el-button> </el-table-column>
<el-table-column label="处理方式" show-overflow-tooltip>
<template #default="scope">
<el-button type="primary" @click.stop="openHandleObstacleDialog(scope)" link>处置</el-button>
<el-popconfirm
class="box-item"
title="确定删除这个点位吗?"
placement="top"
@confirm="delPoint(scope)"
>
<template #reference>
<el-button type="primary" @click.stop link>删除</el-button>
</template>
</el-popconfirm>
<el-button type="primary" link>固定物</el-button>
</template> </template>
</el-table-column> </el-table-column>
</el-table> </el-table>
<el-pagination
v-model:current-page="currentPage2"
v-model:page-size="pageSize2"
:pager-count="4"
:page-sizes="[10,20,50,100, 200, 300, 400]"
layout="total, sizes, prev, pager, next, jumper"
:total="tableData2.length"
/>
</el-card> </el-card>
</div> </div>
<div v-if="itemsId === 2" class="tabsItem"> <div v-if="itemsId === 2" class="tabsItem">
@ -356,7 +382,15 @@
<el-button <el-button
type="primary" type="primary"
style="text-align: center" style="text-align: center"
@click="addNewPoint" @click=" InsertCListData([{
name: `点位${regionLabeling.length + 1}`,
lon: '1',
lat: '1',
fodAreaId: form6.region1,
fodAirId: form6.region
}]).then(() => {
getArea2()
}) "
> >
添加 添加
</el-button> </el-button>
@ -550,15 +584,20 @@
/> />
</el-form-item> </el-form-item>
<el-form-item label="处理照片" label-width="120px"> <el-form-item label="处理照片" label-width="120px">
<el-upload action="#" <el-upload @click.stop="onSubmit"
:file-list="dialog1Form.fileList" ref="uploadRef"
list-type="picture-card" :auto-upload="false"> :http-request="uploadFiles"
:file-list="dialog1Form.fileList.concat({type:'camera'})"
list-type="picture-card">
<template #trigger>
<el-icon> <el-icon>
<Plus/> <Plus/>
</el-icon> </el-icon>
</template>
<template #file="{ file }"> <template #file="{ file }">
<div> <div v-if="file.type !=='camera'">
<img class="el-upload-list__item-thumbnail" :src="file.url" alt=""/> <img class="el-upload-list__item-thumbnail" :src="file.url" alt=""/>
<span class="el-upload-list__item-actions"> <span class="el-upload-list__item-actions">
<span <span
@ -581,6 +620,11 @@
</span> </span>
</span> </span>
</div> </div>
<div @click="openCamera" v-if="file.type ==='camera'" style="border:none" class="el-upload--picture-card">
<el-icon>
<Plus/>
</el-icon>
</div>
</template> </template>
</el-upload> </el-upload>
</el-form-item> </el-form-item>
@ -588,7 +632,7 @@
<template #footer> <template #footer>
<div class="dialog-footer"> <div class="dialog-footer">
<el-button @click="dialog1 = false">关闭</el-button> <el-button @click="dialog1 = false">关闭</el-button>
<el-button type="primary" @click="dialog1 = false"> <el-button type="primary" @click="handleObstacle">
处理 处理
</el-button> </el-button>
</div> </div>
@ -597,6 +641,14 @@
<el-dialog v-model="imgDialog"> <el-dialog v-model="imgDialog">
<img width="100%" :src="dialogImageUrl" alt="Preview Image"/> <img width="100%" :src="dialogImageUrl" alt="Preview Image"/>
</el-dialog> </el-dialog>
<input
ref="cameraInput"
type="file"
accept="image/*"
capture="camera"
style="display: none"
@change="handleCameraChange"
/>
</div> </div>
</template> </template>
<script setup lang="jsx"> <script setup lang="jsx">
@ -619,7 +671,7 @@ import {
GetAllCData, GetAllCData,
InsertCListData, InsertCListData,
UpdateCData, UpdateCData,
DeleteCData DeleteCData, UpdateImage, GetFodScopeData, UpdateFodScopeData
} from "@/api/api"; } from "@/api/api";
import {useRouter} from "vue-router"; import {useRouter} from "vue-router";
import {ElMessage} from "element-plus"; import {ElMessage} from "element-plus";
@ -709,22 +761,6 @@ const areaData = ref({
}) })
// //
const dots = ref([ const dots = ref([
// {
// x: 150,
// y: 98
// },
// {
// x: 50,
// y: 102
// },
// {
// x: 75,
// y: 75
// },
// {
// x: 125,
// y: 125
// }
]) ])
// //
const dotIndex = ref(-1) const dotIndex = ref(-1)
@ -865,6 +901,34 @@ const tableData1 = ref(Array(1000).fill(0).map((_, k) => {
} }
})) }))
// //
const uploadFiles = async (e) => {
console.log(e)
const res = await UpdateImage({files: [e.file]})
console.log(res)
}
const uploadRef = ref(null)
const cameraInput = ref(null)
const openCamera = () => {
cameraInput.value?.click()
}
const handleCameraChange = (e) => {
const file = e.target.files[0]
if (!file) return
const url = URL.createObjectURL(file)
dialog1Form.fileList.value.push({
name: file.name,
url,
raw: file
})
// el-upload
uploadRef.value?.uploadFiles.push(file)
uploadRef.value?.submit()
// input
e.target.value = ''
}
const dialog1 = ref(false) const dialog1 = ref(false)
const dialog1Form = ref({}) const dialog1Form = ref({})
const dialogImageUrl = ref('') const dialogImageUrl = ref('')
@ -877,6 +941,10 @@ const openHandleObstacleDialog = (e) => {
fileList: [{url: 'https://dummyimage.com/640x360'}, {url: 'https://placehold.co/600x400/png'}] fileList: [{url: 'https://dummyimage.com/640x360'}, {url: 'https://placehold.co/600x400/png'}]
} }
} }
const handleObstacle = () => {
dialog1.value = false
tableData1.value.splice((currentPage1.value - 1) * pageSize1.value + dialog1Form.value.index, 1);
}
const handlePictureCardPreview = (file) => { const handlePictureCardPreview = (file) => {
dialogImageUrl.value = file.url dialogImageUrl.value = file.url
imgDialog.value = true imgDialog.value = true
@ -892,8 +960,11 @@ const handleRemove = (file) => {
const delPoint = (e) => { const delPoint = (e) => {
tableData1.value.splice((currentPage1.value - 1) * pageSize1.value + e.$index, 1); tableData1.value.splice((currentPage1.value - 1) * pageSize1.value + e.$index, 1);
} }
//
const currentPage1 = ref(1) const currentPage1 = ref(1)
//
const pageSize1 = ref(10) const pageSize1 = ref(10)
//
const tableData2 = ref([ const tableData2 = ref([
{ {
"id": 2, "id": 2,
@ -912,6 +983,10 @@ const tableData2 = ref([
"shielding": 20 "shielding": 20
} }
]) ])
//
const currentPage2 = ref(1)
//
const pageSize2 = ref(10)
const date1 = ref([]) const date1 = ref([])
const currentPosition = ref({}) const currentPosition = ref({})
@ -1113,6 +1188,20 @@ const getAreaData = () => {
let data = calcRectangleFromPoints(res.data) let data = calcRectangleFromPoints(res.data)
areaData.value = data areaData.value = data
getDeviationValue(res.data.find(e => e.name === '点位3')) getDeviationValue(res.data.find(e => e.name === '点位3'))
const sorted = res.data.sort((a, b) => {
const numA = parseInt(a.name.replace(/[^\d]/g, ''), 10);
const numB = parseInt(b.name.replace(/[^\d]/g, ''), 10);
return numA - numB;
});
const letters = ['a', 'b', 'c', 'd'];
const result = {};
sorted.forEach((item, index) => {
const key = letters[index];
result[`${key}Lon`] = item.lon;
result[`${key}Lat`] = item.lat;
});
UpdateFodScopeData(result)
}) })
} }

@ -8,7 +8,8 @@ export default defineConfig({
base: './', server: { base: './', server: {
host: '0.0.0.0', port: 5173, open: true, proxy: { host: '0.0.0.0', port: 5173, open: true, proxy: {
'/dev-api': { '/dev-api': {
target: 'http://192.168.1.123:5000', // target: 'http://192.168.1.123:5000',
target: 'http://192.168.0.103:5000',
changeOrigin: true, changeOrigin: true,
ws: true, ws: true,
secure: false, secure: false,

Loading…
Cancel
Save