各个模块图斑详情内容优化

dianlixunjian
刘妍 2024-09-19 14:08:29 +08:00
parent 1d59aaf861
commit 699ce5667a
6 changed files with 992 additions and 1369 deletions

View File

@ -22,41 +22,55 @@
'word-break': 'break-all',
}"
>
<a-descriptions-item label="图斑编号">{{ case_no }}</a-descriptions-item>
<a-descriptions-item label="图斑类型">{{ typename }}</a-descriptions-item>
<a-descriptions-item label="县区">{{ countyname }}</a-descriptions-item>
<a-descriptions-item label="乡镇">{{ streetname }}</a-descriptions-item>
<a-descriptions-item label="社区/村">{{ communityname }}</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(area)
dataProcessing(props.showInfoData.area)
}}</a-descriptions-item>
<!-- <a-descriptions-item label="农用地面积(亩)">{{
dataProcessing(nongyongdi_area)
}}</a-descriptions-item> -->
<a-descriptions-item label="耕地面积(亩)">{{
dataProcessing(gengdi_area)
dataProcessing(props.showInfoData.gengdi_area)
}}</a-descriptions-item>
<a-descriptions-item label="永农面积(亩)">{{
dataProcessing(yongjiujibennongtian_area)
dataProcessing(props.showInfoData.yongjiujibennongtian_area)
}}</a-descriptions-item>
<!-- <a-descriptions-item label="占重点区域面积(亩)">{{ dataProcessing(zhongdianquyu_area) }}</a-descriptions-item> -->
<!-- <a-descriptions-item label="占生态红线面积(亩)">{{
dataProcessing(shengtaibaohuhongxian_area)
}}</a-descriptions-item> -->
<!-- <a-descriptions-item label="占空间规划面积(亩)">{{ dataProcessing(guotukongjianguihua_area) }}</a-descriptions-item> -->
<a-descriptions-item label="图斑描述">{{ case_description }}</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="备注">{{ remark }}</a-descriptions-item>
<a-descriptions-item label="经度">{{ lng }}</a-descriptions-item>
<a-descriptions-item label="纬度">{{ lat }}</a-descriptions-item>
<a-descriptions-item label="下发时间">{{ synchronoustime }}</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="图斑照片">
<div class="image-div">
<a-image-preview-group
:preview="{
getContainer:getContainer,
getContainer: getContainer,
}"
>
>
<template v-for="(imageItem, imageIndex) in casepicList" :key="imageIndex">
<a-image
v-if="imageItem"
@ -71,13 +85,17 @@
</a-image-preview-group>
</div>
</a-descriptions-item>
<a-descriptions-item label="接收人">{{ jieshou_people }}</a-descriptions-item>
<a-descriptions-item label="接收时间">{{ jieshou_time?.split('.')[0] }}</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(typename)"
v-if="!['建设用地', '推堆土'].includes(props.showInfoData.typename)"
tab="线索填报"
force-render
>
@ -91,28 +109,28 @@
}"
>
<a-descriptions-item label="判定结果">{{
getLabel('is_illegal', is_illegal)
getLabel('is_illegal', props.showInfoData.is_illegal)
}}</a-descriptions-item>
<a-descriptions-item v-if="is_illegal == 1" label="项目名称">{{
xiangmumc
<a-descriptions-item v-if="props.showInfoData.is_illegal == 1" label="项目名称">{{
props.showInfoData.xiangmumc
}}</a-descriptions-item>
<a-descriptions-item v-if="is_illegal == 1" label="项目主体">{{
xiangmuzhuti
<a-descriptions-item v-if="props.showInfoData.is_illegal == 1" label="项目主体">{{
props.showInfoData.xiangmuzhuti
}}</a-descriptions-item>
<a-descriptions-item v-if="is_illegal == 1" label="实际用途">{{
actual_use_to
<a-descriptions-item v-if="props.showInfoData.is_illegal == 1" label="实际用途">{{
props.showInfoData.actual_use_to
}}</a-descriptions-item>
<a-descriptions-item v-if="is_illegal == 1" label="违法类型">{{
getLabel('weifaleixing', weifaleixing)
<a-descriptions-item v-if="props.showInfoData.is_illegal == 1" label="违法类型">{{
getLabel('weifaleixing', props.showInfoData.weifaleixing)
}}</a-descriptions-item>
<a-descriptions-item v-if="is_illegal == 1" label="附件">
<a-image-preview-group :preview="{getContainer,}">
<a-descriptions-item v-if="props.showInfoData.is_illegal == 1" label="附件">
<a-image-preview-group :preview="{ getContainer }">
<template v-for="(item, itemIndex) in fujianList" :key="itemIndex">
<a-image
v-if="showImage(item)"
style="width:100px;height:100px;"
style="width: 100px; height: 100px"
:src="`${VITE_GLOB_INFO_IMAGE_URL}/${item}`"
:preview="{getContainer}"
:preview="{ getContainer }"
></a-image>
<div v-else>
<Icon
@ -126,14 +144,14 @@
</template>
</a-image-preview-group>
</a-descriptions-item>
<a-descriptions-item v-if="is_illegal == 0" label="附件">
<a-image-preview-group :preview="{getContainer,}">
<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;"
style="width: 100px; height: 100px"
:src="`${VITE_GLOB_INFO_IMAGE_URL}/${item}`"
:preview="{getContainer,}"
:preview="{ getContainer }"
></a-image>
<div v-else>
<Icon
@ -147,17 +165,17 @@
</template>
</a-image-preview-group>
</a-descriptions-item>
<a-descriptions-item v-if="is_illegal == 2" label="实际用途">{{
getLabel('qita_use_to', qita_use_to)
<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="is_illegal == 2" label="附件">
<a-image-preview-group :preview="{getContainer,}">
<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;"
style="width: 100px; height: 100px"
:src="`${VITE_GLOB_INFO_IMAGE_URL}/${item}`"
:preview="{getContainer}"
:preview="{ getContainer }"
></a-image>
<div v-else>
<Icon
@ -172,39 +190,47 @@
</a-image-preview-group>
</a-descriptions-item>
<a-descriptions-item label="判定依据说明">{{
pandingyijushuoming
props.showInfoData.pandingyijushuoming
}}</a-descriptions-item>
<a-descriptions-item label="照片">
<div class="image-div">
<a-image-preview-group
:preview="{
getContainer:getContainer,
onVisibleChange:handlerImageChange
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>
<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="填报人">{{ examiner_name }}</a-descriptions-item>
<a-descriptions-item label="填报时间">{{ examine_time }}</a-descriptions-item>
<a-descriptions-item label="填报人">{{
props.showInfoData.examiner_name
}}</a-descriptions-item>
<a-descriptions-item label="填报时间">{{
props.showInfoData.examine_time
}}</a-descriptions-item>
</a-descriptions>
</a-tab-pane>
<a-tab-pane
key="3"
tab="整改情况"
v-if="is_illegal == 1 && weifaleixing == 0 && !['建设用地', '推堆土'].includes(typename)"
v-if="
props.showInfoData.is_illegal == 1 &&
props.showInfoData.weifaleixing == 0 &&
!['建设用地', '推堆土'].includes(props.showInfoData.typename)
"
>
<a-descriptions
:column="2"
@ -216,16 +242,16 @@
}"
>
<a-descriptions-item label="整改措施">{{
getLabel('measure_name', measure_name)
getLabel('measure_name', props.showInfoData.measure_name)
}}</a-descriptions-item>
<a-descriptions-item v-if="measure_name == 0" label="附件">
<a-image-preview-group :preview="{getContainer,}">
<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;"
style="width: 100px; height: 100px"
:src="`${VITE_GLOB_INFO_IMAGE_URL}/${item}`"
:preview="{getContainer,}"
:preview="{ getContainer }"
></a-image>
<div v-else>
<Icon
@ -239,13 +265,13 @@
</template>
</a-image-preview-group>
</a-descriptions-item>
<a-descriptions-item v-if="measure_name == 0" label="照片">
<a-descriptions-item v-if="props.showInfoData.measure_name == 0" label="照片">
<div class="image-div">
<a-image-preview-group
:preview="{
getContainer:getContainer,
getContainer: getContainer,
}"
>
>
<template
v-for="(imageItem, imageIndex) in chaichufugenghoupicList"
:key="imageIndex"
@ -263,14 +289,14 @@
</a-image-preview-group>
</div>
</a-descriptions-item>
<a-descriptions-item v-if="measure_name == 1" label="附件">
<a-image-preview-group :preview="{getContainer,}">
<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;"
style="width: 100px; height: 100px"
:src="`${VITE_GLOB_INFO_IMAGE_URL}/${item}`"
:preview="{getContainer}"
:preview="{ getContainer }"
></a-image>
<div v-else>
<Icon
@ -284,13 +310,13 @@
</template>
</a-image-preview-group>
</a-descriptions-item>
<a-descriptions-item v-if="measure_name == 1" label="照片">
<a-descriptions-item v-if="props.showInfoData.measure_name == 1" label="照片">
<div class="image-div">
<a-image-preview-group
:preview="{
getContainer:getContainer,
getContainer: getContainer,
}"
>
>
<template v-for="(imageItem, imageIndex) in bubanzhaopianList" :key="imageIndex">
<a-image
v-if="imageItem"
@ -305,11 +331,19 @@
</a-image-preview-group>
</div>
</a-descriptions-item>
<a-descriptions-item label="办理人">{{ transactor_name }}</a-descriptions-item>
<a-descriptions-item label="办理时间">{{ transact_time }}</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(typename)" tab="区县审核">
<a-tab-pane
key="4"
v-if="!['建设用地', '推堆土'].includes(props.showInfoData.typename)"
tab="区县审核"
>
<a-descriptions
:column="2"
bordered
@ -319,11 +353,19 @@
'word-break': 'break-all',
}"
>
<a-descriptions-item label="审核人">{{ verifyuser }}</a-descriptions-item>
<a-descriptions-item label="审核时间">{{ verifytime }}</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-tab-pane>
<a-tab-pane key="5" v-if="!['建设用地', '推堆土'].includes(typename)" tab="市局审核">
<a-tab-pane
key="5"
v-if="!['建设用地', '推堆土'].includes(props.showInfoData.typename)"
tab="市局审核"
>
<a-descriptions
:column="2"
bordered
@ -333,15 +375,19 @@
'word-break': 'break-all',
}"
>
<a-descriptions-item label="审核人">{{ hexiaoren }}</a-descriptions-item>
<a-descriptions-item label="审核时间">{{ hexiaotime?.split('.')[0] }}</a-descriptions-item>
<a-descriptions-item v-if="weifaleixing == 0" label="无人机复飞照片">
<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="无人机复飞照片">
<div class="image-div">
<a-image-preview-group
:preview="{
getContainer:getContainer,
getContainer: getContainer,
}"
>
>
<template v-for="(imageItem, imageIndex) in wrjffzhaopianList" :key="imageIndex">
<a-image
v-if="imageItem"
@ -385,167 +431,59 @@
</template>
<script setup lang="ts">
import { defineProps, ref, computed,onBeforeMount } from 'vue';
import { defineProps, ref, computed, onBeforeMount, watch } from 'vue';
import MapboxMap from '@/components/MapboxMaps/MapComponent.vue';
import { getConfig } from '@/api/sys/layerManagement';
import { getGeom } from '@/api/sys/layerManagement';
import {getLoadCaseImgList} from '@/api/tiankongdi'
import { getLoadCaseImgList } from '@/api/tiankongdi';
import { useMessage } from '@/hooks/web/useMessage';
import axios from 'axios';
const { createMessage } = useMessage();
import Icon from '@/components/Icon/Icon.vue';
import { getAppEnvConfig } from '@/utils/env';
const { VITE_GLOB_INFO_IMAGE_URL } = getAppEnvConfig();
import {
mapTypeOptions,
illegalTypeOptions,
measureOptions,
mapStatusOptions,
markTypeOptions,
illegalTypeList,
resultOptions,
qitaUseTOOptions,
} from '@/utils/global';
console.log('');
const { createMessage } = useMessage();
const { VITE_GLOB_INFO_IMAGE_URL } = getAppEnvConfig();
const MapboxComponent = ref();
const mapConfig = ref({});
getConfig({ code: 'mapsetting' }).then((res) => {
mapConfig.value = JSON.parse(res.codeValue);
});
watch(
() => props.showInfoData,
() => {
getConfig({ code: 'mapsetting' }).then((res) => {
mapConfig.value = JSON.parse(res.codeValue);
});
changeTask();
},
);
const props = defineProps(['showInfoData']);
const activeKey = ref('1');
const geomsList = ref();
const {
id,
case_no,
case_name,
case_description,
start_time,
end_time,
address,
lng,
lat,
typeid,
typename,
handle_status_id,
handle_status_name,
case_status_i,
case_status_name,
createtime,
createuser,
drone_no,
deal_userid,
deal_username,
createusername,
is_delete,
countyid,
countyname,
streetid,
streetname,
communityid,
communityname,
remark,
is_closed,
area,
is_illegal,
close_user,
close_time,
identification_user,
identification_time,
is_intact,
close_userid,
identification_userid,
verifyuserid,
verifyuser,
verifytime,
is_improve,
improve_reason,
is_dispense,
dispense_userid,
dispense_time,
dispense_username,
verifystatus,
verifystatusname,
is_checked,
deal_time,
is_drawback,
examiner_id,
examiner_name,
examine_time,
measure_name,
casepic,
opinion,
result,
result_name,
opinion_name,
handletime,
handleuser,
handleusername,
is_assist,
measure_name_deal,
qita_use_to,
illegal_contact,
illegal_shenfenzhenghao,
investigation_type,
investigation_result,
registr_number,
is_build_complete,
actual_use_to,
transactor_id,
transactor_name,
transact_time,
geomid,
nongyongdi_area,
gengdi_area,
yongjiujibennongtian_area,
zhongdianquyu_area,
shengtaibaohuhongxian_area,
guotukongjianguihua_area,
fujian,
hefafujian,
qitafujian,
jieshou_people,
jieshou_time,
pandingyijushuoming,
xiangmumc,
xiangmuzhuti,
weifaleixing,
yanshoubiao,
zhenggaifujian,
chaichufugenghoupic,
bubanzhaopian,
is_jieshou,
anjianzhaopian,
hexiaoren,
hexiaotime,
wrjffzhaopian,
xchczhaopian,
synchronoustime,
} = props.showInfoData;
const imageList = ref([])
async function getCaseImgList(){
imageList.value = await getLoadCaseImgList({caseid:id,category:'耕地非粮化'});
const imageList = ref([]);
async function getCaseImgList() {
imageList.value = await getLoadCaseImgList({
caseid: props.showInfoData.id,
category: '耕地非粮化',
});
//
let zhengshiImageList = [];
imageList.value?.forEach((item,index)=>{
let obj = anjianzhaopianList.value?.find((it,idx)=>{
imageList.value?.forEach((item, index) => {
let obj = anjianzhaopianList.value?.find((it, idx) => {
return item.filePath == it;
})
if(obj){
});
if (obj) {
zhengshiImageList.push(imageList.value[index]);
}
})
});
// console.log("imageList",imageList.value);
// console.log("anjianzhaopianList",anjianzhaopianList.value);
@ -554,82 +492,76 @@
MapboxComponent.value.handlerLoadPictureAzimuth(zhengshiImageList);
}
function handlerPreviewImage(index,url){
function handlerPreviewImage(index, url) {
const regex = /([^/\\]+)(?=\.[^/\\]*$|$)/;
const match = url.match(regex);
if (match) {
MapboxComponent.value.handlerCurrentImageChange(match[1]);
}
}
const isInitImageLisener = ref<Boolean>(false);
//
function handlerImageChange(e):void{
if(e && !isInitImageLisener.value){
setTimeout(function(){
function handlerImageChange(e): void {
if (e && !isInitImageLisener.value) {
setTimeout(function () {
const targetNode = document.getElementsByClassName('ant-image-preview-img');
//
const observer = new MutationObserver((mutationsList) => {
for (const mutation of mutationsList) {
if (mutation.type === 'attributes') {
if(targetNode[0].getAttribute(mutation.attributeName).match("http")){
handlerPreviewImage(0,targetNode[0].getAttribute(mutation.attributeName))
}
}
for (const mutation of mutationsList) {
if (mutation.type === 'attributes') {
if (targetNode[0].getAttribute(mutation.attributeName).match('http')) {
handlerPreviewImage(0, targetNode[0].getAttribute(mutation.attributeName));
}
}
}
});
//
const config = { attributes: true };
//
observer.observe(targetNode[0], config);
isInitImageLisener.value = true;
},250)
}, 250);
}
}
onBeforeMount(()=>{
})
onBeforeMount(() => {});
const anjianzhaopianList = computed(() => {
getCaseImgList();
return anjianzhaopian ? anjianzhaopian.split(',') : [];
return props.showInfoData.anjianzhaopian ? props.showInfoData.anjianzhaopian.split(',') : [];
});
const casepicList = computed(() => {
return casepic ? casepic.split(',') : [];
return props.showInfoData.casepic ? props.showInfoData.casepic.split(',') : [];
});
const chaichufugenghoupicList = computed(() => {
return chaichufugenghoupic ? chaichufugenghoupic.split(',') : [];
return props.showInfoData.chaichufugenghoupic
? props.showInfoData.chaichufugenghoupic.split(',')
: [];
});
const bubanzhaopianList = computed(() => {
return bubanzhaopian ? bubanzhaopian.split(',') : [];
return props.showInfoData.bubanzhaopian ? props.showInfoData.bubanzhaopian.split(',') : [];
});
const fujianList = computed(() => {
return fujian ? fujian.split(',') : [];
return props.showInfoData.fujian ? props.showInfoData.fujian.split(',') : [];
});
const hefafujianList = computed(() => {
return hefafujian ? hefafujian.split(',') : [];
return props.showInfoData.hefafujian ? props.showInfoData.hefafujian.split(',') : [];
});
const qitafujianList = computed(() => {
return qitafujian ? qitafujian.split(',') : [];
return props.showInfoData.qitafujian ? props.showInfoData.qitafujian.split(',') : [];
});
const zhenggaifujianList = computed(() => {
return zhenggaifujian ? zhenggaifujian.split(',') : [];
return props.showInfoData.zhenggaifujian ? props.showInfoData.zhenggaifujian.split(',') : [];
});
const yanshoubiaoList = computed(() => {
return yanshoubiao ? yanshoubiao.split(',') : [];
return props.showInfoData.yanshoubiao ? props.showInfoData.yanshoubiao.split(',') : [];
});
const wrjffzhaopianList = computed(() => {
return wrjffzhaopian ? wrjffzhaopian.split(',') : [];
return props.showInfoData.wrjffzhaopian ? props.showInfoData.wrjffzhaopian.split(',') : [];
});
const xchczhaopianList = computed(() => {
return xchczhaopian ? xchczhaopian.split(',') : [];
return props.showInfoData.xchczhaopian ? props.showInfoData.xchczhaopian.split(',') : [];
});
function onMapboxLoad() {
@ -672,8 +604,6 @@
key: null,
};
if (props.showInfoData.geomid) {
getGeom(getGeomPrams).then((res) => {
let geoms = [];
if (res) {
@ -699,27 +629,26 @@
}
}
const downLoadFile = (url) => {
if(url.indexOf('.pdf') !== -1){
if (url.indexOf('.pdf') !== -1) {
axios({
method: 'get',
url: `${VITE_GLOB_INFO_IMAGE_URL}/${url}`,
responseType: 'blob',
headers: {
'Content-Disposition': 'inline',
}
},
})
.then(response => {
let blob = new Blob([response.data], {type: 'application/pdf'});
let url = window.URL.createObjectURL(blob)
window.open(url);
})
.catch(error => {
console.error(error);
});
}else{
window.open(`${VITE_GLOB_INFO_IMAGE_URL}/${url}`, '_blank');
.then((response) => {
let blob = new Blob([response.data], { type: 'application/pdf' });
let url = window.URL.createObjectURL(blob);
window.open(url);
})
.catch((error) => {
console.error(error);
});
} else {
window.open(`${VITE_GLOB_INFO_IMAGE_URL}/${url}`, '_blank');
}
};
const getContainer = () => {
return document.getElementById('info-container');
@ -739,12 +668,12 @@
}
};
const showImage = (url) => {
if(url.indexOf('.png') !== -1 || url.indexOf('.jpg') !== -1 || url.indexOf('.jpeg') !== -1 ){
return true
}else{
return false
if (url.indexOf('.png') !== -1 || url.indexOf('.jpg') !== -1 || url.indexOf('.jpeg') !== -1) {
return true;
} else {
return false;
}
}
};
</script>
<style lang="scss" scoped>
@ -772,14 +701,14 @@
height: calc(100vh - 100px);
margin-right: 20px;
}
:deep(.ant-image){
:deep(.ant-image) {
margin-right: 10px;
margin-bottom: 10px;
}
:deep(.ant-image-preview-switch-left){
:deep(.ant-image-preview-switch-left) {
position: absolute;
}
:deep(.ant-image-preview-switch-right){
:deep(.ant-image-preview-switch-right) {
position: absolute;
}
.info-container {
@ -799,14 +728,14 @@
position: absolute;
top: 0;
width: 100%;
.ant-image-preview-operations-operation{
.ant-image-preview-operations-operation {
// flex:1;
}
}
.ant-image-preview-operations-operation:nth-last-child(1){
.ant-image-preview-operations-operation:nth-last-child(1) {
display: none;
}
.ant-image-preview-operations-operation:nth-last-child(2){
}
.ant-image-preview-operations-operation:nth-last-child(2) {
display: none;
}
}

View File

@ -22,41 +22,55 @@
'word-break': 'break-all',
}"
>
<a-descriptions-item label="图斑编号">{{ case_no }}</a-descriptions-item>
<a-descriptions-item label="图斑类型">{{ typename }}</a-descriptions-item>
<a-descriptions-item label="县区">{{ countyname }}</a-descriptions-item>
<a-descriptions-item label="乡镇">{{ streetname }}</a-descriptions-item>
<a-descriptions-item label="社区/村">{{ communityname }}</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(area)
dataProcessing(props.showInfoData.area)
}}</a-descriptions-item>
<a-descriptions-item label="农用地面积(亩)">{{
dataProcessing(nongyongdi_area)
dataProcessing(props.showInfoData.nongyongdi_area)
}}</a-descriptions-item>
<a-descriptions-item label="耕地面积(亩)">{{
dataProcessing(gengdi_area)
dataProcessing(props.showInfoData.gengdi_area)
}}</a-descriptions-item>
<a-descriptions-item label="永农面积(亩)">{{
dataProcessing(yongjiujibennongtian_area)
dataProcessing(props.showInfoData.yongjiujibennongtian_area)
}}</a-descriptions-item>
<!-- <a-descriptions-item label="占重点区域面积(亩)">{{ dataProcessing(zhongdianquyu_area) }}</a-descriptions-item> -->
<a-descriptions-item label="占生态红线面积(亩)">{{
dataProcessing(shengtaibaohuhongxian_area)
dataProcessing(props.showInfoData.shengtaibaohuhongxian_area)
}}</a-descriptions-item>
<!-- <a-descriptions-item label="占空间规划面积(亩)">{{ dataProcessing(guotukongjianguihua_area) }}</a-descriptions-item> -->
<a-descriptions-item label="图斑描述">{{ case_description }}</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="备注">{{ remark }}</a-descriptions-item>
<a-descriptions-item label="经度">{{ lng }}</a-descriptions-item>
<a-descriptions-item label="纬度">{{ lat }}</a-descriptions-item>
<a-descriptions-item label="下发时间">{{ synchronoustime }}</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="图斑照片">
<div class="image-div">
<a-image-preview-group
:preview="{
getContainer:getContainer,
getContainer: getContainer,
}"
>
>
<template v-for="(imageItem, imageIndex) in casepicList" :key="imageIndex">
<a-image
v-if="imageItem"
@ -71,13 +85,17 @@
</a-image-preview-group>
</div>
</a-descriptions-item>
<a-descriptions-item label="接收人">{{ jieshou_people }}</a-descriptions-item>
<a-descriptions-item label="接收时间">{{ jieshou_time?.split('.')[0] }}</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(typename)"
v-if="!['建设用地', '推堆土'].includes(props.showInfoData.typename)"
tab="线索填报"
force-render
>
@ -91,28 +109,28 @@
}"
>
<a-descriptions-item label="判定结果">{{
getLabel('is_illegal', is_illegal)
getLabel('is_illegal', props.showInfoData.is_illegal)
}}</a-descriptions-item>
<a-descriptions-item v-if="is_illegal == 1" label="项目名称">{{
xiangmumc
<a-descriptions-item v-if="props.showInfoData.is_illegal == 1" label="项目名称">{{
props.showInfoData.xiangmumc
}}</a-descriptions-item>
<a-descriptions-item v-if="is_illegal == 1" label="项目主体">{{
xiangmuzhuti
<a-descriptions-item v-if="props.showInfoData.is_illegal == 1" label="项目主体">{{
props.showInfoData.xiangmuzhuti
}}</a-descriptions-item>
<a-descriptions-item v-if="is_illegal == 1" label="实际用途">{{
actual_use_to
<a-descriptions-item v-if="props.showInfoData.is_illegal == 1" label="实际用途">{{
props.showInfoData.actual_use_to
}}</a-descriptions-item>
<a-descriptions-item v-if="is_illegal == 1" label="违法类型">{{
getLabel('weifaleixing', weifaleixing)
<a-descriptions-item v-if="props.showInfoData.is_illegal == 1" label="违法类型">{{
getLabel('weifaleixing', props.showInfoData.weifaleixing)
}}</a-descriptions-item>
<a-descriptions-item v-if="is_illegal == 1" label="附件">
<a-image-preview-group :preview="{getContainer,}">
<a-descriptions-item v-if="props.showInfoData.is_illegal == 1" label="附件">
<a-image-preview-group :preview="{ getContainer }">
<template v-for="(item, itemIndex) in fujianList" :key="itemIndex">
<a-image
v-if="showImage(item)"
style="width:100px;height:100px;"
style="width: 100px; height: 100px"
:src="`${VITE_GLOB_INFO_IMAGE_URL}/${item}`"
:preview="{getContainer}"
:preview="{ getContainer }"
></a-image>
<div v-else>
<Icon
@ -126,14 +144,14 @@
</template>
</a-image-preview-group>
</a-descriptions-item>
<a-descriptions-item v-if="is_illegal == 0" label="附件">
<a-image-preview-group :preview="{getContainer,}">
<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;"
style="width: 100px; height: 100px"
:src="`${VITE_GLOB_INFO_IMAGE_URL}/${item}`"
:preview="{getContainer,}"
:preview="{ getContainer }"
></a-image>
<div v-else>
<Icon
@ -147,17 +165,17 @@
</template>
</a-image-preview-group>
</a-descriptions-item>
<a-descriptions-item v-if="is_illegal == 2" label="实际用途">{{
<a-descriptions-item v-if="props.showInfoData.is_illegal == 2" label="实际用途">{{
getLabel('qita_use_to', qita_use_to)
}}</a-descriptions-item>
<a-descriptions-item v-if="is_illegal == 2" label="附件">
<a-image-preview-group :preview="{getContainer,}">
<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;"
style="width: 100px; height: 100px"
:src="`${VITE_GLOB_INFO_IMAGE_URL}/${item}`"
:preview="{getContainer}"
:preview="{ getContainer }"
></a-image>
<div v-else>
<Icon
@ -172,39 +190,47 @@
</a-image-preview-group>
</a-descriptions-item>
<a-descriptions-item label="判定依据说明">{{
pandingyijushuoming
props.showInfoData.pandingyijushuoming
}}</a-descriptions-item>
<a-descriptions-item label="照片">
<div class="image-div">
<a-image-preview-group
:preview="{
getContainer:getContainer,
onVisibleChange:handlerImageChange
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>
<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="填报人">{{ examiner_name }}</a-descriptions-item>
<a-descriptions-item label="填报时间">{{ examine_time }}</a-descriptions-item>
<a-descriptions-item label="填报人">{{
props.showInfoData.examiner_name
}}</a-descriptions-item>
<a-descriptions-item label="填报时间">{{
props.showInfoData.examine_time
}}</a-descriptions-item>
</a-descriptions>
</a-tab-pane>
<a-tab-pane
key="3"
tab="整改情况"
v-if="is_illegal == 1 && weifaleixing == 0 && !['建设用地', '推堆土'].includes(typename)"
v-if="
props.showInfoData.is_illegal == 1 &&
props.showInfoData.weifaleixing == 0 &&
!['建设用地', '推堆土'].includes(props.showInfoData.typename)
"
>
<a-descriptions
:column="2"
@ -216,16 +242,16 @@
}"
>
<a-descriptions-item label="整改措施">{{
getLabel('measure_name', measure_name)
getLabel('measure_name', props.showInfoData.measure_name)
}}</a-descriptions-item>
<a-descriptions-item v-if="measure_name == 0" label="附件">
<a-image-preview-group :preview="{getContainer,}">
<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;"
style="width: 100px; height: 100px"
:src="`${VITE_GLOB_INFO_IMAGE_URL}/${item}`"
:preview="{getContainer,}"
:preview="{ getContainer }"
></a-image>
<div v-else>
<Icon
@ -239,13 +265,13 @@
</template>
</a-image-preview-group>
</a-descriptions-item>
<a-descriptions-item v-if="measure_name == 0" label="照片">
<a-descriptions-item v-if="props.showInfoData.measure_name == 0" label="照片">
<div class="image-div">
<a-image-preview-group
:preview="{
getContainer:getContainer,
getContainer: getContainer,
}"
>
>
<template
v-for="(imageItem, imageIndex) in chaichufugenghoupicList"
:key="imageIndex"
@ -263,14 +289,14 @@
</a-image-preview-group>
</div>
</a-descriptions-item>
<a-descriptions-item v-if="measure_name == 1" label="附件">
<a-image-preview-group :preview="{getContainer,}">
<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;"
style="width: 100px; height: 100px"
:src="`${VITE_GLOB_INFO_IMAGE_URL}/${item}`"
:preview="{getContainer}"
:preview="{ getContainer }"
></a-image>
<div v-else>
<Icon
@ -284,13 +310,13 @@
</template>
</a-image-preview-group>
</a-descriptions-item>
<a-descriptions-item v-if="measure_name == 1" label="照片">
<a-descriptions-item v-if="props.showInfoData.measure_name == 1" label="照片">
<div class="image-div">
<a-image-preview-group
:preview="{
getContainer:getContainer,
getContainer: getContainer,
}"
>
>
<template v-for="(imageItem, imageIndex) in bubanzhaopianList" :key="imageIndex">
<a-image
v-if="imageItem"
@ -305,11 +331,19 @@
</a-image-preview-group>
</div>
</a-descriptions-item>
<a-descriptions-item label="办理人">{{ transactor_name }}</a-descriptions-item>
<a-descriptions-item label="办理时间">{{ transact_time }}</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(typename)" tab="区县审核">
<a-tab-pane
key="4"
v-if="!['建设用地', '推堆土'].includes(props.showInfoData.typename)"
tab="区县审核"
>
<a-descriptions
:column="2"
bordered
@ -319,11 +353,19 @@
'word-break': 'break-all',
}"
>
<a-descriptions-item label="审核人">{{ verifyuser }}</a-descriptions-item>
<a-descriptions-item label="审核时间">{{ verifytime }}</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-tab-pane>
<a-tab-pane key="5" v-if="!['建设用地', '推堆土'].includes(typename)" tab="市局审核">
<a-tab-pane
key="5"
v-if="!['建设用地', '推堆土'].includes(props.showInfoData.typename)"
tab="市局审核"
>
<a-descriptions
:column="2"
bordered
@ -333,15 +375,19 @@
'word-break': 'break-all',
}"
>
<a-descriptions-item label="审核人">{{ hexiaoren }}</a-descriptions-item>
<a-descriptions-item label="审核时间">{{ hexiaotime?.split('.')[0] }}</a-descriptions-item>
<a-descriptions-item v-if="weifaleixing == 0" label="无人机复飞照片">
<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="无人机复飞照片">
<div class="image-div">
<a-image-preview-group
:preview="{
getContainer:getContainer,
getContainer: getContainer,
}"
>
>
<template v-for="(imageItem, imageIndex) in wrjffzhaopianList" :key="imageIndex">
<a-image
v-if="imageItem"
@ -385,167 +431,58 @@
</template>
<script setup lang="ts">
import { defineProps, ref, computed,onBeforeMount } from 'vue';
import { defineProps, ref, computed, onBeforeMount, watch } from 'vue';
import MapboxMap from '@/components/MapboxMaps/MapComponent.vue';
import { getConfig } from '@/api/sys/layerManagement';
import { getGeom } from '@/api/sys/layerManagement';
import {getLoadCaseImgList} from '@/api/tiankongdi'
import { getLoadCaseImgList } from '@/api/tiankongdi';
import { useMessage } from '@/hooks/web/useMessage';
import axios from 'axios';
const { createMessage } = useMessage();
import Icon from '@/components/Icon/Icon.vue';
import { getAppEnvConfig } from '@/utils/env';
const { VITE_GLOB_INFO_IMAGE_URL } = getAppEnvConfig();
import {
mapTypeOptions,
illegalTypeOptions,
measureOptions,
mapStatusOptions,
markTypeOptions,
illegalTypeList,
resultOptions,
qitaUseTOOptions,
} from '@/utils/global';
console.log('');
const { createMessage } = useMessage();
const { VITE_GLOB_INFO_IMAGE_URL } = getAppEnvConfig();
const MapboxComponent = ref();
const mapConfig = ref({});
getConfig({ code: 'mapsetting' }).then((res) => {
mapConfig.value = JSON.parse(res.codeValue);
});
watch(
() => props.showInfoData,
() => {
getConfig({ code: 'mapsetting' }).then((res) => {
mapConfig.value = JSON.parse(res.codeValue);
});
changeTask();
},
);
const props = defineProps(['showInfoData']);
const activeKey = ref('1');
const geomsList = ref();
const {
id,
case_no,
case_name,
case_description,
start_time,
end_time,
address,
lng,
lat,
typeid,
typename,
handle_status_id,
handle_status_name,
case_status_i,
case_status_name,
createtime,
createuser,
drone_no,
deal_userid,
deal_username,
createusername,
is_delete,
countyid,
countyname,
streetid,
streetname,
communityid,
communityname,
remark,
is_closed,
area,
is_illegal,
close_user,
close_time,
identification_user,
identification_time,
is_intact,
close_userid,
identification_userid,
verifyuserid,
verifyuser,
verifytime,
is_improve,
improve_reason,
is_dispense,
dispense_userid,
dispense_time,
dispense_username,
verifystatus,
verifystatusname,
is_checked,
deal_time,
is_drawback,
examiner_id,
examiner_name,
examine_time,
measure_name,
casepic,
opinion,
result,
result_name,
opinion_name,
handletime,
handleuser,
handleusername,
is_assist,
measure_name_deal,
qita_use_to,
illegal_contact,
illegal_shenfenzhenghao,
investigation_type,
investigation_result,
registr_number,
is_build_complete,
actual_use_to,
transactor_id,
transactor_name,
transact_time,
geomid,
nongyongdi_area,
gengdi_area,
yongjiujibennongtian_area,
zhongdianquyu_area,
shengtaibaohuhongxian_area,
guotukongjianguihua_area,
fujian,
hefafujian,
qitafujian,
jieshou_people,
jieshou_time,
pandingyijushuoming,
xiangmumc,
xiangmuzhuti,
weifaleixing,
yanshoubiao,
zhenggaifujian,
chaichufugenghoupic,
bubanzhaopian,
is_jieshou,
anjianzhaopian,
hexiaoren,
hexiaotime,
wrjffzhaopian,
xchczhaopian,
synchronoustime,
} = props.showInfoData;
const imageList = ref([])
async function getCaseImgList(){
imageList.value = await getLoadCaseImgList({caseid:id, category:'非法采矿卫片下发'});
const imageList = ref([]);
async function getCaseImgList() {
imageList.value = await getLoadCaseImgList({
caseid: props.showInfoData.id,
category: '非法采矿卫片下发',
});
//
let zhengshiImageList = [];
imageList.value?.forEach((item,index)=>{
let obj = anjianzhaopianList.value?.find((it,idx)=>{
imageList.value?.forEach((item, index) => {
let obj = anjianzhaopianList.value?.find((it, idx) => {
return item.filePath == it;
})
if(obj){
});
if (obj) {
zhengshiImageList.push(imageList.value[index]);
}
})
});
// console.log("imageList",imageList.value);
// console.log("anjianzhaopianList",anjianzhaopianList.value);
@ -554,82 +491,76 @@
MapboxComponent.value.handlerLoadPictureAzimuth(zhengshiImageList);
}
function handlerPreviewImage(index,url){
function handlerPreviewImage(index, url) {
const regex = /([^/\\]+)(?=\.[^/\\]*$|$)/;
const match = url.match(regex);
if (match) {
MapboxComponent.value.handlerCurrentImageChange(match[1]);
}
}
const isInitImageLisener = ref<Boolean>(false);
//
function handlerImageChange(e):void{
if(e && !isInitImageLisener.value){
setTimeout(function(){
function handlerImageChange(e): void {
if (e && !isInitImageLisener.value) {
setTimeout(function () {
const targetNode = document.getElementsByClassName('ant-image-preview-img');
//
const observer = new MutationObserver((mutationsList) => {
for (const mutation of mutationsList) {
if (mutation.type === 'attributes') {
if(targetNode[0].getAttribute(mutation.attributeName).match("http")){
handlerPreviewImage(0,targetNode[0].getAttribute(mutation.attributeName))
}
}
for (const mutation of mutationsList) {
if (mutation.type === 'attributes') {
if (targetNode[0].getAttribute(mutation.attributeName).match('http')) {
handlerPreviewImage(0, targetNode[0].getAttribute(mutation.attributeName));
}
}
}
});
//
const config = { attributes: true };
//
observer.observe(targetNode[0], config);
isInitImageLisener.value = true;
},250)
}, 250);
}
}
onBeforeMount(()=>{
})
onBeforeMount(() => {});
const anjianzhaopianList = computed(() => {
getCaseImgList();
return anjianzhaopian ? anjianzhaopian.split(',') : [];
return props.showInfoData.anjianzhaopian ? props.showInfoData.anjianzhaopian.split(',') : [];
});
const casepicList = computed(() => {
return casepic ? casepic.split(',') : [];
return props.showInfoData.casepic ? props.showInfoData.casepic.split(',') : [];
});
const chaichufugenghoupicList = computed(() => {
return chaichufugenghoupic ? chaichufugenghoupic.split(',') : [];
return props.showInfoData.chaichufugenghoupic
? props.showInfoData.chaichufugenghoupic.split(',')
: [];
});
const bubanzhaopianList = computed(() => {
return bubanzhaopian ? bubanzhaopian.split(',') : [];
return props.showInfoData.bubanzhaopian ? props.showInfoData.bubanzhaopian.split(',') : [];
});
const fujianList = computed(() => {
return fujian ? fujian.split(',') : [];
return props.showInfoData.fujian ? props.showInfoData.fujian.split(',') : [];
});
const hefafujianList = computed(() => {
return hefafujian ? hefafujian.split(',') : [];
return props.showInfoData.hefafujian ? props.showInfoData.hefafujian.split(',') : [];
});
const qitafujianList = computed(() => {
return qitafujian ? qitafujian.split(',') : [];
return props.showInfoData.qitafujian ? props.showInfoData.qitafujian.split(',') : [];
});
const zhenggaifujianList = computed(() => {
return zhenggaifujian ? zhenggaifujian.split(',') : [];
return props.showInfoData.zhenggaifujian ? props.showInfoData.zhenggaifujian.split(',') : [];
});
const yanshoubiaoList = computed(() => {
return yanshoubiao ? yanshoubiao.split(',') : [];
return props.showInfoData.yanshoubiao ? props.showInfoData.yanshoubiao.split(',') : [];
});
const wrjffzhaopianList = computed(() => {
return wrjffzhaopian ? wrjffzhaopian.split(',') : [];
return props.showInfoData.wrjffzhaopian ? props.showInfoData.wrjffzhaopian.split(',') : [];
});
const xchczhaopianList = computed(() => {
return xchczhaopian ? xchczhaopian.split(',') : [];
return props.showInfoData.xchczhaopian ? props.showInfoData.xchczhaopian.split(',') : [];
});
function onMapboxLoad() {
@ -672,8 +603,6 @@
key: null,
};
if (props.showInfoData.geomid) {
getGeom(getGeomPrams).then((res) => {
let geoms = [];
if (res) {
@ -699,27 +628,26 @@
}
}
const downLoadFile = (url) => {
if(url.indexOf('.pdf') !== -1){
if (url.indexOf('.pdf') !== -1) {
axios({
method: 'get',
url: `${VITE_GLOB_INFO_IMAGE_URL}/${url}`,
responseType: 'blob',
headers: {
'Content-Disposition': 'inline',
}
},
})
.then(response => {
let blob = new Blob([response.data], {type: 'application/pdf'});
let url = window.URL.createObjectURL(blob)
window.open(url);
})
.catch(error => {
console.error(error);
});
}else{
window.open(`${VITE_GLOB_INFO_IMAGE_URL}/${url}`, '_blank');
.then((response) => {
let blob = new Blob([response.data], { type: 'application/pdf' });
let url = window.URL.createObjectURL(blob);
window.open(url);
})
.catch((error) => {
console.error(error);
});
} else {
window.open(`${VITE_GLOB_INFO_IMAGE_URL}/${url}`, '_blank');
}
};
const getContainer = () => {
return document.getElementById('info-container');
@ -739,12 +667,12 @@
}
};
const showImage = (url) => {
if(url.indexOf('.png') !== -1 || url.indexOf('.jpg') !== -1 || url.indexOf('.jpeg') !== -1 ){
return true
}else{
return false
if (url.indexOf('.png') !== -1 || url.indexOf('.jpg') !== -1 || url.indexOf('.jpeg') !== -1) {
return true;
} else {
return false;
}
}
};
</script>
<style lang="scss" scoped>
@ -772,14 +700,14 @@
height: calc(100vh - 100px);
margin-right: 20px;
}
:deep(.ant-image){
:deep(.ant-image) {
margin-right: 10px;
margin-bottom: 10px;
}
:deep(.ant-image-preview-switch-left){
:deep(.ant-image-preview-switch-left) {
position: absolute;
}
:deep(.ant-image-preview-switch-right){
:deep(.ant-image-preview-switch-right) {
position: absolute;
}
.info-container {
@ -799,14 +727,14 @@
position: absolute;
top: 0;
width: 100%;
.ant-image-preview-operations-operation{
.ant-image-preview-operations-operation {
// flex:1;
}
}
.ant-image-preview-operations-operation:nth-last-child(1){
.ant-image-preview-operations-operation:nth-last-child(1) {
display: none;
}
.ant-image-preview-operations-operation:nth-last-child(2){
}
.ant-image-preview-operations-operation:nth-last-child(2) {
display: none;
}
}

View File

@ -22,41 +22,55 @@
'word-break': 'break-all',
}"
>
<a-descriptions-item label="图斑编号">{{ case_no }}</a-descriptions-item>
<a-descriptions-item label="图斑类型">{{ typename }}</a-descriptions-item>
<a-descriptions-item label="县区">{{ countyname }}</a-descriptions-item>
<a-descriptions-item label="乡镇">{{ streetname }}</a-descriptions-item>
<a-descriptions-item label="社区/村">{{ communityname }}</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(area)
dataProcessing(props.showInfoData.area)
}}</a-descriptions-item>
<a-descriptions-item label="农用地面积(亩)">{{
dataProcessing(nongyongdi_area)
dataProcessing(props.showInfoData.nongyongdi_area)
}}</a-descriptions-item>
<a-descriptions-item label="耕地面积(亩)">{{
dataProcessing(gengdi_area)
dataProcessing(props.showInfoData.gengdi_area)
}}</a-descriptions-item>
<a-descriptions-item label="永农面积(亩)">{{
dataProcessing(yongjiujibennongtian_area)
dataProcessing(props.showInfoData.yongjiujibennongtian_area)
}}</a-descriptions-item>
<!-- <a-descriptions-item label="占重点区域面积(亩)">{{ dataProcessing(zhongdianquyu_area) }}</a-descriptions-item> -->
<a-descriptions-item label="占生态红线面积(亩)">{{
dataProcessing(shengtaibaohuhongxian_area)
dataProcessing(props.showInfoData.shengtaibaohuhongxian_area)
}}</a-descriptions-item>
<!-- <a-descriptions-item label="占空间规划面积(亩)">{{ dataProcessing(guotukongjianguihua_area) }}</a-descriptions-item> -->
<a-descriptions-item label="图斑描述">{{ case_description }}</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="备注">{{ remark }}</a-descriptions-item>
<a-descriptions-item label="经度">{{ lng }}</a-descriptions-item>
<a-descriptions-item label="纬度">{{ lat }}</a-descriptions-item>
<a-descriptions-item label="下发时间">{{ synchronoustime }}</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="图斑照片">
<div class="image-div">
<a-image-preview-group
:preview="{
getContainer:getContainer,
getContainer: getContainer,
}"
>
>
<template v-for="(imageItem, imageIndex) in casepicList" :key="imageIndex">
<a-image
v-if="imageItem"
@ -71,13 +85,17 @@
</a-image-preview-group>
</div>
</a-descriptions-item>
<a-descriptions-item label="接收人">{{ jieshou_people }}</a-descriptions-item>
<a-descriptions-item label="接收时间">{{ jieshou_time?.split('.')[0] }}</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(typename)"
v-if="!['建设用地', '推堆土'].includes(props.showInfoData.typename)"
tab="线索填报"
force-render
>
@ -91,28 +109,28 @@
}"
>
<a-descriptions-item label="判定结果">{{
getLabel('is_illegal', is_illegal)
getLabel('is_illegal', props.showInfoData.is_illegal)
}}</a-descriptions-item>
<a-descriptions-item v-if="is_illegal == 1" label="项目名称">{{
xiangmumc
<a-descriptions-item v-if="props.showInfoData.is_illegal == 1" label="项目名称">{{
props.showInfoData.xiangmumc
}}</a-descriptions-item>
<a-descriptions-item v-if="is_illegal == 1" label="项目主体">{{
xiangmuzhuti
<a-descriptions-item v-if="props.showInfoData.is_illegal == 1" label="项目主体">{{
props.showInfoData.xiangmuzhuti
}}</a-descriptions-item>
<a-descriptions-item v-if="is_illegal == 1" label="实际用途">{{
actual_use_to
<a-descriptions-item v-if="props.showInfoData.is_illegal == 1" label="实际用途">{{
props.showInfoData.actual_use_to
}}</a-descriptions-item>
<a-descriptions-item v-if="is_illegal == 1" label="违法类型">{{
getLabel('weifaleixing', weifaleixing)
<a-descriptions-item v-if="props.showInfoData.is_illegal == 1" label="违法类型">{{
getLabel('weifaleixing', props.showInfoData.weifaleixing)
}}</a-descriptions-item>
<a-descriptions-item v-if="is_illegal == 1" label="附件">
<a-image-preview-group :preview="{getContainer,}">
<a-descriptions-item v-if="props.showInfoData.is_illegal == 1" label="附件">
<a-image-preview-group :preview="{ getContainer }">
<template v-for="(item, itemIndex) in fujianList" :key="itemIndex">
<a-image
v-if="showImage(item)"
style="width:100px;height:100px;"
style="width: 100px; height: 100px"
:src="`${VITE_GLOB_INFO_IMAGE_URL}/${item}`"
:preview="{getContainer}"
:preview="{ getContainer }"
></a-image>
<div v-else>
<Icon
@ -126,14 +144,14 @@
</template>
</a-image-preview-group>
</a-descriptions-item>
<a-descriptions-item v-if="is_illegal == 0" label="附件">
<a-image-preview-group :preview="{getContainer,}">
<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;"
style="width: 100px; height: 100px"
:src="`${VITE_GLOB_INFO_IMAGE_URL}/${item}`"
:preview="{getContainer,}"
:preview="{ getContainer }"
></a-image>
<div v-else>
<Icon
@ -147,17 +165,17 @@
</template>
</a-image-preview-group>
</a-descriptions-item>
<a-descriptions-item v-if="is_illegal == 2" label="实际用途">{{
<a-descriptions-item v-if="props.showInfoData.is_illegal == 2" label="实际用途">{{
getLabel('qita_use_to', qita_use_to)
}}</a-descriptions-item>
<a-descriptions-item v-if="is_illegal == 2" label="附件">
<a-image-preview-group :preview="{getContainer,}">
<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;"
style="width: 100px; height: 100px"
:src="`${VITE_GLOB_INFO_IMAGE_URL}/${item}`"
:preview="{getContainer}"
:preview="{ getContainer }"
></a-image>
<div v-else>
<Icon
@ -172,39 +190,47 @@
</a-image-preview-group>
</a-descriptions-item>
<a-descriptions-item label="判定依据说明">{{
pandingyijushuoming
props.showInfoData.pandingyijushuoming
}}</a-descriptions-item>
<a-descriptions-item label="照片">
<div class="image-div">
<a-image-preview-group
:preview="{
getContainer:getContainer,
onVisibleChange:handlerImageChange
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>
<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="填报人">{{ examiner_name }}</a-descriptions-item>
<a-descriptions-item label="填报时间">{{ examine_time }}</a-descriptions-item>
<a-descriptions-item label="填报人">{{
props.showInfoData.examiner_name
}}</a-descriptions-item>
<a-descriptions-item label="填报时间">{{
props.showInfoData.examine_time
}}</a-descriptions-item>
</a-descriptions>
</a-tab-pane>
<a-tab-pane
key="3"
tab="整改情况"
v-if="is_illegal == 1 && weifaleixing == 0 && !['建设用地', '推堆土'].includes(typename)"
v-if="
props.showInfoData.is_illegal == 1 &&
props.showInfoData.weifaleixing == 0 &&
!['建设用地', '推堆土'].includes(props.showInfoData.typename)
"
>
<a-descriptions
:column="2"
@ -216,16 +242,16 @@
}"
>
<a-descriptions-item label="整改措施">{{
getLabel('measure_name', measure_name)
getLabel('measure_name', props.showInfoData.measure_name)
}}</a-descriptions-item>
<a-descriptions-item v-if="measure_name == 0" label="附件">
<a-image-preview-group :preview="{getContainer,}">
<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;"
style="width: 100px; height: 100px"
:src="`${VITE_GLOB_INFO_IMAGE_URL}/${item}`"
:preview="{getContainer,}"
:preview="{ getContainer }"
></a-image>
<div v-else>
<Icon
@ -239,14 +265,14 @@
</template>
</a-image-preview-group>
</a-descriptions-item>
<a-descriptions-item v-if="measure_name == 0" label="照片">
<a-descriptions-item v-if="props.showInfoData.measure_name == 0" label="照片">
<div class="image-div">
<a-image-preview-group
:preview="{
getContainer:getContainer,
onVisibleChange:handlerImageChange
getContainer: getContainer,
onVisibleChange: handlerImageChange,
}"
>
>
<template
v-for="(imageItem, imageIndex) in chaichufugenghoupicList"
:key="imageIndex"
@ -255,7 +281,7 @@
v-if="imageItem"
width="100px"
height="100px"
@click="handlerPreviewImage(imageIndex,imageItem)"
@click="handlerPreviewImage(imageIndex, imageItem)"
:src="`${VITE_GLOB_INFO_IMAGE_URL}/${imageItem}`"
:preview="{
getContainer,
@ -265,14 +291,14 @@
</a-image-preview-group>
</div>
</a-descriptions-item>
<a-descriptions-item v-if="measure_name == 1" label="附件">
<a-image-preview-group :preview="{getContainer,}">
<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;"
style="width: 100px; height: 100px"
:src="`${VITE_GLOB_INFO_IMAGE_URL}/${item}`"
:preview="{getContainer}"
:preview="{ getContainer }"
></a-image>
<div v-else>
<Icon
@ -286,20 +312,20 @@
</template>
</a-image-preview-group>
</a-descriptions-item>
<a-descriptions-item v-if="measure_name == 1" label="照片">
<a-descriptions-item v-if="props.showInfoData.measure_name == 1" label="照片">
<div class="image-div">
<a-image-preview-group
:preview="{
getContainer:getContainer,
onVisibleChange:handlerImageChange
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)"
@click="handlerPreviewImage(imageIndex, imageItem)"
:src="`${VITE_GLOB_INFO_IMAGE_URL}/${imageItem}`"
:preview="{
getContainer,
@ -309,11 +335,19 @@
</a-image-preview-group>
</div>
</a-descriptions-item>
<a-descriptions-item label="办理人">{{ transactor_name }}</a-descriptions-item>
<a-descriptions-item label="办理时间">{{ transact_time }}</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(typename)" tab="审核情况">
<a-tab-pane
key="4"
v-if="!['建设用地', '推堆土'].includes(props.showInfoData.typename)"
tab="审核情况"
>
<a-divider>区县审核</a-divider>
<a-descriptions
:column="2"
@ -324,10 +358,18 @@
'word-break': 'break-all',
}"
>
<a-descriptions-item label="审核结果">{{ xjshenhejieguo }}</a-descriptions-item>
<a-descriptions-item label="审核意见">{{ xianjiyijian }}</a-descriptions-item>
<a-descriptions-item label="审核人">{{ verifyuser }}</a-descriptions-item>
<a-descriptions-item label="审核时间">{{ verifytime }}</a-descriptions-item>
<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
@ -339,17 +381,29 @@
'word-break': 'break-all',
}"
>
<a-descriptions-item label="审核结果">{{ sjshenhejieguo }}</a-descriptions-item>
<a-descriptions-item label="审核意见">{{ shijiyijian }}</a-descriptions-item>
<a-descriptions-item label="审核人">{{ hexiaoren }}</a-descriptions-item>
<a-descriptions-item label="审核时间">{{ hexiaotime?.split('.')[0] }}</a-descriptions-item>
<a-descriptions-item v-if="weifaleixing == 0" label="无人机复飞照片" :span="2">
<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"
>
<div class="image-div">
<a-image-preview-group
:preview="{
getContainer:getContainer,
getContainer: getContainer,
}"
>
>
<template v-for="(imageItem, imageIndex) in wrjffzhaopianList" :key="imageIndex">
<a-image
v-if="imageItem"
@ -393,158 +447,48 @@
</template>
<script setup lang="ts">
import { defineProps, ref, computed,onBeforeMount } from 'vue';
import { defineProps, ref, computed, onBeforeMount, watch } from 'vue';
import MapboxMap from '@/components/MapboxMaps/MapComponent.vue';
import { getConfig } from '@/api/sys/layerManagement';
import { getGeom } from '@/api/sys/layerManagement';
import {getLoadCaseImgList} from '@/api/inspectionaudit'
import { getLoadCaseImgList } from '@/api/inspectionaudit';
import { useMessage } from '@/hooks/web/useMessage';
import axios from 'axios';
const { createMessage } = useMessage();
import Icon from '@/components/Icon/Icon.vue';
import { getAppEnvConfig } from '@/utils/env';
const { VITE_GLOB_INFO_IMAGE_URL } = getAppEnvConfig();
import {
mapTypeOptions,
illegalTypeOptions,
measureOptions,
mapStatusOptions,
markTypeOptions,
illegalTypeList,
resultOptions,
qitaUseTOOptions,
} from '@/utils/global';
console.log('');
const { createMessage } = useMessage();
const { VITE_GLOB_INFO_IMAGE_URL } = getAppEnvConfig();
const MapboxComponent = ref();
const mapConfig = ref({});
getConfig({ code: 'mapsetting' }).then((res) => {
mapConfig.value = JSON.parse(res.codeValue);
});
watch(
() => props.showInfoData,
() => {
getConfig({ code: 'mapsetting' }).then((res) => {
mapConfig.value = JSON.parse(res.codeValue);
});
changeTask();
},
);
const props = defineProps(['showInfoData']);
const activeKey = ref('1');
const geomsList = ref();
const {
id,
case_no,
case_name,
case_description,
start_time,
end_time,
address,
lng,
lat,
typeid,
typename,
handle_status_id,
handle_status_name,
case_status_i,
case_status_name,
createtime,
createuser,
drone_no,
deal_userid,
deal_username,
createusername,
is_delete,
countyid,
countyname,
streetid,
streetname,
communityid,
communityname,
remark,
is_closed,
area,
is_illegal,
close_user,
close_time,
identification_user,
identification_time,
is_intact,
close_userid,
identification_userid,
verifyuserid,
verifyuser,
verifytime,
is_improve,
improve_reason,
is_dispense,
dispense_userid,
dispense_time,
dispense_username,
verifystatus,
verifystatusname,
is_checked,
deal_time,
is_drawback,
examiner_id,
examiner_name,
examine_time,
measure_name,
casepic,
opinion,
result,
result_name,
opinion_name,
handletime,
handleuser,
handleusername,
is_assist,
measure_name_deal,
qita_use_to,
illegal_contact,
illegal_shenfenzhenghao,
investigation_type,
investigation_result,
registr_number,
is_build_complete,
actual_use_to,
transactor_id,
transactor_name,
transact_time,
geomid,
nongyongdi_area,
gengdi_area,
yongjiujibennongtian_area,
zhongdianquyu_area,
shengtaibaohuhongxian_area,
guotukongjianguihua_area,
fujian,
hefafujian,
qitafujian,
jieshou_people,
jieshou_time,
pandingyijushuoming,
xiangmumc,
xiangmuzhuti,
weifaleixing,
yanshoubiao,
zhenggaifujian,
chaichufugenghoupic,
bubanzhaopian,
is_jieshou,
anjianzhaopian,
hexiaoren,
hexiaotime,
wrjffzhaopian,
xchczhaopian,
synchronoustime,
xjshenhejieguo,
xianjiyijian,
sjshenhejieguo,
shijiyijian,
} = props.showInfoData;
const imageList = ref([]);
async function getCaseImgList(){
imageList.value = await getLoadCaseImgList({caseid:id,category:'巡察审计'});
async function getCaseImgList() {
imageList.value = await getLoadCaseImgList({
caseid: props.showInfoData.id,
category: '巡察审计',
});
MapboxComponent.value.handlerLoadPictureAzimuth(imageList.value);
//
@ -557,19 +501,17 @@
// zhengshiImageList.push(imageList.value[index]);
// }
// })
}
function handlerDealFileName(path){
function handlerDealFileName(path) {
const regex = /([^/\\]+)(?=\.[^/\\]*$|$)/;
const matchStr = path.match(regex);
if(matchStr?.length){
if (matchStr?.length) {
return matchStr[0];
}
}
function handlerPreviewImage(index,url){
function handlerPreviewImage(index, url) {
const regex = /([^/\\]+)(?=\.[^/\\]*$|$)/;
const match = url.match(regex);
if (match) {
@ -579,70 +521,66 @@
const isInitImageLisener = ref<Boolean>(false);
//
function handlerImageChange(e):void{
if(e && !isInitImageLisener.value){
setTimeout(function(){
function handlerImageChange(e): void {
if (e && !isInitImageLisener.value) {
setTimeout(function () {
const targetNode = document.getElementsByClassName('ant-image-preview-img');
//
const observer = new MutationObserver((mutationsList) => {
for (const mutation of mutationsList) {
if (mutation.type === 'attributes') {
if(targetNode[0].getAttribute(mutation.attributeName).match("http")){
handlerPreviewImage(0,targetNode[0].getAttribute(mutation.attributeName))
}
}
for (const mutation of mutationsList) {
if (mutation.type === 'attributes') {
if (targetNode[0].getAttribute(mutation.attributeName).match('http')) {
handlerPreviewImage(0, targetNode[0].getAttribute(mutation.attributeName));
}
}
}
});
//
const config = { attributes: true };
//
observer.observe(targetNode[0], config);
isInitImageLisener.value = true;
},250)
}, 250);
}
}
onBeforeMount(()=>{
})
onBeforeMount(() => {});
const anjianzhaopianList = computed(() => {
getCaseImgList();
return anjianzhaopian ? anjianzhaopian.split(',') : [];
return props.showInfoData.anjianzhaopian ? props.showInfoData.anjianzhaopian.split(',') : [];
});
const casepicList = computed(() => {
return casepic ? casepic.split(',') : [];
return props.showInfoData.casepic ? props.showInfoData.casepic.split(',') : [];
});
const chaichufugenghoupicList = computed(() => {
return chaichufugenghoupic ? chaichufugenghoupic.split(',') : [];
return props.showInfoData.chaichufugenghoupic
? props.showInfoData.chaichufugenghoupic.split(',')
: [];
});
const bubanzhaopianList = computed(() => {
return bubanzhaopian ? bubanzhaopian.split(',') : [];
return props.showInfoData.bubanzhaopian ? props.showInfoData.bubanzhaopian.split(',') : [];
});
const fujianList = computed(() => {
return fujian ? fujian.split(',') : [];
return props.showInfoData.fujian ? props.showInfoData.fujian.split(',') : [];
});
const hefafujianList = computed(() => {
return hefafujian ? hefafujian.split(',') : [];
return props.showInfoData.hefafujian ? props.showInfoData.hefafujian.split(',') : [];
});
const qitafujianList = computed(() => {
return qitafujian ? qitafujian.split(',') : [];
return props.showInfoData.qitafujian ? props.showInfoData.qitafujian.split(',') : [];
});
const zhenggaifujianList = computed(() => {
return zhenggaifujian ? zhenggaifujian.split(',') : [];
return props.showInfoData.zhenggaifujian ? props.showInfoData.zhenggaifujian.split(',') : [];
});
const yanshoubiaoList = computed(() => {
return yanshoubiao ? yanshoubiao.split(',') : [];
return props.showInfoData.yanshoubiao ? props.showInfoData.yanshoubiao.split(',') : [];
});
const wrjffzhaopianList = computed(() => {
return wrjffzhaopian ? wrjffzhaopian.split(',') : [];
});
const xchczhaopianList = computed(() => {
return xchczhaopian ? xchczhaopian.split(',') : [];
return props.showInfoData.xchczhaopian ? props.showInfoData.xchczhaopian.split(',') : [];
});
function onMapboxLoad() {
changeTask();
@ -684,8 +622,6 @@
key: null,
};
if (props.showInfoData.geomid) {
getGeom(getGeomPrams).then((res) => {
let geoms = [];
if (res) {
@ -711,27 +647,26 @@
}
}
const downLoadFile = (url) => {
if(url.indexOf('.pdf') !== -1){
if (url.indexOf('.pdf') !== -1) {
axios({
method: 'get',
url: `${VITE_GLOB_INFO_IMAGE_URL}/${url}`,
responseType: 'blob',
headers: {
'Content-Disposition': 'inline',
}
},
})
.then(response => {
let blob = new Blob([response.data], {type: 'application/pdf'});
let url = window.URL.createObjectURL(blob)
window.open(url);
})
.catch(error => {
console.error(error);
});
}else{
window.open(`${VITE_GLOB_INFO_IMAGE_URL}/${url}`, '_blank');
.then((response) => {
let blob = new Blob([response.data], { type: 'application/pdf' });
let url = window.URL.createObjectURL(blob);
window.open(url);
})
.catch((error) => {
console.error(error);
});
} else {
window.open(`${VITE_GLOB_INFO_IMAGE_URL}/${url}`, '_blank');
}
};
const getContainer = () => {
return document.getElementById('info-container');
@ -751,12 +686,12 @@
}
};
const showImage = (url) => {
if(url.indexOf('.png') !== -1 || url.indexOf('.jpg') !== -1 || url.indexOf('.jpeg') !== -1 ){
return true
}else{
return false
if (url.indexOf('.png') !== -1 || url.indexOf('.jpg') !== -1 || url.indexOf('.jpeg') !== -1) {
return true;
} else {
return false;
}
}
};
</script>
<style lang="scss" scoped>
@ -784,14 +719,14 @@
height: calc(100vh - 100px);
margin-right: 20px;
}
:deep(.ant-image){
:deep(.ant-image) {
margin-right: 10px;
margin-bottom: 10px;
}
:deep(.ant-image-preview-switch-left){
:deep(.ant-image-preview-switch-left) {
position: absolute;
}
:deep(.ant-image-preview-switch-right){
:deep(.ant-image-preview-switch-right) {
position: absolute;
}
.info-container {
@ -811,14 +746,14 @@
position: absolute;
top: 0;
width: 100%;
.ant-image-preview-operations-operation{
.ant-image-preview-operations-operation {
// flex:1;
}
}
.ant-image-preview-operations-operation:nth-last-child(1){
.ant-image-preview-operations-operation:nth-last-child(1) {
display: none;
}
.ant-image-preview-operations-operation:nth-last-child(2){
}
.ant-image-preview-operations-operation:nth-last-child(2) {
display: none;
}
}

View File

@ -22,38 +22,52 @@
'word-break': 'break-all',
}"
>
<a-descriptions-item label="图斑编号">{{ case_no }}</a-descriptions-item>
<a-descriptions-item label="图斑类型">{{ typename }}</a-descriptions-item>
<a-descriptions-item label="县区">{{ countyname }}</a-descriptions-item>
<a-descriptions-item label="乡镇">{{ streetname }}</a-descriptions-item>
<a-descriptions-item label="社区/村">{{ communityname }}</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(area)
dataProcessing(props.showInfoData.area)
}}</a-descriptions-item>
<a-descriptions-item label="农用地面积(亩)">{{
dataProcessing(nongyongdi_area)
dataProcessing(props.showInfoData.nongyongdi_area)
}}</a-descriptions-item>
<a-descriptions-item label="耕地面积(亩)">{{
dataProcessing(gengdi_area)
dataProcessing(props.showInfoData.gengdi_area)
}}</a-descriptions-item>
<a-descriptions-item label="永农面积(亩)">{{
dataProcessing(yongjiujibennongtian_area)
dataProcessing(props.showInfoData.yongjiujibennongtian_area)
}}</a-descriptions-item>
<a-descriptions-item label="占生态红线面积(亩)">{{
dataProcessing(shengtaibaohuhongxian_area)
dataProcessing(props.showInfoData.shengtaibaohuhongxian_area)
}}</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="图斑描述">{{ case_description }}</a-descriptions-item>
<a-descriptions-item label="备注">{{ remark }}</a-descriptions-item>
<a-descriptions-item label="经度">{{ lng }}</a-descriptions-item>
<a-descriptions-item label="纬度">{{ lat }}</a-descriptions-item>
<a-descriptions-item label="下发时间">{{ synchronoustime }}</a-descriptions-item>
<a-descriptions-item label="图斑照片">
<div class="image-div">
<a-image-preview-group
:preview="{
getContainer:getContainer,
getContainer: getContainer,
}"
>
>
<template v-for="(imageItem, imageIndex) in casepicList" :key="imageIndex">
<a-image
v-if="imageItem"
@ -72,7 +86,7 @@
</a-tab-pane>
<a-tab-pane
key="2"
v-if="!['建设用地', '推堆土'].includes(typename)"
v-if="!['建设用地', '推堆土'].includes(props.showInfoData.typename)"
tab="线索填报"
force-render
>
@ -86,34 +100,34 @@
}"
>
<a-descriptions-item label="判定结果">{{
getLabel('is_illegal', is_illegal)
getLabel('is_illegal', props.showInfoData.is_illegal)
}}</a-descriptions-item>
<a-descriptions-item v-if="is_illegal == 1" label="项目名称">{{
xiangmumc
<a-descriptions-item v-if="props.showInfoData.is_illegal == 1" label="项目名称">{{
props.showInfoData.xiangmumc
}}</a-descriptions-item>
<a-descriptions-item v-if="is_illegal == 1" label="项目主体">{{
xiangmuzhuti
<a-descriptions-item v-if="props.showInfoData.is_illegal == 1" label="项目主体">{{
props.showInfoData.xiangmuzhuti
}}</a-descriptions-item>
<a-descriptions-item v-if="is_illegal == 1" label="实际用途">{{
actual_use_to
<a-descriptions-item v-if="props.showInfoData.is_illegal == 1" label="实际用途">{{
props.showInfoData.actual_use_to
}}</a-descriptions-item>
<a-descriptions-item v-if="is_illegal == 1" label="整改措施">{{
getLabel('measure_name', measure_name)
<a-descriptions-item v-if="props.showInfoData.is_illegal == 1" label="整改措施">{{
getLabel('measure_name', props.showInfoData.measure_name)
}}</a-descriptions-item>
<a-descriptions-item v-if="is_illegal == 1" label="是否对人处理">{{
getLabel('is_chuli', is_chuli)
<a-descriptions-item v-if="props.showInfoData.is_illegal == 1" label="是否对人处理">{{
getLabel('is_chuli', props.showInfoData.is_chuli)
}}</a-descriptions-item>
<a-descriptions-item v-if="is_illegal == 1" label="处理情况说明">{{
chuliqingkuangsm
<a-descriptions-item v-if="props.showInfoData.is_illegal == 1" label="处理情况说明">{{
props.showInfoData.chuliqingkuangsm
}}</a-descriptions-item>
<a-descriptions-item v-if="is_illegal == 1" label="附件">
<a-image-preview-group :preview="{getContainer,}">
<a-descriptions-item v-if="props.showInfoData.is_illegal == 1" label="附件">
<a-image-preview-group :preview="{ getContainer }">
<template v-for="(item, itemIndex) in fujianList" :key="itemIndex">
<a-image
v-if="showImage(item)"
style="width:100px;height:100px;"
style="width: 100px; height: 100px"
:src="`${VITE_GLOB_INFO_IMAGE_URL}/${item}`"
:preview="{getContainer}"
:preview="{ getContainer }"
></a-image>
<div v-else>
<Icon
@ -127,14 +141,14 @@
</template>
</a-image-preview-group>
</a-descriptions-item>
<a-descriptions-item v-if="is_illegal == 0" label="附件">
<a-image-preview-group :preview="{getContainer,}">
<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;"
style="width: 100px; height: 100px"
:src="`${VITE_GLOB_INFO_IMAGE_URL}/${item}`"
:preview="{getContainer,}"
:preview="{ getContainer }"
></a-image>
<div v-else>
<Icon
@ -148,20 +162,22 @@
</template>
</a-image-preview-group>
</a-descriptions-item>
<a-descriptions-item v-if="is_illegal == 2" label="实际用途">{{
getLabel('qita_use_to', qita_use_to)
<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="is_illegal == 2" label="实际用途其他说明">{{
qita_shuoming
}}</a-descriptions-item>
<a-descriptions-item v-if="is_illegal == 2" label="附件">
<a-image-preview-group :preview="{getContainer,}">
<a-descriptions-item
v-if="props.showInfoData.is_illegal == 2"
label="实际用途其他说明"
>{{ props.showInfoData.qita_shuoming }}</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;"
style="width: 100px; height: 100px"
:src="`${VITE_GLOB_INFO_IMAGE_URL}/${item}`"
:preview="{getContainer}"
:preview="{ getContainer }"
></a-image>
<div v-else>
<Icon
@ -176,36 +192,44 @@
</a-image-preview-group>
</a-descriptions-item>
<a-descriptions-item label="判定依据说明">{{
pandingyijushuoming
props.showInfoData.pandingyijushuoming
}}</a-descriptions-item>
<a-descriptions-item label="照片">
<div class="image-div">
<a-image-preview-group
:preview="{
getContainer:getContainer,
onVisibleChange:handlerImageChange
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>
<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="填报人">{{ examiner_name }}</a-descriptions-item>
<a-descriptions-item label="填报时间">{{ examine_time }}</a-descriptions-item>
<a-descriptions-item label="填报人">{{
props.showInfoData.examiner_name
}}</a-descriptions-item>
<a-descriptions-item label="填报时间">{{
props.showInfoData.examine_time
}}</a-descriptions-item>
</a-descriptions>
</a-tab-pane>
<a-tab-pane key="4" v-if="!['建设用地', '推堆土'].includes(typename)" tab="审核情况">
<a-tab-pane
key="4"
v-if="!['建设用地', '推堆土'].includes(props.showInfoData.typename)"
tab="审核情况"
>
<a-divider>区县审核</a-divider>
<a-descriptions
:column="2"
@ -216,10 +240,18 @@
'word-break': 'break-all',
}"
>
<a-descriptions-item label="审核结果">{{ xjshenhejieguo }}</a-descriptions-item>
<a-descriptions-item label="审核意见">{{ xianjiyijian }}</a-descriptions-item>
<a-descriptions-item label="审核人">{{ verifyuser }}</a-descriptions-item>
<a-descriptions-item label="审核时间">{{ verifytime }}</a-descriptions-item>
<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
@ -231,10 +263,18 @@
'word-break': 'break-all',
}"
>
<a-descriptions-item label="审核结果">{{ sjshenhejieguo }}</a-descriptions-item>
<a-descriptions-item label="审核意见">{{ shijiyijian }}</a-descriptions-item>
<a-descriptions-item label="审核人">{{ hexiaoren }}</a-descriptions-item>
<a-descriptions-item label="审核时间">{{ hexiaotime?.split('.')[0] }}</a-descriptions-item>
<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="weifaleixing == 0" label="无人机复飞照片" :span="2">
<div class="image-div">
<a-image-preview-group
@ -285,162 +325,48 @@
</template>
<script setup lang="ts">
import { defineProps, ref, computed,onBeforeMount } from 'vue';
import { defineProps, ref, computed, onBeforeMount, watch } from 'vue';
import MapboxMap from '@/components/MapboxMaps/MapComponent.vue';
import { getConfig } from '@/api/sys/layerManagement';
import { getGeom } from '@/api/sys/layerManagement';
import {getLoadCaseImgList} from '@/api/keyproblem/keyissuesII'
import { getLoadCaseImgList } from '@/api/keyproblem/keyissuesII';
import { useMessage } from '@/hooks/web/useMessage';
import axios from 'axios';
const { createMessage } = useMessage();
import Icon from '@/components/Icon/Icon.vue';
import { getAppEnvConfig } from '@/utils/env';
const { VITE_GLOB_INFO_IMAGE_URL } = getAppEnvConfig();
import {
mapTypeOptions,
illegalTypeOptions,
keyIssuesIMeasureOptions,
mapStatusOptions,
markTypeOptions,
illegalTypeList,
resultOptions,
qitaUseTOOptions,
isChuliOptions,
} from '@/utils/global';
console.log('');
const { createMessage } = useMessage();
const { VITE_GLOB_INFO_IMAGE_URL } = getAppEnvConfig();
const MapboxComponent = ref();
const mapConfig = ref({});
getConfig({ code: 'mapsetting' }).then((res) => {
mapConfig.value = JSON.parse(res.codeValue);
});
watch(
() => props.showInfoData,
() => {
getConfig({ code: 'mapsetting' }).then((res) => {
mapConfig.value = JSON.parse(res.codeValue);
});
changeTask();
},
);
const props = defineProps(['showInfoData']);
const activeKey = ref('1');
const geomsList = ref();
const {
id,
case_no,
case_name,
case_description,
start_time,
end_time,
address,
lng,
lat,
typeid,
typename,
handle_status_id,
handle_status_name,
case_status_i,
case_status_name,
createtime,
createuser,
drone_no,
deal_userid,
deal_username,
createusername,
is_delete,
countyid,
countyname,
streetid,
streetname,
communityid,
communityname,
remark,
is_closed,
area,
is_illegal,
close_user,
close_time,
identification_user,
identification_time,
is_intact,
close_userid,
identification_userid,
verifyuserid,
verifyuser,
verifytime,
is_improve,
improve_reason,
is_dispense,
dispense_userid,
dispense_time,
dispense_username,
verifystatus,
verifystatusname,
is_checked,
deal_time,
is_drawback,
examiner_id,
examiner_name,
examine_time,
measure_name,
casepic,
opinion,
result,
result_name,
opinion_name,
handletime,
handleuser,
handleusername,
is_assist,
measure_name_deal,
qita_use_to,
illegal_contact,
illegal_shenfenzhenghao,
investigation_type,
investigation_result,
registr_number,
is_build_complete,
actual_use_to,
transactor_id,
transactor_name,
transact_time,
geomid,
nongyongdi_area,
gengdi_area,
yongjiujibennongtian_area,
zhongdianquyu_area,
shengtaibaohuhongxian_area,
guotukongjianguihua_area,
fujian,
hefafujian,
qitafujian,
jieshou_people,
jieshou_time,
pandingyijushuoming,
xiangmumc,
xiangmuzhuti,
weifaleixing,
yanshoubiao,
zhenggaifujian,
chaichufugenghoupic,
bubanzhaopian,
is_jieshou,
anjianzhaopian,
hexiaoren,
hexiaotime,
wrjffzhaopian,
xchczhaopian,
synchronoustime,
xjshenhejieguo,
xianjiyijian,
sjshenhejieguo,
shijiyijian,
is_chuli,
chuliqingkuangsm,
qita_shuoming,
} = props.showInfoData;
const imageList = ref([]);
async function getCaseImgList(){
imageList.value = await getLoadCaseImgList({caseid:id,category:'重点问题I类'});
async function getCaseImgList() {
imageList.value = await getLoadCaseImgList({
caseid: props.showInfoData.id,
category: '重点问题I类',
});
MapboxComponent.value.handlerLoadPictureAzimuth(imageList.value);
//
@ -453,19 +379,17 @@
// zhengshiImageList.push(imageList.value[index]);
// }
// })
}
function handlerDealFileName(path){
function handlerDealFileName(path) {
const regex = /([^/\\]+)(?=\.[^/\\]*$|$)/;
const matchStr = path.match(regex);
if(matchStr?.length){
if (matchStr?.length) {
return matchStr[0];
}
}
function handlerPreviewImage(index,url){
function handlerPreviewImage(index, url) {
const regex = /([^/\\]+)(?=\.[^/\\]*$|$)/;
const match = url.match(regex);
if (match) {
@ -475,70 +399,66 @@
const isInitImageLisener = ref<Boolean>(false);
//
function handlerImageChange(e):void{
if(e && !isInitImageLisener.value){
setTimeout(function(){
function handlerImageChange(e): void {
if (e && !isInitImageLisener.value) {
setTimeout(function () {
const targetNode = document.getElementsByClassName('ant-image-preview-img');
//
const observer = new MutationObserver((mutationsList) => {
for (const mutation of mutationsList) {
if (mutation.type === 'attributes') {
if(targetNode[0].getAttribute(mutation.attributeName).match("http")){
handlerPreviewImage(0,targetNode[0].getAttribute(mutation.attributeName))
}
}
for (const mutation of mutationsList) {
if (mutation.type === 'attributes') {
if (targetNode[0].getAttribute(mutation.attributeName).match('http')) {
handlerPreviewImage(0, targetNode[0].getAttribute(mutation.attributeName));
}
}
}
});
//
const config = { attributes: true };
//
observer.observe(targetNode[0], config);
isInitImageLisener.value = true;
},250)
}, 250);
}
}
onBeforeMount(()=>{
})
onBeforeMount(() => {});
const anjianzhaopianList = computed(() => {
getCaseImgList();
return anjianzhaopian ? anjianzhaopian.split(',') : [];
return props.showInfoData.anjianzhaopian ? props.showInfoData.anjianzhaopian.split(',') : [];
});
const casepicList = computed(() => {
return casepic ? casepic.split(',') : [];
return props.showInfoData.casepic ? props.showInfoData.casepic.split(',') : [];
});
const chaichufugenghoupicList = computed(() => {
return chaichufugenghoupic ? chaichufugenghoupic.split(',') : [];
return props.showInfoData.chaichufugenghoupic
? props.showInfoData.chaichufugenghoupic.split(',')
: [];
});
const bubanzhaopianList = computed(() => {
return bubanzhaopian ? bubanzhaopian.split(',') : [];
return props.showInfoData.bubanzhaopian ? props.showInfoData.bubanzhaopian.split(',') : [];
});
const fujianList = computed(() => {
return fujian ? fujian.split(',') : [];
return props.showInfoData.fujian ? props.showInfoData.fujian.split(',') : [];
});
const hefafujianList = computed(() => {
return hefafujian ? hefafujian.split(',') : [];
return props.showInfoData.hefafujian ? props.showInfoData.hefafujian.split(',') : [];
});
const qitafujianList = computed(() => {
return qitafujian ? qitafujian.split(',') : [];
return props.showInfoData.qitafujian ? props.showInfoData.qitafujian.split(',') : [];
});
const zhenggaifujianList = computed(() => {
return zhenggaifujian ? zhenggaifujian.split(',') : [];
return props.showInfoData.zhenggaifujian ? props.showInfoData.zhenggaifujian.split(',') : [];
});
const yanshoubiaoList = computed(() => {
return yanshoubiao ? yanshoubiao.split(',') : [];
return props.showInfoData.yanshoubiao ? props.showInfoData.yanshoubiao.split(',') : [];
});
const wrjffzhaopianList = computed(() => {
return wrjffzhaopian ? wrjffzhaopian.split(',') : [];
return props.showInfoData.wrjffzhaopian ? props.showInfoData.wrjffzhaopian.split(',') : [];
});
const xchczhaopianList = computed(() => {
return xchczhaopian ? xchczhaopian.split(',') : [];
return props.showInfoData.xchczhaopian ? props.showInfoData.xchczhaopian.split(',') : [];
});
function onMapboxLoad() {
changeTask();
@ -582,8 +502,6 @@
key: null,
};
if (props.showInfoData.geomid) {
getGeom(getGeomPrams).then((res) => {
let geoms = [];
if (res) {
@ -609,27 +527,26 @@
}
}
const downLoadFile = (url) => {
if(url.indexOf('.pdf') !== -1){
if (url.indexOf('.pdf') !== -1) {
axios({
method: 'get',
url: `${VITE_GLOB_INFO_IMAGE_URL}/${url}`,
responseType: 'blob',
headers: {
'Content-Disposition': 'inline',
}
},
})
.then(response => {
let blob = new Blob([response.data], {type: 'application/pdf'});
let url = window.URL.createObjectURL(blob)
window.open(url);
})
.catch(error => {
console.error(error);
});
}else{
window.open(`${VITE_GLOB_INFO_IMAGE_URL}/${url}`, '_blank');
.then((response) => {
let blob = new Blob([response.data], { type: 'application/pdf' });
let url = window.URL.createObjectURL(blob);
window.open(url);
})
.catch((error) => {
console.error(error);
});
} else {
window.open(`${VITE_GLOB_INFO_IMAGE_URL}/${url}`, '_blank');
}
};
const getContainer = () => {
return document.getElementById('info-container');
@ -649,12 +566,12 @@
}
};
const showImage = (url) => {
if(url.indexOf('.png') !== -1 || url.indexOf('.jpg') !== -1 || url.indexOf('.jpeg') !== -1 ){
return true
}else{
return false
if (url.indexOf('.png') !== -1 || url.indexOf('.jpg') !== -1 || url.indexOf('.jpeg') !== -1) {
return true;
} else {
return false;
}
}
};
</script>
<style lang="scss" scoped>
@ -682,14 +599,14 @@
height: calc(100vh - 100px);
margin-right: 20px;
}
:deep(.ant-image){
:deep(.ant-image) {
margin-right: 10px;
margin-bottom: 10px;
}
:deep(.ant-image-preview-switch-left){
:deep(.ant-image-preview-switch-left) {
position: absolute;
}
:deep(.ant-image-preview-switch-right){
:deep(.ant-image-preview-switch-right) {
position: absolute;
}
.info-container {
@ -709,14 +626,14 @@
position: absolute;
top: 0;
width: 100%;
.ant-image-preview-operations-operation{
.ant-image-preview-operations-operation {
// flex:1;
}
}
.ant-image-preview-operations-operation:nth-last-child(1){
.ant-image-preview-operations-operation:nth-last-child(1) {
display: none;
}
.ant-image-preview-operations-operation:nth-last-child(2){
}
.ant-image-preview-operations-operation:nth-last-child(2) {
display: none;
}
}

View File

@ -22,38 +22,52 @@
'word-break': 'break-all',
}"
>
<a-descriptions-item label="图斑编号">{{ case_no }}</a-descriptions-item>
<a-descriptions-item label="图斑类型">{{ typename }}</a-descriptions-item>
<a-descriptions-item label="县区">{{ countyname }}</a-descriptions-item>
<a-descriptions-item label="乡镇">{{ streetname }}</a-descriptions-item>
<a-descriptions-item label="社区/村">{{ communityname }}</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(area)
dataProcessing(props.showInfoData.area)
}}</a-descriptions-item>
<a-descriptions-item label="农用地面积(亩)">{{
dataProcessing(nongyongdi_area)
dataProcessing(props.showInfoData.nongyongdi_area)
}}</a-descriptions-item>
<a-descriptions-item label="耕地面积(亩)">{{
dataProcessing(gengdi_area)
dataProcessing(props.showInfoData.gengdi_area)
}}</a-descriptions-item>
<a-descriptions-item label="永农面积(亩)">{{
dataProcessing(yongjiujibennongtian_area)
dataProcessing(props.showInfoData.yongjiujibennongtian_area)
}}</a-descriptions-item>
<a-descriptions-item label="占生态红线面积(亩)">{{
dataProcessing(shengtaibaohuhongxian_area)
dataProcessing(props.showInfoData.shengtaibaohuhongxian_area)
}}</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="图斑描述">{{ case_description }}</a-descriptions-item>
<a-descriptions-item label="备注">{{ remark }}</a-descriptions-item>
<a-descriptions-item label="经度">{{ lng }}</a-descriptions-item>
<a-descriptions-item label="纬度">{{ lat }}</a-descriptions-item>
<a-descriptions-item label="下发时间">{{ synchronoustime }}</a-descriptions-item>
<a-descriptions-item label="图斑照片">
<div class="image-div">
<a-image-preview-group
:preview="{
getContainer:getContainer,
getContainer: getContainer,
}"
>
>
<template v-for="(imageItem, imageIndex) in casepicList" :key="imageIndex">
<a-image
v-if="imageItem"
@ -72,7 +86,7 @@
</a-tab-pane>
<a-tab-pane
key="2"
v-if="!['建设用地', '推堆土'].includes(typename)"
v-if="!['建设用地', '推堆土'].includes(props.showInfoData.typename)"
tab="线索填报"
force-render
>
@ -86,34 +100,34 @@
}"
>
<a-descriptions-item label="判定结果">{{
getLabel('is_illegal', is_illegal)
getLabel('is_illegal', props.showInfoData.is_illegal)
}}</a-descriptions-item>
<a-descriptions-item v-if="is_illegal == 1" label="项目名称">{{
xiangmumc
<a-descriptions-item v-if="props.showInfoData.is_illegal == 1" label="项目名称">{{
props.showInfoData.xiangmumc
}}</a-descriptions-item>
<a-descriptions-item v-if="is_illegal == 1" label="项目主体">{{
xiangmuzhuti
<a-descriptions-item v-if="props.showInfoData.is_illegal == 1" label="项目主体">{{
props.showInfoData.xiangmuzhuti
}}</a-descriptions-item>
<a-descriptions-item v-if="is_illegal == 1" label="实际用途">{{
actual_use_to
<a-descriptions-item v-if="props.showInfoData.is_illegal == 1" label="实际用途">{{
props.showInfoData.actual_use_to
}}</a-descriptions-item>
<a-descriptions-item v-if="is_illegal == 1" label="整改措施">{{
getLabel('measure_name', measure_name)
<a-descriptions-item v-if="props.showInfoData.is_illegal == 1" label="整改措施">{{
getLabel('measure_name', props.showInfoData.measure_name)
}}</a-descriptions-item>
<a-descriptions-item v-if="is_illegal == 1" label="是否对人处理">{{
getLabel('is_chuli', is_chuli)
<a-descriptions-item v-if="props.showInfoData.is_illegal == 1" label="是否对人处理">{{
getLabel('is_chuli', props.showInfoData.is_chuli)
}}</a-descriptions-item>
<a-descriptions-item v-if="is_illegal == 1" label="处理情况说明">{{
chuliqingkuangsm
<a-descriptions-item v-if="props.showInfoData.is_illegal == 1" label="处理情况说明">{{
props.showInfoData.chuliqingkuangsm
}}</a-descriptions-item>
<a-descriptions-item v-if="is_illegal == 1" label="附件">
<a-image-preview-group :preview="{getContainer,}">
<a-descriptions-item v-if="props.showInfoData.is_illegal == 1" label="附件">
<a-image-preview-group :preview="{ getContainer }">
<template v-for="(item, itemIndex) in fujianList" :key="itemIndex">
<a-image
v-if="showImage(item)"
style="width:100px;height:100px;"
style="width: 100px; height: 100px"
:src="`${VITE_GLOB_INFO_IMAGE_URL}/${item}`"
:preview="{getContainer}"
:preview="{ getContainer }"
></a-image>
<div v-else>
<Icon
@ -127,14 +141,14 @@
</template>
</a-image-preview-group>
</a-descriptions-item>
<a-descriptions-item v-if="is_illegal == 0" label="附件">
<a-image-preview-group :preview="{getContainer,}">
<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;"
style="width: 100px; height: 100px"
:src="`${VITE_GLOB_INFO_IMAGE_URL}/${item}`"
:preview="{getContainer,}"
:preview="{ getContainer }"
></a-image>
<div v-else>
<Icon
@ -148,49 +162,57 @@
</template>
</a-image-preview-group>
</a-descriptions-item>
<a-descriptions-item v-if="is_illegal == 2" label="其他情形">{{
getLabel('qita_qksm', qita_qksm)
<a-descriptions-item v-if="props.showInfoData.is_illegal == 2" label="其他情形">{{
getLabel('qita_qksm', props.showInfoData.qita_qksm)
}}</a-descriptions-item>
<a-descriptions-item v-if="is_illegal == 3" label="项目名称">{{
zj_xmmc
<a-descriptions-item v-if="props.showInfoData.is_illegal == 3" label="项目名称">{{
props.showInfoData.zj_xmmc
}}</a-descriptions-item>
<a-descriptions-item v-if="is_illegal == 3" label="项目主体">{{
zj_xmzt
<a-descriptions-item v-if="props.showInfoData.is_illegal == 3" label="项目主体">{{
props.showInfoData.zj_xmzt
}}</a-descriptions-item>
<a-descriptions-item v-if="is_illegal == 3" label="实际用途">{{
zj_sjyt
<a-descriptions-item v-if="props.showInfoData.is_illegal == 3" label="实际用途">{{
props.showInfoData.zj_sjyt
}}</a-descriptions-item>
<a-descriptions-item label="判定依据说明">{{
pandingyijushuoming
props.showInfoData.pandingyijushuoming
}}</a-descriptions-item>
<a-descriptions-item label="照片">
<div class="image-div">
<a-image-preview-group
:preview="{
getContainer:getContainer,
onVisibleChange:handlerImageChange
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>
<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="填报人">{{ examiner_name }}</a-descriptions-item>
<a-descriptions-item label="填报时间">{{ examine_time }}</a-descriptions-item>
<a-descriptions-item label="填报人">{{
props.showInfoData.examiner_name
}}</a-descriptions-item>
<a-descriptions-item label="填报时间">{{
props.showInfoData.examine_time
}}</a-descriptions-item>
</a-descriptions>
</a-tab-pane>
<a-tab-pane key="4" v-if="!['建设用地', '推堆土'].includes(typename)" tab="审核情况">
<a-tab-pane
key="4"
v-if="!['建设用地', '推堆土'].includes(props.showInfoData.typename)"
tab="审核情况"
>
<a-divider>区县审核</a-divider>
<a-descriptions
:column="2"
@ -201,10 +223,18 @@
'word-break': 'break-all',
}"
>
<a-descriptions-item label="审核结果">{{ xjshenhejieguo }}</a-descriptions-item>
<a-descriptions-item label="审核意见">{{ xianjiyijian }}</a-descriptions-item>
<a-descriptions-item label="审核人">{{ verifyuser }}</a-descriptions-item>
<a-descriptions-item label="审核时间">{{ verifytime }}</a-descriptions-item>
<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
@ -216,10 +246,18 @@
'word-break': 'break-all',
}"
>
<a-descriptions-item label="审核结果">{{ sjshenhejieguo }}</a-descriptions-item>
<a-descriptions-item label="审核意见">{{ shijiyijian }}</a-descriptions-item>
<a-descriptions-item label="审核人">{{ hexiaoren }}</a-descriptions-item>
<a-descriptions-item label="审核时间">{{ hexiaotime?.split('.')[0] }}</a-descriptions-item>
<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="weifaleixing == 0" label="无人机复飞照片" :span="2">
<div class="image-div">
<a-image-preview-group
@ -270,166 +308,51 @@
</template>
<script setup lang="ts">
import { defineProps, ref, computed,onBeforeMount } from 'vue';
import { defineProps, ref, computed, onBeforeMount, watch } from 'vue';
import MapboxMap from '@/components/MapboxMaps/MapComponent.vue';
import { getConfig } from '@/api/sys/layerManagement';
import { getGeom } from '@/api/sys/layerManagement';
import {getLoadCaseImgList} from '@/api/keyproblem/keyissuesII'
import { getLoadCaseImgList } from '@/api/keyproblem/keyissuesII';
import { useMessage } from '@/hooks/web/useMessage';
import axios from 'axios';
const { createMessage } = useMessage();
import Icon from '@/components/Icon/Icon.vue';
import { getAppEnvConfig } from '@/utils/env';
const { VITE_GLOB_INFO_IMAGE_URL } = getAppEnvConfig();
import {
keyIssuesIIMapTypeOptions,
illegalTypeOptions,
keyIssuesIIMeasureOptions,
mapStatusOptions,
markTypeOptions,
illegalTypeList,
resultOptions,
qitaUseTOOptions,
isChuliOptions,
} from '@/utils/global';
console.log('');
const { createMessage } = useMessage();
const { VITE_GLOB_INFO_IMAGE_URL } = getAppEnvConfig();
const MapboxComponent = ref();
const mapConfig = ref({});
getConfig({ code: 'mapsetting' }).then((res) => {
mapConfig.value = JSON.parse(res.codeValue);
});
watch(
() => props.showInfoData,
() => {
getConfig({ code: 'mapsetting' }).then((res) => {
mapConfig.value = JSON.parse(res.codeValue);
});
changeTask();
},
);
const props = defineProps(['showInfoData']);
const activeKey = ref('1');
const geomsList = ref();
const {
id,
case_no,
case_name,
case_description,
start_time,
end_time,
address,
lng,
lat,
typeid,
typename,
handle_status_id,
handle_status_name,
case_status_i,
case_status_name,
createtime,
createuser,
drone_no,
deal_userid,
deal_username,
createusername,
is_delete,
countyid,
countyname,
streetid,
streetname,
communityid,
communityname,
remark,
is_closed,
area,
is_illegal,
close_user,
close_time,
identification_user,
identification_time,
is_intact,
close_userid,
identification_userid,
verifyuserid,
verifyuser,
verifytime,
is_improve,
improve_reason,
is_dispense,
dispense_userid,
dispense_time,
dispense_username,
verifystatus,
verifystatusname,
is_checked,
deal_time,
is_drawback,
examiner_id,
examiner_name,
examine_time,
measure_name,
casepic,
opinion,
result,
result_name,
opinion_name,
handletime,
handleuser,
handleusername,
is_assist,
measure_name_deal,
qita_use_to,
illegal_contact,
illegal_shenfenzhenghao,
investigation_type,
investigation_result,
registr_number,
is_build_complete,
actual_use_to,
transactor_id,
transactor_name,
transact_time,
geomid,
nongyongdi_area,
gengdi_area,
yongjiujibennongtian_area,
zhongdianquyu_area,
shengtaibaohuhongxian_area,
guotukongjianguihua_area,
fujian,
hefafujian,
qitafujian,
jieshou_people,
jieshou_time,
pandingyijushuoming,
xiangmumc,
xiangmuzhuti,
weifaleixing,
yanshoubiao,
zhenggaifujian,
chaichufugenghoupic,
bubanzhaopian,
is_jieshou,
anjianzhaopian,
hexiaoren,
hexiaotime,
wrjffzhaopian,
xchczhaopian,
synchronoustime,
xjshenhejieguo,
xianjiyijian,
sjshenhejieguo,
shijiyijian,
is_chuli,
chuliqingkuangsm,
qita_shuoming,
qita_qksm,
zj_xmmc,
zj_xmzt,
zj_sjyt,
} = props.showInfoData;
const imageList = ref([]);
async function getCaseImgList(){
imageList.value = await getLoadCaseImgList({caseid:id,category:'重点问题II类'});
async function getCaseImgList() {
imageList.value = await getLoadCaseImgList({
caseid: props.showInfoData.id,
category: '重点问题II类',
});
MapboxComponent.value.handlerLoadPictureAzimuth(imageList.value);
//
@ -442,19 +365,17 @@
// zhengshiImageList.push(imageList.value[index]);
// }
// })
}
function handlerDealFileName(path){
function handlerDealFileName(path) {
const regex = /([^/\\]+)(?=\.[^/\\]*$|$)/;
const matchStr = path.match(regex);
if(matchStr?.length){
if (matchStr?.length) {
return matchStr[0];
}
}
function handlerPreviewImage(index,url){
function handlerPreviewImage(index, url) {
const regex = /([^/\\]+)(?=\.[^/\\]*$|$)/;
const match = url.match(regex);
if (match) {
@ -464,70 +385,66 @@
const isInitImageLisener = ref<Boolean>(false);
//
function handlerImageChange(e):void{
if(e && !isInitImageLisener.value){
setTimeout(function(){
function handlerImageChange(e): void {
if (e && !isInitImageLisener.value) {
setTimeout(function () {
const targetNode = document.getElementsByClassName('ant-image-preview-img');
//
const observer = new MutationObserver((mutationsList) => {
for (const mutation of mutationsList) {
if (mutation.type === 'attributes') {
if(targetNode[0].getAttribute(mutation.attributeName).match("http")){
handlerPreviewImage(0,targetNode[0].getAttribute(mutation.attributeName))
}
}
for (const mutation of mutationsList) {
if (mutation.type === 'attributes') {
if (targetNode[0].getAttribute(mutation.attributeName).match('http')) {
handlerPreviewImage(0, targetNode[0].getAttribute(mutation.attributeName));
}
}
}
});
//
const config = { attributes: true };
//
observer.observe(targetNode[0], config);
isInitImageLisener.value = true;
},250)
}, 250);
}
}
onBeforeMount(()=>{
})
onBeforeMount(() => {});
const anjianzhaopianList = computed(() => {
getCaseImgList();
return anjianzhaopian ? anjianzhaopian.split(',') : [];
return props.showInfoData.anjianzhaopian ? props.showInfoData.anjianzhaopian.split(',') : [];
});
const casepicList = computed(() => {
return casepic ? casepic.split(',') : [];
return props.showInfoData.casepic ? props.showInfoData.casepic.split(',') : [];
});
const chaichufugenghoupicList = computed(() => {
return chaichufugenghoupic ? chaichufugenghoupic.split(',') : [];
return props.showInfoData.chaichufugenghoupic
? props.showInfoData.chaichufugenghoupic.split(',')
: [];
});
const bubanzhaopianList = computed(() => {
return bubanzhaopian ? bubanzhaopian.split(',') : [];
return props.showInfoData.bubanzhaopian ? props.showInfoData.bubanzhaopian.split(',') : [];
});
const fujianList = computed(() => {
return fujian ? fujian.split(',') : [];
return props.showInfoData.fujian ? props.showInfoData.fujian.split(',') : [];
});
const hefafujianList = computed(() => {
return hefafujian ? hefafujian.split(',') : [];
return props.showInfoData.hefafujian ? props.showInfoData.hefafujian.split(',') : [];
});
const qitafujianList = computed(() => {
return qitafujian ? qitafujian.split(',') : [];
return props.showInfoData.qitafujian ? props.showInfoData.qitafujian.split(',') : [];
});
const zhenggaifujianList = computed(() => {
return zhenggaifujian ? zhenggaifujian.split(',') : [];
return props.showInfoData.zhenggaifujian ? props.showInfoData.zhenggaifujian.split(',') : [];
});
const yanshoubiaoList = computed(() => {
return yanshoubiao ? yanshoubiao.split(',') : [];
return props.showInfoData.yanshoubiao ? props.showInfoData.yanshoubiao.split(',') : [];
});
const wrjffzhaopianList = computed(() => {
return wrjffzhaopian ? wrjffzhaopian.split(',') : [];
return props.showInfoData.wrjffzhaopian ? props.showInfoData.wrjffzhaopian.split(',') : [];
});
const xchczhaopianList = computed(() => {
return xchczhaopian ? xchczhaopian.split(',') : [];
return props.showInfoData.xchczhaopian ? props.showInfoData.xchczhaopian.split(',') : [];
});
function onMapboxLoad() {
changeTask();
@ -543,7 +460,7 @@
result = illegalTypeList;
break;
case 'measure_name':
result = keyIssuesIIMeasureOptions
result = keyIssuesIIMeasureOptions;
break;
case 'result_name':
result = resultOptions;
@ -556,9 +473,9 @@
break;
case 'qita_qksm':
result = [
{ label: '不存在经营', value: '1'},
{ label: '已优化调整', value: '2'},
]
{ label: '不存在经营', value: '1' },
{ label: '已优化调整', value: '2' },
];
}
result.forEach((item) => {
if (item.value == value) {
@ -577,8 +494,6 @@
key: null,
};
if (props.showInfoData.geomid) {
getGeom(getGeomPrams).then((res) => {
let geoms = [];
if (res) {
@ -604,27 +519,26 @@
}
}
const downLoadFile = (url) => {
if(url.indexOf('.pdf') !== -1){
if (url.indexOf('.pdf') !== -1) {
axios({
method: 'get',
url: `${VITE_GLOB_INFO_IMAGE_URL}/${url}`,
responseType: 'blob',
headers: {
'Content-Disposition': 'inline',
}
},
})
.then(response => {
let blob = new Blob([response.data], {type: 'application/pdf'});
let url = window.URL.createObjectURL(blob)
window.open(url);
})
.catch(error => {
console.error(error);
});
}else{
window.open(`${VITE_GLOB_INFO_IMAGE_URL}/${url}`, '_blank');
.then((response) => {
let blob = new Blob([response.data], { type: 'application/pdf' });
let url = window.URL.createObjectURL(blob);
window.open(url);
})
.catch((error) => {
console.error(error);
});
} else {
window.open(`${VITE_GLOB_INFO_IMAGE_URL}/${url}`, '_blank');
}
};
const getContainer = () => {
return document.getElementById('info-container');
@ -644,12 +558,12 @@
}
};
const showImage = (url) => {
if(url.indexOf('.png') !== -1 || url.indexOf('.jpg') !== -1 || url.indexOf('.jpeg') !== -1 ){
return true
}else{
return false
if (url.indexOf('.png') !== -1 || url.indexOf('.jpg') !== -1 || url.indexOf('.jpeg') !== -1) {
return true;
} else {
return false;
}
}
};
</script>
<style lang="scss" scoped>
@ -677,14 +591,14 @@
height: calc(100vh - 100px);
margin-right: 20px;
}
:deep(.ant-image){
:deep(.ant-image) {
margin-right: 10px;
margin-bottom: 10px;
}
:deep(.ant-image-preview-switch-left){
:deep(.ant-image-preview-switch-left) {
position: absolute;
}
:deep(.ant-image-preview-switch-right){
:deep(.ant-image-preview-switch-right) {
position: absolute;
}
.info-container {
@ -704,14 +618,14 @@
position: absolute;
top: 0;
width: 100%;
.ant-image-preview-operations-operation{
.ant-image-preview-operations-operation {
// flex:1;
}
}
.ant-image-preview-operations-operation:nth-last-child(1){
.ant-image-preview-operations-operation:nth-last-child(1) {
display: none;
}
.ant-image-preview-operations-operation:nth-last-child(2){
}
.ant-image-preview-operations-operation:nth-last-child(2) {
display: none;
}
}

View File

@ -812,10 +812,6 @@
const MapboxComponent = ref();
const mapConfig = ref({});
getConfig({ code: 'mapsetting' }).then((res) => {
mapConfig.value = JSON.parse(res.codeValue);
});
const props = defineProps(['id']);
const activeKey = ref('1');
@ -824,6 +820,10 @@
function getCaseInfo() {
getCaseInfoById({ id: props.id }).then((res) => {
caseInfo.value = res;
getConfig({ code: 'mapsetting' }).then((res) => {
mapConfig.value = JSON.parse(res.codeValue);
});
changeTask();
});
}
watch(
@ -839,7 +839,7 @@
});
const imageList = ref([]);
async function getCaseImgList() {
imageList.value = await getLoadCaseImgList({ caseid: props.id,category:'非法采矿工作管理' });
imageList.value = await getLoadCaseImgList({ caseid: props.id, category: '非法采矿工作管理' });
//
let zhengshiImageList = [];