yang1998 hace 11 meses
padre
commit
5ede278a0e

+ 10 - 0
src/api/landTransfer.js

@@ -138,6 +138,16 @@ export function updateYxzsdk(dkid, params) {
     }
   })
 }
+//审核
+export function checkYxzsdk(params) {
+  return request({
+    url: '/yxzsdksh/shdk',
+    method: 'post',
+    data: {
+      ...params
+    }
+  })
+}
 
 /* *******土地招商选址********** */
 // 列表

+ 5 - 0
src/data/local-data.js

@@ -1284,6 +1284,11 @@ export const allUnitDataArr = [
 ]
 
 
+export const intAttractlnvProcessInfo = [
+ { label: '待乡镇审核', count: 0,value:'待乡镇审核',step:1 },
+ { label: '乡镇审核通过', count: 0,value: '乡镇审核通过',step:1 },
+ { label: '乡镇审核不通过', count: 0,value: '乡镇审核不通过',step:1 },
+]
 export const landTransformProcessInfo = [
  { label: '待乡镇审核', count: 0,value:'待乡镇审核',step:1 },
  { label: '待农经站初审', count: 0,value:'待农经站初审',step:2 },

+ 4 - 1
src/utils/data/all-layer-info.js

@@ -234,7 +234,10 @@ export var allLayerInfo = [
 				layer: 2,
 				url: service_prefix + '/ags_feature_svc/tdsp/FeatureServer/2',
 				id: "yxzsdk",
-				title: "yxzsdk"
+				title: "yxzsdk",
+        legend: [
+          { name: '意向招商地块', color: 'rgb(230,152,0)' },
+        ]
 			},
 			{
 				name: '设施农用地',

+ 11 - 0
src/utils/data/select-data.js

@@ -118,6 +118,17 @@ export const yzzpzArr = createEnum([
   { value: "其他", label: '其他' },
 ])
 
+// 土地利用分类
+export const tdlyflArr = createEnum([
+  { value: "耕地", label: '耕地' },
+  { value: "园地", label: '园地' },
+  { value: "草地", label: '草地' },
+  { value: "林地", label: '林地' },
+  { value: "商服用地", label: '商服用地' },
+  { value: "工矿仓储用地", label: '工矿仓储用地' },
+  { value: "其他地类", label: '其他地类' },
+])
+
 // 土地性质
 export const landTypeArr = createEnum([
 	{ value: "设施农用地", label: '设施农用地' },

+ 81 - 20
src/views/tdlzsp/intAttractInvPlot/Add.vue

@@ -2,14 +2,14 @@
 	<div class="list-detail">
 		<header>
 			<div class="header-row">
-				<h1>{{ route.params.type === "add" ? '新增意向招商地块' : '编辑意向招商地块' }}</h1>
+				<h1>{{ route.params.type === "add" ? '新增意向招商地块' : route.params.type === "check" ? '审核意向招商地块' : '编辑意向招商地块' }}</h1>
 			</div>
 			<img src="../../../assets/imgs/0531/title-underline.png" alt="">
 		</header>
 		<main>
 			<div class="detail-main">
 				<div class="detail-sub-title">基本信息</div>
-				<el-form :model="form" :rules="formRules" label-position="top" ref="basicInfo" class="form-detail">
+				<el-form :model="form" :rules="formRules" label-position="top" ref="basicInfo" class="form-detail" :disabled="route.params.type === 'check'">
 					<el-form-item label="地块名称">
 						<el-input v-model="form.mc" placeholder="请输入地块名称" clearable></el-input>
 					</el-form-item>
@@ -32,8 +32,8 @@
 					<el-form-item label="流转面积(亩)">
 						<el-input v-model="form.tbmj" placeholder="请输入流转面积" type="number" clearable></el-input>
 					</el-form-item>
-					<el-form-item label="所属镇">
-						<el-select v-model="form.ssjz" placeholder="请选择所属镇" clearable @change="getVillageList">
+					<el-form-item label="所属镇">
+						<el-select v-model="form.ssjz" placeholder="请选择所属镇" clearable @change="getVillageList">
 							<el-option v-for="item in townList" :key="item.value" :label="item.label"
 								:value="item.value"></el-option>
 						</el-select>
@@ -44,8 +44,8 @@
 								:value="item.value"></el-option>
 						</el-select>
 					</el-form-item>
-					<el-form-item label="原种植品种">
-						<el-select v-model="form.yzzpz" placeholder="请选择原种植品种" clearable>
+					<el-form-item label="原土地用途">
+						<el-select v-model="form.yzzpz" placeholder="请选择原土地用途" clearable>
 							<el-option v-for="item in yzzpzArr" :key="item.value" :label="item.label"
 								:value="item.value"></el-option>
 						</el-select>
@@ -53,25 +53,47 @@
 					<el-form-item label="配套优势">
 						<el-input v-model="form.ptys" placeholder="请输入周边建设用地及设施情况优势" clearable></el-input>
 					</el-form-item>
+          <el-form-item label="土地性质">
+            <el-select v-model="form.tdxz">
+              <el-option v-for="item in landTypeArr" :label="item.label" :value="item.value"></el-option>
+            </el-select>
+            <!--						<el-input v-model="form.tdxz" placeholder="请输入基本农田面积" type="number" clearable></el-input>-->
+          </el-form-item>
 					<el-form-item label="一般农田面积(亩)">
 						<el-input v-model="form.ybntmj" placeholder="请输入一般农田面积" ype="number" clearable></el-input>
 					</el-form-item>
 					<el-form-item label="基本农田面积(亩)">
 						<el-input v-model="form.jbntmj" placeholder="请输入基本农田面积" type="number" clearable></el-input>
 					</el-form-item>
-					<el-form-item label="土地性质">
-						<el-select v-model="form.tdxz">
-							<el-option v-for="item in landTypeArr" :label="item.label" :value="item.value"></el-option>
-						</el-select>
-						<!--						<el-input v-model="form.tdxz" placeholder="请输入基本农田面积" type="number" clearable></el-input>-->
-					</el-form-item>
+          <el-form-item label="土地利用分类">
+            <el-select v-model="form.tdlyfl" placeholder="请选择土地利用分类" clearable>
+              <el-option v-for="item in tdlyflArr" :key="item.value" :label="item.label"
+                         :value="item.value"></el-option>
+            </el-select>
+          </el-form-item>
 					<el-form-item label="意向流转价格 (元/亩)">
-						<el-input v-model="form.jbntmj" placeholder="请输入意向流转价格" type="number" clearable></el-input>
+						<el-input v-model="form.yxlzjg" placeholder="请输入意向流转价格" type="number" clearable></el-input>
+					</el-form-item>
+					<el-form-item label="意向流转期限 (年)">
+						<el-input v-model="form.yxlzqx" placeholder="请输入意向流转期限" type="number" clearable></el-input>
 					</el-form-item>
+          <el-form-item label="地块坐落位置">
+            <el-input v-model="form.dkzlwz" placeholder="请输入地块坐落位置" clearable></el-input>
+          </el-form-item>
 <!--          <el-form-item label="意向流转价格 (元/亩)">-->
 <!--            <el-input v-model="form.jbntmj" placeholder="请输入意向流转价格" type="number" clearable></el-input>-->
 <!--          </el-form-item>-->
 				</el-form>
+
+        <template v-if="route.params.type === 'check'">
+          <div class="detail-sub-title">审核信息</div>
+          <el-form :model="form" :rules="formRules" label-position="top" ref="auditForm" class="form-detail">
+            <el-form-item label="审核意见" prop="shyj" class="item-row">
+              <el-input type="textarea" :rows="4" v-model="form.shyj" placeholder="请输入审核意见"></el-input>
+            </el-form-item>
+          </el-form>
+        </template>
+
 			</div>
 			<DrawMap v-model="drawPosShow" :geo-data="form.geojson"
 				@drawComplete="(resData, resArea) => handleDrawComplete(resData, resArea)" />
@@ -79,6 +101,11 @@
 		<footer>
 			<el-button type="primary" class="btn-default" v-if="route.params.type === 'add'" @click="submit">提 交</el-button>
 			<el-button type="primary" class="btn-default" v-if="route.params.type === 'edit'" @click="save">保 存</el-button>
+      <template v-if="route.params.type === 'check'">
+        <el-button type="primary" class="btn-default" @click="handleAudit(true)">审核通过</el-button>
+        <el-button type="danger" class="btn-default" @click="handleAudit(false)">审核不通过</el-button>
+      </template>
+
 			<el-button class="btn-default" @click="close">返 回</el-button>
 		</footer>
 	</div>
@@ -88,11 +115,20 @@
 import { reactive, ref, onMounted, computed } from "vue";
 import { useRoute, useRouter } from "vue-router";
 import DrawMap from "./DrawMap.vue";
-import {yzzpzArr, lzyxArr, landTypeArr} from '../../../utils/data/select-data'
-import { addYxzsdk, GetTownVillageList, getZsModuleDetailData, updateYxzsdk } from "../../../api/landTransfer";
+import {yzzpzArr, lzyxArr, landTypeArr, tdlyflArr} from '../../../utils/data/select-data'
+import {
+  addYxzsdk,
+  checkYxzsdk,
+  GetTownVillageList,
+  getZsModuleDetailData,
+  updateYxzsdk
+} from "../../../api/landTransfer";
 import { handleMes } from "../../../utils/tip";
 import { getAllTownMy } from '@/api/projectAudit'
+import {getAllVillageMyTownId} from "../../../api/projectAudit";
+import {useUserStore} from "../../../stores/user";
 
+const userStore = useUserStore()
 const router = useRouter()
 const route = useRoute()
 const projectInfo = ref(null)
@@ -111,6 +147,9 @@ const form = reactive({
 	// gen: '',
 	// base: ''
 })
+const formRules = reactive({
+  shyj: { required: true, message: '请输入审核意见', trigger: 'blur' },
+})
 
 const drawPosShow = ref(false)
 
@@ -147,13 +186,14 @@ function submit() {
 }
 
 function getVillageList() {
-	GetTownVillageList(2, form.ssjz).then(res => {
+	// GetTownVillageList(2, form.ssjz).then(res => {
+  getAllVillageMyTownId(form.ssjz).then(res => {
 		// console.log(res);
 		villageList.value = []
 		for (let item of res.data) {
 			villageList.value.push({
-				label: item,
-				value: item
+				label: item.name,
+				value: item.code
 			})
 		}
 	})
@@ -166,12 +206,33 @@ function getTownList() {
 		for (let item of res.data) {
 			townList.value.push({
 				label: item.name,
-				value: item.name
+				value: item.code
 			})
 		}
 	})
 }
 
+function handleAudit(isPass) {
+  checkYxzsdk({
+    "jdmc": form.dkshzt,
+    "shren": userStore.$state.username,
+    "shyj": form.shyj,
+    "ywid": Number(route.params.id),
+    "zt": isPass,
+    "ssks": userStore.$state.ssks || ''
+  }).then(res => {
+    handleMes(res,() => {
+      close()
+    },()=>{},'审核成功','审核失败')
+    // if(res.code==200&&res.msg=='审核成功') {
+    // 	ElMessage({ type: 'success', message: '审核成功' })
+    // 	close()
+    // } else {
+    // 	ElMessage({ type: 'error', message: `审核失败, ${res.msg}` })
+    // }
+  })
+}
+
 function close() {
 	router.push({
 		name: 'IntAttractInvPlot'
@@ -180,7 +241,7 @@ function close() {
 
 onMounted(() => {
 	getTownList()
-	if (route.params.type === "edit") {
+	if (route.params.type === "edit" || route.params.type === "check") {
 		getZsModuleDetailData(route.params.id).then(res => {
 			if (res.code == 200 && res.data) {
 				for (let key in res.data) {

+ 550 - 16
src/views/tdlzsp/intAttractInvPlot/DrawMap.vue

@@ -3,22 +3,73 @@
     <div id="draw_map">
       <iframe id="i_map" name="i_map" frameborder="0"></iframe>
       <span v-if="!props.showOnly&&resArea!==0" class="draw-result shadow-box">面积:{{ resArea }} 亩</span>
-<!--      <div class="current-layer shadow-box">-->
-<!--        <div class="detail-sub-title">当前图层</div>-->
-<!--        <ul>-->
-<!--          <li v-for="item in listChecked.value" :key="item.id">-->
-<!--            <span>{{ item.name }}</span>-->
-<!--            <div>-->
-<!--              <i class="btn" :class="item.isHide?'btn-dqtc-hide':'btn-dqtc-show'" @click="addLayer(item)"></i>-->
-<!--              <el-slider v-model="item.opacity" :min="1"></el-slider>-->
-<!--            </div>-->
-<!--          </li>-->
-<!--        </ul>-->
-<!--      </div>-->
-<!--      <div class="tool-box shadow-box">-->
-<!--        <img v-for="item in toolsList" :src="item.picUrl" alt=""/>-->
-<!--      </div>-->
+      <div class="current-layer shadow-box" v-show="panelShow.currentLayer">
+        <div class="detail-sub-title">当前图层</div>
+        <ul>
+          <li v-for="item in mapLayers.value" :key="item.id">
+            <span>{{ item.name }}</span>
+            <div>
+              <i class="btn" :class="item.visible ? 'btn-dqtc-show' : 'btn-dqtc-hide'"
+                 @click="toggleLayerVisible(item)"></i>
+              <el-slider v-model="item.opacity" :min="1" @change="val => handleLayerOpacity(val, item)"></el-slider>
+            </div>
+          </li>
+        </ul>
+      </div>
+      <div class="tool-box shadow-box">
+        <img v-for="item in toolsList" :src="item.picUrl" alt="" @click="handleToolClick(item.id)" />
+      </div>
       <base-map-area @changeBaseMap="(name)=>changeBaseMap(name)"/>
+
+      <div v-if="isPosition" class="panel-detail shadow-box pos-card-green" :class="{'to-left':props.isEdit}">
+        <header><span>行政区定位</span><i @click="closePosition"></i></header>
+        <main>
+          <el-form label-width="6em">
+            <el-form-item prop="selectTown">
+              <el-select v-model="townVal" popper-class="my-prop-s alight-box" style="right: 30px" clearable @change="changeTown">
+                <el-option v-for="item in townList" :key="item.code" :value="item.code" :label="item.name"></el-option>
+              </el-select>
+            </el-form-item>
+            <el-form-item prop="selectVillage">
+              <el-select v-model="villageVal" popper-class="my-prop-s alight-box" style="right: 30px" clearable @change="changeVillage">
+                <el-option v-for="item in villageArr" :key="item.code" :value="item.code" :label="item.name"></el-option>
+              </el-select>
+            </el-form-item>
+          </el-form>
+        </main>
+      </div>
+      <div v-if="isSearch" class="panel-detail shadow-box pos-card-green" :class="{'to-left':props.isEdit}">
+        <div class="search">
+          <div class="se">
+            <div @click.stop="isSearchSelectShow = !isSearchSelectShow">
+              <span class="text">{{currentSearchI? selectArr.find(i => i.value === currentSearchI)?.label: '请选择'}} </span>
+              <!--            <span class="row" :class="{isExpand:isSearchSelectShow}"><img src="@/assets/imgs/pages/arrow.png" alt=""></span>-->
+              <span class="divider"></span>
+            </div>
+            <!--          <ul class="options" v-if="isSearchSelectShow">-->
+            <!--            <li :class="{'active':currentSearchI === item.value}" @click="changeSelect(item)" v-for="item in selectArr" :key="item.value">{{item.label}}</li>-->
+            <!--          </ul>-->
+          </div>
+          <input type="text" v-model="currentSearchKeyWord">
+          <span @click="searchK" class="search-btn">
+        <img src="@/assets/imgs/pages/search.png" alt="">
+      </span>
+        </div>
+        <div class="search-result" v-if="resShow">
+          <div class="scroll">
+            <template v-if="(searchRes.length > 0 || searchAArr.length > 0)">
+              <ul>
+                <!-- <li @click="position(item)" v-for="item in currentSearchI === 'dmdz'?searchRes:searchAArr" :key="item.name"> -->
+                <li @click="position(item)" v-for="item in searchAArr" :key="item.name">
+                  <img src="@/assets/imgs/pages/position.png" alt="">
+                  <span>{{item.name || item.zhutiname}}</span>
+                </li>
+              </ul>
+            </template>
+            <div v-else class="no-data">无数据</div>
+          </div>
+        </div>
+      </div>
     </div>
 
     <template #footer>
@@ -30,11 +81,16 @@
 </template>
 
 <script setup>
-import { ref, computed, nextTick, watch, onBeforeUnmount } from 'vue'
+import {ref, computed, nextTick, watch, onBeforeUnmount, reactive} from 'vue'
 import CityGis from "../../../utils/map/CityGis.Bridge";
 import BaseMapArea from "@/components/BaseMapArea.vue";
 import { myBridge } from "@/utils/map/map";
 import {changeBaseMap, locateCM, redrawGeo, clearMap} from "@/utils/map/AddLayer";
+import {getAssetsFile} from "../../../utils/require";
+import {addLayer, addPointMapQuery, addPointMapSingle, layerQueryGet} from "../../../utils/map/AddLayer";
+import {getLayerByName} from "../../../utils/data/all-layer-info";
+import {getAllVillageMyTownId} from "../../../api/projectAudit";
+import {searchAddress} from "../../../api/ny";
 
 const props = defineProps({
   modelValue: Boolean,
@@ -48,7 +104,204 @@ const props = defineProps({
   }
 })
 
+const townList = ref([
+  {
+    "code": "01",
+    "name": "三星镇",
+    "geom": ""
+  },
+  {
+    "code": "02",
+    "name": "城桥镇",
+    "geom": ""
+  },
+  {
+    "code": "03",
+    "name": "庙镇",
+    "geom": ""
+  },
+  {
+    "code": "04",
+    "name": "建设镇",
+    "geom": ""
+  },
+  {
+    "code": "05",
+    "name": "新村乡",
+    "geom": ""
+  },
+  {
+    "code": "06",
+    "name": "新河镇",
+    "geom": ""
+  },
+  {
+    "code": "07",
+    "name": "横沙乡",
+    "geom": ""
+  },
+  {
+    "code": "08",
+    "name": "堡镇",
+    "geom": ""
+  },
+  {
+    "code": "09",
+    "name": "向化镇",
+    "geom": ""
+  },
+  {
+    "code": "10",
+    "name": "竖新镇",
+    "geom": ""
+  },
+  {
+    "code": "11",
+    "name": "绿华镇",
+    "geom": ""
+  },
+  {
+    "code": "12",
+    "name": "长兴镇",
+    "geom": ""
+  },
+  {
+    "code": "13",
+    "name": "陈家镇",
+    "geom": ""
+  },
+  {
+    "code": "14",
+    "name": "港沿镇",
+    "geom": ""
+  },
+  {
+    "code": "15",
+    "name": "港西镇",
+    "geom": ""
+  },
+  {
+    "code": "16",
+    "name": "东平镇",
+    "geom": ""
+  },
+  {
+    "code": "17",
+    "name": "新海镇",
+    "geom": ""
+  },
+  {
+    "code": "18",
+    "name": "中兴镇",
+    "geom": ""
+  },
+  {
+    "code": "19",
+    "name": "农业园区",
+    "geom": ""
+  }
+])
+const townVal = ref("")
+const isSearchSelectShow = ref(false)
+const currentSearchI = ref('dmdz')
+const villageVal = ref("")
+const resShow = ref(false)
+const currentSearchKeyWord = ref('')
+
+const searchAArr = ref([])
+const searchRes = ref([])
+const villageArr = ref([])
 const emit = defineEmits(['update:modelValue', 'drawComplete'])
+function changeTown(val){
+  villageVal.value = ''
+  getVillageSelect()
+  let findAllTown = townList.value.find(i => i.code === townVal.value)?.name || val
+  layerQueryGet(getLayerByName('镇界线').url, "name='" + findAllTown + "'")
+}
+
+function getVillageSelect(){
+  getAllVillageMyTownId(townVal.value).then(res => {
+    villageArr.value = res.data
+  })
+}
+function position(item) {
+  if (currentSearchI.value === 'ztmc'){
+    // addPointMapQuery(this.layer_nyd,`zhutiname='${item.zhutiname}'`,true)
+    layerQueryGet(layer_nyd.value,`zhutiname='${item.zhutiname}'`,true,true,true,10000)
+  }else if (currentSearchI.value === 'dmdz'){
+    addPointMapSingle([item.mapx,item.mapy],true)
+  }
+}
+function searchK(){
+  function getToken_map(host, username, password) {
+    let xmlhttp = new XMLHttpRequest();
+    xmlhttp.open('GET', host + '/RemoteTokenServer?request=getToken&username=' + username + '&password=' + password + '&clientid=ref..&expiration=14400', false);
+    xmlhttp.send();
+    return xmlhttp.responseText;
+  }
+  let host_nw = "http://10.121.226.95:8081";
+  let username_nw = "cmuser";
+  let password_nw = "abc123";
+  // let server_nw = "http://10.121.226.95:8081/OneMapServer/rest/services";
+  let m_token_nw = getToken_map(host_nw, username_nw, password_nw);
+  m_token_nw = m_token_nw.substr(0, m_token_nw.length-2);
+  // console.log("m_token_nw", m_token_nw);
+  switch (currentSearchI.value) {
+    case 'ztmc':
+      addPointMapQuery(layer_nyd.value,`zhutiname like '%${currentSearchKeyWord.value}%'`)
+      setTimeout(() => {
+        // this.searchRes = this.searchAArr
+        resShow.value = true
+      },0)
+      break
+    case 'dkbh':
+      addPointMapQuery(layer_nyd.value,`dkid='${currentSearchKeyWord.value}'`,true)
+      // this.resShow = true
+      break
+    case 'dmdz':
+      searchAddress(currentSearchKeyWord.value,m_token_nw).then(res => {
+        let infos = res.querySelectorAll('Table');
+        if (infos.length > 0) {
+          let point = []
+          point.push(infos[0].querySelector('POINT_X')?.innerHTML);
+          point.push(infos[0].querySelector('POINT_Y')?.innerHTML);
+          addPointMapSingle(point,true)
+        }
+
+        // let temp = []
+        // infos.forEach(row => {
+        //   if(row.querySelector('REGION_QX')?.innerHTML==='崇明县') {
+        //     temp.push({
+        //       name: row.querySelector('POI')?.innerHTML,
+        //       mapx: row.querySelector('POINT_X')?.innerHTML,
+        //       mapy: row.querySelector('POINT_Y')?.innerHTML,
+        //     })
+        //   }
+        // })
+        // this.searchRes = temp
+        // this.resShow = true
+      })
+  }
+}
+function changeVillage(){
+  if (villageVal.value){
+    let findAllViallage = villageArr.value.find(i => i.code === villageVal.value)?.name || villageVal.value
+    let isVillage = villageVal.value?findAllViallage:townVal.value
+    layerQueryGet(getLayerByName('村界线').url, "name='" + isVillage + "'")
+  }else {
+    let findAllTown = townList.value.find(i => i.code === townVal.value)?.name || townVal.value
+    layerQueryGet(getLayerByName('镇界线').url, "name='" + findAllTown + "'")
+  }
+}
+function closePosition(){
+  isPosition.value = false
+  clearMap()
+}
+const selectArr = ref([
+  {label: '地名地址',value:'dmdz'},
+  // {label: '主体名称',value:'ztmc'},
+  // {label: '地块编号',value:'dkbh'},
+])
 
 const innerVisible = computed({
   get: function() {
@@ -61,6 +314,16 @@ const innerVisible = computed({
 
 const resArea = ref(0)
 
+const mapLayers = reactive({ value: [] })
+const toolsList = ref([
+  { id: 'layer', picUrl: getAssetsFile('0531/tool-layer.png') },
+  { id: 'search', title: '搜索', picUrl: getAssetsFile('pages/tool-search.png') },
+  { id: 'position', title: '行政区定位', picUrl: getAssetsFile('pages/tool-position.png') },
+
+  // { id: 'search', picUrl: getAssetsFile('0531/tool-search.png') },
+  // { id: 'download', picUrl: getAssetsFile('0531/tool-download.png') }
+])
+
 watch(innerVisible, (val)=> {
   if(val) {
     if(!bridge) {
@@ -71,6 +334,18 @@ watch(innerVisible, (val)=> {
         redrawGeo(JSON.parse(props.geoData).coordinates,true)
       }
     }
+
+    if (mapLayers.value.length === 0) {
+      let allLayers = [getLayerByName('意向招商地块')]
+      allLayers.forEach(i => {
+        i.visible = false
+        if (i.name === '意向招商地块') {
+          i.visible = true
+        }
+        i.opacity = 100
+      })
+      mapLayers.value = allLayers
+    }
   }
 },{immediate:true})
 
@@ -91,6 +366,7 @@ function createMap() {
       switch (arg.action) {
         case "ViewComplete":
           locateCM()
+          addLayer(getLayerByName('意向招商地块'))
           if(props.geoData) {
             redrawGeo(JSON.parse(props.geoData).coordinates,true)
           }
@@ -131,6 +407,41 @@ function handleSave() {
   innerVisible.value = false
 }
 
+const isSearch = ref(false)
+const isPosition = ref(false)
+const panelShow = reactive({
+  currentLayer: true
+})
+
+function handleToolClick(toolId) {
+  switch (toolId) {
+    case 'layer':
+      panelShow.currentLayer = !panelShow.currentLayer
+      break
+    case 'search':
+      isSearch.value = !isSearch.value
+      if (isSearch.value) {
+        isPosition.value = false
+      }
+      break
+    case 'position':
+      isPosition.value = !isPosition.value
+      if (isPosition.value) {
+        isSearch.value = false
+      }
+      break
+  }
+}
+
+function toggleLayerVisible(item) {
+  item.visible = !item.visible
+  addLayer(item, item.visible, (item.opacity / 100).toFixed(2))
+}
+
+function handleLayerOpacity(val, item) {
+  addLayer(item, item.visible, (item.opacity / 100).toFixed(2))
+}
+
 onBeforeUnmount(() => {
   if(bridge) {
     bridge.removeEventListener(listen)
@@ -230,5 +541,228 @@ onBeforeUnmount(() => {
     margin: 0;
     // background-color: #286466;
   }
+
+  .panel-detail {
+
+    position: absolute;
+    right: 380px;
+    top: 20px;
+    width: 350px;
+    // box-sizing: border-box;
+    // padding: 15px;
+    background-color: #fff;
+    &.to-left {
+      right: 90px;
+    }
+
+    ul {
+      margin: 10px 0;
+      max-height: 400px;
+      overflow-y: auto;
+      padding-right: 5px;
+      li {
+        display: flex;
+        align-items: flex-start;
+        margin-bottom: 10px;
+        &.is-edit {
+          align-items: center;
+        }
+        .pd-key {
+          display: block;
+          width: 25%;
+          overflow: hidden;
+          white-space: nowrap;
+          text-overflow: ellipsis;
+        }
+        .pd-value {
+          width: 0;
+          flex: 1;
+          word-break: break-all;
+        }
+      }
+    }
+
+    .footer {
+      text-align: right;
+    }
+  }
+  .search{
+    // position: absolute;
+    // top: 273px;
+    // left: 1922px;
+    box-sizing: border-box;
+    //width: 290px;
+    height: 40px;
+    display: flex;
+    line-height: 40px;
+    border: 1px solid #00b259;
+    background: #fff;
+    .se{
+      div{
+        padding: 0 10px;
+        //color: #fff;
+        height: 100%;
+        position: relative;
+        // text-align: center;
+        display: flex;
+        align-items: center;
+        overflow: hidden;
+        .text  {
+          display: block;
+          width: max-content;
+        }
+        .row{
+          // vertical-align: middle;
+          margin-left: 10px;
+          font-size: 0;
+          // height: 60px;
+          //height: 12px;
+          transform: rotate(0deg);
+          transform-origin: center ;
+          display: inline-block;
+          transition: 0.5s all;
+          &.isExpand{
+            display: inline-block;
+            transform: rotate(180deg);
+          }
+          img {
+            vertical-align: middle;
+            width: 16px;
+            height: 16px;
+          }
+        }
+        .divider {
+          display: inline-block;
+          width: 1px;
+          height: 32px;
+          background-color: rgba(75, 74, 74, 0.4);
+          margin-left: 10px;
+        }
+
+      }
+      position: relative;
+      .options{
+        border: 1px solid #00b259;
+        background: #fff;
+        li{
+          &.active{
+            color: #ffe566;
+          }
+          &:hover{
+            background:#20504d;
+          }
+          line-height: 2;
+          //color: #fff;
+          cursor: pointer;
+        }
+        z-index: 1;
+        text-align: center;
+        font-size: 16px;
+        left: 0;
+        position: absolute;
+        width: 80%;
+        padding: 0 5%;
+      }
+    }
+    select{
+      line-height: 40px;
+      option{
+
+      }
+      option:after{
+        content: "";
+        width: 14px;
+        height: 8px;
+        //background: url(../assets/arrow-down.png) no-repeat center;
+        /*通过定位将图标放在合适的位置*/
+        position: absolute;
+        right: 20px;
+        top: 41%;
+        /*给自定义的图标实现点击下来功能*/
+        pointer-events: none;
+      }
+      border: none;
+      /*清除select聚焦时候的边框颜色*/
+      outline: none;
+      /*将select的宽高等于div的宽高*/
+      width: 100%;
+      height: 100%;
+      line-height: 40px;
+      /*隐藏select的下拉图标*/
+      appearance: none;
+      -webkit-appearance: none;
+      -moz-appearance: none;
+      /*通过padding-left的值让文字居中*/
+      padding-left: 20px;
+    }
+    span{
+      cursor: pointer;
+      //color: #fff;
+      font-size: 16px;
+    }
+    input{
+      flex: 1;
+      width: 0;
+      font-size: 16px;
+      //color: #fff;
+      background: transparent;
+      vertical-align: middle;
+      padding: 0;
+      margin: 0;
+      border: none;
+      outline: none;
+    }
+    .search-btn {
+      display: flex;
+      align-items: center;
+      padding: 0 15px;
+      &>img {
+        width: 20px;
+        height: 20px;
+      }
+    }
+  }
+  .search-result{
+    // position: absolute;
+    // top: 400px;
+    // left: 1922px;
+    //width: 690px;
+    //color: #fff;
+    font-size: 16px;
+    line-height: 2.5;
+    border: 1px solid #00b259;
+    background: #fff;
+    box-sizing: border-box;
+    //padding: 10px;
+    padding-left: 0;
+    max-height: 300px;
+    margin-top: 20px;
+    .no-data{
+      // text-indent: 2em;
+      text-align: center;
+    }
+    >div{
+      min-height: 80px;
+      max-height: 300px;
+      overflow: auto;
+    }
+    ul{
+      max-height: 280px;
+    }
+    li{
+      display: flex;
+      align-items: center !important;
+      text-indent: 10px;
+      padding-left: 10px;
+      cursor: pointer;
+      &:hover{
+        background: #20504d;
+      }
+      &>img {
+        width: 20px;
+        height: 20px;
+      }
+    }
+  }
 }
 </style>

+ 83 - 6
src/views/tdlzsp/intAttractInvPlot/Index.vue

@@ -24,27 +24,36 @@
 					<el-button class="btn-default" @click="exportList">导出清单</el-button>
 				</div>
 			</div>
+      <div>
+        <ul class="state-list" style="margin-top: 20px;">
+          <li :class="{'active':formInline.dkshzt === item.value}" v-for="item in stateFilterArr.value" :key="item.label" @click="changeFilter(item)">
+            {{ item.label }}(<span :class="{ 'empasis': item.label !== '全部' }" >{{ item.count }}</span>)
+          </li>
+        </ul>
+      </div>
 		</header>
 		<main>
 			<el-table header-cell-class-name="title-ellipsis" :data="tableData.value" class="table-default" stripe>
 				<el-table-column type="selection" min-width="30" />
 				<el-table-column type="index" label="序号" min-width="50" />
 				<el-table-column label="地块名称" min-width="100" prop="mc" show-overflow-tooltip />
-				<el-table-column label="所属街镇" min-width="90" prop="ssjz" show-overflow-tooltip />
+				<el-table-column label="状态" min-width="100" prop="dkshzt" show-overflow-tooltip />
+				<el-table-column label="所属乡镇" min-width="90" prop="ssjz" show-overflow-tooltip />
 				<el-table-column label="所属村" min-width="80" prop="ssc" show-overflow-tooltip />
 				<el-table-column label="流转用途" min-width="100" prop="ghyt" show-overflow-tooltip />
 				<el-table-column label="绘制面积(亩)" min-width="110" prop="htmj" show-overflow-tooltip>
 
 				</el-table-column>
 				<el-table-column label="流转面积(亩)" min-width="110" prop="tbmj" show-overflow-tooltip />
-				<el-table-column label="一般农田面积(亩)" min-width="120" prop="ybntmj" show-overflow-tooltip />
-				<el-table-column label="基本农田面积(亩)" min-width="120" prop="jbntmj" show-overflow-tooltip />
+<!--				<el-table-column label="一般农田面积(亩)" min-width="120" prop="ybntmj" show-overflow-tooltip />-->
+<!--				<el-table-column label="基本农田面积(亩)" min-width="120" prop="jbntmj" show-overflow-tooltip />-->
 				<el-table-column label="保存时间" min-width="100" prop="bcsj" show-overflow-tooltip />
 				<el-table-column fixed="right" label="操作" min-width="170">
 					<template #default="scope">
 						<el-button link type="primary" @click="toShow(scope.row)">预览</el-button>
-						<el-button link type="primary" @click="toEdit(scope.row)">编辑</el-button>
+						<el-button link type="primary" @click="toEdit(scope.row)" v-if="scope.row.dkshzt !== '乡镇审核通过'">编辑</el-button>
 						<el-button link type="primary" @click="toDetail(scope.row)">查看</el-button>
+						<el-button link type="primary" @click="toCheck(scope.row)" v-if="scope.row.dkshzt === '待乡镇审核'">审核</el-button>
 						<el-button link type="danger" @click="toDelete(scope.row)">删除</el-button>
 
 					</template>
@@ -65,6 +74,7 @@ import { delZsModuleData, exportZsdkFile, GetYxzsdkList } from "../../../api/lan
 import { lzyxArr } from '../../../utils/data/select-data'
 import { handleMes, showConfirm, showMessage } from "@/utils/tip";
 import { delBtSituationListData } from "@/api/riceSubsidies";
+import {intAttractlnvProcessInfo, landTransformProcessInfo} from "../../../data/local-data";
 // import Pagination from '../../../components/Pagination.vue';
 const pageSize = ref(10)
 const tableTotal = ref(0)
@@ -79,8 +89,17 @@ const formInline = reactive({
 	villages: '',
 	area_min: '',
 	area_max: '',
-	submitTime: ''
+	submitTime: '',
+  dkshzt: ""
 })
+
+const stateFilterArr = reactive({
+  value: [
+    { label: '全部', count: 0,value:'' },
+    ...intAttractlnvProcessInfo
+  ]
+})
+
 function exportList() {
 	exportZsdkFile({
 		ghyt: formInline.lzyx,
@@ -89,6 +108,7 @@ function exportList() {
 		zxtbmj: formInline.area_min,
 		zzbcsj: formInline.submitTime ? formInline.submitTime[0] : '',
 		zwbcsj: formInline.submitTime ? formInline.submitTime[1] : '',
+    dkshzt: formInline.dkshzt === "" ? null : formInline.dkshzt
 	}).then(res => {
 		let isSuccess = false
 		try {
@@ -159,6 +179,17 @@ function toDetail(row) {
 	})
 }
 
+function toCheck(row) {
+
+	router.push({
+		name: 'IntAttractInvPlotAdd',
+		params: {
+      type: 'check',
+      id: row.yxzsId
+		}
+	})
+}
+
 function toDelete(data) {
 	showConfirm(() => {
 		delZsModuleData(data.yxzsId).then(res => {
@@ -184,6 +215,7 @@ function getList() {
 		zxtbmj: formInline.area_min,
 		zzbcsj: formInline.submitTime ? formInline.submitTime[0] + " 00:00:00" : "",
 		zwbcsj: formInline.submitTime ? formInline.submitTime[1] + " 00:00:00" : "",
+    dkshzt: formInline.dkshzt === "" ? null : formInline.dkshzt
 	}
 	GetYxzsdkList(params).then(res => {
 		// console.log(res);
@@ -192,10 +224,55 @@ function getList() {
 	})
 }
 
+function changeFilter(item){
+  console.log(item.label,'ss')
+  formInline.dkshzt = item.value
+  getList()
+  // console.log('myiye',item.label)
+}
+
 onMounted(() => {
 	getList()
 })
 
 </script>
 
-<style lang="scss" scoped></style>
+<style lang="scss" scoped>
+.state-list {
+  display: flex;
+  flex-wrap: wrap;
+  align-items: center;
+  width: 90%;
+
+  &>li {
+    margin-bottom: 15px;
+    position: relative;
+    &.active{
+      &::after{
+        position: absolute;
+        display: inline-block;
+        content: "";
+        bottom: -10px;
+        left: 0;
+        right: 10px;
+
+        height: 2px;
+
+        background: var(--color-text-4);
+      }
+    }
+    margin-right: 20px;
+    font-size: 18px;
+    color: var(--color-text-2);
+    cursor: pointer;
+
+    span {
+      font-family: BarlowBold;
+
+      &.empasis {
+        color: var(--color-text-4);
+      }
+    }
+  }
+}
+</style>

+ 292 - 242
src/views/tdlzsp/landAttractInvAddr/Index.vue

@@ -1,67 +1,81 @@
 <template>
-	<div id="tdzsxz">
-		<iframe id="i_map" name="i_map" frameborder="0"></iframe>
-		<div class="tool-box shadow-box">
-			<img v-for="item in toolsArr" :src="item.picUrl" alt="" @click="handleToolClick(item)" />
-		</div>
-		<div v-show="panelShow.currentLayer" class="current-layer shadow-box pos-card-green">
-			<header>
-				<span>当前图层</span><i @click="panelShow.currentLayer = false"></i>
-			</header>
-			<main>
-				<ul>
-					<li v-for="item in mapLayers" :key="item.id">
-						<span>{{ item.name }}</span>
-						<div>
-							<i class="btn" :class="item.visible ? 'btn-dqtc-show' : 'btn-dqtc-hide'"
-								@click="toggleLayerVisible(item)"></i>
-							<el-slider v-model="item.opacity" :min="1"
-								@change="val => handleLayerOpacity(val, item)"></el-slider>
-						</div>
-					</li>
-				</ul>
-			</main>
-		</div>
-		<el-card class="box">
-			<div class="pos-card-title" style="margin-bottom: 10px">土地招商选址</div>
-			<el-select v-model="form.ghyt" placeholder="请选择流转意向" clearable>
-				<el-option value="" label="全部"></el-option>
-				<el-option v-for="item in lzyxArr" :key="item.value" :label="item.label" :value="item.value"></el-option>
-			</el-select>
-			<el-select v-model="form.xz" placeholder="请选择乡镇" style="margin-left: 10px" clearable>
-				<el-option v-for="item in townList" :key="item.value" :label="item.label" :value="item.value"></el-option>
-			</el-select>
-			<div style="margin-top: 20px;">
-				<el-input type="number" v-model="form.zxmj" style="width: 22%" placeholder="最小面积" clearable></el-input>
-				<span> - </span>
-				<el-input type="number" v-model="form.zdmj" style="width: 22%" placeholder="最大面积" clearable></el-input>
-				<el-select v-model="form.tdxz" placeholder="请选择土地性质" class="ml-10" style="width: 29%" clearable>
-					<el-option value="" label="全部"></el-option>
-					<el-option v-for="item in landTypeArr" :key="item.value" :label="item.label"
-						:value="item.value"></el-option>
-				</el-select>
-				<!--				<el-select placeholder="请选择乡镇" clearable>-->
-				<!--					<el-option></el-option>-->
-				<!--				</el-select>-->
-
-				<el-button type="primary" class="btn-default" style="margin-left: 10px" @click="getList">分析</el-button>
-			</div>
-			<div class="pos-card-title" style="margin-top: 10px;margin-bottom: 10px">筛选结果</div>
-			<el-table :data="tableData.value" class="table-default" height="300" stripe
-				header-cell-class-name="title-ellipsis">
-				<el-table-column fixed type="selection" min-width="30" />
-				<el-table-column type="index" label="序号" min-width="70" />
-				<el-table-column label="村" min-width="80" prop="ssc" show-overflow-tooltip />
-				<el-table-column label="镇" min-width="80" prop="ssjz" show-overflow-tooltip />
-				<el-table-column label="流转意向" min-width="100" prop="ghyt" show-overflow-tooltip />
-				<el-table-column label="地块面积(亩)" min-width="130" prop="tbmj" show-overflow-tooltip />
-				<el-table-column label="土地性质" prop="tdxz" show-overflow-tooltip />
-				<!--          <el-table-column label="地块数量" min-width="80" prop="plotNum" show-overflow-tooltip />-->
-			</el-table>
-
-		</el-card>
-		<BaseMapArea />
-	</div>
+  <div id="tdzsxz">
+    <iframe id="i_map" name="i_map" frameborder="0"></iframe>
+    <div class="tool-box shadow-box">
+      <img v-for="item in toolsArr" :src="item.picUrl" alt="" @click="handleToolClick(item)" />
+    </div>
+    <div v-show="panelShow.currentLayer" class="current-layer shadow-box pos-card-green">
+      <header>
+        <span>当前图层</span><i @click="panelShow.currentLayer = false"></i>
+      </header>
+      <main>
+        <ul>
+          <li v-for="item in mapLayers" :key="item.id">
+            <span>{{ item.name }}</span>
+            <div>
+              <i class="btn" :class="item.visible ? 'btn-dqtc-show' : 'btn-dqtc-hide'"
+                 @click="toggleLayerVisible(item)"></i>
+              <el-slider v-model="item.opacity" :min="1" @change="val => handleLayerOpacity(val, item)"></el-slider>
+            </div>
+          </li>
+        </ul>
+      </main>
+    </div>
+    <el-card class="box">
+      <div class="pos-card-title" style="margin-bottom: 10px">土地招商选址</div>
+      <el-select v-model="form.ghyt" placeholder="请选择流转意向" clearable>
+        <el-option value="" label="全部"></el-option>
+        <el-option v-for="item in lzyxArr" :key="item.value" :label="item.label"
+                   :value="item.value"></el-option>
+      </el-select>
+      <el-select v-model="form.xz" placeholder="请选择乡镇" style="margin-left: 10px" clearable>
+        <el-option v-for="item in townList" :key="item.value" :label="item.label"
+                   :value="item.value"></el-option>
+      </el-select>
+      <div style="margin-top: 20px;">
+        <el-input type="number" v-model="form.zxmj" style="width: 22%" placeholder="最小面积" clearable></el-input>
+        <span> - </span>
+        <el-input type="number" v-model="form.zdmj" style="width: 22%" placeholder="最大面积" clearable></el-input>
+        <el-select v-model="form.tdxz" placeholder="请选择土地性质" class="ml-10" style="width: 29%" clearable>
+          <el-option value="" label="全部"></el-option>
+          <el-option v-for="item in landTypeArr" :key="item.value" :label="item.label"
+                     :value="item.value"></el-option>
+        </el-select>
+        <!--				<el-select placeholder="请选择乡镇" clearable>-->
+        <!--					<el-option></el-option>-->
+        <!--				</el-select>-->
+
+        <el-button type="primary" class="btn-default" style="margin-left: 10px" @click="getList">分析</el-button>
+      </div>
+      <div class="pos-card-title" style="margin-top: 10px;margin-bottom: 10px">筛选结果</div>
+      <el-table @row-click="rowClick" :data="tableData.value" class="table-default" height="300" stripe header-cell-class-name="title-ellipsis">
+        <el-table-column fixed type="selection" min-width="30" />
+        <el-table-column type="index" label="序号" min-width="70" />
+        <el-table-column label="镇" min-width="80" prop="ssjz" show-overflow-tooltip />
+        <el-table-column label="村" min-width="80" prop="ssc" show-overflow-tooltip />
+        <el-table-column label="流转意向" min-width="100" prop="ghyt" show-overflow-tooltip />
+        <el-table-column label="流转面积(亩)" min-width="130" prop="tbmj" show-overflow-tooltip />
+        <el-table-column label="土地性质" prop="tdxz" show-overflow-tooltip />
+        <el-table-column label="土地利用分类" prop="tdlyfl" show-overflow-tooltip />
+        <!--          <el-table-column label="地块数量" min-width="80" prop="plotNum" show-overflow-tooltip />-->
+      </el-table>
+
+    </el-card>
+    <el-card class="panel box6" v-if="mapLayers.filter(i => i.visible).length > 0">
+      <div class="pos-card-title">
+        <span class="t-text">图例</span>
+      </div>
+      <ul v-for="item in mapLayers.filter(i => i.visible)" :key="item.name">
+
+        <li v-for="item2 in item.legend" :key="item2.name">
+          <i :style="'background:' + item2.color + ';' + 'border-color:' + item2.border + ';'"></i>
+          <span>{{ item2.name }}</span>
+        </li>
+      </ul>
+    </el-card>
+    <BaseMapArea />
+    <point-search/>
+  </div>
 </template>
 
 <script setup>
@@ -69,35 +83,53 @@ import { reactive, onBeforeUnmount, nextTick, onMounted, ref } from 'vue'
 import { getAssetsFile } from '@/utils/require'
 import CityGis from "../../../utils/map/CityGis.Bridge";
 import BaseMapArea from '@/components/BaseMapArea.vue'
-import { locateCM, addLayer } from '@/utils/map/AddLayer'
+import {locateCM, addLayer, addMyGraph, layerQueryGet,addPointSearch} from '@/utils/map/AddLayer'
 import { myBridge } from "@/utils/map/map"
 import { getLayerByName } from '@/utils/data/all-layer-info'
-import { GetTdzsxzList, GetTownVillageList } from "../../../api/landTransfer";
-import { landTypeArr, lzyxArr } from '../../../utils/data/select-data'
-import { getAllTownMy } from '@/api/projectAudit'
+import {GetTdzsxzList, GetTownVillageList} from "../../../api/landTransfer";
+import {landTypeArr, lzyxArr} from '../../../utils/data/select-data'
+import {Pointer} from "@element-plus/icons-vue";
+import PointSearch from "@/components/PointSearch.vue";
+import {useOtherStore} from "@/stores/other";
+
 onMounted(() => {
-	createMap()
-	mapLayers.value = [{ ...getLayerByName('意向招商地块'), visible: true, opacity: 100 }]
-	getTownList()
-	getList()
+  createMap()
+  mapLayers.value = [{ ...getLayerByName('意向招商地块'), visible: true, opacity: 100 }]
+  getTownList()
+  getList()
 })
 
 onBeforeUnmount(() => {
-	if (bridge) {
-		bridge.removeEventListener(listen)
-		myBridge.bridgeContent = null
-	}
+  if(bridge) {
+    bridge.removeEventListener(listen)
+    myBridge.bridgeContent = null
+  }
 })
+function rowClick(row){
+  addMyGraph({
+    "type": "polygon",
+    "is_edit": false,
+    "is_temp": false,
+    "is_clear": true,
+    "is_goto": true,
+
+    "data": JSON.parse(row.geojson).coordinates,
+  })
+  useOtherStore().changePointSearchShow(true,{
+    title:"yxzsdk",
+    data:row
+  })
+}
 const townList = ref([])
 const mapLayers = ref([])
 
 const tableData = reactive({
-	value: [
-		// { plannedUse: '水稻', turnArea: '1000', plotNum: '123' },
-		// { plannedUse: '水稻', turnArea: '1000', plotNum: '123' },
-		// { plannedUse: '水稻', turnArea: '1000', plotNum: '123' },
-		// { plannedUse: '水稻', turnArea: '1000', plotNum: '123' },
-	]
+  value: [
+    // { plannedUse: '水稻', turnArea: '1000', plotNum: '123' },
+    // { plannedUse: '水稻', turnArea: '1000', plotNum: '123' },
+    // { plannedUse: '水稻', turnArea: '1000', plotNum: '123' },
+    // { plannedUse: '水稻', turnArea: '1000', plotNum: '123' },
+  ]
 })
 
 const form = reactive({
@@ -105,204 +137,222 @@ const form = reactive({
 })
 
 const panelShow = reactive({
-	currentLayer: false,
+  currentLayer: false,
 })
 
 const toolsArr = ref([
-	{ id: 'layer', picUrl: getAssetsFile('0531/tool-layer.png') },
-	// { id: 'search', picUrl: getAssetsFile('0531/tool-search.png') },
-	// { id: 'position', picUrl: getAssetsFile('pages/tool-position.png') }
+  { id: 'layer', picUrl: getAssetsFile('0531/tool-layer.png') },
+  // { id: 'search', picUrl: getAssetsFile('0531/tool-search.png') },
+  // { id: 'position', picUrl: getAssetsFile('pages/tool-position.png') }
 ])
 
-function getList() {
-	GetTdzsxzList({
-		ghyt: form.ghyt,
-		tdxz: form.tdxz,
-		xz: form.xz,
-		zdmj: form.zdmj,
-		zxmj: form.zxmj,
-	}).then(res => {
-		tableData.value = res.data
-	})
+function getList(){
+  GetTdzsxzList({
+    ghyt:form.ghyt,
+    tdxz:form.tdxz,
+    xz:form.xz,
+    zdmj:form.zdmj,
+    zxmj:form.zxmj,
+  }).then(res => {
+    tableData.value = res.data
+  })
 }
 
-function getTownList() {
-	//   GetTownVillageList(1,"").then(res => {
-		getAllTownMy().then(res => {
-		// console.log(res);
-		for (let item of res.data) {
-			townList.value.push({
-				label: item.name,
-				value: item.name
-			})
-		}
-	})
+function getTownList(){
+  GetTownVillageList(1,"").then(res => {
+    // console.log(res);
+    for(let item of res.data){
+      townList.value.push({
+        label: item,
+        value: item
+      })
+    }
+  })
 }
 
 function handleToolClick(item) {
-	switch (item.id) {
-		case 'layer':
-			panelShow.currentLayer = true
-			break
-	}
+  switch (item.id) {
+    case 'layer':
+      panelShow.currentLayer = true
+      break
+  }
 }
 
 function toggleLayerVisible(item) {
-	item.visible = !item.visible
-	addLayer(item, item.visible, (item.opacity / 100).toFixed(2), 'map')
+  item.visible = !item.visible
+  addLayer(item, item.visible, (item.opacity/100).toFixed(2),'map')
 }
 
-function handleLayerOpacity(val, item) {
-	addLayer(item, item.visible, (item.opacity / 100).toFixed(2), 'map')
+function handleLayerOpacity(val,item) {
+  addLayer(item, item.visible, (item.opacity/100).toFixed(2),'map')
 }
 
 let bridge
 let listen
 function createMap() {
-	nextTick(() => {
-		myBridge.bridgeContent = bridge = new CityGis.Bridge({
-			id: "i_map",
-			url: import.meta.env.VITE_APP_BASE_ADDR + "/map_widget/#/mapcmnw?theme=dark&view=2D&basemap=air",
-			onReady: function () {
-			},
-		});
-		listen = (arg) => {
-			console.log(arg)
-			switch (arg.action) {
-				case "ViewComplete":
-					locateCM()
-					addLayer(getLayerByName('意向招商地块'))
-					break
-			}
-		}
-		bridge.addEventListener(listen)
-	})
+  nextTick(() => {
+    myBridge.bridgeContent = bridge = new CityGis.Bridge({
+      id: "i_map",
+      url: import.meta.env.VITE_APP_BASE_ADDR+"/map_widget/#/mapcmnw?theme=dark&view=2D&basemap=air",
+      onReady: function () {
+      },
+    });
+    listen = (arg) => {
+      console.log(arg)
+      switch (arg.action) {
+        case "ViewComplete":
+
+          locateCM()
+          addLayer(getLayerByName('意向招商地块'),true,1,'map',null,`deleted not in ('y')`)
+          // layerQueryGet(getLayerByName('意向招商地块').url,'1=1',false,false,false)
+          addPointSearch()
+          break
+      }
+    }
+    bridge.addEventListener(listen)
+  })
 }
 </script>
 
 <style lang='scss' scoped>
 #tdzsxz {
-	position: relative;
-	width: 100%;
-	height: 100%;
+  position: relative;
+  width: 100%;
+  height: 100%;
 }
 
 .box {
-	width: 600px;
-	height: 550px;
-	position: absolute;
-	top: 30px;
-	left: 30px;
+  width: 600px;
+  height: 550px;
+  position: absolute;
+  top: 30px;
+  left: 30px;
 }
 
-.pos-card-title {
-	font-size: 22px;
-	font-family: YSBTH;
-	font-style: italic;
-	color: var(--color-text-2);
-	margin-bottom: 10px;
-
-	&::after {
-		content: '';
-		display: block;
-		width: 100%;
-		height: 3px;
-		background: url('../../../assets/imgs/0531/title-underline.png');
-		background-size: cover;
-	}
-}
+
 
 #i_map {
-	width: 100%;
-	height: 100%;
-	padding: 0;
-	margin: 0;
-	background-color: #286466;
+  width: 100%;
+  height: 100%;
+  padding: 0;
+  margin: 0;
+  background-color: #286466;
 }
 
 .current-layer {
-	position: absolute;
-	width: 250px;
-	top: 20px;
-	right: 100px;
-
-	main {
-		padding-right: 10px;
-	}
-
-	ul {
-		width: 100%;
-		min-height: 80px;
-		max-height: 200px;
-		overflow-y: auto;
-
-		li {
-			width: 100%;
-			display: flex;
-			justify-content: space-between;
-			align-items: center;
-
-			// margin-bottom: 5px;
-
-			&>span {
-				font-size: 14px;
-				color: var(--color-text-2);
-			}
-
-			&>div {
-				display: flex;
-				align-items: center;
-
-				.btn {
-					display: inline-block;
-					width: 24px;
-					height: 24px;
-					cursor: pointer;
-					margin-right: 10px;
-				}
-
-				.btn-dqtc-show {
-					background: url('../../../assets/imgs/0531/visible.png');
-					background-size: cover;
-				}
-
-				.btn-dqtc-hide {
-					background: url('../../../assets/imgs/0531/invisible.png');
-					background-size: cover;
-				}
-
-				.el-slider {
-					width: 60px;
-					padding-right: 20px;
-
-					:deep(.el-slider__button) {
-						width: 15px;
-						height: 15px;
-					}
-				}
-			}
-		}
-	}
+  position: absolute;
+  width: 250px;
+  top: 20px;
+  right: 100px;
+
+  main {
+    padding-right: 10px;
+  }
+
+  ul {
+    width: 100%;
+    min-height: 80px;
+    max-height: 200px;
+    overflow-y: auto;
+
+    li {
+      width: 100%;
+      display: flex;
+      justify-content: space-between;
+      align-items: center;
+
+      // margin-bottom: 5px;
+
+      &>span {
+        font-size: 14px;
+        color: var(--color-text-2);
+      }
+
+      &>div {
+        display: flex;
+        align-items: center;
+
+        .btn {
+          display: inline-block;
+          width: 24px;
+          height: 24px;
+          cursor: pointer;
+          margin-right: 10px;
+        }
+
+        .btn-dqtc-show {
+          background: url('../../../assets/imgs/0531/visible.png');
+          background-size: cover;
+        }
+
+        .btn-dqtc-hide {
+          background: url('../../../assets/imgs/0531/invisible.png');
+          background-size: cover;
+        }
+
+        .el-slider {
+          width: 60px;
+          padding-right: 20px;
+
+          :deep(.el-slider__button) {
+            width: 15px;
+            height: 15px;
+          }
+        }
+      }
+    }
+  }
 }
 
 .tool-box {
-	position: absolute;
-	right: 20px;
-	padding: 20px 0;
-	top: 20px;
-	width: 60px;
-	//height: 150px;
-	border: 1px solid #00B259;
-	background-color: var(--color-1);
-	display: flex;
-	flex-direction: column;
-	justify-content: space-evenly;
-	align-items: center;
-
-	img {
-		cursor: pointer;
-		width: 24px;
-		height: 24px;
-	}
+  position: absolute;
+  right: 20px;
+  padding: 20px 0;
+  top: 20px;
+  width: 60px;
+  //height: 150px;
+  border: 1px solid #00B259;
+  background-color: var(--color-1);
+  display: flex;
+  flex-direction: column;
+  justify-content: space-evenly;
+  align-items: center;
+
+  img {
+    cursor: pointer;
+    width: 24px;
+    height: 24px;
+  }
+}
+.panel {
+  position: absolute;
+  z-index: 2;
+}
+.box6 {
+  width: 200px;
+  bottom: 130px;
+  right: 20px;
+
+  ul {
+    li {
+      display: flex;
+      align-items: center;
+
+      margin-bottom: 10px;
+
+      i {
+        display: block;
+        margin-right: 20px;
+        width: 10px;
+        height: 10px;
+        border: 1px solid white;
+      }
+
+      span {
+        font-size: 14px;
+        //color: #FFFFFF;
+      }
+    }
+  }
 }
 </style>

+ 15 - 9
src/views/xmfzsb/farmlandAlternative/Index.vue

@@ -63,6 +63,7 @@ import { GetTownVillageList } from "@/api/landTransfer";
 import {getRootFun} from "@/utils/data/getRootFun";
 import {handleMes} from "@/utils/tip";
 import {exportFileDataFun} from "@/utils/util-fun";
+import {ElMessage} from "element-plus";
 
 
 const pageSize = ref(99999)
@@ -135,13 +136,13 @@ function toList() {
 function toDelete(id) {
 	DeleteGbnt(id).then(res => {
 		console.log(res);
-    handleMes(res,()=> {
-      toList()
-    },'删除成功')
-		// if (res.code == 200 && res.msg === '删除成功') {
-		// 	ElMessage({ type: 'success', message: '删除成功' })
-		// 	toList()
-		// }
+    // handleMes(res,()=> {
+    //   toList()
+    // },'删除成功')
+		if (res.code == 200) {
+			ElMessage({ type: 'success', message: '删除成功' })
+			toList()
+		}
 	})
 	toList()
 }
@@ -150,14 +151,19 @@ const tableRef = ref(null)
 function exportList() {
 	let ids = []
 	const selectRows = tableRef.value.getSelectionRows()
+
+  if(selectRows.length<=0){
+    ElMessage({type:'error', message: '请选择方案后再导出'})
+    return
+  }
 	for (const row of selectRows) {
 		ids.push(row.planID)
 	}
 	GetGbntExp(ids).then(res => {
 		//todo
     // exportFileDataFun()
-		// console.log(res);
-		// window.open(res.data.url, "_blank", "", true)
+		console.log(res);
+		window.open(res.data, "_blank", "", true)
 	})
 	ids = {}
 }

+ 3 - 0
src/views/xmfzsb/projectDeclare/Check.vue

@@ -387,6 +387,9 @@ function toPass(isPass) {
     case '待产业科审核':
       zt = isPass
       jdmc = '待产业科审核'
+    case '待委领导终审':
+      zt = isPass
+      jdmc = '待委领导终审'
       break
   }
 	PostDsxmCheck(+route.params.id,{