|
|
@@ -4,36 +4,79 @@ |
|
|
|
<van-nav-bar left-arrow fixed placeholder @click-left="goBack" > |
|
|
|
<template #title> |
|
|
|
<div class="tb_main"> |
|
|
|
<!-- B村<p><span class="tb">签字完成</span><span class="tb">异常挂起</span></p>--> |
|
|
|
地图 |
|
|
|
</div> |
|
|
|
</template> |
|
|
|
</van-nav-bar> |
|
|
|
|
|
|
|
<!-- <div class="tap_block"> |
|
|
|
<p @click="$router.push({path:'/contracted/village/contractorDetail'})">承包方</p> |
|
|
|
<p @click="$router.push({path:'/contracted/village/contractorFamily'})">家庭成员</p> |
|
|
|
<p @click="$router.push({path:'/contracted/village/contractorWord'})">承包合同</p> |
|
|
|
<p class="active">承包地</p> |
|
|
|
</div> --> |
|
|
|
<div class="mapBox" id="contractedLandMapBox"></div> |
|
|
|
|
|
|
|
<div class="mapBox"></div> |
|
|
|
<div class="contractedLandPopup"> |
|
|
|
<van-dialog v-model="open" title="承包地信息" :show-confirm-button="false" :show-cancel-button="true" cancel-button-text="关闭"> |
|
|
|
<van-form ref="landForm"> |
|
|
|
<van-field v-model="form.dkbm" label="地块代码:" :border="true" input-align="right" /> |
|
|
|
<van-field v-model="form.dkmc" label="地块名称:" :border="true" input-align="right" /> |
|
|
|
<van-field v-model="form.syqxz" label="所有权性质:" :border="true" input-align="right" /> |
|
|
|
<van-field v-model="form.dklb" label="地块类别:" :border="true" input-align="right" /> |
|
|
|
<van-field v-model="form.tdlylx" label="土地利用类型:" :border="true" input-align="right" /> |
|
|
|
<van-field v-model="form.dldj" label="地力等级:" :border="true" input-align="right" /> |
|
|
|
<van-field v-model="form.tdyt" label="土地用途:" :border="true" input-align="right" /> |
|
|
|
<van-field v-model="form.sfjbnt" label="基本农田:" :border="true" input-align="right" /> |
|
|
|
<van-field v-model="form.scmjm" label="实测面积(亩):" :border="true" input-align="right" /> |
|
|
|
<van-field v-model="form.zjrxm" label="指界人姓名:" :border="true" input-align="right" /> |
|
|
|
<van-field v-model="form.dkdz" label="地块东至:" :border="true" input-align="right" /> |
|
|
|
<van-field v-model="form.dkxz" label="地块西至:" :border="true" input-align="right" /> |
|
|
|
<van-field v-model="form.dknz" label="地块南至:" :border="true" input-align="right" /> |
|
|
|
<van-field v-model="form.dkbz" label="地块北至:" :border="true" input-align="right" /> |
|
|
|
<van-field v-model="form.dkbzxx" label="地块备注信息:" :border="true" input-align="right" /> |
|
|
|
</van-form> |
|
|
|
</van-dialog> |
|
|
|
</div> |
|
|
|
|
|
|
|
</div> |
|
|
|
</template> |
|
|
|
<script> |
|
|
|
import Cookies from "js-cookie"; |
|
|
|
import { getConfigKey } from "@/api/system/config"; |
|
|
|
import { listCbdkxx } from "@/api/contracted/cbdkxx"; |
|
|
|
import { getDept } from "@/api/contracted"; |
|
|
|
|
|
|
|
export default { |
|
|
|
name: "contractedVillageContractor", |
|
|
|
data() { |
|
|
|
return { |
|
|
|
form: {}, // 承包地信息表单 |
|
|
|
open: false, // 是否显示承包地信息弹出层 |
|
|
|
|
|
|
|
map: "", // 地图 |
|
|
|
mapGeoServerUrl: "", // geoserver地址 |
|
|
|
mapCenterLocation: [], // 地图中心坐标 |
|
|
|
landLayerName: "", // 地块图层名称 |
|
|
|
}; |
|
|
|
}, |
|
|
|
created() { |
|
|
|
|
|
|
|
// 获取geoserver的地址 |
|
|
|
this.getGeoServerUrl(); |
|
|
|
// 获取地块图层名称 |
|
|
|
this.getLandLayerName(); |
|
|
|
}, |
|
|
|
mounted() { |
|
|
|
// 获取承包地块列表 |
|
|
|
this.getContractedLandList(); |
|
|
|
}, |
|
|
|
methods: { |
|
|
|
// 获取geoserver的地址 |
|
|
|
getGeoServerUrl() { |
|
|
|
getConfigKey("system.geoServer.url").then(response => { |
|
|
|
this.mapGeoServerUrl = response.msg; |
|
|
|
}); |
|
|
|
}, |
|
|
|
// 获取地块图层名称 |
|
|
|
getLandLayerName() { |
|
|
|
getConfigKey("geoserver.layer.dk").then(response => { |
|
|
|
this.landLayerName = response.msg; |
|
|
|
}); |
|
|
|
}, |
|
|
|
goBack() { |
|
|
|
this.$router.push({ |
|
|
|
name: 'contractedVillageContractorLand', |
|
|
@@ -45,6 +88,133 @@ |
|
|
|
} |
|
|
|
}); |
|
|
|
}, |
|
|
|
getContractedLandList() { |
|
|
|
listCbdkxx({cbfbm: this.$route.params.cbfbm, translate_dict: 1}).then(response => { |
|
|
|
const landList = response.rows; |
|
|
|
this.map = ""; |
|
|
|
setTimeout(() => { |
|
|
|
this.drawMap(landList); |
|
|
|
}, 500); |
|
|
|
}); |
|
|
|
}, |
|
|
|
drawMap(landList) { |
|
|
|
getDept(this.$route.params.deptId).then(response => { |
|
|
|
let dept = response.data; |
|
|
|
if (dept.lng && dept.lat) { |
|
|
|
this.mapCenterLocation = [dept.lng, dept.lat]; |
|
|
|
} else { |
|
|
|
this.mapCenterLocation = [116.391458, 39.902377]; |
|
|
|
} |
|
|
|
|
|
|
|
document.getElementById("contractedLandMapBox").innerHTML = ""; |
|
|
|
// 定义地图投影 |
|
|
|
let projection = new ol.proj.Projection({ |
|
|
|
code: "EPSG:3857", |
|
|
|
units: "degrees", |
|
|
|
}); |
|
|
|
// 定义地图图层 |
|
|
|
let aerial = new ol.layer.Tile({ |
|
|
|
source: new ol.source.XYZ({ |
|
|
|
url: "http://t{0-7}.tianditu.com/img_w/wmts?" + |
|
|
|
"SERVICE=WMTS&REQUEST=GetTile&VERSION=1.0.0&LAYER=img&STYLE=default&TILEMATRIXSET=w&FORMAT=tiles" + |
|
|
|
"&TILEMATRIX={z}&TILEROW={y}&TILECOL={x}&tk=cc4aba6e967096098249efa069733067", |
|
|
|
}), |
|
|
|
isGroup: true, |
|
|
|
name: "卫星影像图", |
|
|
|
}); |
|
|
|
let yingxzi = new ol.layer.Tile({ |
|
|
|
source: new ol.source.XYZ({ |
|
|
|
url: "http://t{0-7}.tianditu.com/DataServer?T=cia_w&x={x}&y={y}&l={z}&tk=cc4aba6e967096098249efa069733067", |
|
|
|
}), |
|
|
|
isGroup: true, |
|
|
|
name: "天地图文字标注--卫星影像图", |
|
|
|
}); |
|
|
|
//加载地图 |
|
|
|
this.map = new ol.Map({ |
|
|
|
controls: ol.control.defaults({attribution: false, zoom: false, rotate: false}).extend([]), |
|
|
|
layers: [aerial, yingxzi], |
|
|
|
projection: projection, |
|
|
|
target: "contractedLandMapBox", |
|
|
|
view: new ol.View({ |
|
|
|
center: ol.proj.fromLonLat(this.mapCenterLocation), // 地图中心坐标 |
|
|
|
zoom: 17, |
|
|
|
minZoom: 1, //地图缩小限制 |
|
|
|
maxZoom: 18, //地图放大限制 |
|
|
|
// extent: [13481224.75161,5667110.83528,13811063.06278,5880284.11416] |
|
|
|
}), |
|
|
|
}); |
|
|
|
// 添加全部的地块图层 |
|
|
|
this.addLandLayer(); |
|
|
|
// 添加承包地块图层 |
|
|
|
this.addContractedLandLayer(landList); |
|
|
|
|
|
|
|
// 地图点击事件 |
|
|
|
this.map.on("click", (evt) => { |
|
|
|
let feature = this.map.forEachFeatureAtPixel( |
|
|
|
evt.pixel, |
|
|
|
(feature) => feature |
|
|
|
); |
|
|
|
if (feature) { |
|
|
|
// 镇级:加载村级坐标点 |
|
|
|
if (feature.get('level') === 'contractedLand') { |
|
|
|
this.form = feature.get('landInfo'); |
|
|
|
this.open = true; |
|
|
|
} |
|
|
|
} |
|
|
|
}); |
|
|
|
}); |
|
|
|
}, |
|
|
|
// 添加全部的地块图层 |
|
|
|
addLandLayer() { |
|
|
|
const landLayer = new ol.layer.Image({ |
|
|
|
source: new ol.source.ImageWMS({ |
|
|
|
url: this.mapGeoServerUrl + '/wms', |
|
|
|
params: { |
|
|
|
LAYERS: this.landLayerName, |
|
|
|
cql_filter: "dept_id = '" + this.$route.params.deptId + "'", |
|
|
|
SRID: 3857, |
|
|
|
} |
|
|
|
}), |
|
|
|
name: 'landLayer' |
|
|
|
}); |
|
|
|
this.map.getLayers().insertAt(3, landLayer); |
|
|
|
// this.map.addLayer(landLayer); |
|
|
|
}, |
|
|
|
// 添加承包地块图层 |
|
|
|
addContractedLandLayer(landList) { |
|
|
|
if (landList.length === 0) { |
|
|
|
return ; |
|
|
|
} |
|
|
|
let features = []; |
|
|
|
landList.forEach(item => { |
|
|
|
if (item.theGeomJson) { |
|
|
|
const iconFeature = new ol.Feature({ |
|
|
|
geometry: new ol.geom.MultiPolygon(JSON.parse(item.theGeomJson).coordinates), |
|
|
|
level: 'contractedLand', |
|
|
|
landInfo: item |
|
|
|
}); |
|
|
|
features.push(iconFeature); |
|
|
|
} |
|
|
|
}); |
|
|
|
const contractedLandLayer = new ol.layer.Vector({ |
|
|
|
source: new ol.source.Vector({ |
|
|
|
features: features |
|
|
|
}), |
|
|
|
name: 'contractedLandLayer', |
|
|
|
style: new ol.style.Style({ |
|
|
|
fill: new ol.style.Fill({ |
|
|
|
color: "rgba(255, 84, 87, 0.5)" |
|
|
|
}), |
|
|
|
stroke: new ol.style.Stroke({ |
|
|
|
color: "#ff5457", |
|
|
|
width: 3 |
|
|
|
}) |
|
|
|
}) |
|
|
|
}); |
|
|
|
this.map.getLayers().insertAt(4, contractedLandLayer); |
|
|
|
this.map.getView().fit(contractedLandLayer.getSource().getExtent()); |
|
|
|
// this.map.getView().setZoom(15); |
|
|
|
} |
|
|
|
}, |
|
|
|
}; |
|
|
|
</script> |
|
|
@@ -82,6 +252,15 @@ |
|
|
|
overflow: initial; |
|
|
|
} |
|
|
|
|
|
|
|
/deep/ .contractedLandPopup .van-dialog { |
|
|
|
height: 85%; |
|
|
|
overflow-y: auto; |
|
|
|
} |
|
|
|
|
|
|
|
/deep/ .contractedLandPopup .van-field__label { |
|
|
|
width: 7em; |
|
|
|
} |
|
|
|
|
|
|
|
.tb_main{ |
|
|
|
position: relative; |
|
|
|
p{ |
|
|
|