| 
					
				 | 
			
			
				@@ -21,35 +21,9 @@ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				               <el-icon class="arrow-icon cursor-pointer" color="#141414" 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                 ><DArrowLeft 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				               /></el-icon> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-              <div class="edit-btn cursor-pointer">编辑</div> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+              <div class="edit-btn cursor-pointer" @click="toFilePage">编辑</div> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				             </template> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            <div class="file-chart"> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-              <div 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                v-for="(item, index) in fileData" 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                :key="index" 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                class="item-container" 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-              > 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                <div class="file-label">{{ item.name }}</div> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                <div class="file-bar"> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                  <div 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                    v-for="(value, subIndex) in item.data" 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                    :key="subIndex" 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                    class="bar-block" 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                    :class="'bg-'+value.level" 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                    :style="{ width: computedWidths[index][subIndex] + 'px' }" 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                  > 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                  <el-tooltip 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                    class="tooltip-item" 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                    effect="light" 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                    :content="value.tag" 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                    placement="top" 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                  > 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                    <div class="cursor-pointer">{{ value.tag }}</div> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                  </el-tooltip> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                  </div> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                </div> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-              </div> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            </div> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            <file-bar></file-bar> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				           </chart-box> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         </div> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				       </div> 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -65,14 +39,16 @@ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 </template> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 <script setup> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-import { onMounted, ref, computed } from "vue"; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+import { onMounted, ref } from "vue"; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 import fnHeader from "@/components/fnHeader.vue"; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 import chartBox from "@/components/chartBox.vue"; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 import toolList from "@/components/toolList.vue"; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+import fileBar from "@/components/fileBar.vue"; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 import HomeMap from "./homeMap"; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 import homePage from "./components/homePage.vue"; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 import weatherPage from "./components/weatherPage.vue"; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 import phenologyPage from "./components/phenologyPage.vue"; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+import { useRouter } from "vue-router"; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 const components = { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				   homePage, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				   weatherPage, 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -80,6 +56,7 @@ const components = { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 }; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 let homeMap = new HomeMap(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+const router = useRouter(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 const mapRef = ref(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 onMounted(() => { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				   let location = "POINT (113.78049350268851 23.419886891845312)"; 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -124,48 +101,10 @@ const rightToolList = [ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				   }, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 ]; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-const fileData = ref([ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-  { name: '高产级', data: [ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-    { value: 325, level: 4, tag: '325棵' }, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-    { value: 325, level: 3, tag: '325棵' }, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-    { value: 325, level: 2, tag: '325棵' }, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-    { value: 325, level: 1, tag: '325棵' }, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-  ]}, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-  { name: '稳产级', data: [ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-    { value: 160, level: 4, tag: '160棵' }, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-    { value: 170, level: 3, tag: '170棵' }, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-    { value: 170, level: 2, tag: '170棵' }, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-    { value: 170, level: 1, tag: '170棵' }, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-  ]}, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-  { name: '休养-幼树', data: [ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-    { value: 380, level: 0, tag: '新嫁接1年 380棵' }, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-    { value: 330, level: 0, tag: '2年 330棵' }, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-    { value: 200, level: 0, tag: '3年 200棵' }, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-  ]}, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-  { name: '休养-病虫', data: [ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-    { value: 350, level: 3, tag: '蒂蛀虫 350棵' }, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-    { value: 350, level: 1, tag: '其他病 350棵' }, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-  ]}, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-  { name: '休养-生长', data: [ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-    { value: 300, level: 2, tag: '花芽 300棵' }, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-    { value: 280, level: 2, tag: '花穗 280棵' }, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-    { value: 320, level: 2, tag: '小果 320棵' }, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-  ]}, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-]); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-// 计算所有 data 中 value 属性的总和最大值 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-const maxSum = computed(() => { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-  return Math.max(...fileData.value.map(item => item.data.reduce((sum, dataPoint) => sum + dataPoint.value, 0))); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-}); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-// 计算每个 dataPoint 的值在所有 data 中 value 总和最大值中所占的百分比 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-const computedWidths = computed(() => { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-  const max = maxSum.value; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-  return fileData.value.map(item => { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-    // 258是右侧容器总宽度 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-    return item.data.map(dataPoint => ((dataPoint.value / max) * 258).toFixed(0)); // 保留两位小数 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-  }); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-}); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+// 跳转果园档案 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+const toFilePage = () => { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  router.push('/garden-file') 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 </script> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 <style lang="scss" scoped> 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -231,54 +170,6 @@ const computedWidths = computed(() => { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				           background: #2199f8; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				           border-radius: 4px; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        .file-chart { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-          padding: 0 6px; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-          height: 100%; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-          display: flex; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-          flex-direction: column; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-          align-items: center; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-          justify-content: center; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-          .item-container { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            display: flex; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            width: 100%; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            color: #FFFFFF; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            margin-bottom: 12px; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            .file-label { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-              width: 60px; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-              text-align: right; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-              font-size: 12px; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            .file-bar { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-              width: calc(100% - 56px); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-              display: flex; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-              padding-left: 6px; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-              height: 18px; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-              font-size: 10px; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-              .bar-block { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                text-align: center; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                border-radius: 0px 4px 4px 0px; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                // border-image: linear-gradient(90deg, rgba(255, 223, 223, 0), rgba(234, 232, 232, 1)) 1 1; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                white-space: nowrap; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                overflow: hidden; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                text-overflow: ellipsis; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                &::before { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                  content: ""; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                  position: absolute; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                  top: -2px; /* 边框宽度的一半,且方向相反 */ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                  left: -2px; /* 边框宽度的一半,且方向相反 */ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                  right: -2px; /* 边框宽度的一半,且方向相反 */ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                  bottom: -2px; /* 边框宽度的一半,且方向相反 */ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                  background-image: linear-gradient(to right, rgba(255, 223, 223, 0), rgba(234, 232, 232, 1)); /* 渐变背景 */ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                  border-radius: 0px 4px 4px 0px; /* 继承容器的圆角半径 */ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                  z-index: -1; /* 放在容器内容之下 */ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-              } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-              .bg-0 { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                background-image: linear-gradient(to right, #042921, #0CBA93); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-              } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-          } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				       } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				   } 
			 |