Merge branch 'main' of http://123.132.248.154:10000/HC_YFZX/CaiYuanYiTiHua
commit
800d3a5209
|
|
@ -435,8 +435,8 @@ export const getGeomData = (params) =>
|
|||
|
||||
// 影像管理
|
||||
// 更新tiff影像
|
||||
export const GeoTiffManagerUpdateGeoTiff = (params) =>
|
||||
defHttp.post({ url: Api.GeoTiffManagerUpdateGeoTiff, params });
|
||||
export const GeoTiffManagerUpdateGeoTiff = () =>
|
||||
defHttp.post({ url: Api.GeoTiffManagerUpdateGeoTiff });
|
||||
// 影像列表
|
||||
export const GeoTiffManagerLoadPage = (params) =>
|
||||
defHttp.get({ url: Api.GeoTiffManagerLoadPage, params });
|
||||
|
|
|
|||
|
|
@ -3,18 +3,22 @@
|
|||
</template>
|
||||
|
||||
<script setup lang="ts">
|
||||
import { defineProps, ref, onMounted, onUnmounted } from "vue"
|
||||
import { defineProps, ref, onMounted, onUnmounted, defineEmits } from "vue"
|
||||
import { v4 as uuidv4 } from 'uuid';
|
||||
import mapboxgl, { Map, } from 'mapbox-gl';
|
||||
import { MapboxConfig, MapboxDefaultStyle } from '@/components/MapboxMaps/src/config.ts'
|
||||
|
||||
const props = defineProps(["width", "height"])
|
||||
const emits = defineEmits(["getMap"])
|
||||
const { width, height } = props
|
||||
const mapId = `modal-map-${uuidv4()}`
|
||||
let map: Map;
|
||||
onMounted(() => {
|
||||
mapboxgl.accessToken = MapboxConfig.ACCESS_TOKEN;
|
||||
map = initMap();
|
||||
map.on('load', () => {
|
||||
emits("getMap",map)
|
||||
})
|
||||
})
|
||||
const initMap = () => {
|
||||
return new mapboxgl.Map({
|
||||
|
|
|
|||
|
|
@ -1,29 +1,31 @@
|
|||
<template>
|
||||
<div class="show-map-div">
|
||||
<div class="select-menu">
|
||||
<div class="add-on-map" v-if="selectType !== 2"><a-checkbox v-model:checked="addOnMap">叠加到地图</a-checkbox></div>
|
||||
<div class="add-on-map" v-if="selectType !== 2">
|
||||
<a-checkbox v-model:checked="addOnMap" @change="(e) => addOnMapChange(e.target.checked)">叠加到地图</a-checkbox>
|
||||
</div>
|
||||
<a-radio-group v-model:value="selectType" button-style="solid" size="small">
|
||||
<a-radio-button :value="0">专题图</a-radio-button>
|
||||
<a-radio-button :value="1">截图</a-radio-button>
|
||||
<a-radio-button :value="2">天地图</a-radio-button>
|
||||
</a-radio-group>
|
||||
</div>
|
||||
<template v-if="selectType === 0">
|
||||
<template v-if="selectType === 0 && !addOnMap">
|
||||
<a-image
|
||||
:width="470"
|
||||
:height="470"
|
||||
:src="showData.image"
|
||||
:src="showData?.url"
|
||||
/>
|
||||
</template>
|
||||
<template v-if="selectType === 1">
|
||||
<template v-if="selectType === 1 && !addOnMap">
|
||||
<a-image
|
||||
:width="470"
|
||||
:height="470"
|
||||
:src="showData.screenshotImage"
|
||||
/>
|
||||
</template>
|
||||
<template v-if="selectType === 2">
|
||||
<ModalMap :width="'470px'" :height="'470px'"/>
|
||||
<template v-if="selectType === 2 || addOnMap">
|
||||
<ModalMap :width="'470px'" :height="'470px'" @getMap="getMap"/>
|
||||
</template>
|
||||
|
||||
</div>
|
||||
|
|
@ -31,31 +33,67 @@
|
|||
<a-tab-pane key="1" tab="土地分类">
|
||||
<ShowTableList
|
||||
:columns="landClassificationColumns"
|
||||
:data="props.data?.landClassify.list"
|
||||
:data="landClassifyTable"
|
||||
:title="'土地利用现状查询结果'"/>
|
||||
</a-tab-pane>
|
||||
<a-tab-pane key="2" tab="耕地占用">
|
||||
<ShowTableList
|
||||
:columns="landPlanningColumns"
|
||||
:data="props.data?.plowLandOccupy.list"
|
||||
:data="plowLandOccupyTable"
|
||||
:title="'土地规划查询结果'"/>
|
||||
</a-tab-pane>
|
||||
</a-tabs>
|
||||
</template>
|
||||
|
||||
<script setup lang="ts">
|
||||
import { ref, defineProps, computed } from "vue"
|
||||
import { ref, defineProps, computed, watch, onMounted } from "vue"
|
||||
import ShowTableList from '@/views/dashboard/test/components/ShowTableList/index.vue'
|
||||
import ModalMap from './ModalMap/index.vue'
|
||||
|
||||
const props = defineProps(['data'])
|
||||
let map
|
||||
onMounted(() => {
|
||||
if(props.data){
|
||||
type.value = props.data[0].name
|
||||
}
|
||||
})
|
||||
const type = ref('1')
|
||||
const landClassifyTable = computed(() => {
|
||||
|
||||
let data
|
||||
props.data?.forEach(item => {
|
||||
if(item.name == '土地分类'){
|
||||
data = {...item}
|
||||
}
|
||||
})
|
||||
return data && data.list
|
||||
})
|
||||
const plowLandOccupyTable = computed(() => {
|
||||
let data
|
||||
props.data?.forEach(item => {
|
||||
if(item.name == '耕地分类'){
|
||||
data = {...item}
|
||||
}
|
||||
})
|
||||
return data && data.list
|
||||
})
|
||||
const showData = computed(() => {
|
||||
let data
|
||||
switch(type.value){
|
||||
case '1':
|
||||
return props.data?.landClassify || {image:'',screenshotImage:'',list:[]}
|
||||
props.data?.forEach(item => {
|
||||
if(item.name == '土地分类'){
|
||||
data = {...item}
|
||||
}
|
||||
})
|
||||
return data
|
||||
case '2':
|
||||
return props.data?.plowLandOccupy || {image:'',screenshotImage:'',list:[]}
|
||||
props.data?.forEach(item => {
|
||||
if(item.name == '耕地分类'){
|
||||
data = {...item}
|
||||
}
|
||||
})
|
||||
return data
|
||||
}
|
||||
})
|
||||
const addOnMap = ref(false)
|
||||
|
|
@ -63,8 +101,8 @@ const selectType = ref(0)
|
|||
const landClassificationColumns = [
|
||||
{
|
||||
title: '地类名称',
|
||||
dataIndex: 'landName',
|
||||
key: 'landName',
|
||||
dataIndex: 'type',
|
||||
key: 'type',
|
||||
sorter:(a,b) => a.landName - b.landName,
|
||||
sortDirections: ['descend', 'ascend'],
|
||||
},
|
||||
|
|
@ -99,6 +137,62 @@ const landPlanningColumns = [
|
|||
sortDirections: ['descend', 'ascend'],
|
||||
},
|
||||
]
|
||||
const getMap = (value) => {
|
||||
map = value
|
||||
}
|
||||
const addOnMapChange = (value) => {
|
||||
setTimeout(() => {
|
||||
let url= ''
|
||||
let fourpoint = ''
|
||||
if(value){
|
||||
let data = {}
|
||||
if(type.value == '1'){
|
||||
props.data.forEach(item => {
|
||||
if(item.name == '土地分类'){
|
||||
data = {...item}
|
||||
}
|
||||
})
|
||||
}else if(type.value == '2'){
|
||||
props.data.forEach(item => {
|
||||
if(item.name == '耕地分类'){
|
||||
data = {...item}
|
||||
}
|
||||
})
|
||||
}
|
||||
if(selectType.value == 0){
|
||||
url = data.url
|
||||
fourpoint = JSON.parse(`[${data.fourpoint}]`)
|
||||
}
|
||||
}
|
||||
|
||||
map.addSource('radar', {
|
||||
type: 'image',
|
||||
url:url,
|
||||
coordinates: fourpoint
|
||||
});
|
||||
map.addLayer({
|
||||
id: 'radar-layer',
|
||||
type: 'raster',
|
||||
source: 'radar',
|
||||
paint: {
|
||||
'raster-fade-duration': 0
|
||||
}
|
||||
});
|
||||
let x = 0
|
||||
let y = 0
|
||||
let length = fourpoint.length
|
||||
for(let i = 0; i < fourpoint.length; i++){
|
||||
x = x + fourpoint[i][0]
|
||||
y = y + fourpoint[i][1]
|
||||
}
|
||||
x = x / length
|
||||
y = y / length
|
||||
map.flyTo({
|
||||
center: [x,y],
|
||||
zoom: 14,
|
||||
});
|
||||
},500)
|
||||
}
|
||||
</script>
|
||||
|
||||
<style lang="scss" scoped>
|
||||
|
|
|
|||
|
|
@ -5,7 +5,7 @@
|
|||
<template #footer>
|
||||
<div class="footer-div">
|
||||
<span style="margin-left: 35px">{{ item.specialText }}</span>
|
||||
<span style="margin-right: 40px;">拍摄时间:{{ item.time }}</span>
|
||||
<span style="margin-right: 40px;">拍摄时间:{{ item.shijian }}</span>
|
||||
</div>
|
||||
</template>
|
||||
</ShowImage>
|
||||
|
|
|
|||
|
|
@ -3,8 +3,8 @@
|
|||
style="width: 100%;"
|
||||
v-model:activeKey="activeKey"
|
||||
>
|
||||
<a-tab-pane key="1" tab="基础查询"><BasicQuery :data="props.info?.basicQuery"/></a-tab-pane>
|
||||
<a-tab-pane key="2" tab="时序影像"><TimeImages :data="props.info?.timeImages"/> </a-tab-pane>
|
||||
<a-tab-pane key="1" tab="基础查询"><BasicQuery :data="props.info?.result"/></a-tab-pane>
|
||||
<a-tab-pane key="2" tab="时序影像"><TimeImages :data="props.info?.yingxiang"/> </a-tab-pane>
|
||||
</a-tabs>
|
||||
</template>
|
||||
|
||||
|
|
|
|||
|
|
@ -39,64 +39,8 @@ const changeCompare = () => {
|
|||
onMounted(() => {
|
||||
let id = useCloudQuery.getCloudQueryInfo.id
|
||||
LoadCloudQueryById({id}).then(res => {
|
||||
info.value = {
|
||||
basicQuery:{
|
||||
landClassify:{
|
||||
image:'http://60.213.14.14:8060/geoserver/feixian/wms?SERVICE=WMS&VERSION=1.1.1&REQUEST=GetMap&FORMAT=image%2Fjpeg&TRANSPARENT=true&LAYERS=feixian%3Ayingxiang&exceptions=application%2Fvnd.ogc.se_inimage&SRS=EPSG%3A4527&STYLES=&WIDTH=1024&HEIGHT=1024&BBOX=39591762.54875996%2C3908085.3169043385%2C39592654.90645946%2C3909001.5344353705',
|
||||
screenshotImage:'https://t0.tianditu.gov.cn/DataServer?T=img_w&x=216982&y=103419&l=18&tk=b6585bc41ee16251dbe6b1af64f375d9',
|
||||
list:[
|
||||
{landName: '乔木林地-0331',type: '限制建设区(030)',stats: '-',area: 3.05,},
|
||||
{landName: '乔木林地-0332',type: '限制建设区(031)',stats: '-',area: 4.05,},
|
||||
{landName: '乔木林地-0331',type: '建设区(030)',stats: '-',area: 3.05,},
|
||||
{landName: '乔木林地-0332',type: '建设区(031)',stats: '-',area: 4.05,},
|
||||
{landName: '乔木林地-0331',type: '限制(030)',stats: '-',area: 3.05,},
|
||||
{landName: '乔木林地-0332',type: '限制(031)',stats: '-',area: 4.05,}
|
||||
]
|
||||
},
|
||||
plowLandOccupy:{
|
||||
image:'https://t0.tianditu.gov.cn/DataServer?T=img_w&x=217550&y=104260&l=18&tk=b6585bc41ee16251dbe6b1af64f375d9',
|
||||
screenshotImage: 'https://t0.tianditu.gov.cn/DataServer?T=img_w&x=108774&y=52128&l=17&tk=b6585bc41ee16251dbe6b1af64f375d9',
|
||||
list:[
|
||||
{landName: '乔木林地-0331',type: '限制建设区(030)',stats: '-',area: 3.05,},
|
||||
{landName: '乔木林地-0332',type: '限制建设区(031)',stats: '-',area: 4.05,},
|
||||
{landName: '乔木林地-0331',type: '建设区(030)',stats: '-',area: 3.05,},
|
||||
{landName: '乔木林地-0332',type: '建设区(031)',stats: '-',area: 4.05,},
|
||||
{landName: '乔木林地-0331',type: '限制(030)',stats: '-',area: 3.05,},
|
||||
{landName: '乔木林地-0332',type: '限制(031)',stats: '-',area: 4.05,}
|
||||
]
|
||||
},
|
||||
},
|
||||
timeImages:[
|
||||
{
|
||||
time: '20210111',
|
||||
specialText: '卫星:GF2',
|
||||
specialUrl: 'https://gw.alipayobjects.com/zos/antfincdn/x43I27A55%26/photo-1438109491414-7198515b166b.webp',
|
||||
screenshotText: '截图1',
|
||||
screenshotUrl: 'https://gw.alipayobjects.com/zos/antfincdn/cV16ZqzMjW/photo-1473091540282-9b846e7965e3.webp',
|
||||
},
|
||||
{
|
||||
time: '20210112',
|
||||
specialText: '卫星:GF3',
|
||||
specialUrl: 'https://gw.alipayobjects.com/zos/antfincdn/x43I27A55%26/photo-1438109491414-7198515b166b.webp',
|
||||
screenshotText: '截图2',
|
||||
screenshotUrl: 'https://gw.alipayobjects.com/zos/antfincdn/cV16ZqzMjW/photo-1473091540282-9b846e7965e3.webp',
|
||||
},
|
||||
{
|
||||
time: '20210113',
|
||||
specialText: '卫星:GF4',
|
||||
specialUrl: 'https://gw.alipayobjects.com/zos/antfincdn/x43I27A55%26/photo-1438109491414-7198515b166b.webp',
|
||||
screenshotText: '截图34',
|
||||
screenshotUrl: 'https://gw.alipayobjects.com/zos/antfincdn/cV16ZqzMjW/photo-1473091540282-9b846e7965e3.webp',
|
||||
},
|
||||
{
|
||||
time: '20210114',
|
||||
specialText: '卫星:GF5',
|
||||
specialUrl: 'https://gw.alipayobjects.com/zos/antfincdn/x43I27A55%26/photo-1438109491414-7198515b166b.webp',
|
||||
screenshotText: '截图4',
|
||||
screenshotUrl: 'https://gw.alipayobjects.com/zos/antfincdn/cV16ZqzMjW/photo-1473091540282-9b846e7965e3.webp',
|
||||
},
|
||||
],
|
||||
}
|
||||
let data = JSON.parse(res.receiveContent)
|
||||
info.value = data
|
||||
})
|
||||
})
|
||||
</script>
|
||||
|
|
|
|||
|
|
@ -31,6 +31,9 @@
|
|||
<span class="delete-btn" @click="handlerPreviewFile(item.url)"
|
||||
><CloudDownloadOutlined
|
||||
/></span>
|
||||
<span class="delete-btn" @click="openFile(item.url)" v-if="showIcon(item.url)"
|
||||
><FolderOpenOutlined
|
||||
/></span>
|
||||
</div>
|
||||
<Modal :open="previewOpen" :title="previewTitle" :footer="null" @cancel="handleCancel">
|
||||
<img alt="" style="width: 100%" :src="previewImage" />
|
||||
|
|
@ -45,6 +48,7 @@
|
|||
InboxOutlined,
|
||||
DeleteOutlined,
|
||||
CloudDownloadOutlined,
|
||||
FolderOpenOutlined,
|
||||
} from '@ant-design/icons-vue';
|
||||
import type { UploadFile, UploadProps } from 'ant-design-vue';
|
||||
import { Modal, UploadDragger } from 'ant-design-vue';
|
||||
|
|
@ -58,6 +62,7 @@
|
|||
import { isImgTypeByName } from '../helper';
|
||||
import { UploadResultStatus } from '@/components/Upload/src/types/typing';
|
||||
import { fileUploadApi } from '@/api/sys/upload';
|
||||
import axios from 'axios';
|
||||
|
||||
defineOptions({ name: 'ImageUpload' });
|
||||
|
||||
|
|
@ -129,7 +134,41 @@
|
|||
});
|
||||
},
|
||||
);
|
||||
|
||||
const openFile = (url) => {
|
||||
console.log(url)
|
||||
if(url.indexOf('.pdf') !== -1){
|
||||
axios({
|
||||
method: 'get',
|
||||
url: url,
|
||||
responseType: 'blob',
|
||||
headers: {
|
||||
'Content-Disposition': 'inline',
|
||||
}
|
||||
})
|
||||
.then(response => {
|
||||
let blob = new Blob([response.data], {type: 'application/pdf'});
|
||||
let pdfUrl = window.URL.createObjectURL(blob)
|
||||
window.open(pdfUrl);
|
||||
})
|
||||
.catch(error => {
|
||||
console.error(error);
|
||||
});
|
||||
}else{
|
||||
window.open(url, '_blank');
|
||||
}
|
||||
|
||||
}
|
||||
const showIcon = (url) => {
|
||||
if(
|
||||
url.indexOf('.png') !== -1 ||
|
||||
url.indexOf('.pdf') !== -1 ||
|
||||
url.indexOf('.jpg') !== -1 ||
|
||||
url.indexOf('.jpeg') !== -1
|
||||
){
|
||||
return true;
|
||||
}
|
||||
return false
|
||||
}
|
||||
function getBase64<T extends string | ArrayBuffer | null>(file: File) {
|
||||
return new Promise<T>((resolve, reject) => {
|
||||
const reader = new FileReader();
|
||||
|
|
|
|||
|
|
@ -59,6 +59,7 @@
|
|||
if (unref(getShowFullHeaderRef)) {
|
||||
style.top = `${HEADER_HEIGHT}px`;
|
||||
}
|
||||
style.zIndex = 0;
|
||||
return style;
|
||||
});
|
||||
|
||||
|
|
|
|||
|
|
@ -43,8 +43,13 @@ export const mapStatusOptions = [
|
|||
{ label: '待接收', value: '待接收' },
|
||||
{ label: '待填报', value: '待填报' },
|
||||
{ label: '待整改', value: '待整改' },
|
||||
{ label: '已退回', value: '已退回' },
|
||||
{ label: '市级驳回', value: '市级驳回' },
|
||||
{ label: '县级驳回', value: '县级驳回' },
|
||||
];
|
||||
export const auditMapStatusOptions = [
|
||||
{ label: '市级驳回', value: '市级驳回' },
|
||||
{ label: '县级驳回', value: '县级驳回' },
|
||||
]
|
||||
// 标注类型
|
||||
export const markTypeOptions = [
|
||||
{ label: '在建', value: '在建' },
|
||||
|
|
|
|||
|
|
@ -8,7 +8,7 @@
|
|||
<a-image
|
||||
:width="470"
|
||||
:height="470"
|
||||
:src="select === 0? specialUrl: screenshotUrl"
|
||||
:src="select === 0? url: screenshotUrl"
|
||||
/>
|
||||
<div class="footer" v-if="haveFooter">
|
||||
<slot name="footer" />
|
||||
|
|
@ -19,7 +19,7 @@
|
|||
import { ref, defineProps } from "vue"
|
||||
const select = ref(0)
|
||||
const props = defineProps(["data", "haveFooter"])
|
||||
const { data:{ specialUrl, screenshotUrl }, haveFooter=false } = props
|
||||
const { data:{ url, screenshotUrl }, haveFooter=false } = props
|
||||
</script>
|
||||
|
||||
<style lang="scss" scoped>
|
||||
|
|
|
|||
|
|
@ -79,6 +79,20 @@
|
|||
</div>
|
||||
</div>
|
||||
<div style="display: flex;align-items: center;cursor: pointer;">
|
||||
<a-popover placement="bottom">
|
||||
<template #content>
|
||||
<div style="display:flex;">
|
||||
<div>当前状态:</div>
|
||||
<div>
|
||||
<a-checkbox-group
|
||||
v-model:value="params.nowStatus"
|
||||
style="width: 100%"
|
||||
:options="auditMapStatusOptions"></a-checkbox-group>
|
||||
</div>
|
||||
</div>
|
||||
</template>
|
||||
<img src="@/assets/images/tiankongdi/filt.png" class="img-box mr-r-20" />
|
||||
</a-popover>
|
||||
<img src="@/assets/images/tiankongdi/collect-active.png" class="img-box" @click="getCollectList" v-if="openCollect"/>
|
||||
<img src="@/assets/images/tiankongdi/collect.png" class="img-box" @click="getCollectList" v-else/>
|
||||
</div>
|
||||
|
|
@ -90,7 +104,7 @@
|
|||
class="data-list-item"
|
||||
v-if="dataList.length > 0"
|
||||
>
|
||||
<div class="back-box" v-if="item.is_drawback == 1">驳回</div>
|
||||
<div class="back-box" v-if="showDrawBack(item)">{{ drawBackSpan(item) }}</div>
|
||||
<div class="data-list-layout-div">
|
||||
<div class="data-list-title-div">
|
||||
<img src="/positioning.png" class="map-mark" @click="locationFun(item)"/>
|
||||
|
|
@ -200,8 +214,9 @@
|
|||
import { message } from 'ant-design-vue';
|
||||
import { useUserStore } from '@/store/modules/user.ts'
|
||||
import { SearchOutlined, RollbackOutlined } from '@ant-design/icons-vue';
|
||||
import { patchSourceOptions } from '@/utils/global'
|
||||
import { patchSourceOptions, auditMapStatusOptions } from '@/utils/global'
|
||||
import { dataProcessing } from '@/views/demo/tiankongdi/util.ts'
|
||||
import {showDrawBack, drawBackSpan} from '@/views/demo/util'
|
||||
|
||||
const userStore = useUserStore()
|
||||
|
||||
|
|
@ -251,6 +266,7 @@
|
|||
type: null,
|
||||
sort: null,
|
||||
order: null,
|
||||
nowStatus: [],
|
||||
});
|
||||
const markTypeOptions = ref([
|
||||
{ label: '合法', value: '合法' },
|
||||
|
|
@ -268,8 +284,14 @@
|
|||
}
|
||||
async function getTaskList() {
|
||||
console.log(params.value);
|
||||
let requestData = {...params.value}
|
||||
if(requestData.nowStatus.length > 0){
|
||||
requestData.nowStatus = requestData.nowStatus.join(',')
|
||||
}else{
|
||||
requestData.nowStatus = null
|
||||
}
|
||||
emits('openLoading')
|
||||
const data = await LoadTaskDetailList(params.value);
|
||||
const data = await LoadTaskDetailList(requestData);
|
||||
emits('closeLoading')
|
||||
dataList.value = data.items;
|
||||
total.value = data.total;
|
||||
|
|
|
|||
|
|
@ -31,7 +31,17 @@
|
|||
@change="(value) => mapListScreenChange(value, 'batch')"
|
||||
/>
|
||||
</div>
|
||||
<div class="screen-item" style="margin-right: 18px">
|
||||
<div class="screen-item" style="margin-right: 13px;margin-bottom: 12px">
|
||||
<div class="screen-item-label">乡镇</div>
|
||||
<a-select
|
||||
allowClear
|
||||
style="width:120px;"
|
||||
v-model:value="infoScreenData.streetid"
|
||||
:options="streetsAreaOptions"
|
||||
@change="(value) => mapListScreenChange(value, 'streetid')"
|
||||
/>
|
||||
</div>
|
||||
<div class="screen-item" style="margin-bottom: 12px;width:389px">
|
||||
<a-input
|
||||
allowClear
|
||||
placeholder="请输入图斑编号"
|
||||
|
|
@ -40,7 +50,7 @@
|
|||
@change="(value) => mapListScreenChange(value.target.value, 'caseNo')"
|
||||
/>
|
||||
</div>
|
||||
<div class="screen-item">
|
||||
<div class="screen-item" style="flex: 1;justify-content: flex-end;">
|
||||
<a-button class="item-button" style="background: #2B75E1;" type="primary" :icon="h(SearchOutlined)" @click="querysBtn"
|
||||
>查询</a-button>
|
||||
<a-button class="item-button img" type="primary" @click="changeArea">
|
||||
|
|
@ -297,6 +307,7 @@
|
|||
import { ref, onMounted, defineEmits, computed, h } from 'vue';
|
||||
import { SearchOutlined, DownOutlined, SendOutlined } from '@ant-design/icons-vue';
|
||||
import Icon from '@/components/Icon/Icon.vue';
|
||||
import { getLoadStreet } from '@/api/tiankongdi/index';
|
||||
import { LoadCaiKuangTaskList, GetCaseInfoById, CaseRecover } from '@/api/degraining/index';
|
||||
import {
|
||||
batchOptions,
|
||||
|
|
@ -317,6 +328,7 @@ const simpleImage = Empty.PRESENTED_IMAGE_SIMPLE;
|
|||
const pageSize = ref(10);
|
||||
const pageNo = ref(1);
|
||||
const total = ref(0);
|
||||
const streetsAreaOptions = ref<{ label: string; value: string}[]>([])
|
||||
const mapStatusOptions = ref([
|
||||
{
|
||||
label: '正常',
|
||||
|
|
@ -433,6 +445,15 @@ const openCollect = computed(() => {
|
|||
});
|
||||
const showInfoData = ref();
|
||||
onMounted(() => {
|
||||
getLoadStreet().then(res => {
|
||||
console.log(res)
|
||||
res.forEach(item => {
|
||||
streetsAreaOptions.value.push({
|
||||
label: item.Name,
|
||||
value: item.Id,
|
||||
})
|
||||
})
|
||||
})
|
||||
getInfoList();
|
||||
});
|
||||
|
||||
|
|
@ -634,7 +655,7 @@ function querysBtn(){
|
|||
box-shadow: 2px 3px 3px 1px rgba(13, 13, 13, 0.05);
|
||||
}
|
||||
.item-input {
|
||||
width: 223px;
|
||||
width: 389px;
|
||||
font-family: Alibaba PuHuiTi;
|
||||
font-weight: 500;
|
||||
font-size: 17px;
|
||||
|
|
|
|||
|
|
@ -2,6 +2,7 @@
|
|||
<div class="detail-container">
|
||||
<div class="map-container">
|
||||
<MapboxMap
|
||||
:imageList="imageList"
|
||||
:geomsList="geomsList"
|
||||
:mapConfig="mapConfig"
|
||||
@handlerDrawComplete="handlerDrawComplete"
|
||||
|
|
@ -105,43 +106,70 @@
|
|||
getLabel('weifaleixing', weifaleixing)
|
||||
}}</a-descriptions-item>
|
||||
<a-descriptions-item v-if="is_illegal == 1" label="附件">
|
||||
<template v-for="(item, itemIndex) in fujianList" :key="itemIndex">
|
||||
<div v-if="item" style="margin-top: 10px">
|
||||
<Icon
|
||||
:style="`font-size: 30px; cursor: pointer;`"
|
||||
icon="ion:document-attach-outline"
|
||||
@click="downLoadFile(item)"
|
||||
/>
|
||||
{{ item }}
|
||||
</div>
|
||||
</template>
|
||||
<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;"
|
||||
:src="`${VITE_GLOB_INFO_IMAGE_URL}/${item}`"
|
||||
:preview="{getContainer}"
|
||||
></a-image>
|
||||
<div v-else>
|
||||
<Icon
|
||||
v-if="item"
|
||||
:style="`font-size: 30px; cursor: pointer;`"
|
||||
icon="ion:document-attach-outline"
|
||||
@click="downLoadFile(item)"
|
||||
/>
|
||||
{{ item }}
|
||||
</div>
|
||||
</template>
|
||||
</a-image-preview-group>
|
||||
</a-descriptions-item>
|
||||
<a-descriptions-item v-if="is_illegal == 0" label="附件">
|
||||
<template v-for="(item, itemIndex) in hefafujianList" :key="itemIndex">
|
||||
<div v-if="item" style="margin-top: 10px">
|
||||
<Icon
|
||||
:style="`font-size: 30px; cursor: pointer;`"
|
||||
icon="ion:document-attach-outline"
|
||||
@click="downLoadFile(item)"
|
||||
/>
|
||||
{{ item }}
|
||||
</div>
|
||||
</template>
|
||||
<a-image-preview-group :preview="{getContainer,}">
|
||||
<template v-for="(item, itemIndex) in hefafujianList" :key="itemIndex">
|
||||
<a-image
|
||||
v-if="showImage(item)"
|
||||
style="width:100px;height:100px;"
|
||||
:src="`${VITE_GLOB_INFO_IMAGE_URL}/${item}`"
|
||||
:preview="{getContainer,}"
|
||||
></a-image>
|
||||
<div v-else>
|
||||
<Icon
|
||||
v-if="item"
|
||||
:style="`font-size: 30px; cursor: pointer;`"
|
||||
icon="ion:document-attach-outline"
|
||||
@click="downLoadFile(item)"
|
||||
/>
|
||||
{{ item }}
|
||||
</div>
|
||||
</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>
|
||||
<a-descriptions-item v-if="is_illegal == 2" label="附件">
|
||||
<template v-for="(item, itemIndex) in qitafujianList" :key="itemIndex">
|
||||
<div v-if="item" style="margin-top: 10px">
|
||||
<Icon
|
||||
:style="`font-size: 30px; cursor: pointer;`"
|
||||
icon="ion:document-attach-outline"
|
||||
@click="downLoadFile(item)"
|
||||
/>
|
||||
{{ item }}
|
||||
</div>
|
||||
</template>
|
||||
<a-image-preview-group :preview="{getContainer,}">
|
||||
<template v-for="(item, itemIndex) in qitafujianList" :key="itemIndex">
|
||||
<a-image
|
||||
v-if="showImage(item)"
|
||||
style="width:100px;height:100px;"
|
||||
:src="`${VITE_GLOB_INFO_IMAGE_URL}/${item}`"
|
||||
:preview="{getContainer}"
|
||||
></a-image>
|
||||
<div v-else>
|
||||
<Icon
|
||||
v-if="item"
|
||||
:style="`font-size: 30px; cursor: pointer;`"
|
||||
icon="ion:document-attach-outline"
|
||||
@click="downLoadFile(item)"
|
||||
/>
|
||||
{{ item }}
|
||||
</div>
|
||||
</template>
|
||||
</a-image-preview-group>
|
||||
</a-descriptions-item>
|
||||
<a-descriptions-item label="判定依据说明">{{
|
||||
pandingyijushuoming
|
||||
|
|
@ -151,18 +179,20 @@
|
|||
<a-image-preview-group
|
||||
:preview="{
|
||||
getContainer:getContainer,
|
||||
onVisibleChange:handlerImageChange
|
||||
}"
|
||||
>
|
||||
<template v-for="(imageItem, imageIndex) in anjianzhaopianList" :key="imageIndex">
|
||||
<a-image
|
||||
v-if="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>
|
||||
|
|
@ -189,16 +219,25 @@
|
|||
getLabel('measure_name', measure_name)
|
||||
}}</a-descriptions-item>
|
||||
<a-descriptions-item v-if="measure_name == 0" label="附件">
|
||||
<template v-for="(item, itemIndex) in yanshoubiaoList" :key="itemIndex">
|
||||
<div v-if="item">
|
||||
<Icon
|
||||
:style="`font-size: 30px; cursor: pointer;`"
|
||||
icon="ion:document-attach-outline"
|
||||
@click="downLoadFile(item)"
|
||||
/>
|
||||
{{ item }}
|
||||
</div>
|
||||
</template>
|
||||
<a-image-preview-group :preview="{getContainer,}">
|
||||
<template v-for="(item, itemIndex) in yanshoubiaoList" :key="itemIndex">
|
||||
<a-image
|
||||
v-if="showImage(item)"
|
||||
style="width:100px;height:100px;"
|
||||
:src="`${VITE_GLOB_INFO_IMAGE_URL}/${item}`"
|
||||
:preview="{getContainer,}"
|
||||
></a-image>
|
||||
<div v-else>
|
||||
<Icon
|
||||
v-if="item"
|
||||
:style="`font-size: 30px; cursor: pointer;`"
|
||||
icon="ion:document-attach-outline"
|
||||
@click="downLoadFile(item)"
|
||||
/>
|
||||
{{ item }}
|
||||
</div>
|
||||
</template>
|
||||
</a-image-preview-group>
|
||||
</a-descriptions-item>
|
||||
<a-descriptions-item v-if="measure_name == 0" label="照片">
|
||||
<div class="image-div">
|
||||
|
|
@ -225,17 +264,25 @@
|
|||
</div>
|
||||
</a-descriptions-item>
|
||||
<a-descriptions-item v-if="measure_name == 1" label="附件">
|
||||
<template v-for="(item, itemIndex) in zhenggaifujianList" :key="itemIndex">
|
||||
<div v-if="item">
|
||||
<Icon
|
||||
:style="`font-size: 30px; cursor: pointer;`"
|
||||
icon="ion:document-attach-outline"
|
||||
@click="downLoadFile(item)"
|
||||
/>
|
||||
{{ item }}
|
||||
</div>
|
||||
</template>
|
||||
<!-- {{ zhenggaifujian }} -->
|
||||
<a-image-preview-group :preview="{getContainer,}">
|
||||
<template v-for="(item, itemIndex) in zhenggaifujianList" :key="itemIndex">
|
||||
<a-image
|
||||
v-if="showImage(item)"
|
||||
style="width:100px;height:100px;"
|
||||
:src="`${VITE_GLOB_INFO_IMAGE_URL}/${item}`"
|
||||
:preview="{getContainer}"
|
||||
></a-image>
|
||||
<div v-else>
|
||||
<Icon
|
||||
v-if="item"
|
||||
:style="`font-size: 30px; cursor: pointer;`"
|
||||
icon="ion:document-attach-outline"
|
||||
@click="downLoadFile(item)"
|
||||
/>
|
||||
{{ item }}
|
||||
</div>
|
||||
</template>
|
||||
</a-image-preview-group>
|
||||
</a-descriptions-item>
|
||||
<a-descriptions-item v-if="measure_name == 1" label="照片">
|
||||
<div class="image-div">
|
||||
|
|
@ -338,15 +385,18 @@
|
|||
</template>
|
||||
|
||||
<script setup lang="ts">
|
||||
import { defineProps, ref, computed } from 'vue';
|
||||
import { defineProps, ref, computed,onBeforeMount } 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 { 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,
|
||||
|
|
@ -369,7 +419,7 @@
|
|||
const props = defineProps(['showInfoData']);
|
||||
const activeKey = ref('1');
|
||||
|
||||
console.log('showInfoData123', props.showInfoData);
|
||||
|
||||
const geomsList = ref();
|
||||
const {
|
||||
id,
|
||||
|
|
@ -478,7 +528,77 @@
|
|||
xchczhaopian,
|
||||
synchronoustime,
|
||||
} = props.showInfoData;
|
||||
|
||||
const imageList = ref([])
|
||||
async function getCaseImgList(){
|
||||
|
||||
imageList.value = await getLoadCaseImgList({caseid:id});
|
||||
|
||||
|
||||
|
||||
// 匹配去除无效图片
|
||||
let zhengshiImageList = [];
|
||||
imageList.value?.forEach((item,index)=>{
|
||||
let obj = anjianzhaopianList.value?.find((it,idx)=>{
|
||||
return item.filePath == it;
|
||||
})
|
||||
if(obj){
|
||||
zhengshiImageList.push(imageList.value[index]);
|
||||
}
|
||||
})
|
||||
|
||||
// console.log("imageList",imageList.value);
|
||||
// console.log("anjianzhaopianList",anjianzhaopianList.value);
|
||||
// console.log("zhengshiImageList",zhengshiImageList);
|
||||
|
||||
MapboxComponent.value.handlerLoadPictureAzimuth(zhengshiImageList);
|
||||
}
|
||||
|
||||
function handlerPreviewImage(index,url){
|
||||
|
||||
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(){
|
||||
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))
|
||||
}
|
||||
}
|
||||
}
|
||||
});
|
||||
// 配置观察选项
|
||||
const config = { attributes: true };
|
||||
// 开始观察目标节点
|
||||
observer.observe(targetNode[0], config);
|
||||
isInitImageLisener.value = true;
|
||||
},250)
|
||||
}
|
||||
}
|
||||
|
||||
onBeforeMount(()=>{
|
||||
|
||||
})
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
const anjianzhaopianList = computed(() => {
|
||||
getCaseImgList();
|
||||
return anjianzhaopian ? anjianzhaopian.split(',') : [];
|
||||
});
|
||||
const casepicList = computed(() => {
|
||||
|
|
@ -542,7 +662,7 @@
|
|||
});
|
||||
return label;
|
||||
};
|
||||
function changeTask() {
|
||||
async function changeTask() {
|
||||
let getGeomPrams = {
|
||||
TableName: 'drone_shp_data ',
|
||||
FieldName: 'gid',
|
||||
|
|
@ -552,6 +672,8 @@
|
|||
key: null,
|
||||
};
|
||||
if (props.showInfoData.geomid) {
|
||||
|
||||
|
||||
getGeom(getGeomPrams).then((res) => {
|
||||
let geoms = [];
|
||||
if (res) {
|
||||
|
|
@ -577,7 +699,27 @@
|
|||
}
|
||||
}
|
||||
const downLoadFile = (url) => {
|
||||
window.open(`${VITE_GLOB_INFO_IMAGE_URL}/${url}`, 'mozillaTab');
|
||||
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');
|
||||
}
|
||||
|
||||
};
|
||||
const getContainer = () => {
|
||||
return document.getElementById('info-container');
|
||||
|
|
@ -596,6 +738,13 @@
|
|||
return Number(resultString).toFixed(2);
|
||||
}
|
||||
};
|
||||
const showImage = (url) => {
|
||||
if(url.indexOf('.png') !== -1 || url.indexOf('.jpg') !== -1 || url.indexOf('.jpeg') !== -1 ){
|
||||
return true
|
||||
}else{
|
||||
return false
|
||||
}
|
||||
}
|
||||
</script>
|
||||
|
||||
<style lang="scss" scoped>
|
||||
|
|
|
|||
|
|
@ -147,7 +147,7 @@
|
|||
</div>
|
||||
<div class="data-list-div" style="padding-top: 1px;">
|
||||
<div v-for="(item, index) in props.infoDataList" :key="index" class="data-list-item">
|
||||
<div class="back-box" v-if="item.isdrawback == 1">驳回</div>
|
||||
<div class="back-box" v-if="showDrawBack(item)">{{ drawBackSpan(item) }}</div>
|
||||
<div class="data-list-layout-div">
|
||||
<div class="data-list-title-div">
|
||||
<img src="/positioning.png" class="map-mark" style="cursor:pointer;" @click="locationFun(item)"/>
|
||||
|
|
@ -253,6 +253,7 @@ import { flowStore } from '@/store/modules/flow';
|
|||
import { getDetail } from '@/api/sys/WFSchemeInfo';
|
||||
import { Audit } from '@/views/demo/workflow/task/process/page';
|
||||
import { dataProcessing } from '@/views/demo/tiankongdi/util.ts'
|
||||
import {showDrawBack, drawBackSpan} from '@/views/demo/util'
|
||||
const userStore = useUserStore()
|
||||
const flowWfDataStore = flowStore();
|
||||
const emits = defineEmits([
|
||||
|
|
|
|||
|
|
@ -79,6 +79,20 @@
|
|||
</div>
|
||||
</div>
|
||||
<div class="collect-div">
|
||||
<a-popover placement="bottom">
|
||||
<template #content>
|
||||
<div style="display:flex;">
|
||||
<div>当前状态:</div>
|
||||
<div>
|
||||
<a-checkbox-group
|
||||
v-model:value="params.nowStatus"
|
||||
style="width: 100%"
|
||||
:options="auditMapStatusOptions"></a-checkbox-group>
|
||||
</div>
|
||||
</div>
|
||||
</template>
|
||||
<img src="@/assets/images/tiankongdi/filt.png" class="img-box mr-r-20" />
|
||||
</a-popover>
|
||||
<img src="@/assets/images/tiankongdi/collect-active.png" class="img-box" @click="getCollectList" v-if="openCollect"/>
|
||||
<img src="@/assets/images/tiankongdi/collect.png" class="img-box" @click="getCollectList" v-else/>
|
||||
</div>
|
||||
|
|
@ -90,7 +104,7 @@
|
|||
class="data-list-item"
|
||||
v-if="dataList.length > 0"
|
||||
>
|
||||
<div class="back-box" v-if="item.is_drawback == 1">驳回</div>
|
||||
<div class="back-box" v-if="showDrawBack(item)">{{ drawBackSpan(item) }}</div>
|
||||
<div class="data-list-layout-div">
|
||||
<div class="data-list-title-div">
|
||||
<img src="/positioning.png" class="map-mark" @click="locationFun(item)"/>
|
||||
|
|
@ -201,8 +215,9 @@
|
|||
import { message } from 'ant-design-vue';
|
||||
import { useUserStore } from '@/store/modules/user.ts'
|
||||
import { SearchOutlined, RollbackOutlined } from '@ant-design/icons-vue';
|
||||
import { patchSourceOptions } from '@/utils/global'
|
||||
import { patchSourceOptions, auditMapStatusOptions } from '@/utils/global'
|
||||
import { dataProcessing } from '@/views/demo/tiankongdi/util.ts'
|
||||
import {showDrawBack, drawBackSpan} from '@/views/demo/util'
|
||||
|
||||
const userStore = useUserStore()
|
||||
|
||||
|
|
@ -252,6 +267,7 @@
|
|||
type: null,
|
||||
sort: null,
|
||||
order: null,
|
||||
nowStatus: [],
|
||||
});
|
||||
const markTypeOptions = ref([
|
||||
{ label: '拆除复耕', value: '拆除复耕' },
|
||||
|
|
@ -268,8 +284,14 @@
|
|||
}
|
||||
async function getTaskList() {
|
||||
console.log(params.value);
|
||||
let requestData = {...params.value}
|
||||
if(requestData.nowStatus.length > 0){
|
||||
requestData.nowStatus = requestData.nowStatus.join(',')
|
||||
}else{
|
||||
requestData.nowStatus = null
|
||||
}
|
||||
emits('openLoading')
|
||||
const data = await LoadTaskIllegalDetailList(params.value);
|
||||
const data = await LoadTaskIllegalDetailList(requestData);
|
||||
emits('closeLoading')
|
||||
dataList.value = data.items;
|
||||
total.value = data.total;
|
||||
|
|
|
|||
|
|
@ -79,6 +79,20 @@
|
|||
</div>
|
||||
</div>
|
||||
<div style="display: flex;align-items: center;cursor: pointer;">
|
||||
<a-popover placement="bottom">
|
||||
<template #content>
|
||||
<div style="display:flex;">
|
||||
<div>当前状态:</div>
|
||||
<div>
|
||||
<a-checkbox-group
|
||||
v-model:value="params.nowStatus"
|
||||
style="width: 100%"
|
||||
:options="auditMapStatusOptions"></a-checkbox-group>
|
||||
</div>
|
||||
</div>
|
||||
</template>
|
||||
<img src="@/assets/images/tiankongdi/filt.png" class="img-box mr-r-20" />
|
||||
</a-popover>
|
||||
<img src="@/assets/images/tiankongdi/collect-active.png" class="img-box" @click="getCollectList" v-if="openCollect"/>
|
||||
<img src="@/assets/images/tiankongdi/collect.png" class="img-box" @click="getCollectList" v-else/>
|
||||
</div>
|
||||
|
|
@ -90,7 +104,7 @@
|
|||
class="data-list-item"
|
||||
v-if="dataList.length > 0"
|
||||
>
|
||||
<div class="back-box" v-if="item.is_drawback == 1">驳回</div>
|
||||
<div class="back-box" v-if="showDrawBack(item)">{{ drawBackSpan(item) }}</div>
|
||||
<div class="data-list-layout-div">
|
||||
<div class="data-list-title-div">
|
||||
<img src="/positioning.png" class="map-mark" @click="locationFun(item)"/>
|
||||
|
|
@ -200,8 +214,9 @@
|
|||
import { message } from 'ant-design-vue';
|
||||
import { useUserStore } from '@/store/modules/user.ts'
|
||||
import { SearchOutlined, RollbackOutlined } from '@ant-design/icons-vue';
|
||||
import { patchSourceOptions } from '@/utils/global'
|
||||
import { patchSourceOptions, auditMapStatusOptions } from '@/utils/global'
|
||||
import { dataProcessing } from '@/views/demo/tiankongdi/util.ts'
|
||||
import {showDrawBack, drawBackSpan} from '@/views/demo/util'
|
||||
|
||||
const userStore = useUserStore()
|
||||
|
||||
|
|
@ -251,6 +266,7 @@
|
|||
type: null,
|
||||
sort: null,
|
||||
order: null,
|
||||
nowStatus: [],
|
||||
});
|
||||
const markTypeOptions = ref([
|
||||
{ label: '合法', value: '合法' },
|
||||
|
|
@ -268,8 +284,14 @@
|
|||
}
|
||||
async function getTaskList() {
|
||||
console.log(params.value);
|
||||
let requestData = {...params.value}
|
||||
if(requestData.nowStatus.length > 0){
|
||||
requestData.nowStatus = requestData.nowStatus.join(',')
|
||||
}else{
|
||||
requestData.nowStatus = null
|
||||
}
|
||||
emits('openLoading')
|
||||
const data = await LoadTaskDetailList(params.value);
|
||||
const data = await LoadTaskDetailList(requestData);
|
||||
emits('closeLoading')
|
||||
dataList.value = data.items;
|
||||
total.value = data.total;
|
||||
|
|
|
|||
|
|
@ -2,6 +2,7 @@
|
|||
<div class="detail-container">
|
||||
<div class="map-container">
|
||||
<MapboxMap
|
||||
:imageList="imageList"
|
||||
:geomsList="geomsList"
|
||||
:mapConfig="mapConfig"
|
||||
@handlerDrawComplete="handlerDrawComplete"
|
||||
|
|
@ -51,17 +52,23 @@
|
|||
<a-descriptions-item label="下发时间">{{ synchronoustime }}</a-descriptions-item>
|
||||
<a-descriptions-item label="图斑照片">
|
||||
<div class="image-div">
|
||||
<template v-for="(imageItem, imageIndex) in casepicList" :key="imageIndex">
|
||||
<a-image
|
||||
v-if="imageItem"
|
||||
width="100px"
|
||||
height="100px"
|
||||
:src="`${VITE_GLOB_INFO_IMAGE_URL}/${imageItem}`"
|
||||
:preview="{
|
||||
getContainer,
|
||||
}"
|
||||
></a-image>
|
||||
</template>
|
||||
<a-image-preview-group
|
||||
:preview="{
|
||||
getContainer:getContainer,
|
||||
}"
|
||||
>
|
||||
<template v-for="(imageItem, imageIndex) in casepicList" :key="imageIndex">
|
||||
<a-image
|
||||
v-if="imageItem"
|
||||
width="100px"
|
||||
height="100px"
|
||||
:src="`${VITE_GLOB_INFO_IMAGE_URL}/${imageItem}`"
|
||||
:preview="{
|
||||
getContainer,
|
||||
}"
|
||||
></a-image>
|
||||
</template>
|
||||
</a-image-preview-group>
|
||||
</div>
|
||||
</a-descriptions-item>
|
||||
<a-descriptions-item label="接收人">{{ jieshou_people }}</a-descriptions-item>
|
||||
|
|
@ -99,60 +106,95 @@
|
|||
getLabel('weifaleixing', weifaleixing)
|
||||
}}</a-descriptions-item>
|
||||
<a-descriptions-item v-if="is_illegal == 1" label="附件">
|
||||
<template v-for="(item, itemIndex) in fujianList" :key="itemIndex">
|
||||
<div v-if="item" style="margin-top: 10px">
|
||||
<Icon
|
||||
:style="`font-size: 30px; cursor: pointer;`"
|
||||
icon="ion:document-attach-outline"
|
||||
@click="downLoadFile(item)"
|
||||
/>
|
||||
{{ item }}
|
||||
</div>
|
||||
</template>
|
||||
<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;"
|
||||
:src="`${VITE_GLOB_INFO_IMAGE_URL}/${item}`"
|
||||
:preview="{getContainer}"
|
||||
></a-image>
|
||||
<div v-else>
|
||||
<Icon
|
||||
v-if="item"
|
||||
:style="`font-size: 30px; cursor: pointer;`"
|
||||
icon="ion:document-attach-outline"
|
||||
@click="downLoadFile(item)"
|
||||
/>
|
||||
{{ item }}
|
||||
</div>
|
||||
</template>
|
||||
</a-image-preview-group>
|
||||
</a-descriptions-item>
|
||||
<a-descriptions-item v-if="is_illegal == 0" label="附件">
|
||||
<template v-for="(item, itemIndex) in hefafujianList" :key="itemIndex">
|
||||
<div v-if="item" style="margin-top: 10px">
|
||||
<Icon
|
||||
:style="`font-size: 30px; cursor: pointer;`"
|
||||
icon="ion:document-attach-outline"
|
||||
@click="downLoadFile(item)"
|
||||
/>
|
||||
{{ item }}
|
||||
</div>
|
||||
</template>
|
||||
<a-image-preview-group :preview="{getContainer,}">
|
||||
<template v-for="(item, itemIndex) in hefafujianList" :key="itemIndex">
|
||||
<a-image
|
||||
v-if="showImage(item)"
|
||||
style="width:100px;height:100px;"
|
||||
:src="`${VITE_GLOB_INFO_IMAGE_URL}/${item}`"
|
||||
:preview="{getContainer,}"
|
||||
></a-image>
|
||||
<div v-else>
|
||||
<Icon
|
||||
v-if="item"
|
||||
:style="`font-size: 30px; cursor: pointer;`"
|
||||
icon="ion:document-attach-outline"
|
||||
@click="downLoadFile(item)"
|
||||
/>
|
||||
{{ item }}
|
||||
</div>
|
||||
</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>
|
||||
<a-descriptions-item v-if="is_illegal == 2" label="附件">
|
||||
<template v-for="(item, itemIndex) in qitafujianList" :key="itemIndex">
|
||||
<div v-if="item" style="margin-top: 10px">
|
||||
<Icon
|
||||
:style="`font-size: 30px; cursor: pointer;`"
|
||||
icon="ion:document-attach-outline"
|
||||
@click="downLoadFile(item)"
|
||||
/>
|
||||
{{ item }}
|
||||
</div>
|
||||
</template>
|
||||
<a-image-preview-group :preview="{getContainer,}">
|
||||
<template v-for="(item, itemIndex) in qitafujianList" :key="itemIndex">
|
||||
<a-image
|
||||
v-if="showImage(item)"
|
||||
style="width:100px;height:100px;"
|
||||
:src="`${VITE_GLOB_INFO_IMAGE_URL}/${item}`"
|
||||
:preview="{getContainer}"
|
||||
></a-image>
|
||||
<div v-else>
|
||||
<Icon
|
||||
v-if="item"
|
||||
:style="`font-size: 30px; cursor: pointer;`"
|
||||
icon="ion:document-attach-outline"
|
||||
@click="downLoadFile(item)"
|
||||
/>
|
||||
{{ item }}
|
||||
</div>
|
||||
</template>
|
||||
</a-image-preview-group>
|
||||
</a-descriptions-item>
|
||||
<a-descriptions-item label="判定依据说明">{{
|
||||
pandingyijushuoming
|
||||
}}</a-descriptions-item>
|
||||
<a-descriptions-item label="照片">
|
||||
<div class="image-div">
|
||||
<template v-for="(imageItem, imageIndex) in anjianzhaopianList" :key="imageIndex">
|
||||
<a-image
|
||||
v-if="imageItem"
|
||||
width="100px"
|
||||
height="100px"
|
||||
:src="`${VITE_GLOB_INFO_IMAGE_URL}/${imageItem}`"
|
||||
:preview="{
|
||||
getContainer,
|
||||
}"
|
||||
></a-image>
|
||||
</template>
|
||||
<a-image-preview-group
|
||||
:preview="{
|
||||
getContainer:getContainer,
|
||||
onVisibleChange:handlerImageChange
|
||||
}"
|
||||
>
|
||||
<template v-for="(imageItem, imageIndex) in anjianzhaopianList" :key="imageIndex">
|
||||
<a-image
|
||||
v-if="imageItem"
|
||||
@click="handlerPreviewImage(imageIndex,imageItem)"
|
||||
width="100px"
|
||||
height="100px"
|
||||
:src="`${VITE_GLOB_INFO_IMAGE_URL}/${imageItem}`"
|
||||
:preview="{
|
||||
getContainer,
|
||||
}"
|
||||
></a-image>
|
||||
</template>
|
||||
</a-image-preview-group>
|
||||
</div>
|
||||
</a-descriptions-item>
|
||||
<a-descriptions-item label="填报人">{{ examiner_name }}</a-descriptions-item>
|
||||
|
|
@ -177,61 +219,90 @@
|
|||
getLabel('measure_name', measure_name)
|
||||
}}</a-descriptions-item>
|
||||
<a-descriptions-item v-if="measure_name == 0" label="附件">
|
||||
<template v-for="(item, itemIndex) in yanshoubiaoList" :key="itemIndex">
|
||||
<div v-if="item">
|
||||
<Icon
|
||||
:style="`font-size: 30px; cursor: pointer;`"
|
||||
icon="ion:document-attach-outline"
|
||||
@click="downLoadFile(item)"
|
||||
/>
|
||||
{{ item }}
|
||||
</div>
|
||||
</template>
|
||||
<a-image-preview-group :preview="{getContainer,}">
|
||||
<template v-for="(item, itemIndex) in yanshoubiaoList" :key="itemIndex">
|
||||
<a-image
|
||||
v-if="showImage(item)"
|
||||
style="width:100px;height:100px;"
|
||||
:src="`${VITE_GLOB_INFO_IMAGE_URL}/${item}`"
|
||||
:preview="{getContainer,}"
|
||||
></a-image>
|
||||
<div v-else>
|
||||
<Icon
|
||||
v-if="item"
|
||||
:style="`font-size: 30px; cursor: pointer;`"
|
||||
icon="ion:document-attach-outline"
|
||||
@click="downLoadFile(item)"
|
||||
/>
|
||||
{{ item }}
|
||||
</div>
|
||||
</template>
|
||||
</a-image-preview-group>
|
||||
</a-descriptions-item>
|
||||
<a-descriptions-item v-if="measure_name == 0" label="照片">
|
||||
<div class="image-div">
|
||||
<template
|
||||
v-for="(imageItem, imageIndex) in chaichufugenghoupicList"
|
||||
:key="imageIndex"
|
||||
>
|
||||
<a-image
|
||||
v-if="imageItem"
|
||||
width="100px"
|
||||
height="100px"
|
||||
:src="`${VITE_GLOB_INFO_IMAGE_URL}/${imageItem}`"
|
||||
:preview="{
|
||||
getContainer,
|
||||
}"
|
||||
></a-image>
|
||||
</template>
|
||||
<a-image-preview-group
|
||||
:preview="{
|
||||
getContainer:getContainer,
|
||||
}"
|
||||
>
|
||||
<template
|
||||
v-for="(imageItem, imageIndex) in chaichufugenghoupicList"
|
||||
:key="imageIndex"
|
||||
>
|
||||
<a-image
|
||||
v-if="imageItem"
|
||||
width="100px"
|
||||
height="100px"
|
||||
:src="`${VITE_GLOB_INFO_IMAGE_URL}/${imageItem}`"
|
||||
:preview="{
|
||||
getContainer,
|
||||
}"
|
||||
></a-image>
|
||||
</template>
|
||||
</a-image-preview-group>
|
||||
</div>
|
||||
</a-descriptions-item>
|
||||
<a-descriptions-item v-if="measure_name == 1" label="附件">
|
||||
<template v-for="(item, itemIndex) in zhenggaifujianList" :key="itemIndex">
|
||||
<div v-if="item">
|
||||
<Icon
|
||||
:style="`font-size: 30px; cursor: pointer;`"
|
||||
icon="ion:document-attach-outline"
|
||||
@click="downLoadFile(item)"
|
||||
/>
|
||||
{{ item }}
|
||||
</div>
|
||||
</template>
|
||||
<!-- {{ zhenggaifujian }} -->
|
||||
<a-image-preview-group :preview="{getContainer,}">
|
||||
<template v-for="(item, itemIndex) in zhenggaifujianList" :key="itemIndex">
|
||||
<a-image
|
||||
v-if="showImage(item)"
|
||||
style="width:100px;height:100px;"
|
||||
:src="`${VITE_GLOB_INFO_IMAGE_URL}/${item}`"
|
||||
:preview="{getContainer}"
|
||||
></a-image>
|
||||
<div v-else>
|
||||
<Icon
|
||||
v-if="item"
|
||||
:style="`font-size: 30px; cursor: pointer;`"
|
||||
icon="ion:document-attach-outline"
|
||||
@click="downLoadFile(item)"
|
||||
/>
|
||||
{{ item }}
|
||||
</div>
|
||||
</template>
|
||||
</a-image-preview-group>
|
||||
</a-descriptions-item>
|
||||
<a-descriptions-item v-if="measure_name == 1" label="照片">
|
||||
<div class="image-div">
|
||||
<template v-for="(imageItem, imageIndex) in bubanzhaopianList" :key="imageIndex">
|
||||
<a-image
|
||||
v-if="imageItem"
|
||||
width="100px"
|
||||
height="100px"
|
||||
:src="`${VITE_GLOB_INFO_IMAGE_URL}/${imageItem}`"
|
||||
:preview="{
|
||||
getContainer,
|
||||
}"
|
||||
></a-image>
|
||||
</template>
|
||||
<a-image-preview-group
|
||||
:preview="{
|
||||
getContainer:getContainer,
|
||||
}"
|
||||
>
|
||||
<template v-for="(imageItem, imageIndex) in bubanzhaopianList" :key="imageIndex">
|
||||
<a-image
|
||||
v-if="imageItem"
|
||||
width="100px"
|
||||
height="100px"
|
||||
:src="`${VITE_GLOB_INFO_IMAGE_URL}/${imageItem}`"
|
||||
:preview="{
|
||||
getContainer,
|
||||
}"
|
||||
></a-image>
|
||||
</template>
|
||||
</a-image-preview-group>
|
||||
</div>
|
||||
</a-descriptions-item>
|
||||
<a-descriptions-item label="办理人">{{ transactor_name }}</a-descriptions-item>
|
||||
|
|
@ -314,15 +385,18 @@
|
|||
</template>
|
||||
|
||||
<script setup lang="ts">
|
||||
import { defineProps, ref, computed } from 'vue';
|
||||
import { defineProps, ref, computed,onBeforeMount } 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 { 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,
|
||||
|
|
@ -345,7 +419,7 @@
|
|||
const props = defineProps(['showInfoData']);
|
||||
const activeKey = ref('1');
|
||||
|
||||
console.log('showInfoData123', props.showInfoData);
|
||||
|
||||
const geomsList = ref();
|
||||
const {
|
||||
id,
|
||||
|
|
@ -454,7 +528,77 @@
|
|||
xchczhaopian,
|
||||
synchronoustime,
|
||||
} = props.showInfoData;
|
||||
|
||||
const imageList = ref([])
|
||||
async function getCaseImgList(){
|
||||
|
||||
imageList.value = await getLoadCaseImgList({caseid:id});
|
||||
|
||||
|
||||
|
||||
// 匹配去除无效图片
|
||||
let zhengshiImageList = [];
|
||||
imageList.value?.forEach((item,index)=>{
|
||||
let obj = anjianzhaopianList.value?.find((it,idx)=>{
|
||||
return item.filePath == it;
|
||||
})
|
||||
if(obj){
|
||||
zhengshiImageList.push(imageList.value[index]);
|
||||
}
|
||||
})
|
||||
|
||||
// console.log("imageList",imageList.value);
|
||||
// console.log("anjianzhaopianList",anjianzhaopianList.value);
|
||||
// console.log("zhengshiImageList",zhengshiImageList);
|
||||
|
||||
MapboxComponent.value.handlerLoadPictureAzimuth(zhengshiImageList);
|
||||
}
|
||||
|
||||
function handlerPreviewImage(index,url){
|
||||
|
||||
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(){
|
||||
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))
|
||||
}
|
||||
}
|
||||
}
|
||||
});
|
||||
// 配置观察选项
|
||||
const config = { attributes: true };
|
||||
// 开始观察目标节点
|
||||
observer.observe(targetNode[0], config);
|
||||
isInitImageLisener.value = true;
|
||||
},250)
|
||||
}
|
||||
}
|
||||
|
||||
onBeforeMount(()=>{
|
||||
|
||||
})
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
const anjianzhaopianList = computed(() => {
|
||||
getCaseImgList();
|
||||
return anjianzhaopian ? anjianzhaopian.split(',') : [];
|
||||
});
|
||||
const casepicList = computed(() => {
|
||||
|
|
@ -518,7 +662,7 @@
|
|||
});
|
||||
return label;
|
||||
};
|
||||
function changeTask() {
|
||||
async function changeTask() {
|
||||
let getGeomPrams = {
|
||||
TableName: 'drone_shp_data ',
|
||||
FieldName: 'gid',
|
||||
|
|
@ -528,6 +672,8 @@
|
|||
key: null,
|
||||
};
|
||||
if (props.showInfoData.geomid) {
|
||||
|
||||
|
||||
getGeom(getGeomPrams).then((res) => {
|
||||
let geoms = [];
|
||||
if (res) {
|
||||
|
|
@ -553,7 +699,27 @@
|
|||
}
|
||||
}
|
||||
const downLoadFile = (url) => {
|
||||
window.open(`${VITE_GLOB_INFO_IMAGE_URL}/${url}`, 'mozillaTab');
|
||||
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');
|
||||
}
|
||||
|
||||
};
|
||||
const getContainer = () => {
|
||||
return document.getElementById('info-container');
|
||||
|
|
@ -572,18 +738,26 @@
|
|||
return Number(resultString).toFixed(2);
|
||||
}
|
||||
};
|
||||
const showImage = (url) => {
|
||||
if(url.indexOf('.png') !== -1 || url.indexOf('.jpg') !== -1 || url.indexOf('.jpeg') !== -1 ){
|
||||
return true
|
||||
}else{
|
||||
return false
|
||||
}
|
||||
}
|
||||
</script>
|
||||
|
||||
<style lang="scss" scoped>
|
||||
.image-div {
|
||||
min-width: 340px;
|
||||
max-height: 200px;
|
||||
max-height: 220px;
|
||||
overflow: auto;
|
||||
}
|
||||
.detail-container {
|
||||
width: 100vw;
|
||||
height: calc(100vh - 120px);
|
||||
display: flex;
|
||||
padding: 0px 20px;
|
||||
}
|
||||
.detail-container::after {
|
||||
content: '';
|
||||
|
|
@ -594,10 +768,20 @@
|
|||
}
|
||||
.map-container {
|
||||
float: left;
|
||||
width: 50vw;
|
||||
width: 45vw;
|
||||
height: calc(100vh - 100px);
|
||||
margin-right: 20px;
|
||||
}
|
||||
:deep(.ant-image){
|
||||
margin-right: 10px;
|
||||
margin-bottom: 10px;
|
||||
}
|
||||
:deep(.ant-image-preview-switch-left){
|
||||
position: absolute;
|
||||
}
|
||||
:deep(.ant-image-preview-switch-right){
|
||||
position: absolute;
|
||||
}
|
||||
.info-container {
|
||||
// float: left;
|
||||
position: relative;
|
||||
|
|
@ -613,7 +797,7 @@
|
|||
position: absolute;
|
||||
.ant-image-preview-operations {
|
||||
position: absolute;
|
||||
bottom: 0;
|
||||
top: 0;
|
||||
width: 100%;
|
||||
.ant-image-preview-operations-operation{
|
||||
// flex:1;
|
||||
|
|
|
|||
|
|
@ -147,7 +147,7 @@
|
|||
</div>
|
||||
<div class="data-list-div" style="padding-top: 1px;">
|
||||
<div v-for="(item, index) in props.infoDataList" :key="index" class="data-list-item">
|
||||
<div class="back-box" v-if="item.isdrawback == 1">驳回</div>
|
||||
<div class="back-box" v-if="showDrawBack(item)">{{ drawBackSpan(item) }}</div>
|
||||
<div class="data-list-layout-div">
|
||||
<div class="data-list-title-div">
|
||||
<img src="/positioning.png" class="map-mark" style="cursor:pointer;" @click="locationFun(item)"/>
|
||||
|
|
@ -253,6 +253,7 @@ import { flowStore } from '@/store/modules/flow';
|
|||
import { getDetail } from '@/api/sys/WFSchemeInfo';
|
||||
import { Audit } from '@/views/demo/workflow/task/process/page';
|
||||
import { dataProcessing } from '@/views/demo/tiankongdi/util.ts'
|
||||
import {showDrawBack, drawBackSpan} from '@/views/demo/util'
|
||||
const userStore = useUserStore()
|
||||
const flowWfDataStore = flowStore();
|
||||
const emits = defineEmits([
|
||||
|
|
|
|||
|
|
@ -79,6 +79,20 @@
|
|||
</div>
|
||||
</div>
|
||||
<div class="collect-div">
|
||||
<a-popover placement="bottom">
|
||||
<template #content>
|
||||
<div style="display:flex;">
|
||||
<div>当前状态:</div>
|
||||
<div>
|
||||
<a-checkbox-group
|
||||
v-model:value="params.nowStatus"
|
||||
style="width: 100%"
|
||||
:options="auditMapStatusOptions"></a-checkbox-group>
|
||||
</div>
|
||||
</div>
|
||||
</template>
|
||||
<img src="@/assets/images/tiankongdi/filt.png" class="img-box mr-r-20" />
|
||||
</a-popover>
|
||||
<img src="@/assets/images/tiankongdi/collect-active.png" class="img-box" @click="getCollectList" v-if="openCollect"/>
|
||||
<img src="@/assets/images/tiankongdi/collect.png" class="img-box" @click="getCollectList" v-else/>
|
||||
</div>
|
||||
|
|
@ -90,7 +104,7 @@
|
|||
class="data-list-item"
|
||||
v-if="dataList.length > 0"
|
||||
>
|
||||
<div class="back-box" v-if="item.is_drawback == 1">驳回</div>
|
||||
<div class="back-box" v-if="showDrawBack(item)">{{ drawBackSpan(item) }}</div>
|
||||
<div class="data-list-layout-div">
|
||||
<div class="data-list-title-div">
|
||||
<img src="/positioning.png" class="map-mark" @click="locationFun(item)"/>
|
||||
|
|
@ -201,8 +215,9 @@
|
|||
import { message } from 'ant-design-vue';
|
||||
import { useUserStore } from '@/store/modules/user.ts'
|
||||
import { SearchOutlined, RollbackOutlined } from '@ant-design/icons-vue';
|
||||
import { patchSourceOptions } from '@/utils/global'
|
||||
import { patchSourceOptions, auditMapStatusOptions } from '@/utils/global'
|
||||
import { dataProcessing } from '@/views/demo/tiankongdi/util.ts'
|
||||
import {showDrawBack, drawBackSpan} from '@/views/demo/util'
|
||||
|
||||
const userStore = useUserStore()
|
||||
|
||||
|
|
@ -252,6 +267,7 @@
|
|||
type: null,
|
||||
sort: null,
|
||||
order: null,
|
||||
nowStatus: [],
|
||||
});
|
||||
const markTypeOptions = ref([
|
||||
{ label: '拆除复耕', value: '拆除复耕' },
|
||||
|
|
@ -268,8 +284,14 @@
|
|||
}
|
||||
async function getTaskList() {
|
||||
console.log(params.value);
|
||||
let requestData = {...params.value}
|
||||
if(requestData.nowStatus.length > 0){
|
||||
requestData.nowStatus = requestData.nowStatus.join(',')
|
||||
}else{
|
||||
requestData.nowStatus = null
|
||||
}
|
||||
emits('openLoading')
|
||||
const data = await LoadTaskIllegalDetailList(params.value);
|
||||
const data = await LoadTaskIllegalDetailList(requestData);
|
||||
emits('closeLoading')
|
||||
dataList.value = data.items;
|
||||
total.value = data.total;
|
||||
|
|
|
|||
|
|
@ -79,6 +79,20 @@
|
|||
</div>
|
||||
</div>
|
||||
<div class="collect-div">
|
||||
<a-popover placement="bottom">
|
||||
<template #content>
|
||||
<div style="display:flex;">
|
||||
<div>当前状态:</div>
|
||||
<div>
|
||||
<a-checkbox-group
|
||||
v-model:value="params.nowStatus"
|
||||
style="width: 100%"
|
||||
:options="auditMapStatusOptions"></a-checkbox-group>
|
||||
</div>
|
||||
</div>
|
||||
</template>
|
||||
<img src="@/assets/images/tiankongdi/filt.png" class="img-box mr-r-20" />
|
||||
</a-popover>
|
||||
<img src="@/assets/images/tiankongdi/collect-active.png" class="img-box" @click="getCollectList" v-if="openCollect"/>
|
||||
<img src="@/assets/images/tiankongdi/collect.png" class="img-box" @click="getCollectList" v-else/>
|
||||
</div>
|
||||
|
|
@ -90,7 +104,7 @@
|
|||
class="data-list-item"
|
||||
v-if="dataList.length > 0"
|
||||
>
|
||||
<div class="back-box" v-if="item.is_drawback == 1">驳回</div>
|
||||
<div class="back-box" v-if="showDrawBack(item)">{{ drawBackSpan(item) }}</div>
|
||||
<div class="data-list-layout-div">
|
||||
<div class="data-list-title-div">
|
||||
<img src="/positioning.png" class="map-mark" @click="locationFun(item)"/>
|
||||
|
|
@ -201,8 +215,9 @@
|
|||
import { message } from 'ant-design-vue';
|
||||
import { useUserStore } from '@/store/modules/user.ts'
|
||||
import { SearchOutlined, RollbackOutlined } from '@ant-design/icons-vue';
|
||||
import { patchSourceOptions } from '@/utils/global'
|
||||
import { patchSourceOptions, auditMapStatusOptions } from '@/utils/global'
|
||||
import { dataProcessing } from '@/views/demo/tiankongdi/util.ts'
|
||||
import {showDrawBack, drawBackSpan} from '@/views/demo/util'
|
||||
|
||||
const userStore = useUserStore()
|
||||
|
||||
|
|
@ -252,6 +267,7 @@
|
|||
type: null,
|
||||
sort: null,
|
||||
order: null,
|
||||
nowStatus: [],
|
||||
});
|
||||
const markTypeOptions = ref([
|
||||
{ label: '拆除复耕', value: '拆除复耕' },
|
||||
|
|
@ -268,8 +284,14 @@
|
|||
}
|
||||
async function getTaskList() {
|
||||
console.log(params.value);
|
||||
let requestData = {...params.value}
|
||||
if(requestData.nowStatus.length > 0){
|
||||
requestData.nowStatus = requestData.nowStatus.join(',')
|
||||
}else{
|
||||
requestData.nowStatus = null
|
||||
}
|
||||
emits('openLoading')
|
||||
const data = await getLoadTaskIllegalDetailList(params.value);
|
||||
const data = await getLoadTaskIllegalDetailList(requestData);
|
||||
emits('closeLoading')
|
||||
dataList.value = data.items;
|
||||
total.value = data.total;
|
||||
|
|
|
|||
|
|
@ -15,6 +15,7 @@
|
|||
</template>
|
||||
|
||||
<script lang="ts" setup>
|
||||
import { ref, watch, onMounted } from 'vue';
|
||||
// vben
|
||||
import { useMessage } from '@/hooks/web/useMessage';
|
||||
import { BasicTable, useTable } from '@/components/Table';
|
||||
|
|
@ -30,17 +31,16 @@
|
|||
|
||||
// 历史记录
|
||||
const [registerTable, { reload, getSelectRows }] = useTable({
|
||||
title: '影像管理',
|
||||
api: GeoTiffManagerLoadPage,
|
||||
columns: columns,
|
||||
formConfig: {
|
||||
labelWidth: 120,
|
||||
schemas: searchFormSchema,
|
||||
},
|
||||
showIndexColumn: false,
|
||||
rowSelection: {
|
||||
type: 'radio',
|
||||
},
|
||||
showIndexColumn: true,
|
||||
useSearchForm: true,
|
||||
ellipsis: false,
|
||||
bordered: true,
|
||||
showTableSetting: true,
|
||||
handleSearchInfoFn(info) {
|
||||
|
|
@ -51,12 +51,18 @@
|
|||
|
||||
// 更新tiff影像
|
||||
const updateGeoTiff = () => {
|
||||
GeoTiffManagerUpdateGeoTiff({})
|
||||
GeoTiffManagerUpdateGeoTiff()
|
||||
.then((res) => {
|
||||
if (res) {
|
||||
reload();
|
||||
}
|
||||
})
|
||||
.catch((error) => {});
|
||||
.catch((error) => {
|
||||
console.log(error);
|
||||
});
|
||||
};
|
||||
|
||||
onMounted(() => {
|
||||
reload();
|
||||
});
|
||||
</script>
|
||||
|
|
|
|||
|
|
@ -19,7 +19,8 @@ export const columns = [
|
|||
{
|
||||
title: 'accessUrl',
|
||||
dataIndex: 'accessUrl',
|
||||
width: 100,
|
||||
ifShow: false,
|
||||
width: 300,
|
||||
},
|
||||
{
|
||||
title: 'shpPath',
|
||||
|
|
@ -46,7 +47,7 @@ export const columns = [
|
|||
export const searchFormSchema = [
|
||||
{
|
||||
field: 'key',
|
||||
label: '关键字',
|
||||
label: '数据表名',
|
||||
component: 'Input',
|
||||
colProps: { span: 8 },
|
||||
},
|
||||
|
|
|
|||
|
|
@ -1,10 +1,10 @@
|
|||
<template>
|
||||
<a-tabs v-model:activeKey="activeKey" tabPosition="left">
|
||||
<a-tabs v-model:activeKey="activeKey" tabPosition="left" :centered="true" @change="changeTabs">
|
||||
<a-tab-pane key="1" tab="图层管理">
|
||||
<GeoserverManagement />
|
||||
<GeoserverManagement ref="GeoserverManagementRef" />
|
||||
</a-tab-pane>
|
||||
<a-tab-pane key="2" tab="影像管理">
|
||||
<GeoTiffManager />
|
||||
<GeoTiffManager ref="GeoTiffManagerRef" />
|
||||
</a-tab-pane>
|
||||
<a-tab-pane key="3" tab="航飞图片"> 航飞图片 </a-tab-pane>
|
||||
</a-tabs>
|
||||
|
|
@ -12,9 +12,25 @@
|
|||
<script setup lang="ts">
|
||||
import { ref } from 'vue';
|
||||
// 组件
|
||||
import GeoTiffManager from './GeoTiffManager/index.vue';
|
||||
import GeoserverManagement from '@/views/demo/system/geoservermanagement/index.vue';
|
||||
import GeoTiffManager from './GeoTiffManager/index.vue';
|
||||
|
||||
const activeKey = ref('1');
|
||||
// 图层管理
|
||||
const GeoserverManagementRef = ref();
|
||||
// 影像管理
|
||||
const GeoTiffManagerRef = ref();
|
||||
// 航飞图片
|
||||
|
||||
function changeTabs(activeKey) {
|
||||
console.log(activeKey);
|
||||
if (activeKey == 1) {
|
||||
// 图层管理
|
||||
} else if (activeKey == 2) {
|
||||
// 影像管理
|
||||
} else if (activeKey == 3) {
|
||||
// 航飞图片
|
||||
}
|
||||
}
|
||||
</script>
|
||||
<style lang="scss" scoped></style>
|
||||
|
|
|
|||
|
|
@ -1,7 +1,7 @@
|
|||
<template>
|
||||
<div class="categories-modal-container">
|
||||
<a-form
|
||||
ref="formRef"
|
||||
ref="modalFormRef"
|
||||
:model="props.modalData.data"
|
||||
:rules="props.modalData.type.indexOf('tree') > -1 ? treeRules : tableRules"
|
||||
labelAlign="right"
|
||||
|
|
@ -25,9 +25,9 @@
|
|||
<a-form-item label="名称" name="name">
|
||||
<a-input v-model:value="props.modalData.data.name" />
|
||||
</a-form-item>
|
||||
<a-form-item label="云查询分类" name="overlay">
|
||||
<a-form-item label="云查询分类" name="code">
|
||||
<a-select
|
||||
v-model:value="props.modalData.data.overlay"
|
||||
v-model:value="props.modalData.data.code"
|
||||
:options="props.showTree"
|
||||
:fieldNames="{ label: 'itemName', value: 'itemValue' }"
|
||||
/>
|
||||
|
|
@ -49,18 +49,27 @@
|
|||
/>
|
||||
</a-form-item>
|
||||
<a-form-item label="叠加图层" name="overlayList">
|
||||
<a-select v-model:value="props.modalData.data.overlayList" mode="multiple">
|
||||
<a-select-option value="1" checked>天地图</a-select-option>
|
||||
<a-select-option value="2">图层2</a-select-option>
|
||||
<a-select-option value="3">图层3</a-select-option>
|
||||
<a-select-option value="4">图层4</a-select-option>
|
||||
</a-select>
|
||||
<a-select
|
||||
v-model:value="props.modalData.data.overlayList"
|
||||
mode="multiple"
|
||||
allowClear
|
||||
:options="orverlayListOptioins"
|
||||
:fieldNames="{ label: 'serverName', value: 'id' }"
|
||||
/>
|
||||
</a-form-item>
|
||||
<a-form-item label="是否分类" name="isClass">
|
||||
<a-switch
|
||||
v-model:checked="props.modalData.data.isClass"
|
||||
checked-children="是"
|
||||
un-checked-children="否"
|
||||
@change="
|
||||
if (!props.modalData.data.isClass) {
|
||||
props.modalData.data.classField = undefined;
|
||||
props.modalData.data.classField = '';
|
||||
props.modalData.data.className = undefined;
|
||||
props.modalData.data.className = '';
|
||||
}
|
||||
"
|
||||
/>
|
||||
</a-form-item>
|
||||
<a-form-item label="分类字段" name="classField" v-if="props.modalData.data.isClass">
|
||||
|
|
@ -70,7 +79,7 @@
|
|||
placeholder="请先选择图层"
|
||||
:options="classFieldOptioins"
|
||||
:fieldNames="{ label: 'column_name', value: 'column_name' }"
|
||||
:disabled="classFieldOptioins.length == 0"
|
||||
:disabled="props.modalData.data.layer == undefined"
|
||||
@change="classFieldChange"
|
||||
/>
|
||||
</a-form-item>
|
||||
|
|
@ -88,7 +97,7 @@
|
|||
placeholder="请先选择图层"
|
||||
:options="classFieldOptioins"
|
||||
:fieldNames="{ label: 'column_name', value: 'column_name' }"
|
||||
:disabled="props.modalData.data.classField == undefined"
|
||||
:disabled="props.modalData.data.layer == undefined"
|
||||
/>
|
||||
</a-form-item>
|
||||
<a-form-item label="是否合计" name="isSum">
|
||||
|
|
@ -108,20 +117,26 @@
|
|||
</template>
|
||||
|
||||
<script setup lang="ts">
|
||||
import { defineProps, defineEmits, ref, onMounted } from 'vue';
|
||||
import { defineProps, defineEmits, ref, watch } from 'vue';
|
||||
import { ShpGeoLayerLoadPage } from '@/api/demo/system';
|
||||
import { GetTableAndViewColumnList } from '@/api/demo/formScheme';
|
||||
|
||||
const props = defineProps(['modalData', 'showTree']);
|
||||
const props = defineProps(['modalData', 'showTree', 'layerOptioins', 'orverlayListOptioins']);
|
||||
const emit = defineEmits(['closeModal', 'submit']);
|
||||
const formRef = ref();
|
||||
|
||||
// 云查询图层
|
||||
const layerOptioins: any = ref(props.layerOptioins);
|
||||
// 叠加图层
|
||||
const orverlayListOptioins: any = ref(props.orverlayListOptioins);
|
||||
const modalFormRef = ref();
|
||||
|
||||
const treeRules = {
|
||||
itemName: [{ required: true, message: '名称不能为空', trigger: 'blur' }],
|
||||
itemValue: [{ required: true, message: '类型不能为空', trigger: 'blur' }],
|
||||
};
|
||||
const tableRules = {
|
||||
name: [{ required: true, message: '名称不能为空', trigger: 'blur' }],
|
||||
overlay: [{ required: true, message: '查询分类不能为空', trigger: 'blur' }],
|
||||
code: [{ required: true, message: '查询分类不能为空', trigger: 'blur' }],
|
||||
layer: [{ required: true, message: '图层不能为空', trigger: 'blur' }],
|
||||
tableName: [{ required: true, message: '数据表不能为空', trigger: 'blur' }],
|
||||
overlayList: [{ required: true, message: '叠加图层不能为空', trigger: 'blur' }],
|
||||
|
|
@ -129,8 +144,20 @@
|
|||
className: [{ required: true, message: '分类名称不能为空', trigger: 'blur' }],
|
||||
areaField: [{ required: true, message: '选择面积计算字段不能为空', trigger: 'blur' }],
|
||||
};
|
||||
|
||||
watch(
|
||||
() => props.modalData.data.tableName,
|
||||
(newVal) => {
|
||||
getClassFieldOptioins(newVal);
|
||||
},
|
||||
{
|
||||
immediate: true,
|
||||
deep: true,
|
||||
},
|
||||
);
|
||||
|
||||
const submit = () => {
|
||||
formRef.value
|
||||
modalFormRef.value
|
||||
.validate()
|
||||
.then(() => {
|
||||
emit('submit');
|
||||
|
|
@ -139,23 +166,19 @@
|
|||
console.log('error', error);
|
||||
});
|
||||
};
|
||||
// 关闭弹窗
|
||||
const closeModal = () => {
|
||||
emit('closeModal');
|
||||
clearModalData();
|
||||
clearModal();
|
||||
};
|
||||
const clearModalData = () => {
|
||||
formRef.value.resetFields();
|
||||
// 清理验证
|
||||
const clearModal = () => {
|
||||
modalFormRef.value.clearValidate();
|
||||
classFieldOptioins.value = [];
|
||||
};
|
||||
|
||||
// 云查询图层
|
||||
const layerOptioins: any = ref([]);
|
||||
// 分类字段
|
||||
const classFieldOptioins: any = ref([]);
|
||||
function getLayerOptions() {
|
||||
ShpGeoLayerLoadPage({}).then((res) => {
|
||||
layerOptioins.value = res.items;
|
||||
});
|
||||
}
|
||||
// 云查询图层选中后,设置数据表、分类字段、选择面积计算字段
|
||||
function layerChange(value, option) {
|
||||
// console.log(value);
|
||||
|
|
@ -165,6 +188,7 @@
|
|||
// 分类字段
|
||||
props.modalData.data.classField = undefined;
|
||||
props.modalData.data.className = undefined;
|
||||
props.modalData.data.areaField = undefined;
|
||||
classFieldOptioins.value = [];
|
||||
} else {
|
||||
// 数据表
|
||||
|
|
@ -172,12 +196,20 @@
|
|||
// 分类字段
|
||||
props.modalData.data.classField = undefined;
|
||||
props.modalData.data.className = undefined;
|
||||
let query = { tableName: props.modalData.data.tableName };
|
||||
GetTableAndViewColumnList(query).then((res) => {
|
||||
classFieldOptioins.value = res;
|
||||
});
|
||||
props.modalData.data.areaField = undefined;
|
||||
// 分类字段、选择面积计算字段options
|
||||
getClassFieldOptioins(props.modalData.data.tableName);
|
||||
}
|
||||
}
|
||||
|
||||
// 分类字段、选择面积计算字段options
|
||||
function getClassFieldOptioins(tableName) {
|
||||
let query = { tableName: tableName };
|
||||
GetTableAndViewColumnList(query).then((res) => {
|
||||
classFieldOptioins.value = res;
|
||||
});
|
||||
}
|
||||
|
||||
// 分类字段选中后,分类名称先设置成description
|
||||
function classFieldChange(value, option) {
|
||||
if (value == undefined) {
|
||||
|
|
@ -188,11 +220,8 @@
|
|||
}
|
||||
}
|
||||
|
||||
onMounted(() => {
|
||||
getLayerOptions();
|
||||
});
|
||||
defineExpose({
|
||||
clearModalData,
|
||||
clearModal,
|
||||
});
|
||||
</script>
|
||||
<style lang="scss" scoped>
|
||||
|
|
|
|||
|
|
@ -1,6 +1,6 @@
|
|||
<template>
|
||||
<div class="page-div categories-page">
|
||||
<div class="tree-div w-1/5 xl:w-1/6 m-4 mr-0">
|
||||
<div class="tree-div w-1/7 xl:w-1/7 m-4 mr-0">
|
||||
<div class="header">
|
||||
<div class="buttons-div">
|
||||
<a-button
|
||||
|
|
@ -33,7 +33,7 @@
|
|||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="right-div w-4/5 xl:w-5/6">
|
||||
<div class="right-div w-6/7 xl:w-6/7">
|
||||
<BasicTable @register="registerTable">
|
||||
<template #toolbar>
|
||||
<PermissionBtn @btnEvent="buttonClick"></PermissionBtn>
|
||||
|
|
@ -45,10 +45,23 @@
|
|||
<template v-if="column.key == 'code'">
|
||||
{{ getCode(record) }}
|
||||
</template>
|
||||
<template v-if="column.key == 'layer'">
|
||||
{{ getLayer(record) }}
|
||||
</template>
|
||||
<template v-if="column.key == 'isClass'">
|
||||
<a-tag v-if="record.isClass == 1" color="yellow">分类</a-tag>
|
||||
<a-tag v-if="record.isClass == 0" color="gray">不分类</a-tag>
|
||||
</template>
|
||||
<template v-if="column.key == 'overlayList'">
|
||||
<div v-for="tag in record.overlayList" :key="tag">
|
||||
<a-tag>{{ tag }}</a-tag>
|
||||
</div>
|
||||
<span class="content-full">
|
||||
<a-tag color="green" v-for="tag in getOverlayList(record)" :key="tag">
|
||||
{{ tag }}
|
||||
</a-tag>
|
||||
</span>
|
||||
</template>
|
||||
<template v-if="column.key == 'isSum'">
|
||||
<a-tag v-if="record.isSum == 1" color="blue">合计</a-tag>
|
||||
<a-tag v-if="record.isSum == 0" color="red">不合计</a-tag>
|
||||
</template>
|
||||
</template>
|
||||
</BasicTable>
|
||||
|
|
@ -57,13 +70,16 @@
|
|||
class="categories-modal"
|
||||
v-model:open="openModal"
|
||||
:title="modalData.title"
|
||||
:maskClosable="false"
|
||||
:afterClose="clearModal"
|
||||
:footer="null"
|
||||
>
|
||||
<UseModal
|
||||
ref="modalForm"
|
||||
ref="modalFormRef"
|
||||
:modalData="modalData"
|
||||
:showTree="showTree"
|
||||
:layerOptioins="layerOptioins"
|
||||
:orverlayListOptioins="orverlayListOptioins"
|
||||
@closeModal="closeModal"
|
||||
@submit="submit"
|
||||
/>
|
||||
|
|
@ -87,6 +103,7 @@
|
|||
Update,
|
||||
Delete,
|
||||
} from '@/api/sys/cloud';
|
||||
import { ShpGeoLayerLoadPage } from '@/api/demo/system';
|
||||
import {
|
||||
columns,
|
||||
emptyTableItem,
|
||||
|
|
@ -98,21 +115,24 @@
|
|||
import dayjs from 'dayjs';
|
||||
import { cloneDeep, forEach } from 'lodash-es';
|
||||
|
||||
const modalForm = ref();
|
||||
let lLoading = ref(false);
|
||||
// 左侧树
|
||||
const treeRef = ref();
|
||||
let showTree = ref([]);
|
||||
let typeId = ref('');
|
||||
let selectTreeId = ref('');
|
||||
let showTree = ref([]);
|
||||
let openModal = ref(false);
|
||||
let lLoading = ref(false);
|
||||
// 右侧表
|
||||
const modalFormRef = ref();
|
||||
const modalData = reactive({
|
||||
title: '',
|
||||
data: {},
|
||||
type: '',
|
||||
});
|
||||
const treeRef = ref();
|
||||
const firstRequestCode = ref('');
|
||||
const searchFormSchema = ref(searchFormSchema_1);
|
||||
|
||||
let openModal = ref(false);
|
||||
|
||||
watch(
|
||||
() => typeId.value,
|
||||
(newVal) => {
|
||||
|
|
@ -127,12 +147,19 @@
|
|||
},
|
||||
);
|
||||
|
||||
// 云查询管理
|
||||
const [registerTable, { reload, getSelectRows }] = useTable({
|
||||
beforeFetch: (params) => {
|
||||
if (params.StartTime) {
|
||||
params.StartTime = dayjs(params.StartTime).startOf('day').format('YYYY-MM-DD');
|
||||
}
|
||||
if (params.EndTime) {
|
||||
params.EndTime = dayjs(params.EndTime).endOf('day').format('YYYY-MM-DD HH:mm:ss');
|
||||
}
|
||||
if (firstRequestCode.value !== '') {
|
||||
params = { ...params, code: firstRequestCode.value };
|
||||
params = { ...params, Code: firstRequestCode.value };
|
||||
} else if (typeId.value !== '') {
|
||||
params = { ...params, code: typeId.value };
|
||||
params = { ...params, Code: typeId.value };
|
||||
} else {
|
||||
params = { ...params };
|
||||
}
|
||||
|
|
@ -162,6 +189,7 @@
|
|||
},
|
||||
});
|
||||
|
||||
// 左侧树
|
||||
const getTreeData = (isMounted) => {
|
||||
lLoading.value = true;
|
||||
getLeftTree({ code: 'cloudQueryManagement' })
|
||||
|
|
@ -180,10 +208,8 @@
|
|||
lLoading.value = false;
|
||||
});
|
||||
};
|
||||
onMounted(() => {
|
||||
getTreeData(true);
|
||||
});
|
||||
|
||||
// 左侧树选中
|
||||
const changeTypeId = (itemValue) => {
|
||||
if (typeId.value != itemValue) {
|
||||
typeId.value = itemValue;
|
||||
|
|
@ -340,13 +366,29 @@
|
|||
break;
|
||||
}
|
||||
};
|
||||
|
||||
// 关闭弹窗
|
||||
const closeModal = () => {
|
||||
openModal.value = false;
|
||||
clearModal();
|
||||
};
|
||||
// 清理验证
|
||||
const clearModal = () => {
|
||||
modalForm.value = cloneDeep(emptyTreeItem);
|
||||
modalFormRef.value.clearModal();
|
||||
};
|
||||
|
||||
// 云查询图层的options
|
||||
const layerOptioins: any = ref([]);
|
||||
// 叠加图层的options
|
||||
const orverlayListOptioins: any = ref([{ serverName: '天地图', id: '天地图' }]);
|
||||
function getLayerOptions() {
|
||||
ShpGeoLayerLoadPage({}).then((res) => {
|
||||
layerOptioins.value = res.items;
|
||||
orverlayListOptioins.value = orverlayListOptioins.value.concat(layerOptioins.value);
|
||||
});
|
||||
}
|
||||
|
||||
// 表格-云查询分类的值
|
||||
const getCode = (record) => {
|
||||
let result = '';
|
||||
showTree.value.forEach((item: any) => {
|
||||
|
|
@ -356,6 +398,36 @@
|
|||
});
|
||||
return result;
|
||||
};
|
||||
|
||||
// 表格-图层的值
|
||||
const getLayer = (record) => {
|
||||
let result = '';
|
||||
layerOptioins.value.forEach((item: any) => {
|
||||
if (item.id === record.layer) {
|
||||
result = item.serverName;
|
||||
}
|
||||
});
|
||||
return result;
|
||||
};
|
||||
|
||||
// 表格-叠加图层的值
|
||||
const getOverlayList = (record) => {
|
||||
let result: any = [];
|
||||
orverlayListOptioins.value.forEach((item: any) => {
|
||||
record.overlayList.forEach((over) => {
|
||||
if (item.id == over) {
|
||||
result.push(item.serverName);
|
||||
}
|
||||
});
|
||||
});
|
||||
// result = record.overlayList;
|
||||
return result;
|
||||
};
|
||||
|
||||
onMounted(() => {
|
||||
getTreeData(true);
|
||||
getLayerOptions();
|
||||
});
|
||||
</script>
|
||||
<style lang="scss" scoped>
|
||||
.page-div {
|
||||
|
|
@ -424,4 +496,12 @@
|
|||
}
|
||||
}
|
||||
// ant-table-header
|
||||
|
||||
.content-full {
|
||||
white-space: pre-wrap;
|
||||
word-break: break-all;
|
||||
overflow-wrap: break-word;
|
||||
max-width: 100%;
|
||||
display: block;
|
||||
}
|
||||
</style>
|
||||
|
|
|
|||
|
|
@ -9,32 +9,32 @@ export const columns = [
|
|||
{
|
||||
title: '名称',
|
||||
dataIndex: 'name',
|
||||
width: 100,
|
||||
width: 80,
|
||||
},
|
||||
{
|
||||
title: '云查询分类',
|
||||
dataIndex: 'overlay',
|
||||
width: 100,
|
||||
dataIndex: 'code',
|
||||
width: 80,
|
||||
},
|
||||
{
|
||||
title: '图层',
|
||||
dataIndex: 'layer',
|
||||
width: 100,
|
||||
// width: 100,
|
||||
},
|
||||
{
|
||||
title: '数据表',
|
||||
dataIndex: 'tableName',
|
||||
width: 100,
|
||||
// width: 120,
|
||||
},
|
||||
{
|
||||
title: '叠加图层',
|
||||
dataIndex: 'overlayList',
|
||||
width: 100,
|
||||
width: 150,
|
||||
},
|
||||
{
|
||||
title: '是否分类',
|
||||
dataIndex: 'isClass',
|
||||
width: 100,
|
||||
width: 80,
|
||||
},
|
||||
{
|
||||
title: '分类字段',
|
||||
|
|
@ -49,14 +49,20 @@ export const columns = [
|
|||
{
|
||||
title: '选择面积计算字段',
|
||||
dataIndex: 'areaField',
|
||||
width: 100,
|
||||
// width: 100,
|
||||
},
|
||||
{
|
||||
title: '是否合计',
|
||||
dataIndex: 'isSum',
|
||||
width: 100,
|
||||
width: 80,
|
||||
},
|
||||
{
|
||||
title: '创建时间',
|
||||
dataIndex: 'createTime',
|
||||
// width: 100,
|
||||
}
|
||||
];
|
||||
|
||||
export const emptyTreeItem = {
|
||||
itemName: '',
|
||||
itemValue: '',
|
||||
|
|
@ -66,7 +72,7 @@ export const emptyTableItem = {
|
|||
name: '',
|
||||
layer: undefined,
|
||||
tableName: '',
|
||||
overlayList: ['1'],
|
||||
overlayList: ['天地图'],
|
||||
isClass: false,
|
||||
classField: undefined,
|
||||
className: undefined,
|
||||
|
|
@ -77,21 +83,31 @@ export const emptyTableItem = {
|
|||
export const searchFormSchema_1 = [
|
||||
{
|
||||
field: 'key',
|
||||
label: '关键字',
|
||||
label: '名称',
|
||||
component: 'Input',
|
||||
colProps: { span: 8 },
|
||||
},
|
||||
{
|
||||
field: '[StartTime, EndTime]',
|
||||
label: '日期范围',
|
||||
component: 'RangePicker',
|
||||
colProps: { span: 8 },
|
||||
componentProps: {
|
||||
format: 'YYYY-MM-DD',
|
||||
placeholder: ['开始日期', '结束日期'],
|
||||
},
|
||||
},
|
||||
];
|
||||
|
||||
export const searchFormSchema_2 = [
|
||||
{
|
||||
field: 'key',
|
||||
label: '关键字',
|
||||
label: '名称',
|
||||
component: 'Input',
|
||||
colProps: { span: 8 },
|
||||
},
|
||||
{
|
||||
field: '[startTime, endTime]',
|
||||
field: '[StartTime, EndTime]',
|
||||
helpMessage: '查询范围只包含时序影像大类',
|
||||
label: '日期范围',
|
||||
component: 'RangePicker',
|
||||
|
|
|
|||
|
|
@ -20,23 +20,23 @@ export const indexColumns: BasicColumn[] = [
|
|||
{
|
||||
title: '空间参考',
|
||||
dataIndex: 'spatialRef',
|
||||
width: 70,
|
||||
width: 100,
|
||||
},
|
||||
{
|
||||
title: '数据源类型',
|
||||
dataIndex: 'dataSourceType',
|
||||
ifShow: false,
|
||||
width: 90,
|
||||
width: 100,
|
||||
},
|
||||
{
|
||||
title: '数据类型',
|
||||
dataIndex: 'dataType',
|
||||
width: 50,
|
||||
width: 100,
|
||||
},
|
||||
{
|
||||
title: '数据表名',
|
||||
dataIndex: 'dataTable',
|
||||
width: 120,
|
||||
width: 150,
|
||||
},
|
||||
{
|
||||
title: 'shp或者xls地址',
|
||||
|
|
@ -53,12 +53,12 @@ export const indexColumns: BasicColumn[] = [
|
|||
{
|
||||
title: '创建时间',
|
||||
dataIndex: 'createTime',
|
||||
width: 120,
|
||||
width: 150,
|
||||
},
|
||||
{
|
||||
title: '修改时间',
|
||||
dataIndex: 'updateTime',
|
||||
width: 120,
|
||||
width: 150,
|
||||
},
|
||||
];
|
||||
|
||||
|
|
@ -67,7 +67,7 @@ export const indexSearchFormSchema: FormSchema[] = [
|
|||
field: 'SererName',
|
||||
label: '服务名称',
|
||||
component: 'Input',
|
||||
colProps: { span: 8 },
|
||||
colProps: { span: 12 },
|
||||
},
|
||||
];
|
||||
|
||||
|
|
|
|||
|
|
@ -175,9 +175,10 @@
|
|||
// console.log(chooseRow);
|
||||
getGeomData({ dataTable: chooseRow.dataTable })
|
||||
.then((res) => {
|
||||
let st = res.slice(6, -1);
|
||||
let st: any = 'POINT(, )'.slice(6, -1);
|
||||
st = st.split(' ');
|
||||
handlerLocation([st[0], st[1]], 11);
|
||||
// handlerLocation([118.32113719388846, 35.64528587987562], 11);
|
||||
raster(chooseRow);
|
||||
})
|
||||
.catch((error) => {
|
||||
|
|
@ -195,6 +196,8 @@
|
|||
'&styles=&bbox={bbox-epsg-3857}&width=256&height=256&srs=' +
|
||||
chooseRow.spatialRef +
|
||||
'&format=image/png&TRANSPARENT=TRUE',
|
||||
// 'http://192.168.10.131:8080/geoserver/my_workspace/wms?service=WMS&version=1.1.0&request=GetMap&layers=my_workspace:parse_shpinfo_text3&styles=&bbox=118.32113719388846%2C35.64528587987562%2C118.89333296872105%2C36.17725393199594&width=256&height=256&srs=EPSG:4326&format=image/png&TRANSPARENT=TRUE&exceptions=application%2Fvnd.ogc.se_inimage',
|
||||
// 'http://175.27.168.120:8080/geoserver/yinanxian/wms?SERVICE=WMS&VERSION=1.1.1&REQUEST=GetMap&FORMAT=image%2Fjpeg&TRANSPARENT=true&LAYERS=yinanxian%3Ayingxiang_01&exceptions=application%2Fvnd.ogc.se_inimage&SRS=EPSG%3A4548&STYLES=&WIDTH=529&HEIGHT=769&BBOX=607366.3276808303%2C3919435.438766631%2C612405.5241015075%2C3926765.179014889',
|
||||
],
|
||||
tileSize: 256,
|
||||
});
|
||||
|
|
|
|||
|
|
@ -136,7 +136,7 @@
|
|||
</div>
|
||||
</template>
|
||||
<script lang="ts" setup>
|
||||
import { ref, reactive, h } from 'vue';
|
||||
import { ref, reactive, onMounted } from 'vue';
|
||||
// vben
|
||||
import { PermissionBtn } from '@/components/PermissionBtn/index';
|
||||
import { BasicTable, useTable, TableAction } from '@/components/Table';
|
||||
|
|
@ -185,7 +185,7 @@
|
|||
// 页面表格
|
||||
const searchParams = ref();
|
||||
const [registerTable, { reload, getSelectRows, getDataSource, clearSelectedRowKeys }] = useTable({
|
||||
title: '云查询图层',
|
||||
title: '图层管理',
|
||||
api: ShpGeoLayerLoadPage,
|
||||
columns: indexColumns,
|
||||
formConfig: {
|
||||
|
|
@ -196,6 +196,7 @@
|
|||
showTableSetting: true,
|
||||
bordered: true,
|
||||
showIndexColumn: true,
|
||||
ellipsis: true,
|
||||
rowSelection: {
|
||||
type: 'radio',
|
||||
},
|
||||
|
|
@ -390,7 +391,9 @@
|
|||
reload();
|
||||
}
|
||||
|
||||
// 地图----------------------------
|
||||
onMounted(() => {
|
||||
reload();
|
||||
});
|
||||
</script>
|
||||
<style lang="less" scoped>
|
||||
.content {
|
||||
|
|
|
|||
|
|
@ -79,6 +79,20 @@
|
|||
</div>
|
||||
</div>
|
||||
<div style="display: flex;align-items: center;cursor: pointer;">
|
||||
<a-popover placement="bottom">
|
||||
<template #content>
|
||||
<div style="display:flex;">
|
||||
<div>当前状态:</div>
|
||||
<div>
|
||||
<a-checkbox-group
|
||||
v-model:value="params.nowStatus"
|
||||
style="width: 100%"
|
||||
:options="auditMapStatusOptions"></a-checkbox-group>
|
||||
</div>
|
||||
</div>
|
||||
</template>
|
||||
<img src="@/assets/images/tiankongdi/filt.png" class="img-box mr-r-20" />
|
||||
</a-popover>
|
||||
<img src="@/assets/images/tiankongdi/collect-active.png" class="img-box" @click="getCollectList" v-if="openCollect"/>
|
||||
<img src="@/assets/images/tiankongdi/collect.png" class="img-box" @click="getCollectList" v-else/>
|
||||
</div>
|
||||
|
|
@ -90,7 +104,7 @@
|
|||
class="data-list-item"
|
||||
v-if="dataList.length > 0"
|
||||
>
|
||||
<div class="back-box" v-if="item.is_drawback == 1">驳回</div>
|
||||
<div class="back-box" v-if="showDrawBack(item)">{{ drawBackSpan(item) }}</div>
|
||||
<div class="data-list-layout-div">
|
||||
<div class="data-list-title-div">
|
||||
<img src="/positioning.png" class="map-mark" @click="locationFun(item)"/>
|
||||
|
|
@ -200,8 +214,9 @@
|
|||
import { message } from 'ant-design-vue';
|
||||
import { useUserStore } from '@/store/modules/user.ts'
|
||||
import { SearchOutlined, RollbackOutlined } from '@ant-design/icons-vue';
|
||||
import { patchSourceOptions } from '@/utils/global'
|
||||
import { patchSourceOptions, auditMapStatusOptions } from '@/utils/global'
|
||||
import { dataProcessing } from '@/views/demo/tiankongdi/util.ts'
|
||||
import {showDrawBack, drawBackSpan} from '@/views/demo/util'
|
||||
|
||||
const userStore = useUserStore()
|
||||
|
||||
|
|
@ -251,6 +266,7 @@
|
|||
type: null,
|
||||
sort: null,
|
||||
order: null,
|
||||
nowStatus: [],
|
||||
});
|
||||
const markTypeOptions = ref([
|
||||
{ label: '合法', value: '合法' },
|
||||
|
|
@ -268,8 +284,14 @@
|
|||
}
|
||||
async function getTaskList() {
|
||||
console.log(params.value);
|
||||
let requestData = {...params.value}
|
||||
if(requestData.nowStatus.length > 0){
|
||||
requestData.nowStatus = requestData.nowStatus.join(',')
|
||||
}else{
|
||||
requestData.nowStatus = null
|
||||
}
|
||||
emits('openLoading')
|
||||
const data = await getLoadTaskDetailList(params.value);
|
||||
const data = await getLoadTaskDetailList(requestData);
|
||||
emits('closeLoading')
|
||||
dataList.value = data.items;
|
||||
total.value = data.total;
|
||||
|
|
|
|||
|
|
@ -31,7 +31,17 @@
|
|||
@change="(value) => mapListScreenChange(value, 'batch')"
|
||||
/>
|
||||
</div>
|
||||
<div class="screen-item" style="margin-right: 18px">
|
||||
<div class="screen-item" style="margin-right: 13px;margin-bottom: 12px">
|
||||
<div class="screen-item-label">乡镇</div>
|
||||
<a-select
|
||||
allowClear
|
||||
style="width:120px;"
|
||||
v-model:value="infoScreenData.streetid"
|
||||
:options="streetsAreaOptions"
|
||||
@change="(value) => mapListScreenChange(value, 'streetid')"
|
||||
/>
|
||||
</div>
|
||||
<div class="screen-item" style="margin-bottom: 12px;width:389px">
|
||||
<a-input
|
||||
allowClear
|
||||
placeholder="请输入图斑编号"
|
||||
|
|
@ -40,7 +50,7 @@
|
|||
@change="(value) => mapListScreenChange(value.target.value, 'caseNo')"
|
||||
/>
|
||||
</div>
|
||||
<div class="screen-item">
|
||||
<div class="screen-item" style="flex: 1;justify-content: flex-end;">
|
||||
<a-button class="item-button" style="background: #2B75E1;" type="primary" :icon="h(SearchOutlined)" @click="querysBtn"
|
||||
>查询</a-button>
|
||||
<a-button class="item-button img" type="primary" @click="changeArea">
|
||||
|
|
@ -298,7 +308,7 @@
|
|||
import { ref, onMounted, defineEmits, computed, h } from 'vue';
|
||||
import { SearchOutlined, DownOutlined, SendOutlined } from '@ant-design/icons-vue';
|
||||
import Icon from '@/components/Icon/Icon.vue';
|
||||
import { getLoadDroneCaseInfoDetail, getCaseInfoById } from '@/api/tiankongdi/index';
|
||||
import { getLoadDroneCaseInfoDetail, getCaseInfoById, getLoadStreet } from '@/api/tiankongdi/index';
|
||||
import {
|
||||
batchOptions,
|
||||
yearOptions,
|
||||
|
|
@ -339,6 +349,7 @@ const showSortMark = (key, sort) => {
|
|||
return false;
|
||||
};
|
||||
|
||||
const streetsAreaOptions = ref<{ label: string; value: string}[]>([])
|
||||
const infoDataList = ref([]);
|
||||
const infoScreenData: any = ref({
|
||||
year: null,
|
||||
|
|
@ -435,6 +446,15 @@ const openCollect = computed(() => {
|
|||
});
|
||||
const showInfoData = ref();
|
||||
onMounted(() => {
|
||||
getLoadStreet().then(res => {
|
||||
console.log(res)
|
||||
res.forEach(item => {
|
||||
streetsAreaOptions.value.push({
|
||||
label: item.Name,
|
||||
value: item.Id,
|
||||
})
|
||||
})
|
||||
})
|
||||
getInfoList();
|
||||
});
|
||||
|
||||
|
|
@ -636,7 +656,7 @@ function querysBtn(){
|
|||
box-shadow: 2px 3px 3px 1px rgba(13, 13, 13, 0.05);
|
||||
}
|
||||
.item-input {
|
||||
width: 223px;
|
||||
width: 389px;
|
||||
font-family: Alibaba PuHuiTi;
|
||||
font-weight: 500;
|
||||
font-size: 17px;
|
||||
|
|
|
|||
|
|
@ -106,43 +106,70 @@
|
|||
getLabel('weifaleixing', weifaleixing)
|
||||
}}</a-descriptions-item>
|
||||
<a-descriptions-item v-if="is_illegal == 1" label="附件">
|
||||
<template v-for="(item, itemIndex) in fujianList" :key="itemIndex">
|
||||
<div v-if="item" style="margin-top: 10px">
|
||||
<Icon
|
||||
:style="`font-size: 30px; cursor: pointer;`"
|
||||
icon="ion:document-attach-outline"
|
||||
@click="downLoadFile(item)"
|
||||
/>
|
||||
{{ item }}
|
||||
</div>
|
||||
</template>
|
||||
<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;"
|
||||
:src="`${VITE_GLOB_INFO_IMAGE_URL}/${item}`"
|
||||
:preview="{getContainer}"
|
||||
></a-image>
|
||||
<div v-else>
|
||||
<Icon
|
||||
v-if="item"
|
||||
:style="`font-size: 30px; cursor: pointer;`"
|
||||
icon="ion:document-attach-outline"
|
||||
@click="downLoadFile(item)"
|
||||
/>
|
||||
{{ item }}
|
||||
</div>
|
||||
</template>
|
||||
</a-image-preview-group>
|
||||
</a-descriptions-item>
|
||||
<a-descriptions-item v-if="is_illegal == 0" label="附件">
|
||||
<template v-for="(item, itemIndex) in hefafujianList" :key="itemIndex">
|
||||
<div v-if="item" style="margin-top: 10px">
|
||||
<Icon
|
||||
:style="`font-size: 30px; cursor: pointer;`"
|
||||
icon="ion:document-attach-outline"
|
||||
@click="downLoadFile(item)"
|
||||
/>
|
||||
{{ item }}
|
||||
</div>
|
||||
</template>
|
||||
<a-image-preview-group :preview="{getContainer,}">
|
||||
<template v-for="(item, itemIndex) in hefafujianList" :key="itemIndex">
|
||||
<a-image
|
||||
v-if="showImage(item)"
|
||||
style="width:100px;height:100px;"
|
||||
:src="`${VITE_GLOB_INFO_IMAGE_URL}/${item}`"
|
||||
:preview="{getContainer,}"
|
||||
></a-image>
|
||||
<div v-else>
|
||||
<Icon
|
||||
v-if="item"
|
||||
:style="`font-size: 30px; cursor: pointer;`"
|
||||
icon="ion:document-attach-outline"
|
||||
@click="downLoadFile(item)"
|
||||
/>
|
||||
{{ item }}
|
||||
</div>
|
||||
</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>
|
||||
<a-descriptions-item v-if="is_illegal == 2" label="附件">
|
||||
<template v-for="(item, itemIndex) in qitafujianList" :key="itemIndex">
|
||||
<div v-if="item" style="margin-top: 10px">
|
||||
<Icon
|
||||
:style="`font-size: 30px; cursor: pointer;`"
|
||||
icon="ion:document-attach-outline"
|
||||
@click="downLoadFile(item)"
|
||||
/>
|
||||
{{ item }}
|
||||
</div>
|
||||
</template>
|
||||
<a-image-preview-group :preview="{getContainer,}">
|
||||
<template v-for="(item, itemIndex) in qitafujianList" :key="itemIndex">
|
||||
<a-image
|
||||
v-if="showImage(item)"
|
||||
style="width:100px;height:100px;"
|
||||
:src="`${VITE_GLOB_INFO_IMAGE_URL}/${item}`"
|
||||
:preview="{getContainer}"
|
||||
></a-image>
|
||||
<div v-else>
|
||||
<Icon
|
||||
v-if="item"
|
||||
:style="`font-size: 30px; cursor: pointer;`"
|
||||
icon="ion:document-attach-outline"
|
||||
@click="downLoadFile(item)"
|
||||
/>
|
||||
{{ item }}
|
||||
</div>
|
||||
</template>
|
||||
</a-image-preview-group>
|
||||
</a-descriptions-item>
|
||||
<a-descriptions-item label="判定依据说明">{{
|
||||
pandingyijushuoming
|
||||
|
|
@ -192,16 +219,25 @@
|
|||
getLabel('measure_name', measure_name)
|
||||
}}</a-descriptions-item>
|
||||
<a-descriptions-item v-if="measure_name == 0" label="附件">
|
||||
<template v-for="(item, itemIndex) in yanshoubiaoList" :key="itemIndex">
|
||||
<div v-if="item">
|
||||
<Icon
|
||||
:style="`font-size: 30px; cursor: pointer;`"
|
||||
icon="ion:document-attach-outline"
|
||||
@click="downLoadFile(item)"
|
||||
/>
|
||||
{{ item }}
|
||||
</div>
|
||||
</template>
|
||||
<a-image-preview-group :preview="{getContainer,}">
|
||||
<template v-for="(item, itemIndex) in yanshoubiaoList" :key="itemIndex">
|
||||
<a-image
|
||||
v-if="showImage(item)"
|
||||
style="width:100px;height:100px;"
|
||||
:src="`${VITE_GLOB_INFO_IMAGE_URL}/${item}`"
|
||||
:preview="{getContainer,}"
|
||||
></a-image>
|
||||
<div v-else>
|
||||
<Icon
|
||||
v-if="item"
|
||||
:style="`font-size: 30px; cursor: pointer;`"
|
||||
icon="ion:document-attach-outline"
|
||||
@click="downLoadFile(item)"
|
||||
/>
|
||||
{{ item }}
|
||||
</div>
|
||||
</template>
|
||||
</a-image-preview-group>
|
||||
</a-descriptions-item>
|
||||
<a-descriptions-item v-if="measure_name == 0" label="照片">
|
||||
<div class="image-div">
|
||||
|
|
@ -228,17 +264,25 @@
|
|||
</div>
|
||||
</a-descriptions-item>
|
||||
<a-descriptions-item v-if="measure_name == 1" label="附件">
|
||||
<template v-for="(item, itemIndex) in zhenggaifujianList" :key="itemIndex">
|
||||
<div v-if="item">
|
||||
<Icon
|
||||
:style="`font-size: 30px; cursor: pointer;`"
|
||||
icon="ion:document-attach-outline"
|
||||
@click="downLoadFile(item)"
|
||||
/>
|
||||
{{ item }}
|
||||
</div>
|
||||
</template>
|
||||
<!-- {{ zhenggaifujian }} -->
|
||||
<a-image-preview-group :preview="{getContainer,}">
|
||||
<template v-for="(item, itemIndex) in zhenggaifujianList" :key="itemIndex">
|
||||
<a-image
|
||||
v-if="showImage(item)"
|
||||
style="width:100px;height:100px;"
|
||||
:src="`${VITE_GLOB_INFO_IMAGE_URL}/${item}`"
|
||||
:preview="{getContainer}"
|
||||
></a-image>
|
||||
<div v-else>
|
||||
<Icon
|
||||
v-if="item"
|
||||
:style="`font-size: 30px; cursor: pointer;`"
|
||||
icon="ion:document-attach-outline"
|
||||
@click="downLoadFile(item)"
|
||||
/>
|
||||
{{ item }}
|
||||
</div>
|
||||
</template>
|
||||
</a-image-preview-group>
|
||||
</a-descriptions-item>
|
||||
<a-descriptions-item v-if="measure_name == 1" label="照片">
|
||||
<div class="image-div">
|
||||
|
|
@ -692,6 +736,13 @@
|
|||
return Number(resultString).toFixed(2);
|
||||
}
|
||||
};
|
||||
const showImage = (url) => {
|
||||
if(url.indexOf('.png') !== -1 || url.indexOf('.jpg') !== -1 || url.indexOf('.jpeg') !== -1 ){
|
||||
return true
|
||||
}else{
|
||||
return false
|
||||
}
|
||||
}
|
||||
</script>
|
||||
|
||||
<style lang="scss" scoped>
|
||||
|
|
|
|||
|
|
@ -180,7 +180,7 @@
|
|||
</div>
|
||||
<div class="data-list-div" style="padding-top: 1px;">
|
||||
<div v-for="(item, index) in props.infoDataList" :key="index" class="data-list-item">
|
||||
<div class="back-box" v-if="item.isdrawback == 1">驳回</div>
|
||||
<div class="back-box" v-if="showDrawBack(item)">{{ drawBackSpan(item) }}</div>
|
||||
<div class="data-list-layout-div">
|
||||
<div class="data-list-title-div">
|
||||
<img src="/positioning.png" class="map-mark" style="cursor:pointer;" @click="locationFun(item)"/>
|
||||
|
|
@ -307,6 +307,7 @@ import { flowStore } from '@/store/modules/flow';
|
|||
import { getDetail } from '@/api/sys/WFSchemeInfo';
|
||||
import { Audit } from '@/views/demo/workflow/task/process/page';
|
||||
import { dataProcessing } from '@/views/demo/tiankongdi/util.ts'
|
||||
import {showDrawBack, drawBackSpan} from '@/views/demo/util'
|
||||
const userStore = useUserStore()
|
||||
const flowWfDataStore = flowStore();
|
||||
const emits = defineEmits([
|
||||
|
|
|
|||
|
|
@ -0,0 +1,24 @@
|
|||
import { useUserStore } from '@/store/modules/user'
|
||||
const userStore = useUserStore()
|
||||
export const showDrawBack = (item) => {
|
||||
let level = userStore.getUserInfo.orgMaxLevel
|
||||
if((level == '0' && item.is_shijibohui == 1) || (level != '0' && (item.is_shijibohui == 1 || item.is_drawback == 1))){
|
||||
return true
|
||||
}else {
|
||||
return false
|
||||
}
|
||||
}
|
||||
export const drawBackSpan = (item) => {
|
||||
let level = userStore.getUserInfo.orgMaxLevel
|
||||
let title = ''
|
||||
if(item.is_shijibohui){
|
||||
title = '市'
|
||||
}
|
||||
if(item.is_drawback && level != '0'){
|
||||
if(title != ''){
|
||||
title = title + ','
|
||||
}
|
||||
title = title + '县'
|
||||
}
|
||||
return `${title} 驳回`
|
||||
}
|
||||
Loading…
Reference in New Issue