dumingliang 22 часов назад
Родитель
Сommit
5502f77e24
31 измененных файлов с 464 добавлено и 359 удалено
  1. 88 65
      .idea/workspace.xml
  2. 25 25
      .mybatis/index.json
  3. 5 7
      gw-admin/src/main/java/com/goldenwater/web/controller/yjjt/YjjtSlDataController.java
  4. 8 8
      gw-admin/src/main/java/com/goldenwater/web/controller/yjjt/YjjtSzDataController.java
  5. 8 36
      gw-admin/src/main/java/com/goldenwater/web/controller/yjjt/YjjtTemplateController.java
  6. BIN
      gw-admin/src/main/resources/excel/yjjt/js-station-sl-model.xlsx
  7. BIN
      gw-admin/src/main/resources/excel/yjjt/js-station-sz-model.xlsx
  8. BIN
      gw-admin/src/main/resources/excel/yjjt/sh-station-sl-model.xlsx
  9. BIN
      gw-admin/src/main/resources/excel/yjjt/sh-station-sz-model.xlsx
  10. BIN
      gw-admin/src/main/resources/excel/yjjt/station-sl-model.xlsx
  11. BIN
      gw-admin/src/main/resources/excel/yjjt/station-sz-model.xlsx
  12. BIN
      gw-admin/src/main/resources/excel/yjjt/wx-station-sl-model.xlsx
  13. BIN
      gw-admin/src/main/resources/excel/yjjt/wx-station-sz-model.xlsx
  14. BIN
      gw-admin/src/main/resources/excel/yjjt/zj-station-sl-model.xlsx
  15. BIN
      gw-admin/src/main/resources/excel/yjjt/zj-station-sz-model.xlsx
  16. 6 0
      gw-gx/src/main/java/com/goldenwater/gx/mapper/GxExchangeStationMapper.java
  17. 45 19
      gw-gx/src/main/java/com/goldenwater/gx/service/impl/GxExchangeStationServiceImpl.java
  18. 10 0
      gw-gx/src/main/java/com/goldenwater/yjjt/domain/YjjtSlData.java
  19. 42 0
      gw-gx/src/main/java/com/goldenwater/yjjt/domain/YjjtSzData.java
  20. 1 1
      gw-gx/src/main/java/com/goldenwater/yjjt/service/IYjjtSzDataService.java
  21. 2 1
      gw-gx/src/main/java/com/goldenwater/yjjt/service/impl/YjjtSzDataServiceImpl.java
  22. 5 0
      gw-gx/src/main/resources/mapper/gx/GxExchangeStationMapper.xml
  23. 1 1
      gw-ui/src/layout/components/Navbar.vue
  24. 1 0
      gw-ui/src/views/gx/apply/index.vue
  25. 3 2
      gw-ui/src/views/gx/biz/index.vue
  26. 1 0
      gw-ui/src/views/gx/quality/index.vue
  27. 1 0
      gw-ui/src/views/gx/station/index.vue
  28. 1 0
      gw-ui/src/views/gx/unit/index.vue
  29. 78 92
      gw-ui/src/views/yjjtgl/sl/index.vue
  30. 1 2
      gw-ui/src/views/yjjtgl/station/index.vue
  31. 132 100
      gw-ui/src/views/yjjtgl/sz/index.vue

+ 88 - 65
.idea/workspace.xml

@@ -4,44 +4,38 @@
     <option name="autoReloadType" value="SELECTIVE" />
   </component>
   <component name="ChangeListManager">
-    <list default="true" id="47e3e366-6c6f-4d58-936d-e2c777d5248c" name="Changes" comment="引江济太填报模块更新">
-      <change afterPath="$PROJECT_DIR$/.trae/specs/yjjt-statistics/checklist.md" afterDir="false" />
-      <change afterPath="$PROJECT_DIR$/.trae/specs/yjjt-statistics/spec.md" afterDir="false" />
-      <change afterPath="$PROJECT_DIR$/.trae/specs/yjjt-statistics/tasks.md" afterDir="false" />
-      <change afterPath="$PROJECT_DIR$/gw-admin/src/main/java/com/goldenwater/web/controller/yjjt/YjjtFileController.java" afterDir="false" />
-      <change afterPath="$PROJECT_DIR$/gw-admin/src/main/java/com/goldenwater/web/controller/yjjt/YjjtStationController.java" afterDir="false" />
-      <change afterPath="$PROJECT_DIR$/gw-admin/src/main/java/com/goldenwater/web/controller/yjjt/YjjtStatisticsController.java" afterDir="false" />
-      <change afterPath="$PROJECT_DIR$/gw-gx/src/main/java/com/goldenwater/yjjt/domain/YjjtDailyStatistics.java" afterDir="false" />
-      <change afterPath="$PROJECT_DIR$/gw-gx/src/main/java/com/goldenwater/yjjt/domain/YjjtStation.java" afterDir="false" />
-      <change afterPath="$PROJECT_DIR$/gw-gx/src/main/java/com/goldenwater/yjjt/domain/YjjtStatisticsDTO.java" afterDir="false" />
-      <change afterPath="$PROJECT_DIR$/gw-gx/src/main/java/com/goldenwater/yjjt/domain/YjjtYearlyDataStatistics.java" afterDir="false" />
-      <change afterPath="$PROJECT_DIR$/gw-gx/src/main/java/com/goldenwater/yjjt/domain/YjjtYearlyStatistics.java" afterDir="false" />
-      <change afterPath="$PROJECT_DIR$/gw-gx/src/main/java/com/goldenwater/yjjt/mapper/YjjtStationMapper.java" afterDir="false" />
-      <change afterPath="$PROJECT_DIR$/gw-gx/src/main/java/com/goldenwater/yjjt/mapper/YjjtStatisticsMapper.java" afterDir="false" />
-      <change afterPath="$PROJECT_DIR$/gw-gx/src/main/java/com/goldenwater/yjjt/service/IYjjtFileService.java" afterDir="false" />
-      <change afterPath="$PROJECT_DIR$/gw-gx/src/main/java/com/goldenwater/yjjt/service/IYjjtStationService.java" afterDir="false" />
-      <change afterPath="$PROJECT_DIR$/gw-gx/src/main/java/com/goldenwater/yjjt/service/IYjjtStatisticsService.java" afterDir="false" />
-      <change afterPath="$PROJECT_DIR$/gw-gx/src/main/java/com/goldenwater/yjjt/service/impl/YjjtFileServiceImpl.java" afterDir="false" />
-      <change afterPath="$PROJECT_DIR$/gw-gx/src/main/java/com/goldenwater/yjjt/service/impl/YjjtStationServiceImpl.java" afterDir="false" />
-      <change afterPath="$PROJECT_DIR$/gw-gx/src/main/java/com/goldenwater/yjjt/service/impl/YjjtStatisticsServiceImpl.java" afterDir="false" />
-      <change afterPath="$PROJECT_DIR$/gw-gx/src/main/resources/mapper/yjjt/YjjtStationMapper.xml" afterDir="false" />
-      <change afterPath="$PROJECT_DIR$/gw-gx/src/main/resources/mapper/yjjt/YjjtStatisticsMapper.xml" afterDir="false" />
-      <change afterPath="$PROJECT_DIR$/gw-ui/src/views/yjjtgl/file/index.vue" afterDir="false" />
-      <change afterPath="$PROJECT_DIR$/gw-ui/src/views/yjjtgl/station/index.vue" afterDir="false" />
-      <change afterPath="$PROJECT_DIR$/gw-ui/src/views/yjjtgl/statistics/index.vue" afterDir="false" />
-      <change afterPath="$PROJECT_DIR$/gw-ui/src/views/yjjtgl/stcdtongji/index.vue" afterDir="false" />
+    <list default="true" id="47e3e366-6c6f-4d58-936d-e2c777d5248c" name="Changes" comment="更新">
       <change beforePath="$PROJECT_DIR$/.idea/workspace.xml" beforeDir="false" afterPath="$PROJECT_DIR$/.idea/workspace.xml" afterDir="false" />
       <change beforePath="$PROJECT_DIR$/.mybatis/index.json" beforeDir="false" afterPath="$PROJECT_DIR$/.mybatis/index.json" afterDir="false" />
-      <change beforePath="$PROJECT_DIR$/docs/init-yjjt-report-menu.sql" beforeDir="false" afterPath="$PROJECT_DIR$/docs/init-yjjt-report-menu.sql" afterDir="false" />
-      <change beforePath="$PROJECT_DIR$/gw-gx/src/main/java/com/goldenwater/yjjt/domain/YjjtFile.java" beforeDir="false" afterPath="$PROJECT_DIR$/gw-gx/src/main/java/com/goldenwater/yjjt/domain/YjjtFile.java" afterDir="false" />
-      <change beforePath="$PROJECT_DIR$/gw-gx/src/main/java/com/goldenwater/yjjt/mapper/YjjtFileMapper.java" beforeDir="false" afterPath="$PROJECT_DIR$/gw-gx/src/main/java/com/goldenwater/yjjt/mapper/YjjtFileMapper.java" afterDir="false" />
-      <change beforePath="$PROJECT_DIR$/gw-gx/src/main/resources/mapper/yjjt/YjjtFileMapper.xml" beforeDir="false" afterPath="$PROJECT_DIR$/gw-gx/src/main/resources/mapper/yjjt/YjjtFileMapper.xml" afterDir="false" />
-      <change beforePath="$PROJECT_DIR$/gw-ui/src/api/yjjt/file.js" beforeDir="false" afterPath="$PROJECT_DIR$/gw-ui/src/api/yjjt/file.js" afterDir="false" />
-      <change beforePath="$PROJECT_DIR$/gw-ui/src/api/yjjt/station.js" beforeDir="false" afterPath="$PROJECT_DIR$/gw-ui/src/api/yjjt/station.js" afterDir="false" />
-      <change beforePath="$PROJECT_DIR$/gw-ui/src/api/yjjt/statistics.js" beforeDir="false" afterPath="$PROJECT_DIR$/gw-ui/src/api/yjjt/statistics.js" afterDir="false" />
+      <change beforePath="$PROJECT_DIR$/gw-admin/src/main/java/com/goldenwater/web/controller/yjjt/YjjtSlDataController.java" beforeDir="false" afterPath="$PROJECT_DIR$/gw-admin/src/main/java/com/goldenwater/web/controller/yjjt/YjjtSlDataController.java" afterDir="false" />
+      <change beforePath="$PROJECT_DIR$/gw-admin/src/main/java/com/goldenwater/web/controller/yjjt/YjjtSzDataController.java" beforeDir="false" afterPath="$PROJECT_DIR$/gw-admin/src/main/java/com/goldenwater/web/controller/yjjt/YjjtSzDataController.java" afterDir="false" />
+      <change beforePath="$PROJECT_DIR$/gw-admin/src/main/java/com/goldenwater/web/controller/yjjt/YjjtTemplateController.java" beforeDir="false" afterPath="$PROJECT_DIR$/gw-admin/src/main/java/com/goldenwater/web/controller/yjjt/YjjtTemplateController.java" afterDir="false" />
+      <change beforePath="$PROJECT_DIR$/gw-admin/src/main/resources/excel/yjjt/js-station-sl-model.xlsx" beforeDir="false" />
+      <change beforePath="$PROJECT_DIR$/gw-admin/src/main/resources/excel/yjjt/js-station-sz-model.xlsx" beforeDir="false" />
+      <change beforePath="$PROJECT_DIR$/gw-admin/src/main/resources/excel/yjjt/sh-station-sl-model.xlsx" beforeDir="false" />
+      <change beforePath="$PROJECT_DIR$/gw-admin/src/main/resources/excel/yjjt/sh-station-sz-model.xlsx" beforeDir="false" />
+      <change beforePath="$PROJECT_DIR$/gw-admin/src/main/resources/excel/yjjt/station-sl-model.xlsx" beforeDir="false" afterPath="$PROJECT_DIR$/gw-admin/src/main/resources/excel/yjjt/station-sl-model.xlsx" afterDir="false" />
+      <change beforePath="$PROJECT_DIR$/gw-admin/src/main/resources/excel/yjjt/station-sz-model.xlsx" beforeDir="false" afterPath="$PROJECT_DIR$/gw-admin/src/main/resources/excel/yjjt/station-sz-model.xlsx" afterDir="false" />
+      <change beforePath="$PROJECT_DIR$/gw-admin/src/main/resources/excel/yjjt/wx-station-sl-model.xlsx" beforeDir="false" />
+      <change beforePath="$PROJECT_DIR$/gw-admin/src/main/resources/excel/yjjt/wx-station-sz-model.xlsx" beforeDir="false" />
+      <change beforePath="$PROJECT_DIR$/gw-admin/src/main/resources/excel/yjjt/zj-station-sl-model.xlsx" beforeDir="false" />
+      <change beforePath="$PROJECT_DIR$/gw-admin/src/main/resources/excel/yjjt/zj-station-sz-model.xlsx" beforeDir="false" />
+      <change beforePath="$PROJECT_DIR$/gw-gx/src/main/java/com/goldenwater/gx/mapper/GxExchangeStationMapper.java" beforeDir="false" afterPath="$PROJECT_DIR$/gw-gx/src/main/java/com/goldenwater/gx/mapper/GxExchangeStationMapper.java" afterDir="false" />
+      <change beforePath="$PROJECT_DIR$/gw-gx/src/main/java/com/goldenwater/gx/service/impl/GxExchangeStationServiceImpl.java" beforeDir="false" afterPath="$PROJECT_DIR$/gw-gx/src/main/java/com/goldenwater/gx/service/impl/GxExchangeStationServiceImpl.java" afterDir="false" />
+      <change beforePath="$PROJECT_DIR$/gw-gx/src/main/java/com/goldenwater/yjjt/domain/YjjtSlData.java" beforeDir="false" afterPath="$PROJECT_DIR$/gw-gx/src/main/java/com/goldenwater/yjjt/domain/YjjtSlData.java" afterDir="false" />
+      <change beforePath="$PROJECT_DIR$/gw-gx/src/main/java/com/goldenwater/yjjt/domain/YjjtSzData.java" beforeDir="false" afterPath="$PROJECT_DIR$/gw-gx/src/main/java/com/goldenwater/yjjt/domain/YjjtSzData.java" afterDir="false" />
+      <change beforePath="$PROJECT_DIR$/gw-gx/src/main/java/com/goldenwater/yjjt/service/IYjjtSzDataService.java" beforeDir="false" afterPath="$PROJECT_DIR$/gw-gx/src/main/java/com/goldenwater/yjjt/service/IYjjtSzDataService.java" afterDir="false" />
+      <change beforePath="$PROJECT_DIR$/gw-gx/src/main/java/com/goldenwater/yjjt/service/impl/YjjtSzDataServiceImpl.java" beforeDir="false" afterPath="$PROJECT_DIR$/gw-gx/src/main/java/com/goldenwater/yjjt/service/impl/YjjtSzDataServiceImpl.java" afterDir="false" />
+      <change beforePath="$PROJECT_DIR$/gw-gx/src/main/resources/mapper/gx/GxExchangeStationMapper.xml" beforeDir="false" afterPath="$PROJECT_DIR$/gw-gx/src/main/resources/mapper/gx/GxExchangeStationMapper.xml" afterDir="false" />
+      <change beforePath="$PROJECT_DIR$/gw-ui/src/layout/components/Navbar.vue" beforeDir="false" afterPath="$PROJECT_DIR$/gw-ui/src/layout/components/Navbar.vue" afterDir="false" />
+      <change beforePath="$PROJECT_DIR$/gw-ui/src/views/gx/apply/index.vue" beforeDir="false" afterPath="$PROJECT_DIR$/gw-ui/src/views/gx/apply/index.vue" afterDir="false" />
+      <change beforePath="$PROJECT_DIR$/gw-ui/src/views/gx/biz/index.vue" beforeDir="false" afterPath="$PROJECT_DIR$/gw-ui/src/views/gx/biz/index.vue" afterDir="false" />
+      <change beforePath="$PROJECT_DIR$/gw-ui/src/views/gx/quality/index.vue" beforeDir="false" afterPath="$PROJECT_DIR$/gw-ui/src/views/gx/quality/index.vue" afterDir="false" />
+      <change beforePath="$PROJECT_DIR$/gw-ui/src/views/gx/station/index.vue" beforeDir="false" afterPath="$PROJECT_DIR$/gw-ui/src/views/gx/station/index.vue" afterDir="false" />
+      <change beforePath="$PROJECT_DIR$/gw-ui/src/views/gx/unit/index.vue" beforeDir="false" afterPath="$PROJECT_DIR$/gw-ui/src/views/gx/unit/index.vue" afterDir="false" />
       <change beforePath="$PROJECT_DIR$/gw-ui/src/views/yjjtgl/sl/index.vue" beforeDir="false" afterPath="$PROJECT_DIR$/gw-ui/src/views/yjjtgl/sl/index.vue" afterDir="false" />
+      <change beforePath="$PROJECT_DIR$/gw-ui/src/views/yjjtgl/station/index.vue" beforeDir="false" afterPath="$PROJECT_DIR$/gw-ui/src/views/yjjtgl/station/index.vue" afterDir="false" />
       <change beforePath="$PROJECT_DIR$/gw-ui/src/views/yjjtgl/sz/index.vue" beforeDir="false" afterPath="$PROJECT_DIR$/gw-ui/src/views/yjjtgl/sz/index.vue" afterDir="false" />
-      <change beforePath="$PROJECT_DIR$/sql/init-schema.sql" beforeDir="false" afterPath="$PROJECT_DIR$/sql/init-schema.sql" afterDir="false" />
     </list>
     <option name="SHOW_DIALOG" value="false" />
     <option name="HIGHLIGHT_CONFLICTS" value="true" />
@@ -68,37 +62,37 @@
   <component name="ProjectViewState">
     <option name="showLibraryContents" value="true" />
   </component>
-  <component name="PropertiesComponent"><![CDATA[{
-  "keyToString": {
-    "Maven.tba-gx [clean].executor": "Run",
-    "Maven.tba-gx [package].executor": "Run",
-    "RequestMappingsPanelOrder0": "0",
-    "RequestMappingsPanelOrder1": "1",
-    "RequestMappingsPanelWidth0": "75",
-    "RequestMappingsPanelWidth1": "75",
-    "RunOnceActivity.OpenProjectViewOnStart": "true",
-    "RunOnceActivity.ShowReadmeOnStart": "true",
-    "Spring Boot.GoldenwaterApplication.executor": "Debug",
-    "git-widget-placeholder": "master",
-    "kotlin-language-version-configured": "true",
-    "last_opened_file_path": "D:/guochan/tba-gx-guochan/gw-admin/src/main/resources/excel",
-    "node.js.detected.package.eslint": "true",
-    "node.js.detected.package.tslint": "true",
-    "node.js.selected.package.eslint": "(autodetect)",
-    "node.js.selected.package.tslint": "(autodetect)",
-    "nodejs_package_manager_path": "npm",
-    "project.structure.last.edited": "Modules",
-    "project.structure.proportion": "0.0",
-    "project.structure.side.proportion": "0.0",
-    "ts.external.directory.path": "C:\\Program Files\\JetBrains\\IntelliJ IDEA 2023.3\\plugins\\javascript-impl\\jsLanguageServicesImpl\\external",
-    "vue.rearranger.settings.migration": "true"
+  <component name="PropertiesComponent">{
+  &quot;keyToString&quot;: {
+    &quot;Maven.tba-gx [clean].executor&quot;: &quot;Run&quot;,
+    &quot;Maven.tba-gx [package].executor&quot;: &quot;Run&quot;,
+    &quot;RequestMappingsPanelOrder0&quot;: &quot;0&quot;,
+    &quot;RequestMappingsPanelOrder1&quot;: &quot;1&quot;,
+    &quot;RequestMappingsPanelWidth0&quot;: &quot;75&quot;,
+    &quot;RequestMappingsPanelWidth1&quot;: &quot;75&quot;,
+    &quot;RunOnceActivity.OpenProjectViewOnStart&quot;: &quot;true&quot;,
+    &quot;RunOnceActivity.ShowReadmeOnStart&quot;: &quot;true&quot;,
+    &quot;Spring Boot.GoldenwaterApplication.executor&quot;: &quot;Debug&quot;,
+    &quot;git-widget-placeholder&quot;: &quot;master&quot;,
+    &quot;kotlin-language-version-configured&quot;: &quot;true&quot;,
+    &quot;last_opened_file_path&quot;: &quot;D:/guochan/tba-gx-guochan/gw-admin/src/main/resources/excel&quot;,
+    &quot;node.js.detected.package.eslint&quot;: &quot;true&quot;,
+    &quot;node.js.detected.package.tslint&quot;: &quot;true&quot;,
+    &quot;node.js.selected.package.eslint&quot;: &quot;(autodetect)&quot;,
+    &quot;node.js.selected.package.tslint&quot;: &quot;(autodetect)&quot;,
+    &quot;nodejs_package_manager_path&quot;: &quot;npm&quot;,
+    &quot;project.structure.last.edited&quot;: &quot;Modules&quot;,
+    &quot;project.structure.proportion&quot;: &quot;0.0&quot;,
+    &quot;project.structure.side.proportion&quot;: &quot;0.0&quot;,
+    &quot;ts.external.directory.path&quot;: &quot;C:\\Program Files\\JetBrains\\IntelliJ IDEA 2023.3\\plugins\\javascript-impl\\jsLanguageServicesImpl\\external&quot;,
+    &quot;vue.rearranger.settings.migration&quot;: &quot;true&quot;
   },
-  "keyToStringList": {
-    "vue.recent.templates": [
-      "Vue Composition API Component"
+  &quot;keyToStringList&quot;: {
+    &quot;vue.recent.templates&quot;: [
+      &quot;Vue Composition API Component&quot;
     ]
   }
-}]]></component>
+}</component>
   <component name="ReactorSettings">
     <option name="notificationShown" value="true" />
   </component>
@@ -121,6 +115,7 @@
   </component>
   <component name="RunManager">
     <configuration name="GoldenwaterApplication" type="SpringBootApplicationConfigurationType" factoryName="Spring Boot" nameIsGenerated="true">
+      <option name="ACTIVE_PROFILES" value="dev" />
       <option name="FRAME_DEACTIVATION_UPDATE_POLICY" value="UpdateClassesAndResources" />
       <module name="gw-admin" />
       <option name="SPRING_BOOT_MAIN_CLASS" value="com.goldenwater.GoldenwaterApplication" />
@@ -144,7 +139,10 @@
       <workItem from="1784555601774" duration="9332000" />
       <workItem from="1784612620123" duration="5387000" />
       <workItem from="1784769763049" duration="14652000" />
-      <workItem from="1784859695139" duration="17091000" />
+      <workItem from="1784859695139" duration="18214000" />
+      <workItem from="1784899831164" duration="5927000" />
+      <workItem from="1785306892794" duration="8460000" />
+      <workItem from="1785403371783" duration="6732000" />
     </task>
     <task id="LOCAL-00001" summary="gengxin">
       <option name="closed" value="true" />
@@ -202,7 +200,31 @@
       <option name="project" value="LOCAL" />
       <updated>1784858580811</updated>
     </task>
-    <option name="localTasksCounter" value="8" />
+    <task id="LOCAL-00008" summary="引江济太填报模块更新">
+      <option name="closed" value="true" />
+      <created>1784897782952</created>
+      <option name="number" value="00008" />
+      <option name="presentableId" value="LOCAL-00008" />
+      <option name="project" value="LOCAL" />
+      <updated>1784897782952</updated>
+    </task>
+    <task id="LOCAL-00009" summary="引江济太填报模块更新">
+      <option name="closed" value="true" />
+      <created>1784899311845</created>
+      <option name="number" value="00009" />
+      <option name="presentableId" value="LOCAL-00009" />
+      <option name="project" value="LOCAL" />
+      <updated>1784899311845</updated>
+    </task>
+    <task id="LOCAL-00010" summary="更新">
+      <option name="closed" value="true" />
+      <created>1785306971596</created>
+      <option name="number" value="00010" />
+      <option name="presentableId" value="LOCAL-00010" />
+      <option name="project" value="LOCAL" />
+      <updated>1785306971596</updated>
+    </task>
+    <option name="localTasksCounter" value="11" />
     <servers />
   </component>
   <component name="TypeScriptGeneratedFilesManager">
@@ -238,6 +260,7 @@
     <MESSAGE value="数据展示宽度更新" />
     <MESSAGE value="水利工程运行管理系统" />
     <MESSAGE value="引江济太填报模块更新" />
-    <option name="LAST_COMMIT_MESSAGE" value="引江济太填报模块更新" />
+    <MESSAGE value="更新" />
+    <option name="LAST_COMMIT_MESSAGE" value="更新" />
   </component>
 </project>

+ 25 - 25
.mybatis/index.json

@@ -1,6 +1,6 @@
 {
   "version": "1.0",
-  "timestamp": 1784860723495,
+  "timestamp": 1785465075808,
   "projectRoot": "d:\\guochan\\tba-gx-guochan",
   "entries": [
     {
@@ -8,50 +8,50 @@
       "mtime": 1784528384572.2253,
       "size": 4257
     },
-    {
-      "path": "gw-admin\\target\\classes\\com\\goldenwater\\GoldenwaterApplication.class",
-      "mtime": 1784552950828.1543,
-      "size": 1060
-    },
     {
       "path": "gw-framework\\target\\classes\\com\\goldenwater\\framework\\config\\SecurityConfig.class",
       "mtime": 1784559893818.9417,
       "size": 12386
     },
     {
-      "path": "gw-framework\\target\\classes\\com\\goldenwater\\framework\\config\\ThreadPoolConfig.class",
-      "mtime": 1784559974656.9731,
-      "size": 2450
+      "path": "..\\tba-gxpt-guochan\\gw-common\\target\\classes\\com\\goldenwater\\common\\config\\RuoYiConfig.class",
+      "mtime": 1784687175967.2544,
+      "size": 2656
     },
     {
-      "path": "gw-system\\target\\classes\\com\\goldenwater\\system\\domain\\SysConfig.class",
-      "mtime": 1784559997430.4497,
-      "size": 3593
+      "path": "..\\tba-gxpt-guochan\\gw-framework\\target\\classes\\com\\goldenwater\\framework\\config\\ThreadPoolConfig.class",
+      "mtime": 1784688213824.6934,
+      "size": 2442
     },
     {
-      "path": "gw-common\\target\\classes\\com\\goldenwater\\common\\config\\RuoYiConfig.class",
-      "mtime": 1784687174608.6216,
-      "size": 2656
+      "path": "..\\tba-gxpt-guochan\\gw-admin\\target\\classes\\com\\goldenwater\\web\\core\\config\\SwaggerConfig.class",
+      "mtime": 1784688490067.941,
+      "size": 3772
     },
     {
-      "path": "..\\tba-gxpt-guochan\\gw-common\\target\\classes\\com\\goldenwater\\common\\config\\RuoYiConfig.class",
-      "mtime": 1784687175967.2544,
-      "size": 2656
+      "path": "gw-system\\target\\classes\\com\\goldenwater\\system\\domain\\SysConfig.class",
+      "mtime": 1785373267290.6064,
+      "size": 3593
+    },
+    {
+      "path": "gw-admin\\target\\classes\\com\\goldenwater\\GoldenwaterApplication.class",
+      "mtime": 1785373338905.5127,
+      "size": 1060
     },
     {
       "path": "gw-admin\\target\\classes\\com\\goldenwater\\web\\core\\config\\SwaggerConfig.class",
-      "mtime": 1784687246370.303,
+      "mtime": 1785373339464.447,
       "size": 3787
     },
     {
-      "path": "..\\tba-gxpt-guochan\\gw-framework\\target\\classes\\com\\goldenwater\\framework\\config\\ThreadPoolConfig.class",
-      "mtime": 1784688213824.6934,
-      "size": 2442
+      "path": "gw-common\\target\\classes\\com\\goldenwater\\common\\config\\RuoYiConfig.class",
+      "mtime": 1785465053909.3901,
+      "size": 2656
     },
     {
-      "path": "..\\tba-gxpt-guochan\\gw-admin\\target\\classes\\com\\goldenwater\\web\\core\\config\\SwaggerConfig.class",
-      "mtime": 1784688490067.941,
-      "size": 3772
+      "path": "gw-framework\\target\\classes\\com\\goldenwater\\framework\\config\\ThreadPoolConfig.class",
+      "mtime": 1785465068206.221,
+      "size": 2450
     }
   ]
 }

+ 5 - 7
gw-admin/src/main/java/com/goldenwater/web/controller/yjjt/YjjtSlDataController.java

@@ -3,6 +3,7 @@ package com.goldenwater.web.controller.yjjt;
 import com.goldenwater.common.core.controller.BaseController;
 import com.goldenwater.common.core.domain.AjaxResult;
 import com.goldenwater.common.core.page.TableDataInfo;
+import com.goldenwater.common.utils.poi.ExcelImportHelper;
 import com.goldenwater.common.utils.poi.ExcelUtil;
 import com.goldenwater.yjjt.domain.YjjtSlData;
 import com.goldenwater.yjjt.service.IYjjtSlDataService;
@@ -16,10 +17,6 @@ import org.springframework.web.multipart.MultipartFile;
 
 import jakarta.annotation.Resource;
 import java.io.InputStream;
-import java.math.BigDecimal;
-import java.text.SimpleDateFormat;
-import java.util.ArrayList;
-import java.util.Date;
 import java.util.List;
 
 @RestController
@@ -54,14 +51,14 @@ public class YjjtSlDataController extends BaseController {
     }
 
     @PostMapping("/upload")
-    @Operation(summary = "上传水量数据", description = "上传水量数据Excel文件")
+    @Operation(summary = "上传水量数据", description = "上传水量数据Excel文件,使用第三行作为列名")
     @PreAuthorize("@ss.hasPermi('yjjtgl:sl:upload')")
     public AjaxResult upload(@Parameter(description = "Excel文件") @RequestParam("file") MultipartFile file,
                             @Parameter(description = "业务类型(JS/SH/ZJ)") @RequestParam("bizType") String bizType) {
         try {
             InputStream inputStream = file.getInputStream();
-            ExcelUtil<YjjtSlData> util = new ExcelUtil<>(YjjtSlData.class);
-            List<YjjtSlData> dataList = util.importExcel(inputStream);
+            // 使用ExcelImportHelper解析,第三行(索引2)作为列名
+            List<YjjtSlData> dataList = ExcelImportHelper.importExcel(inputStream, YjjtSlData.class, 2);
 
             String addvcd = bizType.toUpperCase();
             for (YjjtSlData data : dataList) {
@@ -72,6 +69,7 @@ public class YjjtSlDataController extends BaseController {
             yjjtSlDataService.importSlData(dataList, bizType);
             return AjaxResult.success("上传成功,共导入" + dataList.size() + "条数据");
         } catch (Exception e) {
+            logger.error("上传水量数据失败", e);
             return AjaxResult.error("上传失败:" + e.getMessage());
         }
     }

+ 8 - 8
gw-admin/src/main/java/com/goldenwater/web/controller/yjjt/YjjtSzDataController.java

@@ -3,6 +3,7 @@ package com.goldenwater.web.controller.yjjt;
 import com.goldenwater.common.core.controller.BaseController;
 import com.goldenwater.common.core.domain.AjaxResult;
 import com.goldenwater.common.core.page.TableDataInfo;
+import com.goldenwater.common.utils.poi.ExcelImportHelper;
 import com.goldenwater.common.utils.poi.ExcelUtil;
 import com.goldenwater.yjjt.domain.YjjtSzData;
 import com.goldenwater.yjjt.service.IYjjtSzDataService;
@@ -15,6 +16,7 @@ import org.springframework.web.bind.annotation.*;
 import org.springframework.web.multipart.MultipartFile;
 
 import jakarta.annotation.Resource;
+
 import java.io.InputStream;
 import java.util.List;
 
@@ -50,24 +52,22 @@ public class YjjtSzDataController extends BaseController {
     }
 
     @PostMapping("/upload")
-    @Operation(summary = "上传水质数据", description = "上传水质数据Excel文件")
+    @Operation(summary = "上传水质数据", description = "上传水质数据Excel文件,使用第三行作为列名")
     @PreAuthorize("@ss.hasPermi('yjjtgl:sz:upload')")
-    public AjaxResult upload(@Parameter(description = "Excel文件") @RequestParam("file") MultipartFile file,
-                            @Parameter(description = "业务类型(JS/SH/ZJ)") @RequestParam("bizType") String bizType) {
+    public AjaxResult upload(@Parameter(description = "Excel文件") @RequestParam("file") MultipartFile file) {
         try {
             InputStream inputStream = file.getInputStream();
-            ExcelUtil<YjjtSzData> util = new ExcelUtil<>(YjjtSzData.class);
-            List<YjjtSzData> dataList = util.importExcel(inputStream);
+            // 使用ExcelImportHelper解析,第三行(索引2)作为列名
+            List<YjjtSzData> dataList = ExcelImportHelper.importExcel(inputStream, YjjtSzData.class, 2);
 
-            String addvcd = bizType.toUpperCase();
             for (YjjtSzData data : dataList) {
-                data.setAddvcd(addvcd);
                 data.setCreateBy(getUsername());
             }
 
-            yjjtSzDataService.importSzData(dataList, bizType);
+            yjjtSzDataService.importSzData(dataList);
             return AjaxResult.success("上传成功,共导入" + dataList.size() + "条数据");
         } catch (Exception e) {
+            logger.error("上传水质数据失败", e);
             return AjaxResult.error("上传失败:" + e.getMessage());
         }
     }

+ 8 - 36
gw-admin/src/main/java/com/goldenwater/web/controller/yjjt/YjjtTemplateController.java

@@ -33,53 +33,25 @@ public class YjjtTemplateController extends BaseController {
     /**
      * 下载水量数据模板
      */
-    @GetMapping("/sl/{type}")
-    @Operation(summary = "下载水量数据模板", description = "下载指定省份的水量数据导入模板")
-    @PreAuthorize("@ss.hasPermi('yjjtgl:sl:upload')")
+    @GetMapping("/{type}")
+    @Operation(summary = "下载指定类型数据模板", description = "下载指定类型数据导入模板")
+    @PreAuthorize("@ss.hasPermi('yjjtgl:upload')")
     public ResponseEntity<Resource> downloadSlTemplate(
-            @Parameter(description = "模板类型:js(江苏)/sh(上海)/zj(浙江)/wx(无锡)") @PathVariable String type) {
-        String filename = getSlTemplateFilename(type);
+            @Parameter(description = "模板类型:sz(水质)/sl(水量)") @PathVariable String type) {
+        String filename = getTemplateFilename(type);
         return downloadTemplate(filename);
     }
-
-    /**
-     * 下载水质数据模板
-     */
-    @GetMapping("/sz/{type}")
-    @Operation(summary = "下载水质数据模板", description = "下载指定省份的水质数据导入模板")
-    @PreAuthorize("@ss.hasPermi('yjjtgl:sz:upload')")
-    public ResponseEntity<Resource> downloadSzTemplate(
-            @Parameter(description = "模板类型:js(江苏)/sh(上海)/zj(浙江)/wx(无锡)") @PathVariable String type) {
-        String filename = getSzTemplateFilename(type);
-        return downloadTemplate(filename);
-    }
-
     /**
      * 获取水量模板文件名
      */
-    private String getSlTemplateFilename(String type) {
+    private String getTemplateFilename(String type) {
         return switch (type.toLowerCase()) {
-            case "js" -> "js-station-sl-model.xlsx";
-            case "sh" -> "sh-station-sl-model.xlsx";
-            case "zj" -> "zj-station-sl-model.xlsx";
-            case "wx" -> "wx-station-sl-model.xlsx";
+            case "sl" -> "station-sl-model.xlsx";
+            case "sz" -> "station-sz-model.xlsx";
             default -> "station-sl-model.xlsx";
         };
     }
 
-    /**
-     * 获取水质模板文件名
-     */
-    private String getSzTemplateFilename(String type) {
-        return switch (type.toLowerCase()) {
-            case "js" -> "js-station-sz-model.xlsx";
-            case "sh" -> "sh-station-sz-model.xlsx";
-            case "zj" -> "zj-station-sz-model.xlsx";
-            case "wx" -> "wx-station-sz-model.xlsx";
-            default -> "station-sz-model.xlsx";
-        };
-    }
-
     /**
      * 下载模板文件
      */

BIN
gw-admin/src/main/resources/excel/yjjt/js-station-sl-model.xlsx


BIN
gw-admin/src/main/resources/excel/yjjt/js-station-sz-model.xlsx


BIN
gw-admin/src/main/resources/excel/yjjt/sh-station-sl-model.xlsx


BIN
gw-admin/src/main/resources/excel/yjjt/sh-station-sz-model.xlsx


BIN
gw-admin/src/main/resources/excel/yjjt/station-sl-model.xlsx


BIN
gw-admin/src/main/resources/excel/yjjt/station-sz-model.xlsx


BIN
gw-admin/src/main/resources/excel/yjjt/wx-station-sl-model.xlsx


BIN
gw-admin/src/main/resources/excel/yjjt/wx-station-sz-model.xlsx


BIN
gw-admin/src/main/resources/excel/yjjt/zj-station-sl-model.xlsx


BIN
gw-admin/src/main/resources/excel/yjjt/zj-station-sz-model.xlsx


+ 6 - 0
gw-gx/src/main/java/com/goldenwater/gx/mapper/GxExchangeStationMapper.java

@@ -27,4 +27,10 @@ public interface GxExchangeStationMapper
      * 根据站码查询站点(用于导入时校验重复)
      */
     public GxExchangeStation selectStationByStcd(String stcd);
+
+    /**
+     * 根据联合主键查询站点(用于导入时校验重复)
+     * 联合主键:STCD + BIZ_CODE + STNM
+     */
+    public GxExchangeStation selectStationByCompositeKey(@Param("stcd") String stcd, @Param("bizCode") String bizCode, @Param("stnm") String stnm);
 }

+ 45 - 19
gw-gx/src/main/java/com/goldenwater/gx/service/impl/GxExchangeStationServiceImpl.java

@@ -66,6 +66,8 @@ public class GxExchangeStationServiceImpl implements IGxExchangeStationService
 
     /**
      * 导入站点数据
+     * 使用STCD + BIZ_CODE + STNM作为联合主键判断测站是否存在
+     * 存在则跳过导入,不存在则继续导入
      *
      * @param stationList 站点数据列表
      * @param updateSupport 是否更新已存在数据
@@ -80,22 +82,37 @@ public class GxExchangeStationServiceImpl implements IGxExchangeStationService
             throw new ServiceException("导入站点数据不能为空!");
         }
         int successNum = 0;
+        int skipNum = 0;
         int failureNum = 0;
         StringBuilder successMsg = new StringBuilder();
+        StringBuilder skipMsg = new StringBuilder();
         StringBuilder failureMsg = new StringBuilder();
         for (GxExchangeStation station : stationList)
         {
             try
             {
-                // 校验必填字段
+                // 校验必填字段:STCD、BIZ_CODE、STNM
                 if (StringUtils.isEmpty(station.getStcd()))
                 {
                     failureNum++;
                     failureMsg.append("<br/>" + failureNum + "、站码为空,跳过导入");
                     continue;
                 }
-                // 根据站码校验是否已存在
-                GxExchangeStation existStation = gxExchangeStationMapper.selectStationByStcd(station.getStcd());
+                if (StringUtils.isEmpty(station.getBizCode()))
+                {
+                    failureNum++;
+                    failureMsg.append("<br/>" + failureNum + "、站码 " + station.getStcd() + " 的业务域为空,跳过导入");
+                    continue;
+                }
+                if (StringUtils.isEmpty(station.getStnm()))
+                {
+                    failureNum++;
+                    failureMsg.append("<br/>" + failureNum + "、站码 " + station.getStcd() + " 的测站名称为空,跳过导入");
+                    continue;
+                }
+                // 根据联合主键(STCD + BIZ_CODE + STNM)校验是否已存在
+                GxExchangeStation existStation = gxExchangeStationMapper.selectStationByCompositeKey(
+                    station.getStcd(), station.getBizCode(), station.getStnm());
                 if (StringUtils.isNull(existStation))
                 {
                     station.setCreateBy(operName);
@@ -103,18 +120,11 @@ public class GxExchangeStationServiceImpl implements IGxExchangeStationService
                     successNum++;
                     successMsg.append("<br/>" + successNum + "、站码 " + station.getStcd() + " 导入成功");
                 }
-                else if (updateSupport)
-                {
-                    station.setId(existStation.getId());
-                    station.setUpdateBy(operName);
-                    gxExchangeStationMapper.updateGxExchangeStation(station);
-                    successNum++;
-                    successMsg.append("<br/>" + successNum + "、站码 " + station.getStcd() + " 更新成功");
-                }
                 else
                 {
-                    failureNum++;
-                    failureMsg.append("<br/>" + failureNum + "、站码 " + station.getStcd() + " 已存在");
+                    // 联合主键存在则跳过导入
+                    skipNum++;
+                    skipMsg.append("<br/>" + skipNum + "、站码 " + station.getStcd() + "(业务域:" + station.getBizCode() + ",测站名称:" + station.getStnm() + ")已存在,跳过导入");
                 }
             }
             catch (Exception e)
@@ -125,15 +135,31 @@ public class GxExchangeStationServiceImpl implements IGxExchangeStationService
                 log.error(msg, e);
             }
         }
-        if (failureNum > 0)
+        StringBuilder resultMsg = new StringBuilder();
+        if (successNum > 0)
+        {
+            resultMsg.insert(0, "恭喜您,数据导入成功!共 " + successNum + " 条,数据如下:");
+            resultMsg.append(successMsg);
+        }
+        if (skipNum > 0)
         {
-            failureMsg.insert(0, "很抱歉,导入失败!共 " + failureNum + " 条数据格式不正确,错误如下:");
-            throw new ServiceException(failureMsg.toString());
+            if (resultMsg.length() > 0)
+            {
+                resultMsg.append("<br/><br/>");
+            }
+            resultMsg.append("以下 " + skipNum + " 条数据因联合主键(站码+业务域+测站名称)已存在,跳过导入:");
+            resultMsg.append(skipMsg);
         }
-        else
+        if (failureNum > 0)
         {
-            successMsg.insert(0, "恭喜您,数据已全部导入成功!共 " + successNum + " 条,数据如下:");
+            if (resultMsg.length() > 0)
+            {
+                resultMsg.append("<br/><br/>");
+            }
+            resultMsg.append("很抱歉,导入失败!共 " + failureNum + " 条数据格式不正确,错误如下:");
+            resultMsg.append(failureMsg);
+            throw new ServiceException(resultMsg.toString());
         }
-        return successMsg.toString();
+        return resultMsg.toString();
     }
 }

+ 10 - 0
gw-gx/src/main/java/com/goldenwater/yjjt/domain/YjjtSlData.java

@@ -1,5 +1,6 @@
 package com.goldenwater.yjjt.domain;
 
+import com.goldenwater.common.annotation.Excel;
 import com.goldenwater.common.core.domain.BaseEntity;
 import lombok.Data;
 
@@ -8,22 +9,31 @@ public class YjjtSlData extends BaseEntity {
 
     private Long id;
 
+    @Excel(name = "stcd")
     private String stcd;
 
+    @Excel(name = "stnm")
     private String stnm;
 
+    @Excel(name = "rvnm")
     private String rvnm;
 
+    @Excel(name = "spt", dateFormat = "yyyy-MM-dd HH:mm:ss")
     private java.util.Date spt;
 
+    @Excel(name = "z")
     private java.math.BigDecimal z;
 
+    @Excel(name = "z_j")
     private java.math.BigDecimal zJ;
 
+    @Excel(name = "q")
     private java.math.BigDecimal q;
 
+    @Excel(name = "liuxiang")
     private String liuxiang;
 
+    @Excel(name = "nt")
     private String nt;
 
     private String addvcd;

+ 42 - 0
gw-gx/src/main/java/com/goldenwater/yjjt/domain/YjjtSzData.java

@@ -1,5 +1,6 @@
 package com.goldenwater.yjjt.domain;
 
+import com.goldenwater.common.annotation.Excel;
 import com.goldenwater.common.core.domain.BaseEntity;
 import lombok.Data;
 
@@ -8,87 +9,128 @@ public class YjjtSzData extends BaseEntity {
 
     private Long id;
 
+    @Excel(name = "stcd")
     private String stcd;
 
+    @Excel(name = "stnm")
     private String stnm;
 
+    @Excel(name = "rvnm")
     private String rvnm;
 
+    @Excel(name = "spt", dateFormat = "yyyy-MM-dd HH:mm:ss")
     private java.util.Date spt;
 
     private String addvcd;
 
+    @Excel(name = "wt")
     private java.math.BigDecimal wt;
 
+    @Excel(name = "ph")
     private java.math.BigDecimal ph;
 
+    @Excel(name = "dox")
     private java.math.BigDecimal dox;
 
+    @Excel(name = "codcr")
     private java.math.BigDecimal codcr;
 
+    @Excel(name = "bod5")
     private java.math.BigDecimal bod5;
 
+    @Excel(name = "nh3n")
     private java.math.BigDecimal nh3n;
 
+    @Excel(name = "tp")
     private java.math.BigDecimal tp;
 
+    @Excel(name = "tn")
     private java.math.BigDecimal tn;
 
+    @Excel(name = "cu")
     private java.math.BigDecimal cu;
 
+    @Excel(name = "zn")
     private java.math.BigDecimal zn;
 
+    @Excel(name = "f")
     private java.math.BigDecimal f;
 
+    @Excel(name = "se")
     private java.math.BigDecimal se;
 
+    @Excel(name = "ars")
     private java.math.BigDecimal ars;
 
+    @Excel(name = "hg")
     private java.math.BigDecimal hg;
 
+    @Excel(name = "cd")
     private java.math.BigDecimal cd;
 
+    @Excel(name = "cr6")
     private java.math.BigDecimal cr6;
 
+    @Excel(name = "pb")
     private java.math.BigDecimal pb;
 
+    @Excel(name = "cn")
     private java.math.BigDecimal cn;
 
+    @Excel(name = "vlph")
     private java.math.BigDecimal vlph;
 
+    @Excel(name = "oil")
     private java.math.BigDecimal oil;
 
+    @Excel(name = "las")
     private java.math.BigDecimal las;
 
+    @Excel(name = "s2")
     private java.math.BigDecimal s2;
 
+    @Excel(name = "fcg")
     private java.math.BigDecimal fcg;
 
+    @Excel(name = "cond")
     private java.math.BigDecimal cond;
 
+    @Excel(name = "no2")
     private java.math.BigDecimal no2;
 
+    @Excel(name = "no3")
     private java.math.BigDecimal no3;
 
+    @Excel(name = "turb")
     private java.math.BigDecimal turb;
 
+    @Excel(name = "ss")
     private java.math.BigDecimal ss;
 
+    @Excel(name = "thrd")
     private java.math.BigDecimal thrd;
 
+    @Excel(name = "watercolor")
     private String watercolor;
 
+    @Excel(name = "smell")
     private String smell;
 
+    @Excel(name = "sb")
     private String sb;
 
+    @Excel(name = "clarity")
     private String clarity;
 
+    @Excel(name = "dtp")
     private java.math.BigDecimal dtp;
 
+    @Excel(name = "chla")
     private java.math.BigDecimal chla;
 
+    @Excel(name = "phyd")
     private java.math.BigDecimal phyd;
 
+    @Excel(name = "codmn")
     private java.math.BigDecimal codmn;
 }

+ 1 - 1
gw-gx/src/main/java/com/goldenwater/yjjt/service/IYjjtSzDataService.java

@@ -18,5 +18,5 @@ public interface IYjjtSzDataService {
 
     int deleteYjjtSzDataByIds(Long[] ids);
 
-    void importSzData(List<YjjtSzData> dataList, String bizType);
+    void importSzData(List<YjjtSzData> dataList);
 }

+ 2 - 1
gw-gx/src/main/java/com/goldenwater/yjjt/service/impl/YjjtSzDataServiceImpl.java

@@ -8,6 +8,7 @@ import org.springframework.stereotype.Service;
 import org.springframework.transaction.annotation.Transactional;
 
 import jakarta.annotation.Resource;
+
 import java.text.SimpleDateFormat;
 import java.util.List;
 
@@ -51,7 +52,7 @@ public class YjjtSzDataServiceImpl implements IYjjtSzDataService {
 
     @Override
     @Transactional
-    public void importSzData(List<YjjtSzData> dataList, String bizType) {
+    public void importSzData(List<YjjtSzData> dataList) {
         SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
         for (YjjtSzData data : dataList) {
             String sptStr = sdf.format(data.getSpt());

+ 5 - 0
gw-gx/src/main/resources/mapper/gx/GxExchangeStationMapper.xml

@@ -77,6 +77,11 @@
         where s.stcd = #{stcd} and s.del_flag = '0'
     </select>
 
+    <select id="selectStationByCompositeKey" resultMap="GxExchangeStationResult">
+        <include refid="selectStationVo"/>
+        where s.stcd = #{stcd} and s.biz_code = #{bizCode} and s.stnm = #{stnm} and s.del_flag = '0'
+    </select>
+
     <insert id="insertGxExchangeStation" parameterType="com.goldenwater.gx.domain.GxExchangeStation" useGeneratedKeys="true" keyProperty="id">
         insert into gx_exchange_station
         <trim prefix="(" suffix=")" suffixOverrides=",">

+ 1 - 1
gw-ui/src/layout/components/Navbar.vue

@@ -102,7 +102,7 @@ function logout() {
     type: 'warning'
   }).then(() => {
     userStore.logOut().then(() => {
-      location.href = '/index'
+      location.href = '/tba-gx/index'
     })
   }).catch(() => { })
 }

+ 1 - 0
gw-ui/src/views/gx/apply/index.vue

@@ -32,6 +32,7 @@
 
     <el-table v-loading="loading" :data="applyList" @selection-change="handleSelectionChange">
       <el-table-column type="selection" width="55" align="center" />
+      <el-table-column type="index" label="序号" width="60" align="center" />
       <el-table-column label="申请单位" prop="unitName" width="180" :show-overflow-tooltip="true" />
       <el-table-column label="业务域" prop="bizName" width="180" :show-overflow-tooltip="true" />
       <el-table-column label="申请时间" prop="applyTime" width="170" align="center" />

+ 3 - 2
gw-ui/src/views/gx/biz/index.vue

@@ -44,8 +44,9 @@
 
     <el-table v-loading="loading" :data="bizList" @selection-change="handleSelectionChange">
       <el-table-column type="selection" width="55" align="center" />
+      <el-table-column type="index" label="序号" width="60" align="center" />
       <el-table-column label="排序" prop="orderNum" width="80" align="center" />
-      <el-table-column label="业务编码" prop="bizCode" width="160" />
+      <el-table-column label="业务编码" prop="bizCode" width="200" />
       <el-table-column label="业务名称" prop="bizName" :show-overflow-tooltip="true" />
       <el-table-column label="业务类型" prop="bizType" width="100" align="center" />
       <el-table-column label="提供单位" prop="bizUnit" :show-overflow-tooltip="true">
@@ -114,7 +115,7 @@
           </el-select>
         </el-form-item>
         <el-form-item label="数据说明" prop="bizNote">
-          <el-input v-model="form.bizNote" type="textarea" placeholder="请输入数据说明" />
+          <el-input v-model="form.bizNote" type="textarea" placeholder="请输入数据说明" :autosize="{ minRows: 5, maxRows: 10 }" />
         </el-form-item>
         <el-form-item label="状态" prop="bizState">
           <el-radio-group v-model="form.bizState">

+ 1 - 0
gw-ui/src/views/gx/quality/index.vue

@@ -30,6 +30,7 @@
 
     <el-table v-loading="loading" :data="qualityList" @selection-change="handleSelectionChange">
       <el-table-column type="selection" width="55" align="center" />
+      <el-table-column type="index" label="序号" width="60" align="center" />
       <el-table-column label="业务编码" prop="bizCode" width="150" />
       <el-table-column label="站码" prop="stcd" width="110" />
       <el-table-column label="站名" prop="stnm" width="140" :show-overflow-tooltip="true" />

+ 1 - 0
gw-ui/src/views/gx/station/index.vue

@@ -47,6 +47,7 @@
 
     <el-table v-loading="loading" :data="stationList" @selection-change="handleSelectionChange">
       <el-table-column type="selection" width="55" align="center" />
+      <el-table-column type="index" label="序号" width="60" align="center" />
       <el-table-column label="单位名称" prop="unitName" width="250" :show-overflow-tooltip="true" />
       <el-table-column label="业务域" prop="bizName" width="160" :show-overflow-tooltip="true" />
 <!--      <el-table-column label="站码" prop="stcd" width="120" />-->

+ 1 - 0
gw-ui/src/views/gx/unit/index.vue

@@ -25,6 +25,7 @@
 
     <el-table v-loading="loading" :data="unitList" @selection-change="handleSelectionChange">
       <el-table-column type="selection" width="55" align="center" />
+      <el-table-column type="index" label="序号" width="60" align="center" />
       <el-table-column label="排序" prop="orderNum" width="80" align="center" />
       <el-table-column label="单位名称" prop="unitName" :show-overflow-tooltip="true" />
       <el-table-column label="地址" prop="addr" width="400" align="center" />

+ 78 - 92
gw-ui/src/views/yjjtgl/sl/index.vue

@@ -2,28 +2,28 @@
   <div class="app-container">
     <el-form :model="queryParams" ref="queryForm" :inline="true" v-show="showSearch" label-width="68px">
       <el-form-item label="断面名称" prop="stnm">
-        <el-input v-model="queryParams.stnm" placeholder="请输入断面名称" clearable @keyup.enter="handleQuery" />
+        <el-input v-model="queryParams.stnm" placeholder="请输入断面名称" clearable @keyup.enter="handleQuery"/>
       </el-form-item>
       <el-form-item label="测站编码" prop="stcd">
-        <el-input v-model="queryParams.stcd" placeholder="请输入测站编码" clearable @keyup.enter="handleQuery" />
+        <el-input v-model="queryParams.stcd" placeholder="请输入测站编码" clearable @keyup.enter="handleQuery"/>
       </el-form-item>
       <el-form-item label="数据来源" prop="addvcd">
         <el-select v-model="queryParams.addvcd" placeholder="请选择数据来源" clearable>
-          <el-option label="无锡(WX)" value="WX" />
-          <el-option label="江苏(JS)" value="JS" />
-          <el-option label="上海(SH)" value="SH" />
-          <el-option label="浙江(ZJ)" value="ZJ" />
+          <el-option label="无锡(WX)" value="WX"/>
+          <el-option label="江苏(JS)" value="JS"/>
+          <el-option label="上海(SH)" value="SH"/>
+          <el-option label="浙江(ZJ)" value="ZJ"/>
         </el-select>
       </el-form-item>
       <el-form-item label="监测时间">
         <el-date-picker
-          v-model="dateRange"
-          type="daterange"
-          range-separator="至"
-          start-placeholder="开始日期"
-          end-placeholder="结束日期"
-          value-format="YYYY-MM-DD"
-          @change="handleDateChange"
+            v-model="dateRange"
+            type="daterange"
+            range-separator="至"
+            start-placeholder="开始日期"
+            end-placeholder="结束日期"
+            value-format="YYYY-MM-DD"
+            @change="handleDateChange"
         />
       </el-form-item>
       <el-form-item>
@@ -35,93 +35,91 @@
     <el-row :gutter="10" class="mb8">
       <el-col :span="1.5">
         <el-button
-          type="primary"
-          plain
-          icon="Upload"
-          @click="handleUpload"
-          size="mini"
-          v-hasPermi="['yjjtgl:sl:upload']"
-        >上传数据</el-button>
+            type="primary"
+            plain
+            icon="Upload"
+            @click="handleUpload"
+            size="mini"
+            v-hasPermi="['yjjtgl:sl:upload']"
+        >上传数据
+        </el-button>
       </el-col>
       <el-col :span="1.5">
         <el-button
-          type="success"
-          plain
-          icon="Download"
-          @click="handleExport"
-          size="mini"
-          v-hasPermi="['yjjtgl:sl:export']"
-        >导出数据</el-button>
+            type="success"
+            plain
+            icon="Download"
+            @click="handleExport"
+            size="mini"
+            v-hasPermi="['yjjtgl:sl:export']"
+        >导出数据
+        </el-button>
       </el-col>
       <right-toolbar :showSearch.sync="showSearch" @queryTable="getList"></right-toolbar>
     </el-row>
 
     <el-table v-loading="loading" :data="tableData" @selection-change="handleSelectionChange">
-      <el-table-column type="selection" width="55" align="center" />
-      <el-table-column type="index" label="序号" width="60" align="center" />
-      <el-table-column prop="stnm" label="断面名称" width="150" />
-      <el-table-column prop="stcd" label="测站编码" width="120" />
-      <el-table-column prop="rvnm" label="河流名称" width="120" />
-      <el-table-column prop="spt" label="监测时间" width="180">
+      <el-table-column type="selection" width="55" align="center"/>
+      <el-table-column type="index" label="序号" width="60" align="center"/>
+      <el-table-column prop="addvcd" label="数据来源" width="100" align="center">
+        <template #default="scope">{{ getAddvcdLabel(scope.row.addvcd) }}</template>
+      </el-table-column>
+      <el-table-column prop="stnm" label="断面名称" width="150" align="center"/>
+      <el-table-column prop="stcd" label="测站编码" width="120" align="center"/>
+      <el-table-column prop="rvnm" label="河流名称" width="120" align="center"/>
+      <el-table-column prop="spt" label="监测时间" width="180" align="center">
         <template #default="scope">{{ formatDate(scope.row.spt) }}</template>
       </el-table-column>
-      <el-table-column prop="z" label="水位(m)" width="100" align="right">
+      <el-table-column prop="z" label="水位(m)" width="100" align="center">
         <template #default="scope">{{ formatDecimal(scope.row.z) }}</template>
       </el-table-column>
-      <el-table-column prop="zJ" label="假定水位(m)" width="120" align="right">
+      <el-table-column prop="zJ" label="假定水位(m)" width="120" align="center">
         <template #default="scope">{{ formatDecimal(scope.row.zJ) }}</template>
       </el-table-column>
-      <el-table-column prop="q" label="流量(m³/s)" width="120" align="right">
+      <el-table-column prop="q" label="流量(m³/s)" width="120" align="center">
         <template #default="scope">{{ formatDecimal(scope.row.q) }}</template>
       </el-table-column>
-      <el-table-column prop="liuxiang" label="流向" width="80" />
-      <el-table-column prop="nt" label="说明" width="200" />
-      <el-table-column prop="addvcd" label="数据来源" width="100">
-        <template #default="scope">{{ getAddvcdLabel(scope.row.addvcd) }}</template>
-      </el-table-column>
-<!--      <el-table-column label="操作" width="100" align="center">-->
-<!--        <template #default="scope">-->
-<!--          <el-button size="mini" type="text" icon="Delete" @click="handleDelete(scope.row)" v-hasPermi="['yjjtgl:sl:remove']">删除</el-button>-->
-<!--        </template>-->
-<!--      </el-table-column>-->
+      <el-table-column prop="liuxiang" label="流向" width="200"/>
+      <el-table-column prop="nt" label="说明" width="200"/>
+      <!--      <el-table-column label="操作" width="100" align="center">-->
+      <!--        <template #default="scope">-->
+      <!--          <el-button size="mini" type="text" icon="Delete" @click="handleDelete(scope.row)" v-hasPermi="['yjjtgl:sl:remove']">删除</el-button>-->
+      <!--        </template>-->
+      <!--      </el-table-column>-->
     </el-table>
 
     <pagination
-      v-show="total>0"
-      :total="total"
-      :page.sync="queryParams.pageNum"
-      :limit.sync="queryParams.pageSize"
-      @pagination="getList"
+        v-show="total>0"
+        :total="total"
+        :page.sync="queryParams.pageNum"
+        :limit.sync="queryParams.pageSize"
+        @pagination="getList"
     />
 
     <!-- 上传弹窗 -->
     <el-dialog title="水量数据上传" v-model="uploadVisible" width="500px" append-to-body>
-      <el-form :model="uploadForm" ref="uploadForm" label-width="100px">
-        <el-form-item label="数据来源">
-          <el-select v-model="uploadForm.bizType" placeholder="请选择数据来源" style="width: 100%" required>
-            <el-option label="江苏(JS)" value="JS" />
-            <el-option label="上海(SH)" value="SH" />
-            <el-option label="浙江(ZJ)" value="ZJ" />
-          </el-select>
-        </el-form-item>
+      <el-form ref="uploadForm" label-width="100px">
         <el-form-item label="上传文件">
           <el-upload
-            class="upload-demo"
-            drag
-            :action="uploadUrl"
-            :data="{ bizType: uploadForm.bizType }"
-            :on-success="handleUploadSuccess"
-            :on-error="handleUploadError"
-            :file-list="fileList"
-            accept=".xlsx,.xls"
-            :auto-upload="false"
-            ref="uploadRef"
+              class="upload-demo"
+              drag
+              :action="uploadUrl"
+              :on-success="handleUploadSuccess"
+              :on-error="handleUploadError"
+              :file-list="fileList"
+              accept=".xlsx,.xls"
+              :auto-upload="false"
+              ref="uploadRef"
           >
-            <el-icon class="el-icon--upload"><upload-filled /></el-icon>
+            <el-icon class="el-icon--upload">
+              <upload-filled/>
+            </el-icon>
             <div class="el-upload__text">将文件拖到此处,或<em>点击上传</em></div>
             <template #tip>
               <div class="el-upload__tip">
-                <el-icon><warning /></el-icon>
+                <el-icon>
+                  <warning/>
+                </el-icon>
                 <span>仅支持上传Excel文件(.xlsx,.xls)</span>
               </div>
             </template>
@@ -129,9 +127,7 @@
         </el-form-item>
         <el-form-item>
           <span class="text-muted">下载模板:</span>
-          <el-button type="text" @click="downloadTemplate('js')">江苏模板</el-button>
-          <el-button type="text" @click="downloadTemplate('sh')">上海模板</el-button>
-          <el-button type="text" @click="downloadTemplate('zj')">浙江模板</el-button>
+          <el-button type="text" @click="downloadTemplate('sl')">水量数据上传模板</el-button>
         </el-form-item>
       </el-form>
       <template #footer>
@@ -143,9 +139,9 @@
 </template>
 
 <script setup name="YjjtSlData">
-import { ref, reactive } from 'vue'
-import { ElMessage, ElMessageBox } from 'element-plus'
-import { listYjjtSlData, delYjjtSlData, uploadSlData, exportYjjtSlData } from '@/api/yjjt/sl'
+import {ref, reactive} from 'vue'
+import {ElMessage, ElMessageBox} from 'element-plus'
+import {listYjjtSlData, delYjjtSlData, uploadSlData, exportYjjtSlData} from '@/api/yjjt/sl'
 import request from '@/utils/request'
 
 const loading = ref(false)
@@ -170,10 +166,6 @@ const queryParams = reactive({
 
 const dateRange = ref([])
 
-const uploadForm = reactive({
-  bizType: ''
-})
-
 const uploadUrl = import.meta.env.VITE_SERVICE_BASE_TITLE + '/yjjt/sl/upload'
 
 const getList = async () => {
@@ -216,7 +208,7 @@ const handleDateChange = (val) => {
 
 const handleDelete = async (row) => {
   try {
-    await ElMessageBox.confirm('确定删除该数据吗?', '提示', { type: 'warning' })
+    await ElMessageBox.confirm('确定删除该数据吗?', '提示', {type: 'warning'})
     await delYjjtSlData(row.id)
     ElMessage.success('删除成功')
     getList()
@@ -232,10 +224,6 @@ const handleUpload = () => {
 }
 
 const submitUpload = () => {
-  if (!uploadForm.bizType) {
-    ElMessage.warning('请选择数据来源')
-    return
-  }
   uploadRef.value.submit()
 }
 
@@ -244,7 +232,6 @@ const handleUploadSuccess = async (response) => {
     ElMessage.success(response.msg)
     uploadVisible.value = false
     fileList.value = []
-    uploadForm.bizType = ''
     getList()
   } else {
     ElMessage.error(response.msg)
@@ -276,13 +263,11 @@ const handleExport = async () => {
 
 const downloadTemplate = async (type) => {
   const templateNames = {
-    js: '江苏水量数据模板.xlsx',
-    sh: '上海水量数据模板.xlsx',
-    zj: '浙江水量数据模板.xlsx'
+    sl: '引江济太水量数据上传模板.xlsx',
   }
   try {
     const response = await request({
-      url: '/yjjt/template/sl/' + type,
+      url: '/yjjt/template/' + type,
       method: 'get',
       responseType: 'blob'
     })
@@ -328,7 +313,8 @@ const getAddvcdLabel = (value) => {
   return labels[value] || value
 }
 
-const handleSelectionChange = () => {}
+const handleSelectionChange = () => {
+}
 
 getList()
 </script>

+ 1 - 2
gw-ui/src/views/yjjtgl/station/index.vue

@@ -119,8 +119,7 @@
         </el-form-item>
         <el-form-item label="站点类型" prop="sttp">
           <el-select v-model="form.sttp" placeholder="请选择站点类型">
-            <el-option label="水位站" value="SW"/>
-            <el-option label="流量站" value="LL"/>
+            <el-option label="水文站" value="SW"/>
             <el-option label="水质站" value="SZ"/>
           </el-select>
         </el-form-item>

+ 132 - 100
gw-ui/src/views/yjjtgl/sz/index.vue

@@ -2,28 +2,28 @@
   <div class="app-container">
     <el-form :model="queryParams" ref="queryForm" :inline="true" v-show="showSearch" label-width="68px">
       <el-form-item label="断面名称" prop="stnm">
-        <el-input v-model="queryParams.stnm" placeholder="请输入断面名称" clearable @keyup.enter="handleQuery" />
+        <el-input v-model="queryParams.stnm" placeholder="请输入断面名称" clearable @keyup.enter="handleQuery"/>
       </el-form-item>
       <el-form-item label="测站编码" prop="stcd">
-        <el-input v-model="queryParams.stcd" placeholder="请输入测站编码" clearable @keyup.enter="handleQuery" />
+        <el-input v-model="queryParams.stcd" placeholder="请输入测站编码" clearable @keyup.enter="handleQuery"/>
       </el-form-item>
       <el-form-item label="数据来源" prop="addvcd">
         <el-select v-model="queryParams.addvcd" placeholder="请选择数据来源" clearable>
-          <el-option label="无锡(WX)" value="WX" />
-          <el-option label="江苏(JS)" value="JS" />
-          <el-option label="上海(SH)" value="SH" />
-          <el-option label="浙江(ZJ)" value="ZJ" />
+          <el-option label="无锡(WX)" value="WX"/>
+          <el-option label="江苏(JS)" value="JS"/>
+          <el-option label="上海(SH)" value="SH"/>
+          <el-option label="浙江(ZJ)" value="ZJ"/>
         </el-select>
       </el-form-item>
       <el-form-item label="监测时间">
         <el-date-picker
-          v-model="dateRange"
-          type="daterange"
-          range-separator="至"
-          start-placeholder="开始日期"
-          end-placeholder="结束日期"
-          value-format="YYYY-MM-DD"
-          @change="handleDateChange"
+            v-model="dateRange"
+            type="daterange"
+            range-separator="至"
+            start-placeholder="开始日期"
+            end-placeholder="结束日期"
+            value-format="YYYY-MM-DD"
+            @change="handleDateChange"
         />
       </el-form-item>
       <el-form-item>
@@ -35,106 +35,140 @@
     <el-row :gutter="10" class="mb8">
       <el-col :span="1.5">
         <el-button
-          type="primary"
-          plain
-          icon="Upload"
-          @click="handleUpload"
-          size="mini"
-          v-hasPermi="['yjjtgl:sz:upload']"
-        >上传数据</el-button>
+            type="primary"
+            plain
+            icon="Upload"
+            @click="handleUpload"
+            size="mini"
+            v-hasPermi="['yjjtgl:sz:upload']"
+        >上传数据
+        </el-button>
       </el-col>
       <el-col :span="1.5">
         <el-button
-          type="success"
-          plain
-          icon="Download"
-          @click="handleExport"
-          size="mini"
-          v-hasPermi="['yjjtgl:sz:export']"
-        >导出数据</el-button>
+            type="success"
+            plain
+            icon="Download"
+            @click="handleExport"
+            size="mini"
+            v-hasPermi="['yjjtgl:sz:export']"
+        >导出数据
+        </el-button>
       </el-col>
       <right-toolbar :showSearch.sync="showSearch" @queryTable="getList"></right-toolbar>
     </el-row>
 
     <el-table v-loading="loading" :data="tableData" @selection-change="handleSelectionChange">
-      <el-table-column type="selection" width="55" align="center" />
-      <el-table-column type="index" label="序号" width="60" align="center" />
-      <el-table-column prop="stnm" label="断面名称" width="150" />
-      <el-table-column prop="stcd" label="测站编码" width="100" />
-      <el-table-column prop="rvnm" label="河流名称" width="200" />
-      <el-table-column prop="spt" label="监测时间" width="180">
+      <el-table-column type="selection" width="55" align="center"/>
+      <el-table-column type="index" label="序号" width="60" align="center"/>
+      <el-table-column prop="addvcd" label="数据来源" width="80" align="center">
+        <template #default="scope">{{ getAddvcdLabel(scope.row.addvcd) }}</template>
+      </el-table-column>
+      <el-table-column prop="stnm" label="断面名称" width="150" align="center"/>
+      <!--      <el-table-column prop="stcd" label="测站编码" width="100" />-->
+      <el-table-column prop="rvnm" label="河流名称" width="150" align="center"/>
+      <el-table-column prop="spt" label="监测时间" width="180" align="center">
         <template #default="scope">{{ formatDate(scope.row.spt) }}</template>
       </el-table-column>
-      <el-table-column prop="wt" label="水温(℃)" width="80" align="right">
+      <el-table-column prop="wt" label="水温(℃)" width="80" align="center">
         <template #default="scope">{{ formatDecimal(scope.row.wt) }}</template>
       </el-table-column>
-      <el-table-column prop="ph" label="pH值" width="80" align="right">
+      <el-table-column prop="ph" label="pH值" width="80" align="center">
         <template #default="scope">{{ formatDecimal(scope.row.ph) }}</template>
       </el-table-column>
-      <el-table-column prop="dox" label="溶解氧(mg/L)" width="120" align="right">
+      <el-table-column prop="dox" label="溶解氧(mg/L)" width="120" align="center">
         <template #default="scope">{{ formatDecimal(scope.row.dox) }}</template>
       </el-table-column>
-      <el-table-column prop="codcr" label="化学需氧量(mg/L)" width="150" align="right">
+      <el-table-column prop="codcr" label="化学需氧量(mg/L)" width="150" align="center">
         <template #default="scope">{{ formatDecimal(scope.row.codcr) }}</template>
       </el-table-column>
-      <el-table-column prop="bod5" label="五日生化需氧量(mg/L)" width="180" align="right">
+      <el-table-column prop="bod5" label="五日生化需氧量(mg/L)" width="180" align="center">
         <template #default="scope">{{ formatDecimal(scope.row.bod5) }}</template>
       </el-table-column>
-      <el-table-column prop="nh3n" label="氨氮(mg/L)" width="120" align="right">
+      <el-table-column prop="cond" label="电导率(μS/cm)" width="120" align="center">
+        <template #default="scope">{{ formatDecimal(scope.row.cond) }}</template>
+      </el-table-column>
+      <el-table-column prop="codmn" label="高锰酸盐指数" width="120" align="center">
+        <template #default="scope">{{ formatDecimal(scope.row.codmn) }}</template>
+      </el-table-column>
+      <el-table-column prop="nh3n" label="氨氮(mg/L)" width="120" align="center">
         <template #default="scope">{{ formatDecimal(scope.row.nh3n) }}</template>
       </el-table-column>
-      <el-table-column prop="tp" label="总磷(mg/L)" width="120" align="right">
+      <el-table-column prop="tp" label="总磷(mg/L)" width="120" align="center">
         <template #default="scope">{{ formatDecimal(scope.row.tp) }}</template>
       </el-table-column>
-      <el-table-column prop="tn" label="总氮(mg/L)" width="120" align="right">
+      <el-table-column prop="tn" label="总氮(mg/L)" width="120" align="center">
         <template #default="scope">{{ formatDecimal(scope.row.tn) }}</template>
       </el-table-column>
-      <el-table-column prop="addvcd" label="数据来源" width="80">
-        <template #default="scope">{{ getAddvcdLabel(scope.row.addvcd) }}</template>
+      <el-table-column prop="dtp" label="可溶性总磷(mg/L)" width="120" align="center">
+        <template #default="scope">{{ formatDecimal(scope.row.dtp) }}</template>
+      </el-table-column>
+      <el-table-column prop="watercolor" label="水色" width="120" align="center">
+        <template #default="scope">{{ scope.row.watercolor }}</template>
+      </el-table-column>
+      <el-table-column prop="smell" label="臭和味" width="120" align="center">
+        <template #default="scope">{{ scope.row.smell }}</template>
+      </el-table-column>
+      <el-table-column prop="clarity" label="透明度(㎝)" width="120" align="center">
+        <template #default="scope">{{ scope.row.clarity }}</template>
+      </el-table-column>
+      <el-table-column prop="ss" label="悬浮物" width="120" align="center">
+        <template #default="scope">{{ formatDecimal(scope.row.ss) }}</template>
+      </el-table-column>
+      <el-table-column prop="thrd" label="总硬度" width="120" align="center">
+        <template #default="scope">{{ formatDecimal(scope.row.thrd) }}</template>
+      </el-table-column>
+      <el-table-column prop="no2" label="亚硝酸盐氮" width="120" align="center">
+        <template #default="scope">{{ formatDecimal(scope.row.no2) }}</template>
       </el-table-column>
-<!--      <el-table-column label="操作" width="100" align="center">-->
-<!--        <template #default="scope">-->
-<!--          <el-button size="mini" type="text" icon="Delete" @click="handleDelete(scope.row)" v-hasPermi="['yjjtgl:sz:remove']">删除</el-button>-->
-<!--        </template>-->
-<!--      </el-table-column>-->
+      <el-table-column prop="turb" label="浊度" width="120" align="center">
+        <template #default="scope">{{ formatDecimal(scope.row.turb) }}</template>
+      </el-table-column>
+      <el-table-column prop="chla" label="叶绿素a(mg/L)" width="120" align="center">
+        <template #default="scope">{{ formatDecimal(scope.row.chla) }}</template>
+      </el-table-column>
+      <el-table-column prop="phyd" label="藻密度(个/L)" width="120" align="center">
+        <template #default="scope">{{ formatDecimal(scope.row.phyd) }}</template>
+      </el-table-column>
+      <!--      <el-table-column label="操作" width="100" align="center">-->
+      <!--        <template #default="scope">-->
+      <!--          <el-button size="mini" type="text" icon="Delete" @click="handleDelete(scope.row)" v-hasPermi="['yjjtgl:sz:remove']">删除</el-button>-->
+      <!--        </template>-->
+      <!--      </el-table-column>-->
     </el-table>
 
     <pagination
-      v-show="total>0"
-      :total="total"
-      :page.sync="queryParams.pageNum"
-      :limit.sync="queryParams.pageSize"
-      @pagination="getList"
+        v-show="total>0"
+        :total="total"
+        :page.sync="queryParams.pageNum"
+        :limit.sync="queryParams.pageSize"
+        @pagination="getList"
     />
 
     <!-- 上传弹窗 -->
     <el-dialog title="水质数据上传" v-model="uploadVisible" width="500px" append-to-body>
-      <el-form :model="uploadForm" ref="uploadForm" label-width="100px">
-        <el-form-item label="数据来源">
-          <el-select v-model="uploadForm.bizType" placeholder="请选择数据来源" style="width: 100%" required>
-            <el-option label="江苏(JS)" value="JS" />
-            <el-option label="上海(SH)" value="SH" />
-            <el-option label="浙江(ZJ)" value="ZJ" />
-          </el-select>
-        </el-form-item>
+      <el-form ref="uploadForm" label-width="100px">
         <el-form-item label="上传文件">
           <el-upload
-            class="upload-demo"
-            drag
-            :action="uploadUrl"
-            :data="{ bizType: uploadForm.bizType }"
-            :on-success="handleUploadSuccess"
-            :on-error="handleUploadError"
-            :file-list="fileList"
-            accept=".xlsx,.xls"
-            :auto-upload="false"
-            ref="uploadRef"
+              class="upload-demo"
+              drag
+              :action="uploadUrl"
+              :on-success="handleUploadSuccess"
+              :on-error="handleUploadError"
+              :file-list="fileList"
+              accept=".xlsx,.xls"
+              :auto-upload="false"
+              ref="uploadRef"
           >
-            <el-icon class="el-icon--upload"><upload-filled /></el-icon>
+            <el-icon class="el-icon--upload">
+              <upload-filled/>
+            </el-icon>
             <div class="el-upload__text">将文件拖到此处,或<em>点击上传</em></div>
             <template #tip>
               <div class="el-upload__tip">
-                <el-icon><warning /></el-icon>
+                <el-icon>
+                  <warning/>
+                </el-icon>
                 <span>仅支持上传Excel文件(.xlsx,.xls)</span>
               </div>
             </template>
@@ -142,9 +176,7 @@
         </el-form-item>
         <el-form-item>
           <span class="text-muted">下载模板:</span>
-          <el-button type="text" @click="downloadTemplate('js')">江苏模板</el-button>
-          <el-button type="text" @click="downloadTemplate('sh')">上海模板</el-button>
-          <el-button type="text" @click="downloadTemplate('zj')">浙江模板</el-button>
+          <el-button type="text" @click="downloadTemplate('sz')">水质数据上传模板</el-button>
         </el-form-item>
       </el-form>
       <template #footer>
@@ -156,9 +188,9 @@
 </template>
 
 <script setup name="YjjtSzData">
-import { ref, reactive } from 'vue'
-import { ElMessage, ElMessageBox } from 'element-plus'
-import { listYjjtSzData, delYjjtSzData, uploadSzData, exportYjjtSzData } from '@/api/yjjt/sz'
+import {ref, reactive} from 'vue'
+import {ElMessage, ElMessageBox} from 'element-plus'
+import {listYjjtSzData, delYjjtSzData, uploadSzData, exportYjjtSzData} from '@/api/yjjt/sz'
 import request from '@/utils/request'
 
 const loading = ref(false)
@@ -169,6 +201,16 @@ const uploadVisible = ref(false)
 const fileList = ref([])
 const uploadRef = ref(null)
 
+// 获取当前日期和当月第一天
+const now = new Date()
+const firstDayOfMonth = new Date(now.getFullYear(), now.getMonth(), 1)
+const formatDateStr = (date) => {
+  const year = date.getFullYear()
+  const month = String(date.getMonth() + 1).padStart(2, '0')
+  const day = String(date.getDate()).padStart(2, '0')
+  return `${year}-${month}-${day}`
+}
+
 const queryParams = reactive({
   pageNum: 1,
   pageSize: 15,
@@ -176,16 +218,12 @@ const queryParams = reactive({
   stcd: '',
   addvcd: '',
   params: {
-    beginTime: '',
-    endTime: ''
+    beginTime: formatDateStr(firstDayOfMonth),
+    endTime: formatDateStr(now)
   }
 })
 
-const dateRange = ref([])
-
-const uploadForm = reactive({
-  bizType: ''
-})
+const dateRange = ref([formatDateStr(firstDayOfMonth), formatDateStr(now)])
 
 const uploadUrl = import.meta.env.VITE_SERVICE_BASE_TITLE + '/yjjt/sz/upload'
 
@@ -211,9 +249,9 @@ const resetQuery = () => {
   queryParams.stnm = ''
   queryParams.stcd = ''
   queryParams.addvcd = ''
-  queryParams.params.beginTime = ''
-  queryParams.params.endTime = ''
-  dateRange.value = []
+  queryParams.params.beginTime = formatDateStr(firstDayOfMonth)
+  queryParams.params.endTime = formatDateStr(now)
+  dateRange.value = [formatDateStr(firstDayOfMonth), formatDateStr(now)]
   handleQuery()
 }
 
@@ -229,7 +267,7 @@ const handleDateChange = (val) => {
 
 const handleDelete = async (row) => {
   try {
-    await ElMessageBox.confirm('确定删除该数据吗?', '提示', { type: 'warning' })
+    await ElMessageBox.confirm('确定删除该数据吗?', '提示', {type: 'warning'})
     await delYjjtSzData(row.id)
     ElMessage.success('删除成功')
     getList()
@@ -245,10 +283,6 @@ const handleUpload = () => {
 }
 
 const submitUpload = () => {
-  if (!uploadForm.bizType) {
-    ElMessage.warning('请选择数据来源')
-    return
-  }
   uploadRef.value.submit()
 }
 
@@ -257,7 +291,6 @@ const handleUploadSuccess = async (response) => {
     ElMessage.success(response.msg)
     uploadVisible.value = false
     fileList.value = []
-    uploadForm.bizType = ''
     getList()
   } else {
     ElMessage.error(response.msg)
@@ -289,13 +322,11 @@ const handleExport = async () => {
 
 const downloadTemplate = async (type) => {
   const templateNames = {
-    js: '江苏水质数据模板.xlsx',
-    sh: '上海水质数据模板.xlsx',
-    zj: '浙江水质数据模板.xlsx'
+    sl: '引江济太水质数据上传模板.xlsx',
   }
   try {
     const response = await request({
-      url: '/yjjt/template/sz/' + type,
+      url: '/yjjt/template/' + type,
       method: 'get',
       responseType: 'blob'
     })
@@ -341,7 +372,8 @@ const getAddvcdLabel = (value) => {
   return labels[value] || value
 }
 
-const handleSelectionChange = () => {}
+const handleSelectionChange = () => {
+}
 
 getList()
 </script>