Explorar el Código

Merge branch 'ding' of qw/12 into master

Ding hace 2 meses
padre
commit
86878330e6

+ 8 - 0
components.d.ts

@@ -29,6 +29,7 @@ declare module 'vue' {
     CrossSetionData2: typeof import('./src/components/irrpollution/crossSetionData2.vue')['default']
     CrossSetionTencentmap: typeof import('./src/components/irrpollution/crossSetionTencentmap.vue')['default']
     EffcdStatistics: typeof import('./src/components/soilcdStatistics/effcdStatistics.vue')['default']
+    ElAlert: typeof import('element-plus/es')['ElAlert']
     ElAside: typeof import('element-plus/es')['ElAside']
     ElAvatar: typeof import('element-plus/es')['ElAvatar']
     ElButton: typeof import('element-plus/es')['ElButton']
@@ -36,10 +37,12 @@ declare module 'vue' {
     ElCheckbox: typeof import('element-plus/es')['ElCheckbox']
     ElCheckboxGroup: typeof import('element-plus/es')['ElCheckboxGroup']
     ElContainer: typeof import('element-plus/es')['ElContainer']
+    ElDialog: typeof import('element-plus/es')['ElDialog']
     ElDropdown: typeof import('element-plus/es')['ElDropdown']
     ElDropdownItem: typeof import('element-plus/es')['ElDropdownItem']
     ElDropdownMenu: typeof import('element-plus/es')['ElDropdownMenu']
     ElForm: typeof import('element-plus/es')['ElForm']
+    ElFormItem: typeof import('element-plus/es')['ElFormItem']
     ElHeader: typeof import('element-plus/es')['ElHeader']
     ElIcon: typeof import('element-plus/es')['ElIcon']
     ElImage: typeof import('element-plus/es')['ElImage']
@@ -57,6 +60,8 @@ declare module 'vue' {
     ElTabPane: typeof import('element-plus/es')['ElTabPane']
     ElTabs: typeof import('element-plus/es')['ElTabs']
     ElTag: typeof import('element-plus/es')['ElTag']
+    ElTooltip: typeof import('element-plus/es')['ElTooltip']
+    ElUpload: typeof import('element-plus/es')['ElUpload']
     FluxcdStatictics: typeof import('./src/components/soilcdStatistics/fluxcdStatictics.vue')['default']
     HeavyMetalEnterprisechart: typeof import('./src/components/atmpollution/heavyMetalEnterprisechart.vue')['default']
     HelloWorld: typeof import('./src/components/HelloWorld.vue')['default']
@@ -82,4 +87,7 @@ declare module 'vue' {
     Waterdataline: typeof import('./src/components/irrpollution/waterdataline.vue')['default']
     WelcomeItem: typeof import('./src/components/WelcomeItem.vue')['default']
   }
+  export interface GlobalDirectives {
+    vLoading: typeof import('element-plus/es')['ElLoadingDirective']
+  }
 }

+ 4 - 0
src/router/index.ts

@@ -15,6 +15,10 @@ const routes = [
         path: "/:catchAll(.*)",
         redirect: "/404", // 确保重定向到有效页面
       },
+      {
+        path: '',
+        redirect: '/irriSampleData'
+      },
       {
         path: "select-city", // remove leading slash
         name: "selectCityAndCounty",

+ 81 - 2
src/views/User/cadmiumPrediction/CropCadmiumPrediction.vue

@@ -90,8 +90,9 @@
         </div>
         
         <div v-if="!loadingStats && statisticsData.length" class="stats-container">
-          <!-- 统计表格 -->
-         <el-table 
+          <!-- 基础统计表格 -->
+          <h4>基础统计信息</h4>
+          <el-table 
             :data="statisticsData" 
             style="width: 100%; margin-bottom: 20px;"
             border
@@ -102,6 +103,25 @@
             <el-table-column prop="unit" label="单位" min-width="100" />
             <el-table-column prop="description" label="描述" min-width="200" />
           </el-table>
+
+          <!-- 分布统计表格 -->
+          <h4>水稻镉含量分布统计</h4>
+          <el-table 
+            :data="distributionData" 
+            style="width: 100%; margin-bottom: 20px;"
+            border
+            stripe
+          >
+            <el-table-column prop="序号" label="序号" width="80" />
+            <el-table-column prop="分布区间" label="分布区间 (mg/kg)" min-width="150" />
+            <el-table-column prop="区间说明" label="区间说明" min-width="120" />
+            <el-table-column prop="数据点数量" label="数据点数量" min-width="120" />
+            <el-table-column prop="占比" label="占比 (%)" min-width="100">
+              <template #default="{ row }">
+                {{ row.占比 }}%
+              </template>
+            </el-table-column>
+          </el-table>
         </div>
         
         <div v-if="!loadingStats && !statisticsData.length" class="no-data">
@@ -149,6 +169,9 @@ export default {
       loadingHistogram: false,
       loadingStats: false,
       statisticsData: [],
+      distributionData: [],
+      distributionSummary: null,
+      distributionTotal: 0,
       modelInfo: {
         modelType: '',
         unit: '',
@@ -329,6 +352,13 @@ export default {
           const statsData = response.data;
           this.statisticsData = this.formatStatisticsData(statsData);
           
+          // 设置分布统计表格数据
+          if (statsData.data.分布统计表格 && statsData.data.分布统计表格.表格数据) {
+            this.distributionData = statsData.data.分布统计表格.表格数据;
+            this.distributionSummary = statsData.data.分布统计表格.汇总;
+            this.distributionTotal = statsData.data.分布统计表格.总数据点数;
+          }
+          
           // 设置模型信息
           this.modelInfo = {
             modelType: statsData.data.模型类型,
@@ -901,6 +931,55 @@ export default {
   animation: rotate 2s linear infinite;
 }
 
+/* 新增样式 */
+.summary-info {
+  margin-top: 20px;
+}
+
+.card-header {
+  font-weight: bold;
+  color: #409EFF;
+}
+
+.summary-items {
+  display: flex;
+  flex-direction: column;
+  gap: 10px;
+}
+
+.summary-item {
+  display: flex;
+  justify-content: space-between;
+  align-items: center;
+  padding: 8px 0;
+  border-bottom: 1px solid #ebeef5;
+}
+
+.summary-item:last-child {
+  border-bottom: none;
+}
+
+.summary-item .label {
+  font-weight: bold;
+  color: #606266;
+}
+
+.summary-item .value {
+  font-weight: bold;
+}
+
+.summary-item .value.safe {
+  color: #67C23A;
+}
+
+.summary-item .value.warning {
+  color: #E6A23C;
+}
+
+.summary-item .value.danger {
+  color: #F56C6C;
+}
+
 @keyframes rotate {
   from {
     transform: rotate(0deg);