Merge branch 'main' of http://123.132.248.154:10000/HC_YFZX/CaiYuanYiTiHua
commit
be7da1ea87
|
|
@ -285,10 +285,14 @@
|
|||
|
||||
function handlerLayerChange(){
|
||||
var allLayers = map.getStyle().layers;
|
||||
allLayers.forEach(function(layer){
|
||||
map.moveLayer('detailsLayer', layer.id);
|
||||
map.moveLayer('detailsLayerLine', layer.id);
|
||||
if(map.getLayer("detailsLayerLine"))
|
||||
map.moveLayer('detailsLayerLine', allLayers[allLayers.length-1].id);
|
||||
allLayers.forEach(function(layer){
|
||||
});
|
||||
// allLayers.forEach(function(layer){
|
||||
// console.log("layersssss",layer.id);
|
||||
// // map.moveLayer('detailsLayer', layer.id);
|
||||
// });
|
||||
}
|
||||
// 地图图层控制
|
||||
const handlerLoadMapLayer = ()=>{
|
||||
|
|
@ -353,6 +357,7 @@
|
|||
handlerLayerChange()
|
||||
}
|
||||
}
|
||||
console.log("layersssss",layers);
|
||||
baseLayers.push(layers)
|
||||
});
|
||||
configlayers["地图底图"] = {
|
||||
|
|
@ -369,6 +374,9 @@
|
|||
layerGroups:configlayers
|
||||
});
|
||||
map.addControl(switchLayerControler,"top-left");
|
||||
|
||||
|
||||
handlerLayerChange()
|
||||
}
|
||||
// 销毁地图
|
||||
|
||||
|
|
@ -392,7 +400,6 @@
|
|||
'tileSize': 512,
|
||||
'maxzoom': 14
|
||||
});
|
||||
|
||||
map.setTerrain({ 'source': 'mapbox-dem', 'exaggeration': 1.5 });
|
||||
}
|
||||
// 移除地图实例
|
||||
|
|
|
|||
|
|
@ -0,0 +1,549 @@
|
|||
<template>
|
||||
<PageWrapper dense contentFullHeight fixedHeight contentClass="flex">
|
||||
<div class="form">
|
||||
<Form
|
||||
label-align="left"
|
||||
layout="vertical"
|
||||
description="图斑控件"
|
||||
size="small"
|
||||
style="padding:0px 15px"
|
||||
>
|
||||
<a-row :gutter="12">
|
||||
<a-col :span="12" >
|
||||
<a-card title="基本设置" class="card-item">
|
||||
<FormItem label="是否显示">
|
||||
<Switch v-model:checked="mapConfig.isShowMap" />
|
||||
</FormItem>
|
||||
|
||||
<FormItem label="地图宽度" >
|
||||
<a-input-number
|
||||
v-model:value="mapConfig.width"
|
||||
placeholder="请输入地图宽度"
|
||||
:min="1"
|
||||
:max="100"
|
||||
>
|
||||
<template #addonAfter><PercentageOutlined /></template>
|
||||
</a-input-number>
|
||||
</FormItem>
|
||||
|
||||
<FormItem label=" "></FormItem>
|
||||
</a-card>
|
||||
</a-col>
|
||||
|
||||
<a-col :span="12" >
|
||||
<a-card title="地图配置" class="card-item" >
|
||||
<FormItem label="地图模式">
|
||||
<a-radio-group v-model:value="mapConfig.mode">
|
||||
<a-radio :value="'2D'">二维地图</a-radio>
|
||||
<a-radio :value="'3D'">三维地图</a-radio>
|
||||
</a-radio-group>
|
||||
</FormItem>
|
||||
<a-row :gutter="12">
|
||||
<a-col :span="12" >
|
||||
<FormItem label="倾斜角度">
|
||||
<a-input-number v-model:value="mapConfig.angle" :min="0"
|
||||
:max="90" />
|
||||
</FormItem>
|
||||
</a-col>
|
||||
<a-col :span="12" >
|
||||
<FormItem label="中心位置">
|
||||
<a-input v-model:value="mapConfig.center" />
|
||||
</FormItem>
|
||||
</a-col>
|
||||
</a-row>
|
||||
|
||||
<a-row :gutter="12">
|
||||
<a-col :span="8" >
|
||||
<FormItem label="初始缩放级别">
|
||||
<a-input-number v-model:value="mapConfig.zoom" :min="1"
|
||||
:max="18" />
|
||||
</FormItem>
|
||||
</a-col>
|
||||
<a-col :span="8" >
|
||||
<FormItem label="最小缩放级别">
|
||||
<a-input-number v-model:value="mapConfig.minZoom" :min="1"
|
||||
:max="18" />
|
||||
</FormItem>
|
||||
</a-col>
|
||||
<a-col :span="8" >
|
||||
<FormItem label="最大缩放级别">
|
||||
<a-input-number v-model:value="mapConfig.maxZoom" :min="1"
|
||||
:max="18" />
|
||||
</FormItem>
|
||||
</a-col>
|
||||
</a-row>
|
||||
|
||||
</a-card>
|
||||
</a-col>
|
||||
</a-row>
|
||||
|
||||
|
||||
<a-card title="底图设置" class="card-item" >
|
||||
<template #extra>
|
||||
<a-tooltip>
|
||||
<template #title>添加地图底图</template>
|
||||
<PlusOutlined @click="handlerAddBaseLayer()"/>
|
||||
</a-tooltip>
|
||||
</template>
|
||||
<!-- <a-table :row-selection="rowSelection" :dataSource="baseLayers" :columns="baselayercolumns" :pagination="false" >
|
||||
<template #bodyCell="{ column, record }">
|
||||
<template v-if="column.key === 'checked'">
|
||||
<a-switch v-model:checked="record.checked" checked-children="显示" un-checked-children="隐藏" />
|
||||
</template>
|
||||
</template>
|
||||
</a-table> -->
|
||||
|
||||
<a-table :dataSource="mapConfig.baseLayers" :columns="baselayercolumns" :pagination="false" >
|
||||
<template #bodyCell="{ column, record }">
|
||||
<template v-if="column.key === 'checked'">
|
||||
<a-switch v-model:checked="record.checked" checked-children="显示" un-checked-children="隐藏" />
|
||||
</template>
|
||||
<template v-if="column.key === 'operation'">
|
||||
<span>
|
||||
<a-tooltip>
|
||||
<template #title>删除图层</template>
|
||||
<DeleteOutlined @click="hanelerDeleteBaseLayer(column, record)" />
|
||||
</a-tooltip>
|
||||
</span>
|
||||
</template>
|
||||
</template>
|
||||
</a-table>
|
||||
|
||||
</a-card>
|
||||
|
||||
|
||||
<a-card title="图层设置" class="card-item" >
|
||||
<template #extra>
|
||||
<a-tooltip>
|
||||
<template #title>添加图层分类</template>
|
||||
<PlusOutlined @click="handleAddSource()"/>
|
||||
</a-tooltip>
|
||||
</template>
|
||||
<a-collapse v-model:activeKey="activeKey" v-for="item in mapConfig.layers" :key="item.name" ghost>
|
||||
<a-collapse-panel :key="item.name" :header="item.name">
|
||||
<!-- <template #header>
|
||||
<a-input v-model:value="item.name"/>
|
||||
</template> -->
|
||||
<template #extra>
|
||||
<a-tooltip>
|
||||
<template #title>添加图层</template>
|
||||
<PlusOutlined @click="hanelerAddLayer(item.name)" style="margin-right: 10px"/>
|
||||
</a-tooltip>
|
||||
<a-tooltip>
|
||||
<template #title>修改图层分类标题</template>
|
||||
<EditOutlined @click="openLayerModal(item.name)" style="margin-right: 10px"/>
|
||||
</a-tooltip>
|
||||
<a-tooltip>
|
||||
<template #title>删除图层分类</template>
|
||||
<DeleteOutlined @click="hanelerDeleteSource(item.name)"/>
|
||||
</a-tooltip>
|
||||
|
||||
<a-modal :open="open" title="修改标题名" @ok="submitLayerModal" @cancel="closeLayerModal">
|
||||
<a-input v-model:value="newLayerName" />
|
||||
</a-modal>
|
||||
|
||||
</template>
|
||||
<a-table :dataSource="item.layers" :columns="columns" :pagination="false" >
|
||||
<template #bodyCell="{ column, record }">
|
||||
<template v-if="column.key === 'checked'">
|
||||
<a-switch v-model:checked="record.checked" checked-children="显示" un-checked-children="隐藏" />
|
||||
</template>
|
||||
<template v-if="column.key === 'operation'">
|
||||
<span>
|
||||
<a-tooltip>
|
||||
<template #title>删除图层</template>
|
||||
<DeleteOutlined @click="hanelerDeleteLayer(item.name, record)" />
|
||||
</a-tooltip>
|
||||
</span>
|
||||
</template>
|
||||
</template>
|
||||
</a-table>
|
||||
</a-collapse-panel>
|
||||
</a-collapse>
|
||||
</a-card>
|
||||
|
||||
<a-button type="primary" size="middle" style="margin-top:12px;" @click="saveMapConfig">保存</a-button>
|
||||
</Form>
|
||||
</div>
|
||||
|
||||
<a-modal
|
||||
class="insert-shp-modal"
|
||||
width="1290px"
|
||||
title="选择图层"
|
||||
:destroyOnClose="true"
|
||||
:open="openModal"
|
||||
@cancel="changeOpenModal"
|
||||
>
|
||||
<SelectLayer v-model:openModal="changeOpenModal" @handlerAddToLayerList="handlerAddToLayerList" />
|
||||
|
||||
</a-modal>
|
||||
|
||||
</PageWrapper>
|
||||
</template>
|
||||
<script lang="ts" setup>
|
||||
import { ref, inject, watch, onMounted,reactive,computed,unref } from 'vue';
|
||||
import { Form, FormItem, message, Switch,TableProps } from 'ant-design-vue';
|
||||
import { PageWrapper } from '@/components/Page';
|
||||
import { ShpLayerSourceLoadPage, GetTableAndViewColumnList } from '@/api/demo/formScheme';
|
||||
import{fun_GetForm} from '@/api/demo/formModule'
|
||||
import {updateConfig,getConfig} from '@/api/sys/layerManagement'
|
||||
import { EditOutlined, DeleteOutlined, PercentageOutlined ,PlusOutlined} from '@ant-design/icons-vue';
|
||||
import SelectLayer from '@/components/MapboxMaps/Modal/ServeResource/index.vue'
|
||||
import { useMessage } from '@/hooks/web/useMessage';
|
||||
const { createMessage } = useMessage();
|
||||
const mapConfig = ref({});
|
||||
|
||||
|
||||
getConfig({code:"mapsetting"}).then(res=>{
|
||||
mapConfig.value = JSON.parse(res.codeValue)
|
||||
})
|
||||
|
||||
// const mapConfig = reactive({
|
||||
// baseConfig:{
|
||||
// state:true,
|
||||
// width:50
|
||||
// },
|
||||
// viewerConfig:{
|
||||
// mode:"2D",
|
||||
// angle:90,
|
||||
// center:null,
|
||||
// zoom:12,
|
||||
// minZoom:3,
|
||||
// maxZoom:18
|
||||
// },
|
||||
|
||||
interface BaseLayerDataType {
|
||||
key: string | number;
|
||||
name: string;
|
||||
checked:boolean;
|
||||
layer:Object;
|
||||
}
|
||||
// baseLayers:[
|
||||
// {
|
||||
// name: '天地图底图图层',
|
||||
// show:false,
|
||||
// layer:{
|
||||
|
||||
// }
|
||||
// },{
|
||||
// name: '天地图注记图层',
|
||||
// show:false,
|
||||
// layer:{
|
||||
|
||||
// }
|
||||
// },{
|
||||
// name: '高清影像图层',
|
||||
// show:false,
|
||||
// layer:{
|
||||
|
||||
// }
|
||||
// }
|
||||
// ],
|
||||
// layers:[
|
||||
// {
|
||||
// name: '违法建设图斑图层',
|
||||
// show:true,
|
||||
// layer:{
|
||||
|
||||
// }
|
||||
// },
|
||||
// {
|
||||
// name: '乱战耕地图斑图层',
|
||||
// show:false,
|
||||
// layer:{
|
||||
|
||||
// }
|
||||
// }
|
||||
// ]
|
||||
|
||||
// })
|
||||
|
||||
const baseLayers = reactive([
|
||||
{
|
||||
key:1,
|
||||
name: '天地图注记图层',
|
||||
checked:false,
|
||||
layer:{
|
||||
id: "tiandituzhuji",
|
||||
type: "raster",
|
||||
source: {
|
||||
type: "raster",
|
||||
tiles: [
|
||||
"https://t0.tianditu.gov.cn/DataServer?T=cia_w&x={x}&y={y}&l={z}&tk=b6585bc41ee16251dbe6b1af64f375d9",
|
||||
],
|
||||
tileSize: 256,
|
||||
},
|
||||
layout: {
|
||||
visibility: "visible",
|
||||
},
|
||||
}
|
||||
},{
|
||||
key:2,
|
||||
name: '高清影像图层',
|
||||
checked:false,
|
||||
layer:{
|
||||
id: "gaoqingyingxiang",
|
||||
type: "raster",
|
||||
source: {
|
||||
type: "raster",
|
||||
tiles: [
|
||||
"http://60.213.14.14:8060/geoserver/feixian/wms?service=WMS&version=1.1.0&request=GetMap&layers=feixian:yingxiang&styles=&bbox={bbox-epsg-3857}&width=256&height=256&srs=EPSG:3857&format=image/png&TRANSPARENT=TRUE",
|
||||
],
|
||||
tileSize: 256,
|
||||
},
|
||||
layout: {
|
||||
visibility: "visible",
|
||||
},
|
||||
paint: {},
|
||||
}
|
||||
}
|
||||
])
|
||||
|
||||
|
||||
|
||||
const columns = reactive([
|
||||
{
|
||||
title: '图层名称',
|
||||
dataIndex: 'name',
|
||||
key: 'name',
|
||||
},
|
||||
{
|
||||
title: '默认',
|
||||
dataIndex: 'checked',
|
||||
key: 'checked',
|
||||
},
|
||||
{
|
||||
title: '操作',
|
||||
dataIndex: 'operation',
|
||||
key: 'operation',
|
||||
},
|
||||
])
|
||||
|
||||
|
||||
const baselayercolumns = reactive([
|
||||
{
|
||||
title: '图层名称',
|
||||
dataIndex: 'name',
|
||||
key: 'name',
|
||||
},
|
||||
{
|
||||
title: '默认',
|
||||
dataIndex: 'checked',
|
||||
key: 'checked',
|
||||
},{
|
||||
title: '操作',
|
||||
dataIndex: 'operation',
|
||||
key: 'operation',
|
||||
},
|
||||
])
|
||||
|
||||
// config
|
||||
// const config: any = inject('formConfig');
|
||||
const config = {}
|
||||
// const mapConfig = ref(config.table.maps);
|
||||
|
||||
|
||||
watch(
|
||||
() => config.table.maps,
|
||||
() => {
|
||||
mapConfig.value = config.table.maps;
|
||||
// 更新选项
|
||||
mapConfig.value?.baseLayers?.forEach((item,index)=>{
|
||||
selectedRowKeys.value.push(item.key)
|
||||
})
|
||||
},
|
||||
);
|
||||
|
||||
|
||||
const selectedBaseLyaers:BaseLayerDataType[] = [];
|
||||
const selectedRowKeys = ref<BaseLayerDataType['key'][]>([]);
|
||||
|
||||
mapConfig.value?.baseLayers?.forEach((item,index)=>{
|
||||
selectedBaseLyaers.push(item);
|
||||
selectedRowKeys.value.push(item.key)
|
||||
})
|
||||
|
||||
const onSelectChange = (changableRowKeys:number[],changeRows:BaseLayerDataType[]) => {
|
||||
selectedRowKeys.value = changableRowKeys;
|
||||
mapConfig.value.baseLayers = changeRows;
|
||||
};
|
||||
|
||||
const rowSelection = computed(() => {
|
||||
return {
|
||||
selectedRowKeys: unref(selectedRowKeys),
|
||||
onChange: onSelectChange,
|
||||
hideDefaultSelections: false,
|
||||
};
|
||||
});
|
||||
|
||||
const openModal = ref(false);
|
||||
const insertShpModal = ref(true);
|
||||
|
||||
const changeOpenModal = (value) => {
|
||||
openModal.value = !openModal.value
|
||||
};
|
||||
|
||||
const changeOpenInsertShpModal = (value) => {
|
||||
insertShpModal.value = value;
|
||||
};
|
||||
|
||||
onMounted(() => {
|
||||
|
||||
});
|
||||
|
||||
const activeKey: any = ref([]);
|
||||
let nowCollapseName = null;
|
||||
// 添加图层分类
|
||||
const handleAddSource = () => {
|
||||
if(!mapConfig.value.layers){
|
||||
mapConfig.value.layers = [];
|
||||
}
|
||||
mapConfig.value?.layers.push(
|
||||
{
|
||||
name: '',
|
||||
layers: [],
|
||||
}
|
||||
);
|
||||
activeKey.value.push('');
|
||||
};
|
||||
// 删除图层分类
|
||||
const hanelerDeleteSource = (collapseName) =>{
|
||||
mapConfig.value.layers.forEach((item, index)=>{
|
||||
if(item.name == collapseName){
|
||||
mapConfig.value.layers.splice(index, 1);
|
||||
activeKey.value.splice(index, 1);
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
|
||||
// 图层标题参数
|
||||
let oldLayerName = '';
|
||||
const newLayerName = ref('');
|
||||
const open = ref(false);
|
||||
// 打开图层标题弹窗
|
||||
const openLayerModal = (name) => {
|
||||
open.value = true;
|
||||
oldLayerName = name;
|
||||
newLayerName.value = name;
|
||||
activeKey.value.push(name);
|
||||
}
|
||||
// 提交图层标题弹窗
|
||||
const submitLayerModal = () => {
|
||||
if (oldLayerName != newLayerName.value) {
|
||||
let number = mapConfig.value?.layers?.filter(la => la.name == newLayerName.value).length;
|
||||
if(number > 0) {
|
||||
message.warn('图层标题名不能重复!');
|
||||
return;
|
||||
}
|
||||
mapConfig.value?.layers?.forEach((item, index) => {
|
||||
if(item.name == oldLayerName) {
|
||||
activeKey.value.push(newLayerName.value);
|
||||
activeKey.value.splice(oldLayerName, 1);
|
||||
mapConfig.value.layers[index].name = newLayerName.value;
|
||||
}
|
||||
})
|
||||
}
|
||||
open.value = false;
|
||||
}
|
||||
// 关闭图层标题弹窗
|
||||
const closeLayerModal = (name) => {
|
||||
open.value = false;
|
||||
}
|
||||
|
||||
const addType = ref<String>("");
|
||||
|
||||
// 添加图层
|
||||
const hanelerAddLayer = (collapseName) =>{
|
||||
addType.value = "layer";
|
||||
if(collapseName) {
|
||||
nowCollapseName = collapseName;
|
||||
changeOpenModal(true);
|
||||
} else {
|
||||
message.warn('请先命名图层分类名');
|
||||
}
|
||||
activeKey.value.push(collapseName);
|
||||
}
|
||||
|
||||
// 添加底图图层
|
||||
const handlerAddBaseLayer = ()=>{
|
||||
addType.value = "baselayer";
|
||||
changeOpenModal(true);
|
||||
}
|
||||
// 删除图层
|
||||
const hanelerDeleteLayer = (name, record)=>{
|
||||
mapConfig.value?.layers?.forEach((item, item_index)=>{
|
||||
if (item.name == name) {
|
||||
item.layers.forEach((it, it_index) => {
|
||||
if(it.id == record.id){
|
||||
mapConfig.value.layers[item_index].layers.splice(it_index, 1);
|
||||
}
|
||||
});
|
||||
}
|
||||
})
|
||||
}
|
||||
|
||||
// 删除底图图层
|
||||
const hanelerDeleteBaseLayer = (item,record)=>{
|
||||
console.log(mapConfig.value,item,record)
|
||||
|
||||
mapConfig.value?.baseLayers?.forEach((item, item_index)=>{
|
||||
if (item.name == record.name) {
|
||||
mapConfig.value.baseLayers.splice(item_index, 1);
|
||||
}
|
||||
})
|
||||
}
|
||||
// 添加图层方法后续
|
||||
const handlerAddToLayerList = (item)=>{
|
||||
if(addType.value == 'layer'){
|
||||
mapConfig.value.layers.forEach((layer, index)=>{
|
||||
if(layer.name == nowCollapseName) {
|
||||
activeKey.value.push(layer.name);
|
||||
mapConfig.value.layers[index].layers.push(item);
|
||||
}
|
||||
});
|
||||
}else if(addType.value == 'baselayer'){
|
||||
mapConfig.value.baseLayers?.push(item);
|
||||
}
|
||||
console.log(mapConfig.value.baseLayers);
|
||||
}
|
||||
|
||||
const handlerBaseLayerChange = (item) => {
|
||||
if(!mapConfig.value?.baseLayers){
|
||||
mapConfig.value.baseLayers = [];
|
||||
}
|
||||
if(item.show == true){
|
||||
mapConfig.value.baseLayers.push(item);
|
||||
}else{
|
||||
mapConfig.value.baseLayers?.forEach((it,idx)=>{
|
||||
if(it.name == item.name){
|
||||
mapConfig.value.baseLayers?.splice(idx,1);
|
||||
}
|
||||
})
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
const saveMapConfig = ()=>{
|
||||
let form = {
|
||||
code:"mapsetting",
|
||||
codeValue:JSON.stringify(mapConfig.value)
|
||||
}
|
||||
updateConfig(form).then(res=>{
|
||||
createMessage.success("保存成功!");
|
||||
})
|
||||
}
|
||||
</script>
|
||||
|
||||
<style lang="less" scoped>
|
||||
.form {
|
||||
overflow-y: auto;
|
||||
height: calc(100vh - 120px);
|
||||
width: 100%;
|
||||
}
|
||||
|
||||
.card-item{
|
||||
margin-top:30px!important;
|
||||
}
|
||||
</style>
|
||||
|
||||
|
|
@ -12,7 +12,7 @@ export const columns: BasicColumn[] = [
|
|||
title: '县区',
|
||||
dataIndex: 'countyname',
|
||||
width: 150,
|
||||
// fixed: 'left',
|
||||
fixed: 'left',
|
||||
},
|
||||
{
|
||||
title: '下发图斑',
|
||||
|
|
|
|||
|
|
@ -116,9 +116,9 @@
|
|||
|
||||
<a-modal
|
||||
v-model:open="showRecordList"
|
||||
width="1500px"
|
||||
width="1710px"
|
||||
:footer="null"
|
||||
style="top: 100px"
|
||||
style="top: 50px; left: 105px"
|
||||
@ok="handleOk"
|
||||
>
|
||||
<template #closeIcon>
|
||||
|
|
@ -154,14 +154,17 @@
|
|||
import { PermissionBtn } from '@/components/PermissionBtn/index';
|
||||
import { PageWrapper } from '@/components/Page';
|
||||
import { cloneDeep } from 'lodash-es';
|
||||
import { getCaseOffence } from '@/api/demo/system';
|
||||
import { getCaseOffence, postCaseOffenceToExcel } from '@/api/demo/system';
|
||||
import { columns, searchFormSchema } from './index.data';
|
||||
import { useMessage } from '@/hooks/web/useMessage';
|
||||
import { MinusOutlined, CloseOutlined, CloudDownloadOutlined } from '@ant-design/icons-vue';
|
||||
import dayjs from 'dayjs';
|
||||
import { RecordList } from './page';
|
||||
import { MinusOutlined, CloseOutlined, CloudDownloadOutlined } from '@ant-design/icons-vue';
|
||||
import { getAppEnvConfig } from '@/utils/env';
|
||||
import axios from 'axios';
|
||||
import dayjs from 'dayjs';
|
||||
|
||||
const { createMessage } = useMessage();
|
||||
const { VITE_GLOB_API_URL } = getAppEnvConfig();
|
||||
|
||||
// 页面表格
|
||||
const searchParams = ref();
|
||||
|
|
@ -177,9 +180,9 @@
|
|||
showIndexColumn: false,
|
||||
striped: false,
|
||||
bordered: true,
|
||||
showSummary: true,
|
||||
canResize: false,
|
||||
useSearchForm: true,
|
||||
// showTableSetting: true,
|
||||
pagination: false,
|
||||
size: 'small',
|
||||
handleSearchInfoFn(info) {
|
||||
|
|
@ -189,8 +192,8 @@
|
|||
beforeFetch: (data) => {
|
||||
// 接口请求前 参数处理
|
||||
var temp = {
|
||||
startTime: dayjs(data.startTime).format('YYYY-MM'),
|
||||
endTime: dayjs(data.endTime).format('YYYY-MM'),
|
||||
startTime: dayjs(data.startTime).startOf('month').format('YYYY-MM-DD'),
|
||||
endTime: dayjs(data.endTime).endOf('month').format('YYYY-MM-DD'),
|
||||
};
|
||||
return temp;
|
||||
},
|
||||
|
|
@ -220,8 +223,8 @@
|
|||
const searchForm = reactive<searchListSchema>({
|
||||
AreaId: record.countyid,
|
||||
CaseType: CaseType,
|
||||
startTime: dayjs(searchParams.value?.startTime).format('YYYY-MM'),
|
||||
endTime: dayjs(searchParams.value?.endTime).format('YYYY-MM'),
|
||||
startTime: dayjs(searchParams.value?.startTime).startOf('month').format('YYYY-MM-DD'),
|
||||
endTime: dayjs(searchParams.value?.endTime).endOf('month').format('YYYY-MM-DD'),
|
||||
page: 1,
|
||||
limit: 10,
|
||||
});
|
||||
|
|
@ -265,6 +268,18 @@
|
|||
// 标签页面的搜索条件
|
||||
currentListQuery.listQuery = searchForm;
|
||||
}
|
||||
function onEdit(targetKey: string) {
|
||||
tablist.splice(parseInt(targetKey), 1);
|
||||
if (tablist.length == 0) {
|
||||
showRecordList.value = false;
|
||||
}
|
||||
if (parseInt(targetKey) > 1) {
|
||||
activeKey.value = (parseInt(targetKey) - 1).toString();
|
||||
} else {
|
||||
activeKey.value = '0';
|
||||
}
|
||||
currentListQuery.listQuery = tablist[activeKey.value].listQuery;
|
||||
}
|
||||
function handleTabChange(e) {
|
||||
currentListQuery.listQuery = tablist[e].listQuery;
|
||||
}
|
||||
|
|
@ -280,8 +295,43 @@
|
|||
}
|
||||
showRecordList.value = false;
|
||||
}
|
||||
|
||||
// 直接下载接口返回的二进制流
|
||||
function handleExport() {
|
||||
let params = {
|
||||
startTime: dayjs(searchParams.value?.startTime).startOf('month').format('YYYY-MM-DD'),
|
||||
endTime: dayjs(searchParams.value?.endTime).endOf('month').format('YYYY-MM-DD'),
|
||||
};
|
||||
axios({
|
||||
method: 'post',
|
||||
url: VITE_GLOB_API_URL + '/api/DroneCaseInfoSingle/CaseOffenceToExcel',
|
||||
params: params,
|
||||
headers: {
|
||||
'X-Token': localStorage.getItem('X-Token'),
|
||||
},
|
||||
responseType: 'blob',
|
||||
}).then((res) => {
|
||||
let fileName = '无人机发现违法行为情况统计明细表' + new Date().getTime() + '.xls';
|
||||
const elink = document.createElement('a');
|
||||
elink.download = fileName;
|
||||
elink.style.display = 'none';
|
||||
elink.href = URL.createObjectURL(res.data);
|
||||
document.body.appendChild(elink);
|
||||
elink.click();
|
||||
URL.revokeObjectURL(elink.href);
|
||||
document.body.removeChild(elink);
|
||||
});
|
||||
}
|
||||
// 按键分类
|
||||
const buttonClick = async (type) => {
|
||||
switch (type) {
|
||||
case 'btnExport':
|
||||
handleExport();
|
||||
break;
|
||||
}
|
||||
};
|
||||
</script>
|
||||
<style>
|
||||
<style lang="less" scoped>
|
||||
#closeIconButton {
|
||||
width: 30px;
|
||||
height: 40px;
|
||||
|
|
@ -290,4 +340,27 @@
|
|||
text-align: center;
|
||||
cursor: pointer;
|
||||
}
|
||||
|
||||
/* 整个滚动条的样式 */
|
||||
::-webkit-scrollbar {
|
||||
width: 12px;
|
||||
height: 12px;
|
||||
}
|
||||
|
||||
/* 滚动条轨道 */
|
||||
::-webkit-scrollbar-track {
|
||||
background: #f1f1f1;
|
||||
border-radius: 10px;
|
||||
}
|
||||
|
||||
/* 滚动条滑块 */
|
||||
::-webkit-scrollbar-thumb {
|
||||
background: #888;
|
||||
border-radius: 10px;
|
||||
}
|
||||
|
||||
/* 当鼠标悬停在滚动条滑块上时的样式 */
|
||||
::-webkit-scrollbar-thumb:hover {
|
||||
background: #555;
|
||||
}
|
||||
</style>
|
||||
|
|
|
|||
|
|
@ -95,7 +95,7 @@
|
|||
>
|
||||
<div class="data-list-layout-div">
|
||||
<div class="data-list-title-div">
|
||||
<img src="/positioning.png" class="map-mark"/>
|
||||
<img src="/positioning.png" class="map-mark" @click="locationFun(item)"/>
|
||||
<div class="label-div">
|
||||
<div class="item-label">{{item.countyname}}</div>
|
||||
<div class="item-sub-label">
|
||||
|
|
@ -119,19 +119,19 @@
|
|||
</div>
|
||||
<div class="data-list-info-div">
|
||||
<div class="info-layout-div">
|
||||
<div class="info-item" style="width: 79px;">
|
||||
<div class="info-item">
|
||||
<div class="info-label">总</div>
|
||||
<div class="info-data">{{item.area}}亩</div>
|
||||
</div>
|
||||
<div class="info-item" style="width: 79px;">
|
||||
<div class="info-item">
|
||||
<div class="info-label">耕</div>
|
||||
<div class="info-data">{{item.gengdi_area}}亩</div>
|
||||
</div>
|
||||
<div class="info-item" style="width: 90px;">
|
||||
<div class="info-item">
|
||||
<div class="info-label">基</div>
|
||||
<div class="info-data">{{item.yongjiujibennongtian_area}}亩</div>
|
||||
</div>
|
||||
<div class="info-item" style="width: 90px;">
|
||||
<div class="info-item">
|
||||
<div class="info-label">农</div>
|
||||
<div class="info-data">{{item.nongyongdi_area}}亩</div>
|
||||
</div>
|
||||
|
|
@ -452,7 +452,7 @@
|
|||
.screen-div {
|
||||
padding: 10px 10px 19px 10px;
|
||||
display: flex;
|
||||
width: 565px;
|
||||
width: 590px;
|
||||
// margin-top: 10px;
|
||||
flex-wrap: wrap;
|
||||
// background: @component-background;
|
||||
|
|
@ -530,6 +530,8 @@
|
|||
padding: 10px;
|
||||
// margin-top: 10px;
|
||||
height: 60vh;
|
||||
scrollbar-width: none; /* firefox */
|
||||
-ms-overflow-style: none; /* IE 10+ */
|
||||
.data-list-item{
|
||||
background:#fff;
|
||||
padding:10px;
|
||||
|
|
@ -547,6 +549,7 @@
|
|||
.map-mark{
|
||||
width:17px;
|
||||
height:17px;
|
||||
cursor:pointer;
|
||||
}
|
||||
.label-div{
|
||||
display: flex;
|
||||
|
|
@ -650,6 +653,9 @@
|
|||
border-bottom-right-radius: 6px;
|
||||
}
|
||||
}
|
||||
.data-list-div::-webkit-scrollbar {
|
||||
display: none; /* Chrome Safari */
|
||||
}
|
||||
.pagination-div {
|
||||
background: @component-background;
|
||||
padding: 0 10px 10px;
|
||||
|
|
|
|||
|
|
@ -45,7 +45,6 @@
|
|||
import { getGeom,getConfig } from '@/api/sys/layerManagement';
|
||||
import { getDetail } from '@/api/sys/WFSchemeInfo';
|
||||
import { useMessage } from '@/hooks/web/useMessage';
|
||||
|
||||
const { createMessage } = useMessage();
|
||||
|
||||
const MapboxMap = defineAsyncComponent(() => import('@/components/MapboxMaps/MapComponent.vue'));
|
||||
|
|
@ -196,7 +195,7 @@
|
|||
height: 100%;
|
||||
display: flex;
|
||||
.show-list {
|
||||
width: 565px;
|
||||
width: 590px;
|
||||
background: #EFEFEF;
|
||||
}
|
||||
.map-box-div {
|
||||
|
|
|
|||
|
|
@ -41,12 +41,49 @@
|
|||
@click="emits('showInfo', true, item)"
|
||||
v-if="dataList.length > 0"
|
||||
>
|
||||
<div class="name-div">
|
||||
<div class="name-div">
|
||||
<div class="item-mark"></div>
|
||||
<div class="item-label">{{ item.areaname }}</div>
|
||||
<div class="progress-div">
|
||||
<div class="progress-label progress-color">进度</div>
|
||||
<div class="progress-data" style="width:97px">
|
||||
<span style="color: #086DEC;">{{item.verificatedtask}}</span>/{{item.totaltask}}
|
||||
</div>
|
||||
</div>
|
||||
<div class="progress-div">
|
||||
<div class="progress-label extended-color">超期</div>
|
||||
<div class="progress-data" style="width:50px">
|
||||
<span style="color: #D03542">{{item.overduetask}}</span>
|
||||
</div>
|
||||
</div>
|
||||
<div class="progress-div">
|
||||
<div class="progress-label reviewed-color" style="width:70px;">待审核</div>
|
||||
<div class="progress-data" style="width:50px">
|
||||
<span style="color: #EC7908;">{{item.verifytask}}</span>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="data-div">
|
||||
<span>{{ item.count }}</span>
|
||||
<div class="info-data-div">
|
||||
<div class="info-data-item">
|
||||
<div class="info-data-label">合法</div>
|
||||
<div class="info-data-data">{{item.legalcase}}</div>
|
||||
</div>
|
||||
<div class="info-data-item">
|
||||
<div class="info-data-label">其他</div>
|
||||
<div class="info-data-data">{{item.ilegalcase}}</div>
|
||||
</div>
|
||||
<div class="info-data-item">
|
||||
<div class="info-data-label">非粮化</div>
|
||||
<div class="info-data-data">{{item.nonfoodcase}}</div>
|
||||
</div>
|
||||
<div class="info-data-item">
|
||||
<div class="info-data-label">复耕</div>
|
||||
<div class="info-data-data">{{item.rehabilitationcase}}</div>
|
||||
</div>
|
||||
<div class="info-data-item">
|
||||
<div class="info-data-label">补手续</div>
|
||||
<div class="info-data-data">{{item.makeupcase}}</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div v-else class="no-data">
|
||||
|
|
@ -58,10 +95,10 @@
|
|||
|
||||
<script setup lang="ts">
|
||||
import { ref, defineProps, defineEmits, toRefs } from 'vue';
|
||||
import { batchOptions, yearOptions } from '@/views/demo/tiankongdi/curbspotcity/util.ts';
|
||||
import { batchOptions, yearOptions,patchSourceOptions } from '@/views/demo/tiankongdi/curbspotcity/util.ts';
|
||||
import { Empty } from 'ant-design-vue';
|
||||
|
||||
const props = defineProps(['year', 'batch', 'dataList']);
|
||||
const props = defineProps(['year', 'batch', 'dataList','patchSource']);
|
||||
const emits = defineEmits(['auditProgressScreenChange', 'showInfo']);
|
||||
const simpleImage = Empty.PRESENTED_IMAGE_SIMPLE;
|
||||
</script>
|
||||
|
|
@ -73,23 +110,27 @@
|
|||
.screen-row {
|
||||
display: flex;
|
||||
.screen-item {
|
||||
flex: 1;
|
||||
font-family: Alibaba PuHuiTi;
|
||||
font-weight: 500;
|
||||
font-size: 17px;
|
||||
color: #000000;
|
||||
width: 50%;
|
||||
display: flex;
|
||||
.screen-item-label {
|
||||
width: 55px;
|
||||
width: 56px;
|
||||
padding-left: 10px;
|
||||
display: flex;
|
||||
align-items: center;
|
||||
font-size: 15px;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
.data-list {
|
||||
height: calc(100% - 52px);
|
||||
background: @component-background;
|
||||
margin-top: 10px;
|
||||
height: calc(100% - 62px);
|
||||
// background: darkgoldenrod;
|
||||
// background: @component-background;
|
||||
margin-top: 10px;
|
||||
padding: 0px 10px;
|
||||
.data-title {
|
||||
height: 40px;
|
||||
background: #bab9b7;
|
||||
|
|
@ -102,17 +143,58 @@
|
|||
}
|
||||
.show-data-list-content {
|
||||
.data-item {
|
||||
cursor: pointer;
|
||||
width: 100%;
|
||||
background: #fff;
|
||||
border-radius: 11px;
|
||||
padding: 10px;
|
||||
margin-bottom: 10px;
|
||||
.name-div {
|
||||
display: flex;
|
||||
display: flex;
|
||||
height: 50px;
|
||||
align-items: center;
|
||||
padding: 10px;
|
||||
justify-content: space-between;
|
||||
border-bottom: 1px solid #ececec;
|
||||
cursor: pointer;
|
||||
.name-div {
|
||||
display: flex;
|
||||
height: 50px;
|
||||
align-items: center;
|
||||
padding: 10px 0px;
|
||||
border-bottom: 1px solid #E5E5E5;
|
||||
}
|
||||
.info-data-div{
|
||||
display: flex;
|
||||
align-items: center;
|
||||
justify-content: space-between;
|
||||
margin-top: 10px;
|
||||
.info-data-item{
|
||||
display: flex;
|
||||
align-items: center;
|
||||
flex: 1;
|
||||
justify-content: center;
|
||||
border-right: 1px solid #EDEDED;
|
||||
.info-data-label{
|
||||
font-family: Alibaba PuHuiTi;
|
||||
font-weight: 400;
|
||||
font-size: 16px;
|
||||
color: #959494;
|
||||
display: flex;
|
||||
justify-content: end;
|
||||
flex: 1;
|
||||
padding-right: 5px;
|
||||
}
|
||||
.info-data-data{
|
||||
font-family: HarmonyOS Sans;
|
||||
font-weight: 500;
|
||||
font-size: 16px;
|
||||
color: #000000;
|
||||
line-height: 30px;
|
||||
flex: 1;
|
||||
display: flex;
|
||||
justify-content: start;
|
||||
padding-left: 5px;
|
||||
}
|
||||
}
|
||||
.info-data-item:nth-last-child(1){
|
||||
border-right: 0px;
|
||||
}
|
||||
}
|
||||
.data-div {
|
||||
font-weight: 500;
|
||||
|
|
@ -126,17 +208,52 @@
|
|||
margin-right: 7px;
|
||||
}
|
||||
.item-label {
|
||||
width: 100px;
|
||||
font-size: 16px;
|
||||
font-weight: 600;
|
||||
margin-left: 5px;
|
||||
}
|
||||
.progress-div{
|
||||
display:flex;
|
||||
font-weight: 500;
|
||||
font-size: 16px;
|
||||
line-height: 30px;
|
||||
margin-right: 17px;
|
||||
.progress-label{
|
||||
font-family: Alibaba PuHuiTi;
|
||||
color: #FFFFFF;
|
||||
width: 50px;
|
||||
height: 27px;
|
||||
border-radius: 13px 0px 0px 13px;
|
||||
display: flex;
|
||||
align-items: center;
|
||||
justify-content: center;
|
||||
}
|
||||
.progress-data{
|
||||
background: #EFEFEF;
|
||||
height: 27px;
|
||||
display: flex;
|
||||
align-items: center;
|
||||
justify-content: center;
|
||||
border-radius: 0px 0px 11px 0px;
|
||||
}
|
||||
.progress-color{
|
||||
background: #086DEC;
|
||||
}
|
||||
.extended-color{
|
||||
background: #D03542
|
||||
}
|
||||
.reviewed-color{
|
||||
background: #EC7908
|
||||
}
|
||||
}
|
||||
}
|
||||
.data-item:hover {
|
||||
background-color: rgba(8, 109, 236, 0.08);
|
||||
}
|
||||
.data-item:nth-child(2n) {
|
||||
background: #ececec;
|
||||
}
|
||||
// .data-item:nth-child(2n) {
|
||||
// background: #ececec;
|
||||
// }
|
||||
}
|
||||
}
|
||||
.no-data {
|
||||
|
|
|
|||
|
|
@ -51,6 +51,8 @@
|
|||
import { batchOptions, yearOptions } from '@/views/demo/tiankongdi/curbspotcity/util.ts';
|
||||
import { getChildrenTree } from '@/api/demo/system.ts';
|
||||
import { getGeom,getConfig } from '@/api/sys/layerManagement';
|
||||
import { useMessage } from '@/hooks/web/useMessage';
|
||||
const { createMessage } = useMessage();
|
||||
|
||||
const MapboxMap = defineAsyncComponent(() => import('@/components/MapboxMaps/MapComponent.vue'));
|
||||
const MapboxComponent = ref();
|
||||
|
|
|
|||
|
|
@ -170,6 +170,8 @@ import { defineProps,ref,computed } from "vue"
|
|||
import MapboxMap from '@/components/MapboxMaps/MapComponent.vue'
|
||||
import {getConfig} from '@/api/sys/layerManagement'
|
||||
import { getGeom } from '@/api/sys/layerManagement';
|
||||
import { useMessage } from '@/hooks/web/useMessage';
|
||||
const { createMessage } = useMessage();
|
||||
import Icon from '@/components/Icon/Icon.vue';
|
||||
|
||||
const MapboxComponent = ref();
|
||||
|
|
|
|||
|
|
@ -3,7 +3,7 @@
|
|||
<div class="top-radio-button-div">
|
||||
<a-radio-group
|
||||
v-model:value="props.infoScreenData.landType"
|
||||
@change="(value) => emits('mapListScreenChange','landType')"
|
||||
@change="(e) => emits('mapListScreenChange',e.target.value,'landType')"
|
||||
button-style="solid"
|
||||
style="width:100%">
|
||||
<a-radio-button :value="0" class="radio-item">农用地</a-radio-button>
|
||||
|
|
@ -88,8 +88,8 @@
|
|||
</div>
|
||||
<div class="sift-div">
|
||||
<div class="layout-div">
|
||||
<RollbackOutlined class="back-button" @click="emits('closeShowInfo', false)"/>
|
||||
<div class="interval-div"></div>
|
||||
<!-- <RollbackOutlined class="back-button" @click="emits('closeShowInfo', false)"/> -->
|
||||
<!-- <div class="interval-div"></div> -->
|
||||
<div class="sift-item" @click="dataListSort('area')">
|
||||
<div class="sift-label">总面积</div>
|
||||
<div class="sift-icon">
|
||||
|
|
@ -181,7 +181,7 @@
|
|||
<div v-for="(item, index) in props.infoDataList" :key="index" class="data-list-item">
|
||||
<div class="data-list-layout-div">
|
||||
<div class="data-list-title-div">
|
||||
<img src="/positioning.png" class="map-mark"/>
|
||||
<img src="/positioning.png" class="map-mark" style="cursor:pointer;" @click="locationFun(item)"/>
|
||||
<div class="label-div">
|
||||
<div class="item-label">{{item.countyname}}</div>
|
||||
<div class="item-sub-label">
|
||||
|
|
@ -191,26 +191,26 @@
|
|||
</div>
|
||||
<div class="item-mark" v-if="item.isbuildname">{{item.isbuildname}}</div>
|
||||
</div>
|
||||
<div class="data-item-type-div" style="cursor:pointer;" @click="() => {}">
|
||||
<div class="data-item-type-div" style="cursor:pointer;" @click="goAudit(item)">
|
||||
{{item.unitname}}
|
||||
</div>
|
||||
</div>
|
||||
<div class="data-list-info-div">
|
||||
<div class="info-layout-div">
|
||||
<div class="info-item" style="width: 67px;">
|
||||
<div class="info-item">
|
||||
<div class="info-label">总</div>
|
||||
<div class="info-data">{{item.area}}亩</div>
|
||||
</div>
|
||||
<div class="info-item" style="width: 67px;">
|
||||
<div class="info-item">
|
||||
<div class="info-label">耕</div>
|
||||
<div class="info-data">{{item.gengdiarea}}亩</div>
|
||||
</div>
|
||||
<div class="info-item">
|
||||
<div class="info-label" style="width: 80px;">基</div>
|
||||
<div class="info-label">基</div>
|
||||
<div class="info-data">{{item.yongjiujibennongtianarea}}亩</div>
|
||||
</div>
|
||||
<div class="info-item">
|
||||
<div class="info-label" style="width: 80px;">农</div>
|
||||
<div class="info-label">农</div>
|
||||
<div class="info-data">{{item.nongyongdiarea}}亩</div>
|
||||
</div>
|
||||
</div>
|
||||
|
|
@ -251,6 +251,36 @@
|
|||
<ShowInfoModal :showInfoData="showInfoData"/>
|
||||
</div>
|
||||
</a-modal>
|
||||
<a-modal
|
||||
width="100%"
|
||||
wrap-class-name="full-modal"
|
||||
v-model:open="auditOpen"
|
||||
title="审核"
|
||||
footer=""
|
||||
:destroyOnClose="true"
|
||||
>
|
||||
<template #footer> </template>
|
||||
<div class="handoff">
|
||||
<a-button
|
||||
type="primary"
|
||||
style="margin-right: 25px;"
|
||||
@click="prevData"
|
||||
>上一条</a-button>
|
||||
<a-button
|
||||
type="primary"
|
||||
@click="nextData"
|
||||
>下一条</a-button>
|
||||
</div>
|
||||
<Audit
|
||||
v-if="handoffShow"
|
||||
ref="posRef"
|
||||
:processId="processId"
|
||||
:taskId="taskId"
|
||||
:isRead="isRead"
|
||||
:type="type"
|
||||
@closeModel="closeMolder"
|
||||
/>
|
||||
</a-modal>
|
||||
</div>
|
||||
</template>
|
||||
|
||||
|
|
@ -273,8 +303,11 @@ import {
|
|||
import { useUserStore } from '@/store/modules/user.ts'
|
||||
import { message } from "ant-design-vue";
|
||||
import ShowInfoModal from './ShowInfoModal/index.vue'
|
||||
import { flowStore } from '@/store/modules/flow';
|
||||
import { getDetail } from '@/api/sys/WFSchemeInfo';
|
||||
import { Audit } from '@/views/demo/workflow/task/process/page';
|
||||
const userStore = useUserStore()
|
||||
|
||||
const flowWfDataStore = flowStore();
|
||||
const emits = defineEmits([
|
||||
"closeShowInfo",
|
||||
"mapListScreenChange",
|
||||
|
|
@ -310,6 +343,13 @@ const orderMark = () => {
|
|||
}
|
||||
}
|
||||
const showInfoOpen = ref(false)
|
||||
const showDataIndex = ref()
|
||||
const auditOpen = ref(false);
|
||||
const processId = ref('');
|
||||
const taskId = ref('');
|
||||
const type = ref('');
|
||||
const handoffShow = ref(true)
|
||||
const isRead: any = ref(0);
|
||||
const openCollect = computed(() => {
|
||||
if(props.infoScreenData.type === '') return false
|
||||
return true
|
||||
|
|
@ -382,9 +422,70 @@ const showInfo = (item) => {
|
|||
showInfoOpen.value = true
|
||||
})
|
||||
}
|
||||
async function goAudit(record) {
|
||||
showDataIndex.value = props.infoDataList.findIndex(item => item.taskeid === record.taskeid)
|
||||
let data = await getDetail({ code: record.processcode });
|
||||
let scheme = JSON.parse(data.scheme.content);
|
||||
let wfData = scheme.wfData;
|
||||
flowWfDataStore.setWfDataAll(wfData);
|
||||
auditOpen.value = true;
|
||||
processId.value = record.processid;
|
||||
taskId.value = record.taskeid;
|
||||
type.value = record.type;
|
||||
}
|
||||
const prevData = async () => {
|
||||
if(showDataIndex.value === 0){
|
||||
if(props.pageNo === 1){
|
||||
message.warning('已经是第一条数据了')
|
||||
return
|
||||
}
|
||||
await emits('changeInfoPage',props.pageNo - 1,props.pageSize)
|
||||
showDataIndex.value = props.infoDataList.length -1
|
||||
}else{
|
||||
showDataIndex.value = showDataIndex.value -1
|
||||
}
|
||||
handoffShow.value = false
|
||||
let record = props.infoDataList[showDataIndex.value]
|
||||
let data = await getDetail({ code: record.processcode });
|
||||
let scheme = JSON.parse(data.scheme.content);
|
||||
let wfData = scheme.wfData;
|
||||
flowWfDataStore.setWfDataAll(wfData);
|
||||
processId.value = record.processid;
|
||||
taskId.value = record.taskeid;
|
||||
type.value = record.type;
|
||||
handoffShow.value = true
|
||||
}
|
||||
const nextData = async () => {
|
||||
if(showDataIndex.value === props.infoDataList.length -1){
|
||||
if(Math.ceil(props.total / props.pageSize) === props.pageNo){
|
||||
message.warning('已经是最后一条数据了')
|
||||
return
|
||||
}
|
||||
await emits('changeInfoPage',props.pageNo + 1,props.pageSize)
|
||||
showDataIndex.value = 0
|
||||
}else{
|
||||
showDataIndex.value = showDataIndex.value + 1
|
||||
}
|
||||
handoffShow.value = false
|
||||
let record = props.infoDataList[showDataIndex.value]
|
||||
let data = await getDetail({ code: record.processcode });
|
||||
let scheme = JSON.parse(data.scheme.content);
|
||||
let wfData = scheme.wfData;
|
||||
flowWfDataStore.setWfDataAll(wfData);
|
||||
processId.value = record.processid;
|
||||
taskId.value = record.taskeid;
|
||||
type.value = record.type;
|
||||
handoffShow.value = true
|
||||
}
|
||||
</script>
|
||||
|
||||
<style lang="scss" scoped>
|
||||
.handoff{
|
||||
width: 100%;
|
||||
display: flex;
|
||||
justify-content: flex-end;
|
||||
padding-right: 25px;
|
||||
}
|
||||
.full-modal {
|
||||
.ant-modal {
|
||||
min-width: 100vw;
|
||||
|
|
@ -422,7 +523,7 @@ const showInfo = (item) => {
|
|||
.screen-div{
|
||||
padding: 10px;
|
||||
display: flex;
|
||||
width:565px;
|
||||
width:590px;
|
||||
flex-wrap: wrap;
|
||||
.screen-item{
|
||||
width: 33.3%;
|
||||
|
|
@ -513,6 +614,8 @@ const showInfo = (item) => {
|
|||
flex: 1;
|
||||
overflow: auto;
|
||||
padding: 10px;
|
||||
scrollbar-width: none; /* firefox */
|
||||
-ms-overflow-style: none; /* IE 10+ */
|
||||
.data-list-item{
|
||||
background:#fff;
|
||||
padding:10px;
|
||||
|
|
@ -619,6 +722,9 @@ const showInfo = (item) => {
|
|||
border-bottom-right-radius: 6px
|
||||
}
|
||||
}
|
||||
.data-list-div::-webkit-scrollbar {
|
||||
display: none; /* Chrome Safari */
|
||||
}
|
||||
.pagination-div{
|
||||
height: 60px;
|
||||
display: flex;
|
||||
|
|
|
|||
|
|
@ -2,7 +2,7 @@
|
|||
<div class="curb-spot-city">
|
||||
<div class="show-list">
|
||||
<a-spin :spinning="spinning">
|
||||
<AuditProgress
|
||||
<!-- <AuditProgress
|
||||
v-if="!showInfo"
|
||||
:year="year"
|
||||
:batch="batch"
|
||||
|
|
@ -11,9 +11,8 @@
|
|||
:dataList="dataList"
|
||||
@auditProgressScreenChange="auditProgressScreenChange"
|
||||
@showInfo="changeShowInfo"
|
||||
/>
|
||||
/> -->
|
||||
<MapList
|
||||
v-if="showInfo"
|
||||
:infoScreenData="infoScreenData"
|
||||
:cityType="cityType"
|
||||
:pageNo="pageNo"
|
||||
|
|
@ -136,6 +135,7 @@ const mapListScreenChange = (value, type) => {
|
|||
switch(type){
|
||||
case 'landType':
|
||||
infoScreenData.value.landType = value
|
||||
getInfoList()
|
||||
break
|
||||
case 'year':
|
||||
infoScreenData.value.year = value
|
||||
|
|
@ -351,10 +351,10 @@ const getInfoList = () => {
|
|||
spinning.value = false
|
||||
})
|
||||
}
|
||||
const changeInfoPage = (page, limit) => {
|
||||
const changeInfoPage = async(page, limit) => {
|
||||
pageNo.value = page
|
||||
pageSize.value = limit
|
||||
getInfoList()
|
||||
await getInfoList()
|
||||
}
|
||||
const collectChange = (value) => {
|
||||
pageNo.value = 1
|
||||
|
|
@ -440,7 +440,7 @@ onMounted(() => {
|
|||
height: 100%;
|
||||
display: flex;
|
||||
.show-list{
|
||||
width: 565px;
|
||||
width: 590px;
|
||||
background: #EFEFEF;
|
||||
:deep(.ant-spin-nested-loading){
|
||||
height: 100%;
|
||||
|
|
|
|||
|
|
@ -148,11 +148,10 @@
|
|||
import { designerDataType, logsType } from './processModel';
|
||||
import { auditInfo } from './page';
|
||||
import { getGeom } from '@/api/sys/layerManagement';
|
||||
import { useMessage } from '@/hooks/web/useMessage';
|
||||
import { storeToRefs } from 'pinia';
|
||||
import ImagePreview from "@/components/Upload/src/components/image_preview.vue";
|
||||
import { userFormFileStore } from '@/store/modules/formFileUrl';
|
||||
|
||||
import { useMessage } from '@/hooks/web/useMessage';
|
||||
const { createMessage } = useMessage();
|
||||
const MapboxMap = defineAsyncComponent(() => import('@/components/MapboxMaps/MapComponent.vue'));
|
||||
const mapConfig = ref({ isShowMap: false });
|
||||
|
|
|
|||
Loading…
Reference in New Issue