Selaa lähdekoodia

对接新平台接口

wangsisi 2 kuukautta sitten
vanhempi
commit
71b039eefb

+ 18 - 4419
src/api/modules/home.js

@@ -21,4426 +21,25 @@ export default {
     url: config.base_url + "container_phenology_monitor/query_work_code_sample_params",
     type: "get",
   },
-  farmIndexReport: {
-    url: config.base_url + "farm/farmIndexReport2",
+  statByLegendRanges: {
+    url: config.base_url + "container_phenology_monitor/stat_by_legend_ranges",
+    type: "get",
+  },
+  getSampleFilesWithParams: {
+    url: config.base_url + "work_code_sample/getSampleFilesWithParams",
+    type: "get",
+  },
+  getSpeakInfo: {
+    url: config.base_url + "container_phenology_sample_files_speak_title/getSpeakInfo",
+    type: "get",
+  },
+  getFarmFilesWithParams: {
+    url: config.base_url + "work_code_farm/getFarmFilesWithParams",
+    type: "get",
+  },
+  getFarmSpeakInfo: {
+    url: config.base_url + "container_phenology_sample_files_speak_title/getFarmSpeakInfo",
     type: "get",
-    mockCondition: (p)=>{
-      return p.farmId === 90888 || p.farmId === 91702;
-    },mockFun:function(p){
-      return new Promise((resolve, reject) => {
-
-        if(p.farmId === 90888){
-          resolve({
-            "code": 0,
-            "msg": "success",
-            "data": [
-              {
-                "key": "生态指标",
-                "obj": {
-                  "extData": [],
-                  "legendList": [
-                    {
-                      "key": "通风率",
-                      "list": [
-                        {
-                          "color": "#DDDDDD",
-                          "label": "通风<70%",
-                          "name": "通风一般",
-                          "range": [
-                            0,
-                            70
-                          ],
-                          "val": "1"
-                        },
-                        {
-                          "color": "#B3FF76",
-                          "label": "通风70%-85%",
-                          "name": "通风良好",
-                          "range": [
-                            70,
-                            85
-                          ],
-                          "val": "2"
-                        },
-                        {
-                          "color": "#1CBD00",
-                          "label": "通风85%-100%",
-                          "name": "通风优秀",
-                          "range": [
-                            85,
-                            101
-                          ],
-                          "val": "3"
-                        }
-                      ]
-                    },
-                    {
-                      "key": "透光率",
-                      "list": [
-                        {
-                          "color": "#A4D36D",
-                          "label": "透光<70%",
-                          "name": "透光一般",
-                          "range": [
-                            0,
-                            10
-                          ],
-                          "val": "1"
-                        },
-                        {
-                          "color": "#5CBF43",
-                          "label": "透光70%-85%",
-                          "name": "透光良好",
-                          "range": [
-                            10,
-                            85
-                          ],
-                          "val": "2"
-                        },
-                        {
-                          "color": "#1A7C12",
-                          "label": "透光85%-100%",
-                          "name": "透光优秀",
-                          "range": [
-                            85,
-                            101
-                          ],
-                          "val": "3"
-                        }
-                      ]
-                    }
-                  ],
-                  "titleList": [
-                    "通风率",
-                    "透光率"
-                  ],
-                  "list1": [
-                    {
-                      "key": "通风率",
-                      "val": 61
-                    },
-                    {
-                      "key": "透光率",
-                      "val": 54
-                    }
-                  ],
-                  "text": "当前分区内38.17%的树体通风不畅,45.7%的树体透光性较差,可能造成整体减产6.9%,需要及时执行剪枝农事。",
-                  "list2": [
-                    {
-                      "key": "通风率",
-                      "val": "通风率体现树体之间的间隙以及自身郁闭程度,当前100%的树体通风优秀。"
-                    },
-                    {
-                      "key": "透光率",
-                      "val": "透光率体现树体自身郁闭程度,当前100%的树体透光性优秀,建议继续保持现有管理措施并及时巡园。"
-                    }
-                  ],
-                  "list3": [],
-                  "blueZoneList": [],
-                  "geoHashSampleList": [
-                    {
-                      "key": "通风率",
-                      "obj": {
-                        "1": [
-                          "w7ygy5ce9sur",
-                          "w7ygy5cgrzsj",
-                          "w7ygy5ctcst9",
-                          "w7ygy5drfqyb",
-                          "w7ygy5dymh0f",
-                          "w7ygy5dztt0v",
-                          "w7ygy5em6f1u",
-                          "w7ygy5en3c8s",
-                          "w7ygy5eq42zp",
-                          "w7ygy5esh7k4",
-                          "w7ygy5ev1f0u",
-                          "w7ygy5f7du6d",
-                          "w7ygy5f852k5",
-                          "w7ygy5fc08e6",
-                          "w7ygy5ff5mvm",
-                          "w7ygy5fg2x5e",
-                          "w7ygy5fhfcxd",
-                          "w7ygy5fjzzzj",
-                          "w7ygy5fsu1dd",
-                          "w7ygy5fzjdks",
-                          "w7ygy5g13808",
-                          "w7ygy5g46zmr",
-                          "w7ygy5g5k8re",
-                          "w7ygy5g7kuhh",
-                          "w7ygy5gbumzu",
-                          "w7ygy5gf36xy",
-                          "w7ygy5ggs4ky",
-                          "w7ygy5gmgrtu",
-                          "w7ygy5gn4pfk",
-                          "w7ygy5gp6xm3",
-                          "w7ygy5gu7x6h",
-                          "w7ygy5gw764v",
-                          "w7ygy5gxd7bw",
-                          "w7ygy5s5gppd",
-                          "w7ygy5sxv5wf",
-                          "w7ygy5szgsqe",
-                          "w7ygy5u656gh",
-                          "w7ygy5u7dsp5",
-                          "w7ygy5u8gp1r",
-                          "w7ygy5ugs7pp",
-                          "w7ygy5uheu0v",
-                          "w7ygy5uktp6b",
-                          "w7ygy5ur5vhm",
-                          "w7ygy5uuynjz",
-                          "w7ygy5ux7s0p",
-                          "w7ygy5v0gtes",
-                          "w7ygy5vhuh62",
-                          "w7ygy5vjumh7",
-                          "w7ygy5vp672m",
-                          "w7ygyh1c9877",
-                          "w7ygyh402wmc",
-                          "w7ygyh460tkk",
-                          "w7ygyh4bkh50",
-                          "w7ygyh4d5bsx",
-                          "w7ygyh4ffcpq",
-                          "w7ygyh50k5c0",
-                          "w7ygyh58s13e",
-                          "w7ygyh59v6be",
-                          "w7ygyh5k7fxd",
-                          "w7ygyh5v7pff",
-                          "w7ygyhh2mk21",
-                          "w7ygyhh3vks7",
-                          "w7ygyhh5juvv",
-                          "w7ygyhh75g0j",
-                          "w7ygyhhehbz9",
-                          "w7ygyhhf5bbe",
-                          "w7ygyhhke4fq",
-                          "w7ygyhhpud5z",
-                          "w7ygyhhsmw39",
-                          "w7ygyhhthp0j",
-                          "w7ygyhhu7vy0"
-                        ],
-                        "2": [
-                          "w7ygy5c9pbvf",
-                          "w7ygy5cd6mjn",
-                          "w7ygy5cf17hf",
-                          "w7ygy5cy50yz",
-                          "w7ygy5ekjt2w",
-                          "w7ygy5epdt6w",
-                          "w7ygy5erg3xy",
-                          "w7ygy5etjy7g",
-                          "w7ygy5euj7kf",
-                          "w7ygy5eyh5yg",
-                          "w7ygy5ezvzfd",
-                          "w7ygy5f1bxtw",
-                          "w7ygy5f2cqgy",
-                          "w7ygy5f669rn",
-                          "w7ygy5fe3r42",
-                          "w7ygy5fjgqd4",
-                          "w7ygy5fkc097",
-                          "w7ygy5fr4vm3",
-                          "w7ygy5fusn4u",
-                          "w7ygy5fy19fb",
-                          "w7ygy5g352gd",
-                          "w7ygy5g672jc",
-                          "w7ygy5g8fmq7",
-                          "w7ygy5gd4627",
-                          "w7ygy5ghdy3s",
-                          "w7ygy5gket7s",
-                          "w7ygy5gr4evz",
-                          "w7ygy5s7gnwv",
-                          "w7ygy5skvprx",
-                          "w7ygy5sn696u",
-                          "w7ygy5sthmmr",
-                          "w7ygy5tpv3cp",
-                          "w7ygy5u2fufb",
-                          "w7ygy5u5s92y",
-                          "w7ygy5ubdh8f",
-                          "w7ygy5ufd74c",
-                          "w7ygy5umff7y",
-                          "w7ygy5un459k",
-                          "w7ygy5upm8jz",
-                          "w7ygy5usuux6",
-                          "w7ygy5uvuwvr",
-                          "w7ygy5uzk7nt",
-                          "w7ygy5v4m7df",
-                          "w7ygy5v5tc5p",
-                          "w7ygyh199jr8",
-                          "w7ygyh1dgjf5",
-                          "w7ygyh1g6j6t",
-                          "w7ygyh41gh6w",
-                          "w7ygyh44cv5y",
-                          "w7ygyh4dcchy",
-                          "w7ygyh529bgy",
-                          "w7ygyh53t4zu",
-                          "w7ygyh5458be",
-                          "w7ygyh554cjc",
-                          "w7ygyh5b7567",
-                          "w7ygyh5csw04",
-                          "w7ygyh5dfh89",
-                          "w7ygyh5ghrdf",
-                          "w7ygyh5s79bj",
-                          "w7ygyh5u7g4p",
-                          "w7ygyh5yy14p",
-                          "w7ygyh5zfcuy",
-                          "w7ygyhh0eb2j",
-                          "w7ygyhhbdsn8",
-                          "w7ygyhhd5bvx",
-                          "w7ygyhhh5kqn",
-                          "w7ygyhhqe7p5",
-                          "w7ygyhj0e6y9"
-                        ],
-                        "3": [
-                          "w7ygy5cg91c8",
-                          "w7ygy5cr7548",
-                          "w7ygy5csfxgm",
-                          "w7ygy5cubf49",
-                          "w7ygy5cx98hf",
-                          "w7ygy5cz6wd5",
-                          "w7ygy5dp3hwv",
-                          "w7ygy5ef6ttd",
-                          "w7ygy5f103h7",
-                          "w7ygy5f91e7x",
-                          "w7ygy5fd4vqk",
-                          "w7ygy5fp4mp3",
-                          "w7ygy5fw30rt",
-                          "w7ygy5fx0yeu",
-                          "w7ygy5ge6bjr",
-                          "w7ygy5gyhm0p",
-                          "w7ygy5gzd8p4",
-                          "w7ygy5sjjdy6",
-                          "w7ygy5spwrr6",
-                          "w7ygy5sqk0wb",
-                          "w7ygy5srvd90",
-                          "w7ygy5sw3xrk",
-                          "w7ygy5sye1kb",
-                          "w7ygy5u0f5z0",
-                          "w7ygy5u475y8",
-                          "w7ygy5ud63fd",
-                          "w7ygy5uetkqq",
-                          "w7ygy5uw5wh3",
-                          "w7ygyh12u6xv",
-                          "w7ygyh12x9mr",
-                          "w7ygyh164fj1",
-                          "w7ygyh17k25x",
-                          "w7ygyh1b99mz",
-                          "w7ygyh4234zn",
-                          "w7ygyh4754sh",
-                          "w7ygyh483mzs",
-                          "w7ygyh4cf3zj",
-                          "w7ygyh57jhd0",
-                          "w7ygyh5tt48h",
-                          "w7ygyhh1us9e",
-                          "w7ygyhh8ubb1",
-                          "w7ygyhhfu324",
-                          "w7ygyhhjg6x5",
-                          "w7ygyhhmsqr5",
-                          "w7ygyhhnex2x",
-                          "w7ygyhhremk3",
-                          "w7ygy5gsdc78"
-                        ]
-                      }
-                    },
-                    {
-                      "key": "透光率",
-                      "obj": {
-                        "1": [],
-                        "2": [
-                          "w7ygy5cd6mjn",
-                          "w7ygy5cf17hf",
-                          "w7ygy5cgrzsj",
-                          "w7ygy5ctcst9",
-                          "w7ygy5dp3hwv",
-                          "w7ygy5drfqyb",
-                          "w7ygy5dymh0f",
-                          "w7ygy5dztt0v",
-                          "w7ygy5ekjt2w",
-                          "w7ygy5em6f1u",
-                          "w7ygy5en3c8s",
-                          "w7ygy5epdt6w",
-                          "w7ygy5eq42zp",
-                          "w7ygy5erg3xy",
-                          "w7ygy5esh7k4",
-                          "w7ygy5etjy7g",
-                          "w7ygy5ev1f0u",
-                          "w7ygy5ezvzfd",
-                          "w7ygy5f103h7",
-                          "w7ygy5f1bxtw",
-                          "w7ygy5f2cqgy",
-                          "w7ygy5f669rn",
-                          "w7ygy5f7du6d",
-                          "w7ygy5f91e7x",
-                          "w7ygy5fd4vqk",
-                          "w7ygy5fe3r42",
-                          "w7ygy5ff5mvm",
-                          "w7ygy5fg2x5e",
-                          "w7ygy5fhfcxd",
-                          "w7ygy5fjgqd4",
-                          "w7ygy5fjzzzj",
-                          "w7ygy5fkc097",
-                          "w7ygy5fsu1dd",
-                          "w7ygy5fw30rt",
-                          "w7ygy5fx0yeu",
-                          "w7ygy5fy19fb",
-                          "w7ygy5fzjdks",
-                          "w7ygy5g13808",
-                          "w7ygy5g352gd",
-                          "w7ygy5g46zmr",
-                          "w7ygy5g5k8re",
-                          "w7ygy5g672jc",
-                          "w7ygy5g8fmq7",
-                          "w7ygy5gbumzu",
-                          "w7ygy5ge6bjr",
-                          "w7ygy5gf36xy",
-                          "w7ygy5ggs4ky",
-                          "w7ygy5ghdy3s",
-                          "w7ygy5gket7s",
-                          "w7ygy5gmgrtu",
-                          "w7ygy5gn4pfk",
-                          "w7ygy5gp6xm3",
-                          "w7ygy5gr4evz",
-                          "w7ygy5gu7x6h",
-                          "w7ygy5gw764v",
-                          "w7ygy5gxd7bw",
-                          "w7ygy5gyhm0p",
-                          "w7ygy5gzd8p4",
-                          "w7ygy5s5gppd",
-                          "w7ygy5s7gnwv",
-                          "w7ygy5sjjdy6",
-                          "w7ygy5skvprx",
-                          "w7ygy5sn696u",
-                          "w7ygy5spwrr6",
-                          "w7ygy5sqk0wb",
-                          "w7ygy5srvd90",
-                          "w7ygy5sthmmr",
-                          "w7ygy5sw3xrk",
-                          "w7ygy5sxv5wf",
-                          "w7ygy5szgsqe",
-                          "w7ygy5tpv3cp",
-                          "w7ygy5u0f5z0",
-                          "w7ygy5u475y8",
-                          "w7ygy5u5s92y",
-                          "w7ygy5u656gh",
-                          "w7ygy5u8gp1r",
-                          "w7ygy5ubdh8f",
-                          "w7ygy5ud63fd",
-                          "w7ygy5uetkqq",
-                          "w7ygy5ufd74c",
-                          "w7ygy5ugs7pp",
-                          "w7ygy5uheu0v",
-                          "w7ygy5un459k",
-                          "w7ygy5upm8jz",
-                          "w7ygy5ur5vhm",
-                          "w7ygy5usuux6",
-                          "w7ygy5uuynjz",
-                          "w7ygy5uvuwvr",
-                          "w7ygy5uw5wh3",
-                          "w7ygy5ux7s0p",
-                          "w7ygy5uzk7nt",
-                          "w7ygy5v0gtes",
-                          "w7ygy5v4m7df",
-                          "w7ygy5v5tc5p",
-                          "w7ygy5vhuh62",
-                          "w7ygy5vp672m",
-                          "w7ygyh12x9mr",
-                          "w7ygyh199jr8",
-                          "w7ygyh1c9877",
-                          "w7ygyh1dgjf5",
-                          "w7ygyh1g6j6t",
-                          "w7ygyh402wmc",
-                          "w7ygyh41gh6w",
-                          "w7ygyh4234zn",
-                          "w7ygyh44cv5y",
-                          "w7ygyh460tkk",
-                          "w7ygyh4754sh",
-                          "w7ygyh483mzs",
-                          "w7ygyh4cf3zj",
-                          "w7ygyh4d5bsx",
-                          "w7ygyh4dcchy",
-                          "w7ygyh4ffcpq",
-                          "w7ygyh50k5c0",
-                          "w7ygyh529bgy",
-                          "w7ygyh53t4zu",
-                          "w7ygyh5458be",
-                          "w7ygyh554cjc",
-                          "w7ygyh57jhd0",
-                          "w7ygyh58s13e",
-                          "w7ygyh59v6be",
-                          "w7ygyh5b7567",
-                          "w7ygyh5csw04",
-                          "w7ygyh5dfh89",
-                          "w7ygyh5ghrdf",
-                          "w7ygyh5k7fxd",
-                          "w7ygyh5s79bj",
-                          "w7ygyh5tt48h",
-                          "w7ygyh5u7g4p",
-                          "w7ygyh5v7pff",
-                          "w7ygyh5yy14p",
-                          "w7ygyhh0eb2j",
-                          "w7ygyhh1us9e",
-                          "w7ygyhh2mk21",
-                          "w7ygyhh3vks7",
-                          "w7ygyhh5juvv",
-                          "w7ygyhh75g0j",
-                          "w7ygyhhbdsn8",
-                          "w7ygyhhd5bvx",
-                          "w7ygyhhehbz9",
-                          "w7ygyhhf5bbe",
-                          "w7ygyhhfu324",
-                          "w7ygyhhh5kqn",
-                          "w7ygyhhke4fq",
-                          "w7ygyhhmsqr5",
-                          "w7ygyhhpud5z",
-                          "w7ygyhhqe7p5",
-                          "w7ygyhhremk3",
-                          "w7ygyhhsmw39",
-                          "w7ygyhhthp0j",
-                          "w7ygyhhu7vy0",
-                          "w7ygyhj0e6y9"
-                        ],
-                        "3": [
-                          "w7ygy5c9pbvf",
-                          "w7ygy5ce9sur",
-                          "w7ygy5cg91c8",
-                          "w7ygy5cr7548",
-                          "w7ygy5csfxgm",
-                          "w7ygy5cubf49",
-                          "w7ygy5cx98hf",
-                          "w7ygy5cy50yz",
-                          "w7ygy5cz6wd5",
-                          "w7ygy5ef6ttd",
-                          "w7ygy5euj7kf",
-                          "w7ygy5eyh5yg",
-                          "w7ygy5f852k5",
-                          "w7ygy5fc08e6",
-                          "w7ygy5fp4mp3",
-                          "w7ygy5fr4vm3",
-                          "w7ygy5fusn4u",
-                          "w7ygy5g7kuhh",
-                          "w7ygy5gd4627",
-                          "w7ygy5sye1kb",
-                          "w7ygy5u2fufb",
-                          "w7ygy5u7dsp5",
-                          "w7ygy5uktp6b",
-                          "w7ygy5umff7y",
-                          "w7ygy5vjumh7",
-                          "w7ygyh12u6xv",
-                          "w7ygyh164fj1",
-                          "w7ygyh17k25x",
-                          "w7ygyh1b99mz",
-                          "w7ygyh4bkh50",
-                          "w7ygyh5zfcuy",
-                          "w7ygyhh8ubb1",
-                          "w7ygyhhjg6x5",
-                          "w7ygyhhnex2x",
-                          "w7ygy5gsdc78"
-                        ]
-                      }
-                    }
-                  ],
-                  "geoHashSampleStat": [
-                    {
-                      "key": "通风率",
-                      "obj": {
-                        "1": 0,
-                        "2": 0,
-                        "3": 100
-                      }
-                    },
-                    {
-                      "key": "透光率",
-                      "obj": {
-                        "1": 0,
-                        "2": 0,
-                        "3": 100
-                      }
-                    }
-                  ],
-                  "imageTitle": [
-                    {
-                      "key": "通风率",
-                      "val": "单树通风率"
-                    },
-                    {
-                      "key": "透光率",
-                      "val": "单树透光率"
-                    }
-                  ]
-                }
-              },
-              {
-                "key": "病虫指标",
-                "obj": {
-                  "extData": [],
-                  "legendList": [
-                    {
-                      "key": "啃食性虫害",
-                      "list": [
-                        {
-                          "color": "#DDDDDD",
-                          "label": "无",
-                          "name": "正常",
-                          "range": [
-                            0,
-                            0
-                          ],
-                          "val": "1"
-                        },
-                        {
-                          "color": "#FFAF73",
-                          "label": "60%-80%",
-                          "name": "高危",
-                          "range": [
-                            0,
-                            5
-                          ],
-                          "val": "2"
-                        },
-                        {
-                          "color": "#FF6D00",
-                          "label": "大于10%",
-                          "name": "严重",
-                          "range": [
-                            5,
-                            101
-                          ],
-                          "val": "3"
-                        }
-                      ]
-                    },
-                    {
-                      "key": "刺吸式虫害",
-                      "list": [
-                        {
-                          "color": "#DDDDDD",
-                          "label": "无",
-                          "name": "正常",
-                          "range": [
-                            0,
-                            0
-                          ],
-                          "val": "1"
-                        },
-                        {
-                          "color": "#FFAF73",
-                          "label": "60%-80%",
-                          "name": "高危",
-                          "range": [
-                            0,
-                            5
-                          ],
-                          "val": "2"
-                        },
-                        {
-                          "color": "#FF6D00",
-                          "label": "大于10%",
-                          "name": "严重",
-                          "range": [
-                            5,
-                            101
-                          ],
-                          "val": "3"
-                        }
-                      ]
-                    },
-                    {
-                      "key": "叶瘿蚊",
-                      "list": [
-                        {
-                          "color": "#DDDDDD",
-                          "label": "无",
-                          "name": "正常",
-                          "range": [
-                            0,
-                            0
-                          ],
-                          "val": "1"
-                        },
-                        {
-                          "color": "#FFAF73",
-                          "label": "60%-80%",
-                          "name": "高危",
-                          "range": [
-                            0,
-                            5
-                          ],
-                          "val": "2"
-                        },
-                        {
-                          "color": "#FF6D00",
-                          "label": "大于10%",
-                          "name": "严重",
-                          "range": [
-                            5,
-                            101
-                          ],
-                          "val": "3"
-                        }
-                      ]
-                    }
-                  ],
-                  "titleList": [
-                    "啃食性虫害",
-                    "刺吸式虫害"
-                  ],
-                  "list1": [
-                    {
-                      "key": "啃食性虫害",
-                      "val": 0
-                    },
-                    {
-                      "key": "刺吸式虫害",
-                      "val": 0
-                    }
-                  ],
-                  "text": "生产树中,9.14%的树体感染了病虫害,较七天前无变化,有进一步蔓延风险,可能导致整体减产0.21%,因此需及时执行农事,避免病虫害进一步扩散,影响产量。",
-                  "list2": [
-                    {
-                      "key": "啃食性虫害",
-                      "val": "生产树中,0%的树体感染了啃食性虫害,近期需密切关注啃食性虫害情况,做好预防工作。"
-                    },
-                    {
-                      "key": "刺吸式虫害",
-                      "val": "生产树中,0%的树体感染了刺吸式虫害,近期需密切关注啃食性虫害情况,做好预防工作。"
-                    }
-                  ],
-                  "list3": [],
-                  "blueZoneList": [],
-                  "geoHashSampleList": [
-                    {
-                      "key": "啃食性虫害",
-                      "obj": {
-                        "1": [],
-                        "2": [
-                          "w7ygy5cx98hf"
-                        ],
-                        "3": []
-                      }
-                    },
-                    {
-                      "key": "刺吸式虫害",
-                      "obj": {
-                        "1": [],
-                        "2": [
-                          "w7ygy5cubf49",
-                          "w7ygy5ezvzfd",
-                          "w7ygy5fzjdks",
-                          "w7ygyhh2mk21"
-                        ],
-                        "3": []
-                      }
-                    }
-                  ],
-                  "geoHashSampleStat": [
-                    {
-                      "key": "啃食性虫害",
-                      "obj": {
-                        "1": 0,
-                        "2": 0,
-                        "3": 0
-                      }
-                    },
-                    {
-                      "key": "刺吸式虫害",
-                      "obj": {
-                        "1": 0,
-                        "2": 0,
-                        "3": 0
-                      }
-                    }
-                  ],
-                  "imageTitle": [
-                    {
-                      "key": "啃食性虫害",
-                      "val": "啃食性虫害分布图"
-                    },
-                    {
-                      "key": "刺吸式虫害",
-                      "val": "刺吸式虫害分布图"
-                    },
-                    {
-                      "key": "叶瘿蚊",
-                      "val": "叶瘿蚊分布图"
-                    }
-                  ]
-                }
-              },
-              {
-                "key": "生长指标",
-                "obj": {
-                  "extData": [],
-                  "legendList": [
-                    {
-                      "key": "开花率",
-                      "list": [
-                        {
-                          "color": "#FFFFE0",
-                          "label": "0%-20%",
-                          "name": "一级",
-                          "range": [],
-                          "val": "1"
-                        },
-                        {
-                          "color": "#FFA500",
-                          "label": "20%-50%",
-                          "name": "二级",
-                          "range": [],
-                          "val": "2"
-                        },
-                        {
-                          "color": "#FF4500",
-                          "label": "50%以上",
-                          "name": "三级",
-                          "range": [],
-                          "val": "3"
-                        }
-                      ]
-                    },
-                    {
-                      "key": "低温阴雨",
-                      "list": [
-                        {
-                          "color": "#FFFFE0",
-                          "label": "0%-20%",
-                          "name": "异常区域",
-                          "range": [],
-                          "val": "1"
-                        },
-                        {
-                          "color": "#FFA500",
-                          "label": "20%-50%",
-                          "name": "高危区域",
-                          "range": [],
-                          "val": "2"
-                        },
-                        {
-                          "color": "#FF4500",
-                          "label": "50%以上",
-                          "name": "严重区域",
-                          "range": [],
-                          "val": "3"
-                        }
-                      ]
-                    }
-                  ],
-                  "titleList": [
-                    "开花率",
-                    "干热风险",
-                    "低温阴雨"
-                  ],
-                  "list1": [
-                    {
-                      "key": "开花率",
-                      "val": 8
-                    },
-                    {
-                      "key": "干热风险",
-                      "val": 78
-                    },
-                    {
-                      "key": "低温阴雨",
-                      "val": 90
-                    }
-                  ],
-                  "text": "当前果园生产树体中,发现树体开花率、低温阴雨、干热风险等异常,依据历史农情数据测算,当前异常可能导致产量减少2.0%,需及时采取疏花、摇花、喷水灌水农事。",
-                  "list2": [
-                    {
-                      "key": "开花率",
-                      "val": "当前已经监测到处于扬花期树体中80%的树体开花。"
-                    },
-                    {
-                      "key": "低温阴雨",
-                      "val": "未来7天,处于扬花期树体中90.0%的区域将出现低温阴雨风险4级,低温阴雨导致柱头受精不充分,影响后期坐果,需要雨后抢晴处理,可人工摇花或无人机吹花,防止沤花导致病菌滋生,同时帮助授粉,为后期保果打下良好基础。"
-                    }
-                  ],
-                  "list3": [],
-                  "blueZoneList": [],
-                  "geoHashSampleList": [
-                    {
-                      "key": "开花率",
-                      "obj": {
-                        "1": [
-                          "w7ygy5gsdc78"
-                        ],
-                        "2": [
-                          "w7ygy5en3c8s",
-                          "w7ygy5epdt6w",
-                          "w7ygy5euj7kf",
-                          "w7ygy5fhfcxd",
-                          "w7ygy5g5k8re",
-                          "w7ygy5g672jc",
-                          "w7ygy5gket7s",
-                          "w7ygy5gw764v"
-                        ],
-                        "3": [
-                          "w7ygy5cy50yz",
-                          "w7ygy5drfqyb",
-                          "w7ygyh4754sh",
-                          "w7ygyhh3vks7",
-                          "w7ygyhhehbz9"
-                        ]
-                      }
-                    },
-                    {
-                      "key": "低温阴雨",
-                      "obj": {
-                        "1": [],
-                        "2": [],
-                        "3": []
-                      }
-                    }
-                  ],
-                  "geoHashSampleStat": [
-                    {
-                      "key": "开花率",
-                      "obj": {
-                        "1": 1,
-                        "2": 80,
-                        "3": 5
-                      }
-                    }
-                  ],
-                  "imageTitle": [
-                    {
-                      "key": "开花率",
-                      "val": "开花率风险分布图"
-                    },
-                    {
-                      "key": "低温阴雨",
-                      "val": "低温阴雨风险分布图"
-                    }
-                  ]
-                }
-              }
-            ],
-            "extData": null,
-            "success": true
-          })
-        }
-        if(p.farmId === 26196){
-          resolve({
-            "code": 0,
-            "msg": "success",
-            "data": [
-              {
-                "key": "生态指标",
-                "obj": {
-                  "extData": [],
-                  "legendList": [
-                    {
-                      "key": "通风率",
-                      "list": [
-                        {
-                          "color": "#DDDDDD",
-                          "label": "通风<70%",
-                          "name": "通风一般",
-                          "range": [
-                            0,
-                            70
-                          ],
-                          "val": "1"
-                        },
-                        {
-                          "color": "#B3FF76",
-                          "label": "通风70%-85%",
-                          "name": "通风良好",
-                          "range": [
-                            70,
-                            85
-                          ],
-                          "val": "2"
-                        },
-                        {
-                          "color": "#1CBD00",
-                          "label": "通风85%-100%",
-                          "name": "通风优秀",
-                          "range": [
-                            85,
-                            101
-                          ],
-                          "val": "3"
-                        }
-                      ]
-                    },
-                    {
-                      "key": "透光率",
-                      "list": [
-                        {
-                          "color": "#A4D36D",
-                          "label": "透光<70%",
-                          "name": "透光一般",
-                          "range": [
-                            0,
-                            10
-                          ],
-                          "val": "1"
-                        },
-                        {
-                          "color": "#5CBF43",
-                          "label": "透光70%-85%",
-                          "name": "透光良好",
-                          "range": [
-                            10,
-                            85
-                          ],
-                          "val": "2"
-                        },
-                        {
-                          "color": "#1A7C12",
-                          "label": "透光85%-100%",
-                          "name": "透光优秀",
-                          "range": [
-                            85,
-                            101
-                          ],
-                          "val": "3"
-                        }
-                      ]
-                    }
-                  ],
-                  "titleList": [
-                    "通风率",
-                    "透光率"
-                  ],
-                  "list1": [
-                    {
-                      "key": "通风率",
-                      "val": 61
-                    },
-                    {
-                      "key": "透光率",
-                      "val": 54
-                    }
-                  ],
-                  "text": "当前分区内38.17%的树体通风不畅,45.7%的树体透光性较差,可能造成整体减产6.9%,需要及时执行剪枝农事。",
-                  "list2": [
-                    {
-                      "key": "通风率",
-                      "val": "通风率体现树体之间的间隙以及自身郁闭程度,当前38.17%的树体通风不畅,可能造成整体减产3.09%,需立即执行剪枝农事;61.83%的树体通风正常,建议继续保持现有管理措施并及时巡园,如发现通风不畅的树体,需及时评估是否需要执行剪枝农事。"
-                    },
-                    {
-                      "key": "透光率",
-                      "val": "透光率体现树体自身郁闭程度,当前45.7%的树体透光性较差,可能造成整体减产3.81%,需立即执行剪枝农事;54.3%的树体透光正常,建议继续保持现有管理措施并及时巡园,如发现透光性较差的树体,需及时评估是否需要执行剪枝农事。"
-                    }
-                  ],
-                  "list3": [],
-                  "blueZoneList": [],
-                  "geoHashSampleList": [
-                    {
-                      "key": "通风率",
-                      "obj": {
-                        "1": [
-                          "w7ygy5ce9sur",
-                          "w7ygy5cgrzsj",
-                          "w7ygy5ctcst9",
-                          "w7ygy5drfqyb",
-                          "w7ygy5dymh0f",
-                          "w7ygy5dztt0v",
-                          "w7ygy5em6f1u",
-                          "w7ygy5en3c8s",
-                          "w7ygy5eq42zp",
-                          "w7ygy5esh7k4",
-                          "w7ygy5ev1f0u",
-                          "w7ygy5f7du6d",
-                          "w7ygy5f852k5",
-                          "w7ygy5fc08e6",
-                          "w7ygy5ff5mvm",
-                          "w7ygy5fg2x5e",
-                          "w7ygy5fhfcxd",
-                          "w7ygy5fjzzzj",
-                          "w7ygy5fsu1dd",
-                          "w7ygy5fzjdks",
-                          "w7ygy5g13808",
-                          "w7ygy5g46zmr",
-                          "w7ygy5g5k8re",
-                          "w7ygy5g7kuhh",
-                          "w7ygy5gbumzu",
-                          "w7ygy5gf36xy",
-                          "w7ygy5ggs4ky",
-                          "w7ygy5gmgrtu",
-                          "w7ygy5gn4pfk",
-                          "w7ygy5gp6xm3",
-                          "w7ygy5gu7x6h",
-                          "w7ygy5gw764v",
-                          "w7ygy5gxd7bw",
-                          "w7ygy5s5gppd",
-                          "w7ygy5sxv5wf",
-                          "w7ygy5szgsqe",
-                          "w7ygy5u656gh",
-                          "w7ygy5u7dsp5",
-                          "w7ygy5u8gp1r",
-                          "w7ygy5ugs7pp",
-                          "w7ygy5uheu0v",
-                          "w7ygy5uktp6b",
-                          "w7ygy5ur5vhm",
-                          "w7ygy5uuynjz",
-                          "w7ygy5ux7s0p",
-                          "w7ygy5v0gtes",
-                          "w7ygy5vhuh62",
-                          "w7ygy5vjumh7",
-                          "w7ygy5vp672m",
-                          "w7ygyh1c9877",
-                          "w7ygyh402wmc",
-                          "w7ygyh460tkk",
-                          "w7ygyh4bkh50",
-                          "w7ygyh4d5bsx",
-                          "w7ygyh4ffcpq",
-                          "w7ygyh50k5c0",
-                          "w7ygyh58s13e",
-                          "w7ygyh59v6be",
-                          "w7ygyh5k7fxd",
-                          "w7ygyh5v7pff",
-                          "w7ygyhh2mk21",
-                          "w7ygyhh3vks7",
-                          "w7ygyhh5juvv",
-                          "w7ygyhh75g0j",
-                          "w7ygyhhehbz9",
-                          "w7ygyhhf5bbe",
-                          "w7ygyhhke4fq",
-                          "w7ygyhhpud5z",
-                          "w7ygyhhsmw39",
-                          "w7ygyhhthp0j",
-                          "w7ygyhhu7vy0"
-                        ],
-                        "2": [
-                          "w7ygy5c9pbvf",
-                          "w7ygy5cd6mjn",
-                          "w7ygy5cf17hf",
-                          "w7ygy5cy50yz",
-                          "w7ygy5ekjt2w",
-                          "w7ygy5epdt6w",
-                          "w7ygy5erg3xy",
-                          "w7ygy5etjy7g",
-                          "w7ygy5euj7kf",
-                          "w7ygy5eyh5yg",
-                          "w7ygy5ezvzfd",
-                          "w7ygy5f1bxtw",
-                          "w7ygy5f2cqgy",
-                          "w7ygy5f669rn",
-                          "w7ygy5fe3r42",
-                          "w7ygy5fjgqd4",
-                          "w7ygy5fkc097",
-                          "w7ygy5fr4vm3",
-                          "w7ygy5fusn4u",
-                          "w7ygy5fy19fb",
-                          "w7ygy5g352gd",
-                          "w7ygy5g672jc",
-                          "w7ygy5g8fmq7",
-                          "w7ygy5gd4627",
-                          "w7ygy5ghdy3s",
-                          "w7ygy5gket7s",
-                          "w7ygy5gr4evz",
-                          "w7ygy5s7gnwv",
-                          "w7ygy5skvprx",
-                          "w7ygy5sn696u",
-                          "w7ygy5sthmmr",
-                          "w7ygy5tpv3cp",
-                          "w7ygy5u2fufb",
-                          "w7ygy5u5s92y",
-                          "w7ygy5ubdh8f",
-                          "w7ygy5ufd74c",
-                          "w7ygy5umff7y",
-                          "w7ygy5un459k",
-                          "w7ygy5upm8jz",
-                          "w7ygy5usuux6",
-                          "w7ygy5uvuwvr",
-                          "w7ygy5uzk7nt",
-                          "w7ygy5v4m7df",
-                          "w7ygy5v5tc5p",
-                          "w7ygyh199jr8",
-                          "w7ygyh1dgjf5",
-                          "w7ygyh1g6j6t",
-                          "w7ygyh41gh6w",
-                          "w7ygyh44cv5y",
-                          "w7ygyh4dcchy",
-                          "w7ygyh529bgy",
-                          "w7ygyh53t4zu",
-                          "w7ygyh5458be",
-                          "w7ygyh554cjc",
-                          "w7ygyh5b7567",
-                          "w7ygyh5csw04",
-                          "w7ygyh5dfh89",
-                          "w7ygyh5ghrdf",
-                          "w7ygyh5s79bj",
-                          "w7ygyh5u7g4p",
-                          "w7ygyh5yy14p",
-                          "w7ygyh5zfcuy",
-                          "w7ygyhh0eb2j",
-                          "w7ygyhhbdsn8",
-                          "w7ygyhhd5bvx",
-                          "w7ygyhhh5kqn",
-                          "w7ygyhhqe7p5",
-                          "w7ygyhj0e6y9"
-                        ],
-                        "3": [
-                          "w7ygy5cg91c8",
-                          "w7ygy5cr7548",
-                          "w7ygy5csfxgm",
-                          "w7ygy5cubf49",
-                          "w7ygy5cx98hf",
-                          "w7ygy5cz6wd5",
-                          "w7ygy5dp3hwv",
-                          "w7ygy5ef6ttd",
-                          "w7ygy5f103h7",
-                          "w7ygy5f91e7x",
-                          "w7ygy5fd4vqk",
-                          "w7ygy5fp4mp3",
-                          "w7ygy5fw30rt",
-                          "w7ygy5fx0yeu",
-                          "w7ygy5ge6bjr",
-                          "w7ygy5gsdc78",
-                          "w7ygy5gyhm0p",
-                          "w7ygy5gzd8p4",
-                          "w7ygy5sjjdy6",
-                          "w7ygy5spwrr6",
-                          "w7ygy5sqk0wb",
-                          "w7ygy5srvd90",
-                          "w7ygy5sw3xrk",
-                          "w7ygy5sye1kb",
-                          "w7ygy5u0f5z0",
-                          "w7ygy5u475y8",
-                          "w7ygy5ud63fd",
-                          "w7ygy5uetkqq",
-                          "w7ygy5uw5wh3",
-                          "w7ygyh12u6xv",
-                          "w7ygyh12x9mr",
-                          "w7ygyh164fj1",
-                          "w7ygyh17k25x",
-                          "w7ygyh1b99mz",
-                          "w7ygyh4234zn",
-                          "w7ygyh4754sh",
-                          "w7ygyh483mzs",
-                          "w7ygyh4cf3zj",
-                          "w7ygyh57jhd0",
-                          "w7ygyh5tt48h",
-                          "w7ygyhh1us9e",
-                          "w7ygyhh8ubb1",
-                          "w7ygyhhfu324",
-                          "w7ygyhhjg6x5",
-                          "w7ygyhhmsqr5",
-                          "w7ygyhhnex2x",
-                          "w7ygyhhremk3"
-                        ]
-                      }
-                    },
-                    {
-                      "key": "透光率",
-                      "obj": {
-                        "1": [],
-                        "2": [
-                          "w7ygy5cd6mjn",
-                          "w7ygy5cf17hf",
-                          "w7ygy5cgrzsj",
-                          "w7ygy5ctcst9",
-                          "w7ygy5dp3hwv",
-                          "w7ygy5drfqyb",
-                          "w7ygy5dymh0f",
-                          "w7ygy5dztt0v",
-                          "w7ygy5ekjt2w",
-                          "w7ygy5em6f1u",
-                          "w7ygy5en3c8s",
-                          "w7ygy5epdt6w",
-                          "w7ygy5eq42zp",
-                          "w7ygy5erg3xy",
-                          "w7ygy5esh7k4",
-                          "w7ygy5etjy7g",
-                          "w7ygy5ev1f0u",
-                          "w7ygy5ezvzfd",
-                          "w7ygy5f103h7",
-                          "w7ygy5f1bxtw",
-                          "w7ygy5f2cqgy",
-                          "w7ygy5f669rn",
-                          "w7ygy5f7du6d",
-                          "w7ygy5f91e7x",
-                          "w7ygy5fd4vqk",
-                          "w7ygy5fe3r42",
-                          "w7ygy5ff5mvm",
-                          "w7ygy5fg2x5e",
-                          "w7ygy5fhfcxd",
-                          "w7ygy5fjgqd4",
-                          "w7ygy5fjzzzj",
-                          "w7ygy5fkc097",
-                          "w7ygy5fsu1dd",
-                          "w7ygy5fw30rt",
-                          "w7ygy5fx0yeu",
-                          "w7ygy5fy19fb",
-                          "w7ygy5fzjdks",
-                          "w7ygy5g13808",
-                          "w7ygy5g352gd",
-                          "w7ygy5g46zmr",
-                          "w7ygy5g5k8re",
-                          "w7ygy5g672jc",
-                          "w7ygy5g8fmq7",
-                          "w7ygy5gbumzu",
-                          "w7ygy5ge6bjr",
-                          "w7ygy5gf36xy",
-                          "w7ygy5ggs4ky",
-                          "w7ygy5ghdy3s",
-                          "w7ygy5gket7s",
-                          "w7ygy5gmgrtu",
-                          "w7ygy5gn4pfk",
-                          "w7ygy5gp6xm3",
-                          "w7ygy5gr4evz",
-                          "w7ygy5gu7x6h",
-                          "w7ygy5gw764v",
-                          "w7ygy5gxd7bw",
-                          "w7ygy5gyhm0p",
-                          "w7ygy5gzd8p4",
-                          "w7ygy5s5gppd",
-                          "w7ygy5s7gnwv",
-                          "w7ygy5sjjdy6",
-                          "w7ygy5skvprx",
-                          "w7ygy5sn696u",
-                          "w7ygy5spwrr6",
-                          "w7ygy5sqk0wb",
-                          "w7ygy5srvd90",
-                          "w7ygy5sthmmr",
-                          "w7ygy5sw3xrk",
-                          "w7ygy5sxv5wf",
-                          "w7ygy5szgsqe",
-                          "w7ygy5tpv3cp",
-                          "w7ygy5u0f5z0",
-                          "w7ygy5u475y8",
-                          "w7ygy5u5s92y",
-                          "w7ygy5u656gh",
-                          "w7ygy5u8gp1r",
-                          "w7ygy5ubdh8f",
-                          "w7ygy5ud63fd",
-                          "w7ygy5uetkqq",
-                          "w7ygy5ufd74c",
-                          "w7ygy5ugs7pp",
-                          "w7ygy5uheu0v",
-                          "w7ygy5un459k",
-                          "w7ygy5upm8jz",
-                          "w7ygy5ur5vhm",
-                          "w7ygy5usuux6",
-                          "w7ygy5uuynjz",
-                          "w7ygy5uvuwvr",
-                          "w7ygy5uw5wh3",
-                          "w7ygy5ux7s0p",
-                          "w7ygy5uzk7nt",
-                          "w7ygy5v0gtes",
-                          "w7ygy5v4m7df",
-                          "w7ygy5v5tc5p",
-                          "w7ygy5vhuh62",
-                          "w7ygy5vp672m",
-                          "w7ygyh12x9mr",
-                          "w7ygyh199jr8",
-                          "w7ygyh1c9877",
-                          "w7ygyh1dgjf5",
-                          "w7ygyh1g6j6t",
-                          "w7ygyh402wmc",
-                          "w7ygyh41gh6w",
-                          "w7ygyh4234zn",
-                          "w7ygyh44cv5y",
-                          "w7ygyh460tkk",
-                          "w7ygyh4754sh",
-                          "w7ygyh483mzs",
-                          "w7ygyh4cf3zj",
-                          "w7ygyh4d5bsx",
-                          "w7ygyh4dcchy",
-                          "w7ygyh4ffcpq",
-                          "w7ygyh50k5c0",
-                          "w7ygyh529bgy",
-                          "w7ygyh53t4zu",
-                          "w7ygyh5458be",
-                          "w7ygyh554cjc",
-                          "w7ygyh57jhd0",
-                          "w7ygyh58s13e",
-                          "w7ygyh59v6be",
-                          "w7ygyh5b7567",
-                          "w7ygyh5csw04",
-                          "w7ygyh5dfh89",
-                          "w7ygyh5ghrdf",
-                          "w7ygyh5k7fxd",
-                          "w7ygyh5s79bj",
-                          "w7ygyh5tt48h",
-                          "w7ygyh5u7g4p",
-                          "w7ygyh5v7pff",
-                          "w7ygyh5yy14p",
-                          "w7ygyhh0eb2j",
-                          "w7ygyhh1us9e",
-                          "w7ygyhh2mk21",
-                          "w7ygyhh3vks7",
-                          "w7ygyhh5juvv",
-                          "w7ygyhh75g0j",
-                          "w7ygyhhbdsn8",
-                          "w7ygyhhd5bvx",
-                          "w7ygyhhehbz9",
-                          "w7ygyhhf5bbe",
-                          "w7ygyhhfu324",
-                          "w7ygyhhh5kqn",
-                          "w7ygyhhke4fq",
-                          "w7ygyhhmsqr5",
-                          "w7ygyhhpud5z",
-                          "w7ygyhhqe7p5",
-                          "w7ygyhhremk3",
-                          "w7ygyhhsmw39",
-                          "w7ygyhhthp0j",
-                          "w7ygyhhu7vy0",
-                          "w7ygyhj0e6y9"
-                        ],
-                        "3": [
-                          "w7ygy5c9pbvf",
-                          "w7ygy5ce9sur",
-                          "w7ygy5cg91c8",
-                          "w7ygy5cr7548",
-                          "w7ygy5csfxgm",
-                          "w7ygy5cubf49",
-                          "w7ygy5cx98hf",
-                          "w7ygy5cy50yz",
-                          "w7ygy5cz6wd5",
-                          "w7ygy5ef6ttd",
-                          "w7ygy5euj7kf",
-                          "w7ygy5eyh5yg",
-                          "w7ygy5f852k5",
-                          "w7ygy5fc08e6",
-                          "w7ygy5fp4mp3",
-                          "w7ygy5fr4vm3",
-                          "w7ygy5fusn4u",
-                          "w7ygy5g7kuhh",
-                          "w7ygy5gd4627",
-                          "w7ygy5gsdc78",
-                          "w7ygy5sye1kb",
-                          "w7ygy5u2fufb",
-                          "w7ygy5u7dsp5",
-                          "w7ygy5uktp6b",
-                          "w7ygy5umff7y",
-                          "w7ygy5vjumh7",
-                          "w7ygyh12u6xv",
-                          "w7ygyh164fj1",
-                          "w7ygyh17k25x",
-                          "w7ygyh1b99mz",
-                          "w7ygyh4bkh50",
-                          "w7ygyh5zfcuy",
-                          "w7ygyhh8ubb1",
-                          "w7ygyhhjg6x5",
-                          "w7ygyhhnex2x"
-                        ]
-                      }
-                    }
-                  ],
-                  "geoHashSampleStat": [
-                    {
-                      "key": "通风率",
-                      "obj": {
-                        "1": 8,
-                        "2": 19,
-                        "3": 1239
-                      }
-                    },
-                    {
-                      "key": "透光率",
-                      "obj": {
-                        "1": 0,
-                        "2": 151,
-                        "3": 35
-                      }
-                    }
-                  ],
-                  "imageTitle": [
-                    {
-                      "key": "通风率",
-                      "val": "单树通风率"
-                    },
-                    {
-                      "key": "透光率",
-                      "val": "单树透光率"
-                    }
-                  ]
-                }
-              },
-              {
-                "key": "病虫指标",
-                "obj": {
-                  "extData": [],
-                  "legendList": [
-                    {
-                      "key": "啃食性虫害",
-                      "list": [
-                        {
-                          "color": "#DDDDDD",
-                          "label": "无",
-                          "name": "正常",
-                          "range": [
-                            0,
-                            0
-                          ],
-                          "val": "1"
-                        },
-                        {
-                          "color": "#FFAF73",
-                          "label": "60%-80%",
-                          "name": "高危",
-                          "range": [
-                            0,
-                            5
-                          ],
-                          "val": "2"
-                        },
-                        {
-                          "color": "#FF6D00",
-                          "label": "大于10%",
-                          "name": "严重",
-                          "range": [
-                            5,
-                            101
-                          ],
-                          "val": "3"
-                        }
-                      ]
-                    },
-                    {
-                      "key": "刺吸式虫害",
-                      "list": [
-                        {
-                          "color": "#DDDDDD",
-                          "label": "无",
-                          "name": "正常",
-                          "range": [
-                            0,
-                            0
-                          ],
-                          "val": "1"
-                        },
-                        {
-                          "color": "#FFAF73",
-                          "label": "60%-80%",
-                          "name": "高危",
-                          "range": [
-                            0,
-                            5
-                          ],
-                          "val": "2"
-                        },
-                        {
-                          "color": "#FF6D00",
-                          "label": "大于10%",
-                          "name": "严重",
-                          "range": [
-                            5,
-                            101
-                          ],
-                          "val": "3"
-                        }
-                      ]
-                    },
-                    {
-                      "key": "叶瘿蚊",
-                      "list": [
-                        {
-                          "color": "#DDDDDD",
-                          "label": "无",
-                          "name": "正常",
-                          "range": [
-                            0,
-                            0
-                          ],
-                          "val": "1"
-                        },
-                        {
-                          "color": "#FFAF73",
-                          "label": "60%-80%",
-                          "name": "高危",
-                          "range": [
-                            0,
-                            5
-                          ],
-                          "val": "2"
-                        },
-                        {
-                          "color": "#FF6D00",
-                          "label": "大于10%",
-                          "name": "严重",
-                          "range": [
-                            5,
-                            101
-                          ],
-                          "val": "3"
-                        }
-                      ]
-                    }
-                  ],
-                  "titleList": [
-                    "啃食性虫害",
-                    "刺吸式虫害"
-                  ],
-                  "list1": [
-                    {
-                      "key": "啃食性虫害",
-                      "val": 0
-                    },
-                    {
-                      "key": "刺吸式虫害",
-                      "val": 0
-                    }
-                  ],
-                  "text": "生产树中,9.14%的树体感染了病虫害,较七天前无变化,有进一步蔓延风险,可能导致整体减产0.21%,因此需及时执行农事,避免病虫害进一步扩散,影响产量。",
-                  "list2": [
-                    {
-                      "key": "啃食性虫害",
-                      "val": "生产树中,0%的树体感染了啃食性虫害,近期需密切关注啃食性虫害情况,做好预防工作。"
-                    },
-                    {
-                      "key": "刺吸式虫害",
-                      "val": "生产树中,0%的树体感染了刺吸式虫害,近期需密切关注啃食性虫害情况,做好预防工作。"
-                    }
-                  ],
-                  "list3": [],
-                  "blueZoneList": [],
-                  "geoHashSampleList": [
-                    {
-                      "key": "啃食性虫害",
-                      "obj": {
-                        "1": [],
-                        "2": [
-                          "w7ygy5cx98hf"
-                        ],
-                        "3": []
-                      }
-                    },
-                    {
-                      "key": "刺吸式虫害",
-                      "obj": {
-                        "1": [],
-                        "2": [
-                          "w7ygy5cubf49",
-                          "w7ygy5ezvzfd",
-                          "w7ygy5fzjdks",
-                          "w7ygyhh2mk21"
-                        ],
-                        "3": []
-                      }
-                    }
-                  ],
-                  "geoHashSampleStat": [
-                    {
-                      "key": "啃食性虫害",
-                      "obj": {
-                        "1": 0,
-                        "2": 0,
-                        "3": 0
-                      }
-                    },
-                    {
-                      "key": "刺吸式虫害",
-                      "obj": {
-                        "1": 0,
-                        "2": 0,
-                        "3": 0
-                      }
-                    }
-                  ],
-                  "imageTitle": [
-                    {
-                      "key": "啃食性虫害",
-                      "val": "啃食性虫害分布图"
-                    },
-                    {
-                      "key": "刺吸式虫害",
-                      "val": "刺吸式虫害分布图"
-                    },
-                    {
-                      "key": "叶瘿蚊",
-                      "val": "叶瘿蚊分布图"
-                    }
-                  ]
-                }
-              },
-              {
-                "key": "生长指标",
-                "obj": {
-                  "extData": [],
-                  "legendList": [
-                    {
-                      "key": "异常落果",
-                      "list": [
-                        {
-                          "color": "#FFFFE0",
-                          "label": "0%-20%",
-                          "name": "一级",
-                          "range": [],
-                          "val": "1"
-                        },
-                        {
-                          "color": "#FFA500",
-                          "label": "20%-50%",
-                          "name": "二级",
-                          "range": [],
-                          "val": "2"
-                        },
-                        {
-                          "color": "#FF4500",
-                          "label": "50%以上",
-                          "name": "三级",
-                          "range": [],
-                          "val": "3"
-                        }
-                      ]
-                    },
-                    {
-                      "key": "低温阴雨",
-                      "list": [
-                        {
-                          "color": "#FFFFE0",
-                          "label": "0%-20%",
-                          "name": "异常区域",
-                          "range": [],
-                          "val": "1"
-                        },
-                        {
-                          "color": "#FFA500",
-                          "label": "20%-50%",
-                          "name": "高危区域",
-                          "range": [],
-                          "val": "2"
-                        },
-                        {
-                          "color": "#FF4500",
-                          "label": "50%以上",
-                          "name": "严重区域",
-                          "range": [],
-                          "val": "3"
-                        }
-                      ]
-                    }
-                  ],
-                  "titleList": [
-                    "异常落果",
-                    "干热风险",
-                    "低温阴雨"
-                  ],
-                  "list1": [
-                    {
-                      "key": "异常落果",
-                      "val": 8
-                    },
-                    {
-                      "key": "干热风险",
-                      "val": 78
-                    },
-                    {
-                      "key": "低温阴雨",
-                      "val": 90
-                    }
-                  ],
-                  "text": "当前果园生产树体中,发现树体异常落果、低温阴雨、干热风险等异常,依据历史农情数据测算,当前异常可能导致产量减少2.0%,需及时采取疏花、摇花、喷水灌水农事。",
-                  "list2": [
-                    {
-                      "key": "异常落果",
-                      "val": "处于小果期的树体中,0%异常落果,生长状态良好。"
-                    },
-                    {
-                      "key": "低温阴雨",
-                      "val": "未来7天,处于扬花期树体中90.0%的区域将出现低温阴雨风险4级,低温阴雨导致柱头受精不充分,影响后期坐果,需要雨后抢晴处理,可人工摇花或无人机吹花,防止沤花导致病菌滋生,同时帮助授粉,为后期保果打下良好基础。"
-                    }
-                  ],
-                  "list3": [],
-                  "blueZoneList": [],
-                  "geoHashSampleList": [
-                    {
-                      "key": "异常落果",
-                      "obj": {
-                        "1": [
-                          "w7ygy5gsdc78"
-                        ],
-                        "2": [
-                          "w7ygy5en3c8s",
-                          "w7ygy5epdt6w",
-                          "w7ygy5euj7kf",
-                          "w7ygy5fhfcxd",
-                          "w7ygy5g5k8re",
-                          "w7ygy5g672jc",
-                          "w7ygy5gket7s",
-                          "w7ygy5gw764v"
-                        ],
-                        "3": [
-                          "w7ygy5cy50yz",
-                          "w7ygy5drfqyb",
-                          "w7ygyh4754sh",
-                          "w7ygyhh3vks7",
-                          "w7ygyhhehbz9"
-                        ]
-                      }
-                    },
-                    {
-                      "key": "低温阴雨",
-                      "obj": {
-                        "1": [],
-                        "2": [],
-                        "3": []
-                      }
-                    }
-                  ],
-                  "geoHashSampleStat": [
-                    {
-                      "key": "异常落果",
-                      "obj": {
-                        "1": 0,
-                        "2": 0,
-                        "3": 0
-                      }
-                    }
-                  ],
-                  "imageTitle": [
-                    {
-                      "key": "异常落果",
-                      "val": "异常落果风险分布图"
-                    },
-                    {
-                      "key": "低温阴雨",
-                      "val": "低温阴雨风险分布图"
-                    }
-                  ]
-                }
-              }
-            ],
-            "extData": null,
-            "success": true
-          })
-        }//荔枝先生
-        if(p.farmId === 91702){
-          resolve({
-            "code": 0,
-            "msg": "success",
-            "data": [
-              {
-                "key": "生态指标",
-                "obj": {
-                  "extData": [],
-                  "legendList": [
-                    {
-                      "key": "通风率",
-                      "list": [
-                        {
-                          "color": "#DDDDDD",
-                          "label": "通风<70%",
-                          "name": "通风一般",
-                          "range": [
-                            0,
-                            70
-                          ],
-                          "val": "1"
-                        },
-                        {
-                          "color": "#B3FF76",
-                          "label": "通风70%-85%",
-                          "name": "通风良好",
-                          "range": [
-                            70,
-                            85
-                          ],
-                          "val": "2"
-                        },
-                        {
-                          "color": "#1CBD00",
-                          "label": "通风85%-100%",
-                          "name": "通风优秀",
-                          "range": [
-                            85,
-                            101
-                          ],
-                          "val": "3"
-                        }
-                      ]
-                    },
-                    {
-                      "key": "透光率",
-                      "list": [
-                        {
-                          "color": "#A4D36D",
-                          "label": "透光<70%",
-                          "name": "透光一般",
-                          "range": [
-                            0,
-                            10
-                          ],
-                          "val": "1"
-                        },
-                        {
-                          "color": "#5CBF43",
-                          "label": "透光70%-85%",
-                          "name": "透光良好",
-                          "range": [
-                            10,
-                            85
-                          ],
-                          "val": "2"
-                        },
-                        {
-                          "color": "#1A7C12",
-                          "label": "透光85%-100%",
-                          "name": "透光优秀",
-                          "range": [
-                            85,
-                            101
-                          ],
-                          "val": "3"
-                        }
-                      ]
-                    }
-                  ],
-                  "titleList": [
-                    "通风率",
-                    "透光率"
-                  ],
-                  "list1": [
-                    {
-                      "key": "通风率",
-                      "val": 61
-                    },
-                    {
-                      "key": "透光率",
-                      "val": 54
-                    }
-                  ],
-                  "text": "当前分区内38.17%的树体通风不畅,45.7%的树体透光性较差,可能造成整体减产6.9%,需要及时执行剪枝农事。",
-                  "list2": [
-                    {
-                      "key": "通风率",
-                      "val": "通风率体现树体之间的间隙以及自身郁闭程度,当前38.17%的树体通风不畅,可能造成整体减产3.09%,需立即执行剪枝农事;61.83%的树体通风正常,建议继续保持现有管理措施并及时巡园,如发现通风不畅的树体,需及时评估是否需要执行剪枝农事。"
-                    },
-                    {
-                      "key": "透光率",
-                      "val": "透光率体现树体自身郁闭程度,当前45.7%的树体透光性较差,可能造成整体减产3.81%,需立即执行剪枝农事;54.3%的树体透光正常,建议继续保持现有管理措施并及时巡园,如发现透光性较差的树体,需及时评估是否需要执行剪枝农事。"
-                    }
-                  ],
-                  "list3": [],
-                  "blueZoneList": [],
-                  "geoHashSampleList": [
-                    {
-                      "key": "通风率",
-                      "obj": {
-                        "1": [
-                          "w7ygy5ce9sur",
-                          "w7ygy5cgrzsj",
-                          "w7ygy5ctcst9",
-                          "w7ygy5drfqyb",
-                          "w7ygy5dymh0f",
-                          "w7ygy5dztt0v",
-                          "w7ygy5em6f1u",
-                          "w7ygy5en3c8s",
-                          "w7ygy5eq42zp",
-                          "w7ygy5esh7k4",
-                          "w7ygy5ev1f0u",
-                          "w7ygy5f7du6d",
-                          "w7ygy5f852k5",
-                          "w7ygy5fc08e6",
-                          "w7ygy5ff5mvm",
-                          "w7ygy5fg2x5e",
-                          "w7ygy5fhfcxd",
-                          "w7ygy5fjzzzj",
-                          "w7ygy5fsu1dd",
-                          "w7ygy5fzjdks",
-                          "w7ygy5g13808",
-                          "w7ygy5g46zmr",
-                          "w7ygy5g5k8re",
-                          "w7ygy5g7kuhh",
-                          "w7ygy5gbumzu",
-                          "w7ygy5gf36xy",
-                          "w7ygy5ggs4ky",
-                          "w7ygy5gmgrtu",
-                          "w7ygy5gn4pfk",
-                          "w7ygy5gp6xm3",
-                          "w7ygy5gu7x6h",
-                          "w7ygy5gw764v",
-                          "w7ygy5gxd7bw",
-                          "w7ygy5s5gppd",
-                          "w7ygy5sxv5wf",
-                          "w7ygy5szgsqe",
-                          "w7ygy5u656gh",
-                          "w7ygy5u7dsp5",
-                          "w7ygy5u8gp1r",
-                          "w7ygy5ugs7pp",
-                          "w7ygy5uheu0v",
-                          "w7ygy5uktp6b",
-                          "w7ygy5ur5vhm",
-                          "w7ygy5uuynjz",
-                          "w7ygy5ux7s0p",
-                          "w7ygy5v0gtes",
-                          "w7ygy5vhuh62",
-                          "w7ygy5vjumh7",
-                          "w7ygy5vp672m",
-                          "w7ygyh1c9877",
-                          "w7ygyh402wmc",
-                          "w7ygyh460tkk",
-                          "w7ygyh4bkh50",
-                          "w7ygyh4d5bsx",
-                          "w7ygyh4ffcpq",
-                          "w7ygyh50k5c0",
-                          "w7ygyh58s13e",
-                          "w7ygyh59v6be",
-                          "w7ygyh5k7fxd",
-                          "w7ygyh5v7pff",
-                          "w7ygyhh2mk21",
-                          "w7ygyhh3vks7",
-                          "w7ygyhh5juvv",
-                          "w7ygyhh75g0j",
-                          "w7ygyhhehbz9",
-                          "w7ygyhhf5bbe",
-                          "w7ygyhhke4fq",
-                          "w7ygyhhpud5z",
-                          "w7ygyhhsmw39",
-                          "w7ygyhhthp0j",
-                          "w7ygyhhu7vy0"
-                        ],
-                        "2": [
-                          "w7ygy5c9pbvf",
-                          "w7ygy5cd6mjn",
-                          "w7ygy5cf17hf",
-                          "w7ygy5cy50yz",
-                          "w7ygy5ekjt2w",
-                          "w7ygy5epdt6w",
-                          "w7ygy5erg3xy",
-                          "w7ygy5etjy7g",
-                          "w7ygy5euj7kf",
-                          "w7ygy5eyh5yg",
-                          "w7ygy5ezvzfd",
-                          "w7ygy5f1bxtw",
-                          "w7ygy5f2cqgy",
-                          "w7ygy5f669rn",
-                          "w7ygy5fe3r42",
-                          "w7ygy5fjgqd4",
-                          "w7ygy5fkc097",
-                          "w7ygy5fr4vm3",
-                          "w7ygy5fusn4u",
-                          "w7ygy5fy19fb",
-                          "w7ygy5g352gd",
-                          "w7ygy5g672jc",
-                          "w7ygy5g8fmq7",
-                          "w7ygy5gd4627",
-                          "w7ygy5ghdy3s",
-                          "w7ygy5gket7s",
-                          "w7ygy5gr4evz",
-                          "w7ygy5s7gnwv",
-                          "w7ygy5skvprx",
-                          "w7ygy5sn696u",
-                          "w7ygy5sthmmr",
-                          "w7ygy5tpv3cp",
-                          "w7ygy5u2fufb",
-                          "w7ygy5u5s92y",
-                          "w7ygy5ubdh8f",
-                          "w7ygy5ufd74c",
-                          "w7ygy5umff7y",
-                          "w7ygy5un459k",
-                          "w7ygy5upm8jz",
-                          "w7ygy5usuux6",
-                          "w7ygy5uvuwvr",
-                          "w7ygy5uzk7nt",
-                          "w7ygy5v4m7df",
-                          "w7ygy5v5tc5p",
-                          "w7ygyh199jr8",
-                          "w7ygyh1dgjf5",
-                          "w7ygyh1g6j6t",
-                          "w7ygyh41gh6w",
-                          "w7ygyh44cv5y",
-                          "w7ygyh4dcchy",
-                          "w7ygyh529bgy",
-                          "w7ygyh53t4zu",
-                          "w7ygyh5458be",
-                          "w7ygyh554cjc",
-                          "w7ygyh5b7567",
-                          "w7ygyh5csw04",
-                          "w7ygyh5dfh89",
-                          "w7ygyh5ghrdf",
-                          "w7ygyh5s79bj",
-                          "w7ygyh5u7g4p",
-                          "w7ygyh5yy14p",
-                          "w7ygyh5zfcuy",
-                          "w7ygyhh0eb2j",
-                          "w7ygyhhbdsn8",
-                          "w7ygyhhd5bvx",
-                          "w7ygyhhh5kqn",
-                          "w7ygyhhqe7p5",
-                          "w7ygyhj0e6y9"
-                        ],
-                        "3": [
-                          "w7ygy5cg91c8",
-                          "w7ygy5cr7548",
-                          "w7ygy5csfxgm",
-                          "w7ygy5cubf49",
-                          "w7ygy5cx98hf",
-                          "w7ygy5cz6wd5",
-                          "w7ygy5dp3hwv",
-                          "w7ygy5ef6ttd",
-                          "w7ygy5f103h7",
-                          "w7ygy5f91e7x",
-                          "w7ygy5fd4vqk",
-                          "w7ygy5fp4mp3",
-                          "w7ygy5fw30rt",
-                          "w7ygy5fx0yeu",
-                          "w7ygy5ge6bjr",
-                          "w7ygy5gsdc78",
-                          "w7ygy5gyhm0p",
-                          "w7ygy5gzd8p4",
-                          "w7ygy5sjjdy6",
-                          "w7ygy5spwrr6",
-                          "w7ygy5sqk0wb",
-                          "w7ygy5srvd90",
-                          "w7ygy5sw3xrk",
-                          "w7ygy5sye1kb",
-                          "w7ygy5u0f5z0",
-                          "w7ygy5u475y8",
-                          "w7ygy5ud63fd",
-                          "w7ygy5uetkqq",
-                          "w7ygy5uw5wh3",
-                          "w7ygyh12u6xv",
-                          "w7ygyh12x9mr",
-                          "w7ygyh164fj1",
-                          "w7ygyh17k25x",
-                          "w7ygyh1b99mz",
-                          "w7ygyh4234zn",
-                          "w7ygyh4754sh",
-                          "w7ygyh483mzs",
-                          "w7ygyh4cf3zj",
-                          "w7ygyh57jhd0",
-                          "w7ygyh5tt48h",
-                          "w7ygyhh1us9e",
-                          "w7ygyhh8ubb1",
-                          "w7ygyhhfu324",
-                          "w7ygyhhjg6x5",
-                          "w7ygyhhmsqr5",
-                          "w7ygyhhnex2x",
-                          "w7ygyhhremk3"
-                        ]
-                      }
-                    },
-                    {
-                      "key": "透光率",
-                      "obj": {
-                        "1": [],
-                        "2": [
-                          "w7ygy5cd6mjn",
-                          "w7ygy5cf17hf",
-                          "w7ygy5cgrzsj",
-                          "w7ygy5ctcst9",
-                          "w7ygy5dp3hwv",
-                          "w7ygy5drfqyb",
-                          "w7ygy5dymh0f",
-                          "w7ygy5dztt0v",
-                          "w7ygy5ekjt2w",
-                          "w7ygy5em6f1u",
-                          "w7ygy5en3c8s",
-                          "w7ygy5epdt6w",
-                          "w7ygy5eq42zp",
-                          "w7ygy5erg3xy",
-                          "w7ygy5esh7k4",
-                          "w7ygy5etjy7g",
-                          "w7ygy5ev1f0u",
-                          "w7ygy5ezvzfd",
-                          "w7ygy5f103h7",
-                          "w7ygy5f1bxtw",
-                          "w7ygy5f2cqgy",
-                          "w7ygy5f669rn",
-                          "w7ygy5f7du6d",
-                          "w7ygy5f91e7x",
-                          "w7ygy5fd4vqk",
-                          "w7ygy5fe3r42",
-                          "w7ygy5ff5mvm",
-                          "w7ygy5fg2x5e",
-                          "w7ygy5fhfcxd",
-                          "w7ygy5fjgqd4",
-                          "w7ygy5fjzzzj",
-                          "w7ygy5fkc097",
-                          "w7ygy5fsu1dd",
-                          "w7ygy5fw30rt",
-                          "w7ygy5fx0yeu",
-                          "w7ygy5fy19fb",
-                          "w7ygy5fzjdks",
-                          "w7ygy5g13808",
-                          "w7ygy5g352gd",
-                          "w7ygy5g46zmr",
-                          "w7ygy5g5k8re",
-                          "w7ygy5g672jc",
-                          "w7ygy5g8fmq7",
-                          "w7ygy5gbumzu",
-                          "w7ygy5ge6bjr",
-                          "w7ygy5gf36xy",
-                          "w7ygy5ggs4ky",
-                          "w7ygy5ghdy3s",
-                          "w7ygy5gket7s",
-                          "w7ygy5gmgrtu",
-                          "w7ygy5gn4pfk",
-                          "w7ygy5gp6xm3",
-                          "w7ygy5gr4evz",
-                          "w7ygy5gu7x6h",
-                          "w7ygy5gw764v",
-                          "w7ygy5gxd7bw",
-                          "w7ygy5gyhm0p",
-                          "w7ygy5gzd8p4",
-                          "w7ygy5s5gppd",
-                          "w7ygy5s7gnwv",
-                          "w7ygy5sjjdy6",
-                          "w7ygy5skvprx",
-                          "w7ygy5sn696u",
-                          "w7ygy5spwrr6",
-                          "w7ygy5sqk0wb",
-                          "w7ygy5srvd90",
-                          "w7ygy5sthmmr",
-                          "w7ygy5sw3xrk",
-                          "w7ygy5sxv5wf",
-                          "w7ygy5szgsqe",
-                          "w7ygy5tpv3cp",
-                          "w7ygy5u0f5z0",
-                          "w7ygy5u475y8",
-                          "w7ygy5u5s92y",
-                          "w7ygy5u656gh",
-                          "w7ygy5u8gp1r",
-                          "w7ygy5ubdh8f",
-                          "w7ygy5ud63fd",
-                          "w7ygy5uetkqq",
-                          "w7ygy5ufd74c",
-                          "w7ygy5ugs7pp",
-                          "w7ygy5uheu0v",
-                          "w7ygy5un459k",
-                          "w7ygy5upm8jz",
-                          "w7ygy5ur5vhm",
-                          "w7ygy5usuux6",
-                          "w7ygy5uuynjz",
-                          "w7ygy5uvuwvr",
-                          "w7ygy5uw5wh3",
-                          "w7ygy5ux7s0p",
-                          "w7ygy5uzk7nt",
-                          "w7ygy5v0gtes",
-                          "w7ygy5v4m7df",
-                          "w7ygy5v5tc5p",
-                          "w7ygy5vhuh62",
-                          "w7ygy5vp672m",
-                          "w7ygyh12x9mr",
-                          "w7ygyh199jr8",
-                          "w7ygyh1c9877",
-                          "w7ygyh1dgjf5",
-                          "w7ygyh1g6j6t",
-                          "w7ygyh402wmc",
-                          "w7ygyh41gh6w",
-                          "w7ygyh4234zn",
-                          "w7ygyh44cv5y",
-                          "w7ygyh460tkk",
-                          "w7ygyh4754sh",
-                          "w7ygyh483mzs",
-                          "w7ygyh4cf3zj",
-                          "w7ygyh4d5bsx",
-                          "w7ygyh4dcchy",
-                          "w7ygyh4ffcpq",
-                          "w7ygyh50k5c0",
-                          "w7ygyh529bgy",
-                          "w7ygyh53t4zu",
-                          "w7ygyh5458be",
-                          "w7ygyh554cjc",
-                          "w7ygyh57jhd0",
-                          "w7ygyh58s13e",
-                          "w7ygyh59v6be",
-                          "w7ygyh5b7567",
-                          "w7ygyh5csw04",
-                          "w7ygyh5dfh89",
-                          "w7ygyh5ghrdf",
-                          "w7ygyh5k7fxd",
-                          "w7ygyh5s79bj",
-                          "w7ygyh5tt48h",
-                          "w7ygyh5u7g4p",
-                          "w7ygyh5v7pff",
-                          "w7ygyh5yy14p",
-                          "w7ygyhh0eb2j",
-                          "w7ygyhh1us9e",
-                          "w7ygyhh2mk21",
-                          "w7ygyhh3vks7",
-                          "w7ygyhh5juvv",
-                          "w7ygyhh75g0j",
-                          "w7ygyhhbdsn8",
-                          "w7ygyhhd5bvx",
-                          "w7ygyhhehbz9",
-                          "w7ygyhhf5bbe",
-                          "w7ygyhhfu324",
-                          "w7ygyhhh5kqn",
-                          "w7ygyhhke4fq",
-                          "w7ygyhhmsqr5",
-                          "w7ygyhhpud5z",
-                          "w7ygyhhqe7p5",
-                          "w7ygyhhremk3",
-                          "w7ygyhhsmw39",
-                          "w7ygyhhthp0j",
-                          "w7ygyhhu7vy0",
-                          "w7ygyhj0e6y9"
-                        ],
-                        "3": [
-                          "w7ygy5c9pbvf",
-                          "w7ygy5ce9sur",
-                          "w7ygy5cg91c8",
-                          "w7ygy5cr7548",
-                          "w7ygy5csfxgm",
-                          "w7ygy5cubf49",
-                          "w7ygy5cx98hf",
-                          "w7ygy5cy50yz",
-                          "w7ygy5cz6wd5",
-                          "w7ygy5ef6ttd",
-                          "w7ygy5euj7kf",
-                          "w7ygy5eyh5yg",
-                          "w7ygy5f852k5",
-                          "w7ygy5fc08e6",
-                          "w7ygy5fp4mp3",
-                          "w7ygy5fr4vm3",
-                          "w7ygy5fusn4u",
-                          "w7ygy5g7kuhh",
-                          "w7ygy5gd4627",
-                          "w7ygy5gsdc78",
-                          "w7ygy5sye1kb",
-                          "w7ygy5u2fufb",
-                          "w7ygy5u7dsp5",
-                          "w7ygy5uktp6b",
-                          "w7ygy5umff7y",
-                          "w7ygy5vjumh7",
-                          "w7ygyh12u6xv",
-                          "w7ygyh164fj1",
-                          "w7ygyh17k25x",
-                          "w7ygyh1b99mz",
-                          "w7ygyh4bkh50",
-                          "w7ygyh5zfcuy",
-                          "w7ygyhh8ubb1",
-                          "w7ygyhhjg6x5",
-                          "w7ygyhhnex2x"
-                        ]
-                      }
-                    }
-                  ],
-                  "geoHashSampleStat": [
-                    {
-                      "key": "通风率",
-                      "obj": {
-                        "1": 8,
-                        "2": 19,
-                        "3": 1239
-                      }
-                    },
-                    {
-                      "key": "透光率",
-                      "obj": {
-                        "1": 0,
-                        "2": 151,
-                        "3": 35
-                      }
-                    }
-                  ],
-                  "imageTitle": [
-                    {
-                      "key": "通风率",
-                      "val": "单树通风率"
-                    },
-                    {
-                      "key": "透光率",
-                      "val": "单树透光率"
-                    }
-                  ]
-                }
-              },
-              {
-                "key": "病虫指标",
-                "obj": {
-                  "extData": [],
-                  "legendList": [
-                    {
-                      "key": "啃食性虫害",
-                      "list": [
-                        {
-                          "color": "#DDDDDD",
-                          "label": "无",
-                          "name": "正常",
-                          "range": [
-                            0,
-                            0
-                          ],
-                          "val": "1"
-                        },
-                        {
-                          "color": "#FFAF73",
-                          "label": "60%-80%",
-                          "name": "高危",
-                          "range": [
-                            0,
-                            5
-                          ],
-                          "val": "2"
-                        },
-                        {
-                          "color": "#FF6D00",
-                          "label": "大于10%",
-                          "name": "严重",
-                          "range": [
-                            5,
-                            101
-                          ],
-                          "val": "3"
-                        }
-                      ]
-                    },
-                    {
-                      "key": "刺吸式虫害",
-                      "list": [
-                        {
-                          "color": "#DDDDDD",
-                          "label": "无",
-                          "name": "正常",
-                          "range": [
-                            0,
-                            0
-                          ],
-                          "val": "1"
-                        },
-                        {
-                          "color": "#FFAF73",
-                          "label": "60%-80%",
-                          "name": "高危",
-                          "range": [
-                            0,
-                            5
-                          ],
-                          "val": "2"
-                        },
-                        {
-                          "color": "#FF6D00",
-                          "label": "大于10%",
-                          "name": "严重",
-                          "range": [
-                            5,
-                            101
-                          ],
-                          "val": "3"
-                        }
-                      ]
-                    },
-                    {
-                      "key": "叶瘿蚊",
-                      "list": [
-                        {
-                          "color": "#DDDDDD",
-                          "label": "无",
-                          "name": "正常",
-                          "range": [
-                            0,
-                            0
-                          ],
-                          "val": "1"
-                        },
-                        {
-                          "color": "#FFAF73",
-                          "label": "60%-80%",
-                          "name": "高危",
-                          "range": [
-                            0,
-                            5
-                          ],
-                          "val": "2"
-                        },
-                        {
-                          "color": "#FF6D00",
-                          "label": "大于10%",
-                          "name": "严重",
-                          "range": [
-                            5,
-                            101
-                          ],
-                          "val": "3"
-                        }
-                      ]
-                    }
-                  ],
-                  "titleList": [
-                    "啃食性虫害",
-                    "刺吸式虫害"
-                  ],
-                  "list1": [
-                    {
-                      "key": "啃食性虫害",
-                      "val": 0
-                    },
-                    {
-                      "key": "刺吸式虫害",
-                      "val": 0
-                    }
-                  ],
-                  "text": "生产树中,9.14%的树体感染了病虫害,较七天前无变化,有进一步蔓延风险,可能导致整体减产0.21%,因此需及时执行农事,避免病虫害进一步扩散,影响产量。",
-                  "list2": [
-                    {
-                      "key": "啃食性虫害",
-                      "val": "生产树中,0%的树体感染了啃食性虫害,近期需密切关注啃食性虫害情况,做好预防工作。"
-                    },
-                    {
-                      "key": "刺吸式虫害",
-                      "val": "生产树中,0%的树体感染了刺吸式虫害,近期需密切关注啃食性虫害情况,做好预防工作。"
-                    }
-                  ],
-                  "list3": [],
-                  "blueZoneList": [],
-                  "geoHashSampleList": [
-                    {
-                      "key": "啃食性虫害",
-                      "obj": {
-                        "1": [],
-                        "2": [
-                          "w7ygy5cx98hf"
-                        ],
-                        "3": []
-                      }
-                    },
-                    {
-                      "key": "刺吸式虫害",
-                      "obj": {
-                        "1": [],
-                        "2": [
-                          "w7ygy5cubf49",
-                          "w7ygy5ezvzfd",
-                          "w7ygy5fzjdks",
-                          "w7ygyhh2mk21"
-                        ],
-                        "3": []
-                      }
-                    }
-                  ],
-                  "geoHashSampleStat": [
-                    {
-                      "key": "啃食性虫害",
-                      "obj": {
-                        "1": 0,
-                        "2": 0,
-                        "3": 0
-                      }
-                    },
-                    {
-                      "key": "刺吸式虫害",
-                      "obj": {
-                        "1": 0,
-                        "2": 0,
-                        "3": 0
-                      }
-                    }
-                  ],
-                  "imageTitle": [
-                    {
-                      "key": "啃食性虫害",
-                      "val": "啃食性虫害分布图"
-                    },
-                    {
-                      "key": "刺吸式虫害",
-                      "val": "刺吸式虫害分布图"
-                    },
-                    {
-                      "key": "叶瘿蚊",
-                      "val": "叶瘿蚊分布图"
-                    }
-                  ]
-                }
-              },
-              {
-                "key": "生长指标",
-                "obj": {
-                  "extData": [],
-                  "legendList": [
-                    {
-                      "key": "异常落果",
-                      "list": [
-                        {
-                          "color": "#FFFFE0",
-                          "label": "0%-20%",
-                          "name": "一级",
-                          "range": [],
-                          "val": "1"
-                        },
-                        {
-                          "color": "#FFA500",
-                          "label": "20%-50%",
-                          "name": "二级",
-                          "range": [],
-                          "val": "2"
-                        },
-                        {
-                          "color": "#FF4500",
-                          "label": "50%以上",
-                          "name": "三级",
-                          "range": [],
-                          "val": "3"
-                        }
-                      ]
-                    },
-                    {
-                      "key": "低温阴雨",
-                      "list": [
-                        {
-                          "color": "#FFFFE0",
-                          "label": "0%-20%",
-                          "name": "异常区域",
-                          "range": [],
-                          "val": "1"
-                        },
-                        {
-                          "color": "#FFA500",
-                          "label": "20%-50%",
-                          "name": "高危区域",
-                          "range": [],
-                          "val": "2"
-                        },
-                        {
-                          "color": "#FF4500",
-                          "label": "50%以上",
-                          "name": "严重区域",
-                          "range": [],
-                          "val": "3"
-                        }
-                      ]
-                    }
-                  ],
-                  "titleList": [
-                    "异常落果",
-                    "干热风险",
-                    "低温阴雨"
-                  ],
-                  "list1": [
-                    {
-                      "key": "异常落果",
-                      "val": 8
-                    },
-                    {
-                      "key": "干热风险",
-                      "val": 78
-                    },
-                    {
-                      "key": "低温阴雨",
-                      "val": 90
-                    }
-                  ],
-                  "text": "当前果园生产树体中,发现树体异常落果、低温阴雨、干热风险等异常,依据历史农情数据测算,当前异常可能导致产量减少2.0%,需及时采取疏花、摇花、喷水灌水农事。",
-                  "list2": [
-                    {
-                      "key": "异常落果",
-                      "val": "处于小果期的树体中,0%异常落果,生长状态良好。"
-                    },
-                    {
-                      "key": "低温阴雨",
-                      "val": "未来7天,处于扬花期树体中90.0%的区域将出现低温阴雨风险4级,低温阴雨导致柱头受精不充分,影响后期坐果,需要雨后抢晴处理,可人工摇花或无人机吹花,防止沤花导致病菌滋生,同时帮助授粉,为后期保果打下良好基础。"
-                    }
-                  ],
-                  "list3": [],
-                  "blueZoneList": [],
-                  "geoHashSampleList": [
-                    {
-                      "key": "异常落果",
-                      "obj": {
-                        "1": [
-                          "w7ygy5gsdc78"
-                        ],
-                        "2": [
-                          "w7ygy5en3c8s",
-                          "w7ygy5epdt6w",
-                          "w7ygy5euj7kf",
-                          "w7ygy5fhfcxd",
-                          "w7ygy5g5k8re",
-                          "w7ygy5g672jc",
-                          "w7ygy5gket7s",
-                          "w7ygy5gw764v"
-                        ],
-                        "3": [
-                          "w7ygy5cy50yz",
-                          "w7ygy5drfqyb",
-                          "w7ygyh4754sh",
-                          "w7ygyhh3vks7",
-                          "w7ygyhhehbz9"
-                        ]
-                      }
-                    },
-                    {
-                      "key": "低温阴雨",
-                      "obj": {
-                        "1": [],
-                        "2": [],
-                        "3": []
-                      }
-                    }
-                  ],
-                  "geoHashSampleStat": [
-                    {
-                      "key": "异常落果",
-                      "obj": {
-                        "1": 0,
-                        "2": 0,
-                        "3": 0
-                      }
-                    }
-                  ],
-                  "imageTitle": [
-                    {
-                      "key": "异常落果",
-                      "val": "异常落果风险分布图"
-                    },
-                    {
-                      "key": "低温阴雨",
-                      "val": "低温阴雨风险分布图"
-                    }
-                  ]
-                }
-              }
-            ],
-            "extData": null,
-            "success": true
-          })
-        }//荔枝先生
-        if(p.farmId === 766){
-          resolve({
-            "code": 0,
-            "msg": "success",
-            "data": [
-              {
-                "key": "生态指标",
-                "obj": {
-                  "extData": [],
-                  "legendList": [
-                    {
-                      "key": "通风率",
-                      "list": [
-                        {
-                          "color": "#DDDDDD",
-                          "label": "通风<70%",
-                          "name": "通风一般",
-                          "range": [
-                            0,
-                            70
-                          ],
-                          "val": "1"
-                        },
-                        {
-                          "color": "#B3FF76",
-                          "label": "通风70%-85%",
-                          "name": "通风良好",
-                          "range": [
-                            70,
-                            85
-                          ],
-                          "val": "2"
-                        },
-                        {
-                          "color": "#1CBD00",
-                          "label": "通风85%-100%",
-                          "name": "通风优秀",
-                          "range": [
-                            85,
-                            101
-                          ],
-                          "val": "3"
-                        }
-                      ]
-                    },
-                    {
-                      "key": "透光率",
-                      "list": [
-                        {
-                          "color": "#A4D36D",
-                          "label": "透光<70%",
-                          "name": "透光一般",
-                          "range": [
-                            0,
-                            10
-                          ],
-                          "val": "1"
-                        },
-                        {
-                          "color": "#5CBF43",
-                          "label": "透光70%-85%",
-                          "name": "透光良好",
-                          "range": [
-                            10,
-                            85
-                          ],
-                          "val": "2"
-                        },
-                        {
-                          "color": "#1A7C12",
-                          "label": "透光85%-100%",
-                          "name": "透光优秀",
-                          "range": [
-                            85,
-                            101
-                          ],
-                          "val": "3"
-                        }
-                      ]
-                    }
-                  ],
-                  "titleList": [
-                    "通风率",
-                    "透光率"
-                  ],
-                  "list1": [
-                    {
-                      "key": "通风率",
-                      "val": 61
-                    },
-                    {
-                      "key": "透光率",
-                      "val": 54
-                    }
-                  ],
-                  "text": "当前分区内38.17%的树体通风不畅,45.7%的树体透光性较差,可能造成整体减产6.9%,需要及时执行剪枝农事。",
-                  "list2": [
-                    {
-                      "key": "通风率",
-                      "val": "通风率体现树体之间的间隙以及自身郁闭程度,当前38.17%的树体通风不畅,可能造成整体减产3.09%,需立即执行剪枝农事;61.83%的树体通风正常,建议继续保持现有管理措施并及时巡园,如发现通风不畅的树体,需及时评估是否需要执行剪枝农事。"
-                    },
-                    {
-                      "key": "透光率",
-                      "val": "透光率体现树体自身郁闭程度,当前45.7%的树体透光性较差,可能造成整体减产3.81%,需立即执行剪枝农事;54.3%的树体透光正常,建议继续保持现有管理措施并及时巡园,如发现透光性较差的树体,需及时评估是否需要执行剪枝农事。"
-                    }
-                  ],
-                  "list3": [],
-                  "blueZoneList": [],
-                  "geoHashSampleList": [
-                    {
-                      "key": "通风率",
-                      "obj": {
-                        "1": [
-                          "w7ygy5ce9sur",
-                          "w7ygy5cgrzsj",
-                          "w7ygy5ctcst9",
-                          "w7ygy5drfqyb",
-                          "w7ygy5dymh0f",
-                          "w7ygy5dztt0v",
-                          "w7ygy5em6f1u",
-                          "w7ygy5en3c8s",
-                          "w7ygy5eq42zp",
-                          "w7ygy5esh7k4",
-                          "w7ygy5ev1f0u",
-                          "w7ygy5f7du6d",
-                          "w7ygy5f852k5",
-                          "w7ygy5fc08e6",
-                          "w7ygy5ff5mvm",
-                          "w7ygy5fg2x5e",
-                          "w7ygy5fhfcxd",
-                          "w7ygy5fjzzzj",
-                          "w7ygy5fsu1dd",
-                          "w7ygy5fzjdks",
-                          "w7ygy5g13808",
-                          "w7ygy5g46zmr",
-                          "w7ygy5g5k8re",
-                          "w7ygy5g7kuhh",
-                          "w7ygy5gbumzu",
-                          "w7ygy5gf36xy",
-                          "w7ygy5ggs4ky",
-                          "w7ygy5gmgrtu",
-                          "w7ygy5gn4pfk",
-                          "w7ygy5gp6xm3",
-                          "w7ygy5gu7x6h",
-                          "w7ygy5gw764v",
-                          "w7ygy5gxd7bw",
-                          "w7ygy5s5gppd",
-                          "w7ygy5sxv5wf",
-                          "w7ygy5szgsqe",
-                          "w7ygy5u656gh",
-                          "w7ygy5u7dsp5",
-                          "w7ygy5u8gp1r",
-                          "w7ygy5ugs7pp",
-                          "w7ygy5uheu0v",
-                          "w7ygy5uktp6b",
-                          "w7ygy5ur5vhm",
-                          "w7ygy5uuynjz",
-                          "w7ygy5ux7s0p",
-                          "w7ygy5v0gtes",
-                          "w7ygy5vhuh62",
-                          "w7ygy5vjumh7",
-                          "w7ygy5vp672m",
-                          "w7ygyh1c9877",
-                          "w7ygyh402wmc",
-                          "w7ygyh460tkk",
-                          "w7ygyh4bkh50",
-                          "w7ygyh4d5bsx",
-                          "w7ygyh4ffcpq",
-                          "w7ygyh50k5c0",
-                          "w7ygyh58s13e",
-                          "w7ygyh59v6be",
-                          "w7ygyh5k7fxd",
-                          "w7ygyh5v7pff",
-                          "w7ygyhh2mk21",
-                          "w7ygyhh3vks7",
-                          "w7ygyhh5juvv",
-                          "w7ygyhh75g0j",
-                          "w7ygyhhehbz9",
-                          "w7ygyhhf5bbe",
-                          "w7ygyhhke4fq",
-                          "w7ygyhhpud5z",
-                          "w7ygyhhsmw39",
-                          "w7ygyhhthp0j",
-                          "w7ygyhhu7vy0"
-                        ],
-                        "2": [
-                          "w7ygy5c9pbvf",
-                          "w7ygy5cd6mjn",
-                          "w7ygy5cf17hf",
-                          "w7ygy5cy50yz",
-                          "w7ygy5ekjt2w",
-                          "w7ygy5epdt6w",
-                          "w7ygy5erg3xy",
-                          "w7ygy5etjy7g",
-                          "w7ygy5euj7kf",
-                          "w7ygy5eyh5yg",
-                          "w7ygy5ezvzfd",
-                          "w7ygy5f1bxtw",
-                          "w7ygy5f2cqgy",
-                          "w7ygy5f669rn",
-                          "w7ygy5fe3r42",
-                          "w7ygy5fjgqd4",
-                          "w7ygy5fkc097",
-                          "w7ygy5fr4vm3",
-                          "w7ygy5fusn4u",
-                          "w7ygy5fy19fb",
-                          "w7ygy5g352gd",
-                          "w7ygy5g672jc",
-                          "w7ygy5g8fmq7",
-                          "w7ygy5gd4627",
-                          "w7ygy5ghdy3s",
-                          "w7ygy5gket7s",
-                          "w7ygy5gr4evz",
-                          "w7ygy5s7gnwv",
-                          "w7ygy5skvprx",
-                          "w7ygy5sn696u",
-                          "w7ygy5sthmmr",
-                          "w7ygy5tpv3cp",
-                          "w7ygy5u2fufb",
-                          "w7ygy5u5s92y",
-                          "w7ygy5ubdh8f",
-                          "w7ygy5ufd74c",
-                          "w7ygy5umff7y",
-                          "w7ygy5un459k",
-                          "w7ygy5upm8jz",
-                          "w7ygy5usuux6",
-                          "w7ygy5uvuwvr",
-                          "w7ygy5uzk7nt",
-                          "w7ygy5v4m7df",
-                          "w7ygy5v5tc5p",
-                          "w7ygyh199jr8",
-                          "w7ygyh1dgjf5",
-                          "w7ygyh1g6j6t",
-                          "w7ygyh41gh6w",
-                          "w7ygyh44cv5y",
-                          "w7ygyh4dcchy",
-                          "w7ygyh529bgy",
-                          "w7ygyh53t4zu",
-                          "w7ygyh5458be",
-                          "w7ygyh554cjc",
-                          "w7ygyh5b7567",
-                          "w7ygyh5csw04",
-                          "w7ygyh5dfh89",
-                          "w7ygyh5ghrdf",
-                          "w7ygyh5s79bj",
-                          "w7ygyh5u7g4p",
-                          "w7ygyh5yy14p",
-                          "w7ygyh5zfcuy",
-                          "w7ygyhh0eb2j",
-                          "w7ygyhhbdsn8",
-                          "w7ygyhhd5bvx",
-                          "w7ygyhhh5kqn",
-                          "w7ygyhhqe7p5",
-                          "w7ygyhj0e6y9"
-                        ],
-                        "3": [
-                          "w7ygy5cg91c8",
-                          "w7ygy5cr7548",
-                          "w7ygy5csfxgm",
-                          "w7ygy5cubf49",
-                          "w7ygy5cx98hf",
-                          "w7ygy5cz6wd5",
-                          "w7ygy5dp3hwv",
-                          "w7ygy5ef6ttd",
-                          "w7ygy5f103h7",
-                          "w7ygy5f91e7x",
-                          "w7ygy5fd4vqk",
-                          "w7ygy5fp4mp3",
-                          "w7ygy5fw30rt",
-                          "w7ygy5fx0yeu",
-                          "w7ygy5ge6bjr",
-                          "w7ygy5gsdc78",
-                          "w7ygy5gyhm0p",
-                          "w7ygy5gzd8p4",
-                          "w7ygy5sjjdy6",
-                          "w7ygy5spwrr6",
-                          "w7ygy5sqk0wb",
-                          "w7ygy5srvd90",
-                          "w7ygy5sw3xrk",
-                          "w7ygy5sye1kb",
-                          "w7ygy5u0f5z0",
-                          "w7ygy5u475y8",
-                          "w7ygy5ud63fd",
-                          "w7ygy5uetkqq",
-                          "w7ygy5uw5wh3",
-                          "w7ygyh12u6xv",
-                          "w7ygyh12x9mr",
-                          "w7ygyh164fj1",
-                          "w7ygyh17k25x",
-                          "w7ygyh1b99mz",
-                          "w7ygyh4234zn",
-                          "w7ygyh4754sh",
-                          "w7ygyh483mzs",
-                          "w7ygyh4cf3zj",
-                          "w7ygyh57jhd0",
-                          "w7ygyh5tt48h",
-                          "w7ygyhh1us9e",
-                          "w7ygyhh8ubb1",
-                          "w7ygyhhfu324",
-                          "w7ygyhhjg6x5",
-                          "w7ygyhhmsqr5",
-                          "w7ygyhhnex2x",
-                          "w7ygyhhremk3"
-                        ]
-                      }
-                    },
-                    {
-                      "key": "透光率",
-                      "obj": {
-                        "1": [],
-                        "2": [
-                          "w7ygy5cd6mjn",
-                          "w7ygy5cf17hf",
-                          "w7ygy5cgrzsj",
-                          "w7ygy5ctcst9",
-                          "w7ygy5dp3hwv",
-                          "w7ygy5drfqyb",
-                          "w7ygy5dymh0f",
-                          "w7ygy5dztt0v",
-                          "w7ygy5ekjt2w",
-                          "w7ygy5em6f1u",
-                          "w7ygy5en3c8s",
-                          "w7ygy5epdt6w",
-                          "w7ygy5eq42zp",
-                          "w7ygy5erg3xy",
-                          "w7ygy5esh7k4",
-                          "w7ygy5etjy7g",
-                          "w7ygy5ev1f0u",
-                          "w7ygy5ezvzfd",
-                          "w7ygy5f103h7",
-                          "w7ygy5f1bxtw",
-                          "w7ygy5f2cqgy",
-                          "w7ygy5f669rn",
-                          "w7ygy5f7du6d",
-                          "w7ygy5f91e7x",
-                          "w7ygy5fd4vqk",
-                          "w7ygy5fe3r42",
-                          "w7ygy5ff5mvm",
-                          "w7ygy5fg2x5e",
-                          "w7ygy5fhfcxd",
-                          "w7ygy5fjgqd4",
-                          "w7ygy5fjzzzj",
-                          "w7ygy5fkc097",
-                          "w7ygy5fsu1dd",
-                          "w7ygy5fw30rt",
-                          "w7ygy5fx0yeu",
-                          "w7ygy5fy19fb",
-                          "w7ygy5fzjdks",
-                          "w7ygy5g13808",
-                          "w7ygy5g352gd",
-                          "w7ygy5g46zmr",
-                          "w7ygy5g5k8re",
-                          "w7ygy5g672jc",
-                          "w7ygy5g8fmq7",
-                          "w7ygy5gbumzu",
-                          "w7ygy5ge6bjr",
-                          "w7ygy5gf36xy",
-                          "w7ygy5ggs4ky",
-                          "w7ygy5ghdy3s",
-                          "w7ygy5gket7s",
-                          "w7ygy5gmgrtu",
-                          "w7ygy5gn4pfk",
-                          "w7ygy5gp6xm3",
-                          "w7ygy5gr4evz",
-                          "w7ygy5gu7x6h",
-                          "w7ygy5gw764v",
-                          "w7ygy5gxd7bw",
-                          "w7ygy5gyhm0p",
-                          "w7ygy5gzd8p4",
-                          "w7ygy5s5gppd",
-                          "w7ygy5s7gnwv",
-                          "w7ygy5sjjdy6",
-                          "w7ygy5skvprx",
-                          "w7ygy5sn696u",
-                          "w7ygy5spwrr6",
-                          "w7ygy5sqk0wb",
-                          "w7ygy5srvd90",
-                          "w7ygy5sthmmr",
-                          "w7ygy5sw3xrk",
-                          "w7ygy5sxv5wf",
-                          "w7ygy5szgsqe",
-                          "w7ygy5tpv3cp",
-                          "w7ygy5u0f5z0",
-                          "w7ygy5u475y8",
-                          "w7ygy5u5s92y",
-                          "w7ygy5u656gh",
-                          "w7ygy5u8gp1r",
-                          "w7ygy5ubdh8f",
-                          "w7ygy5ud63fd",
-                          "w7ygy5uetkqq",
-                          "w7ygy5ufd74c",
-                          "w7ygy5ugs7pp",
-                          "w7ygy5uheu0v",
-                          "w7ygy5un459k",
-                          "w7ygy5upm8jz",
-                          "w7ygy5ur5vhm",
-                          "w7ygy5usuux6",
-                          "w7ygy5uuynjz",
-                          "w7ygy5uvuwvr",
-                          "w7ygy5uw5wh3",
-                          "w7ygy5ux7s0p",
-                          "w7ygy5uzk7nt",
-                          "w7ygy5v0gtes",
-                          "w7ygy5v4m7df",
-                          "w7ygy5v5tc5p",
-                          "w7ygy5vhuh62",
-                          "w7ygy5vp672m",
-                          "w7ygyh12x9mr",
-                          "w7ygyh199jr8",
-                          "w7ygyh1c9877",
-                          "w7ygyh1dgjf5",
-                          "w7ygyh1g6j6t",
-                          "w7ygyh402wmc",
-                          "w7ygyh41gh6w",
-                          "w7ygyh4234zn",
-                          "w7ygyh44cv5y",
-                          "w7ygyh460tkk",
-                          "w7ygyh4754sh",
-                          "w7ygyh483mzs",
-                          "w7ygyh4cf3zj",
-                          "w7ygyh4d5bsx",
-                          "w7ygyh4dcchy",
-                          "w7ygyh4ffcpq",
-                          "w7ygyh50k5c0",
-                          "w7ygyh529bgy",
-                          "w7ygyh53t4zu",
-                          "w7ygyh5458be",
-                          "w7ygyh554cjc",
-                          "w7ygyh57jhd0",
-                          "w7ygyh58s13e",
-                          "w7ygyh59v6be",
-                          "w7ygyh5b7567",
-                          "w7ygyh5csw04",
-                          "w7ygyh5dfh89",
-                          "w7ygyh5ghrdf",
-                          "w7ygyh5k7fxd",
-                          "w7ygyh5s79bj",
-                          "w7ygyh5tt48h",
-                          "w7ygyh5u7g4p",
-                          "w7ygyh5v7pff",
-                          "w7ygyh5yy14p",
-                          "w7ygyhh0eb2j",
-                          "w7ygyhh1us9e",
-                          "w7ygyhh2mk21",
-                          "w7ygyhh3vks7",
-                          "w7ygyhh5juvv",
-                          "w7ygyhh75g0j",
-                          "w7ygyhhbdsn8",
-                          "w7ygyhhd5bvx",
-                          "w7ygyhhehbz9",
-                          "w7ygyhhf5bbe",
-                          "w7ygyhhfu324",
-                          "w7ygyhhh5kqn",
-                          "w7ygyhhke4fq",
-                          "w7ygyhhmsqr5",
-                          "w7ygyhhpud5z",
-                          "w7ygyhhqe7p5",
-                          "w7ygyhhremk3",
-                          "w7ygyhhsmw39",
-                          "w7ygyhhthp0j",
-                          "w7ygyhhu7vy0",
-                          "w7ygyhj0e6y9"
-                        ],
-                        "3": [
-                          "w7ygy5c9pbvf",
-                          "w7ygy5ce9sur",
-                          "w7ygy5cg91c8",
-                          "w7ygy5cr7548",
-                          "w7ygy5csfxgm",
-                          "w7ygy5cubf49",
-                          "w7ygy5cx98hf",
-                          "w7ygy5cy50yz",
-                          "w7ygy5cz6wd5",
-                          "w7ygy5ef6ttd",
-                          "w7ygy5euj7kf",
-                          "w7ygy5eyh5yg",
-                          "w7ygy5f852k5",
-                          "w7ygy5fc08e6",
-                          "w7ygy5fp4mp3",
-                          "w7ygy5fr4vm3",
-                          "w7ygy5fusn4u",
-                          "w7ygy5g7kuhh",
-                          "w7ygy5gd4627",
-                          "w7ygy5gsdc78",
-                          "w7ygy5sye1kb",
-                          "w7ygy5u2fufb",
-                          "w7ygy5u7dsp5",
-                          "w7ygy5uktp6b",
-                          "w7ygy5umff7y",
-                          "w7ygy5vjumh7",
-                          "w7ygyh12u6xv",
-                          "w7ygyh164fj1",
-                          "w7ygyh17k25x",
-                          "w7ygyh1b99mz",
-                          "w7ygyh4bkh50",
-                          "w7ygyh5zfcuy",
-                          "w7ygyhh8ubb1",
-                          "w7ygyhhjg6x5",
-                          "w7ygyhhnex2x"
-                        ]
-                      }
-                    }
-                  ],
-                  "geoHashSampleStat": [
-                    {
-                      "key": "通风率",
-                      "obj": {
-                        "1": 20,
-                        "2": 68,
-                        "3": 47+51
-                      }
-                    },
-                    {
-                      "key": "透光率",
-                      "obj": {
-                        "1": 0,
-                        "2": 151,
-                        "3": 35
-                      }
-                    }
-                  ],
-                  "imageTitle": [
-                    {
-                      "key": "通风率",
-                      "val": "单树通风率"
-                    },
-                    {
-                      "key": "透光率",
-                      "val": "单树透光率"
-                    }
-                  ]
-                }
-              },
-              {
-                "key": "病虫指标",
-                "obj": {
-                  "extData": [],
-                  "legendList": [
-                    {
-                      "key": "啃食性虫害",
-                      "list": [
-                        {
-                          "color": "#DDDDDD",
-                          "label": "无",
-                          "name": "正常",
-                          "range": [
-                            0,
-                            0
-                          ],
-                          "val": "1"
-                        },
-                        {
-                          "color": "#FFAF73",
-                          "label": "60%-80%",
-                          "name": "高危",
-                          "range": [
-                            0,
-                            5
-                          ],
-                          "val": "2"
-                        },
-                        {
-                          "color": "#FF6D00",
-                          "label": "大于10%",
-                          "name": "严重",
-                          "range": [
-                            5,
-                            101
-                          ],
-                          "val": "3"
-                        }
-                      ]
-                    },
-                    {
-                      "key": "刺吸式虫害",
-                      "list": [
-                        {
-                          "color": "#DDDDDD",
-                          "label": "无",
-                          "name": "正常",
-                          "range": [
-                            0,
-                            0
-                          ],
-                          "val": "1"
-                        },
-                        {
-                          "color": "#FFAF73",
-                          "label": "60%-80%",
-                          "name": "高危",
-                          "range": [
-                            0,
-                            5
-                          ],
-                          "val": "2"
-                        },
-                        {
-                          "color": "#FF6D00",
-                          "label": "大于10%",
-                          "name": "严重",
-                          "range": [
-                            5,
-                            101
-                          ],
-                          "val": "3"
-                        }
-                      ]
-                    },
-                    {
-                      "key": "叶瘿蚊",
-                      "list": [
-                        {
-                          "color": "#DDDDDD",
-                          "label": "无",
-                          "name": "正常",
-                          "range": [
-                            0,
-                            0
-                          ],
-                          "val": "1"
-                        },
-                        {
-                          "color": "#FFAF73",
-                          "label": "60%-80%",
-                          "name": "高危",
-                          "range": [
-                            0,
-                            5
-                          ],
-                          "val": "2"
-                        },
-                        {
-                          "color": "#FF6D00",
-                          "label": "大于10%",
-                          "name": "严重",
-                          "range": [
-                            5,
-                            101
-                          ],
-                          "val": "3"
-                        }
-                      ]
-                    }
-                  ],
-                  "titleList": [
-                    "啃食性虫害",
-                    "刺吸式虫害"
-                  ],
-                  "list1": [
-                    {
-                      "key": "啃食性虫害",
-                      "val": 0
-                    },
-                    {
-                      "key": "刺吸式虫害",
-                      "val": 0
-                    }
-                  ],
-                  "text": "生产树中,9.14%的树体感染了病虫害,较七天前无变化,有进一步蔓延风险,可能导致整体减产0.21%,因此需及时执行农事,避免病虫害进一步扩散,影响产量。",
-                  "list2": [
-                    {
-                      "key": "啃食性虫害",
-                      "val": "生产树中,0%的树体感染了啃食性虫害,近期需密切关注啃食性虫害情况,做好预防工作。"
-                    },
-                    {
-                      "key": "刺吸式虫害",
-                      "val": "生产树中,0%的树体感染了刺吸式虫害,近期需密切关注啃食性虫害情况,做好预防工作。"
-                    }
-                  ],
-                  "list3": [],
-                  "blueZoneList": [],
-                  "geoHashSampleList": [
-                    {
-                      "key": "啃食性虫害",
-                      "obj": {
-                        "1": [],
-                        "2": [
-                          "w7ygy5cx98hf"
-                        ],
-                        "3": []
-                      }
-                    },
-                    {
-                      "key": "刺吸式虫害",
-                      "obj": {
-                        "1": [],
-                        "2": [
-                          "w7ygy5cubf49",
-                          "w7ygy5ezvzfd",
-                          "w7ygy5fzjdks",
-                          "w7ygyhh2mk21"
-                        ],
-                        "3": []
-                      }
-                    }
-                  ],
-                  "geoHashSampleStat": [
-                    {
-                      "key": "啃食性虫害",
-                      "obj": {
-                        "1": 0,
-                        "2": 0,
-                        "3": 0
-                      }
-                    },
-                    {
-                      "key": "刺吸式虫害",
-                      "obj": {
-                        "1": 0,
-                        "2": 0,
-                        "3": 0
-                      }
-                    }
-                  ],
-                  "imageTitle": [
-                    {
-                      "key": "啃食性虫害",
-                      "val": "啃食性虫害分布图"
-                    },
-                    {
-                      "key": "刺吸式虫害",
-                      "val": "刺吸式虫害分布图"
-                    },
-                    {
-                      "key": "叶瘿蚊",
-                      "val": "叶瘿蚊分布图"
-                    }
-                  ]
-                }
-              },
-              {
-                "key": "生长指标",
-                "obj": {
-                  "extData": [],
-                  "legendList": [
-                    {
-                      "key": "异常落果",
-                      "list": [
-                        {
-                          "color": "#FFFFE0",
-                          "label": "0%-20%",
-                          "name": "一级",
-                          "range": [],
-                          "val": "1"
-                        },
-                        {
-                          "color": "#FFA500",
-                          "label": "20%-50%",
-                          "name": "二级",
-                          "range": [],
-                          "val": "2"
-                        },
-                        {
-                          "color": "#FF4500",
-                          "label": "50%以上",
-                          "name": "三级",
-                          "range": [],
-                          "val": "3"
-                        }
-                      ]
-                    },
-                    {
-                      "key": "低温阴雨",
-                      "list": [
-                        {
-                          "color": "#FFFFE0",
-                          "label": "0%-20%",
-                          "name": "异常区域",
-                          "range": [],
-                          "val": "1"
-                        },
-                        {
-                          "color": "#FFA500",
-                          "label": "20%-50%",
-                          "name": "高危区域",
-                          "range": [],
-                          "val": "2"
-                        },
-                        {
-                          "color": "#FF4500",
-                          "label": "50%以上",
-                          "name": "严重区域",
-                          "range": [],
-                          "val": "3"
-                        }
-                      ]
-                    }
-                  ],
-                  "titleList": [
-                    "异常落果",
-                    "干热风险",
-                    "低温阴雨"
-                  ],
-                  "list1": [
-                    {
-                      "key": "异常落果",
-                      "val": 8
-                    },
-                    {
-                      "key": "干热风险",
-                      "val": 78
-                    },
-                    {
-                      "key": "低温阴雨",
-                      "val": 90
-                    }
-                  ],
-                  "text": "当前果园生产树体中,发现树体异常落果、低温阴雨、干热风险等异常,依据历史农情数据测算,当前异常可能导致产量减少2.0%,需及时采取疏花、摇花、喷水灌水农事。",
-                  "list2": [
-                    {
-                      "key": "异常落果",
-                      "val": "处于小果期的树体中,0%异常落果,生长状态良好。"
-                    },
-                    {
-                      "key": "低温阴雨",
-                      "val": "未来7天,处于扬花期树体中90.0%的区域将出现低温阴雨风险4级,低温阴雨导致柱头受精不充分,影响后期坐果,需要雨后抢晴处理,可人工摇花或无人机吹花,防止沤花导致病菌滋生,同时帮助授粉,为后期保果打下良好基础。"
-                    }
-                  ],
-                  "list3": [],
-                  "blueZoneList": [],
-                  "geoHashSampleList": [
-                    {
-                      "key": "异常落果",
-                      "obj": {
-                        "1": [
-                          "w7ygy5gsdc78"
-                        ],
-                        "2": [
-                          "w7ygy5en3c8s",
-                          "w7ygy5epdt6w",
-                          "w7ygy5euj7kf",
-                          "w7ygy5fhfcxd",
-                          "w7ygy5g5k8re",
-                          "w7ygy5g672jc",
-                          "w7ygy5gket7s",
-                          "w7ygy5gw764v"
-                        ],
-                        "3": [
-                          "w7ygy5cy50yz",
-                          "w7ygy5drfqyb",
-                          "w7ygyh4754sh",
-                          "w7ygyhh3vks7",
-                          "w7ygyhhehbz9"
-                        ]
-                      }
-                    },
-                    {
-                      "key": "低温阴雨",
-                      "obj": {
-                        "1": [],
-                        "2": [],
-                        "3": []
-                      }
-                    }
-                  ],
-                  "geoHashSampleStat": [
-                    {
-                      "key": "异常落果",
-                      "obj": {
-                        "1": 0,
-                        "2": 0,
-                        "3": 0
-                      }
-                    }
-                  ],
-                  "imageTitle": [
-                    {
-                      "key": "异常落果",
-                      "val": "异常落果风险分布图"
-                    },
-                    {
-                      "key": "低温阴雨",
-                      "val": "低温阴雨风险分布图"
-                    }
-                  ]
-                }
-              }
-            ],
-            "extData": null,
-            "success": true
-          })
-        }//荔博园
-        if(p.farmId === 80865){
-          resolve({
-            "code": 0,
-            "msg": "success",
-            "data": [
-              {
-                "key": "生态指标",
-                "obj": {
-                  "extData": [],
-                  "legendList": [
-                    {
-                      "key": "通风率",
-                      "list": [
-                        {
-                          "color": "#DDDDDD",
-                          "label": "通风<70%",
-                          "name": "通风一般",
-                          "range": [
-                            0,
-                            70
-                          ],
-                          "val": "1"
-                        },
-                        {
-                          "color": "#B3FF76",
-                          "label": "通风70%-85%",
-                          "name": "通风良好",
-                          "range": [
-                            70,
-                            85
-                          ],
-                          "val": "2"
-                        },
-                        {
-                          "color": "#1CBD00",
-                          "label": "通风85%-100%",
-                          "name": "通风优秀",
-                          "range": [
-                            85,
-                            101
-                          ],
-                          "val": "3"
-                        }
-                      ]
-                    },
-                    {
-                      "key": "透光率",
-                      "list": [
-                        {
-                          "color": "#A4D36D",
-                          "label": "透光<70%",
-                          "name": "透光一般",
-                          "range": [
-                            0,
-                            10
-                          ],
-                          "val": "1"
-                        },
-                        {
-                          "color": "#5CBF43",
-                          "label": "透光70%-85%",
-                          "name": "透光良好",
-                          "range": [
-                            10,
-                            85
-                          ],
-                          "val": "2"
-                        },
-                        {
-                          "color": "#1A7C12",
-                          "label": "透光85%-100%",
-                          "name": "透光优秀",
-                          "range": [
-                            85,
-                            101
-                          ],
-                          "val": "3"
-                        }
-                      ]
-                    }
-                  ],
-                  "titleList": [
-                    "通风率",
-                    "透光率"
-                  ],
-                  "list1": [
-                    {
-                      "key": "通风率",
-                      "val": 61
-                    },
-                    {
-                      "key": "透光率",
-                      "val": 54
-                    }
-                  ],
-                  "text": "当前分区内38.17%的树体通风不畅,45.7%的树体透光性较差,可能造成整体减产6.9%,需要及时执行剪枝农事。",
-                  "list2": [
-                    {
-                      "key": "通风率",
-                      "val": "通风率体现树体之间的间隙以及自身郁闭程度,当前38.17%的树体通风不畅,可能造成整体减产3.09%,需立即执行剪枝农事;61.83%的树体通风正常,建议继续保持现有管理措施并及时巡园,如发现通风不畅的树体,需及时评估是否需要执行剪枝农事。"
-                    },
-                    {
-                      "key": "透光率",
-                      "val": "透光率体现树体自身郁闭程度,当前45.7%的树体透光性较差,可能造成整体减产3.81%,需立即执行剪枝农事;54.3%的树体透光正常,建议继续保持现有管理措施并及时巡园,如发现透光性较差的树体,需及时评估是否需要执行剪枝农事。"
-                    }
-                  ],
-                  "list3": [],
-                  "blueZoneList": [],
-                  "geoHashSampleList": [
-                    {
-                      "key": "通风率",
-                      "obj": {
-                        "1": [
-                          "w7ygy5ce9sur",
-                          "w7ygy5cgrzsj",
-                          "w7ygy5ctcst9",
-                          "w7ygy5drfqyb",
-                          "w7ygy5dymh0f",
-                          "w7ygy5dztt0v",
-                          "w7ygy5em6f1u",
-                          "w7ygy5en3c8s",
-                          "w7ygy5eq42zp",
-                          "w7ygy5esh7k4",
-                          "w7ygy5ev1f0u",
-                          "w7ygy5f7du6d",
-                          "w7ygy5f852k5",
-                          "w7ygy5fc08e6",
-                          "w7ygy5ff5mvm",
-                          "w7ygy5fg2x5e",
-                          "w7ygy5fhfcxd",
-                          "w7ygy5fjzzzj",
-                          "w7ygy5fsu1dd",
-                          "w7ygy5fzjdks",
-                          "w7ygy5g13808",
-                          "w7ygy5g46zmr",
-                          "w7ygy5g5k8re",
-                          "w7ygy5g7kuhh",
-                          "w7ygy5gbumzu",
-                          "w7ygy5gf36xy",
-                          "w7ygy5ggs4ky",
-                          "w7ygy5gmgrtu",
-                          "w7ygy5gn4pfk",
-                          "w7ygy5gp6xm3",
-                          "w7ygy5gu7x6h",
-                          "w7ygy5gw764v",
-                          "w7ygy5gxd7bw",
-                          "w7ygy5s5gppd",
-                          "w7ygy5sxv5wf",
-                          "w7ygy5szgsqe",
-                          "w7ygy5u656gh",
-                          "w7ygy5u7dsp5",
-                          "w7ygy5u8gp1r",
-                          "w7ygy5ugs7pp",
-                          "w7ygy5uheu0v",
-                          "w7ygy5uktp6b",
-                          "w7ygy5ur5vhm",
-                          "w7ygy5uuynjz",
-                          "w7ygy5ux7s0p",
-                          "w7ygy5v0gtes",
-                          "w7ygy5vhuh62",
-                          "w7ygy5vjumh7",
-                          "w7ygy5vp672m",
-                          "w7ygyh1c9877",
-                          "w7ygyh402wmc",
-                          "w7ygyh460tkk",
-                          "w7ygyh4bkh50",
-                          "w7ygyh4d5bsx",
-                          "w7ygyh4ffcpq",
-                          "w7ygyh50k5c0",
-                          "w7ygyh58s13e",
-                          "w7ygyh59v6be",
-                          "w7ygyh5k7fxd",
-                          "w7ygyh5v7pff",
-                          "w7ygyhh2mk21",
-                          "w7ygyhh3vks7",
-                          "w7ygyhh5juvv",
-                          "w7ygyhh75g0j",
-                          "w7ygyhhehbz9",
-                          "w7ygyhhf5bbe",
-                          "w7ygyhhke4fq",
-                          "w7ygyhhpud5z",
-                          "w7ygyhhsmw39",
-                          "w7ygyhhthp0j",
-                          "w7ygyhhu7vy0"
-                        ],
-                        "2": [
-                          "w7ygy5c9pbvf",
-                          "w7ygy5cd6mjn",
-                          "w7ygy5cf17hf",
-                          "w7ygy5cy50yz",
-                          "w7ygy5ekjt2w",
-                          "w7ygy5epdt6w",
-                          "w7ygy5erg3xy",
-                          "w7ygy5etjy7g",
-                          "w7ygy5euj7kf",
-                          "w7ygy5eyh5yg",
-                          "w7ygy5ezvzfd",
-                          "w7ygy5f1bxtw",
-                          "w7ygy5f2cqgy",
-                          "w7ygy5f669rn",
-                          "w7ygy5fe3r42",
-                          "w7ygy5fjgqd4",
-                          "w7ygy5fkc097",
-                          "w7ygy5fr4vm3",
-                          "w7ygy5fusn4u",
-                          "w7ygy5fy19fb",
-                          "w7ygy5g352gd",
-                          "w7ygy5g672jc",
-                          "w7ygy5g8fmq7",
-                          "w7ygy5gd4627",
-                          "w7ygy5ghdy3s",
-                          "w7ygy5gket7s",
-                          "w7ygy5gr4evz",
-                          "w7ygy5s7gnwv",
-                          "w7ygy5skvprx",
-                          "w7ygy5sn696u",
-                          "w7ygy5sthmmr",
-                          "w7ygy5tpv3cp",
-                          "w7ygy5u2fufb",
-                          "w7ygy5u5s92y",
-                          "w7ygy5ubdh8f",
-                          "w7ygy5ufd74c",
-                          "w7ygy5umff7y",
-                          "w7ygy5un459k",
-                          "w7ygy5upm8jz",
-                          "w7ygy5usuux6",
-                          "w7ygy5uvuwvr",
-                          "w7ygy5uzk7nt",
-                          "w7ygy5v4m7df",
-                          "w7ygy5v5tc5p",
-                          "w7ygyh199jr8",
-                          "w7ygyh1dgjf5",
-                          "w7ygyh1g6j6t",
-                          "w7ygyh41gh6w",
-                          "w7ygyh44cv5y",
-                          "w7ygyh4dcchy",
-                          "w7ygyh529bgy",
-                          "w7ygyh53t4zu",
-                          "w7ygyh5458be",
-                          "w7ygyh554cjc",
-                          "w7ygyh5b7567",
-                          "w7ygyh5csw04",
-                          "w7ygyh5dfh89",
-                          "w7ygyh5ghrdf",
-                          "w7ygyh5s79bj",
-                          "w7ygyh5u7g4p",
-                          "w7ygyh5yy14p",
-                          "w7ygyh5zfcuy",
-                          "w7ygyhh0eb2j",
-                          "w7ygyhhbdsn8",
-                          "w7ygyhhd5bvx",
-                          "w7ygyhhh5kqn",
-                          "w7ygyhhqe7p5",
-                          "w7ygyhj0e6y9"
-                        ],
-                        "3": [
-                          "w7ygy5cg91c8",
-                          "w7ygy5cr7548",
-                          "w7ygy5csfxgm",
-                          "w7ygy5cubf49",
-                          "w7ygy5cx98hf",
-                          "w7ygy5cz6wd5",
-                          "w7ygy5dp3hwv",
-                          "w7ygy5ef6ttd",
-                          "w7ygy5f103h7",
-                          "w7ygy5f91e7x",
-                          "w7ygy5fd4vqk",
-                          "w7ygy5fp4mp3",
-                          "w7ygy5fw30rt",
-                          "w7ygy5fx0yeu",
-                          "w7ygy5ge6bjr",
-                          "w7ygy5gsdc78",
-                          "w7ygy5gyhm0p",
-                          "w7ygy5gzd8p4",
-                          "w7ygy5sjjdy6",
-                          "w7ygy5spwrr6",
-                          "w7ygy5sqk0wb",
-                          "w7ygy5srvd90",
-                          "w7ygy5sw3xrk",
-                          "w7ygy5sye1kb",
-                          "w7ygy5u0f5z0",
-                          "w7ygy5u475y8",
-                          "w7ygy5ud63fd",
-                          "w7ygy5uetkqq",
-                          "w7ygy5uw5wh3",
-                          "w7ygyh12u6xv",
-                          "w7ygyh12x9mr",
-                          "w7ygyh164fj1",
-                          "w7ygyh17k25x",
-                          "w7ygyh1b99mz",
-                          "w7ygyh4234zn",
-                          "w7ygyh4754sh",
-                          "w7ygyh483mzs",
-                          "w7ygyh4cf3zj",
-                          "w7ygyh57jhd0",
-                          "w7ygyh5tt48h",
-                          "w7ygyhh1us9e",
-                          "w7ygyhh8ubb1",
-                          "w7ygyhhfu324",
-                          "w7ygyhhjg6x5",
-                          "w7ygyhhmsqr5",
-                          "w7ygyhhnex2x",
-                          "w7ygyhhremk3"
-                        ]
-                      }
-                    },
-                    {
-                      "key": "透光率",
-                      "obj": {
-                        "1": [],
-                        "2": [
-                          "w7ygy5cd6mjn",
-                          "w7ygy5cf17hf",
-                          "w7ygy5cgrzsj",
-                          "w7ygy5ctcst9",
-                          "w7ygy5dp3hwv",
-                          "w7ygy5drfqyb",
-                          "w7ygy5dymh0f",
-                          "w7ygy5dztt0v",
-                          "w7ygy5ekjt2w",
-                          "w7ygy5em6f1u",
-                          "w7ygy5en3c8s",
-                          "w7ygy5epdt6w",
-                          "w7ygy5eq42zp",
-                          "w7ygy5erg3xy",
-                          "w7ygy5esh7k4",
-                          "w7ygy5etjy7g",
-                          "w7ygy5ev1f0u",
-                          "w7ygy5ezvzfd",
-                          "w7ygy5f103h7",
-                          "w7ygy5f1bxtw",
-                          "w7ygy5f2cqgy",
-                          "w7ygy5f669rn",
-                          "w7ygy5f7du6d",
-                          "w7ygy5f91e7x",
-                          "w7ygy5fd4vqk",
-                          "w7ygy5fe3r42",
-                          "w7ygy5ff5mvm",
-                          "w7ygy5fg2x5e",
-                          "w7ygy5fhfcxd",
-                          "w7ygy5fjgqd4",
-                          "w7ygy5fjzzzj",
-                          "w7ygy5fkc097",
-                          "w7ygy5fsu1dd",
-                          "w7ygy5fw30rt",
-                          "w7ygy5fx0yeu",
-                          "w7ygy5fy19fb",
-                          "w7ygy5fzjdks",
-                          "w7ygy5g13808",
-                          "w7ygy5g352gd",
-                          "w7ygy5g46zmr",
-                          "w7ygy5g5k8re",
-                          "w7ygy5g672jc",
-                          "w7ygy5g8fmq7",
-                          "w7ygy5gbumzu",
-                          "w7ygy5ge6bjr",
-                          "w7ygy5gf36xy",
-                          "w7ygy5ggs4ky",
-                          "w7ygy5ghdy3s",
-                          "w7ygy5gket7s",
-                          "w7ygy5gmgrtu",
-                          "w7ygy5gn4pfk",
-                          "w7ygy5gp6xm3",
-                          "w7ygy5gr4evz",
-                          "w7ygy5gu7x6h",
-                          "w7ygy5gw764v",
-                          "w7ygy5gxd7bw",
-                          "w7ygy5gyhm0p",
-                          "w7ygy5gzd8p4",
-                          "w7ygy5s5gppd",
-                          "w7ygy5s7gnwv",
-                          "w7ygy5sjjdy6",
-                          "w7ygy5skvprx",
-                          "w7ygy5sn696u",
-                          "w7ygy5spwrr6",
-                          "w7ygy5sqk0wb",
-                          "w7ygy5srvd90",
-                          "w7ygy5sthmmr",
-                          "w7ygy5sw3xrk",
-                          "w7ygy5sxv5wf",
-                          "w7ygy5szgsqe",
-                          "w7ygy5tpv3cp",
-                          "w7ygy5u0f5z0",
-                          "w7ygy5u475y8",
-                          "w7ygy5u5s92y",
-                          "w7ygy5u656gh",
-                          "w7ygy5u8gp1r",
-                          "w7ygy5ubdh8f",
-                          "w7ygy5ud63fd",
-                          "w7ygy5uetkqq",
-                          "w7ygy5ufd74c",
-                          "w7ygy5ugs7pp",
-                          "w7ygy5uheu0v",
-                          "w7ygy5un459k",
-                          "w7ygy5upm8jz",
-                          "w7ygy5ur5vhm",
-                          "w7ygy5usuux6",
-                          "w7ygy5uuynjz",
-                          "w7ygy5uvuwvr",
-                          "w7ygy5uw5wh3",
-                          "w7ygy5ux7s0p",
-                          "w7ygy5uzk7nt",
-                          "w7ygy5v0gtes",
-                          "w7ygy5v4m7df",
-                          "w7ygy5v5tc5p",
-                          "w7ygy5vhuh62",
-                          "w7ygy5vp672m",
-                          "w7ygyh12x9mr",
-                          "w7ygyh199jr8",
-                          "w7ygyh1c9877",
-                          "w7ygyh1dgjf5",
-                          "w7ygyh1g6j6t",
-                          "w7ygyh402wmc",
-                          "w7ygyh41gh6w",
-                          "w7ygyh4234zn",
-                          "w7ygyh44cv5y",
-                          "w7ygyh460tkk",
-                          "w7ygyh4754sh",
-                          "w7ygyh483mzs",
-                          "w7ygyh4cf3zj",
-                          "w7ygyh4d5bsx",
-                          "w7ygyh4dcchy",
-                          "w7ygyh4ffcpq",
-                          "w7ygyh50k5c0",
-                          "w7ygyh529bgy",
-                          "w7ygyh53t4zu",
-                          "w7ygyh5458be",
-                          "w7ygyh554cjc",
-                          "w7ygyh57jhd0",
-                          "w7ygyh58s13e",
-                          "w7ygyh59v6be",
-                          "w7ygyh5b7567",
-                          "w7ygyh5csw04",
-                          "w7ygyh5dfh89",
-                          "w7ygyh5ghrdf",
-                          "w7ygyh5k7fxd",
-                          "w7ygyh5s79bj",
-                          "w7ygyh5tt48h",
-                          "w7ygyh5u7g4p",
-                          "w7ygyh5v7pff",
-                          "w7ygyh5yy14p",
-                          "w7ygyhh0eb2j",
-                          "w7ygyhh1us9e",
-                          "w7ygyhh2mk21",
-                          "w7ygyhh3vks7",
-                          "w7ygyhh5juvv",
-                          "w7ygyhh75g0j",
-                          "w7ygyhhbdsn8",
-                          "w7ygyhhd5bvx",
-                          "w7ygyhhehbz9",
-                          "w7ygyhhf5bbe",
-                          "w7ygyhhfu324",
-                          "w7ygyhhh5kqn",
-                          "w7ygyhhke4fq",
-                          "w7ygyhhmsqr5",
-                          "w7ygyhhpud5z",
-                          "w7ygyhhqe7p5",
-                          "w7ygyhhremk3",
-                          "w7ygyhhsmw39",
-                          "w7ygyhhthp0j",
-                          "w7ygyhhu7vy0",
-                          "w7ygyhj0e6y9"
-                        ],
-                        "3": [
-                          "w7ygy5c9pbvf",
-                          "w7ygy5ce9sur",
-                          "w7ygy5cg91c8",
-                          "w7ygy5cr7548",
-                          "w7ygy5csfxgm",
-                          "w7ygy5cubf49",
-                          "w7ygy5cx98hf",
-                          "w7ygy5cy50yz",
-                          "w7ygy5cz6wd5",
-                          "w7ygy5ef6ttd",
-                          "w7ygy5euj7kf",
-                          "w7ygy5eyh5yg",
-                          "w7ygy5f852k5",
-                          "w7ygy5fc08e6",
-                          "w7ygy5fp4mp3",
-                          "w7ygy5fr4vm3",
-                          "w7ygy5fusn4u",
-                          "w7ygy5g7kuhh",
-                          "w7ygy5gd4627",
-                          "w7ygy5gsdc78",
-                          "w7ygy5sye1kb",
-                          "w7ygy5u2fufb",
-                          "w7ygy5u7dsp5",
-                          "w7ygy5uktp6b",
-                          "w7ygy5umff7y",
-                          "w7ygy5vjumh7",
-                          "w7ygyh12u6xv",
-                          "w7ygyh164fj1",
-                          "w7ygyh17k25x",
-                          "w7ygyh1b99mz",
-                          "w7ygyh4bkh50",
-                          "w7ygyh5zfcuy",
-                          "w7ygyhh8ubb1",
-                          "w7ygyhhjg6x5",
-                          "w7ygyhhnex2x"
-                        ]
-                      }
-                    }
-                  ],
-                  "geoHashSampleStat": [
-                    {
-                      "key": "通风率",
-                      "obj": {
-                        "1": 71,
-                        "2": 63,
-                        "3": 47
-                      }
-                    },
-                    {
-                      "key": "透光率",
-                      "obj": {
-                        "1": 0,
-                        "2": 151,
-                        "3": 35
-                      }
-                    }
-                  ],
-                  "imageTitle": [
-                    {
-                      "key": "通风率",
-                      "val": "单树通风率"
-                    },
-                    {
-                      "key": "透光率",
-                      "val": "单树透光率"
-                    }
-                  ]
-                }
-              },
-              {
-                "key": "病虫指标",
-                "obj": {
-                  "extData": [],
-                  "legendList": [
-                    {
-                      "key": "啃食性虫害",
-                      "list": [
-                        {
-                          "color": "#DDDDDD",
-                          "label": "无",
-                          "name": "正常",
-                          "range": [
-                            0,
-                            0
-                          ],
-                          "val": "1"
-                        },
-                        {
-                          "color": "#FFAF73",
-                          "label": "60%-80%",
-                          "name": "高危",
-                          "range": [
-                            0,
-                            5
-                          ],
-                          "val": "2"
-                        },
-                        {
-                          "color": "#FF6D00",
-                          "label": "大于10%",
-                          "name": "严重",
-                          "range": [
-                            5,
-                            101
-                          ],
-                          "val": "3"
-                        }
-                      ]
-                    },
-                    {
-                      "key": "刺吸式虫害",
-                      "list": [
-                        {
-                          "color": "#DDDDDD",
-                          "label": "无",
-                          "name": "正常",
-                          "range": [
-                            0,
-                            0
-                          ],
-                          "val": "1"
-                        },
-                        {
-                          "color": "#FFAF73",
-                          "label": "60%-80%",
-                          "name": "高危",
-                          "range": [
-                            0,
-                            5
-                          ],
-                          "val": "2"
-                        },
-                        {
-                          "color": "#FF6D00",
-                          "label": "大于10%",
-                          "name": "严重",
-                          "range": [
-                            5,
-                            101
-                          ],
-                          "val": "3"
-                        }
-                      ]
-                    },
-                    {
-                      "key": "叶瘿蚊",
-                      "list": [
-                        {
-                          "color": "#DDDDDD",
-                          "label": "无",
-                          "name": "正常",
-                          "range": [
-                            0,
-                            0
-                          ],
-                          "val": "1"
-                        },
-                        {
-                          "color": "#FFAF73",
-                          "label": "60%-80%",
-                          "name": "高危",
-                          "range": [
-                            0,
-                            5
-                          ],
-                          "val": "2"
-                        },
-                        {
-                          "color": "#FF6D00",
-                          "label": "大于10%",
-                          "name": "严重",
-                          "range": [
-                            5,
-                            101
-                          ],
-                          "val": "3"
-                        }
-                      ]
-                    }
-                  ],
-                  "titleList": [
-                    "啃食性虫害",
-                    "刺吸式虫害"
-                  ],
-                  "list1": [
-                    {
-                      "key": "啃食性虫害",
-                      "val": 0
-                    },
-                    {
-                      "key": "刺吸式虫害",
-                      "val": 0
-                    }
-                  ],
-                  "text": "生产树中,9.14%的树体感染了病虫害,较七天前无变化,有进一步蔓延风险,可能导致整体减产0.21%,因此需及时执行农事,避免病虫害进一步扩散,影响产量。",
-                  "list2": [
-                    {
-                      "key": "啃食性虫害",
-                      "val": "生产树中,0%的树体感染了啃食性虫害,近期需密切关注啃食性虫害情况,做好预防工作。"
-                    },
-                    {
-                      "key": "刺吸式虫害",
-                      "val": "生产树中,0%的树体感染了刺吸式虫害,近期需密切关注啃食性虫害情况,做好预防工作。"
-                    }
-                  ],
-                  "list3": [],
-                  "blueZoneList": [],
-                  "geoHashSampleList": [
-                    {
-                      "key": "啃食性虫害",
-                      "obj": {
-                        "1": [],
-                        "2": [
-                          "w7ygy5cx98hf"
-                        ],
-                        "3": []
-                      }
-                    },
-                    {
-                      "key": "刺吸式虫害",
-                      "obj": {
-                        "1": [],
-                        "2": [
-                          "w7ygy5cubf49",
-                          "w7ygy5ezvzfd",
-                          "w7ygy5fzjdks",
-                          "w7ygyhh2mk21"
-                        ],
-                        "3": []
-                      }
-                    }
-                  ],
-                  "geoHashSampleStat": [
-                    {
-                      "key": "啃食性虫害",
-                      "obj": {
-                        "1": 0,
-                        "2": 0,
-                        "3": 0
-                      }
-                    },
-                    {
-                      "key": "刺吸式虫害",
-                      "obj": {
-                        "1": 0,
-                        "2": 0,
-                        "3": 0
-                      }
-                    }
-                  ],
-                  "imageTitle": [
-                    {
-                      "key": "啃食性虫害",
-                      "val": "啃食性虫害分布图"
-                    },
-                    {
-                      "key": "刺吸式虫害",
-                      "val": "刺吸式虫害分布图"
-                    },
-                    {
-                      "key": "叶瘿蚊",
-                      "val": "叶瘿蚊分布图"
-                    }
-                  ]
-                }
-              },
-              {
-                "key": "生长指标",
-                "obj": {
-                  "extData": [],
-                  "legendList": [
-                    {
-                      "key": "异常落果",
-                      "list": [
-                        {
-                          "color": "#FFFFE0",
-                          "label": "0%-20%",
-                          "name": "一级",
-                          "range": [],
-                          "val": "1"
-                        },
-                        {
-                          "color": "#FFA500",
-                          "label": "20%-50%",
-                          "name": "二级",
-                          "range": [],
-                          "val": "2"
-                        },
-                        {
-                          "color": "#FF4500",
-                          "label": "50%以上",
-                          "name": "三级",
-                          "range": [],
-                          "val": "3"
-                        }
-                      ]
-                    },
-                    {
-                      "key": "低温阴雨",
-                      "list": [
-                        {
-                          "color": "#FFFFE0",
-                          "label": "0%-20%",
-                          "name": "异常区域",
-                          "range": [],
-                          "val": "1"
-                        },
-                        {
-                          "color": "#FFA500",
-                          "label": "20%-50%",
-                          "name": "高危区域",
-                          "range": [],
-                          "val": "2"
-                        },
-                        {
-                          "color": "#FF4500",
-                          "label": "50%以上",
-                          "name": "严重区域",
-                          "range": [],
-                          "val": "3"
-                        }
-                      ]
-                    }
-                  ],
-                  "titleList": [
-                    "异常落果",
-                    "干热风险",
-                    "低温阴雨"
-                  ],
-                  "list1": [
-                    {
-                      "key": "异常落果",
-                      "val": 8
-                    },
-                    {
-                      "key": "干热风险",
-                      "val": 78
-                    },
-                    {
-                      "key": "低温阴雨",
-                      "val": 90
-                    }
-                  ],
-                  "text": "当前果园生产树体中,发现树体异常落果、低温阴雨、干热风险等异常,依据历史农情数据测算,当前异常可能导致产量减少2.0%,需及时采取疏花、摇花、喷水灌水农事。",
-                  "list2": [
-                    {
-                      "key": "异常落果",
-                      "val": "处于小果期的树体中,0%异常落果,生长状态良好。"
-                    },
-                    {
-                      "key": "低温阴雨",
-                      "val": "未来7天,处于扬花期树体中90.0%的区域将出现低温阴雨风险4级,低温阴雨导致柱头受精不充分,影响后期坐果,需要雨后抢晴处理,可人工摇花或无人机吹花,防止沤花导致病菌滋生,同时帮助授粉,为后期保果打下良好基础。"
-                    }
-                  ],
-                  "list3": [],
-                  "blueZoneList": [],
-                  "geoHashSampleList": [
-                    {
-                      "key": "异常落果",
-                      "obj": {
-                        "1": [
-                          "w7ygy5gsdc78"
-                        ],
-                        "2": [
-                          "w7ygy5en3c8s",
-                          "w7ygy5epdt6w",
-                          "w7ygy5euj7kf",
-                          "w7ygy5fhfcxd",
-                          "w7ygy5g5k8re",
-                          "w7ygy5g672jc",
-                          "w7ygy5gket7s",
-                          "w7ygy5gw764v"
-                        ],
-                        "3": [
-                          "w7ygy5cy50yz",
-                          "w7ygy5drfqyb",
-                          "w7ygyh4754sh",
-                          "w7ygyhh3vks7",
-                          "w7ygyhhehbz9"
-                        ]
-                      }
-                    },
-                    {
-                      "key": "低温阴雨",
-                      "obj": {
-                        "1": [],
-                        "2": [],
-                        "3": []
-                      }
-                    }
-                  ],
-                  "geoHashSampleStat": [
-                    {
-                      "key": "异常落果",
-                      "obj": {
-                        "1": 0,
-                        "2": 0,
-                        "3": 0
-                      }
-                    }
-                  ],
-                  "imageTitle": [
-                    {
-                      "key": "异常落果",
-                      "val": "异常落果风险分布图"
-                    },
-                    {
-                      "key": "低温阴雨",
-                      "val": "低温阴雨风险分布图"
-                    }
-                  ]
-                }
-              }
-            ],
-            "extData": null,
-            "success": true
-          })
-        }//柏桥
-      })
-    }
   },
   startFightTask:{
     url: config.base_url + "autoFlow/flightTasks/{farmId}",

+ 504 - 0
src/components/FileWrap.vue

@@ -0,0 +1,504 @@
+<template>
+    <div class="file-wrap" :class="className">
+        <div class="file-title" v-if="className !== 'styleName2'">
+            <img src="@/assets/images/common/chart-yellow.png" alt="" />
+            果树档案
+            <span class="tag" v-if="showTag">小农户</span>
+        </div>
+        <!-- 暂无数据状态 -->
+        <div v-if="dynamicDataBlocks.length === 0" class="empty-state">
+            <div class="empty-content">
+                <div class="empty-icon">📋</div>
+                <div class="empty-text">暂无数据</div>
+            </div>
+        </div>
+
+        <!-- 动态渲染所有数据块 -->
+        <template v-if="className === 'styleName2'">
+            <!-- 动态渲染所有数据块 -->
+            <div class="file-wrap-content" :class="styleName2">
+                <div class="file-title">
+                    <img src="@/assets/images/common/chart-yellow.png" alt="" />
+                    果树档案
+                    <span class="tag" v-if="showTag">小农户</span>
+                </div>
+                <div class="overview-file" v-for="block in dynamicDataBlocks" :key="block.id">
+                    <!-- 总体档案显示基础数据和列表 -->
+                    <template v-if="block.isOverview">
+                        <div class="box-flex">
+                            <div class="box-title">{{ block.title }}</div>
+                            <div class="base-data">
+                                <div class="base-item base-min" v-for="item in block.indicators" :key="item.label">
+                                    <span class="label">{{ item.name }}</span>
+                                    <div class="value">{{ item.val || "--" }}{{ item.unit }}</div>
+                                </div>
+                                <!-- <div class="base-item" v-for="(item, index) in block.indicators" :key="item.name">
+                                    <span class="label">{{ item.name }}</span>
+                                    <div v-if="index === 0" class="value">
+                                        <el-select
+                                            v-model="selectedSpeciesId"
+                                            size="small"
+                                            @change="changeSelect"
+                                            class="type-select"
+                                        >
+                                            <el-option
+                                                v-for="option in selectOptions"
+                                                :key="option.id"
+                                                :label="option.name"
+                                                :value="option.id"
+                                            />
+                                        </el-select>
+                                    </div>
+                                    <div v-else class="value">{{ item.val || "--" }}{{ item.unit }}</div>
+                                </div> -->
+                            </div>
+                            <div class="list">
+                                <div class="list-item" v-for="item in photoList" :key="item.key">
+                                    <div class="list-name">
+                                        <img src="@/assets/images/common/title-icon.png" alt="" />
+                                        {{ item.speakTitleName || "--" }}
+                                    </div>
+                                    {{ item.content?.renderedContent || "--" }}
+                                </div>
+                            </div>
+                        </div>
+                    </template>
+                </div>
+            </div>
+            <div class="box-r">
+                <div class="overview-file" v-for="block in dynamicDataBlocks" :key="block.id">
+                    <!-- 其他数据块显示指标数据 -->
+                    <template v-if="!block.isOverview">
+                        <div class="box-flex">
+                            <div class="box-title">{{ block.title }}</div>
+                            <div class="box-wrap">
+                                <div
+                                    class="box-item"
+                                    v-for="(item, index) in block.indicators"
+                                    :key="index"
+                                    @click="toggleAcitve(item.name, item.field)"
+                                >
+                                    <div class="item-name">{{ item.name }}</div>
+                                    <div class="item-val">{{ item.val || "--" }}{{ item.unit }}</div>
+                                </div>
+                            </div>
+                        </div>
+                    </template>
+                </div>
+            </div>
+        </template>
+        <template v-else>
+            <div class="overview-file" v-for="block in dynamicDataBlocks" :key="block.id">
+                <div class="box-title">{{ block.title }}</div>
+
+                <!-- 总体档案显示基础数据和列表 -->
+                <template v-if="block.isOverview">
+                    <div class="base-data">
+                        <div class="base-item" v-for="item in block.indicators" :key="item.label">
+                            <span class="label">{{ item.name }}</span>
+                            <div class="value">{{ item.val || "--" }}{{ item.unit }}</div>
+                        </div>
+                    </div>
+                    <div class="list">
+                        <div class="list-item" v-for="item in photoList" :key="item.key">
+                            <div class="list-name">
+                                <img src="@/assets/images/common/title-icon.png" alt="" />
+                                {{ item.speakTitleName || "--" }}
+                            </div>
+                            {{ item.content?.renderedContent || "--" }}
+                        </div>
+                    </div>
+                </template>
+                <!-- 其他数据块显示指标数据 -->
+                <template v-else>
+                    <div class="box-wrap">
+                        <div
+                            class="box-item"
+                            v-for="(item, index) in block.indicators"
+                            :key="index"
+                            @click="toggleAcitve(item.name)"
+                        >
+                            <div class="item-name">{{ item.name }}</div>
+                            <div class="item-val">{{ item.val || "--" }}{{ item.unit }}</div>
+                        </div>
+                    </div>
+                </template>
+            </div>
+        </template>
+    </div>
+</template>
+
+<script setup>
+import { ref, defineProps, defineEmits, watch } from "vue";
+import eventBus from "@/api/eventBus";
+
+// 定义 props
+const props = defineProps({
+    sampleId: {
+        type: [String, Number],
+        default: null,
+    },
+    showTag: {
+        type: Boolean,
+        default: false,
+    },
+    className: {
+        type: String,
+        default: "styleName1",
+    },
+});
+
+// 定义 emits
+const emit = defineEmits(["update:activeOutput"]);
+
+// 动态数据块列表
+const dynamicDataBlocks = ref([]);
+
+const photoList = ref([
+    { speakTitleName: "病虫", statement: "--" },
+    { speakTitleName: "异常", statement: "--" },
+    { speakTitleName: "营养", statement: "--" },
+    { speakTitleName: "农事", statement: "--" },
+]);
+
+const activeOuput = ref(null);
+
+// 品种选择相关
+const selectOptions = ref([]);
+const selectedSpeciesId = ref(null);
+
+function changeSelect() {
+    // 品种选择变化时,重新获取数据
+    if (props.sampleId) {
+        getSampleFiles(props.sampleId);
+    }
+}
+
+// 获取样本文件数据
+const getSampleFiles = (sampleId) => {
+    VE_API.home.getSampleFilesWithParams({ sampleId }).then(({ data, code }) => {
+        if (code === 0) {
+            // 清空之前的数据
+            dynamicDataBlocks.value = [];
+
+            data.forEach((item, index) => {
+                if (item.name && item.indicators && item.indicators.length > 0) {
+                    // 处理所有数值,整数不保留小数,小数保留两位
+                    const processedIndicators = item.indicators.map((indicator) => {
+                        if (
+                            indicator.val !== "--" &&
+                            indicator.val !== null &&
+                            indicator.val !== undefined &&
+                            !isNaN(parseFloat(indicator.val))
+                        ) {
+                            const num = parseFloat(indicator.val);
+                            return {
+                                ...indicator,
+                                val: Number.isInteger(num) ? num.toString() : num.toFixed(2),
+                            };
+                        }
+                        return indicator;
+                    });
+
+                    // 创建动态数据块
+                    const dataBlock = {
+                        id: index + 1,
+                        title: item.name,
+                        indicators: processedIndicators,
+                        isOverview: index === 0, // 标记是否为总体档案
+                    };
+
+                    dynamicDataBlocks.value.push(dataBlock);
+                }
+            });
+        }
+    });
+
+    VE_API.home.getSpeakInfo({ sampleId }).then(({ data, code }) => {
+        if (code === 0) {
+            photoList.value = data || [];
+        }
+    });
+};
+
+// 产量详情
+function toggleAcitve(name) {
+    activeOuput.value = name;
+    // emit('update:activeOutput', name);
+
+    // if (name.indexOf("开花") > -1) {
+    //     eventBus.emit("change:watermark", "开花目标框")
+    // } else if (name.indexOf("花穗") > -1) {
+    //     eventBus.emit("change:watermark", "花穗目标框")
+    // } else if (name.indexOf("雄花") > -1) {
+    //     eventBus.emit("change:watermark", "雄花目标框")
+    // } else if (name.indexOf("枝条数") > -1) {
+    //     eventBus.emit("change:watermark", "")
+    // } else {
+    //     eventBus.emit("change:watermark", "")
+    // }
+}
+
+// 重置状态
+const resetState = () => {
+    activeOuput.value = null;
+    eventBus.emit("change:watermark", "");
+    eventBus.emit("resetImgIndex");
+};
+
+// 监听 sampleId 变化,自动调用接口
+watch(() => props.sampleId, (newVal) => {
+    if (newVal) {
+        getSampleFiles(newVal);
+    }
+}, { immediate: true });
+
+// 暴露方法给父组件
+defineExpose({
+    getSampleFiles,
+    resetState,
+    activeOuput,
+});
+</script>
+
+<style lang="scss" scoped>
+@import "src/styles/index";
+
+.file-wrap {
+    // background: url("@/assets/images/home/file-bg.png") no-repeat top center / 100% 100%;
+    background: linear-gradient(180deg, #3d3a2f 6%, rgba(10, 10, 10, 1) 50%, rgba(10, 10, 10, 1) 100%);
+    border-radius: 12px;
+    border: 1px solid #BBBBBB;
+    margin-left: 12px;
+    padding: 12px;
+    margin-top: 20px;
+    &.styleName1 {
+        margin-top: 0;
+    }
+    &.styleName2 {
+        display: flex;
+        
+        .file-wrap-content {
+            flex: 1;
+        }
+        .box-r {
+            padding-left: 24px;
+        }
+    }
+
+    .file-title {
+        font-size: 20px;
+        color: #ffd489;
+        display: flex;
+        align-items: center;
+
+        .tag {
+            border: 1px solid #ffd489;
+            border-radius: 4px;
+            font-size: 12px;
+            display: inline-block;
+            width: 44px;
+            height: 20px;
+            text-align: center;
+            line-height: 18px;
+            margin-left: 3px;
+            padding: 1px 4px;
+        }
+    }
+
+    .box-wrap {
+        display: flex;
+        .box-r {
+            padding-left: 24px;
+            .overview-file:first-child {
+                padding-top: 0;
+            }
+        }
+    }
+    .file-wrap-content {
+        &.styleName2 {
+            display: flex;
+        }
+    }
+
+    .box-flex {
+        padding-top: 20px;
+        display: flex;
+        flex-direction: column;
+    }
+    .box-flex + .box-flex {
+        margin-top: 8px;
+    }
+
+    .overview-file {
+        .box-title {
+            font-size: 16px;
+            padding-left: 13px;
+            margin-bottom: 16px;
+            position: relative;
+            display: flex;
+            justify-content: space-between;
+            color: #fff;
+            &::before {
+                content: "";
+                position: absolute;
+                left: 0;
+                top: 4px;
+                width: 3px;
+                height: 16px;
+                background: #fff;
+                border-radius: 11px;
+            }
+        }
+        .title {
+            color: #f3c11d;
+            font-size: 16px;
+            font-family: "PangMenZhengDao";
+            margin-bottom: 20px;
+            .big {
+                width: 13px;
+                height: 13px;
+                margin: -10px 0 0 4px;
+            }
+            .small {
+                width: 7px;
+                height: 7px;
+                margin-left: -3px;
+            }
+        }
+        .base-data {
+            background: rgba(207, 207, 207, 0.1);
+            border-radius: 4px;
+            padding: 6px 0;
+            display: flex;
+            .base-item {
+                text-align: center;
+                flex: 1;
+                &.base-min {
+                    min-width: 80px;
+                }
+                .label {
+                    font-size: 12px;
+                    color: #666666;
+                    width: max-content;
+                    display: block;
+                    margin: 0 auto;
+                    padding-bottom: 2px;
+                }
+                .value {
+                    padding-top: 2px;
+                    font-size: 16px;
+                    color: #ffffff;
+                    width: max-content;
+                    margin: 0 auto;
+                }
+                .type-select {
+                    width: 72px;
+                    ::v-deep {
+                        .el-select__wrapper {
+                            background: rgba(247, 190, 90, 0.1);
+                            box-shadow: 0 0 0 1px #f7be5a inset;
+                            color: #ffd489;
+                        }
+                        .el-select__placeholder {
+                            color: #ffd489;
+                        }
+                    }
+                }
+            }
+            .base-item + .base-item {
+                border-left: 1px solid rgba(102, 102, 102, 0.42);
+            }
+        }
+        .list {
+            margin-top: 15px;
+            width: max-content;
+            font-size: 14px;
+            .list-item {
+                color: #bbbbbb;
+                display: flex;
+                margin-bottom: 8px;
+                .list-name {
+                    color: #f3c11d;
+                    margin-right: 6px;
+                    img {
+                        width: 17px;
+                        height: 13px;
+                    }
+                }
+            }
+        }
+    }
+    .overview-file + .overview-file {
+        // margin-top: 8px;
+    }
+
+    // 暂无数据状态样式
+    .empty-state {
+        display: flex;
+        justify-content: center;
+        align-items: center;
+        min-height: 450px;
+        padding: 40px 20px;
+        min-width: 400px;
+
+        .empty-content {
+            text-align: center;
+
+            .empty-icon {
+                font-size: 48px;
+                margin-bottom: 16px;
+                opacity: 0.6;
+            }
+
+            .empty-text {
+                font-size: 16px;
+                color: #bbbbbb;
+                font-weight: 400;
+            }
+        }
+    }
+
+    .box-wrap {
+        display: flex;
+        .box-item {
+            box-sizing: border-box;
+            min-width: 90px;
+            display: flex;
+            flex-direction: column;
+            justify-content: center;
+            align-items: center;
+            padding: 6px 16px;
+            background: rgba(207, 207, 207, 0.1);
+            border-radius: 4px;
+            border: 1px solid rgba(207, 207, 207, 0.1);
+            // cursor: pointer;
+            .item-name {
+                font-size: 12px;
+                color: #666666;
+                width: max-content;
+            }
+            .item-val {
+                font-size: 18px;
+                color: #fff;
+                width: max-content;
+                padding-top: 3px;
+                span {
+                    font-size: 12px;
+                    padding-left: 2px;
+                }
+            }
+            &.active {
+                background: rgba(255, 212, 137, 0.16);
+                border: 1px solid #ffd489;
+                .item-name {
+                    color: #bbbbbb;
+                }
+            }
+        }
+        .box-item + .box-item {
+            margin-left: 8px;
+        }
+    }
+}
+</style>

+ 15 - 41
src/components/charts/barChart.vue

@@ -6,8 +6,6 @@
 import { onMounted, ref, watch } from "vue";
 import * as echarts from "echarts";
 import { barOption } from "./options/barOption.js";
-import eventBus from "@/api/eventBus";
-import { deepClone } from "@/common/commonFun.js";
 
 const props = defineProps({
     styleName: {
@@ -29,67 +27,37 @@ const myChart = ref(null);
 const options = ref(null);
 
 const initData = () => {
-    const barOptionValue = deepClone(barOption)
     if (props.styleName === "styleName2") {
-        if(props.yData[0].legend){
-            barOptionValue[props.styleName].legend.show = true
-            barOptionValue[props.styleName].grid.top = 35
-        }
-        barOptionValue[props.styleName].series[0].data = props.yData.map(item =>item.startNum);
-        barOptionValue[props.styleName].series[1].data = props.yData.map(item =>item.endNum);
-    } else if(props.styleName === "styleName3"){
         const arr = [];
         props.yData.forEach((item, index) => {
             arr.push({
-                value: item.value,
+                value: item.startNum,
                 itemStyle: {
                     color: new echarts.graphic.LinearGradient(0, 0, 0, 1, [
                         {
                             offset: 0,
-                            color: item.color[0],
+                            color: item.startColor,
                         },
                         {
                             offset: 1,
-                            color: item.color[1],
+                            color: item.endColor,
                         },
                     ]),
                 },
             });
         });
-        barOptionValue[props.styleName].series[0].data = arr;
-    }else if(props.styleName === "styleName4"){
-        barOptionValue[props.styleName].series[0].data = props.yData.map(item =>item.total);;
-        barOptionValue[props.styleName].series[1].data = props.yData.map(item =>item.startNum);
-        barOptionValue[props.styleName].series[2].data = props.yData.map(item =>item.endNum);
-    }else{
-        barOptionValue[props.styleName].series[0].data = props.yData;
+        barOption[props.styleName].series[0].data = arr;
+    } else {
+        barOption[props.styleName].series[0].data = props.yData;
     }
-    barOptionValue[props.styleName].xAxis.data = props.xData;
-    options.value = barOptionValue[props.styleName];
+    barOption[props.styleName].xAxis.data = props.xData;
+    
+    options.value = barOption[props.styleName];
     myChart.value.setOption(options.value);
 };
 
-// // 窗口大小变化时重置 ECharts 宽高
-// window.addEventListener("resize", () => {
-//   if (chartDom.value.clientWidth) {
-//   console.log("chartDom.value", chartDom.value.clientWidth);
-//     console.log("2222");
-//     // 获取新的容器宽高
-//     const newWidth = chartDom.value.clientWidth;
-//     const newHeight = chartDom.value.clientHeight;
-
-//     // 设置容器的宽高(可选,如果 CSS 已经控制宽度高度,可以跳过这一步)
-//     chartDom.value.style.width = newWidth + "px";
-//     chartDom.value.style.height = newHeight + "px";
-//     console.log('chartDom.value.style.width',chartDom.value.style.width);
-//     // 重置 ECharts 实例的宽高
-//     myChart.value.resize();
-//   }
-// });
-
 onMounted(() => {
     myChart.value = echarts.init(chartDom.value);
-    initData();
 });
 
 watch(()=>props.xData,(newValue,oldValue) =>{
@@ -97,6 +65,12 @@ watch(()=>props.xData,(newValue,oldValue) =>{
         initData();
     }
 })
+
+watch(()=>props.yData,(newValue,oldValue) =>{
+    if(newValue){
+        initData();
+    }
+})
 </script>
 
 <style lang="scss" scoped>

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

@@ -27,7 +27,7 @@ const commonStyle = {
     },
   },
   grid: {
-    top: 4,
+    top: "18px",
     left: "-10%",
     right: "0%",
     bottom: "0%",
@@ -45,7 +45,7 @@ const styleName1 = {
       label: {
         show: true,
         color: "#fff",
-        position: "insideTop",
+        position: "top",
         formatter: ({ value }) => {
           return value ? value : "";
         },
@@ -88,7 +88,7 @@ const styleName2 = {
       label: {
         show: true,
         color: "#fff",
-        position: "insideTop",
+        position: "top",
         formatter: ({ value }) => {
           return value ? value : "";
         },
@@ -125,7 +125,7 @@ const styleName2 = {
       },
       label: {
         show: true,
-        position: "insideTop",
+        position: "top",
         color: "#fff",
         formatter: ({ value }) => {
           return value ? value : "";
@@ -145,7 +145,7 @@ const styleName3 = {
       label: {
         show: true,
         color: "#fff",
-        position: "insideTop",
+        position: "top",
         formatter: ({ value }) => {
           return value ? value : "";
         },
@@ -186,7 +186,7 @@ const styleName4 = {
       label: {
         show: true,
         color: "#fff",
-        position: "insideTop",
+        position: "top",
         formatter: ({ value }) => {
           return value ? value : "";
         },
@@ -217,7 +217,7 @@ const styleName4 = {
       label: {
         show: true,
         color: "#fff",
-        position: "insideTop",
+        position: "top",
         formatter: ({ value }) => {
           return value ? value : "";
         },
@@ -247,7 +247,7 @@ const styleName4 = {
       stack: "total",
       label: {
         show: true,
-        position: "insideTop",
+        position: "top",
         color: "#fff",
         formatter: ({ value }) => {
           return value ? value : "";

+ 54 - 30
src/components/navigation.vue

@@ -44,12 +44,8 @@
 </template>
 
 <script setup>
-import { useRouter } from "vue-router";
-import { onMounted, onUnmounted, ref, computed } from "vue";
-import { useStore } from "vuex";
+import { onMounted, onUnmounted, ref } from "vue";
 import eventBus from "@/api/eventBus";
-const router = useRouter();
-const store = useStore();
 
 const areaId = ref("");
 const options = ref([]);
@@ -77,41 +73,52 @@ const changeSelect = (e) =>{
     sessionStorage.setItem('regionId',e)
     eventBus.emit('handleTab',)
     active.value = "果园总览"
+    handleCheckedChange(checkedChildren.value,true)
 }
 
 const getListByFarmId = () =>{
     VE_API.home.listByFarmId({farmId:organId.value}).then(res =>{
         list.value = res.data || []
         monitorData.value = res.data[0].monitorItems || []
+        checkedChildren.value = [res.data[0].monitorItems[0].id]
+        handleCheckedChange(checkedChildren.value,true)
     })
 }
 
 onMounted(()=>{
     gardenOrganId(sessionStorage.getItem('farmId')*1)
-    eventBus.on('handleActive',handleActive)
+    eventBus.on('handleActive',handleActiveTab)
     eventBus.on('quitCompare', handleQuitCompare)
 })
-const mainMenuArr = computed(() => store.state.home.mainMenu);
 
 onUnmounted(()=>{
-    eventBus.off('handleActive',handleActive)
+    eventBus.off('handleActive',handleActiveTab)
     eventBus.off('quitCompare', handleQuitCompare)
 })
 
 const emit = defineEmits(["handleTab","updateLegend"])
 
 const checkedChildren = ref([]);
-const childrenData = ref([]);
-const handleCheckedChange = (e) => {
+const handleCheckedChange = (e,isInit = false) => {
     if(e.length){
+        checkedChildren.value = [e[e.length -1]];
         const monitorIndicatorId = [e[e.length -1]][0]
         const legendConfig = monitorData.value.filter(item => item.id === monitorIndicatorId)
+        
+        // 发射事件通知 tabs 组件更新高亮状态
+        if (legendConfig.length > 0) {
+            eventBus.emit('updateTabActive', {
+                indicatorId: monitorIndicatorId,
+                indicatorName: active.value
+            });
+        }
+        
         VE_API.home.queryWorkCodeSampleParams({monitorIndicatorId,farmId:organId.value,regionId:areaId.value || null}).then(res =>{
             // 解析legendConfig
             const parsedLegendConfig = JSON.parse(legendConfig[0].legendConfig)
             // 根据接口返回的val字段匹配range区间
             let matchedData = matchDataByVal(res.data, parsedLegendConfig)
-            emit('updateLegend',matchedData,parsedLegendConfig)
+            emit('updateLegend',matchedData,parsedLegendConfig,isInit)
         })
     }
 };
@@ -146,18 +153,34 @@ const matchDataByVal = (sampleData, legendConfig) => {
             return;
         }
         
+        let foundMatch = false; // 标记是否找到匹配项
+        
         // 遍历legend配置中的每个分类
-        legendList.forEach((legendItem) => {
+        for (const legendItem of legendList) {
+            if (foundMatch) break; // 如果已找到匹配项,跳出循环
+            
             // 获取list数组
             const itemList = legendItem.list || legendItem.items || [legendItem];
             
             // 遍历每个分类下的具体项
-            itemList.forEach((configItem) => {
+            for (const configItem of itemList) {
+                if (foundMatch) break; // 如果已找到匹配项,跳出内层循环
+                
                 // 检查val是否在range区间内
                 if (configItem.range && Array.isArray(configItem.range) && configItem.range.length === 2) {
                     const [min, max] = configItem.range
                     
-                    if (sampleVal >= min && sampleVal < max) {
+                    // 兼容区间判断:如果min和max相等,则精确匹配;否则使用范围匹配
+                    let isMatch = false;
+                    if (min === max) {
+                        // 精确匹配:当区间为[0,0]时,兼容浮点数,将sampleVal转换为整数进行比较
+                        isMatch = Math.floor(sampleVal) === min;
+                    } else {
+                        // 范围匹配:当区间为[0,1]时,值在[0,1)范围内匹配
+                        isMatch = sampleVal >= min && sampleVal < max;
+                    }
+                    
+                    if (isMatch) {
                         matchedResults.push({
                             ...sample, // 保留原始样本数据
                             key: legendItem.key || legendItem.name || 'unknown',
@@ -165,36 +188,37 @@ const matchDataByVal = (sampleData, legendConfig) => {
                             label: configItem.label,
                             name: configItem.name,
                         })
+                        foundMatch = true; // 标记已找到匹配项
+                        break; // 跳出内层循环
                     }
                 }
-            })
-        })
+            }
+        }
     })
     
     return matchedResults
 }
 
-function handleActive({name,key}){
-    childrenData.value = []
-    const menuItem = mainMenuArr.value.find(item =>item.name===key)
-    active.value = menuItem.name;
-    childrenData.value = menuItem.btnGroup
-    checkedChildren.value = [name]
-
-    emit('handleTab',{name:menuItem.name,id:active.value,isUpdate:true,params:name, legend: menuItem?.legend, colorObj: menuItem?.colorObj})
+function handleActiveTab({id,key,monitorItems}){
+    checkedChildren.value = []
+    active.value = key
+    checkedChildren.value = [id]
+    monitorData.value = monitorItems || []
+    handleCheckedChange(checkedChildren.value)
 }
 
 const active = ref("果园总览");
 const monitorData = ref([]);
-const handleHomeTab = ({ id, name , monitorItems}) => {
+const handleHomeTab = ({ name , monitorItems}) => {
     active.value = name;
-    childrenData.value = []
+    checkedChildren.value = []
     monitorData.value = monitorItems || []
-    checkedChildren.value = [] // 清空选中的值
     
-    emit('handleTab',{name,id, legend: menuItem?.legend, colorObj: menuItem?.colorObj})
-    // eventBus.emit("changePointType", {legend: menuItem?.legend, colorObj: menuItem?.colorObj})
-    eventBus.emit('handleTab',name)
+    // 默认勾选第一项
+    if (monitorItems && monitorItems.length > 0) {
+        checkedChildren.value = [monitorItems[0].id]
+        handleCheckedChange(checkedChildren.value)
+    }
 };
 
 const list = ref([]);

+ 1 - 1
src/views/addFarm/index.vue

@@ -74,7 +74,7 @@
                                     </el-form-item>
                                     <el-form-item label="服务亩数" prop="regionId">
                                         <div class="mode-select">
-                                            {{ dynamicValidateForm.area }}亩
+                                            {{ parseFloat(dynamicValidateForm.area || 0).toFixed(2) }}亩
                                         </div>
                                     </el-form-item>
                                 </div>

+ 50 - 584
src/views/home/album_compoents/albumCarousel.vue

@@ -1,9 +1,9 @@
 <template>
     <el-dialog
         v-model="dialogVisible"
-        width="60%"
+        width="72%"
         align-center
-        class="picture-preview-wrap v-dialog"
+        class="picture-preview-wrap"
         :show-close="false"
         append-to-body
         @close="closeDialog"
@@ -20,280 +20,69 @@
                     :images="images"
                     :lock="lock"
                 ></album-carousel-item>
-            </div>
-            <div class="file-wrap">
-                <div class="file-title">
-                    <img src="@/assets/images/common/chart-yellow.png" alt="" />
-                    作物档案
-                    <span class="tag" v-if="showTag">小农户</span>
-                </div>
-                <div class="overview-file">
-                    <div class="box-title">总体档案</div>
-                    <div class="base-data">
-                        <div class="base-item" v-for="item in photoBaseData" :key="item.label">
-                            <template v-if="item.value">
-                                <span class="label">{{ item.label }}</span>
-                                <div class="value">{{ item.value }}</div>
-                            </template>
-                        </div>
-                    </div>
-                    <div class="list">
-                        <div class="list-item" v-for="item in photoList" :key="item.key">
-                            <div class="list-name">
-                                <img src="@/assets/images/common/title-icon.png" alt="" />
-                                {{ item.key }}
-                            </div>
-                            {{ item.statement }}
-                        </div>
-                    </div>
-                </div>
-
-                <div class="overview-file">
-                    <div class="box-title">产量详情</div>
-                    <div class="box-wrap">
-                        <div
-                            class="box-item"
-                            v-for="(item, index) in outputBox"
-                            :key="index"
-                            @click="toggleAcitve(item.name)"
-                            :class="{ active: activeOuput === item.name }"
-                        >
-                            <template v-if="item.value">
-                                <div class="item-name">{{ item.name }}</div>
-                                <div class="item-val">{{ item.value }}</div>
-                            </template>
-                        </div>
-                    </div>
-                </div>
-
-                <div class="overview-file">
-                    <div class="box-title">质量详情</div>
-                    <div class="box-wrap">
-                        <div
-                            class="box-item"
-                            v-for="(item, index) in qualityBox"
-                            :key="index"
-                            @click="toggleAcitve(item.name)"
-                            :class="{ active: activeOuput === item.name }"
-                        >
-                            <template v-if="item.value">
-                                <div class="item-name">{{ item.name }}</div>
-                                <div class="item-val">{{ item.value }}</div>
-                            </template>
-                        </div>
-                    </div>
-                </div>
-
-                <el-popover placement="top-end" :width="350" trigger="click" effect="dark">
-                    <template #reference>
-                        <div class="feedback-btn">意见反馈</div>
-                    </template>
-                    <div class="feedback-cont">
-                        <div class="tips">请选择您发现的实际情况:</div>
-                        <div class="tab-group" v-for="(item, index) in tabList" :key="index">
-                            <div class="tab-title">
-                                <div class="text">
-                                    <div class="line"></div>
-                                    <span>{{ item.title }}</span>
-                                </div>
-                                <div class="toggle" @click="handleToogle(index)" v-if="item.list.length > 3">
-                                    <span>{{ item.toggle ? "展开更多" : "收起" }}</span>
-                                    <el-icon v-show="item.toggle"><ArrowDown /></el-icon>
-                                    <el-icon v-show="!item.toggle"><ArrowUp /></el-icon>
-                                </div>
-                            </div>
-                            <div class="tab-list" :style="{ height: item.toggle ? '46px' : '93px' }">
-                                <div
-                                    class="tab-item"
-                                    :class="{ active: ele.active }"
-                                    v-for="(ele, idx) in item.list"
-                                    @click="handleActiveFeed(index, idx)"
-                                    :key="idx"
-                                >
-                                    {{ ele.name }}
-                                </div>
-                            </div>
-                        </div>
-                        <el-input
-                            class="feedback-input"
-                            :autosize="{ maxRows: 3 }"
-                            type="textarea"
-                            v-model="remarkVal"
-                            size="large"
-                            placeholder="备注:请写下具体内容吧~"
-                        >
-                        </el-input>
-                        <div class="feedback-btn" @click="handleSubmit">提交反馈</div>
-                    </div>
-                </el-popover>
-            </div>
+              </div>
+            <file-wrap 
+                ref="fileWrapRef"
+                :sampleId="currentSampleId"
+                :showTag="showTag"
+                @update:activeOutput="handleActiveOutput"
+            ></file-wrap>
         </div>
     </el-dialog>
 </template>
 
 <script setup>
-import { ref, computed, onMounted, onUnmounted } from "vue";
+import { ref} from "vue";
 import "./cacheImg.js";
 import AlbumCarouselItem from "./albumCarouselItem";
+import FileWrap from "@/components/FileWrap.vue";
 import { dateFormat } from "@/utils/date_util.js";
 import eventBus from "@/api/eventBus";
-import { ElMessage } from "element-plus";
 
 const lock = ref(false);
 const farmId = ref(766);
 const nameRef = ref("");
 
-const isLoadingImg = ref(true);
+const isLoadingImg = ref(true)
 const images = ref(null);
 const dialogVisible = ref(false);
+const currentSampleId = ref(null);
+const fileWrapRef = ref(null);
 // 获取当前日期
 const currentDate = new Date();
 // 获取当前日期的前一个月
 const startDate = new Date(currentDate);
 startDate.setMonth(currentDate.getMonth() - 1);
 
-// 格式化日期
-const formattedStartDate = dateFormat(startDate, "YY-mm-dd");
-const formattedEndDate = dateFormat(currentDate, "YY-mm-dd");
-
-eventBus.on("change:watermark", function (name) {
-    nameRef.value = name;
-});
-
-const outputBox = ref([]);
-const qualityBox = ref([]);
-const photoBaseData = ref([]);
+eventBus.on("change:watermark",function(name){
+  nameRef.value = name
+})
+
+const showTag = ref(false)
+eventBus.on("click:point",function({farmId,sampleId, data}){
+  sampleId = data.id;
+  currentSampleId.value = sampleId;
+  
+  // 调用子组件的方法获取数据
+  if (fileWrapRef.value) {
+    fileWrapRef.value.getSampleFiles(sampleId);
+  }
+  
+  isLoadingImg.value = true
+  let startDate = new Date(currentDate);
+  startDate.setMonth(currentDate.getMonth() - 2);
 
-const remarkVal = ref("");
-const input = ref("");
-const tabList = ref([
-    {
-        title: "病害",
-        toggle: true,
-        list: [
-            {
-                name: "叶瘿蚊",
-                active: false,
-            },
-            {
-                name: "卷叶蛾",
-                active: false,
-            },
-            {
-                name: "毛毡病",
-                active: false,
-            },
-            {
-                name: "炭疽病",
-                active: false,
-            },
-            {
-                name: "蒂蛀虫",
-                active: false,
-            },
-        ],
-    },
-    {
-        title: "虫害",
-        toggle: true,
-        list: [
-            {
-                name: "蝽象",
-                active: false,
-            },
-            {
-                name: "其它",
-                active: false,
-            },
-        ],
-    },
-    {
-        title: "物候期",
-        toggle: true,
-        list: [
-            {
-                name: "蝽象",
-                active: false,
-            },
-            {
-                name: "其它",
-                active: false,
-            },
-        ],
-    },
-]);
-const handleToogle = (index) => {
-    tabList.value[index].toggle = !tabList.value[index].toggle;
-};
-const handleActiveFeed = (index, idx) => {
-    tabList.value[index].list[idx].active = !tabList.value[index].list[idx].active;
-};
-const handleSubmit = () => {
-    ElMessage.success("感谢您的反馈");
-    input.value = "";
-    showFeedback.value = false;
-};
-
-function resetData() {
-    outputBox.value = [
-        { id: 1, name: "产量估计", value: "" },
-        { id: 2, name: "高质果率", value: "" },
-        { id: 3, name: "坐果率", value: "" },
-    ];
-    qualityBox.value = [
-        { id: 5, name: "通风率", value: "" },
-        { id: 6, name: "透光率", value: "" },
-        { id: 7, name: "病虫比例", value: "" },
-    ];
-    photoBaseData.value = [
-        {
-            label: "品种",
-            value: "--",
-        },
-        {
-            label: "冠幅表面积",
-            value: "--",
-        },
-        {
-            label: "总枝条",
-            value: "--",
-        },
-        {
-            label: "树龄",
-            value: "--",
-        },
-    ];
-}
-
-const showTag = ref(false);
-eventBus.on("click:point", function ({ farmId, sampleId, data }) {
-    sampleId = data.id;
-    getSampleFiles(data.geoHashSample);
-    photoBaseData.value[0].value = data.pz;
-    isLoadingImg.value = true;
-    let startDate = new Date(currentDate);
-    startDate.setFullYear(currentDate.getFullYear() - 2);
-
-    // 格式化日期
-    let params = { sampleId, farmId, startDate: dateFormat(startDate, "YY-mm-dd") };
-    VE_API.miniimage.list(params).then((res) => {
-        if (res.code === 0) {
-            dialogVisible.value = true;
-            images.value = res.data;
-            isLoadingImg.value = false;
-        }
-    });
-    showTag.value = data.nonghu == 1 ? true : false;
-    //   photoBaseData.value[0].value = data.pz;
-    //   photoBaseData.value[1].value = data?.sgbmj ? data?.sgbmj + "平方米" : "--";
-    //   photoBaseData.value[2].value = data?.zzts ? data.zzts + "" : "--";
-    //   photoBaseData.value[3].value = data?.sl ? data?.sl + "年" : "--";
-    //   outputBox.value[0].value = data?.cl ? (data.cl + "斤") : "--";
-    //   outputBox.value[1].value = data?.spgl? (data.spgl + "%") : "--";
-    //   qualityBox.value[0].value = data?.tfl? (data.tfl + "%") : "--";
-    //   qualityBox.value[1].value = data?.tgl? (data.tgl + "%") : "--";
-    //   qualityBox.value[2].value = data?.dxtj? (data.dxtj + "%") : "--";
-});
+// 格式化日期
+  let params = {sampleId,farmId,startDate:dateFormat(startDate, "YY-mm-dd")}
+  VE_API.miniimage.list(params, {Global: false}).then(res => {
+      if(res.code === 0){
+        dialogVisible.value = true
+      images.value = res.data
+      isLoadingImg.value = false
+    }
+  })
+  showTag.value = data.nonghu == 1 ? true : false
+})
 
 eventBus.off("albumCarousel", toggleActiveImg);
 eventBus.on("albumCarousel", toggleActiveImg);
@@ -303,97 +92,18 @@ function toggleActiveImg(index) {
     currentIndex.value = index;
 }
 
-const getSampleFiles = (geoHash) => {
-    resetData();
-    const farmId = sessionStorage.getItem("farmId");
-    VE_API.mini_farm.getSampleFiles({ geoHashSample: geoHash, farmId }).then(({ data, extData }) => {
-        photoBaseData.value[0].value = data.meta_info.type_id;
-        let i = 1;
-        for (let key of Object.keys(data.meta_info)) {
-            let dict = extData.find((item) => item.field == key);
-            if (dict) {
-                photoBaseData.value[i].label = dict.label;
-                if (dict.field === "crown") {
-                    photoBaseData.value[i].value = data.meta_info[dict.field];
-                    let pj = Math.sqrt(photoBaseData.value[i].value * 1.2).toFixed(1);
-                    photoBaseData.value[i].value =
-                        photoBaseData.value[i].value.toFixed(1) + dict.unit + "(蓬径" + pj + "米)";
-                } else {
-                    photoBaseData.value[i].value = data.meta_info[dict.field] + dict.unit;
-                }
-                i++;
-            }
-        }
-        i = 0;
-        for (let key of Object.keys(data.production_info)) {
-            let dict = extData.find((item) => item.field == key);
-            if (dict) {
-                outputBox.value[i].name = dict.label;
-                if (dict.label === "产量估计") {
-                    data.production_info[dict.field] =
-                        data.production_info[dict.field] < 50
-                            ? (data.production_info[dict.field] * 3).toFixed(0)
-                            : data.production_info[dict.field];
-                }
-                outputBox.value[i].value = data.production_info[dict.field] + dict.unit;
-                i++;
-            }
-        }
-
-        i = 0;
-        for (let key of Object.keys(data.ecology_info)) {
-            let dict = extData.find((item) => item.field == key);
-            if (dict) {
-                qualityBox.value[i].name = dict.label;
-                qualityBox.value[i].value = data.ecology_info[dict.field] + dict.unit;
-                i++;
-            }
-        }
-
-        photoList.value[0].key = data.meta_info.dp_alert_info.key;
-        photoList.value[0].statement = data.meta_info.dp_alert_info.statement;
-        photoList.value[1].key = data.meta_info.grow_alert_info.key;
-        photoList.value[1].statement = data.meta_info.grow_alert_info.statement;
-        photoList.value[2].key = data.meta_info.nutrition_info.key;
-        photoList.value[2].statement = data.meta_info.nutrition_info.statement;
-        photoList.value[3].key = data.meta_info.prescription_info.key;
-        photoList.value[3].statement = data.meta_info.prescription_info.statement;
-    });
-};
-
-const photoList = ref([
-    { key: "病虫", statement: "--" },
-    { key: "异常", statement: "--" },
-    { key: "营养", statement: "--" },
-    { key: "农事", statement: "--" },
-]);
-
-const activeOuput = ref(null);
-
-// 产量详情
-function toggleAcitve(name) {
-    activeOuput.value = name;
-    if (name.indexOf("开花") > -1) {
-        eventBus.emit("change:watermark", "开花目标框");
-    } else if (name.indexOf("花穗") > -1) {
-        eventBus.emit("change:watermark", "花穗目标框");
-    } else if (name.indexOf("雄花") > -1) {
-        eventBus.emit("change:watermark", "雄花目标框");
-    } else if (name.indexOf("枝条数") > -1) {
-        eventBus.emit("change:watermark", "");
-    } else {
-        eventBus.emit("change:watermark", "");
-    }
+// 处理子组件的 activeOutput 更新事件
+const handleActiveOutput = (name) => {
+    // 可以在这里处理父组件需要响应的逻辑
+    console.log('Active output changed:', name);
 }
 
 function closeDialog() {
-    activeOuput.value = null;
-    eventBus.emit("change:watermark", "");
-    eventBus.emit("resetImgIndex");
+    // 调用子组件的重置方法
+    if (fileWrapRef.value) {
+        fileWrapRef.value.resetState();
+    }
 }
-
-// 质量详情
-function toggleQualityAcitve() {}
 </script>
 
 <style lang="scss" scoped>
@@ -404,254 +114,10 @@ function toggleQualityAcitve() {}
         min-width: 780px;
         min-height: 300px;
     }
-    .file-wrap {
-        background: url("@/assets/images/home/file-bg.png") no-repeat top center / 100% 100%;
-        margin-left: 12px;
-        padding: 12px;
-        .file-title {
-            font-size: 20px;
-            color: #ffd489;
-            display: flex;
-            align-items: center;
-
-            .tag {
-                border: 1px solid #ffd489;
-                border-radius: 4px;
-                font-size: 12px;
-                display: inline-block;
-                width: 44px;
-                height: 20px;
-                text-align: center;
-                line-height: 18px;
-                margin-left: 3px;
-                padding: 1px 4px;
-            }
-        }
-        .overview-file {
-            padding-top: 12px;
-            .box-title {
-                font-size: 16px;
-                padding-left: 13px;
-                margin-bottom: 12px;
-                position: relative;
-                display: flex;
-                justify-content: space-between;
-                color: #fff;
-                &::before {
-                    content: "";
-                    position: absolute;
-                    left: 0;
-                    top: 3px;
-                    width: 3px;
-                    height: 16px;
-                    background: #fff;
-                    border-radius: 11px;
-                }
-            }
-            .title {
-                color: #f3c11d;
-                font-size: 16px;
-                font-family: "PangMenZhengDao";
-                margin-bottom: 20px;
-                .big {
-                    width: 13px;
-                    height: 13px;
-                    margin: -10px 0 0 4px;
-                }
-                .small {
-                    width: 7px;
-                    height: 7px;
-                    margin-left: -3px;
-                }
-            }
-            .base-data {
-                background: rgba(207, 207, 207, 0.1);
-                border-radius: 4px;
-                padding: 6px 0;
-                display: flex;
-                .base-item {
-                    flex: 1;
-                    text-align: center;
-                    .label {
-                        font-size: 12px;
-                        color: #666666;
-                    }
-                    .value {
-                        padding-top: 2px;
-                        font-size: 16px;
-                        color: #ffffff;
-                    }
-                }
-                .base-item + .base-item {
-                    border-left: 1px solid rgba(102, 102, 102, 0.42);
-                }
-            }
-            .list {
-                margin-top: 15px;
-                width: max-content;
-                font-size: 14px;
-                .list-item {
-                    color: #bbbbbb;
-                    display: flex;
-                    margin-bottom: 8px;
-                    .list-name {
-                        color: #f3c11d;
-                        margin-right: 6px;
-                        img {
-                            width: 17px;
-                            height: 13px;
-                        }
-                    }
-                }
-            }
-        }
-        .overview-file + .overview-file {
-            margin-top: 4px;
-        }
-        .feedback-btn {
-            margin: 16px auto 10px auto;
-            color: rgba(255, 255, 255, 0.6);
-            background: rgba(255, 255, 255, 0.15);
-            border-radius: 20px;
-            padding: 5px 26px;
-            width: fit-content;
-            cursor: pointer;
-        }
-        .box-wrap {
-            display: flex;
-            .box-item {
-                min-width: 110px;
-                box-sizing: border-box;
-                display: flex;
-                flex-direction: column;
-                justify-content: center;
-                align-items: center;
-                padding: 6px;
-                background: rgba(207, 207, 207, 0.1);
-                border-radius: 4px;
-                border: 1px solid rgba(207, 207, 207, 0.1);
-                cursor: pointer;
-                .item-name {
-                    font-size: 12px;
-                    color: #666666;
-                    width: max-content;
-                }
-                .item-val {
-                    font-size: 18px;
-                    color: #fff;
-                    width: max-content;
-                    padding-top: 3px;
-                }
-                &.active {
-                    background: rgba(255, 212, 137, 0.16);
-                    border: 1px solid #ffd489;
-                    .item-name {
-                        color: #bbbbbb;
-                    }
-                }
-            }
-            .box-item + .box-item {
-                margin-left: 8px;
-            }
-        }
-    }
 }
 </style>
 <style lang="scss">
 .picture-preview-wrap {
     background: none;
 }
-
-.feedback-cont {
-    background: #303030;
-    border-radius: 5px;
-    padding: 4px 0px;
-    color: #ffffff;
-    .tips {
-        font-size: 16px;
-    }
-    .tab-group {
-        margin-top: 12px;
-        .tab-title {
-            display: flex;
-            justify-content: space-between;
-            align-items: center;
-            .text {
-                color: #666666;
-                display: flex;
-                align-items: center;
-                .line {
-                    width: 3px;
-                    height: 12px;
-                    background: #999999;
-                    border-radius: 2px;
-                    margin-right: 5px;
-                }
-            }
-            .toggle {
-                color: #999999;
-                font-size: 12px;
-                cursor: pointer;
-            }
-        }
-    }
-    .tab-list {
-        display: flex;
-        flex-wrap: wrap;
-        margin-top: 8px;
-        height: 46px;
-        overflow: hidden;
-        transition: all 0.3s;
-        .tab-item {
-            cursor: pointer;
-            background: rgba(233, 233, 233, 0.1);
-            font-size: 14px;
-            height: 37px;
-            line-height: 37px;
-            width: 31%;
-            border-radius: 5px;
-            box-sizing: border-box;
-            text-align: center;
-            margin-bottom: 10px;
-            &.active {
-                background: #ffd489;
-                color: #000000;
-            }
-        }
-        .tab-item + .tab-item {
-            margin-right: 10px;
-        }
-        .tab-item:nth-child(3n) {
-            margin-right: 0;
-        }
-        .tab-item:first-child {
-            margin-right: 10px;
-        }
-    }
-    .input {
-        padding-bottom: 16px;
-        border-bottom: 1px solid rgba(180, 180, 180, 0.3);
-    }
-    .feedback-input {
-        padding: 10px 0;
-        .el-input__wrapper, .el-textarea__inner {
-            box-shadow: 0 0 0 1px #cacaca inset;
-            background: none;
-            color: #fff;
-        }
-        .el-input__inner {
-            color: #fff;
-        }
-    }
-    .feedback-btn {
-        cursor: pointer;
-        padding: 10px;
-        background-image: linear-gradient(140deg, #ffd887, #ed9e1e);
-        border-radius: 25px;
-        color: #fff;
-        width: 66%;
-        text-align: center;
-        margin: 10px auto 0 auto;
-    }
-}
 </style>

+ 67 - 462
src/views/home/album_compoents/compareDialog.vue

@@ -1,15 +1,15 @@
 <template>
     <el-dialog
         v-model="dialogVisible"
-        width="80%"
+        width="100%"
         align-center
         class="picture-preview-wrap v-dialog"
-        :show-close="false"
+        :show-close="true"
         append-to-body
     >
         <div class="picture-file">
-            <div class="compare-l">
-                <div class="left-img">
+            <div class="compare-l" @click.stop="dialogVisible=false">
+                <div class="left-img" @click.stop="noFun">
                     <album-carousel-item
                         lbum-carousel-item
                         v-if="images"
@@ -20,71 +20,18 @@
                         :lock="lock"
                     ></album-carousel-item>
                 </div>
-                <div class="file-wrap">
-                    <div class="file-title">
-                        <img src="@/assets/images/common/chart-yellow.png" alt="" />
-                        作物档案
-                        <span v-show="showTag" class="tag">小农户</span>
-                    </div>
-
-                    <div class="box-wrap">
-                        <div class="overview-file">
-                            <div class="box-title">总体档案</div>
-                            <div class="base-data">
-                                <div class="base-item" v-for="item in photoBaseData" :key="item.label">
-                                    <span class="label">{{ item.label }}</span>
-                                    <div class="value">{{ item.value }}</div>
-                                </div>
-                            </div>
-                            <div class="list">
-                                <div class="list-item" v-for="item in photoList" :key="item.key">
-                                    <div class="list-name">
-                                        <img src="@/assets/images/common/title-icon.png" alt="" />
-                                        {{ item.key }}
-                                    </div>
-                                    {{ item.statement }}
-                                </div>
-                            </div>
-                        </div>
-
-                        <div class="box-r">
-                            <div class="overview-file">
-                                <div class="box-title">产量详情</div>
-                                <div class="box-wrap">
-                                    <div
-                                        class="box-item"
-                                        v-for="(item, index) in outputBox"
-                                        :key="index"
-                                        @click="toggleAcitve(item.name)"
-                                        :class="{ active: activeOuput === item.name }"
-                                    >
-                                        <div class="item-name">{{ item.name }}</div>
-                                        <div class="item-val">{{ item.value }}</div>
-                                    </div>
-                                </div>
-                            </div>
-
-                            <div class="overview-file">
-                                <div class="box-title">质量详情</div>
-                                <div class="box-wrap">
-                                    <div
-                                        class="box-item"
-                                        v-for="(item, index) in qualityBox"
-                                        :key="index"
-                                        @click="toggleQualityAcitve(item.name)"
-                                        :class="{ active: activeOuput === item.name }"
-                                    >
-                                        <div class="item-name">{{ item.name }}</div>
-                                        <div class="item-val">{{ item.value }}</div>
-                                    </div>
-                                </div>
-                            </div>
-                        </div>
-                    </div>
+                <div class="bottom-wrap" @click.stop="noFun">
+                    <file-wrap 
+                        ref="fileWrapRef1"
+                        :sampleId="currentSampleId1"
+                        :showTag="showTag"
+                        @update:activeOutput="handleActiveOutput1"
+                        className="styleName2"
+                    ></file-wrap>
                 </div>
             </div>
-            <div class="compare-r">
-                <div class="left-img">
+            <div class="compare-r" @click.stop="dialogVisible=false">
+                <div class="left-img" @click.stop="noFun">
                     <album-carousel-item
                         lbum-carousel-item
                         v-if="images2"
@@ -95,65 +42,14 @@
                         :lock="lock"
                     ></album-carousel-item>
                 </div>
-                <div class="file-wrap">
-                    <div class="file-title">
-                        <img src="@/assets/images/common/chart-yellow.png" alt="" />
-                        作物档案
-                        <span v-show="showTag2" class="tag">小农户</span>
-                    </div>
-                    <div class="box-wrap">
-                        <div class="overview-file">
-                            <div class="box-title">总体档案</div>
-                            <div class="base-data">
-                                <div class="base-item" v-for="item in photoBaseData2" :key="item.label">
-                                    <span class="label">{{ item.label }}</span>
-                                    <div class="value">{{ item.value }}</div>
-                                </div>
-                            </div>
-                            <div class="list">
-                                <div class="list-item" v-for="item in photoList2" :key="item.key">
-                                    <div class="list-name">
-                                        <img src="@/assets/images/common/title-icon.png" alt="" />
-                                        {{ item.key }}
-                                    </div>
-                                    {{ item.statement }}
-                                </div>
-                            </div>
-                        </div>
-                        <div class="box-r">
-                            <div class="overview-file">
-                                <div class="box-title">产量详情</div>
-                                <div class="box-wrap">
-                                    <div
-                                        class="box-item"
-                                        v-for="(item, index) in outputBox2"
-                                        :key="index"
-                                        @click="toggleAcitve2(item.name)"
-                                        :class="{ active: activeOuput2 === item.name }"
-                                    >
-                                        <div class="item-name">{{ item.name }}</div>
-                                        <div class="item-val">{{ item.value }}</div>
-                                    </div>
-                                </div>
-                            </div>
-
-                            <div class="overview-file">
-                                <div class="box-title">质量详情</div>
-                                <div class="box-wrap">
-                                    <div
-                                        class="box-item"
-                                        v-for="(item, index) in qualityBox2"
-                                        :key="index"
-                                        @click="toggleQualityAcitve2(item.name)"
-                                        :class="{ active: activeOuput2 === item.name }"
-                                    >
-                                        <div class="item-name">{{ item.name }}</div>
-                                        <div class="item-val">{{ item.value }}</div>
-                                    </div>
-                                </div>
-                            </div>
-                        </div>
-                    </div>
+                <div class="bottom-wrap" @click.stop="noFun">
+                    <file-wrap 
+                        ref="fileWrapRef2"
+                        :sampleId="currentSampleId2"
+                        :showTag="showTag2"
+                        @update:activeOutput="handleActiveOutput2"
+                        className="styleName2"
+                    ></file-wrap>
                 </div>
             </div>
         </div>
@@ -161,10 +57,10 @@
 </template>
 
 <script setup>
-import { ref, computed, onMounted, onUnmounted } from "vue";
+import { ref } from "vue";
 import "./cacheImg.js";
 import AlbumCarouselItem from "./albumCarouselItem";
-import { dateFormat } from "@/utils/date_util.js";
+import FileWrap from "@/components/FileWrap.vue";
 import eventBus from "@/api/eventBus";
 
 const lock = ref(false);
@@ -178,138 +74,66 @@ const isLoadingImg = ref(true);
 const images = ref(null);
 const images2 = ref(null);
 const dialogVisible = ref(false);
+
+function noFun() {
+    return false;
+}
+
+// FileWrap 组件引用
+const fileWrapRef1 = ref(null);
+const fileWrapRef2 = ref(null);
+const currentSampleId1 = ref(null);
+const currentSampleId2 = ref(null);
 // 获取当前日期
 const currentDate = new Date();
 // 获取当前日期的前一个月
 const startDate = new Date(currentDate);
 startDate.setMonth(currentDate.getMonth() - 1);
 
-// 格式化日期
-const formattedStartDate = dateFormat(startDate, "YY-mm-dd");
-const formattedEndDate = dateFormat(currentDate, "YY-mm-dd");
-
 eventBus.on("change:watermark", function (name) {
     nameRef.value = name;
 });
 
-const outputBox = ref([
-    { id: 1, name: "产量估计", value: "" },
-    { id: 2, name: "高质果率", value: "" },
-    { id: 3, name: "坐果率", value: "" },
-]);
-
-const qualityBox = ref([
-    { id: 5, name: "通风率", value: "" },
-    { id: 6, name: "透光率", value: "" },
-    { id: 7, name: "病虫比例", value: "" },
-]);
-const outputBox2 = ref([
-    { id: 1, name: "产量估计", value: "" },
-    { id: 2, name: "高质果率", value: "" },
-    { id: 3, name: "坐果率", value: "" },
-]);
 
-const qualityBox2 = ref([
-    { id: 5, name: "通风率", value: "" },
-    { id: 6, name: "透光率", value: "" },
-    { id: 7, name: "病虫比例", value: "" },
-]);
-
-const showTag = ref(false)
-const showTag2 = ref(false)
+const showTag = ref(false);
+const showTag2 = ref(false);
 eventBus.on("showCompareDialog", function (compareArr) {
-    console.log("compareArr", compareArr);
-    images.value = []
-    images2.value = []
-    compareArr.map((item, index) => {
+    images.value = [];
+    images2.value = [];
+    
+    compareArr.forEach((item, index) => {
         dialogVisible.value = true;
+        
         if (index === 0) {
-            farmId.value = item.farmId
-            sampleId.value = item.sampleId
-            VE_API.miniimage.list({ farmId: item.farmId, sampleId: item.sampleId }).then((res) => {
+            farmId.value = item.farmId;
+            sampleId.value = item.sampleId;
+            currentSampleId1.value = item.data.id;
+            
+            // 获取图片数据
+            VE_API.miniimage.list({ farmId: item.farmId, sampleId: item.sampleId }, {Global: false}).then((res) => {
                 if (res.code === 0) {
                     images.value = res.data;
                 }
             });
+            
             const dataItem = item.data;
             showTag.value = dataItem.nonghu == 1 ? true : false;
-
-            VE_API.mini_farm.getSampleFiles({ geoHashSample: dataItem.geoHashSample }).then(({data}) => {
-                photoBaseData.value[0].value = dataItem.pz;
-                photoBaseData.value[1].value = data.meta_info.crown + "平方米";
-                photoBaseData.value[2].value = data.meta_info.branch_num ;
-
-            photoBaseData.value[3].value = data.meta_info.age + "年"
-            photoList.value[0].key = data.meta_info.dp_alert_info.key
-            photoList.value[0].statement = data.meta_info.dp_alert_info.statement
-            photoList.value[1].key = data.meta_info.grow_alert_info.key
-            photoList.value[1].statement = data.meta_info.grow_alert_info.statement
-            photoList.value[2].key = data.meta_info.nutrition_info.key
-            photoList.value[2].statement = data.meta_info.nutrition_info.statement
-            photoList.value[3].key = data.meta_info.prescription_info.key
-            photoList.value[3].statement = data.meta_info.prescription_info.statement
-            outputBox.value[0].value = data.production_info.production + "斤"
-            outputBox.value[1].value = data.production_info.quality.toFixed(0) + "%"
-            outputBox.value[2].value = data.production_info.cihua_ratio ? (data.production_info.cihua_ratio.toFixed(0) + "%") : "--"
-            qualityBox.value[0].value = data.ecology_info.ventilation + "%"
-            qualityBox.value[1].value = data.ecology_info.transmittance + "%"
-            qualityBox.value[2].value = data.ecology_info.dp_situation+"%"
-            });
-            // qualityBox.value[2].value = data.dxtj ? data.dxtj + "%" : "--";
         } else {
-            farmId2.value = item.farmId
-            sampleId2.value = item.sampleId
-            VE_API.miniimage.list({ farmId: item.farmId, sampleId: item.sampleId }).then((res) => {
+            farmId2.value = item.farmId;
+            sampleId2.value = item.sampleId;
+            currentSampleId2.value = item.data.id;
+            
+            // 获取图片数据
+            VE_API.miniimage.list({ farmId: item.farmId, sampleId: item.sampleId }, {Global: false}).then((res) => {
                 if (res.code === 0) {
                     images2.value = res.data;
                 }
             });
+            
             const dataItem = item.data;
             showTag2.value = dataItem.nonghu == 1 ? true : false;
-
-            VE_API.mini_farm.getSampleFiles({ geoHashSample: dataItem.geoHashSample }).then(({data}) => {
-                photoBaseData2.value[0].value = dataItem.pz;
-                photoBaseData2.value[1].value = data.meta_info.crown + "平方米";
-                photoBaseData2.value[2].value = data.meta_info.branch_num ;
-
-                photoBaseData2.value[3].value = data.meta_info.age + "年"
-                photoList2.value[0].key = data.meta_info.dp_alert_info.key
-                photoList2.value[0].statement = data.meta_info.dp_alert_info.statement
-                photoList2.value[1].key = data.meta_info.grow_alert_info.key
-                photoList2.value[1].statement = data.meta_info.grow_alert_info.statement
-                photoList2.value[2].key = data.meta_info.nutrition_info.key
-                photoList2.value[2].statement = data.meta_info.nutrition_info.statement
-                photoList2.value[3].key = data.meta_info.prescription_info.key
-                photoList2.value[3].statement = data.meta_info.prescription_info.statement
-                outputBox2.value[0].value = data.production_info.production + "斤"
-                outputBox2.value[1].value = data.production_info.quality.toFixed(0) + "%"
-                outputBox2.value[2].value = data.production_info.cihua_ratio ? (data.production_info.cihua_ratio?.toFixed(0) + "%") : "--"
-                qualityBox2.value[0].value = data.ecology_info.ventilation + "%"
-                qualityBox2.value[1].value = data.ecology_info.transmittance + "%"
-                qualityBox2.value[2].value = data.ecology_info.dp_situation+"%"
-            });
         }
     });
-    //     isLoadingImg.value = true
-    //   let params = {sampleId,farmId}
-    //       dialogVisible.value = true
-    //   VE_API.miniimage.list(params).then(res => {
-    //     if(res.code === 0){
-    //       images.value = res.data
-    //       isLoadingImg.value = false
-    //     }
-    //   })
-    //   photoBaseData.value[0].value = data.pz;
-    //   photoBaseData.value[1].value = data.sgbmj + "米";
-    //   photoBaseData.value[2].value = data.cl + "斤";
-    //   photoBaseData.value[3].value = data.spgl + "%";
-    //   outputBox.value[0].value = data.hsl ? (data.hsl + "%") : "--";
-    //   outputBox.value[1].value = data.zzts? data.zzts : "--";
-    //   outputBox.value[2].value = data.khl? (data.khl + "%") : "--";
-    //   outputBox.value[3].value = data.xhl? (data.xhl + "%") : "--";
-    //   qualityBox.value[0].value = data.tfl? (data.tfl + "%") : "--";
-    //   qualityBox.value[1].value = data.tgl? (data.tgl + "%") : "--";
-    //   qualityBox.value[2].value = data.dxtj? (data.dxtj + "%") : "--";
 });
 
 eventBus.off("albumCarousel", toggleActiveImg);
@@ -320,89 +144,19 @@ function toggleActiveImg(index) {
     currentIndex.value = index;
 }
 
-const photoBaseData = ref([
-    {
-        label: "品种",
-        value: "--",
-    },
-    {
-        label: "冠幅表面积",
-        value: "--",
-    },
-    {
-        label: "总枝条",
-        value: "--",
-    },
-    {
-        label: "树龄",
-        value: "--",
-    },
-]);
-
-const photoBaseData2 = ref([
-    {
-        label: "品种",
-        value: "--",
-    },
-    {
-        label: "冠幅表面积",
-        value: "--",
-    },
-    {
-        label: "总枝条",
-        value: "--",
-    },
-    {
-        label: "树龄",
-        value: "--",
-    },
-]);
-
-const photoList = ref([
-    {key: "病虫", statement: "--"},
-    {key: "异常", statement: "--"},
-    {key: "营养", statement: "--"},
-    {key: "农事", statement: "--"},
-]);
-const photoList2 = ref([
-    {key: "病虫", statement: "--"},
-    {key: "异常", statement: "--"},
-    {key: "营养", statement: "--"},
-    {key: "农事", statement: "--"},
-]);
 
 
-const activeOuput = ref(1);
-const activeOuput2 = ref(1);
-
-// 产量详情
-function toggleAcitve(name) {
-    activeOuput.value = name;
-    toggleNamePic(name)
+// 处理左侧 FileWrap 组件的 activeOutput 更新事件
+const handleActiveOutput1 = (name) => {
+    // 可以在这里处理父组件需要响应的逻辑
 }
 
-function toggleNamePic(name) {
-    if (name.indexOf("开花") > -1) {
-        eventBus.emit("change:watermark", "开花目标框");
-    } else if (name.indexOf("花穗") > -1) {
-        eventBus.emit("change:watermark", "花穗目标框");
-    } else if (name.indexOf("雄花") > -1) {
-        eventBus.emit("change:watermark", "雄花目标框");
-    } else if (name.indexOf("枝条数") > -1) {
-        eventBus.emit("change:watermark", "");
-    } else {
-        eventBus.emit("change:watermark", "");
-    }
+// 处理右侧 FileWrap 组件的 activeOutput 更新事件
+const handleActiveOutput2 = (name) => {
+    // 可以在这里处理父组件需要响应的逻辑
 }
 
-// 质量详情
-function toggleQualityAcitve() {}
-function toggleQualityAcitve2() {}
-
-function toggleAcitve2 (name){
-    activeOuput.value = name;
-    toggleNamePic(name)
-}
+// FileWrap 组件现在会自动监听 sampleId 变化,无需手动调用
 
 </script>
 
@@ -413,164 +167,15 @@ function toggleAcitve2 (name){
     .left-img {
         // min-width: 500px;
         // width: 782px;
-        width: 36vw;
+        margin: 0 auto;
+        width: calc(50vw - 200px);
         // height: 580px;
     }
     .compare-l {
-        padding-right: 60px;
+        padding-right: 40px;
     }
-    .file-wrap {
-        margin-top: 16px;
-        background: url("@/assets/images/home/file-bg-w.png") no-repeat top center / 100% 100%;
-        padding: 12px;
-        .file-title {
-            font-size: 20px;
-            color: #ffd489;
-            .tag {
-                border: 1px solid #FFD489;
-                border-radius: 4px;
-                font-size: 12px;
-                display: inline-block;
-                width: 44px;
-                height: 20px;
-                text-align: center;
-                line-height: 18px;
-                margin-left: 3px;
-                padding: 1px 4px;
-            }
-        }
-        .box-wrap {
-            display: flex;
-            .box-r {
-                padding-left: 40px;
-            }
-        }
-        .overview-file {
-            padding-top: 20px;
-            .box-title {
-                font-size: 16px;
-                padding-left: 13px;
-                margin-bottom: 16px;
-                position: relative;
-                display: flex;
-                justify-content: space-between;
-                color: #fff;
-                &::before {
-                    content: "";
-                    position: absolute;
-                    left: 0;
-                    top: 3px;
-                    width: 3px;
-                    height: 16px;
-                    background: #fff;
-                    border-radius: 11px;
-                }
-            }
-            .title {
-                color: #f3c11d;
-                font-size: 16px;
-                font-family: "PangMenZhengDao";
-                margin-bottom: 20px;
-                .big {
-                    width: 13px;
-                    height: 13px;
-                    margin: -10px 0 0 4px;
-                }
-                .small {
-                    width: 7px;
-                    height: 7px;
-                    margin-left: -3px;
-                }
-            }
-            .base-data {
-                background: rgba(207, 207, 207, 0.1);
-                border-radius: 4px;
-                padding: 6px 0;
-                display: flex;
-                .base-item {
-                    flex: 1;
-                    text-align: center;
-                    padding: 0 4px;
-                    min-width: 50px;
-                    .label {
-                        font-size: 12px;
-                        color: #666666;
-                        width: max-content;
-                        display: block;
-                        margin: 0 auto;
-                        padding-bottom: 2px;
-                    }
-                    .value {
-                        padding-top: 2px;
-                        font-size: 16px;
-                        color: #ffffff;
-                        width: max-content;
-                        margin: 0 auto;
-                        display: block;
-                    }
-                }
-                .base-item + .base-item {
-                    border-left: 1px solid rgba(102, 102, 102, 0.42);
-                }
-            }
-            .list {
-                margin-top: 15px;
-                width: max-content;
-                font-size: 14px;
-                .list-item {
-                    color: #bbbbbb;
-                    display: flex;
-                    margin-bottom: 8px;
-                    .list-name {
-                        color: #f3c11d;
-                        margin-right: 6px;
-                        img {
-                            width: 17px;
-                            height: 13px;
-                        }
-                    }
-                }
-            }
-        }
-        .overview-file + .overview-file {
-            margin-top: 8px;
-        }
-        .box-wrap {
-            display: flex;
-            .box-item {
-                flex: 1;
-                display: flex;
-                flex-direction: column;
-                justify-content: center;
-                align-items: center;
-                padding: 6px 16px;
-                background: rgba(207, 207, 207, 0.1);
-                border-radius: 4px;
-                border: 1px solid rgba(207, 207, 207, 0.1);
-                cursor: pointer;
-                .item-name {
-                    font-size: 12px;
-                    color: #666666;
-                    width: max-content;
-                }
-                .item-val {
-                    font-size: 18px;
-                    color: #fff;
-                    width: max-content;
-                    padding-top: 3px;
-                }
-                &.active {
-                    background: rgba(255, 212, 137, 0.16);
-                    border: 1px solid #ffd489;
-                    .item-name {
-                        color: #bbbbbb;
-                    }
-                }
-            }
-            .box-item + .box-item {
-                margin-left: 8px;
-            }
-        }
+    .compare-r {
+        // padding-left: 60px;
     }
 }
 </style>

+ 0 - 421
src/views/home/components/homeFile - 副本副本.vue

@@ -1,421 +0,0 @@
-<template>
-    <div class="file-wrap yes-events"  ref="draggable" @mousedown="startDrag" :style="{ left: position.x + 'px', top: position.y + 'px' }">
-
-        <!-- 箭头 -->
-        <!-- <div class="arrow" @click="handleShrink('bottom')">
-            <el-icon class="icon" color="#141414"><DArrowLeft /></el-icon>
-        </div> -->
-        <div class="file-title">
-            <img src="@/assets/images/common/chart-yellow.png" alt="" />
-            果园档案
-        </div>
-
-        <div class="box-wrap">
-            <div class="overview-file">
-                <div class="box-title">总体档案</div>
-                <div class="base-data">
-                    <div
-                        class="base-item"
-                        v-for="(item, index) in photoBaseData"
-                        :key="item.label"
-                        @click.stop="toggleFileItem(item.label, index)"
-                    >
-                        <span class="label">{{ item.label }}</span>
-                        <div v-if="index === 0" class="value">
-                            <el-select
-                                v-model="item.speciesItemId"
-                                size="small"
-                                @change="changeSelect"
-                                class="type-select"
-                            >
-                                <el-option
-                                    v-for="item in selectOptions"
-                                    :key="item.speciesItemId"
-                                    :label="item.speciesItemName"
-                                    :value="item.speciesItemId"
-                                />
-                            </el-select>
-                        </div>
-                        <div v-else class="value">{{ item.value }}</div>
-                    </div>
-                </div>
-                <div class="list">
-                    <div class="list-item" v-for="item in photoList" :key="item.key">
-                        <div class="list-name">
-                            <img src="@/assets/images/common/title-icon.png" alt="" />
-                            {{ item.key }}
-                        </div>
-                        {{ item.statement }}
-                    </div>
-                </div>
-            </div>
-
-            <div class="box-r">
-                <div class="overview-file">
-                    <div class="box-title">产量信息</div>
-                    <div class="box-wrap">
-                        <div
-                            class="box-item"
-                            v-for=" (item, index) in outputBox"
-                            :key="index"
-                            @click="toggleAcitve(item.name, item.field)"
-                            :class="{ active: activeOuput === item.name }"
-                        >
-                            <div class="item-name">{{ item.name }}</div>
-                            <div class="item-val">
-                                {{ item.value }}<span>{{ item.unit }}</span>
-                            </div>
-                        </div>
-                    </div>
-                </div>
-
-
-                <div class="overview-file">
-                    <div class="box-title">生态评估</div>
-                    <div class="box-wrap">
-                        <div
-                            class="box-item"
-                            v-for="(item, index) in qualityBox"
-                            :key="index"
-                            @click="toggleAcitve(item.name, item.field)"
-                            :class="{ active: activeOuput === item.name }"
-                        >
-                            <div class="item-name">{{ item.name }}</div>
-                            <div class="item-val">
-                                {{ item.value }}<span>{{ item.unit }}</span>
-                            </div>
-                        </div>
-                    </div>
-                </div>
-            </div>
-        </div>
-    </div>
-</template>
-
-<script setup>
-import eventBus from "@/api/eventBus";
-import { onMounted, ref, onBeforeUnmount, reactive } from "vue";
-const outputBox = ref([
-    { id: 1, name: "种植面积", field: "area", value: "6800", unit: "亩" },
-    { id: 2, name: "亩产估计", field: "cl", value: "3400", unit: "斤/亩" },
-    { id: 3, name: "产量估计", field: "zuoguo_ratio",value: "1.2", unit: "万吨" },
-]);
-
-const qualityBox = ref([
-    { id: 5, name: "通风率", field: "tfl", value: "--", unit: "%" },
-    { id: 6, name: "透光率", field: "tgl", value: "--", unit: "%" },
-    { id: 7, name: "病虫比例", value: "--", unit: "%" },
-]);
-
-const photoBaseData = ref([
-    {
-        label: "品种",
-        value: "--",
-    },
-    {
-        label: "冠幅平均表面积",
-        value: "--",
-    },
-    {
-        label: "平均总枝条",
-        value: "--",
-    },
-    {
-        label: "平均树龄",
-        value: "--",
-    },
-]);
-
-const photoList = ref([
-    { key: "物候", statement: "--" },
-    { key: "病虫", statement: "--" },
-    { key: "异常", statement: "--" },
-    { key: "农事", statement: "--" },
-]);
-
-const activeOuput = ref(1);
-
-// 品种
-const farmId = ref(null);
-onMounted(() => {
-    eventBus.off("area:id", toggleAreaId);
-    eventBus.on("area:id", toggleAreaId);
-    farmId.value = sessionStorage.getItem("farmId");
-
-    eventBus.off("resetFileActive", resetActive2);
-    eventBus.on("resetFileActive", resetActive2);
-});
-function resetActive2(name) {
-    activeOuput.value = name
-    console.log('222resetActive2', name);
-}
-
-const selectOptions = ref([]);
-const getSpeciesItemList = (farmId, regionId) => {
-    VE_API.farm.getSpeciesItemList({ farmId, regionId }).then((res) => {
-        selectOptions.value = res.data;
-        selectOptions.value.unshift({ speciesItemId: "0", speciesItemName: "全部" });
-        photoBaseData.value[0].speciesItemId = res.data[0].speciesItemId;
-    });
-};
-
-function changeSelect(e) {
-    console.log("eee", e);
-    setFileData(e);
-}
-
-function toggleFileItem(name, index) {
-    if (index !== 0) {
-        toggleAcitve(name);
-    }
-}
-
-// 产量详情
-function toggleAcitve(name, field) {
-    activeOuput.value = name;
-    console.log("产量详情产量详情产量详情", name);
-    // eventBus.emit("change:mapPoint", name)
-    if (name === "透光率" || name === "通风率") {
-        eventBus.emit("handleTabItem", name)
-        eventBus.emit("handleActive", { name, key: "生态指标", index: 1, isFile: name === "通风率" ? true : false });
-        // eventBus.emit('handleTab',"透光率")
-    } else {
-        eventBus.emit("change:mapPoint", field);
-    }
-}
-
-const regionId = ref(null);
-function toggleAreaId({ areaId, farmId }) {
-    regionId.value = areaId;
-    getSpeciesItemList(farmId, areaId);
-    getFileData(farmId, areaId);
-}
-
-const allTypeData = ref([]);
-function getFileData(farmId, regionId) {
-    VE_API.farm.getFarmFiles({ farmId, regionId: regionId ? regionId : undefined }).then(({ data }) => {
-        allTypeData.value = data;
-        console.log("getFileData", allTypeData.value);
-        setFileData(photoBaseData.value[0].speciesItemId);
-    });
-}
-
-function setFileData(type_id) {
-  const res = allTypeData.value.find((item) => item.type_id == type_id);
-
-  photoBaseData.value[1].value = res.meta_info.avg_crown + "平方米";
-    photoBaseData.value[2].value = res.meta_info.avg_branch_num;
-    photoBaseData.value[3].value = res.meta_info.avg_age + "年";
-    photoList.value[0].key = res.meta_info.phenology_info.key;
-    photoList.value[0].statement = res.meta_info.phenology_info.statement;
-    photoList.value[1].key = res.meta_info.dp_alert_info.key;
-    photoList.value[1].statement = res.meta_info.dp_alert_info.statement;
-    photoList.value[2].key = res.meta_info.grow_alert_info.key;
-    photoList.value[2].statement = res.meta_info.grow_alert_info.statement;
-    photoList.value[3].key = res.meta_info.prescription_info.key;
-    photoList.value[3].statement = res.meta_info.prescription_info.statement;
-    // if(res.production_info.production){
-    //   res.production_info.production = (res.production_info.production * 1.3).toFixed(1)
-    // }
-    // outputBox.value[0].value = res.production_info.production;
-    // outputBox.value[1].value = res.production_info.quality.toFixed(0);
-    // if(res.production_info.zuoguo_ratio){
-    //   outputBox.value[2].name = "坐果率";
-    //   outputBox.value[2].value = res.production_info.zuoguo_ratio.toFixed(0);
-    // }else{
-    //   outputBox.value[2].name = "雌花率";
-    //   outputBox.value[2].value = res.production_info.cihua_ratio.toFixed(0);
-    // }
-    qualityBox.value[0].value = res.ecology_info.ventilation;
-    qualityBox.value[1].value = res.ecology_info.transmittance;
-    qualityBox.value[2].value = res.ecology_info.dp_situation;
-}
-
-// 可拖拽
-const position = reactive({ x: 0, y: window.innerHeight - 322 });
-const isDragging = ref(false);
-const offset = reactive({ x: 0, y: 0 });
-const draggable = ref(null);
-function startDrag(event) {
-  isDragging.value = true;
-  offset.x = event.clientX - position.x;
-  offset.y = event.clientY - position.y;
-  document.addEventListener('mousemove', onDrag);
-  document.addEventListener('mouseup', stopDrag);
-}
-
-function onDrag(event) {
-  if (!isDragging.value) return;
-  position.x = event.clientX - offset.x;
-  position.y = event.clientY - offset.y;
-}
-
-function stopDrag() {
-  isDragging.value = false;
-  document.removeEventListener('mousemove', onDrag);
-  document.removeEventListener('mouseup', stopDrag);
-}
-</script>
-
-<style lang="scss" scoped>
-.file-wrap {
-    margin-top: 16px;
-    background: url("@/assets/images/home/file-bg-w.png") no-repeat top center / 100% 100%;
-    margin-left: 12px;
-    padding: 12px 18px 20px 16px;
-    position: absolute;
-
-    .file-title {
-        font-size: 20px;
-        color: #ffd489;
-    }
-    .box-wrap {
-        display: flex;
-        .box-r {
-            padding-left: 24px;
-        }
-    }
-    .overview-file {
-        padding-top: 20px;
-        .box-title {
-            font-size: 16px;
-            padding-left: 13px;
-            margin-bottom: 16px;
-            position: relative;
-            display: flex;
-            justify-content: space-between;
-            color: #fff;
-            &::before {
-                content: "";
-                position: absolute;
-                left: 0;
-                top: 3px;
-                width: 3px;
-                height: 16px;
-                background: #fff;
-                border-radius: 11px;
-            }
-        }
-        .title {
-            color: #f3c11d;
-            font-size: 16px;
-            font-family: "PangMenZhengDao";
-            margin-bottom: 20px;
-            .big {
-                width: 13px;
-                height: 13px;
-                margin: -10px 0 0 4px;
-            }
-            .small {
-                width: 7px;
-                height: 7px;
-                margin-left: -3px;
-            }
-        }
-        .base-data {
-            background: rgba(207, 207, 207, 0.1);
-            border-radius: 4px;
-            padding: 6px 0;
-            display: flex;
-            .base-item {
-                // flex: 1;
-                text-align: center;
-                padding: 0 14px;
-                .label {
-                    font-size: 12px;
-                    color: #666666;
-                    width: max-content;
-                    display: block;
-                    margin: 0 auto;
-                    padding-bottom: 2px;
-                }
-                .value {
-                    padding-top: 2px;
-                    font-size: 16px;
-                    color: #ffffff;
-                    width: max-content;
-                    margin: 0 auto;
-                }
-                .type-select {
-                    width: 72px;
-                    ::v-deep {
-                        .el-select__wrapper {
-                            background: rgba(247, 190, 90, 0.1);
-                            box-shadow: 0 0 0 1px #f7be5a inset;
-                            color: #ffd489;
-                        }
-                        .el-select__placeholder {
-                            color: #ffd489;
-                        }
-                    }
-                }
-            }
-            .base-item + .base-item {
-                border-left: 1px solid rgba(102, 102, 102, 0.42);
-            }
-        }
-        .list {
-            margin-top: 15px;
-            width: max-content;
-            font-size: 14px;
-            .list-item {
-                color: #bbbbbb;
-                display: flex;
-                margin-bottom: 8px;
-                .list-name {
-                    color: #f3c11d;
-                    margin-right: 6px;
-                    img {
-                        width: 17px;
-                        height: 13px;
-                    }
-                }
-            }
-        }
-    }
-    .overview-file + .overview-file {
-        margin-top: 8px;
-    }
-    .box-wrap {
-        display: flex;
-        .box-item {
-            box-sizing: border-box;
-            min-width: 110px;
-            display: flex;
-            flex-direction: column;
-            justify-content: center;
-            align-items: center;
-            padding: 6px 16px;
-            background: rgba(207, 207, 207, 0.1);
-            border-radius: 4px;
-            border: 1px solid rgba(207, 207, 207, 0.1);
-            cursor: pointer;
-            .item-name {
-                font-size: 12px;
-                color: #666666;
-                width: max-content;
-            }
-            .item-val {
-                font-size: 18px;
-                color: #fff;
-                width: max-content;
-                padding-top: 3px;
-                span {
-                    font-size: 12px;
-                    padding-left: 2px;
-                }
-            }
-            &.active {
-                background: rgba(255, 212, 137, 0.16);
-                border: 1px solid #ffd489;
-                .item-name {
-                    color: #bbbbbb;
-                }
-            }
-        }
-        .box-item + .box-item {
-            margin-left: 8px;
-        }
-    }
-}
-</style>

+ 532 - 440
src/views/home/components/homePage.vue

@@ -1,176 +1,146 @@
 <template>
   <div class="chart-list">
-    <div class="chart-item weather-item">
-      <chart-box name="气象">
-        <template #title-right>
-          <div class="button-group">
-            <div class="button" @click="handlePlay">直播</div>
-            <div class="button" @click="gybg">溯源报告</div>
-            <div class="button" @click="fightTask">一键飞巡</div>
-          </div>
-        </template>
-        <div class="base-wrap">
-          <div class="base-item" v-for="(item, index) in baseData.labels" :key="index">
-            <div class="label">{{ item }}风险</div>
-            <div class="value">{{ Number(baseData.valueMaxList[index]) >= 95 ? 95 : baseData.valueMaxList[index].toFixed(0) }}<span>%</span></div>
-          </div>
-        </div>
-        <!-- <one-line-chart class="line-chart" :yData="lineYdata" :minData="minData"></one-line-chart> -->
-        <weatherChart class="line-chart"></weatherChart>
-      </chart-box>
-    </div>
-    <!--        <div class="chart-item phenology">-->
-    <!--            <chart-box name="基本指标">-->
-    <!--                <template #title-right>-->
-    <!--                    <tabs :list="btnGroup"></tabs>-->
-    <!--                </template>-->
-    <!--                &lt;!&ndash; <bar-chart class="bar-chart" styleName="styleName3" :xData="phenologyXData" :yData="phenologyYData"></bar-chart>-->
-    <!--                  <div class="tips box-bg">-->
-    <!--                  <div class="text" v-for="item in 3" :key="item">-->
-    <!--                    桂味:<span>占比30%,分布在2区、5区</span>-->
-    <!--                  </div>-->
-    <!--                </div> &ndash;&gt;-->
-    <!--                <div class="box-flex">-->
-    <!--                    <div class="box-card">-->
-    <!--                        <div class="box-desc">当前分区无品种信息,请确权</div>-->
-    <!--                        <div class="box-button" @click="handlePage">立即确权</div>-->
-    <!--                    </div>-->
-    <!--                </div>-->
-    <!--            </chart-box>-->
-    <!--        </div>-->
-    <!-- <div class="chart-item phenology">
-        <chart-box name="物候指标">
-            <template #title-right>
-                <tabs :list="phenologyObj.btnGroup" keyStr="物候指标" :active="activeKey"></tabs>
-            </template>
-            <bar-chart
-                class="bar-chart"
-                styleName="styleName1"
-                :xData="phenologyObj.xData"
-                :yData="phenologyObj.yData"
-            ></bar-chart>
-            <div class="tips box-bg">
-                <div class="text" v-for="(item, index) in phenologyObj.text" :key="index">
-                    {{ item[0] }}:<span>{{ item[1] }}{{ item[2] }},占比{{ item[3] }}%</span>
-                </div>
-            </div>
-        </chart-box>
-    </div> -->
-    <div class="chart-item phenology">
-      <chart-box name="生态指标">
-        <template #title-right>
-          <tabs :list="ecologyObj.btnGroup" keyStr="生态指标" :active="activeKey"></tabs>
-        </template>
-        <bar-chart
-            class="bar-chart"
-            styleName="styleName1"
-            :xData="ecologyObj.xData"
-            :yData="ecologyObj.yData"
-        ></bar-chart>
-        <div class="tips box-bg">
-          <div class="text" v-for="(item, index) in ecologyObj.text" :key="index">
-            {{ item.key }}:<span>{{ item.val }}</span>
-          </div>
-        </div>
-      </chart-box>
-    </div>
-    <div class="chart-item evaluate">
-      <chart-box name="生长指标">
-        <template #title-right>
-          <tabs :list="growObj.btnGroup" keyStr="生长指标" :active="activeKey"></tabs>
-        </template>
-        <div class="content">
-          <bar-chart
-              style="width: 52%"
-              styleName="styleName1"
-              :xData="growObj.xData"
-              :yData="growObj.yData"
-          ></bar-chart>
-          <div class="box-bg text" v-for="(item, index) in growObj.text" :key="index">
-            <div class="txt">
-              {{ item.key }}:<span>{{ item.val }}</span>
-            </div>
-          </div>
-        </div>
-        <!-- <div class="text-list box-bg">
-            <div class="text-item" v-for="(item, index) in growObj.text" :key="index">
-                <div class="circle"></div>
-                <div class="txt">
-                    {{ item.key }}:<span>{{ item.val }}</span>
-                </div>
-            </div>
-        </div> -->
-      </chart-box>
-    </div>
-    <div class="chart-item phenology">
-      <chart-box name="病虫指标">
-        <template #title-right>
-          <tabs :list="diseasesObj.btnGroup" keyStr="病虫指标" :active="activeKey"></tabs>
-        </template>
-        <bar-chart
-            class="bar-chart"
-            styleName="styleName1"
-            :xData="diseasesObj.xData"
-            :yData="diseasesObj.yData"
-        ></bar-chart>
-        <div class="tips box-bg">
-          <div class="text" v-for="(item, index) in diseasesObj.text" :key="index">
-            {{ item.key }}:<span>{{ item.val }}</span>
-          </div>
-        </div>
-      </chart-box>
-    </div>
-    <ImageDialog></ImageDialog>
+      <div class="chart-item weather-item">
+          <chart-box name="气象预警">
+              <template #title-right>
+                  <div class="button-group">
+                      <div class="button" @click="handlePlay">直播</div>
+                      <div class="button" @click="gybg">果园报告</div>
+                      <div class="button" @click="fightTask">一键飞巡</div>
+                  </div>
+              </template>
+              <div class="base-wrap">
+                  <div class="base-item" v-for="(item, index) in (baseData.labels || [])" :key="index">
+                      <div class="label">{{ item }}风险</div>
+                      <div class="value">{{ (baseData.valueMaxList && baseData.valueMaxList[index] ? baseData.valueMaxList[index].toFixed(0) : 0) }}<span>%</span></div>
+                  </div>
+              </div>
+              <weatherChart class="line-chart"></weatherChart>
+          </chart-box>
+      </div>
+      <div class="chart-item phenology">
+          <chart-box :name="ecologyObj.name || '生态指标'">
+              <template #title-right>
+                  <tabs
+                      :list="ecologyObj.btnGroup || []"
+                      :keyStr="ecologyObj.name || '生态指标'"
+                      :active="activeKey"
+                      @handleActive="handleActiveTab"
+                  ></tabs>
+              </template>
+              <bar-chart
+                  class="bar-chart"
+                  styleName="styleName1"
+                  :xData="ecologyObj.xData || []"
+                  :yData="ecologyObj.yData || []"
+              ></bar-chart>
+              <div class="tips box-bg">
+                  <span v-html="ecologyObj.text || '暂无数据'"></span>
+                  <!-- <div class="text" v-for="(item, index) in ecologyObj.text" :key="index">
+                      {{ item.key }}:<span>{{ item.val }}</span>
+                  </div> -->
+              </div>
+          </chart-box>
+      </div>
+      <div class="chart-item evaluate">
+          <chart-box :name="growObj.name || '生长指标'">
+              <template #title-right>
+                  <tabs
+                      :list="growObj.btnGroup || []"
+                      :keyStr="growObj.name || '生长指标'"
+                      :active="activeKey"
+                      @handleActive="handleActiveTab"
+                  ></tabs>
+              </template>
+              <div class="content">
+                  <bar-chart
+                      style="width: 57%"
+                      styleName="styleName1"
+                      :xData="growObj.xData || []"
+                      :yData="growObj.yData || []"
+                  ></bar-chart>
+                  <div class="box-bg">
+                      <span v-html="growObj.text || '暂无数据'"></span>
+                  </div>
+              </div>
+          </chart-box>
+      </div>
+      <div class="chart-item phenology">
+          <chart-box :name="diseasesObj.name || '病虫指标'">
+              <template #title-right>
+                  <tabs
+                      :list="diseasesObj.btnGroup || []"
+                      :keyStr="diseasesObj.name || '病虫指标'"
+                      :active="activeKey"
+                      @handleActive="handleActiveTab"
+                  ></tabs>
+              </template>
+              <bar-chart
+                  class="bar-chart"
+                  styleName="styleName1"
+                  :xData="diseasesObj.xData || []"
+                  :yData="diseasesObj.yData || []"
+              ></bar-chart>
+              <div class="tips box-bg">
+                  <span v-html="diseasesObj.text || '暂无数据'"></span>
+              </div>
+          </chart-box>
+      </div>
   </div>
   <popup class="popup-video" v-model:show="showVideo" :close-on-click-overlay="false">
-    <div class="video-cont">
-      <div class="close" @click="handleClose">
-        <el-icon size="28" color="#000"><Close /></el-icon>
+      <div class="video-cont">
+          <div class="close" @click="handleClose">
+              <el-icon size="28" color="#000"><Close /></el-icon>
+          </div>
+          <LivePlayer class="video" ref="player" :videoUrl="flvURL" live loop autoplay />
       </div>
-      <LivePlayer class="video" ref="player" :videoUrl="flvURL" live loop autoplay />
-    </div>
   </popup>
 </template>
+
 <script setup>
 import { ref, onMounted, onUnmounted } from "vue";
-import { ElMessage, ElMessageBox } from 'element-plus'
+import { ElMessage, ElMessageBox } from "element-plus";
 import chartBox from "@/components/chartBox.vue";
 import tabs from "./tabs.vue";
-import LivePlayer from '@liveqing/liveplayer-v3'
 import weatherChart from "./weatherChart.vue";
 import barChart from "@/components/charts/barChart.vue";
-import oneLineChart from "@/components/charts/oneLineChart.vue";
-import eventBus from "@/api/eventBus";
 import { Popup } from 'vant';
-import { useStore } from "vuex";
-import { useRouter } from "vue-router";
-import ImageDialog from "../../../components/ImageDialog";
-const store = useStore();
-const router = useRouter();
-
+import LivePlayer from '@liveqing/liveplayer-v3'
+import eventBus from "@/api/eventBus";
 const baseData = ref({});
-const minData = ref([]);
-const lineYdata = ref([]);
+
+const connectionBtn = ref([]);
 
 const getBaseData = () => {
+  connectionBtn.value = ["孢子监测", "虫情监测"];
   const point = sessionStorage.getItem("point");
   const farmId = sessionStorage.getItem("farmId");
-  const date = localStorage.getItem("date");
-  let params = {
-    point,
-    farmId,
-  };
-  if(date){
-    params.date = date
+  
+  if (!farmId) {
+      console.warn('farmId not found in sessionStorage');
+      return;
   }
-
-  VE_API.mini_farm.weather_warning_land_check(params).then((res) => {
-    baseData.value = res.data || {};
+  
+  VE_API.mini_farm.weather_warning_land_check({ farmId, point }).then((res) => {
+      if (res && res.data) {
+          baseData.value = res.data;
+      } else {
+          // 设置默认数据
+          baseData.value = {
+              labels: ['温度', '湿度', '风速'],
+              valueMaxList: [0, 0, 0]
+          };
+      }
+  }).catch((error) => {
+      // 设置默认数据
+      baseData.value = {
+          labels: ['温度', '湿度', '风速'],
+          valueMaxList: [0, 0, 0]
+      };
   });
 
   // 获取气象图表数据
   //   VE_API.mini_farm.gardenItemChart({point}).then(res =>{
-  //     console.log('tq', res.data)
   //     minData.value = res.data.weatherData.map(item =>item.tempMin)
   //     lineYdata.value = res.data.weatherData.map(item =>item.tempMax)
   //   })
@@ -179,91 +149,154 @@ const getBaseData = () => {
 onMounted(() => {
   //选项子项监听事件
   eventBus.on("handleTabItem", handleTabItem);
-  eventBus.on("handleActive", handleActive);
   eventBus.on("area:id", areaId);
+  // 监听组件激活事件
+  eventBus.on("component:activated", handleComponentActivated);
+  
+  // 初始化数据
+  initializeData();
 });
 
+// 组件激活处理函数
+const handleComponentActivated = (componentName) => {
+  if (componentName === 'homePage') {
+      // 重新初始化数据
+      initializeData();
+  }
+};
+
+// 初始化数据函数
+const initializeData = () => {
+  const farmId = sessionStorage.getItem("farmId");
+  const areaId = sessionStorage.getItem("areaId");
+  
+  if (farmId) {
+      // 设置 farmIdVal 和 regionId,确保后续 API 调用有正确的参数
+      farmIdVal.value = farmId;
+      regionId.value = areaId;
+      
+      getBaseData();
+      getListByFarmId(farmId, areaId);
+  } else {
+      console.warn('farmId 不存在,无法初始化数据');
+      // 设置默认数据
+      baseData.value = {
+          labels: ['温度', '湿度', '风速'],
+          valueMaxList: [0, 0, 0]
+      };
+  }
+};
+
 onUnmounted(() => {
   eventBus.off("handleTabItem", handleTabItem);
-  eventBus.off("handleActive", handleActive);
   eventBus.off("area:id", areaId);
+  eventBus.off("component:activated", handleComponentActivated);
 });
 
 const reportData = ref([]);
+const lastActiveTab = ref({ id: null, name: null });
 
-const curIndex = ref(0);
-const handleActive = ({ index, key, isFile }) => {
-  if (index === -1) return;
-  if (isFile) return
-  curIndex.value = index;
-  if (key === "物候指标") {
-    phenologyObj.value = handleData("物候指标");
-  }
-  if (key === "病虫指标") {
-    diseasesObj.value = handleData("病虫指标");
-  }
-  if (key === "生长指标") {
-    growObj.value = handleData("生长指标");
-  }
-  if (key === "生态指标") {
-    ecologyObj.value = handleData("生态指标");
+const handleActiveTab = ({ name, id }) => {
+  // 防止重复调用相同的指标
+  if (lastActiveTab.value.id === id && lastActiveTab.value.name === name) {
+      return;
   }
+
+  lastActiveTab.value = { id, name };
+  getIndicatorReport(id, name);
 };
 
 const menuList = ref([]);
-function handleData(name, isChange = true) {
-  console.log('handleData', name);
-  const arr = reportData.value.filter((item) => item.key === name);
-  const source = arr[0].obj;
-
-  let nameArr = [];
-  let valueArr = [];
-  const statItem = source.geoHashSampleStat[curIndex.value];
-  nameArr = source.legendList.find((legendSubItem) => legendSubItem.key === statItem.key);
-  valueArr = nameArr.list.map((legendSubItem) => statItem.obj[legendSubItem.val] || 0);
-
-  const obj = {
-    // btnGroup: source.titleList,
-    btnGroup: source.geoHashSampleStat.map((item) => item.key),
-    xData: nameArr.list.map((item) => item.name),
-    yData: valueArr,
-    text: [source.list2[curIndex.value]],
-    content: source.text,
-  };
-  menuList.value.push({
-    name,
-    btnGroup: source.geoHashSampleStat.map((item) => item.key),
-    legend: source.geoHashSampleList.find((sample) => sample.key === statItem.key),
-    colorObj: nameArr
-  });
-  if (isChange) {
-    eventBus.emit("changePointType", {legend: source.geoHashSampleList.find((sample) => sample.key === statItem.key), colorObj: nameArr})
-    eventBus.emit("changePointLegend", {legend: source.geoHashSampleList.find((sample) => sample.key === statItem.key), colorObj: nameArr})
-    console.log(' menuList.value', menuList.value);
-  }
-  return obj;
-}
 
+const regionId = ref(null);
+const farmIdVal = ref(null);
 function areaId({ areaId, farmId }) {
-  menuList.value = []
-  getReoprt(areaId, farmId);
+  regionId.value = areaId;
+  farmIdVal.value = farmId;
+  menuList.value = [];
   getBaseData();
+  getListByFarmId(farmId, areaId);
 }
 
-const getReoprt = (areaId, farmId) => {
-  VE_API.home.farmIndexReport({ farmId, regionId: areaId }).then((res) => {
-    reportData.value = res.data || [];
-    // phenologyObj.value = handleData("物候指标");
-    diseasesObj.value = handleData("病虫指标", false);
-    growObj.value = handleData("生长指标", false);
-    ecologyObj.value = handleData("生态指标", false);
-    store.commit("home/SET_MAIN_MENU", menuList.value);
-    console.log('commitcommitcommit', menuList.value);
+const getListByFarmId = (farmId, areaId) => {
+  
+  VE_API.home.listByFarmId({ farmId }).then((res) => {
+      if (res.data?.length) {
+          // 过滤掉果园总览,获取其他数据
+          const filteredData = res.data.filter((item) => item.name !== "果园总览");
+
+          // 批量处理指标数据
+          filteredData.forEach((item) => {
+              // 更新指标对象的基本信息
+              updateIndicatorObj(item.name, {
+                  name: item.name,
+                  btnGroup: item.monitorItems,
+              });
+
+              // 请求详细数据
+              if (item.monitorItems && item.monitorItems.length > 0) {
+                  getIndicatorReport(item.monitorItems[0].id, item.name);
+              }
+          });
+      } else {
+          console.warn('没有获取到指标数据');
+      }
+  }).catch((error) => {
+      console.error('获取指标列表失败:', error);
   });
 };
 
-const handlePage = () => {
-  router.push("/variety_map");
+const getIndicatorReport = (id, indicatorName) => {
+  
+  // 验证必需参数
+  if (!farmIdVal.value) {
+      console.error(`获取 ${indicatorName} 指标数据失败: farmId 为空`);
+      updateIndicatorObj(indicatorName, {
+          xData: [],
+          yData: [],
+          text: 'farmId 参数缺失'
+      });
+      return;
+  }
+  
+  if (!id) {
+      console.error(`获取 ${indicatorName} 指标数据失败: monitorIndicatorId 为空`);
+      updateIndicatorObj(indicatorName, {
+          xData: [],
+          yData: [],
+          text: '指标ID 参数缺失'
+      });
+      return;
+  }
+  
+  VE_API.home
+      .statByLegendRanges({
+          farmId: farmIdVal.value,
+          regionId: regionId.value || null,
+          monitorIndicatorId: id,
+      })
+      .then((res) => {
+          if (res && res.data) {
+              processIndicatorData(indicatorName, res.data);
+          } else {
+              console.warn(`${indicatorName} 指标数据为空`);
+              // 设置默认数据
+              updateIndicatorObj(indicatorName, {
+                  xData: [],
+                  yData: [],
+                  text: '暂无数据'
+              });
+          }
+      })
+      .catch((error) => {
+          console.error(`获取 ${indicatorName} 指标数据失败:`, error);
+          // 设置默认数据
+          updateIndicatorObj(indicatorName, {
+              xData: [],
+              yData: [],
+              text: '数据获取失败'
+          });
+      });
 };
 
 const activeKey = ref("");
@@ -271,22 +304,8 @@ function handleTabItem(e) {
   activeKey.value = e;
 }
 
-//基本指标
-const btnGroup = ["树高", "冠幅"];
-
-// 物候指标
-const phenologyObj = ref({});
-
 // 病虫测报
 const diseasesObj = ref({});
-const phenologyYData1 = [
-  {
-    startNum: 0,
-    endNum: 0,
-    startColor: "#c6ab6b",
-    endColor: "#4e442e",
-  },
-];
 
 // 生长指标
 const growObj = ref({});
@@ -294,56 +313,92 @@ const growObj = ref({});
 //生态指标
 const ecologyObj = ref({});
 
+// 指标对象映射 - 必须在所有指标对象定义之后
+const indicatorObjMap = {
+  生态指标: ecologyObj,
+  生长指标: growObj,
+  病虫指标: diseasesObj,
+};
+
+// 通用的指标对象数据更新方法
+const updateIndicatorObj = (indicatorName, data) => {
+  const targetObj = indicatorObjMap[indicatorName];
+  if (targetObj) {
+      // 使用Object.assign确保响应式更新
+      Object.assign(targetObj.value, data);
+  }
+};
+
+// 通用的接口数据处理方法
+const processIndicatorData = (indicatorName, apiData) => {
+  const processedData = {
+      xData: apiData?.data?.map((item) => item.name) || [],
+      yData: apiData?.data?.map((item) => item.count) || [],
+      text: apiData?.description,
+  };
+
+  updateIndicatorObj(indicatorName, processedData);
+
+  // 将数据添加到reportData中,如果已存在则更新
+  const existingIndex = reportData.value.findIndex((item) => item.key === indicatorName);
+  if (existingIndex !== -1) {
+      reportData.value[existingIndex] = {
+          key: indicatorName,
+          obj: apiData,
+      };
+  } else {
+      reportData.value.push({
+          key: indicatorName,
+          obj: apiData,
+      });
+  }
+};
+
 const gybg = () => {
-  VE_API.farm_files.last({ farmId: sessionStorage.getItem("farmId"), key: "qcode" }).then(({ data }) => {
-    eventBus.emit("homePage:image", { filename: data.path, title: "溯源报告" });
+  VE_API.farm_files.last({ farmId: sessionStorage.getItem("farmId"), key: "pdf_report" }).then(({ data }) => {
+      eventBus.emit("homePage:gybg", { filename: data.path, title: "果园报告" });
   });
 };
 
-const fightTask = ()=> {
-  ElMessageBox.confirm(
-      '是否确认执行一键飞巡任务?',
-      '提醒',
-      {
-        confirmButtonText: '确定',
-        cancelButtonText: '取消',
-        type: 'warning',
-      }
-  ).then(() => {
-        VE_API.home.startFightTask({farmId:sessionStorage.getItem("farmId")}).then((res)=>{
-          if(res.code === 0){
-            ElMessage.success('一键飞巡成功')
-          }else{
-            ElMessage.error(res.msg)
-          }
-        })
-      })
-      .catch(() => {
-
+const fightTask = () => {
+  ElMessageBox.confirm("是否确认执行一键飞巡任务?", "提醒", {
+      confirmButtonText: "确定",
+      cancelButtonText: "取消",
+      type: "warning",
+  })
+      .then(() => {
+          VE_API.home.startFightTask({ farmId: sessionStorage.getItem("farmId") }).then((res) => {
+              if (res.code === 0) {
+                  ElMessage.success("一键飞巡成功");
+              } else {
+                  ElMessage.error(res.msg);
+              }
+          });
       })
-}
+      .catch(() => {});
+};
 
 const showVideo = ref(false)
 const flvURL = ref('')
 const converterId = ref('')
 const handlePlay = () =>{
-  VE_API.home.startStreamConverters({farmId:sessionStorage.getItem("farmId")}).then(res =>{
-    if(res.code === 0){
-      if(res.data.url.length){
-        showVideo.value = true
-        flvURL.value = res.data.url[0]
-        converterId.value = res.data.converterId
-      }else{
-        ElMessage.warning('暂无直播')
-      }
+VE_API.home.startStreamConverters({farmId:sessionStorage.getItem("farmId")}).then(res =>{
+  if(res.code === 0){
+    if(res.data.url.length){
+      showVideo.value = true
+      flvURL.value = res.data.url[0]
+      converterId.value = res.data.converterId
+    }else{
+      ElMessage.warning('暂无直播')
     }
-  })
+  }
+})
 }
 
 const handleClose = () =>{
-  showVideo.value = false
-  flvURL.value = ''
-  VE_API.home.closeStreamConverters({farmId:sessionStorage.getItem("farmId"),converterId:converterId.value})
+showVideo.value = false
+flvURL.value = ''
+VE_API.home.closeStreamConverters({farmId:sessionStorage.getItem("farmId"),converterId:converterId.value})
 }
 </script>
 
@@ -357,200 +412,237 @@ const handleClose = () =>{
   overflow-y: auto;
 
   .chart-item {
-    width: 100%;
-    // height: calc(100% / 4.15);
-    height: 228px;
-    box-sizing: border-box;
-    margin-bottom: 10px;
-    &.weather-item {
-      height: 260px;
-      .button-group{
-        display: flex;
-      }
-    }
-    .box-flex {
       width: 100%;
-      height: 100%;
-      display: flex;
-      align-items: center;
-      justify-content: center;
-      .box-card {
-        background: rgba(255, 255, 255, 0.1);
-        border-radius: 5px;
-        width: 292px;
-        height: 92px;
-        display: flex;
-        align-items: center;
-        justify-content: center;
-        flex-direction: column;
-        .box-desc {
-          font-size: 16px;
-          font-family: "PangMenZhengDao";
-          margin-bottom: 8px;
-        }
-        .box-button {
-          font-size: 13px;
-          border-radius: 20px;
-          padding: 3px 27px;
-          cursor: pointer;
-          border: 1px solid rgba(255, 255, 255, 0.45);
-          background: linear-gradient(180deg, #ffd887, #ed9e1e);
-        }
+      // height: calc(100% / 4.15);
+      height: 228px;
+      box-sizing: border-box;
+      margin-bottom: 10px;
+      &.weather-item {
+          height: 260px;
+          .button-group{
+              display: flex;
+              // .button + .button{
+              //     margin-left: 2px;
+              // }
+          }
       }
-    }
-    .button {
-      border: 1px solid rgba(255, 255, 255, 0.4);
-      border-radius: 4px;
-      padding: 2px 0;
-      width: 78px;
-      cursor: pointer;
-      text-align: center;
-    }
-    .zb{
-      margin-right: 8px;
-    }
-    &.chart-item:last-child {
-      margin: 0;
-    }
-    .base-wrap {
-      width: 100%;
-      height: 56px;
-      margin-top: 4px;
-      display: flex;
-      justify-content: space-evenly;
-      .base-item {
-        width: 110px;
-        height: 100%;
-        font-size: 12px;
-        text-align: center;
-        box-sizing: border-box;
-        color: #f3c11d;
-        display: flex;
-        flex-direction: column;
-        align-items: center;
-        margin: 0 12px;
-        background: url("@/assets/images/home/scale-bg.png") no-repeat center center / 100% 100%;
-        .label {
-          width: 85px;
-          height: 16px;
-          line-height: 16px;
-          color: #fff;
-          background: url("@/assets/images/home/label-bg.png") no-repeat center center / 100% 100%;
-        }
-        .value {
-          font-size: 18px;
-          font-family: "PangMenZhengDao";
-          span {
-            font-size: 12px;
+      .box-flex {
+          width: 100%;
+          height: 100%;
+          display: flex;
+          align-items: center;
+          justify-content: center;
+          .box-card {
+              background: rgba(255, 255, 255, 0.1);
+              border-radius: 5px;
+              width: 292px;
+              height: 92px;
+              display: flex;
+              align-items: center;
+              justify-content: center;
+              flex-direction: column;
+              .box-desc {
+                  font-size: 16px;
+                  font-family: "PangMenZhengDao";
+                  margin-bottom: 8px;
+              }
+              .box-button {
+                  font-size: 13px;
+                  border-radius: 20px;
+                  padding: 3px 27px;
+                  cursor: pointer;
+                  border: 1px solid rgba(255, 255, 255, 0.45);
+                  background: linear-gradient(180deg, #ffd887, #ed9e1e);
+              }
           }
-        }
       }
-    }
-    .line-chart {
-      height: calc(100% - 56px);
-    }
-    .box-bg {
-      border-radius: 2px 2px 0 0;
-      font-size: 12px;
-      padding: 3px 6px;
-      box-sizing: border-box;
-      font-family: Arial, Helvetica, sans-serif;
-      overflow-y: auto;
-      background: linear-gradient(180deg, rgb(85, 85, 85, 0.4) 0%, rgb(35, 35, 35, 1) 100%);
-      .text {
-        position: relative;
-        padding-left: 10px;
-        &::before {
-          content: "";
-          position: absolute;
-          left: 0;
-          top: 8px;
-          width: 3px;
-          height: 3px;
-          border-radius: 50%;
-          background: #fff;
-        }
-        span {
-          color: rgba(255, 255, 255, 0.4);
-          line-height: 1.7;
-        }
+      .button {
+          border: 1px solid rgba(255, 255, 255, 0.4);
+          border-radius: 4px;
+          padding: 2px 10px;
+          cursor: pointer;
       }
-    }
-    &.phenology {
-      .bar-chart {
-        width: 100%;
-        height: calc(100% - 75px);
+      &.chart-item:last-child {
+          margin: 0;
       }
-      .tips {
-        margin-top: 10px;
-        width: 100%;
-        height: 65px;
+      .base-wrap {
+          width: 100%;
+          height: 56px;
+          margin-top: 4px;
+          display: flex;
+          justify-content: space-evenly;
+          .base-item {
+              width: 110px;
+              height: 100%;
+              font-size: 12px;
+              text-align: center;
+              box-sizing: border-box;
+              color: #f3c11d;
+              display: flex;
+              flex-direction: column;
+              align-items: center;
+              margin: 0 12px;
+              background: url("@/assets/images/home/scale-bg.png") no-repeat center center / 100% 100%;
+              .label {
+                  width: 85px;
+                  height: 16px;
+                  line-height: 16px;
+                  color: #fff;
+                  background: url("@/assets/images/home/label-bg.png") no-repeat center center / 100% 100%;
+              }
+              .value {
+                  font-size: 18px;
+                  font-family: "PangMenZhengDao";
+                  span {
+                      font-size: 12px;
+                  }
+              }
+          }
       }
-    }
-    &.evaluate {
-      height: 220px;
-      .content {
-        width: 100%;
-        height: calc(100% - 10px);
-        display: flex;
-        align-items: center;
-        justify-content: space-between;
-        margin-top: 10px;
-        .text {
-          font-weight: 400;
-          padding: 8px 0 4px 5px;
-          text-indent: 2em;
-          margin-left: 8px;
-          span {
-            color: #ffd489;
+      .line-chart {
+          height: calc(100% - 56px);
+      }
+      .box-bg {
+          border-radius: 2px 2px 0 0;
+          font-size: 12px;
+          padding: 3px 6px;
+          box-sizing: border-box;
+          font-family: Arial, Helvetica, sans-serif;
+          overflow-y: auto;
+          background: linear-gradient(180deg, rgb(85, 85, 85, 0.4) 0%, rgb(35, 35, 35, 1) 100%);
+          .text {
+              position: relative;
+              padding-left: 10px;
+              &::before {
+                  content: "";
+                  position: absolute;
+                  left: 0;
+                  top: 8px;
+                  width: 3px;
+                  height: 3px;
+                  border-radius: 50%;
+                  background: #fff;
+              }
+              span {
+                  color: rgba(255, 255, 255, 0.4);
+                  line-height: 1.7;
+              }
           }
-        }
       }
-      .text-list {
-        width: 100%;
-        height: 33px;
-        display: flex;
-        align-items: flex-start;
-        justify-content: space-between;
-        .text-item {
-          display: flex;
-          align-items: center;
+      &.phenology {
+          .bar-chart {
+              width: 100%;
+              height: calc(100% - 75px);
+          }
+          .tips {
+              margin-top: 10px;
+              width: 100%;
+              height: 65px;
+          }
+      }
+      &.evaluate {
+          height: 220px;
+          .content {
+              width: 100%;
+              height: calc(100% - 10px);
+              display: flex;
+              align-items: center;
+              justify-content: space-between;
+              .text {
+                  font-weight: 400;
+                  padding: 8px 0 4px 5px;
+                  text-indent: 2em;
+                  margin-left: 8px;
+                  span {
+                      color: #ffd489;
+                  }
+              }
+          }
+          .text-list {
+              width: 100%;
+              height: 33px;
+              display: flex;
+              align-items: flex-start;
+              justify-content: space-between;
+              .text-item {
+                  display: flex;
+                  align-items: center;
 
-          .circle {
-            width: 4px;
-            height: 4px;
-            background: rgba(255, 255, 255, 0.44);
-            border-radius: 50%;
-            margin-right: 6px;
+                  .circle {
+                      width: 4px;
+                      height: 4px;
+                      background: rgba(255, 255, 255, 0.44);
+                      border-radius: 50%;
+                      margin-right: 6px;
+                  }
+                  .txt {
+                      font-size: 12px;
+                      span {
+                          color: #ffd489;
+                      }
+                  }
+              }
+          }
+      }
+      &.connection {
+          height: max-content;
+          ::v-deep {
+              .carousel-item {
+                  img {
+                      border-radius: 5px;
+                  }
+                  min-height: 250px;
+              }
           }
-          .txt {
-            font-size: 12px;
-            span {
-              color: #ffd489;
-            }
+          .stauts {
+              position: absolute;
+              left: 118px;
+              top: -30px;
+              background: rgba(255, 212, 137, 0.1);
+              border-radius: 2px;
+              padding: 5px;
+              height: 19px;
+              line-height: 19px;
+              box-sizing: border-box;
+              color: #f2d677;
+              font-size: 10px;
+              display: flex;
+              align-items: center;
+              span {
+                  display: inline-block;
+                  width: 5px;
+                  height: 5px;
+                  border-radius: 50%;
+                  background: #f2d677;
+                  margin-right: 5px;
+              }
+              &.off {
+                  color: #bdbdbd;
+                  span {
+                      background: #bdbdbd;
+                  }
+              }
           }
-        }
       }
-    }
   }
 }
 .popup-video{
-  width: 100%;
-  background: transparent;
-  .video-cont{
-    width: 70%;
-    margin: auto;
-    background: #fff;
-    padding: 10px;
-    border-radius: 10px;
-    .close{
-      width: 100%;
-      text-align: right;
-    }
-    .video{
-      width: 100%;
-      height: 100%;
-    }
+width: 100%;
+background: transparent;
+.video-cont{
+  width: 70%;
+  margin: auto;
+  background: #fff;
+  padding: 10px;
+  border-radius: 10px;
+  .close{
+    width: 100%;
+    text-align: right;
   }
+  .video{
+    width: 100%;
+    height: 100%;
+  }
+}
 }
 </style>

+ 23 - 12
src/views/home/components/tabs.vue

@@ -1,12 +1,12 @@
 <template>
     <div class="btn-group">
         <div
-            :class="['btn-item', { active: activeVal === index }]"
+            :class="['btn-item', { active: activeTabs === index }]"
             @click="handleActive(item,index)"
             v-for="(item, index) in baseList"
             :key="index + item"
         >
-            {{ item }}
+            {{ item.indicatorName }}
         </div>
     </div>
 </template>
@@ -31,25 +31,36 @@ const props = defineProps({
 });
 
 onMounted(()=>{
-    //选项监听事件
-    eventBus.on('handleTab',handleTab)
+    //监听来自 navigation 的 tab 高亮更新事件
+    eventBus.on('updateTabActive', handleUpdateTabActive)
 })
 
 onUnmounted(()=>{
-    eventBus.off('handleTab',handleTab)
+    eventBus.off('updateTabActive', handleUpdateTabActive)
 })
 
 const emit = defineEmits(["handleActive"])
 
 const baseList = ref([])
-const activeVal = ref(0);
+const activeTabs = ref(0);
 const handleActive = (item,index) => {
-    activeVal.value = index;
-    eventBus.emit('handleActive',{name:item,key:props.keyStr,index})
+    activeTabs.value = index;
+    emit('handleActive',{name:props.keyStr,id:item.id})
+    eventBus.emit('handleActive',{id:item.id,key:props.keyStr,monitorItems:props.list})
 };
 
-function handleTab(e){
-  activeVal.value = 0
+// 处理来自 navigation 的 tab 高亮更新事件
+function handleUpdateTabActive({indicatorId, indicatorName}) {
+    // 在当前列表中查找匹配的指标
+    const targetIndex = baseList.value.findIndex(item => 
+        item.id === indicatorId || item.indicatorName === indicatorName
+    );
+    
+    if (targetIndex !== -1) {
+        activeTabs.value = targetIndex;
+        // 触发父组件事件,确保数据也能正常更新
+        emit('handleActive',{name:indicatorName,id:indicatorId})
+    }
 }
 
 watch(()=>props.list,(newValue,oldValue)=>{
@@ -60,9 +71,9 @@ watch(()=>props.list,(newValue,oldValue)=>{
 
 watch(()=>props.active,(newValue,oldValue)=>{
     if(newValue){
-        const index = props.list.findIndex(item =>item===newValue)
+        const index = props.list.findIndex(item =>item.indicatorName===newValue)
         if(index!==-1){
-            activeVal.value = index
+            activeTabs.value = index
             handleActive(newValue,index)
         }
     }

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

@@ -248,11 +248,6 @@ onMounted(() => {
         });
     blueRegionLayer = new BlueRegionLayer(homeMap.kmap);
     airLineStringLayer = new AirLineStringLayer(homeMap.kmap);
-    function changeStaticMapLayers(e) {
-        // staticMapLayers.
-    }
-
-    // getFarmLog()
 
     //区域切换监听事件
     eventBus.on("area:id", areaId);
@@ -335,24 +330,20 @@ const organId = ref(null);
 const regionId = ref(null);
 const tabName = ref("");
 const tabId = ref(0);
-// eventBus.off("changePointLegend", toggleLegend);
-// eventBus.on("changePointLegend", toggleLegend);
-// function toggleLegend({ colorObj }) {
-//     legendArr.value = colorObj?.list;
-// }
-
-function updateLegend(matchedData,parsedLegendConfig) {
+function updateLegend(matchedData,parsedLegendConfig,isInit) {
     legendArr.value = parsedLegendConfig;
     // 将匹配的数据传递给samplePointLayer进行点位颜色更新
     if (samplePointLayer && matchedData && matchedData.length > 0) {
-        samplePointLayer.updatePointColors(matchedData);
+        if (isInit) {
+            samplePointLayer.initData(organId.value, regionId.value,true,matchedData);
+        }else{
+            samplePointLayer.updatePointColors(matchedData);
+        }
     }
 }
 
 //选项卡事件监听
 const handleTab = async ({ name, id, isUpdate, params, legend, colorObj }) => {
-    eventBus.emit("changePointType", { legend, colorObj });
-    legendArr.value = colorObj?.list;
     tabName.value = name;
     tabId.value = id;
     // if (id === 0) {
@@ -376,92 +367,18 @@ const handleTab = async ({ name, id, isUpdate, params, legend, colorObj }) => {
 function areaId({ areaId, farmId }) {
     organId.value = farmId;
     regionId.value = areaId;
-    samplePointLayer.initData(farmId, areaId);
     if (tabId.value === 0) {
         getBlueRegionList();
-    } else {
-        getFarmIndexReport();
     }
 }
 
-const getFarmIndexReport = (callback) => {
-    // const params = { farmId:organId.value,regionId:regionId.value, type: tabName.value };
-    //   VE_API.farm.farmIndexReport(params).then(({data,code}) => {
-    //     if (code === 0) {
-    //         reportData.value = data || {};
-    //         let arr = []
-    //         if(data.blueZoneList.length){
-    //           arr = blueListConvert(data.blueZoneList[0].obj,0)
-    //         }
-    //         blueRegionLayer.initData(arr,'87')
-    //         callback && callback()
-    //     }
-    // });
-};
-
-const indicatorChartData = ref({});
 const blueZone = ref("ws0y1meyhxp4");
 
-const getFarmLog = () => {
-    console.log("getfarmlog");
-    const params = {
-        id: null,
-        farmId: 766,
-        blueZone: blueZone.value,
-    };
-    VE_API.warning.fetchFarmLog(params).then(({ data }) => {
-        indicatorChartData.value = data || {};
-        eventBus.emit("chart:updateOption", data);
-    });
-};
-
 const urls = ref([]);
 const urlsIndex = ref(0);
 
 const btnIndex = ref(null);
 const btnName = ref("");
-const handleBtn = (e) => {
-    btnName.value = "";
-    btnIndex.value = e;
-    eventBus.emit("clear:area");
-    samplePointLayer.updateAreaStatus(e === 0 ? true : false);
-    regionLayer.resetData();
-    samplePointLayer.resetPoint();
-};
-
-//点击果园日志
-const handleSelectArea = () => {
-    btnName.value = "";
-    btnIndex.value = null;
-    eventBus.emit("clear:area");
-    regionLayer.resetData();
-    samplePointLayer.resetPoint();
-    samplePointLayer.updateAreaStatus(true);
-};
-
-//农事点击高亮
-const act = ref(null);
-const handleAct = (v) => {
-    act.value = v;
-    samplePointLayer.resetPoint();
-    if (v === 1) {
-        regionLayer.selectAreaMultiple([
-            { value: 2, color: "blue" },
-            { value: 4, color: "blue1" },
-            { value: 5, color: "blue2" },
-            { value: 7, color: "blue" },
-            { value: 13, color: "blue2" },
-        ]);
-    }
-    if (v === 2) {
-        regionLayer.selectAreaMultiple([
-            { value: 1, color: "blue" },
-            { value: 2, color: "blue1" },
-            { value: 9, color: "blue2" },
-            { value: 12, color: "blue2" },
-        ]);
-    }
-};
 
 //柱状图点击事件监听
 eventBus.on("echart:barClick", (e) => {
@@ -521,9 +438,6 @@ eventBus.on("click:yellowBlock", (e) => {
     eventBus.emit("dialog:show", true);
 });
 
-const showPoint = ref(true);
-const showType = ref("point");
-
 eventBus.on("click:updateArea", (e) => {
     blueZone.value = e.value;
     btnName.value = e.name;
@@ -694,17 +608,6 @@ const rightToolList = [
     ],
 ];
 
-// 跳转果园档案
-const toFilePage = () => {
-    router.push("/garden-file");
-};
-
-// 地图图例
-const showMapLegend = ref(true);
-const handleLegend = (e) => {
-    blueRegionLayer.toggleLayer(e);
-};
-
 // 对比
 const compareData = ref([]);
 const showCompareBtn = ref(false);

+ 162 - 88
src/views/home/map/samplePointLayer.js

@@ -146,7 +146,7 @@ class SamplePointLayer {
     return this.getIconStyle(feature)
   }
 
-  initData(farmId, regionId) {
+  initData(farmId, regionId,isInit = false,matchedData = []) {
     let that = this
     let selectAll = undefined
     if (regionId === 0) {
@@ -165,10 +165,9 @@ class SamplePointLayer {
       const source = new VectorSource({
         features: features,
       });
-      that.features = features
       that.clusterSource.setSource(source)
 
-
+      
       const layers = that.mapRef.map.getLayers().getArray();
       const exists = layers.includes(that.treeClusterLayer.layer);
 
@@ -178,6 +177,10 @@ class SamplePointLayer {
       setTimeout(() => {
         that.mapRef.fit(that.clusterSource.source.getExtent(), { padding: [100, 100, 100, 100] })
       }, 100)
+
+      if (isInit) {
+        that.updatePointColors(matchedData)
+      }
     })
   }
 
@@ -307,88 +310,31 @@ class SamplePointLayer {
           if (!that.isCompare) {
             const noImg = fs.get("noImg")
             if (noImg === 1) {
-              VE_API.mini_farm.getSampleFiles({farmId: fs.get("farmId"), geoHashSample: fs.get('geoHashSample') }).then(({data}) => {
-                // 无照片
-                document.getElementById('file-text').innerHTML = `
-                  <div class="list-item">
-                    <div class="list-name">
-                        <img src="/src/assets/images/common/title-icon.png" alt="" />
-                        ${data.meta_info.dp_alert_info.key}
-                    </div>
-                    ${data.meta_info.dp_alert_info.statement}
-                  </div>
-                  <div class="list-item">
-                    <div class="list-name">
-                        <img src="/src/assets/images/common/title-icon.png" alt="" />
-                        ${data.meta_info.grow_alert_info.key}
-                    </div>
-                    ${data.meta_info.grow_alert_info.statement}
-                  </div>
-                  <div class="list-item">
-                    <div class="list-name">
-                        <img src="/src/assets/images/common/title-icon.png" alt="" />
-                        ${data.meta_info.nutrition_info.key}
-                    </div>
-                    ${data.meta_info.nutrition_info.statement}
-                  </div>
-                  <div class="list-item">
-                    <div class="list-name">
-                        <img src="/src/assets/images/common/title-icon.png" alt="" />
-                        ${data.meta_info.prescription_info.key}
-                    </div>
-                    ${data.meta_info.prescription_info.statement}
-                  </div>
-                `;
-                document.getElementById('file-overview').innerHTML = `
-                  <div class="base-item">
-                    <span class="label">品种</span>
-                    <div class="value">${fs.get("pz")}</div>
-                  </div>
-                  <div class="base-item">
-                    <span class="label">冠幅表面积</span>
-                    <div class="value">${data.meta_info.crown}平方米</div>
-                  </div>
-                  <div class="base-item">
-                    <span class="label">总枝条</span>
-                    <div class="value">${data.meta_info.branch_num}</div>
-                  </div>
-                  <div class="base-item">
-                    <span class="label">树龄</span>
-                    <div class="value">${data.meta_info.age}年</div>
-                  </div>
-                `;
-                document.getElementById('file-output').innerHTML = `
-                  <div class="box-item">
-                      <div class="item-name">产量估计</div>
-                      <div class="item-val">${data.production_info.production}斤</div>
-                  </div>
-                  <div class="box-item">
-                      <div class="item-name">高质果率</div>
-                      <div class="item-val">${data.production_info.quality.toFixed(0)}%</div>
-                  </div>
-                  <div class="box-item">
-                      <div class="item-name">坐果率</div>
-                      <div class="item-val">${(data.production_info.cihua_ratio || data.production_info.zuoguo_ratio).toFixed(0)}%</div>
-                  </div>
-                `;
-                document.getElementById('file-quality').innerHTML = `
-                  <div class="box-item">
-                      <div class="item-name">通风率</div>
-                      <div class="item-val">${data.ecology_info.ventilation}%</div>
-                  </div>
-                  <div class="box-item">
-                      <div class="item-name">透光率</div>
-                      <div class="item-val">${data.ecology_info.transmittance}%</div>
-                  </div>
-                  <div class="box-item">
-                      <div class="item-name">病虫比例</div>
-                      <div class="item-val">${data.ecology_info.dp_situation}%</div>
-                  </div>
-                `;
-
-                document.getElementById('tag-nh').style.display = fs.get("nonghu") == 1 ? "inline-block" : 'none'
-                that.popup.setPosition(evt.coordinate)
-              })
+              // 尝试多种可能的字段作为sampleId
+              const possibleSampleIds = [
+                fs.get('sampleId'),
+                fs.get('id'),
+                fs.get('treeId'),
+                fs.get('workCode'),
+                fs.get('sampleCode'),
+                fs.get('geoHashSample')
+              ].filter(id => id !== undefined && id !== null);
+              
+              
+              const sampleId = possibleSampleIds[0];
+              if (!sampleId) {
+                return;
+              }
+              
+              VE_API.home.getSampleFilesWithParams({ sampleId }).then(({data, code}) => {
+                if (code === 0) {
+                  // 保存当前sampleId供后续使用
+                  that.currentSampleId = sampleId
+                  // 处理数据并渲染到DOM
+                  that.renderFileDataToDom(data, fs.get("nonghu") == 1, sampleId)
+                  that.popup.setPosition(evt.coordinate)
+                }
+              }).catch(() => {})
             } else {
               eventBus.emit("click:point", { farmId: fs.get("farmId"), sampleId: fs.get("sampleId"), data: fs.getProperties() })
             }
@@ -405,7 +351,7 @@ class SamplePointLayer {
               that.comparePointArr[0].set("activeCompare", false);
               that.comparePointArr.shift();
             }
-            // fs.set("icon", '/src/assets/images/map/active-icon-small.png');
+            // fs.set("icon", require('@/assets/images/map/active-icon-small.png'));
             eventBus.emit("clickToCompare:point", that.comparePointArr)
           }
         }
@@ -499,12 +445,12 @@ class SamplePointLayer {
     let that = this;
     
     if (!this.pointArr || this.pointArr.length === 0) {
-      console.warn('pointArr is empty, cannot update point colors');
+      // pointArr is empty, skip
       return;
     }
     
     if (!matchedData || matchedData.length === 0) {
-      console.warn('matchedData is empty, cannot update point colors');
+      // matchedData is empty, skip
       return;
     }
     
@@ -576,6 +522,134 @@ class SamplePointLayer {
     
   }
 
+  // 渲染文件数据到DOM
+  renderFileDataToDom(data, isNonghu, sampleId) {
+    let that = this;
+    
+    // 清空之前的数据
+    const fileTextEl = document.getElementById('file-text');
+    const fileOverviewEl = document.getElementById('file-overview');
+    const fileOutputEl = document.getElementById('file-output');
+    const fileQualityEl = document.getElementById('file-quality');
+    
+    if (fileTextEl) fileTextEl.innerHTML = '';
+    if (fileOverviewEl) fileOverviewEl.innerHTML = '';
+    if (fileOutputEl) fileOutputEl.innerHTML = '';
+    if (fileQualityEl) fileQualityEl.innerHTML = '';
+    
+    // 重置标题为默认值
+    eventBus.emit('update:fileTitles', { type: 'firstTitle', value: '总体档案' });
+    eventBus.emit('update:fileTitles', { type: 'secondTitle', value: '产量信息' });
+    eventBus.emit('update:fileTitles', { type: 'thirdTitle', value: '生态评估' });
+    
+
+    // 处理数据块
+    data.forEach((item, index) => {
+      if (item.name && item.indicators && item.indicators.length > 0) {
+        // 处理所有数值,整数不保留小数,小数保留两位
+        const processedIndicators = item.indicators.map((indicator) => {
+          if (
+            indicator.val !== "--" &&
+            indicator.val !== null &&
+            indicator.val !== undefined &&
+            !isNaN(parseFloat(indicator.val))
+          ) {
+            const num = parseFloat(indicator.val);
+            // 判断是否为整数
+            const isInteger = Number.isInteger(num);
+            return {
+              ...indicator,
+              val: isInteger ? num.toString() : num.toFixed(2),
+            };
+          }
+          return indicator;
+        });
+
+        // 总体档案(第一个数据块)
+        if (index === 0) {
+          // 更新第一个数据块的标题
+          const firstTitleEl = document.querySelector('#popup-file .overview-file:first-child .box-title');
+          if (firstTitleEl) {
+            firstTitleEl.textContent = item.name;
+          }
+          // 通过事件总线更新Vue组件中的标题
+          eventBus.emit('update:fileTitles', { type: 'firstTitle', value: item.name });
+          
+          // 渲染基础数据
+          const baseDataHtml = processedIndicators.map(indicator => `
+            <div class="base-item">
+              <span class="label">${indicator.name}</span>
+              <div class="value">${indicator.val || "--"}${indicator.unit || ""}</div>
+            </div>
+          `).join('');
+          if (fileOverviewEl) {
+            fileOverviewEl.innerHTML = baseDataHtml;
+          }
+        } else {
+          // 其他数据块渲染为指标数据
+          const indicatorsHtml = processedIndicators.map(indicator => `
+            <div class="box-item">
+              <div class="item-name">${indicator.name}</div>
+              <div class="item-val">${indicator.val || "--"}${indicator.unit || ""}</div>
+            </div>
+          `).join('');
+
+
+          // 按顺序分配标题和数据容器
+          if (index === 1) {
+            // 第二个数据块 -> 第二个标题容器
+            const outputTitleEl = document.querySelector('#popup-file .overview-file:nth-child(2) .box-title');
+            if (outputTitleEl) {
+              outputTitleEl.textContent = item.name;
+            }
+            // 通过事件总线更新Vue组件中的标题
+            eventBus.emit('update:fileTitles', { type: 'secondTitle', value: item.name });
+            if (fileOutputEl) {
+              fileOutputEl.innerHTML = indicatorsHtml;
+            }
+          } else if (index === 2) {
+            // 第三个数据块 -> 第三个标题容器
+            const qualityTitleEl = document.querySelector('#popup-file .overview-file:nth-child(3) .box-title');
+            if (qualityTitleEl) {
+              qualityTitleEl.textContent = item.name;
+            }
+            // 通过事件总线更新Vue组件中的标题
+            eventBus.emit('update:fileTitles', { type: 'thirdTitle', value: item.name });
+            if (fileQualityEl) {
+              fileQualityEl.innerHTML = indicatorsHtml;
+            }
+          }
+          // 如果有更多数据块,可以继续扩展
+        }
+      }
+    });
+
+    // 获取语音信息数据
+    VE_API.home.getSpeakInfo({ sampleId }).then(({ data, code }) => {
+      if (code === 0) {
+        const photoList = data || [];
+        const listHtml = photoList.map(item => `
+          <div class="list-item">
+            <div class="list-name">
+              <img src="${require('@/assets/images/common/title-icon.png')}" alt="" />
+              ${item.speakTitleName || "--"}
+            </div>
+            ${item.content?.renderedContent || "--"}
+          </div>
+        `).join('');
+        if (fileTextEl) {
+          fileTextEl.innerHTML = listHtml;
+        }
+      }
+    }).catch(() => {});
+
+    // 显示小农户标签
+    const tagNhEl = document.getElementById('tag-nh');
+    if (tagNhEl) {
+      tagNhEl.style.display = isNonghu ? "inline-block" : 'none';
+    }
+  }
+
   // 清除聚合图层,解除绑定
   clearCluster() {
     if (this.treeClusterLayer && this.treeClusterLayer.layer.getSource().getSource()) {

+ 33 - 33
yarn.lock

@@ -214,10 +214,10 @@
   resolved "https://registry.npmjs.org/@esbuild/darwin-arm64/-/darwin-arm64-0.18.20.tgz"
   integrity sha512-bxRHW5kHU38zS2lPTPOyuyTm+S+eobPUnTNkdJEfAddYgEcll4xkT8DB9d2008DtTbl7uJag2HuE5NZAZgnNEA==
 
-"@esbuild/darwin-arm64@0.25.9":
-  version "0.25.9"
-  resolved "https://registry.npmjs.org/@esbuild/darwin-arm64/-/darwin-arm64-0.25.9.tgz"
-  integrity sha512-XIpIDMAjOELi/9PB30vEbVMs3GV1v2zkkPnuyRRURbhqjyzIINwj+nbQATh4H9GxUgH1kFsEyQMxwiLFKUS6Rg==
+"@esbuild/darwin-arm64@0.25.10":
+  version "0.25.10"
+  resolved "https://registry.npmjs.org/@esbuild/darwin-arm64/-/darwin-arm64-0.25.10.tgz"
+  integrity sha512-JC74bdXcQEpW9KkV326WpZZjLguSZ3DfS8wrrvPMHgQOIEIG/sPXEN/V8IssoJhbefLRcRqw6RQH2NnpdprtMA==
 
 "@eslint/eslintrc@^1.3.0":
   version "1.3.0"
@@ -4785,36 +4785,36 @@ esbuild@^0.18.10:
     "@esbuild/win32-x64" "0.18.20"
 
 esbuild@>=0.21.0:
-  version "0.25.9"
-  resolved "https://registry.npmjs.org/esbuild/-/esbuild-0.25.9.tgz"
-  integrity sha512-CRbODhYyQx3qp7ZEwzxOk4JBqmD/seJrzPa/cGjY1VtIn5E09Oi9/dB4JwctnfZ8Q8iT7rioVv5k/FNT/uf54g==
+  version "0.25.10"
+  resolved "https://registry.npmjs.org/esbuild/-/esbuild-0.25.10.tgz"
+  integrity sha512-9RiGKvCwaqxO2owP61uQ4BgNborAQskMR6QusfWzQqv7AZOg5oGehdY2pRJMTKuwxd1IDBP4rSbI5lHzU7SMsQ==
   optionalDependencies:
-    "@esbuild/aix-ppc64" "0.25.9"
-    "@esbuild/android-arm" "0.25.9"
-    "@esbuild/android-arm64" "0.25.9"
-    "@esbuild/android-x64" "0.25.9"
-    "@esbuild/darwin-arm64" "0.25.9"
-    "@esbuild/darwin-x64" "0.25.9"
-    "@esbuild/freebsd-arm64" "0.25.9"
-    "@esbuild/freebsd-x64" "0.25.9"
-    "@esbuild/linux-arm" "0.25.9"
-    "@esbuild/linux-arm64" "0.25.9"
-    "@esbuild/linux-ia32" "0.25.9"
-    "@esbuild/linux-loong64" "0.25.9"
-    "@esbuild/linux-mips64el" "0.25.9"
-    "@esbuild/linux-ppc64" "0.25.9"
-    "@esbuild/linux-riscv64" "0.25.9"
-    "@esbuild/linux-s390x" "0.25.9"
-    "@esbuild/linux-x64" "0.25.9"
-    "@esbuild/netbsd-arm64" "0.25.9"
-    "@esbuild/netbsd-x64" "0.25.9"
-    "@esbuild/openbsd-arm64" "0.25.9"
-    "@esbuild/openbsd-x64" "0.25.9"
-    "@esbuild/openharmony-arm64" "0.25.9"
-    "@esbuild/sunos-x64" "0.25.9"
-    "@esbuild/win32-arm64" "0.25.9"
-    "@esbuild/win32-ia32" "0.25.9"
-    "@esbuild/win32-x64" "0.25.9"
+    "@esbuild/aix-ppc64" "0.25.10"
+    "@esbuild/android-arm" "0.25.10"
+    "@esbuild/android-arm64" "0.25.10"
+    "@esbuild/android-x64" "0.25.10"
+    "@esbuild/darwin-arm64" "0.25.10"
+    "@esbuild/darwin-x64" "0.25.10"
+    "@esbuild/freebsd-arm64" "0.25.10"
+    "@esbuild/freebsd-x64" "0.25.10"
+    "@esbuild/linux-arm" "0.25.10"
+    "@esbuild/linux-arm64" "0.25.10"
+    "@esbuild/linux-ia32" "0.25.10"
+    "@esbuild/linux-loong64" "0.25.10"
+    "@esbuild/linux-mips64el" "0.25.10"
+    "@esbuild/linux-ppc64" "0.25.10"
+    "@esbuild/linux-riscv64" "0.25.10"
+    "@esbuild/linux-s390x" "0.25.10"
+    "@esbuild/linux-x64" "0.25.10"
+    "@esbuild/netbsd-arm64" "0.25.10"
+    "@esbuild/netbsd-x64" "0.25.10"
+    "@esbuild/openbsd-arm64" "0.25.10"
+    "@esbuild/openbsd-x64" "0.25.10"
+    "@esbuild/openharmony-arm64" "0.25.10"
+    "@esbuild/sunos-x64" "0.25.10"
+    "@esbuild/win32-arm64" "0.25.10"
+    "@esbuild/win32-ia32" "0.25.10"
+    "@esbuild/win32-x64" "0.25.10"
 
 escalade@^3.2.0:
   version "3.2.0"