Browse Source

百色果园信息

shuhao 2 ngày trước cách đây
mục cha
commit
00838d5bfb

+ 1 - 6
src/api/modules/warning.js

@@ -11,13 +11,8 @@ module.exports = {
         type: "get",
     },
 
-    fetchFarmLog: {
-        url:  config.base_url + "temp_blue_region/vrOrchardContent",
-        type: "post",
-    },
-    
     transformLocation: {
         url: "/ws/geocoder/v1",
         type: "get"
     },
-}
+}

+ 2 - 2
src/components/charts/options/barOption.js

@@ -99,7 +99,7 @@ const styleName2 = {
       },
     },
     {
-      data: [0, 1, 0,13],
+      data: [0, 0, 0,0],
       type: "bar",
       barWidth: 26,
       stack: "total",
@@ -131,7 +131,7 @@ const styleName2 = {
       },
     },
     {
-      data: [16,15,16, 3],
+      data: [0,0,0, 0],
       type: "bar",
       barWidth: 26,
       stack: "total",

+ 17 - 0
src/components/static_map_change/Layers.js

@@ -84,6 +84,22 @@ class StaticMapLayers {
             }
         }
     }
+
+    showSingle(key,isFit = false){
+        this.layerName = key
+        this.hideAll()
+        let layer = this.layerData[key].layer
+        eventBus.emit("alarmList:changeMapLayer", {legendUrl:layer.layer.get("legend"),
+            colors:layer.layer.get("colors"), labels:layer.layer.get("labels")});
+        layer.show()
+        if(isFit && layer.layer.getExtent){
+            let extent = layer.layer.getExtent();
+            if(extent && extent[0] != Infinity){
+                layer.mapInstance.fit(extent,{padding:[100,400,100,100]})
+            }
+        }
+    }
+
     hideAll(){
         for(let key in this.layerData){
             let layer = this.layerData[key].layer
@@ -92,6 +108,7 @@ class StaticMapLayers {
     }
 
     addStaticImgLayer(map, item){
+        item["opacity"] = 0.5
         let imgLayer = new StaticImgLayer(item.url, item, 3, map);
         imgLayer.hide()
         if(item.legendData){

+ 5 - 0
src/utils/ol-map/StaticImgLayer.js

@@ -29,6 +29,10 @@ class StaticImgLayer extends LTBaseObject{
 	initStaticImgLayer(url,options,zIndex){
 		var minZoom = Common.BaseLayerZoom[0];
 		var maxZoom = Common.BaseLayerZoom[1];
+		let opacity = 1;
+		if(options && options.opacity != undefined){
+			opacity = options.opacity
+		}
 		if(options && options.minZoom != undefined){
 			minZoom = options.minZoom
 		}
@@ -46,6 +50,7 @@ class StaticImgLayer extends LTBaseObject{
 			source:vm.source,
 			maxZoom:maxZoom,
 			minZoom:minZoom,
+			opacity:opacity,
 			zIndex:zIndex,
 			extent:options.extent || [Infinity, -Infinity, -Infinity, Infinity]
 		})

+ 25 - 22
src/views/home/album/index.vue

@@ -157,12 +157,14 @@
                                         <div v-else>
                                             <div class="card-desc condition-wrap">
                                                 <span class="desc-title">触发条件:</span>
-                                                {{ card.condition }}
-                                            </div>
-                                            <div v-if="card.executeDate || card.solarName" class="card-desc">
-                                                <span class="desc-title">推荐时间:</span>
-                                                {{ card.executeDate || card.solarName }}
+                                                <template v-for="condition in card.conditionList" :key="condition.index">
+                                                  {{condition.name}}大于{{condition.value * 100}}%
+                                                </template>
                                             </div>
+<!--                                            <div v-if="card.executeDate || card.solarName" class="card-desc">-->
+<!--                                                <span class="desc-title">推荐时间:</span>-->
+<!--                                                {{ card.executeDate || card.solarName }}-->
+<!--                                            </div>-->
                                             <div v-if="card.execute === 4" class="card-desc">
                                                 <span class="desc-title">{{
                                                     card.execute === 5 ? "复核时间:" : "执行时间:"
@@ -171,29 +173,30 @@
                                             </div>
                                             <div class="card-desc">
                                                 <span class="desc-title">农事编号:</span>
-                                                {{ card.code }}
+                                                {{ card.code.slice(0,10) }}
                                             </div>
                                         </div>
                                         <div class="card-desc last-desc">
                                             <span class="desc-title">药物处方:</span>
                                             <div class="rescription-wrap">
                                                 <div class="rescription">
-                                                    <span
-                                                        v-for="(
+                                                    <template v-for="prescription in card.prescriptionList" :key="prescription.name">
+                                                      <span
+                                                          v-for="(
                                                             fertilizer, fertilizerI
-                                                        ) in card.pesticideFertilizerList"
-                                                        :key="fertilizerI"
-                                                    >
-                                                        {{ fertilizer.ratio ? fertilizer.ratio + "倍" : "" }}
-                                                        {{ fertilizer.name }}
+                                                        ) in prescription.pesticideFertilizerList"
+                                                          :key="fertilizerI"
+                                                      >
+                                                        {{ fertilizer.defaultName }}
                                                         <span
                                                             v-if="
-                                                                fertilizerI !== card.pesticideFertilizerList.length - 1
+                                                                fertilizerI !== prescription.pesticideFertilizerList.length - 1
                                                             "
                                                         >
                                                             +
                                                         </span>
                                                     </span>
+                                                    </template>
                                                 </div>
                                                 <div class="detail-text">查看详情></div>
                                             </div>
@@ -257,11 +260,11 @@
                             </div>
                             <div v-if="card.execute !== 0 && card.execute !== 2" :class="['over-img']">
                                 <!-- 图片列表 -->
-                                <album-carousel7d
-                                    :key="farmName"
-                                    :farmId="farmId"
-                                    :farmWork="card"
-                                ></album-carousel7d>
+<!--                                <album-carousel7d-->
+<!--                                    :key="farmName"-->
+<!--                                    :farmId="farmId"-->
+<!--                                    :farmWork="card"-->
+<!--                                ></album-carousel7d>-->
                             </div>
                         </div>
                     </div>
@@ -351,7 +354,7 @@ onMounted(() => {
 
     getFarmDetail(farmId.value);
     getFarmWorkList(farmId.value);
-    getFarmLog()
+    // getFarmLog()
     window.addEventListener("scroll", debouncedHandleScroll);
 });
 
@@ -439,7 +442,7 @@ const getSecondLastIndex = (data) => {
     const filteredItems = data.filter((item) => item.execute === 3);
     // 获取倒数第二项
     if (filteredItems.length >= 1) {
-        const secondLastItem = filteredItems[filteredItems.length - 1];
+        const secondLastItem = filteredItems[filteredItems.length-1];
         // 获取该项在原数组中的索引
         secondLastIndex.value = data.indexOf(secondLastItem);
 
@@ -513,7 +516,7 @@ function addNsRecord(){
     .album-wrap {
         width: 100%;
         height: 100%;
-        
+
         .slot-right {
         width: 70%;
         cursor: pointer;

+ 12 - 17
src/views/home/components/homePage.vue

@@ -24,7 +24,7 @@
     <div class="chart-item phenology">
       <chart-box name="物候调节" arrow="left">
         <template #title-left>
-          <span class="title-left"> - 长花穗期</span>
+          <span class="title-left"></span>
         </template>
         <bar-chart class="bar-chart" styleName="styleName3" :xData="phenologyXData" :yData="phenologyYData"></bar-chart>
         <div class="time-line">
@@ -105,7 +105,7 @@ import {useStore} from "vuex";
 let store = useStore()
 
 // 物候调节
-const phenologyXData = ["花芽萌动","花蕾抽出","花穗伸长","开花期"]
+const phenologyXData = ["春梢老熟","炭疽病害","啃食虫害"]
 const phenologyYData = [{
   startNum:0,
   endNum:16,
@@ -113,17 +113,12 @@ const phenologyYData = [{
   endColor:"#4e442e"
 },{
   startNum:0,
-  endNum:16,
-  startColor:"#c6ab6b",
-  endColor:"#4e442e"
-},{
-  startNum:0,
-  endNum:16,
+  endNum:20,
   startColor:"#c6ab6b",
   endColor:"#4e442e"
 },{
   startNum:0,
-  endNum:16,
+  endNum:12,
   startColor:"#c6ab6b",
   endColor:"#4e442e"
 }]
@@ -132,18 +127,18 @@ const reportData = {
   rates:[
     {
         "increase": null,
-        "name": "长花穗率",
+        "name": "春梢老熟",
         "rate": 85
     },
     {
         "increase": null,
-        "name": "花带叶率",
-        "rate": 78
+        "name": "炭疽病害",
+        "rate": 10.7
     },
     {
         "increase": null,
         "name": "啃食虫害",
-        "rate": 0
+        "rate": 8.3
     }
 ]
 }
@@ -154,9 +149,9 @@ const active = ref(0)
 const handleActive = (i) =>{
   active.value = i
 }
-const phenologyXData1 = ["炭疽病", "啃食虫害","叶瘿蚊","毛毡病"]
+const phenologyXData1 = ["尺蠖", "蚧壳虫","炭疽病","煤烟病"]
 const phenologyYData1 = [{
-  startNum:0,
+  startNum:8.3,
   endNum:0,
   startColor:"#c6ab6b",
   endColor:"#4e442e"
@@ -166,13 +161,13 @@ const phenologyYData1 = [{
   startColor:"#c6ab6b",
   endColor:"#4e442e"
 },{
-  startNum:0,
+  startNum:10.7,
   endNum:0,
   startColor:"#c6ab6b",
   endColor:"#4e442e"
 },{
   startNum:0,
-  endNum:1,
+  endNum:0,
   startColor:"#c6ab6b",
   endColor:"#4e442e"
 }]

+ 10 - 6
src/views/home/index.vue

@@ -76,7 +76,7 @@ import homePage from "./components/homePage.vue";
 import weatherPage from "./components/weatherPage.vue";
 import phenologyPage from "./components/phenologyPage.vue";
 import indicatorChart from "./components/indicatorChart.vue";
-import { useRouter } from "vue-router";
+import { useRouter, useRoute } from "vue-router";
 import SamplePointLayer from "./map/samplePointLayer";
 import { useStore } from "vuex";
 import RegionLayer from "./map/regionLayer";
@@ -85,6 +85,8 @@ import AlbumCarousel from "./album_compoents/albumCarousel.vue";
 import album from "./album/index.vue";
 import PdfDialog from "../../components/PdfDialog";
 let store = useStore();
+let route = useRoute();
+const farmId = route.query.farmId;
 const components = {
     homePage,
     weatherPage,
@@ -92,7 +94,7 @@ const components = {
 };
 //当前农场
 const currentFarm = {
-    id: store.getters.userinfo.curFarmId,
+    id: farmId,
     name: store.getters.userinfo.curFarmName,
 };
 //当前区域
@@ -106,10 +108,12 @@ let regionLayer = null;
 const router = useRouter();
 const mapRef = ref();
 onMounted(() => {
-    homeMap.initMap("POINT(106.1977576 23.866625616666667)", mapRef.value);
+    VE_API.farm.fetchFarmDetail({ id:currentFarm.id }).then(({ data }) => {
+      homeMap.initMap("POINT("+data.location["lat"] +" " + data.location["lng"]+")", mapRef.value);
+    });
     // homeMap.initMap(store.getters.userinfo.location, mapRef.value);
-    samplePointLayer = new SamplePointLayer(homeMap.kmap.map, currentFarm, currentRegion);
-    regionLayer = new RegionLayer(homeMap.kmap.map, currentFarm, currentRegion);
+    // samplePointLayer = new SamplePointLayer(homeMap.kmap.map, currentFarm, currentRegion);
+    // regionLayer = new RegionLayer(homeMap.kmap.map, currentFarm, currentRegion);
 
     getYellow();
     getFarmLog();
@@ -124,7 +128,7 @@ const getFarmLog = () => {
         farmId: 766,
         blueZone: blueZone.value,
     };
-    VE_API.warning.fetchFarmLog(params).then(({ data }) => {
+    VE_API.farm.fetchFarmLog(params).then(({ data }) => {
         indicatorChartData.value = data || {};
         eventBus.emit("chart:updateOption", data);
     });

+ 3 - 1
src/views/home/map/homeMap.js

@@ -19,9 +19,11 @@ class HomeMap {
   }
 
   initMap(location, target) {
-    let level = 19.2;
+    let level = 17;
     let coordinate = util.wktCastGeom(location).getFirstCoordinate();
     this.kmap = new KMap.Map(target, level, coordinate[0], coordinate[1], null, 6, 22);
+    let xyz2 = config.base_img_url3 + 'map/lby/{z}/{x}/{y}.png';
+    this.kmap.addXYZLayer(xyz2,{minZoom:15,maxZoom:22});
     eventBus.emit('homeMap:init', this.kmap);
   }
 }

+ 7 - 5
src/views/home/map/samplePointLayer.js

@@ -93,7 +93,7 @@ class SamplePointLayer {
 
   initData(farmId, regionId){
     let that = this
-    VE_API.sample.list({farmId:766,regionId:2}).then(({data})=>{
+    VE_API.sample.list({farmId:farmId,regionId:regionId}).then(({data})=>{
       // data[0].status = 9
       let features = []
       for(let item of data){
@@ -102,10 +102,12 @@ class SamplePointLayer {
         let point = newPoint(item);
         features.push(point)
       }
-      const source = new VectorSource({
-        features: features,
-      });
-      that.clusterSource.setSource(source)
+      if(features.length > 0){
+        const source = new VectorSource({
+          features: features,
+        });
+        that.clusterSource.setSource(source)
+      }
     })
   }
 

+ 4 - 9
src/views/warningHome/components/alarmList.vue

@@ -62,24 +62,19 @@ const alarmFactorList = ref([
 
 const mapLayerList = ref({})
 onMounted(() => {
-    VE_API.warning.fetchWarningLayer({
-        k: "risk_map",
-        resultType: "json",
-    }).then(({data}) => {
-        mapLayerList.value = data
-        eventBus.emit("alarmList:warningLayers", data)
-        toggleAlarm(alarmList.value[0], 1)
-    })
     eventBus.on("warningHome:toggleArea", (id) => {
         activeAlarm.value = null
     })
+    setTimeout(() => {
+      toggleAlarm(alarmList.value[0], 1)
+    },1500)
 });
 
 const activeAlarm = ref(1);
 const toggleAlarm = (item, type) => {
     activeAlarm.value = item.id;
     // eventBus.emit("alarmList:changeMapLayer", {name: item.name, url: mapLayerList.value[item.name]})
-    eventBus.emit("alarmList:changeMapLayer", {url: mapLayerList.value[item.name], type, name: item.name})
+    eventBus.emit("alarmList:clickAlarm", {url: mapLayerList.value[item.name], type, name: "百色"+item.name})
 };
 </script>
 

+ 3 - 3
src/views/warningHome/components/album.vue

@@ -118,7 +118,7 @@
                                             </div>
                                             <div v-if="card.execute === 1" class="add-btn unactive">已失效</div>
                                         </div>
-                                        
+
                                         <div v-if="card.execute === 4 || card.execute === 5">
                                             <!-- 已完成 -->
                                             <div class="card-desc">
@@ -336,8 +336,8 @@ onUnmounted(() => {
     window.removeEventListener("scroll", debouncedHandleScroll);
 });
 
-const getFarmLog = () => {    
-    VE_API.warning.fetchFarmLog({id: farmId.value, farmId: sampleId.value}).then(({data}) => {
+const getFarmLog = () => {
+    VE_API.farm.fetchFarmLog({id: farmId.value, farmId: sampleId.value}).then(({data}) => {
         console.log('fetchFarmLog', data);
     })
 }

+ 5 - 0
src/views/warningHome/index.vue

@@ -207,6 +207,11 @@ onMounted(() => {
         warningLayers.value = data
     });
 
+    eventBus.on("alarmList:clickAlarm", (data) => {
+      staticMapLayers.showSingle(data.name, true)
+    });
+
+
     eventBus.on("alarmList:changeMapLayer", ({name, legendUrl}) => {
       if(legendUrl){
         legendImg.value = legendUrl;

+ 1 - 1
src/views/warningHome/map/mockFarmLayer.js

@@ -79,7 +79,7 @@ class MockFarmLayer {
         this.clusterSource = new VectorSource({})
         this.clusterLayer = new Vector({
             source: new Cluster({
-                distance: 50,
+                distance: 10,
                 source: this.clusterSource,
             }),
             name: "MockFarmLayer",

+ 1 - 1
src/views/warningHome/warningMap.js

@@ -55,7 +55,7 @@ class HomeMap {
           hasFeature = true
           let fs = feature.get("features");
           console.log('fff', fs);
-          router.push({ name: "Home", query: {farmId:  fs[0].get("organId")} });
+          router.push({ name: "Home", query: {farmId:  fs[0].get("id")} });
           // fs.length > 0 && eventBus.emit('MockFarmLayer:click', { sampleIdVal: fs[0].get("targetSampleId"), farmIdVal: fs[0].get("mockFarmId") });
         }
         if (layer instanceof VectorLayer && layer.get("name") === "pointLayer") {

+ 0 - 2
src/views/znxy/ZnxyMap.js

@@ -164,8 +164,6 @@ class ZnxyMap {
         let level = 18
         let coordinate = util.wktCastGeom(location).getFirstCoordinate()
         this.kmap = new KMap.Map(target,level,coordinate[0], coordinate[1],null,5,22);
-        let xyz = config.base_img_url + 'map/lby/{z}/{x}/{y}.png';
-        this.kmap.addXYZLayer(xyz,{minZoom:15,maxZoom:22});
         let xyz2 = config.base_img_url3 + 'map/lby/{z}/{x}/{y}.png';
         this.kmap.addXYZLayer(xyz2,{minZoom:15,maxZoom:22});
         this.kmap.addLayer(this.areaLayer.layer)