非粮化专题接口对接

dianlixunjian
Zhufu 2024-08-04 17:21:19 +08:00
parent 515caff518
commit 79c5faee02
7 changed files with 41 additions and 395 deletions

View File

@ -1,23 +1,29 @@
import { defHttp } from '@/utils/http/axios';
enum Api {
// 非法采矿接收办理
LoadCaiKuangTaskList = '/api/DroneCaseInfoSatellite/LoadCaiKuangTaskList',
// 非粮化 接收办理 和图斑调整
LoadCaiKuangTaskList = '/api/DroneCaseInfoFLH/LoadFLHTaskList',
// 添加收藏
AddCaiKuangTaskFavorite = '/api/DroneCaseInfoSatellite/AddCaiKuangTaskFavorite',
AddCaiKuangTaskFavorite = '/api/DroneCaseInfoFLH/LoadFLHTaskList',
// 取消收藏
DeleteCaiKuangTaskCase = '/api/DroneCaseInfoSatellite/DeleteCaiKuangTaskCase',
// 非法采矿图斑列表
LoadCaseInfoWpxfTuBanList = '/api/DroneCaseInfoSatellite/LoadCaseInfoWpxfTuBanList',
// 非法采矿填报审核第一层
LoadReportCaseCount = '/api/DroneCaseInfoSatellite/LoadReportCaseCount',
// 非法采矿填报审核第二层
LoadTaskDetailList = '/api/DroneCaseInfoSatellite/LoadTaskDetailList',
// 非法采矿整改审核第一层
LoadReformCaseCount = '/api/DroneCaseInfoSatellite/LoadReformCaseCount',
// 非法采矿整改审核第二层
LoadTaskIllegalDetailList = '/api/DroneCaseInfoSatellite/LoadTaskIllegalDetailList',
DeleteCaiKuangTaskCase = '/api/DroneCaseInfoFLH/DeleteFLHTaskCase',
// 非粮化 图斑列表
LoadCaseInfoWpxfTuBanList = '/api/DroneCaseInfoFLH/LoadCaseInfoTuBanList',
// 非粮化 填报审核第一层
LoadReportCaseCount = '/api/DroneCaseInfoFLH/LoadTaskCount',
// 非粮化 填报审核第二层
LoadTaskDetailList = '/api/DroneCaseInfoFLH/LoadTaskDetailList',
// 非粮化 整改审核第一层
LoadReformCaseCount = '/api/DroneCaseInfoFLH/LoadTaskCount',
// 非粮化 整改审核第二层
LoadTaskIllegalDetailList = '/api/DroneCaseInfoFLH/LoadTaskIllegalDetailList',
// 案件详情
GetCaseInfoById = '/api/DroneCaseInfoSatellite/GetCaseInfoById',
GetCaseInfoById = '/api/DroneCaseInfoFLH/GetCaseInfoById',
// 非粮化 图斑调整 更新案件行政区划
UpdateDroneCaseInfo = '/api/DroneCaseInfoFLH/UpdateDroneCaseInfo',
// 分割还原
CaseRecover = '/api/DroneCaseInfoFLH/CaseRecover',
// 图斑分割
CaseSplit = '/api/DroneCaseInfoFLH/CaseSplit',
}
export function LoadCaiKuangTaskList(params) {
return defHttp.get({ url: Api.LoadCaiKuangTaskList, params });
@ -48,4 +54,12 @@ export function LoadReformCaseCount(params) {
}
export function GetCaseInfoById(params?: { id: string }) {
return defHttp.get({ url: Api.GetCaseInfoById, params });
}
export const UpdateDroneCaseInfo = (params) =>
defHttp.post({ url: Api.UpdateDroneCaseInfo, params });
export function CaseRecover(params){
return defHttp.post({ url: Api.CaseRecover, data: params });
}
export function CaseSplit(params){
return defHttp.post({ url: Api.CaseSplit, data: params });
}

View File

@ -1,262 +0,0 @@
<template>
<div class="screen-div">
<div class="screen-row">
<div class="screen-item">
<div class="screen-item-label">年份</div>
<a-select
allowClear
style="flex: 1"
v-model:value="props.year"
:options="yearOptions"
@change="
(value) => {
emits('auditProgressScreenChange', value, 'year');
}
"
/>
</div>
<div class="screen-item">
<div class="screen-item-label">批次</div>
<a-select
allowClear
style="flex: 1"
v-model:value="props.batch"
:options="batchOptions"
@change="
(value) => {
emits('auditProgressScreenChange', value, 'batch');
}
"
/>
</div>
</div>
</div>
<div class="data-list">
<!-- <div class="data-title">审核进度</div> -->
<div class="show-data-list-content">
<div
class="data-item"
v-for="(item, index) in dataList"
:key="index"
@click="emits('showInfo', true, item)"
v-if="dataList.length > 0"
>
<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="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">
<a-empty :image="simpleImage" />
</div>
</div>
</div>
</template>
<script setup lang="ts">
import { ref, defineProps, defineEmits, toRefs } from 'vue';
import { batchOptions, yearOptions,patchSourceOptions } from '@/utils/global';
import { Empty } from 'ant-design-vue';
const props = defineProps(['year', 'batch', 'dataList','patchSource']);
const emits = defineEmits(['auditProgressScreenChange', 'showInfo']);
const simpleImage = Empty.PRESENTED_IMAGE_SIMPLE;
</script>
<style lang="less" scoped>
.screen-div {
background: @component-background;
padding: 10px;
.screen-row {
display: flex;
.screen-item {
font-family: Alibaba PuHuiTi;
font-weight: 500;
font-size: 17px;
color: #000000;
width: 50%;
display: flex;
.screen-item-label {
width: 56px;
padding-left: 10px;
display: flex;
align-items: center;
}
}
}
}
.data-list {
height: calc(100% - 62px);
// background: darkgoldenrod;
// background: @component-background;
margin-top: 10px;
padding: 0px 10px;
.data-title {
height: 40px;
background: #bab9b7;
font-size: 18px;
display: flex;
align-items: center;
justify-content: center;
font-weight: 600;
color: #366198;
}
.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;
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;
margin-right: 5px;
}
.item-mark {
width: 5px;
height: 5px;
background: #086dec;
margin-left: 7px;
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;
// }
}
}
.no-data {
padding: 20px 0;
}
</style>

View File

@ -100,7 +100,7 @@
import { ref, reactive, onMounted, defineProps, watch } from 'vue';
import { BasicModal, useModalInner } from '@/components/Modal';
import { useMessage } from '@/hooks/web/useMessage';
import { updateDroneCaseInfo, getCaseInfoById } from '@/api/tiankongdi/index.ts';
import { UpdateDroneCaseInfo, GetCaseInfoById } from '@/api/degraining/index.ts';
import { getChildrenTree } from '@/api/demo/system.ts';
const { createMessage } = useMessage();
defineOptions({ name: 'AccountModal' });
@ -144,7 +144,7 @@
(newVal, oldVal) => {},
);
async function getDetail(id) {
const data = await getCaseInfoById({
const data = await GetCaseInfoById({
id: id,
});
formState.value = data;
@ -215,7 +215,7 @@
// communityname: formState.value.communityname,
};
console.log(querys);
const data = await updateDroneCaseInfo(querys);
const data = await UpdateDroneCaseInfo(querys);
console.log(data);
if (data) {
// closeModal();

View File

@ -297,7 +297,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 { LoadCaiKuangTaskList, GetCaseInfoById, CaseRecover } from '@/api/degraining/index';
import {
batchOptions,
yearOptions,
@ -307,7 +307,6 @@ import Amend from './amend.vue';
import { Empty, message,Modal } from 'ant-design-vue';
import ShowInfoModal from '@/views/demo/degraining/curbspotcity/MapList/ShowInfoModal/index.vue';
import SplitPolygonModal from '@/views/demo/degraining/curbspotcity/MapList/SplitPolygonModal/index.vue';
import {recoverCase} from '@/api/tiankongdi'
import { flowStore } from '@/store/modules/flow';
import { getDetail } from '@/api/sys/WFSchemeInfo';
import { Audit } from '@/views/demo/workflow/task/process/page';
@ -418,7 +417,7 @@ const mapListScreenChange = (value, type) => {
};
const getInfoList = () => {
emits('changeSpin', true);
getLoadDroneCaseInfoDetail(infoScreenData.value)
LoadCaiKuangTaskList(infoScreenData.value)
.then((res) => {
infoDataList.value = res.items;
total.value = res.total;
@ -478,7 +477,7 @@ const handlerRevertPolygon = (item)=>{
],
"type": 0,
};
recoverCase(params).then(res=>{
CaseRecover(params).then(res=>{
if(res){
message.info(res);
getInfoList();
@ -488,7 +487,7 @@ const handlerRevertPolygon = (item)=>{
})
}
const handlerSplitPolygon = (item) => {
getCaseInfoById({id:item.processid}).then(res => {
GetCaseInfoById({id:item.processid}).then(res => {
if(res){
showInfoData.value = res
showInfoData.value['processid'] = item.processid;
@ -540,7 +539,7 @@ async function goAudit(record) {
}
const showInfo = (item) => {
getCaseInfoById({ id: item.processid }).then((res) => {
GetCaseInfoById({ id: item.processid }).then((res) => {
showInfoData.value = res;
showInfoOpen.value = true;
});

View File

@ -2,43 +2,7 @@
<div class="curb-spot-city">
<div class="show-list">
<a-spin :spinning="spinning">
<AuditProgress
v-if="false"
:year="year"
:batch="batch"
:batchOptions="batchOptions"
:yearOptions="yearOptions"
:dataList="dataList"
@auditProgressScreenChange="auditProgressScreenChange"
@showInfo="changeShowInfo"
/>
<!-- <AuthImage
style="width:180px;height:180px;"
src="http://120.222.154.48:6050/DroneEnforcement/2024/20240712/2024071209474128610039.jpg"
type="native"
:preview="true"
@perviewImage="perviewImage"
></AuthImage>
<AuthImage
style="width:180px;height:180px;"
src="http://120.222.154.48:6050/S_Common/2024/20240712/2024071209201354610087.jpg"
type="native"
:preview="true"
@perviewImage="perviewImage"
></AuthImage>
<AuthImage
style="width:180px;height:180px;"
src="http://111.17.207.220:9001/2023/20231220/2023122014532130590143.png"
type="ant"
:preview="true"
@perviewImage="perviewImage"
></AuthImage> -->
<MapList
v-if="showInfo"
:infoScreenData="infoScreenData"
:cityType="cityType"
:pageNo="pageNo"
@ -50,7 +14,6 @@
@infoDataListSort="infoDataListSort"
@changeInfoPage="changeInfoPage"
@mapListScreenChange="mapListScreenChange"
@closeShowInfo="changeShowInfo"
@changeTask="changeTask"
@collectChange="collectChange"
@changeSpin="changeSpin"
@ -73,14 +36,10 @@
import { ref, onMounted, onUnmounted, watch, defineAsyncComponent } from 'vue';
import mapboxgl, { Map } from 'mapbox-gl';
import { MapboxConfig, MapboxDefaultStyle } from '@/components/MapboxMaps/src/config.ts';
import AuditProgress from './AuditProgress/index.vue';
import MapList from './MapList/index.vue';
import { getLoadDroneCaseInfoCount, getLoadDroneCaseInfoDetail } from '@/api/tiankongdi/index.ts';
import { batchOptions, yearOptions } from '@/utils/global';
import { getChildrenTree } from '@/api/demo/system';
import { getLoadDroneCaseInfoDetail } from '@/api/tiankongdi/index.ts';
import { getGeom, getConfig } from '@/api/sys/layerManagement';
import { useMessage } from '@/hooks/web/useMessage';
import axios from 'axios';
const { createMessage } = useMessage();
@ -94,14 +53,11 @@
});
}
function perviewImage(e): void {}
const spinning = ref(false);
const showInfo = ref(false);
const year = ref<number>();
const batch = ref();
const dataList = ref<any>([]);
const infoDataList = ref<any>([]);
const infoScreenData = ref({
year: '',
@ -124,22 +80,6 @@
const municipalAreaOptions = ref([{ label: '全部', value: '' }]);
const countiesAreaOptions = ref([{ label: '全部', value: '' }]);
const cityType = ref();
const auditProgressScreenChange = (value, type) => {
switch (type) {
case 'year':
year.value = value;
break;
case 'batch':
batch.value = value;
break;
}
let params = {
year: year.value,
};
getLoadDroneCaseInfoCount(params).then((res) => {
dataList.value = res;
});
};
const mapListScreenChange = (value, type) => {
switch (type) {
case 'year':
@ -181,29 +121,6 @@
break;
}
};
const changeShowInfo = (value, item) => {
showInfo.value = value;
if (item) {
cityType.value = 0;
// cityType.value = item;
// infoScreenData.value.countyId = item.areaid;
// municipalAreaOptions.value = [{ label: item.areaname, value: item.areaid }];
// getChildrenTree({ parentId: item.areaid }).then((res) => {
// res.forEach((cityItem) => {
// countiesAreaOptions.value.push({
// label: cityItem.name,
// value: cityItem.id,
// });
// });
// });
// console.log("countiesAreaOptions",municipalAreaOptions,countiesAreaOptions)
// debugger
} else {
cityType.value = 0;
}
};
const getParams = () => {
let result = {};
@ -249,32 +166,10 @@
onMounted(() => {
mapboxgl.accessToken = MapboxConfig.ACCESS_TOKEN;
// map = initMap();
getLoadDroneCaseInfoCount()
.then((res) => {
dataList.value = res;
})
.catch((err) => {
console.log(err);
});
changeShowInfo(true, null);
});
onUnmounted(() => {
map && map.remove();
});
const initMap = () => {
return new mapboxgl.Map({
container: 'showMap',
language: 'zh-cmn',
projection: 'equirectangular', // wgs84
style: MapboxDefaultStyle,
maxZoom: 22,
minZoom: 6,
zoom: 10,
// ...props.mapOptions,
center: [117.984425, 35.270654],
});
};
const changeInfoPage = (page, limit) => {
pageNo.value = page;

View File

@ -457,7 +457,7 @@
import MapboxMap from '@/components/MapboxMaps/MapComponent.vue';
import { getConfig } from '@/api/sys/layerManagement';
import { getGeom } from '@/api/sys/layerManagement';
import { splitCase } from '@/api/tiankongdi';
import { CaseSplit } from '@/api/degraining/index';
import { useMessage } from '@/hooks/web/useMessage';
const { createMessage } = useMessage();
import Icon from '@/components/Icon/Icon.vue';
@ -826,7 +826,7 @@
params.parts.push(polygon);
});
splitCase(params).then((res) => {
CaseSplit(params).then((res) => {
if (res) {
createMessage.success('操作成功!');
emits('closeModal');

View File

@ -13,10 +13,10 @@ export const dataProcessing = (value) => {
}
};
export const dataProcessingCount = (value) => {
value = value.toString()
if (!value) {
return 0;
}
value = value.toString()
if (value.indexOf('.') == -1) {
return value;
} else {