Compare commits

...

2 Commits

Author SHA1 Message Date
徐景良 2a2b36cbd8 Merge branch 'main' of http://123.132.248.154:10000/HC_YFZX/CaiYuanYiTiHua 2024-08-28 08:26:40 +08:00
徐景良 c8cb40e1d9 merge 2024-08-28 08:26:37 +08:00
8 changed files with 189 additions and 52 deletions

Binary file not shown.

After

Width:  |  Height:  |  Size: 483 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 650 B

View File

@ -51,6 +51,11 @@
<div class="split-line" @click="handlerDrawLineString()" v-if="props.splitPlugin"></div> <div class="split-line" @click="handlerDrawLineString()" v-if="props.splitPlugin"></div>
</a-tooltip> </a-tooltip>
<a-tooltip>
<template #title>{{isShowPicture?'显示选中图片方位角':'显示全部图片方位角'}}</template>
<div :class="isShowPicture?'picture-azimuth':'picture-azimuth-active'" @click="handlerChangePictureVisible()"></div>
</a-tooltip>
<div class="split-polygon" @click="handlerDrawPolygon()" v-if="false"> </div> <div class="split-polygon" @click="handlerDrawPolygon()" v-if="false"> </div>
</div> </div>
@ -60,8 +65,23 @@
<a-button type="default" size="small" @click="handlerPushLocationItem" <a-button type="default" size="small" @click="handlerPushLocationItem"
><PlusOutlined />添加</a-button ><PlusOutlined />添加</a-button
> >
&nbsp; &nbsp;
<a-button type="default" size="small" @click="handlerClearLocationItem" <a-upload
name="file"
:before-upload="handleImportCoorinateChange"
:showUploadList="false"
>
<a-button
type="default"
size="small"
><CloudUploadOutlined />导入
</a-button>
</a-upload>
&nbsp;
<a-button type="default" size="small" @click="handlerClearLocationItem"
><ClearOutlined />清空</a-button ><ClearOutlined />清空</a-button
> >
&nbsp; &nbsp;
@ -70,8 +90,10 @@
size="small" size="small"
v-if="props.splitPlugin" v-if="props.splitPlugin"
@click="onHandlerSplitPolygon" @click="onHandlerSplitPolygon"
><SplitCellsOutlined />分割图斑</a-button ><SplitCellsOutlined />分割图斑</a-button>
>
<span style="float: right"> <span style="float: right">
<CloseOutlined @click="handlerLocationClose" /> <CloseOutlined @click="handlerLocationClose" />
</span> </span>
@ -129,6 +151,7 @@
PlusOutlined, PlusOutlined,
ClearOutlined, ClearOutlined,
SplitCellsOutlined, SplitCellsOutlined,
CloudUploadOutlined
} from '@ant-design/icons-vue'; } from '@ant-design/icons-vue';
import mapboxgl, { Map, Popup } from 'mapbox-gl'; import mapboxgl, { Map, Popup } from 'mapbox-gl';
import Icon from '@/components/Icon/Icon.vue'; import Icon from '@/components/Icon/Icon.vue';
@ -617,6 +640,7 @@
}; };
// //
const splitFeature = (line) => { const splitFeature = (line) => {
let splitLineString = { let splitLineString = {
type: 'Feature', type: 'Feature',
properties: {}, properties: {},
@ -1184,6 +1208,32 @@
locationArrays.value.push(item); locationArrays.value.push(item);
}; };
// txt
const handleImportCoorinateChange = (e)=>{
console.log("woligehoulai",e);
const reader = new FileReader();
reader.readAsText(e);
reader.onload = function(text){
console.log(text.target?.result?.split("\r\n"))
handlerImportCoor(text.target?.result?.split("\r\n"));
}
}
const handlerImportCoor = (arr)=>{
arr?.forEach((item,index)=>{
let coor = item.split(",");
if(coor[0] && coor[1]){
let obj = {
lng:parseFloat(coor[1]),
lat:parseFloat(coor[0])
}
locationArrays.value?.push(obj);
}
})
}
const handlerClearLocationItem = () => { const handlerClearLocationItem = () => {
locationArrays.value = []; locationArrays.value = [];
locationGeoJson.point.features = []; locationGeoJson.point.features = [];
@ -1343,8 +1393,14 @@
}; };
// //
//
const isShowPicture = ref<Boolean>(true);
const imageList = ref<Array>([]); const imageList = ref<Array>([]);
const pictureArrowElementArray = ref([]); const pictureArrowElementArray = ref([]);
const pictureParentArrowElementArray = ref([]);
const currentPictureIndex = ref(null);
const currentPictureZIndex = ref(0);
function handlerLoadPictureAzimuth(list) { function handlerLoadPictureAzimuth(list) {
imageList.value = list; imageList.value = list;
pictureArrowElementArray.value = []; pictureArrowElementArray.value = [];
@ -1361,13 +1417,18 @@
childElement.style.transform = 'rotate(' + item.orientation + 'deg)'; childElement.style.transform = 'rotate(' + item.orientation + 'deg)';
childElement.style.backgroundImage = 'url(/map/arrow.png)'; childElement.style.backgroundImage = 'url(/map/arrow.png)';
childElement.style.backgroundSize = '43px 57px'; childElement.style.backgroundSize = '43px 57px';
childElement.style.position = "relative";
arrowElement.appendChild(childElement); arrowElement.appendChild(childElement);
pictureArrowElementArray.value?.push(childElement); pictureArrowElementArray.value?.push(childElement);
pictureParentArrowElementArray.value?.push(arrowElement);
let arrowMark = new mapboxgl.Marker(arrowElement) let arrowMark = new mapboxgl.Marker(arrowElement)
.setLngLat([item.lng, item.lat]) .setLngLat([item.lng, item.lat])
.addTo(map); .addTo(map);
} }
}); });
currentPictureZIndex.value = list?.length;
// setTimeout(function(){ // setTimeout(function(){
// handlerCurrentImageChange(0); // handlerCurrentImageChange(0);
// },10000) // },10000)
@ -1379,19 +1440,50 @@
imageList.value?.forEach((item, index) => { imageList.value?.forEach((item, index) => {
if (item.filePath?.match(fileName)) { if (item.filePath?.match(fileName)) {
currentIndex = index; currentIndex = index;
currentPictureIndex.value = index;
} }
}); });
try { try {
pictureArrowElementArray.value?.forEach((itme, index) => { pictureArrowElementArray.value?.forEach((itme, index) => {
pictureArrowElementArray.value[index].style.backgroundImage = 'url(/map/arrow.png)'; pictureArrowElementArray.value[index].style.backgroundImage = 'url(/map/arrow.png)';
if(isShowPicture.value){
pictureArrowElementArray.value[index].style.display = 'block';
}else{
pictureArrowElementArray.value[index].style.display = 'none';
}
}); });
pictureArrowElementArray.value[currentIndex].style.backgroundImage = 'url(/map/arrow-a.png)'; pictureArrowElementArray.value[currentIndex].style.backgroundImage = 'url(/map/arrow-a.png)';
pictureArrowElementArray.value[currentIndex].style.display = 'block';
//
currentPictureZIndex.value = currentPictureZIndex.value + 1;
pictureParentArrowElementArray.value[currentIndex].style.zIndex = currentPictureZIndex.value;
} catch (e) {} } catch (e) {}
return; return;
} }
function handlerChangePictureVisible(){
isShowPicture.value = !isShowPicture.value;
//
if(isShowPicture.value){
pictureArrowElementArray.value?.forEach((itme, index) => {
pictureArrowElementArray.value[index].style.display = 'block';
});
}else{
pictureArrowElementArray.value?.forEach((itme, index) => {
pictureArrowElementArray.value[index].style.display = 'none';
});
if(pictureArrowElementArray.value?.length){
pictureArrowElementArray.value[currentPictureIndex.value].style.display = 'block';
}
}
//
}
// //
const handlerLocationDrawPoint = () => {}; const handlerLocationDrawPoint = () => {};
@ -1609,6 +1701,32 @@
} }
} }
.picture-azimuth{
width: 29px;
height: 29px;
float: left;
background: url(/map/is_show_picture.png);
background-size: 20px 20px;
background-repeat: no-repeat;
background-position: 4px 5px;
&:hover {
cursor: pointer;
}
}
.picture-azimuth-active{
width: 29px;
height: 29px;
float: left;
background: url(/map/not_show_picture.png);
background-size: 20px 20px;
background-repeat: no-repeat;
background-position: 4px 5px;
&:hover {
cursor: pointer;
}
}
.draw-polygon { .draw-polygon {
width: 29px; width: 29px;
height: 29px; height: 29px;

View File

@ -244,6 +244,7 @@
<a-image-preview-group <a-image-preview-group
:preview="{ :preview="{
getContainer:getContainer, getContainer:getContainer,
onVisibleChange:handlerImageChange
}" }"
> >
<template <template
@ -254,6 +255,7 @@
v-if="imageItem" v-if="imageItem"
width="100px" width="100px"
height="100px" height="100px"
@click="handlerPreviewImage(imageIndex,imageItem)"
:src="`${VITE_GLOB_INFO_IMAGE_URL}/${imageItem}`" :src="`${VITE_GLOB_INFO_IMAGE_URL}/${imageItem}`"
:preview="{ :preview="{
getContainer, getContainer,
@ -289,6 +291,7 @@
<a-image-preview-group <a-image-preview-group
:preview="{ :preview="{
getContainer:getContainer, getContainer:getContainer,
onVisibleChange:handlerImageChange
}" }"
> >
<template v-for="(imageItem, imageIndex) in bubanzhaopianList" :key="imageIndex"> <template v-for="(imageItem, imageIndex) in bubanzhaopianList" :key="imageIndex">
@ -296,6 +299,7 @@
v-if="imageItem" v-if="imageItem"
width="100px" width="100px"
height="100px" height="100px"
@click="handlerPreviewImage(imageIndex,imageItem)"
:src="`${VITE_GLOB_INFO_IMAGE_URL}/${imageItem}`" :src="`${VITE_GLOB_INFO_IMAGE_URL}/${imageItem}`"
:preview="{ :preview="{
getContainer, getContainer,
@ -537,29 +541,23 @@
shijiyijian, shijiyijian,
} = props.showInfoData; } = props.showInfoData;
const imageList = ref([]) const imageList = ref([]);
async function getCaseImgList(){ async function getCaseImgList(){
imageList.value = await getLoadCaseImgList({caseid:id}); imageList.value = await getLoadCaseImgList({caseid:id});
MapboxComponent.value.handlerLoadPictureAzimuth(imageList.value);
// //
let zhengshiImageList = []; // let zhengshiImageList = [];
imageList.value?.forEach((item,index)=>{ // imageList.value?.forEach((item,index)=>{
let obj = anjianzhaopianList.value?.find((it,idx)=>{ // let obj = anjianzhaopianList.value?.find((it,idx)=>{
return item.filePath == it; // return item.filePath == it;
}) // })
if(obj){ // if(obj){
zhengshiImageList.push(imageList.value[index]); // zhengshiImageList.push(imageList.value[index]);
} // }
}) // })
// console.log("imageList",imageList.value);
// console.log("anjianzhaopianList",anjianzhaopianList.value);
// console.log("zhengshiImageList",zhengshiImageList);
MapboxComponent.value.handlerLoadPictureAzimuth(zhengshiImageList);
} }
function handlerPreviewImage(index,url){ function handlerPreviewImage(index,url){

View File

@ -369,9 +369,9 @@
/> />
</div> </div>
<div class="split-operation"> <div class="split-operation">
<a-button type="primary" @click="reductionSplit"></a-button> <a-button type="primary" :disabled="isSpliting" @click="reductionSplit"></a-button>
&nbsp; &nbsp;
<a-button type="primary" @click="saveSplitResult"></a-button> <a-button type="primary" :disabled="isSpliting" @click="saveSplitResult"></a-button>
</div> </div>
</div> </div>
</div> </div>
@ -513,6 +513,8 @@
const activeKey = ref('1'); const activeKey = ref('1');
const geomsList = ref() const geomsList = ref()
const isSpliting = ref<Boolean>(false);;
const mapshow = ref<Boolean>(false); const mapshow = ref<Boolean>(false);
onMounted(()=>{ onMounted(()=>{
mapshow.value = true mapshow.value = true
@ -820,12 +822,16 @@
// //
const saveSplitResult = () => { const saveSplitResult = () => {
isSpliting.value = true;
if (splitPolygonForm.value?.length == 0) { if (splitPolygonForm.value?.length == 0) {
createMessage.error('请先使用风格工具分割图斑!'); createMessage.error('请先使用分割工具分割图斑!');
isSpliting.value = false;
return null; return null;
} }
let checkResult = handlerBeforeSubmitCheckArea(); let checkResult = handlerBeforeSubmitCheckArea();
if (!checkResult) { if (!checkResult) {
isSpliting.value = false;
return null; return null;
} }
@ -834,7 +840,7 @@
caseid: id, caseid: id,
processid: props.showInfoData.processid, processid: props.showInfoData.processid,
}; };
console.log('params', params);
splitPolygonForm.value?.forEach((item, index) => { splitPolygonForm.value?.forEach((item, index) => {
let polygon = { let polygon = {
@ -849,13 +855,17 @@
}; };
params.parts.push(polygon); params.parts.push(polygon);
}); });
try{
splitCase(params).then((res) => { splitCase(params).then((res) => {
if (res) { if (res) {
createMessage.success('操作成功!'); createMessage.success('操作成功!');
emits('closeModal'); emits('closeModal');
} isSpliting.value = false;
}); }
});
}catch(e){
isSpliting.value = false;
}
}; };
// //

View File

@ -41,19 +41,16 @@ import {transformGCJ2WGS} from "@/utils/EpsgTransform.ts"
if(item.location){ if(item.location){
let newCoord = transformGCJ2WGS(item.location[1],item.location[0]) let newCoord = transformGCJ2WGS(item.location[1],item.location[0])
if(newCoord){ if(newCoord){
console.log("newCoord",newCoord);
emits("toPosition",[newCoord.lon,newCoord.lat]); emits("toPosition",[newCoord.lon,newCoord.lat]);
} }
}else{ }else{
let filter = "\"case_no\"=\'"+item.id+"\'"; let filter = "\"case_no\"=\'"+item.id+"\'";
let point = await getPolygonCenter({tablename:"view_drone_shp_data",filter:filter}) let point = await getPolygonCenter({tablename:"view_drone_shp_data",filter:filter})
console.log(point);
if(point.length>0){ if(point.length>0){
try{ try{
let geojson = WktToGeojson(point[0].centroid_point) let geojson = WktToGeojson(point[0].centroid_point)
item.location = geojson.coordinates; // item.location = geojson.coordinates;
emits("toPosition",item.location); emits("toPosition",geojson.coordinates);
}catch(e){ }catch(e){
} }

View File

@ -492,6 +492,18 @@ const handlerDealCountry = (countyName:String = "临沂市"):void=>{
}) })
} }
/**
*
* 县区边界countyLayer
* 县区面板图层countyPanelLayer
* 乡镇边界streetLayer
* 乡镇名称图层streetLabelLayer
* 遮罩图层mb-tag
* 图斑线historyLayerLine
* 图斑面historyLayerFill
*
* */
// //
const handlerLoadCountyLayer = (geojson)=>{ const handlerLoadCountyLayer = (geojson)=>{
// 线 // 线
@ -573,16 +585,16 @@ const handlerLoadPanelLayer = (geojson)=>{
], ],
'fill-opacity':0.9 'fill-opacity':0.9
} }
} },
) )
if(map.getLayer("countyLayer")){ // if(map.getLayer("countyPanelLayer")){
map.moveLayer("countyLayer","countyPanelLayer"); // map.moveLayer("countyPanelLayer","countyLayer");
map.moveLayer("historyLayerLine","countyLayer"); // map.moveLayer("countyPanelLayer","historyLayerLine");
map.moveLayer("historyLayerFill","countyLayer"); // map.moveLayer("countyPanelLayer","historyLayerFill");
map.moveLayer("countyLayer","countyLayer"); // }
}
} }
} }
@ -687,11 +699,6 @@ const handlerLoadStreetLayer = (geojson)=>{
'text-halo-width': 2, 'text-halo-width': 2,
} }
}); });
// handlerLoadVillageLayer();
map.moveLayer("countyLayer");
} }
} }
@ -752,6 +759,8 @@ const handlerLoadVillageLayer = ()=>{
* *
* 行政区划countyLayer * 行政区划countyLayer
* *
*
*
* */ * */
function handlerChangeLayerVisible(layerName,checked){ function handlerChangeLayerVisible(layerName,checked){
if (checked) { if (checked) {
@ -762,9 +771,11 @@ function handlerChangeLayerVisible(layerName,checked){
if(layerName == 'countyPanelLayer'){ if(layerName == 'countyPanelLayer'){
if(map.getLayer("countyPanelLayer")){ if(map.getLayer("countyPanelLayer")){
map.moveLayer("historyLayerLine","countyLayer"); map.moveLayer("countyPanelLayer","streetLayer");
map.moveLayer("historyLayerFill","countyLayer"); map.moveLayer("countyPanelLayer","streetLabelLayer");
map.moveLayer("countyLayer","countyLayer"); map.moveLayer("countyPanelLayer","countyLayer");
map.moveLayer("countyPanelLayer","historyLayerFill");
map.moveLayer("countyPanelLayer","historyLayerLine");
} }
} }
} }

View File

@ -82,6 +82,9 @@
month: currentFilter.value, month: currentFilter.value,
}; };
caseOffenceEcharts(querys).then((res) => { caseOffenceEcharts(querys).then((res) => {
res.sort((a, b) => a.countyid - b.countyid);
res.forEach((element) => { res.forEach((element) => {
countyList.value.push(element.countyname); countyList.value.push(element.countyname);
tbAreaList.value.push(element.tbmj); tbAreaList.value.push(element.tbmj);