Merge branch 'main' of http://123.132.248.154:10000/HC_YFZX/CaiYuanYiTiHua
commit
08c8b1e18e
|
|
@ -13,6 +13,8 @@ enum Api {
|
|||
LoadCloudLandQueryById = '/api/DroneCloudQuery/LoadCloudLandQueryById',
|
||||
// 查询云查询记录的情况
|
||||
LoadCloudQueryByCaseNo = '/api/DroneCloudQuery/LoadCloudQueryByCaseNo',
|
||||
// 查询云查询全部记录的情况
|
||||
LoadCloudQueryAll = '/api/DroneCloudQuery/LoadCloudQueryAll',
|
||||
}
|
||||
|
||||
export function AddDroneTask(params: { geomid: string; caseno: string; countyname: string }) {
|
||||
|
|
@ -54,4 +56,11 @@ export function LoadCloudQueryByCaseNo(params) {
|
|||
return defHttp.get({
|
||||
url: Api.LoadCloudQueryByCaseNo + '?geomid=' + params.geomid + '&caseno=' + params.caseno,
|
||||
});
|
||||
}
|
||||
|
||||
export function LoadCloudQueryAll(params) {
|
||||
return defHttp.get({
|
||||
url: Api.LoadCloudQueryAll,
|
||||
params,
|
||||
});
|
||||
}
|
||||
|
|
@ -6,11 +6,12 @@
|
|||
import { defineProps, ref, onMounted, onUnmounted, defineEmits, computed } from 'vue';
|
||||
import { v4 as uuidv4 } from 'uuid';
|
||||
import mapboxgl, { Map } from 'mapbox-gl';
|
||||
import { MapboxConfig, MapboxDefaultStyle } from '@/components/MapboxMaps/src/config.ts';
|
||||
import { MapboxConfig, MapboxDefaultStyle } from '@/components/MapboxMaps/src/config';
|
||||
import { getAppEnvConfig } from '@/utils/env';
|
||||
const { VITE_GLOB_YINGXIANG_SERVER } = getAppEnvConfig();
|
||||
|
||||
const props = defineProps(['width', 'height', 'zIndex', 'position', 'center']);
|
||||
const props = defineProps(['width', 'height', 'zIndex', 'position', 'centerAndZoom']);
|
||||
const emits = defineEmits(['getMap']);
|
||||
const { center } = props;
|
||||
const width = computed(() => {
|
||||
return props.width;
|
||||
});
|
||||
|
|
@ -30,6 +31,7 @@
|
|||
mapboxgl.accessToken = MapboxConfig.ACCESS_TOKEN;
|
||||
map = initMap();
|
||||
map.on('load', () => {
|
||||
addResourcesAndLayers();
|
||||
emits('getMap', map);
|
||||
});
|
||||
});
|
||||
|
|
@ -39,16 +41,39 @@
|
|||
language: 'zh-cmn',
|
||||
projection: 'equirectangular', // wgs84参考系
|
||||
style: MapboxDefaultStyle,
|
||||
maxZoom: 22,
|
||||
maxZoom: 24,
|
||||
minZoom: 6,
|
||||
zoom: 15,
|
||||
// ...props.mapOptions,
|
||||
center: props.center
|
||||
? getCenter(JSON.parse(`[${props.center[0].fourpoint}]`))
|
||||
zoom: props.centerAndZoom
|
||||
? calculateZoom(JSON.parse(`[${props.centerAndZoom[0]?.fourpoint}]`))
|
||||
: 14,
|
||||
center: props.centerAndZoom
|
||||
? getCenter(JSON.parse(`[${props.centerAndZoom[0]?.fourpoint}]`))
|
||||
: [117.984425, 35.270654],
|
||||
});
|
||||
};
|
||||
|
||||
function addResourcesAndLayers() {
|
||||
map.addSource('yingxiang', {
|
||||
type: 'raster',
|
||||
tiles: [
|
||||
VITE_GLOB_YINGXIANG_SERVER,
|
||||
],
|
||||
tileSize: 256,
|
||||
minzoom:13,
|
||||
maxzoom:24,
|
||||
});
|
||||
map.addLayer({
|
||||
id: 'yingxiang',
|
||||
type: 'raster',
|
||||
source: 'yingxiang',
|
||||
layout: {
|
||||
visibility: 'visible',
|
||||
},
|
||||
minzoom:13,
|
||||
maxzoom:24
|
||||
});
|
||||
}
|
||||
|
||||
// 移动位置
|
||||
function getCenter(fourpoint) {
|
||||
let x = 0;
|
||||
|
|
@ -63,6 +88,21 @@
|
|||
return [x, y];
|
||||
}
|
||||
|
||||
function calculateZoom(points) {
|
||||
// 计算边界框
|
||||
const nw = points[0];
|
||||
const ne = points[1];
|
||||
const se = points[2];
|
||||
const sw = points[3];
|
||||
const latRange = Math.abs(nw[1] - se[1]);
|
||||
const lngRange = Math.abs(nw[0] - ne[0]);
|
||||
// 计算缩放级别
|
||||
const zoomLat = Math.log2(360 / latRange) - 1;
|
||||
const zoomLng = Math.log2(360 / lngRange) - 1;
|
||||
// 返回最小的缩放级别,并保留小数后两位
|
||||
return Math.min(zoomLat * 1.05, zoomLng * 1.05).toFixed(2);
|
||||
}
|
||||
|
||||
onUnmounted(() => {
|
||||
map && map.remove();
|
||||
});
|
||||
|
|
|
|||
|
|
@ -8,12 +8,12 @@
|
|||
</div>
|
||||
<a-radio-group v-model:value="selectType" button-style="solid" size="small">
|
||||
<a-radio-button :value="0">专题图</a-radio-button>
|
||||
<a-radio-button :value="1">截图</a-radio-button>
|
||||
<!-- <a-radio-button :value="1">截图</a-radio-button> -->
|
||||
<a-radio-button :value="2">天地图</a-radio-button>
|
||||
</a-radio-group>
|
||||
</div>
|
||||
<div class="slider-menu">
|
||||
<a-slider
|
||||
<!-- <a-slider
|
||||
v-if="addOnMap && sliderShow"
|
||||
v-model:value="nowSliderValue"
|
||||
vertical="true"
|
||||
|
|
@ -44,7 +44,7 @@
|
|||
<span>设置叠加到地图的图片的透明度</span>
|
||||
</template>
|
||||
<PlusCircleOutlined
|
||||
v-if="addOnMap && sliderShow"
|
||||
v-if="(addOnMap || selectType == 2) && sliderShow"
|
||||
:style="{
|
||||
position: 'absolute',
|
||||
fontSize: '18px',
|
||||
|
|
@ -55,7 +55,7 @@
|
|||
@click="changeSliderShow"
|
||||
/>
|
||||
<MinusCircleOutlined
|
||||
v-if="addOnMap && !sliderShow"
|
||||
v-if="(addOnMap || selectType == 2) && !sliderShow"
|
||||
:style="{
|
||||
position: 'absolute',
|
||||
fontSize: '18px',
|
||||
|
|
@ -65,11 +65,11 @@
|
|||
}"
|
||||
@click="changeSliderShow"
|
||||
/>
|
||||
</a-tooltip>
|
||||
</a-tooltip> -->
|
||||
</div>
|
||||
<div class="expandShow-menu">
|
||||
<FullscreenOutlined
|
||||
v-if="addOnMap && !expandShow"
|
||||
v-if="(addOnMap || selectType == 2) && !expandShow"
|
||||
:style="{
|
||||
position: 'absolute',
|
||||
fontSize: '28px',
|
||||
|
|
@ -80,24 +80,6 @@
|
|||
}"
|
||||
@click="expand(!expandShow)"
|
||||
/>
|
||||
<!-- <a-tooltip placement="top">
|
||||
<template #title>
|
||||
<span>截取屏幕地图</span>
|
||||
</template>
|
||||
<Icon
|
||||
v-if="addOnMap"
|
||||
icon="bi:scissors"
|
||||
:size="expandShow ? 35 : 28"
|
||||
:style="{
|
||||
position: expandShow ? 'fixed' : 'absolute',
|
||||
bottom: expandShow ? '70px' : '-65px',
|
||||
right: expandShow ? '20px' : '40px',
|
||||
color: 'white',
|
||||
zIndex: 1012,
|
||||
}"
|
||||
@click="downloadImage"
|
||||
/>
|
||||
</a-tooltip> -->
|
||||
<FullscreenExitOutlined
|
||||
v-if="(addOnMap || selectType == 2) && expandShow"
|
||||
:style="{
|
||||
|
|
@ -112,10 +94,24 @@
|
|||
/>
|
||||
</div>
|
||||
<template v-if="selectType === 0 && !addOnMap">
|
||||
<a-image :width="470" :height="470" :src="convertValidUrl(showData.url)" />
|
||||
<a-image
|
||||
:width="470"
|
||||
:height="470"
|
||||
:src="convertValidUrl(showData.url)"
|
||||
:preview="{
|
||||
src: showData.previewUrl,
|
||||
}"
|
||||
/>
|
||||
</template>
|
||||
<template v-if="selectType === 1 && !addOnMap">
|
||||
<a-image :width="470" :height="470" :src="convertValidUrl(showData.urlxian)" />
|
||||
<a-image
|
||||
:width="470"
|
||||
:height="470"
|
||||
:src="convertValidUrl(showData.urlxian)"
|
||||
:preview="{
|
||||
src: showData.previewUrlXian,
|
||||
}"
|
||||
/>
|
||||
</template>
|
||||
<template v-if="selectType === 2 || addOnMap">
|
||||
<ModalMap
|
||||
|
|
@ -123,7 +119,7 @@
|
|||
:height="modalMapHeight"
|
||||
:zIndex="modalMapZIndex"
|
||||
:position="modalMapPosition"
|
||||
:center="props.data"
|
||||
:centerAndZoom="props.data"
|
||||
@getMap="getMap"
|
||||
/>
|
||||
</template>
|
||||
|
|
@ -138,6 +134,7 @@
|
|||
</a-tab-pane>
|
||||
<a-tab-pane key="2" tab="耕地占用">
|
||||
<ShowTableList
|
||||
v-if="props.data.length > 1"
|
||||
:columns="landPlanningColumns"
|
||||
:data="plowLandOccupyTable"
|
||||
:title="'土地规划查询结果'"
|
||||
|
|
@ -161,6 +158,7 @@
|
|||
import mapboxgl from 'mapbox-gl';
|
||||
// 图片路径拼接
|
||||
import { getAppEnvConfig } from '@/utils/env';
|
||||
import { result } from 'node_modules/@types/lodash-es';
|
||||
const { VITE_GLOB_API_URL } = getAppEnvConfig();
|
||||
const VITE_GLOB_API_URL_VAR = ref<String>(VITE_GLOB_API_URL + '/');
|
||||
|
||||
|
|
@ -187,13 +185,17 @@
|
|||
() => {
|
||||
if (addOnMap.value) {
|
||||
// 移除旧的图层和源
|
||||
if (map.getLayer('radar-layer')) {
|
||||
map.removeLayer('radar-layer');
|
||||
}
|
||||
if (map.getSource('radar')) {
|
||||
map.removeSource('radar');
|
||||
if(map) {
|
||||
if (map.getLayer('radar-layer')) {
|
||||
map.removeLayer('radar-layer');
|
||||
}
|
||||
if (map.getSource('radar')) {
|
||||
map.removeSource('radar');
|
||||
}
|
||||
}
|
||||
}
|
||||
// 查看结果进入就显示叠加的图
|
||||
addOnMapChange(true);
|
||||
selectType.value = 2;
|
||||
addOnMap.value = false;
|
||||
},
|
||||
|
|
@ -202,15 +204,26 @@
|
|||
const landClassifyTable = computed(() => {
|
||||
let data;
|
||||
props.data?.forEach((item, index) => {
|
||||
// console.log(props.data);
|
||||
if (index == 0) {
|
||||
let fourpoint = JSON.parse(`[${item.fourpoint}]`);
|
||||
setTimeout(() => {
|
||||
moveLocation(fourpoint);
|
||||
}, 100);
|
||||
}, 200);
|
||||
// 查看结果进入就显示叠加的图
|
||||
addOnMapChange(true);
|
||||
}
|
||||
if (item.name == '土地分类') {
|
||||
data = { ...item };
|
||||
data = { ...item };
|
||||
}
|
||||
if(item.url){
|
||||
changeTransparentColorToWhite(convertValidUrl(item.url)).then(resultImageUrl => {
|
||||
item.previewUrl = resultImageUrl;
|
||||
});
|
||||
}
|
||||
if(item.urlxian){
|
||||
changeTransparentColorToWhite(convertValidUrl(item.urlxian)).then(resultImageUrl => {
|
||||
item.previewUrlXian = resultImageUrl;
|
||||
});
|
||||
}
|
||||
});
|
||||
return data && data.list;
|
||||
|
|
@ -230,7 +243,7 @@
|
|||
case '1':
|
||||
props.data?.forEach((item) => {
|
||||
if (item.name == '土地分类') {
|
||||
data = { ...item };
|
||||
data = { ...item };
|
||||
}
|
||||
});
|
||||
return data;
|
||||
|
|
@ -312,7 +325,7 @@
|
|||
}
|
||||
});
|
||||
}
|
||||
if (selectType.value == 0) {
|
||||
if (selectType.value == 0 || selectType.value == 2) {
|
||||
url = convertValidUrl(data.url);
|
||||
fourpoint = JSON.parse(`[${data.fourpoint}]`);
|
||||
}
|
||||
|
|
@ -320,7 +333,6 @@
|
|||
url = convertValidUrl(data.urlxian);
|
||||
fourpoint = JSON.parse(`[${data.fourpoint}]`);
|
||||
}
|
||||
|
||||
let image = new Image();
|
||||
image.crossOrigin = 'anonymous';
|
||||
image.src = url;
|
||||
|
|
@ -340,11 +352,13 @@
|
|||
|
||||
|
||||
// 移除旧的图层和源
|
||||
if (map.getLayer('radar-layer')) {
|
||||
map.removeLayer('radar-layer');
|
||||
}
|
||||
if (map.getSource('radar')) {
|
||||
map.removeSource('radar');
|
||||
if(map) {
|
||||
if (map.getLayer('radar-layer')) {
|
||||
map.removeLayer('radar-layer');
|
||||
}
|
||||
if (map.getSource('radar')) {
|
||||
map.removeSource('radar');
|
||||
}
|
||||
}
|
||||
|
||||
// 添加新的源和图层
|
||||
|
|
@ -367,9 +381,9 @@
|
|||
moveLocation(fourpoint);
|
||||
};
|
||||
}
|
||||
sliderShow.value = true;
|
||||
sliderShow.value = false;
|
||||
// console.log(337, props.data);
|
||||
}, 1000);
|
||||
}, 500);
|
||||
};
|
||||
|
||||
// 移动位置
|
||||
|
|
@ -386,12 +400,28 @@
|
|||
if (map) {
|
||||
map.jumpTo({
|
||||
center: [x, y],
|
||||
zoom: 15,
|
||||
zoom: calculateZoom(fourpoint),
|
||||
});
|
||||
}
|
||||
return [x, y];
|
||||
}
|
||||
|
||||
// 计算合适的缩放级别
|
||||
function calculateZoom(points) {
|
||||
// 计算边界框
|
||||
const nw = points[0];
|
||||
const ne = points[1];
|
||||
const se = points[2];
|
||||
const sw = points[3];
|
||||
const latRange = Math.abs(nw[1] - se[1]);
|
||||
const lngRange = Math.abs(nw[0] - ne[0]);
|
||||
// 计算缩放级别
|
||||
const zoomLat = Math.log2(360 / latRange) - 1;
|
||||
const zoomLng = Math.log2(360 / lngRange) - 1;
|
||||
// 返回最小的缩放级别,并保留小数后两位
|
||||
return Math.min(zoomLat * 1.05, zoomLng * 1.05).toFixed(2);
|
||||
}
|
||||
|
||||
// 透明度------------------------------------------------
|
||||
const nowSliderValue = ref<number>(10);
|
||||
// 标识
|
||||
|
|
@ -419,7 +449,7 @@
|
|||
map.setPaintProperty('radar-layer', 'raster-opacity', parseFloat(getValue(key)));
|
||||
};
|
||||
// 设置叠加到地图的图片的透明度
|
||||
const sliderShow = ref(true);
|
||||
const sliderShow = ref(false);
|
||||
function changeSliderShow() {
|
||||
sliderShow.value = !sliderShow.value;
|
||||
}
|
||||
|
|
@ -432,8 +462,8 @@
|
|||
const expandShow = ref(false);
|
||||
function expand(value) {
|
||||
if (value) {
|
||||
modalMapWidth.value = '1920px';
|
||||
modalMapHeight.value = '920px';
|
||||
modalMapWidth.value = '100%';
|
||||
modalMapHeight.value = '100%';
|
||||
modalMapZIndex.value = 1011;
|
||||
modalMapPosition.value = 'fixed';
|
||||
} else {
|
||||
|
|
@ -449,28 +479,45 @@
|
|||
expandShow.value = value;
|
||||
}
|
||||
|
||||
// mapbox截图
|
||||
function downloadImage() {
|
||||
// 确保地图重绘
|
||||
map.resize();
|
||||
|
||||
// 生成一个canvas元素,将地图绘制到canvas上
|
||||
var canvas = document.createElement('canvas');
|
||||
canvas.width = map.getCanvas().width;
|
||||
canvas.height = map.getCanvas().height;
|
||||
var ctx = canvas.getContext('2d');
|
||||
ctx.drawImage(map.getCanvas(), 0, 0);
|
||||
|
||||
// 将canvas转换成图片链接
|
||||
var image = canvas.toDataURL('image/png');
|
||||
|
||||
// 创建一个隐藏的可下载链接
|
||||
var link = document.createElement('a');
|
||||
link.href = image;
|
||||
link.download = 'screenshot.png';
|
||||
|
||||
// 触发点击事件
|
||||
link.click();
|
||||
// 预览变成白色的底色
|
||||
async function changeTransparentColorToWhite(imageUrl) {
|
||||
return new Promise((resolve, reject) => {
|
||||
// 创建一个新的 Image 对象
|
||||
const img = new Image();
|
||||
img.crossOrigin = 'Anonymous'; // 处理跨域问题
|
||||
img.src = imageUrl;
|
||||
img.onload = () => {
|
||||
// 创建一个 canvas 元素
|
||||
const canvas = document.createElement('canvas');
|
||||
const ctx = canvas.getContext('2d');
|
||||
// 设置 canvas 的尺寸与图片相同
|
||||
canvas.width = img.width;
|
||||
canvas.height = img.height;
|
||||
// 将图片绘制到 canvas 上
|
||||
ctx.drawImage(img, 0, 0);
|
||||
// 获取 canvas 的图像数据
|
||||
const imageData = ctx.getImageData(0, 0, canvas.width, canvas.height);
|
||||
const data = imageData.data;
|
||||
// 遍历每个像素,将透明部分变成白色
|
||||
for (let i = 0; i < data.length; i += 4) {
|
||||
if (data[i + 3] === 0) { // 如果 alpha 通道为 0(完全透明)
|
||||
data[i] = 255; // 红色通道
|
||||
data[i + 1] = 255; // 绿色通道
|
||||
data[i + 2] = 255; // 蓝色通道
|
||||
data[i + 3] = 255; // alpha 通道(不透明)
|
||||
}
|
||||
}
|
||||
// 将修改后的图像数据放回 canvas
|
||||
ctx.putImageData(imageData, 0, 0);
|
||||
// 将 canvas 内容转换为图片数据 URL
|
||||
const resultImageUrl = canvas.toDataURL('image/png');
|
||||
// 返回处理后的新图片的 URL
|
||||
resolve(resultImageUrl);
|
||||
};
|
||||
img.onerror = (error) => {
|
||||
reject(error);
|
||||
};
|
||||
});
|
||||
}
|
||||
</script>
|
||||
|
||||
|
|
|
|||
|
|
@ -10,9 +10,8 @@
|
|||
</template>
|
||||
</ShowImage>
|
||||
</div>
|
||||
<div class="scroll-to-top" @click="scrollToTop" v-if="props.data.length > 1">
|
||||
<ArrowUpOutlined :style="{ fontSize: '35px', position: 'relative', left: '13px'}"/>
|
||||
回到顶部
|
||||
<div class="show-image-item" v-if="props.data.length == 0">
|
||||
暂无影像数据展示
|
||||
</div>
|
||||
</div>
|
||||
</template>
|
||||
|
|
@ -23,11 +22,6 @@
|
|||
import ShowImage from '@/views/dashboard/test/components/ShowImage/index.vue';
|
||||
const props = defineProps(['data']);
|
||||
const contentArea = ref<HTMLElement | null>(null);
|
||||
function scrollToTop(){
|
||||
if(contentArea.value) {
|
||||
contentArea.value.scrollTop = 0;
|
||||
}
|
||||
}
|
||||
</script>
|
||||
|
||||
<style lang="scss" scoped>
|
||||
|
|
|
|||
|
|
@ -1,7 +1,7 @@
|
|||
<template>
|
||||
<div class="modal-content-div">
|
||||
<div class="title-text">
|
||||
{{ compare ? '国家云查询结果(对比模式)' : '国家云查询结果' }}
|
||||
{{ compare ? '云查询结果(对比模式)' : '云查询结果' }}
|
||||
<Icon
|
||||
class="split-button"
|
||||
style="font-size: 20px"
|
||||
|
|
@ -19,15 +19,15 @@
|
|||
</div>
|
||||
</div>
|
||||
</template>
|
||||
|
||||
<script setup lang="ts">
|
||||
import { ref, onMounted, defineEmits } from 'vue';
|
||||
import { ref, onMounted, defineEmits, defineProps } from 'vue';
|
||||
import Icon from '@/components/Icon/Icon.vue';
|
||||
import CloudQueryModal from './CloudQueryModal/index.vue';
|
||||
import { useCloudQueryStore } from '@/store/modules/cloudquery';
|
||||
import { LoadCloudQueryById } from '@/api/demo/cloudQuery';
|
||||
|
||||
const useCloudQuery = useCloudQueryStore();
|
||||
const props = defineProps(['cloudQueryContentRecord']);
|
||||
const emits = defineEmits(['changeCompare']);
|
||||
const compare = ref(false);
|
||||
const info = ref();
|
||||
|
|
@ -37,15 +37,14 @@
|
|||
emits('changeCompare', compare.value);
|
||||
};
|
||||
onMounted(() => {
|
||||
let id = useCloudQuery.getCloudQueryInfo.id;
|
||||
// console.log(41, useCloudQuery.getCloudQueryInfo);
|
||||
// : '45febd6e-4f87-461a-a65d-f0284db6a356'
|
||||
let id = props.cloudQueryContentRecord?.queryId || useCloudQuery.getCloudQueryInfo.id;
|
||||
LoadCloudQueryById({ id }).then((res) => {
|
||||
let data = JSON.parse(res.receiveContent);
|
||||
if (typeof data == 'string') {
|
||||
data = JSON.parse(data);
|
||||
}
|
||||
// console.log(47, data);
|
||||
|
||||
console.log(47, data);
|
||||
info.value = data;
|
||||
});
|
||||
});
|
||||
|
|
|
|||
|
|
@ -1,17 +1,46 @@
|
|||
<template>
|
||||
<div class="map-container">
|
||||
<div :id="mapContainerName" @mouseover="mapmouseover" class="map-box"></div>
|
||||
<div class="cloud-query-div" v-if="props.geomsList" @click="initiateCloudQuery">
|
||||
<div>
|
||||
<div class="cloud-query-div" v-if="props.geomsList">
|
||||
<div v-if="useCloudQuery.getIdentification" @click="initiateCloudQuery2">
|
||||
<div class="cloud-query-icon">
|
||||
<Icon icon="gis:globe-poi" v-if="!useCloudQuery.getIdentification" :size="20" />
|
||||
<Loading3QuartersOutlined v-if="useCloudQuery.getIdentification" spin :style="{fontSize:'20px'}" />
|
||||
<Loading3QuartersOutlined spin :style="{ fontSize: '20px' }" />
|
||||
</div>
|
||||
<div>云查询</div>
|
||||
</div>
|
||||
<div
|
||||
v-else-if="
|
||||
!useCloudQuery.getIdentification &&
|
||||
useCloudQuery?.beforeId &&
|
||||
props.caseno == useCloudQuery?.caseno
|
||||
"
|
||||
@click="initiateCloudQuery3"
|
||||
>
|
||||
<div class="cloud-query-icon">
|
||||
<Icon icon="gis:globe-poi" :size="20" />
|
||||
</div>
|
||||
<div> 查看结果 </div>
|
||||
</div>
|
||||
<div v-else @click="initiateCloudQuery1">
|
||||
<div class="cloud-query-icon">
|
||||
<Icon icon="gis:globe-poi" :size="20" />
|
||||
</div>
|
||||
<div>云查询</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div v-if="!useCloudQuery.getIdentification && useCloudQuery.beforeId && props.caseno == useCloudQuery.caseno">
|
||||
查看结果
|
||||
<!-- 云查询内容提示 -->
|
||||
<div class="cloudqueryNotice" v-if="props.geomsList && useCloudQuery.getCloudQueryVisable">
|
||||
<div class="cloudquery-title">
|
||||
<div class="cloudquery-left">
|
||||
<img src="/message.png" alt="" />
|
||||
<span class="title-box">您有一条云查询结果,请查收</span>
|
||||
</div>
|
||||
<div class="cloudquery-right">
|
||||
<a-button type="primary" @click="initiateCloudQuery3">查看</a-button>
|
||||
<div class="line"></div>
|
||||
<CloseOutlined @click="closeCloudQuery" style="color: #fff" title="关闭" />
|
||||
</div>
|
||||
<div v-else>云查询</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
|
|
@ -581,7 +610,6 @@
|
|||
// mapDiv?.onmouseover = function(e){
|
||||
// alert(e);
|
||||
// }
|
||||
|
||||
mapboxgl.accessToken = MapboxConfig.ACCESS_TOKEN;
|
||||
map = initMap();
|
||||
map.on('load', () => {
|
||||
|
|
@ -1562,7 +1590,6 @@
|
|||
locationArrays.value.push(item);
|
||||
};
|
||||
|
||||
|
||||
// 通过上传txt文件方式导入坐标数据
|
||||
const handleImportCoorinateChange = (e)=>{
|
||||
const reader = new FileReader();
|
||||
|
|
@ -1671,7 +1698,6 @@
|
|||
]);
|
||||
|
||||
locationGeoJson.polyline.features[0] = feature;
|
||||
|
||||
}
|
||||
if (locationDrawArrays.value?.length >= 3) {
|
||||
let feature = {
|
||||
|
|
@ -1872,57 +1898,81 @@
|
|||
// 绘制面
|
||||
const handlerLocationDrawPolygon = () => {};
|
||||
|
||||
const initiateCloudQuery = () => {
|
||||
|
||||
// 云查询按钮-启动
|
||||
function initiateCloudQuery1() {
|
||||
let geomidStr = props.geomsList.map((item) => item.key).join(',');
|
||||
|
||||
if (!useCloudQuery.getIdentification && useCloudQuery.beforeId && props.caseno == useCloudQuery.caseno) {
|
||||
open.value = true;
|
||||
} else if (useCloudQuery.getIdentification) {
|
||||
// 查看当前后台云查询图斑的情况
|
||||
LoadCloudQueryByCaseNo({
|
||||
geomid: useCloudQuery.geomid,
|
||||
caseno: useCloudQuery.caseno,
|
||||
}).then((res) =>{
|
||||
if(res) {
|
||||
if (geomidStr == useCloudQuery.geomid && props.caseno == useCloudQuery.caseno) {
|
||||
if(res.state == 1 || res.state == 0) {
|
||||
message.warning('当前图斑的云查询正在运行,请稍候等待');
|
||||
} else {
|
||||
useCloudQuery.setIdentification(false);
|
||||
useCloudQuery.setBeforeId(res.queryId);
|
||||
useCloudQuery.setCloudQueryInfo({id: res.queryId});
|
||||
open.value = true;
|
||||
}
|
||||
} else {
|
||||
// 非当前后台云查询的图斑
|
||||
message.warning('已有云查询运行,不能再次提交');
|
||||
}
|
||||
}
|
||||
});
|
||||
} else {
|
||||
AddDroneTask({ geomid: geomidStr, caseno: props.caseno, countyname: props.countyname, }).then((res) => {
|
||||
AddDroneTask({ geomid: geomidStr, caseno: props.caseno, countyname: props.countyname }).then(
|
||||
(res) => {
|
||||
if (res) {
|
||||
message.success('成功提交云查询');
|
||||
useCloudQuery.setGeomid(geomidStr);
|
||||
useCloudQuery.setCaseno(props.caseno);
|
||||
useCloudQuery.setIdentification(true);
|
||||
let expires =
|
||||
'; expires=' + new Date(new Date().getTime() + 60 * 60 * 1000).toUTCString();
|
||||
document.cookie = 'geomid=' + encodeURIComponent(geomidStr) + expires + '; path=/';
|
||||
document.cookie = 'caseno=' + encodeURIComponent(props.caseno) + expires + '; path=/';
|
||||
document.cookie = 'identification=true' + expires + '; path=/';
|
||||
} else {
|
||||
message.error('提交云查询失败');
|
||||
useCloudQuery.setIdentification(false);
|
||||
}
|
||||
});
|
||||
}
|
||||
};
|
||||
},
|
||||
);
|
||||
}
|
||||
// 云查询按钮-查询中
|
||||
function initiateCloudQuery2() {
|
||||
let geomidStr = props.geomsList.map((item) => item.key).join(',');
|
||||
// 查看当前后台云查询图斑的情况
|
||||
LoadCloudQueryByCaseNo({
|
||||
geomid: useCloudQuery.geomid,
|
||||
caseno: useCloudQuery.caseno,
|
||||
}).then((res) => {
|
||||
if (res) {
|
||||
if (geomidStr == useCloudQuery.geomid && props.caseno == useCloudQuery.caseno) {
|
||||
if (res.state == 1 || res.state == 0) {
|
||||
message.warning('当前图斑的云查询正在运行,请稍候等待');
|
||||
} else {
|
||||
useCloudQuery.setIdentification(false);
|
||||
useCloudQuery.setBeforeId(res.queryId);
|
||||
useCloudQuery.setCloudQueryInfo({ id: res.queryId });
|
||||
let expires =
|
||||
'; expires=' + new Date(new Date().getTime() + 60 * 60 * 1000).toUTCString();
|
||||
document.cookie = 'beforeId=' + encodeURIComponent(res.queryId) + expires + '; path=/';
|
||||
open.value = true;
|
||||
}
|
||||
} else {
|
||||
// 非当前后台云查询的图斑
|
||||
message.warning('已有云查询运行,不能再次提交');
|
||||
}
|
||||
}
|
||||
});
|
||||
}
|
||||
// 云查询按钮-查看结果
|
||||
function initiateCloudQuery3() {
|
||||
open.value = true;
|
||||
}
|
||||
|
||||
// 云查询内容提示---------------------------------------------------------
|
||||
function closeCloudQuery() {
|
||||
useCloudQuery.setCloudQueryVisable(false);
|
||||
useCloudQuery.identification = false;
|
||||
}
|
||||
|
||||
//接口推送
|
||||
signal.on('RevMsg', (user, cloudDataString, time, id, issystem) => {
|
||||
// CloudQuery 云查询
|
||||
if (user == 'CloudQuery') {
|
||||
let cloudData = JSON.parse(cloudDataString);
|
||||
if(cloudData.geomid == useCloudQuery.getGeomid && cloudData.caseno == useCloudQuery.getCaseno) {
|
||||
if(useCloudQuery.beforeId == '' || cloudData.queryid != useCloudQuery.beforeId) {
|
||||
message.success('云查询结果已返回,请查看');
|
||||
if (
|
||||
cloudData.geomid == useCloudQuery.getGeomid &&
|
||||
cloudData.caseno == useCloudQuery.getCaseno
|
||||
) {
|
||||
if (useCloudQuery.beforeId == '' || cloudData.queryid != useCloudQuery.beforeId) {
|
||||
let expires =
|
||||
'; expires=' + new Date(new Date().getTime() + 24 * 60 * 60 * 1000).toUTCString();
|
||||
document.cookie =
|
||||
'beforeId=' + encodeURIComponent(cloudData.queryId) + expires + '; path=/';
|
||||
}
|
||||
useCloudQuery.setBeforeId(cloudData.queryid);
|
||||
}
|
||||
|
|
@ -2136,7 +2186,7 @@
|
|||
}
|
||||
}
|
||||
|
||||
.picture-azimuth{
|
||||
.picture-azimuth {
|
||||
width: 29px;
|
||||
height: 29px;
|
||||
float: left;
|
||||
|
|
@ -2149,7 +2199,7 @@
|
|||
}
|
||||
}
|
||||
|
||||
.picture-azimuth-active{
|
||||
.picture-azimuth-active {
|
||||
width: 29px;
|
||||
height: 29px;
|
||||
float: left;
|
||||
|
|
@ -2204,14 +2254,14 @@
|
|||
|
||||
.to-location-input {
|
||||
padding: 16px;
|
||||
padding-right:4px;
|
||||
padding-right: 4px;
|
||||
width: 418px;
|
||||
min-height: 60px;
|
||||
background: #fff;
|
||||
position: absolute;
|
||||
top: 48px;
|
||||
right: 10px;
|
||||
z-index:999999;
|
||||
z-index: 999999;
|
||||
border-radius: 5px;
|
||||
box-shadow: 0px 0px 10px rgba(0, 0, 0, 0.1);
|
||||
.location-operation {
|
||||
|
|
@ -2220,10 +2270,10 @@
|
|||
border-bottom: 1px solid #f1f1f1;
|
||||
margin-bottom: 12px;
|
||||
}
|
||||
.location-item-list-coantienr{
|
||||
width:100%;
|
||||
max-height:400px;
|
||||
overflow-y:auto;
|
||||
.location-item-list-coantienr {
|
||||
width: 100%;
|
||||
max-height: 400px;
|
||||
overflow-y: auto;
|
||||
.location-item {
|
||||
line-height: 20px;
|
||||
margin-bottom: 6px;
|
||||
|
|
@ -2231,9 +2281,67 @@
|
|||
}
|
||||
}
|
||||
|
||||
.split-panel-item:hover {
|
||||
cursor: pointer;
|
||||
color: #999;
|
||||
}
|
||||
|
||||
.split-panel-item:hover{
|
||||
cursor:pointer;
|
||||
color:#999;
|
||||
.cloudqueryNotice {
|
||||
background: rgba(0, 0, 0, 0.53);
|
||||
padding: 0px 14px;
|
||||
border-radius: 6px;
|
||||
position: fixed;
|
||||
top: 20px;
|
||||
right: 5vw;
|
||||
width: 700px;
|
||||
color: #fff;
|
||||
z-index: 10;
|
||||
.cloudquery-title {
|
||||
height: 40px;
|
||||
display: flex;
|
||||
justify-content: space-between;
|
||||
align-items: center;
|
||||
font-size: 16px;
|
||||
}
|
||||
.cloudquery-left {
|
||||
display: flex;
|
||||
align-items: center;
|
||||
}
|
||||
.cloudquery-right {
|
||||
display: flex;
|
||||
align-items: center;
|
||||
justify-content: space-around;
|
||||
width: 130px;
|
||||
}
|
||||
img {
|
||||
width: 34px;
|
||||
height: 29px;
|
||||
}
|
||||
.cloudquery-btn {
|
||||
display: flex;
|
||||
justify-content: flex-end;
|
||||
}
|
||||
.line {
|
||||
background: #ededed;
|
||||
width: 1px;
|
||||
height: 20px;
|
||||
}
|
||||
.anticon.anticon-close {
|
||||
height: 30px;
|
||||
}
|
||||
button {
|
||||
width: 70px;
|
||||
height: 26px;
|
||||
background: linear-gradient(-74deg, #086dec, #0b4bdd);
|
||||
box-shadow: 3px 4px 5px 1px rgba(13, 13, 13, 0.05);
|
||||
border-radius: 16px;
|
||||
display: flex;
|
||||
align-items: center;
|
||||
justify-content: center;
|
||||
}
|
||||
.title-box {
|
||||
margin-left: 10px;
|
||||
font-size: 14px;
|
||||
}
|
||||
}
|
||||
</style>
|
||||
|
|
|
|||
|
|
@ -1,124 +1,186 @@
|
|||
<template>
|
||||
<div>
|
||||
<Tooltip :title="getTitle" placement="bottom" :mouseEnterDelay="0.5">
|
||||
<span>
|
||||
<a-dropdown :trigger="['click']" :placement="bottom">
|
||||
<CloudOutlined
|
||||
:style="{
|
||||
fontSize: '18px',
|
||||
}"
|
||||
@click="getStateByGeomidAndCaseNo"
|
||||
/>
|
||||
<template #overlay>
|
||||
<a-menu>
|
||||
<a-menu-item>
|
||||
图斑ID:{{ getGeomid }}
|
||||
<a-button :style="{ position: 'absolute', right: '12px' }" type="link" @click="copyToClipboard(getGeomid)">复制</a-button>
|
||||
</a-menu-item>
|
||||
<a-menu-item>
|
||||
案件编号:{{ getCaseno }}
|
||||
<a-button type="link" @click="copyToClipboard(getCaseno)">复制</a-button>
|
||||
</a-menu-item>
|
||||
<a-menu-item>
|
||||
当前状态:
|
||||
<a-tag v-if="getState == 0" color="red">未查询</a-tag>
|
||||
<a-tag v-if="getState == 1" color="green">查询中</a-tag>
|
||||
<a-tag v-if="getState == 2" color="blue">查询结束</a-tag>
|
||||
<a-button
|
||||
v-if="getState == 2"
|
||||
:style="{ position: 'absolute', right: '16px', fontSize: '14px' }"
|
||||
type="primary"
|
||||
size="small"
|
||||
@click="handCloudQuery"
|
||||
>
|
||||
查看
|
||||
</a-button>
|
||||
</a-menu-item>
|
||||
</a-menu>
|
||||
<a-tooltip>
|
||||
<template #title>云查询记录</template>
|
||||
<CloudOutlined
|
||||
:style="{
|
||||
fontSize: '18px',
|
||||
}"
|
||||
@click="handleOpenTable"
|
||||
/>
|
||||
</a-tooltip>
|
||||
|
||||
<!-- 云查询记录 -->
|
||||
<a-modal
|
||||
v-model:open="openTable"
|
||||
title="云查询记录"
|
||||
:footer="false"
|
||||
:width="'1020px'"
|
||||
style="top: 30px;"
|
||||
:destroyOnClose="true"
|
||||
>
|
||||
<BasicTable @register="registerTable">
|
||||
<template #bodyCell="{ column, record }">
|
||||
<template v-if="column.key === 'state'">
|
||||
<a-tag color="red" v-if="record.state == 0">排队中</a-tag>
|
||||
<a-tag color="green" v-if="record.state == 1">查询中</a-tag>
|
||||
<a-tag color="blue" v-if="record.state == 2">查询结束</a-tag>
|
||||
</template>
|
||||
</a-dropdown>
|
||||
</span>
|
||||
</Tooltip>
|
||||
<template v-if="column.key === 'action' && record.state == 2">
|
||||
<a-button
|
||||
type="link"
|
||||
@click="handCloudQuery(record)"
|
||||
>
|
||||
查看
|
||||
</a-button>
|
||||
</template>
|
||||
</template>
|
||||
</BasicTable>
|
||||
</a-modal>
|
||||
<!-- 云查询结果 -->
|
||||
<a-modal
|
||||
v-model:open="open"
|
||||
v-model:open="openResult"
|
||||
:footer="false"
|
||||
@cancel="closeCloudQueryModal"
|
||||
:width="compare ? '1020px' : '510px'"
|
||||
style="top: 20px"
|
||||
:destroyOnClose="true"
|
||||
>
|
||||
<CloudQueryContent @changeCompare="changeCompare"/>
|
||||
<CloudQueryContent @changeCompare="changeCompare" :cloudQueryContentRecord="cloudQueryContentRecord" />
|
||||
</a-modal>
|
||||
</div>
|
||||
</template>
|
||||
<script lang="ts" setup>
|
||||
import { computed, unref, ref } from 'vue';
|
||||
import { computed, unref, ref, onMounted } from 'vue';
|
||||
import { Tooltip } from 'ant-design-vue';
|
||||
import { useI18n } from '@/hooks/web/useI18n';
|
||||
import { BasicTable, useTable } from '@/components/Table';
|
||||
import { BasicColumn, FormSchema } from '@/components/Table';
|
||||
import { CloudOutlined } from '@ant-design/icons-vue';
|
||||
import { useCloudQueryStore } from '@/store/modules/cloudquery';
|
||||
import { LoadCloudQueryByCaseNo } from '@/api/demo/cloudQuery';
|
||||
import { getAppEnvConfig } from '@/utils/env';
|
||||
import { LoadCloudQueryAll } from '@/api/demo/cloudQuery';
|
||||
import CloudQueryContent from '@/components/CloudQueryContent/index.vue';
|
||||
import { useMessage } from '@/hooks/web/useMessage';
|
||||
import axios from 'axios';
|
||||
|
||||
const { VITE_GLOB_API_URL } = getAppEnvConfig();
|
||||
|
||||
const { t } = useI18n();
|
||||
const getTitle = computed(() => {
|
||||
return t('layout.header.cloud');
|
||||
// 云查询记录----------------------------------------------
|
||||
// 云查询记录-table
|
||||
const columns: BasicColumn[] = [
|
||||
{
|
||||
title: 'id',
|
||||
dataIndex: 'id',
|
||||
ifShow: false,
|
||||
},
|
||||
{
|
||||
title: 'queryId',
|
||||
dataIndex: 'queryId',
|
||||
ifShow: false,
|
||||
},
|
||||
{
|
||||
title: '图斑编号',
|
||||
dataIndex: 'caseNo',
|
||||
width: 150,
|
||||
},
|
||||
{
|
||||
title: '图斑ID',
|
||||
dataIndex: 'geomId',
|
||||
width: 100,
|
||||
},
|
||||
{
|
||||
title: '当前状态',
|
||||
dataIndex: 'state',
|
||||
width: 80,
|
||||
},
|
||||
{
|
||||
title: '区县',
|
||||
dataIndex: 'countyName',
|
||||
ifShow: false,
|
||||
},
|
||||
{
|
||||
title: '创建时间',
|
||||
dataIndex: 'createTime',
|
||||
width: 150,
|
||||
},
|
||||
{
|
||||
title: '操作',
|
||||
dataIndex: 'action',
|
||||
width: 100,
|
||||
},
|
||||
];
|
||||
// 云查询记录-搜索
|
||||
const searchFormSchema: FormSchema[] = [
|
||||
{
|
||||
field: 'caseNo',
|
||||
label: '图斑编号',
|
||||
component: 'Input',
|
||||
colProps: { span: 8 },
|
||||
},
|
||||
{
|
||||
field: 'geomId',
|
||||
label: '图斑ID',
|
||||
component: 'Input',
|
||||
colProps: { span: 8 },
|
||||
},
|
||||
];
|
||||
const openTable = ref(false);
|
||||
function handleOpenTable(){
|
||||
openTable.value = true;
|
||||
}
|
||||
// 云查询记录-表格
|
||||
const [registerTable, { reload }] = useTable({
|
||||
api: LoadCloudQueryAll,
|
||||
columns: columns,
|
||||
title: '云查询记录',
|
||||
formConfig: {
|
||||
labelWidth: 120,
|
||||
schemas: searchFormSchema,
|
||||
},
|
||||
showIndexColumn: true,
|
||||
useSearchForm: true,
|
||||
canResize: true,
|
||||
bordered: true,
|
||||
showTableSetting: true,
|
||||
handleSearchInfoFn(info) {
|
||||
return info;
|
||||
},
|
||||
});
|
||||
|
||||
const cloudQueryStore = useCloudQueryStore();
|
||||
const getGeomid = computed(() => {
|
||||
return cloudQueryStore.geomid;
|
||||
});
|
||||
const getCaseno = computed(() => {
|
||||
return cloudQueryStore.caseno;
|
||||
});
|
||||
const nowState = ref(0);
|
||||
const getState = computed(() => {
|
||||
return nowState.value;
|
||||
});
|
||||
|
||||
function getStateByGeomidAndCaseNo(){
|
||||
LoadCloudQueryByCaseNo({
|
||||
geomid: cloudQueryStore.geomid,
|
||||
caseno: cloudQueryStore.caseno,
|
||||
}).then((res) =>{
|
||||
if(res) {
|
||||
nowState.value = res.state;
|
||||
} else {
|
||||
nowState.value = 1;
|
||||
}
|
||||
});
|
||||
};
|
||||
|
||||
// 云查询结果----------------------------------------------
|
||||
const compare = ref(false);
|
||||
const open = ref(false);
|
||||
const openResult = ref(false);
|
||||
const changeCompare = (value) => {
|
||||
compare.value = value;
|
||||
};
|
||||
const closeCloudQueryModal = () => {
|
||||
open.value = false;
|
||||
openResult.value = false;
|
||||
compare.value = false;
|
||||
}
|
||||
function handCloudQuery() {
|
||||
open.value = true;
|
||||
const cloudQueryContentRecord = ref();
|
||||
function handCloudQuery(record) {
|
||||
cloudQueryContentRecord.value = record;
|
||||
openResult.value = true;
|
||||
}
|
||||
|
||||
// 复制到剪贴板
|
||||
const { createMessage } = useMessage();
|
||||
const copyToClipboard = async (record) => {
|
||||
try {
|
||||
await navigator.clipboard.writeText(record);
|
||||
createMessage.success('文本已复制到剪贴板');
|
||||
} catch (err) {
|
||||
createMessage.error('无法复制文本');
|
||||
// 读取Cookie的函数
|
||||
const cloudQueryStore = useCloudQueryStore();
|
||||
function getCookie(name) {
|
||||
const nameEQ = name + "=";
|
||||
const ca = document.cookie.split(';');
|
||||
for (let i = 0; i < ca.length; i++) {
|
||||
let c = ca[i].trim();
|
||||
if (c.indexOf(nameEQ) === 0) return c.substring(nameEQ.length, c.length);
|
||||
}
|
||||
};
|
||||
</script>
|
||||
return null;
|
||||
}
|
||||
|
||||
// onMounted(()=>{
|
||||
// cloudQueryStore.setGeomid(getCookie("geomid"));
|
||||
// cloudQueryStore.setCaseno(getCookie("caseno"));
|
||||
// if(cloudQueryStore.geomid != null && cloudQueryStore.caseno != null) {
|
||||
// const beforeId = getCookie("beforeId");
|
||||
// cloudQueryStore.setBeforeId(beforeId);
|
||||
// cloudQueryStore.setCloudQueryInfo({ id: beforeId });
|
||||
// cloudQueryStore.setIdentification(true);
|
||||
// }
|
||||
// });
|
||||
</script>
|
||||
<style lang="less" scoped></style>
|
||||
|
|
|
|||
|
|
@ -26,7 +26,8 @@
|
|||
</template>
|
||||
</Popover>
|
||||
<!-- 云查询内容提示 -->
|
||||
<div class="cloudquery-notice" v-if="cloudQueryVisible">
|
||||
<div class="cloudquery-notice" v-if="useCloudQuery.getCloudQueryVisable">
|
||||
<!-- <div class="cloudquery-notice" v-if="cloudQueryVisible"> -->
|
||||
<div class="cloudquery-title">
|
||||
<div class="cloudquery-left">
|
||||
<img src="/message.png" alt="" />
|
||||
|
|
@ -139,7 +140,7 @@
|
|||
const taskId = ref('');
|
||||
const isRead: any = ref(0);
|
||||
const type = ref('');
|
||||
const cloudQueryVisible = ref(false);
|
||||
// const cloudQueryVisible = ref(false);
|
||||
const cloudLandQueryVisible = ref(false);
|
||||
const showSplitPolygon = ref(false);
|
||||
const showInfoData = ref({});
|
||||
|
|
@ -240,11 +241,17 @@
|
|||
// CloudQuery 云查询
|
||||
let messageData = JSON.parse(message);
|
||||
if (user == 'CloudQuery') {
|
||||
if(messageData.geomid == useCloudQuery.getGeomid && messageData.caseno == useCloudQuery.getCaseno) {
|
||||
if (
|
||||
messageData.geomid == useCloudQuery.getGeomid &&
|
||||
messageData.caseno == useCloudQuery.getCaseno
|
||||
) {
|
||||
useCloudQuery.setBeforeId(messageData.queryid);
|
||||
showCloudQuery({
|
||||
id: messageData.queryid,
|
||||
});
|
||||
let expires = '; expires=' + new Date(new Date().getTime() + 60 * 60 * 1000).toUTCString();
|
||||
document.cookie =
|
||||
'beforeId=' + encodeURIComponent(messageData.queryId) + expires + '; path=/';
|
||||
}
|
||||
}else if(user == 'CloudLandQuery'){
|
||||
//
|
||||
|
|
@ -281,7 +288,8 @@
|
|||
auditOpen.value = false;
|
||||
}
|
||||
function showCloudQuery(info) {
|
||||
cloudQueryVisible.value = true;
|
||||
// cloudQueryVisible.value = true;
|
||||
useCloudQuery.setCloudQueryVisable(true);
|
||||
useCloudQuery.setIdentification(false);
|
||||
useCloudQuery.setCloudQueryInfo(info);
|
||||
}
|
||||
|
|
@ -291,7 +299,8 @@
|
|||
closeCloudQuery();
|
||||
}
|
||||
function closeCloudQuery() {
|
||||
cloudQueryVisible.value = false;
|
||||
useCloudQuery.setCloudQueryVisable(false);
|
||||
// cloudQueryVisible.value = false;
|
||||
}
|
||||
|
||||
// 地类分割提示和结果处理
|
||||
|
|
@ -413,7 +422,7 @@
|
|||
border-radius: 6px;
|
||||
position: fixed;
|
||||
top: 30px;
|
||||
right: 1vw;
|
||||
right: 3vw;
|
||||
width: 700px;
|
||||
color: #fff;
|
||||
z-index: 10;
|
||||
|
|
@ -453,6 +462,7 @@
|
|||
button {
|
||||
width: 70px;
|
||||
height: 26px;
|
||||
|
||||
background: linear-gradient(-74deg, #086dec, #0b4bdd);
|
||||
box-shadow: 3px 4px 5px 1px rgba(13, 13, 13, 0.05);
|
||||
border-radius: 16px;
|
||||
|
|
|
|||
|
|
@ -35,7 +35,7 @@
|
|||
<div :class="`${prefixCls}-action`">
|
||||
<AppSearch v-if="getShowSearch" :class="`${prefixCls}-action__item `" />
|
||||
|
||||
<CloudQuery v-if="getIdentification" :class="`${prefixCls}-action__item `" />
|
||||
<CloudQuery :class="`${prefixCls}-action__item `" />
|
||||
|
||||
<ErrorAction v-if="getUseErrorHandle" :class="`${prefixCls}-action__item error-action`" />
|
||||
|
||||
|
|
@ -158,12 +158,6 @@
|
|||
const getMenuMode = computed(() => {
|
||||
return unref(getSplit) ? MenuModeEnum.HORIZONTAL : null;
|
||||
});
|
||||
|
||||
// 云查询进度显示
|
||||
const cloudQueryStore = useCloudQueryStore();
|
||||
const getIdentification = computed(() => {
|
||||
return cloudQueryStore.beforeId || cloudQueryStore.identification;
|
||||
});
|
||||
</script>
|
||||
<style lang="less">
|
||||
@import url('./index.less');
|
||||
|
|
|
|||
|
|
@ -19,6 +19,8 @@ export const useCloudQueryStore = defineStore({
|
|||
},
|
||||
timeImages: {},
|
||||
},
|
||||
// 云查询提示信息
|
||||
cloudQueryVisible: false,
|
||||
}),
|
||||
getters: {
|
||||
getBeforeId: (state) => {
|
||||
|
|
@ -38,7 +40,10 @@ export const useCloudQueryStore = defineStore({
|
|||
},
|
||||
getCloudQueryModalInfo: (state) => {
|
||||
return state.cloudQueryModalInfo;
|
||||
}
|
||||
},
|
||||
getCloudQueryVisable: (state) => {
|
||||
return state.cloudQueryVisible;
|
||||
},
|
||||
},
|
||||
actions: {
|
||||
setBeforeId(info: any) {
|
||||
|
|
@ -58,6 +63,9 @@ export const useCloudQueryStore = defineStore({
|
|||
},
|
||||
setCloudQueryModalInfo(data: any) {
|
||||
this.cloudQueryModalInfo = data;
|
||||
}
|
||||
},
|
||||
setCloudQueryVisable(data: any) {
|
||||
this.cloudQueryVisible = data;
|
||||
},
|
||||
},
|
||||
});
|
||||
|
|
|
|||
|
|
@ -41,7 +41,7 @@
|
|||
>
|
||||
<div class="modal-content-div">
|
||||
<div class="title-text">
|
||||
{{ compare ? '国家云查询结果(对比模式)' : '国家云查询结果' }}
|
||||
{{ compare ? '云查询结果(对比模式)' : '云查询结果' }}
|
||||
<Icon
|
||||
class="split-button"
|
||||
style="font-size: 20px"
|
||||
|
|
|
|||
|
|
@ -1,10 +1,10 @@
|
|||
<template>
|
||||
<div class="control-show">
|
||||
<!-- <div class="control-show">
|
||||
<a-radio-group v-model:value="select" button-style="solid" size="small">
|
||||
<a-radio-button :value="0">专题图</a-radio-button>
|
||||
<a-radio-button :value="1">截图</a-radio-button>
|
||||
</a-radio-group>
|
||||
</div>
|
||||
</div> -->
|
||||
<a-image :width="470" :height="470" :src="get(url)" />
|
||||
<div class="footer" v-if="haveFooter">
|
||||
<slot name="footer" />
|
||||
|
|
@ -49,4 +49,9 @@
|
|||
height: 50px;
|
||||
background: rgba(0, 0, 0, 0.4);
|
||||
}
|
||||
</style>
|
||||
|
||||
::v-deep .ant-image-mask {
|
||||
display: none !important;
|
||||
// background: red !important;
|
||||
}
|
||||
</style>
|
||||
|
|
@ -2,7 +2,7 @@
|
|||
<div class="title">{{ title }}</div>
|
||||
<a-table
|
||||
:columns="columns"
|
||||
:data-source="props.data"
|
||||
:data-source="listResult"
|
||||
:pagination="false"
|
||||
size="small"
|
||||
:scroll="{ y: 100 }"
|
||||
|
|
@ -24,7 +24,7 @@
|
|||
{{ stats ? stats : '-' }}
|
||||
</template>
|
||||
<template v-if="column.key === 'area'">
|
||||
{{ toStandardFloat(squareMetersToMu(record.area)) }}
|
||||
{{ record.area }}
|
||||
</template>
|
||||
</template>
|
||||
<template #summary>
|
||||
|
|
@ -35,12 +35,13 @@
|
|||
<a-typography-text></a-typography-text>
|
||||
</a-table-summary-cell>
|
||||
<a-table-summary-cell>
|
||||
<a-typography-text>{{ toStandardFloat(squareMetersToMu(result)) }}</a-typography-text>
|
||||
<a-typography-text>{{ result }}</a-typography-text>
|
||||
</a-table-summary-cell>
|
||||
</a-table-summary-row>
|
||||
</a-table-summary>
|
||||
</template>
|
||||
</a-table>
|
||||
<div class="bottom"></div>
|
||||
</template>
|
||||
|
||||
<script setup lang="ts">
|
||||
|
|
@ -53,9 +54,21 @@
|
|||
props.data?.forEach((item) => {
|
||||
sum += item.area;
|
||||
});
|
||||
return sum;
|
||||
return roundToTwoDecimals(toStandardFloat(squareMetersToMu(sum)));
|
||||
}
|
||||
});
|
||||
const listResult = computed(() => {
|
||||
let list: any = [];
|
||||
if (props.data) {
|
||||
props.data?.forEach((item) => {
|
||||
let area = roundToTwoDecimals(toStandardFloat(squareMetersToMu(item.area)));
|
||||
if(area > 0){
|
||||
list.push({type: item.type, area: area });
|
||||
}
|
||||
});
|
||||
}
|
||||
return list;
|
||||
});
|
||||
|
||||
// 平方米转化为亩
|
||||
function squareMetersToMu(squareMeters) {
|
||||
|
|
@ -63,14 +76,17 @@
|
|||
const mu = parseFloat(squareMeters) * MU_PER_SQUARE_METER;
|
||||
return parseFloat(mu);
|
||||
}
|
||||
|
||||
function toStandardFloat(number, precision = 20) {
|
||||
// 检查数字的字符串表示中是否包含 'e-',如果是,则为科学计数法
|
||||
// 检查数字的字符串表示中是否包含 'e-',如果是,则为科学计数法
|
||||
function toStandardFloat(number, precision = 2) {
|
||||
if (typeof number === 'number' && number.toString().includes('e-')) {
|
||||
return number.toFixed(precision);
|
||||
}
|
||||
return number;
|
||||
}
|
||||
// 将数字四舍五入到小数点后四位
|
||||
function roundToTwoDecimals(number) {
|
||||
return Math.round(number * 10000) / 10000;
|
||||
}
|
||||
|
||||
const colotType = [
|
||||
{ code: '采矿用地', color: '#30123b', linecolor: '#e8500f' },
|
||||
|
|
@ -135,4 +151,7 @@
|
|||
:deep(.ant-table-summary) {
|
||||
background: #fafafa;
|
||||
}
|
||||
.bottom {
|
||||
height: 20px;
|
||||
}
|
||||
</style>
|
||||
|
|
|
|||
|
|
@ -14,7 +14,7 @@
|
|||
</div>
|
||||
<div class="info-container" id="info-container">
|
||||
<a-tabs v-model:activeKey="activeKey">
|
||||
<a-tab-pane key="1" tab="线索下发">
|
||||
<a-tab-pane key="1" tab="图斑详情">
|
||||
<a-descriptions
|
||||
:column="2"
|
||||
bordered
|
||||
|
|
@ -24,49 +24,49 @@
|
|||
'word-break': 'break-all',
|
||||
}"
|
||||
>
|
||||
<a-descriptions-item label="图斑编号">{{
|
||||
props.showInfoData.case_no
|
||||
}}</a-descriptions-item>
|
||||
<a-descriptions-item label="图斑类型">{{
|
||||
props.showInfoData.typename
|
||||
}}</a-descriptions-item>
|
||||
<a-descriptions-item label="县区">{{
|
||||
props.showInfoData.countyname
|
||||
}}</a-descriptions-item>
|
||||
<a-descriptions-item label="乡镇">{{
|
||||
props.showInfoData.streetname
|
||||
}}</a-descriptions-item>
|
||||
<a-descriptions-item label="社区/村">{{
|
||||
props.showInfoData.communityname
|
||||
}}</a-descriptions-item>
|
||||
<a-descriptions-item label="图斑面积(亩)">{{
|
||||
dataProcessing(props.showInfoData.area)
|
||||
}}</a-descriptions-item>
|
||||
<a-descriptions-item label="图斑编号">
|
||||
{{ props.showInfoData.case_no }}
|
||||
</a-descriptions-item>
|
||||
<a-descriptions-item label="图斑类型">
|
||||
{{ props.showInfoData.typename }}
|
||||
</a-descriptions-item>
|
||||
<a-descriptions-item label="县区">
|
||||
{{ props.showInfoData.countyname }}
|
||||
</a-descriptions-item>
|
||||
<a-descriptions-item label="乡镇">
|
||||
{{ props.showInfoData.streetname }}
|
||||
</a-descriptions-item>
|
||||
<a-descriptions-item label="社区/村">
|
||||
{{ props.showInfoData.communityname }}
|
||||
</a-descriptions-item>
|
||||
<a-descriptions-item label="图斑面积(亩)">
|
||||
{{ dataProcessing(props.showInfoData.area) }}
|
||||
</a-descriptions-item>
|
||||
<a-descriptions-item label="农用地面积(亩)">{{
|
||||
dataProcessing(props.showInfoData.nongyongdi_area)
|
||||
}}</a-descriptions-item>
|
||||
<a-descriptions-item label="耕地面积(亩)">{{
|
||||
dataProcessing(props.showInfoData.gengdi_area)
|
||||
}}</a-descriptions-item>
|
||||
<a-descriptions-item label="永农面积(亩)">{{
|
||||
dataProcessing(props.showInfoData.yongjiujibennongtian_area)
|
||||
}}</a-descriptions-item>
|
||||
<!-- <a-descriptions-item label="占重点区域面积(亩)">{{ dataProcessing(zhongdianquyu_area) }}</a-descriptions-item> -->
|
||||
<a-descriptions-item label="耕地面积(亩)">
|
||||
{{ dataProcessing(props.showInfoData.gengdi_area) }}
|
||||
</a-descriptions-item>
|
||||
<a-descriptions-item label="永农面积(亩)">
|
||||
{{ dataProcessing(props.showInfoData.yongjiujibennongtian_area) }}
|
||||
</a-descriptions-item>
|
||||
<a-descriptions-item label="占生态红线面积(亩)">{{
|
||||
dataProcessing(props.showInfoData.shengtaibaohuhongxian_area)
|
||||
}}</a-descriptions-item>
|
||||
<!-- <a-descriptions-item label="占空间规划面积(亩)">{{ dataProcessing(guotukongjianguihua_area) }}</a-descriptions-item> -->
|
||||
<a-descriptions-item label="图斑描述">{{
|
||||
props.showInfoData.case_description
|
||||
}}</a-descriptions-item>
|
||||
<!-- <a-descriptions-item label="图斑地址">{{ address }}</a-descriptions-item> -->
|
||||
<a-descriptions-item label="图斑描述">
|
||||
{{ props.showInfoData.case_description }}
|
||||
</a-descriptions-item>
|
||||
<a-descriptions-item label="备注">{{ props.showInfoData.remark }}</a-descriptions-item>
|
||||
<a-descriptions-item label="经度">{{ props.showInfoData.lng }}</a-descriptions-item>
|
||||
<a-descriptions-item label="纬度">{{ props.showInfoData.lat }}</a-descriptions-item>
|
||||
<a-descriptions-item label="下发时间">{{
|
||||
props.showInfoData.synchronoustime
|
||||
}}</a-descriptions-item>
|
||||
<a-descriptions-item label="图斑照片">
|
||||
<a-descriptions-item label="下发时间">
|
||||
{{ props.showInfoData.synchronoustime }}
|
||||
</a-descriptions-item>
|
||||
<a-descriptions-item label="审核意见" :span="2">
|
||||
{{ props.showInfoData.shijiyijian }}
|
||||
</a-descriptions-item>
|
||||
<a-descriptions-item label="图斑照片" :span="2">
|
||||
<div class="image-div">
|
||||
<a-image-preview-group
|
||||
:preview="{
|
||||
|
|
@ -87,20 +87,9 @@
|
|||
</a-image-preview-group>
|
||||
</div>
|
||||
</a-descriptions-item>
|
||||
<a-descriptions-item label="接收人">{{
|
||||
props.showInfoData.jieshou_people
|
||||
}}</a-descriptions-item>
|
||||
<a-descriptions-item label="接收时间">{{
|
||||
props.showInfoData.jieshou_time?.split('.')[0]
|
||||
}}</a-descriptions-item>
|
||||
</a-descriptions>
|
||||
</a-tab-pane>
|
||||
<a-tab-pane
|
||||
key="2"
|
||||
v-if="!['建设用地', '推堆土'].includes(props.showInfoData.typename)"
|
||||
tab="线索填报"
|
||||
force-render
|
||||
>
|
||||
<a-tab-pane key="2" tab="县区填报" force-render>
|
||||
<a-descriptions
|
||||
:column="2"
|
||||
bordered
|
||||
|
|
@ -110,22 +99,10 @@
|
|||
'word-break': 'break-all',
|
||||
}"
|
||||
>
|
||||
<a-descriptions-item label="判定结果">{{
|
||||
getLabel('is_illegal', props.showInfoData.is_illegal)
|
||||
}}</a-descriptions-item>
|
||||
<a-descriptions-item v-if="props.showInfoData.is_illegal == 1" label="项目名称">{{
|
||||
props.showInfoData.xiangmumc
|
||||
}}</a-descriptions-item>
|
||||
<a-descriptions-item v-if="props.showInfoData.is_illegal == 1" label="项目主体">{{
|
||||
props.showInfoData.xiangmuzhuti
|
||||
}}</a-descriptions-item>
|
||||
<a-descriptions-item v-if="props.showInfoData.is_illegal == 1" label="实际用途">{{
|
||||
props.showInfoData.actual_use_to
|
||||
}}</a-descriptions-item>
|
||||
<a-descriptions-item v-if="props.showInfoData.is_illegal == 1" label="违法类型">{{
|
||||
getLabel('weifaleixing', props.showInfoData.weifaleixing)
|
||||
}}</a-descriptions-item>
|
||||
<a-descriptions-item v-if="props.showInfoData.is_illegal == 1" label="附件">
|
||||
<a-descriptions-item label="情况说明" :span="2">
|
||||
{{ props.showInfoData.pandingyijushuoming }}
|
||||
</a-descriptions-item>
|
||||
<a-descriptions-item label="附件" :span="2">
|
||||
<a-image-preview-group :preview="{ getContainer }">
|
||||
<template v-for="(item, itemIndex) in fujianList" :key="itemIndex">
|
||||
<a-image
|
||||
|
|
@ -146,77 +123,6 @@
|
|||
</template>
|
||||
</a-image-preview-group>
|
||||
</a-descriptions-item>
|
||||
<a-descriptions-item v-if="props.showInfoData.is_illegal == 0" label="附件">
|
||||
<a-image-preview-group :preview="{ getContainer }">
|
||||
<template v-for="(item, itemIndex) in hefafujianList" :key="itemIndex">
|
||||
<a-image
|
||||
v-if="showImage(item)"
|
||||
style="width: 100px; height: 100px"
|
||||
:src="`${VITE_GLOB_INFO_IMAGE_URL}/${item}`"
|
||||
:preview="{ getContainer }"
|
||||
></a-image>
|
||||
<div v-else>
|
||||
<Icon
|
||||
v-if="item"
|
||||
:style="`font-size: 30px; cursor: pointer;`"
|
||||
icon="ion:document-attach-outline"
|
||||
@click="hanlderPreViewFile(item)"
|
||||
/>
|
||||
{{ handlerDealFileName(item) }}
|
||||
</div>
|
||||
</template>
|
||||
</a-image-preview-group>
|
||||
</a-descriptions-item>
|
||||
<a-descriptions-item v-if="props.showInfoData.is_illegal == 2" label="实际用途">{{
|
||||
getLabel('qita_use_to', props.showInfoData.qita_use_to)
|
||||
}}</a-descriptions-item>
|
||||
<a-descriptions-item v-if="props.showInfoData.is_illegal == 2" label="附件">
|
||||
<a-image-preview-group :preview="{ getContainer }">
|
||||
<template v-for="(item, itemIndex) in qitafujianList" :key="itemIndex">
|
||||
<a-image
|
||||
v-if="showImage(item)"
|
||||
style="width: 100px; height: 100px"
|
||||
:src="`${VITE_GLOB_INFO_IMAGE_URL}/${item}`"
|
||||
:preview="{ getContainer }"
|
||||
></a-image>
|
||||
<div v-else>
|
||||
<Icon
|
||||
v-if="item"
|
||||
:style="`font-size: 30px; cursor: pointer;`"
|
||||
icon="ion:document-attach-outline"
|
||||
@click="hanlderPreViewFile(item)"
|
||||
/>
|
||||
{{ handlerDealFileName(item) }}
|
||||
</div>
|
||||
</template>
|
||||
</a-image-preview-group>
|
||||
</a-descriptions-item>
|
||||
<a-descriptions-item label="判定依据说明">{{
|
||||
props.showInfoData.pandingyijushuoming
|
||||
}}</a-descriptions-item>
|
||||
<a-descriptions-item label="照片">
|
||||
<div class="image-div">
|
||||
<a-image-preview-group
|
||||
:preview="{
|
||||
getContainer: getContainer,
|
||||
onVisibleChange: handlerImageChange,
|
||||
}"
|
||||
>
|
||||
<template v-for="(imageItem, imageIndex) in anjianzhaopianList" :key="imageIndex">
|
||||
<a-image
|
||||
v-if="imageItem"
|
||||
@click="handlerPreviewImage(imageIndex, imageItem)"
|
||||
width="100px"
|
||||
height="100px"
|
||||
:src="`${VITE_GLOB_INFO_IMAGE_URL}/${imageItem}`"
|
||||
:preview="{
|
||||
getContainer,
|
||||
}"
|
||||
></a-image>
|
||||
</template>
|
||||
</a-image-preview-group>
|
||||
</div>
|
||||
</a-descriptions-item>
|
||||
<a-descriptions-item label="填报人">{{
|
||||
props.showInfoData.examiner_name
|
||||
}}</a-descriptions-item>
|
||||
|
|
@ -225,15 +131,7 @@
|
|||
}}</a-descriptions-item>
|
||||
</a-descriptions>
|
||||
</a-tab-pane>
|
||||
<a-tab-pane
|
||||
key="3"
|
||||
tab="整改情况"
|
||||
v-if="
|
||||
props.showInfoData.is_illegal == 1 &&
|
||||
props.showInfoData.weifaleixing == 0 &&
|
||||
!['建设用地', '推堆土'].includes(props.showInfoData.typename)
|
||||
"
|
||||
>
|
||||
<a-tab-pane key="3" tab="无人机影像">
|
||||
<a-descriptions
|
||||
:column="2"
|
||||
bordered
|
||||
|
|
@ -243,163 +141,7 @@
|
|||
'word-break': 'break-all',
|
||||
}"
|
||||
>
|
||||
<a-descriptions-item label="整改措施">{{
|
||||
getLabel('measure_name', props.showInfoData.measure_name)
|
||||
}}</a-descriptions-item>
|
||||
<a-descriptions-item v-if="props.showInfoData.measure_name == 0" label="附件">
|
||||
<a-image-preview-group :preview="{ getContainer }">
|
||||
<template v-for="(item, itemIndex) in yanshoubiaoList" :key="itemIndex">
|
||||
<a-image
|
||||
v-if="showImage(item)"
|
||||
style="width: 100px; height: 100px"
|
||||
:src="`${VITE_GLOB_INFO_IMAGE_URL}/${item}`"
|
||||
:preview="{ getContainer }"
|
||||
></a-image>
|
||||
<div v-else>
|
||||
<Icon
|
||||
v-if="item"
|
||||
:style="`font-size: 30px; cursor: pointer;`"
|
||||
icon="ion:document-attach-outline"
|
||||
@click="hanlderPreViewFile(item)"
|
||||
/>
|
||||
{{ handlerDealFileName(item) }}
|
||||
</div>
|
||||
</template>
|
||||
</a-image-preview-group>
|
||||
</a-descriptions-item>
|
||||
<a-descriptions-item v-if="props.showInfoData.measure_name == 0" label="照片">
|
||||
<div class="image-div">
|
||||
<a-image-preview-group
|
||||
:preview="{
|
||||
getContainer: getContainer,
|
||||
onVisibleChange: handlerImageChange,
|
||||
}"
|
||||
>
|
||||
<template
|
||||
v-for="(imageItem, imageIndex) in chaichufugenghoupicList"
|
||||
:key="imageIndex"
|
||||
>
|
||||
<a-image
|
||||
v-if="imageItem"
|
||||
width="100px"
|
||||
height="100px"
|
||||
@click="handlerPreviewImage(imageIndex, imageItem)"
|
||||
:src="`${VITE_GLOB_INFO_IMAGE_URL}/${imageItem}`"
|
||||
:preview="{
|
||||
getContainer,
|
||||
}"
|
||||
></a-image>
|
||||
</template>
|
||||
</a-image-preview-group>
|
||||
</div>
|
||||
</a-descriptions-item>
|
||||
<a-descriptions-item v-if="props.showInfoData.measure_name == 1" label="附件">
|
||||
<a-image-preview-group :preview="{ getContainer }">
|
||||
<template v-for="(item, itemIndex) in zhenggaifujianList" :key="itemIndex">
|
||||
<a-image
|
||||
v-if="showImage(item)"
|
||||
style="width: 100px; height: 100px"
|
||||
:src="`${VITE_GLOB_INFO_IMAGE_URL}/${item}`"
|
||||
:preview="{ getContainer }"
|
||||
></a-image>
|
||||
<div v-else>
|
||||
<Icon
|
||||
v-if="item"
|
||||
:style="`font-size: 30px; cursor: pointer;`"
|
||||
icon="ion:document-attach-outline"
|
||||
@click="hanlderPreViewFile(item)"
|
||||
/>
|
||||
{{ handlerDealFileName(item) }}
|
||||
</div>
|
||||
</template>
|
||||
</a-image-preview-group>
|
||||
</a-descriptions-item>
|
||||
<a-descriptions-item v-if="props.showInfoData.measure_name == 1" label="照片">
|
||||
<div class="image-div">
|
||||
<a-image-preview-group
|
||||
:preview="{
|
||||
getContainer: getContainer,
|
||||
onVisibleChange: handlerImageChange,
|
||||
}"
|
||||
>
|
||||
<template v-for="(imageItem, imageIndex) in bubanzhaopianList" :key="imageIndex">
|
||||
<a-image
|
||||
v-if="imageItem"
|
||||
width="100px"
|
||||
height="100px"
|
||||
@click="handlerPreviewImage(imageIndex, imageItem)"
|
||||
:src="`${VITE_GLOB_INFO_IMAGE_URL}/${imageItem}`"
|
||||
:preview="{
|
||||
getContainer,
|
||||
}"
|
||||
></a-image>
|
||||
</template>
|
||||
</a-image-preview-group>
|
||||
</div>
|
||||
</a-descriptions-item>
|
||||
<a-descriptions-item label="办理人">{{
|
||||
props.showInfoData.transactor_name
|
||||
}}</a-descriptions-item>
|
||||
<a-descriptions-item label="办理时间">{{
|
||||
props.showInfoData.transact_time
|
||||
}}</a-descriptions-item>
|
||||
</a-descriptions>
|
||||
</a-tab-pane>
|
||||
<a-tab-pane
|
||||
key="4"
|
||||
v-if="!['建设用地', '推堆土'].includes(props.showInfoData.typename)"
|
||||
tab="审核情况"
|
||||
>
|
||||
<a-divider>区县审核</a-divider>
|
||||
<a-descriptions
|
||||
:column="2"
|
||||
bordered
|
||||
:contentStyle="{
|
||||
'text-align': 'center',
|
||||
'min-width': '250px',
|
||||
'word-break': 'break-all',
|
||||
}"
|
||||
>
|
||||
<a-descriptions-item label="审核结果">{{
|
||||
props.showInfoData.xjshenhejieguo
|
||||
}}</a-descriptions-item>
|
||||
<a-descriptions-item label="审核意见">{{
|
||||
props.showInfoData.xianjiyijian
|
||||
}}</a-descriptions-item>
|
||||
<a-descriptions-item label="审核人">{{
|
||||
props.showInfoData.verifyuser
|
||||
}}</a-descriptions-item>
|
||||
<a-descriptions-item label="审核时间">{{
|
||||
props.showInfoData.verifytime
|
||||
}}</a-descriptions-item>
|
||||
</a-descriptions>
|
||||
<a-divider>市局审核</a-divider>
|
||||
<a-descriptions
|
||||
:column="2"
|
||||
bordered
|
||||
:contentStyle="{
|
||||
'text-align': 'center',
|
||||
'min-width': '250px',
|
||||
'word-break': 'break-all',
|
||||
}"
|
||||
>
|
||||
<a-descriptions-item label="审核结果">{{
|
||||
props.showInfoData.sjshenhejieguo
|
||||
}}</a-descriptions-item>
|
||||
<a-descriptions-item label="审核意见">{{
|
||||
props.showInfoData.shijiyijian
|
||||
}}</a-descriptions-item>
|
||||
<a-descriptions-item label="审核人">{{
|
||||
props.showInfoData.hexiaoren
|
||||
}}</a-descriptions-item>
|
||||
<a-descriptions-item label="审核时间">{{
|
||||
props.showInfoData.hexiaotime?.split('.')[0]
|
||||
}}</a-descriptions-item>
|
||||
<a-descriptions-item
|
||||
v-if="props.showInfoData.weifaleixing == 0"
|
||||
label="无人机复飞照片"
|
||||
:span="2"
|
||||
>
|
||||
<a-descriptions-item label="无人机复飞照片" :span="2">
|
||||
<div class="image-div">
|
||||
<a-image-preview-group
|
||||
:preview="{
|
||||
|
|
@ -420,27 +162,6 @@
|
|||
</a-image-preview-group>
|
||||
</div>
|
||||
</a-descriptions-item>
|
||||
<!-- <a-descriptions-item label="现场核查照片" :span="2">
|
||||
<div class="image-div">
|
||||
<a-image-preview-group
|
||||
:preview="{
|
||||
getContainer:getContainer,
|
||||
}"
|
||||
>
|
||||
<template v-for="(imageItem, imageIndex) in xchczhaopianList" :key="imageIndex">
|
||||
<a-image
|
||||
v-if="imageItem"
|
||||
width="100px"
|
||||
height="100px"
|
||||
:src="`${VITE_GLOB_INFO_IMAGE_URL}/${imageItem}`"
|
||||
:preview="{
|
||||
getContainer,
|
||||
}"
|
||||
></a-image>
|
||||
</template>
|
||||
</a-image-preview-group>
|
||||
</div>
|
||||
</a-descriptions-item> -->
|
||||
</a-descriptions>
|
||||
</a-tab-pane>
|
||||
</a-tabs>
|
||||
|
|
|
|||
|
|
@ -282,8 +282,15 @@
|
|||
}
|
||||
chooseRows?.forEach((chooseRow, index) => {
|
||||
let tiles: any = [];
|
||||
let titeUrl: any = null;
|
||||
if(new URL(VITE_GLOB_API_URL).hostname == 'localhost'){
|
||||
titeUrl = 'http://localhost:8080/geoserver/my_workspace/wms?service=WMS&version=1.1.0&request=GetMap&layers=my_workspace:';
|
||||
} else {
|
||||
titeUrl = 'http://192.168.10.141:8080/geoserver/my_workspace/wms?service=WMS&version=1.1.0&request=GetMap&layers=my_workspace:';
|
||||
}
|
||||
|
||||
let tile =
|
||||
'http://192.168.10.141:8080/geoserver/my_workspace/wms?service=WMS&version=1.1.0&request=GetMap&layers=my_workspace:' +
|
||||
titeUrl +
|
||||
chooseRow.layerName +
|
||||
'&styles=&bbox={bbox-epsg-3857}&width=256&height=256&srs=EPSG:3857' +
|
||||
'&format=image/png&TRANSPARENT=TRUE';
|
||||
|
|
|
|||
Loading…
Reference in New Issue