Kaynağa Gözat

Merge remote-tracking branch 'origin/master'

周壕 9 ay önce
ebeveyn
işleme
8ee1455512

+ 42 - 41
src/main/resources/META-INF/MANIFEST.MF

@@ -1,44 +1,45 @@
 Manifest-Version: 1.0
 Main-Class: com.bowintek.practice.PracticeApplication
-Class-Path: mybatis-spring-2.0.7.jar reactor-core-3.4.21.jar lettuce-cor
- e-6.1.9.RELEASE.jar spring-data-keyvalue-2.7.2.jar jackson-databind-2.1
- 3.3.jar jackson-datatype-jdk8-2.13.3.jar spring-boot-starter-data-redis
- -2.7.2.jar spring-boot-starter-jdbc-2.7.2.jar lucene-queries-4.7.2.jar 
- snakeyaml-1.30.jar netty-handler-4.1.79.Final.jar jackson-module-parame
- ter-names-2.13.3.jar jackson-core-2.13.3.jar poi-4.0.0.jar spring-webmv
- c-5.3.22.jar commons-collections4-4.2.jar fastjson-1.2.47.jar spring-be
- ans-5.3.22.jar commons-lang3-3.5.jar httpasyncclient-4.1.5.jar netty-re
- solver-4.1.79.Final.jar spring-boot-starter-json-2.7.2.jar lombok-1.18.
- 20.jar spring-boot-autoconfigure-2.7.2.jar reactive-streams-1.0.4.jar a
- spectjrt-1.9.7.jar spring-expression-5.3.22.jar jul-to-slf4j-1.7.36.jar
-  checker-qual-3.5.0.jar netty-codec-4.1.79.Final.jar parsson-1.0.0.jar 
- slf4j-api-1.7.36.jar xmlbeans-3.0.1.jar lucene-queryparser-4.7.2.jar to
- mcat-embed-core-9.0.65.jar opentelemetry-api-1.29.0.jar spring-jdbc-5.3
- .22.jar mysql-connector-java-8.0.29.jar spring-core-5.3.22.jar poi-ooxm
- l-4.0.0.jar pagehelper-spring-boot-starter-1.4.3.jar elasticsearch-java
- -8.11.1.jar mybatis-3.5.9.jar elasticsearch-rest-client-7.17.4.jar jsql
- parser-4.2.jar netty-common-4.1.79.Final.jar jakarta.annotation-api-1.3
- .5.jar spring-tx-5.3.22.jar netty-transport-4.1.79.Final.jar ikanalyzer
- -2012_u6.jar httpcore-4.4.15.jar mybatis-spring-boot-autoconfigure-2.2.
- 2.jar jakarta.json-api-2.0.1.jar log4j-to-slf4j-2.17.2.jar spring-boot-
- 2.7.2.jar druid-spring-boot-starter-1.2.11.jar pagehelper-spring-boot-a
- utoconfigure-1.4.3.jar spring-data-redis-2.7.2.jar commons-beanutils-1.
- 9.4.jar log4j-api-2.17.2.jar lucene-sandbox-4.7.2.jar httpclient-4.5.9.
- jar jsr305-3.0.2.jar HikariCP-4.0.3.jar tomcat-embed-websocket-9.0.65.j
- ar spring-boot-starter-web-2.7.2.jar postgresql-42.3.6.jar commons-coll
- ections-3.2.2.jar logback-classic-1.2.11.jar logback-core-1.2.11.jar po
- i-ooxml-schemas-4.0.0.jar spring-boot-devtools-2.7.2.jar netty-buffer-4
- .1.79.Final.jar pagehelper-5.3.1.jar commons-pool2-2.11.1.jar spring-bo
- ot-starter-2.7.2.jar spring-data-commons-2.7.2.jar commons-codec-1.15.j
- ar spring-aop-5.3.22.jar curvesapi-1.04.jar spring-boot-starter-tomcat-
- 2.7.2.jar opentelemetry-context-1.29.0.jar aspectjweaver-1.9.7.jar spri
- ng-web-5.3.22.jar commons-logging-1.2.jar aspose-words-15.8.0-jdk16.jar
-  postgresql-42.3.4.jar java-jwt-3.9.0.jar jackson-annotations-2.13.3.ja
- r lucene-analyzers-common-4.7.2.jar tomcat-embed-el-9.0.65.jar json-201
- 90722.jar druid-1.2.11.jar jackson-datatype-jsr310-2.13.3.jar mybatis-s
- pring-boot-starter-2.2.2.jar commons-compress-1.18.jar spring-oxm-5.3.2
- 2.jar httpcore-nio-4.4.15.jar spring-context-support-5.3.22.jar spring-
- context-5.3.22.jar netty-transport-native-unix-common-4.1.79.Final.jar 
- commons-net-3.6.jar poi-scratchpad-4.0.0.jar spring-jcl-5.3.22.jar spri
- ng-boot-starter-logging-2.7.2.jar lucene-core-4.7.2.jar
+Class-Path: spring-beans-5.3.22.jar spring-web-5.3.22.jar poi-ooxml-4.0.
+ 0.jar opentelemetry-api-1.29.0.jar aspectjrt-1.9.7.jar druid-spring-boo
+ t-starter-1.2.11.jar lucene-core-4.7.2.jar tomcat-embed-el-9.0.65.jar p
+ agehelper-5.3.1.jar mysql-connector-java-8.0.29.jar jakarta.json-api-2.
+ 0.1.jar mybatis-spring-boot-starter-2.2.2.jar logback-classic-1.2.11.ja
+ r spring-boot-starter-web-2.7.2.jar jackson-annotations-2.13.3.jar comm
+ ons-collections4-4.2.jar spring-context-support-5.3.22.jar reactive-str
+ eams-1.0.4.jar mybatis-spring-boot-autoconfigure-2.2.2.jar spring-webmv
+ c-5.3.22.jar spring-data-commons-2.7.2.jar elasticsearch-java-8.11.1.ja
+ r pagehelper-spring-boot-starter-1.4.3.jar jsqlparser-4.2.jar netty-tra
+ nsport-4.1.79.Final.jar httpclient-4.5.9.jar spring-context-5.3.22.jar 
+ commons-lang3-3.5.jar jackson-datatype-jsr310-2.13.3.jar spring-jdbc-5.
+ 3.22.jar spring-data-redis-2.7.2.jar spring-tx-5.3.22.jar httpasyncclie
+ nt-4.1.5.jar commons-beanutils-1.9.4.jar parsson-1.0.0.jar spring-boot-
+ devtools-2.7.2.jar netty-transport-native-unix-common-4.1.79.Final.jar 
+ spring-core-5.3.22.jar pagehelper-spring-boot-autoconfigure-1.4.3.jar j
+ sr305-3.0.2.jar spring-boot-2.7.2.jar commons-pool2-2.11.1.jar ikanalyz
+ er-2012_u6.jar reactor-core-3.4.21.jar spring-data-keyvalue-2.7.2.jar s
+ pring-boot-starter-data-redis-2.7.2.jar spring-jcl-5.3.22.jar jakarta.a
+ nnotation-api-1.3.5.jar spring-expression-5.3.22.jar opentelemetry-cont
+ ext-1.29.0.jar log4j-to-slf4j-2.17.2.jar spring-boot-starter-json-2.7.2
+ .jar lucene-sandbox-4.7.2.jar commons-net-3.6.jar java-jwt-3.9.0.jar lo
+ g4j-api-2.17.2.jar spring-boot-starter-2.7.2.jar commons-collections-3.
+ 2.2.jar httpcore-4.4.15.jar lucene-queryparser-4.7.2.jar aspose-words-1
+ 5.8.0-jdk16.jar postgresql-42.3.6.jar lettuce-core-6.1.9.RELEASE.jar to
+ mcat-embed-core-9.0.65.jar fastjson-1.2.47.jar netty-common-4.1.79.Fina
+ l.jar druid-1.2.11.jar aspectjweaver-1.9.7.jar postgresql-42.3.4.jar ch
+ ecker-qual-3.5.0.jar spring-boot-starter-jdbc-2.7.2.jar elasticsearch-r
+ est-client-7.17.4.jar spring-aop-5.3.22.jar poi-scratchpad-4.0.0.jar ja
+ ckson-databind-2.13.3.jar netty-resolver-4.1.79.Final.jar lucene-querie
+ s-4.7.2.jar commons-codec-1.15.jar jackson-core-2.13.3.jar lucene-analy
+ zers-common-4.7.2.jar spring-boot-starter-logging-2.7.2.jar netty-handl
+ er-4.1.79.Final.jar HikariCP-4.0.3.jar mybatis-3.5.9.jar jul-to-slf4j-1
+ .7.36.jar spring-oxm-5.3.22.jar curvesapi-1.04.jar slf4j-api-1.7.36.jar
+  poi-ooxml-schemas-4.0.0.jar jackson-module-parameter-names-2.13.3.jar 
+ tomcat-embed-websocket-9.0.65.jar netty-buffer-4.1.79.Final.jar poi-4.0
+ .0.jar logback-core-1.2.11.jar lombok-1.18.20.jar commons-compress-1.18
+ .jar spring-boot-starter-tomcat-2.7.2.jar jackson-datatype-jdk8-2.13.3.
+ jar xmlbeans-3.0.1.jar spring-boot-autoconfigure-2.7.2.jar aspose-cells
+ -18.9.jar snakeyaml-1.30.jar commons-logging-1.2.jar mybatis-spring-2.0
+ .7.jar json-20190722.jar httpcore-nio-4.4.15.jar netty-codec-4.1.79.Fin
+ al.jar
 

+ 16 - 9
src/main/resources/mapping/cquery/WellInfoCQuery.xml

@@ -4,9 +4,10 @@
 
     <select id="getWellInfo" resultType="java.util.HashMap">
         select
-            well.well_id, well.well_common_name, well_purpose, well.well_type,  well.budgeted_md, well.completion_formation,
-            well.completion_method, well.org_id_a1, well.org_id_a2,  well.org_name_a2,well.project_id, well.project_name,
-            TO_CHAR(well.spud_date , 'YYYY-MM-dd') spud_date,TO_CHAR(well.end_drilling_date , 'YYYY-MM-dd') end_drilling_date,
+            well.*,
+            TO_CHAR(well.create_date , 'YYYY-MM-dd') create_date_fmt,
+            TO_CHAR(well.update_date , 'YYYY-MM-dd') update_date_fmt,
+            TO_CHAR(well.spud_date , 'YYYY-MM-dd') spud_date_fmt,TO_CHAR(well.end_drilling_date , 'YYYY-MM-dd') end_drilling_date_fmt,
                fact_daily.fluid_prod_daily,
                fact_daily.oil_prod_daily,
                fact_daily.water_cut,
@@ -54,14 +55,15 @@
             resultType="java.util.HashMap">
         select
         well.well_id, well.well_common_name, well_purpose, well.well_type,  well.end_drilling_date, well.budgeted_md, well.completion_formation,
-               well.completion_method, well.org_id_a1, well.org_id_a2,  well.org_name_a2,well.project_id, well.project_name,
-        TO_CHAR(well.spud_date , 'YYYY-MM-dd') spud_date,TO_CHAR(well.end_drilling_date , 'YYYY-MM-dd') end_drilling_date,
-               station.name  org_name_a1,
+        well.completion_method, well.org_id_a1, well.org_id_a2,  well.org_name_a2,well.project_id, well.project_name,
+        TO_CHAR(well.spud_date , 'YYYY-MM-dd') spud_date,TO_CHAR(well.end_drilling_date , 'YYYY-MM-dd') end_drilling_date,TO_CHAR(well.completion_date , 'YYYY-MM-dd') completion_date,
+        station.name  org_name_a1,
         TO_CHAR(fact_daily.oil_prod_begin_date , 'YYYY-MM-dd') oil_prod_begin_date,
         TO_CHAR(fact_daily.oil_prod_recent_date , 'YYYY-MM-dd') oil_prod_recent_date,
-        fact_daily.current_state,fact_daily.water_cut,
-        fact_mon.oil_prod_mon,fact_mon.gas_prod_mon,fact_mon.gas_prod_year,fact_mon.oil_prod_year
-        ,fact_mon.water_prod_mon,fact_mon.water_prod_year,
+        fact_daily.current_state,fact_daily.water_cut,fact_daily.oil_prod_cum oil_prod_year,
+        fact_daily.gas_prod_cum gas_prod_year,
+        fact_daily.inj_vol_cum water_prod_year,
+        fact_mon.oil_prod_mon,fact_mon.gas_prod_mon,fact_mon.inj_vol_mon water_prod_mon,
         well_stt.well_coordinates_x x,
         well_stt.well_coordinates_y y,
         intr.well_state
@@ -241,6 +243,8 @@
         select *
         from by_dm.dws_dm_test_history th
         where th.well_id = #{well_id}
+        order by testing_date desc
+        limit 100
     </select>
     <select id="selectTestHistorySummary" resultType="java.util.HashMap">
         select testing_name, count(1) as testing_num
@@ -258,6 +262,8 @@
         select *
         from by_dm.dws_dm_analytical_assays_new aa
         where aa.well_id = #{well_id}
+        order by item_code
+        limit 100
     </select>
     <select id="selectAnalyticalAssaysSummary" resultType="java.util.HashMap">
         SELECT item_code,
@@ -278,6 +284,7 @@
                  working_type, test_processes_name, worksummary, construct_no, work_team, pump_depth
         from by_dwr.fact_dwr_brief_history_assignment ha
         where ha.well_id = #{well_id}
+        order by start_time desc
     </select>
     <select id="selectHistoryAssignmentSummary" resultType="java.util.HashMap">
         select test_processes_name, count(1) as testing_num

+ 42 - 43
target/classes/META-INF/MANIFEST.MF

@@ -1,46 +1,45 @@
 Manifest-Version: 1.0
 Main-Class: com.bowintek.practice.PracticeApplication
-Class-Path: HikariCP-4.0.3.jar postgresql-42.3.4.jar java-jwt-3.9.0.jar 
- netty-common-4.1.79.Final.jar netty-codec-4.1.79.Final.jar httpcore-4.4
- .15.jar lucene-queryparser-4.7.2.jar commons-collections4-4.2.jar logba
- ck-core-1.2.11.jar httpclient-4.5.9.jar lettuce-core-6.1.9.RELEASE.jar 
- commons-pool2-2.11.1.jar spring-oxm-5.3.22.jar lucene-sandbox-4.7.2.jar
-  netty-handler-4.1.79.Final.jar spring-core-5.3.22.jar spring-jdbc-5.3.
- 22.jar log4j-api-2.17.2.jar opentelemetry-context-1.29.0.jar mysql-conn
- ector-java-8.0.29.jar commons-net-3.6.jar tomcat-embed-el-9.0.65.jar sn
- akeyaml-1.30.jar spring-boot-starter-tomcat-2.7.2.jar gson-2.9.0.jar my
- batis-3.5.9.jar spring-boot-2.7.2.jar jsr305-3.0.2.jar poi-4.0.0.jar ne
- tty-transport-4.1.79.Final.jar jackson-core-2.13.3.jar log4j-to-slf4j-2
- .17.2.jar httpcore-nio-4.4.15.jar jul-to-slf4j-1.7.36.jar tomcat-embed-
- core-9.0.65.jar parsson-1.0.0.jar mybatis-spring-boot-starter-2.2.2.jar
-  spring-context-support-5.3.22.jar spring-boot-starter-jdbc-2.7.2.jar s
- pring-boot-devtools-2.7.2.jar juh-4.1.2.jar jsqlparser-4.2.jar jackson-
- annotations-2.13.3.jar json-20190722.jar lucene-analyzers-common-4.7.2.
- jar pagehelper-spring-boot-autoconfigure-1.4.3.jar poi-ooxml-schemas-4.
- 0.0.jar poi-ooxml-4.0.0.jar tomcat-embed-websocket-9.0.65.jar jakarta.a
- nnotation-api-1.3.5.jar xmlbeans-3.0.1.jar spring-aop-5.3.22.jar spring
- -context-5.3.22.jar lucene-core-4.7.2.jar commons-collections-3.2.2.jar
-  jodconverter-local-4.4.6.jar pagehelper-5.3.1.jar commons-beanutils-1.
- 9.4.jar commons-compress-1.18.jar unoil-4.1.2.jar spring-webmvc-5.3.22.
- jar spring-boot-starter-json-2.7.2.jar lombok-1.18.20.jar spring-expres
- sion-5.3.22.jar jakarta.json-api-2.0.1.jar pagehelper-spring-boot-start
- er-1.4.3.jar spring-boot-starter-2.7.2.jar commons-codec-1.15.jar sprin
- g-tx-5.3.22.jar elasticsearch-java-8.11.1.jar postgresql-42.3.6.jar spr
- ing-data-keyvalue-2.7.2.jar spring-data-redis-2.7.2.jar spring-boot-sta
- rter-logging-2.7.2.jar spring-boot-autoconfigure-2.7.2.jar opentelemetr
- y-api-1.29.0.jar checker-qual-3.5.0.jar lucene-queries-4.7.2.jar elasti
- csearch-rest-client-7.17.4.jar curvesapi-1.04.jar druid-spring-boot-sta
- rter-1.2.11.jar netty-buffer-4.1.79.Final.jar spring-data-commons-2.7.2
- .jar aspectjweaver-1.9.7.jar spring-web-5.3.22.jar jackson-databind-2.1
- 3.3.jar druid-1.2.11.jar fastjson-1.2.47.jar netty-transport-native-uni
- x-common-4.1.79.Final.jar jackson-module-parameter-names-2.13.3.jar asp
- ectjrt-1.9.7.jar jackson-datatype-jdk8-2.13.3.jar slf4j-api-1.7.36.jar 
- spring-beans-5.3.22.jar httpasyncclient-4.1.5.jar reactor-core-3.4.21.j
- ar netty-resolver-4.1.79.Final.jar spring-jcl-5.3.22.jar ridl-4.1.2.jar
-  jackson-datatype-jsr310-2.13.3.jar mybatis-spring-boot-autoconfigure-2
- .2.2.jar mybatis-spring-2.0.7.jar aspose-words-15.8.0-jdk16.jar logback
- -classic-1.2.11.jar reactive-streams-1.0.4.jar jurt-4.1.2.jar jodconver
- ter-core-4.4.6.jar aspose-cells-18.9.jar poi-scratchpad-4.0.0.jar sprin
- g-boot-starter-data-redis-2.7.2.jar ikanalyzer-2012_u6.jar spring-boot-
- starter-web-2.7.2.jar commons-lang3-3.5.jar commons-logging-1.2.jar
+Class-Path: spring-beans-5.3.22.jar spring-web-5.3.22.jar poi-ooxml-4.0.
+ 0.jar opentelemetry-api-1.29.0.jar aspectjrt-1.9.7.jar druid-spring-boo
+ t-starter-1.2.11.jar lucene-core-4.7.2.jar tomcat-embed-el-9.0.65.jar p
+ agehelper-5.3.1.jar mysql-connector-java-8.0.29.jar jakarta.json-api-2.
+ 0.1.jar mybatis-spring-boot-starter-2.2.2.jar logback-classic-1.2.11.ja
+ r spring-boot-starter-web-2.7.2.jar jackson-annotations-2.13.3.jar comm
+ ons-collections4-4.2.jar spring-context-support-5.3.22.jar reactive-str
+ eams-1.0.4.jar mybatis-spring-boot-autoconfigure-2.2.2.jar spring-webmv
+ c-5.3.22.jar spring-data-commons-2.7.2.jar elasticsearch-java-8.11.1.ja
+ r pagehelper-spring-boot-starter-1.4.3.jar jsqlparser-4.2.jar netty-tra
+ nsport-4.1.79.Final.jar httpclient-4.5.9.jar spring-context-5.3.22.jar 
+ commons-lang3-3.5.jar jackson-datatype-jsr310-2.13.3.jar spring-jdbc-5.
+ 3.22.jar spring-data-redis-2.7.2.jar spring-tx-5.3.22.jar httpasyncclie
+ nt-4.1.5.jar commons-beanutils-1.9.4.jar parsson-1.0.0.jar spring-boot-
+ devtools-2.7.2.jar netty-transport-native-unix-common-4.1.79.Final.jar 
+ spring-core-5.3.22.jar pagehelper-spring-boot-autoconfigure-1.4.3.jar j
+ sr305-3.0.2.jar spring-boot-2.7.2.jar commons-pool2-2.11.1.jar ikanalyz
+ er-2012_u6.jar reactor-core-3.4.21.jar spring-data-keyvalue-2.7.2.jar s
+ pring-boot-starter-data-redis-2.7.2.jar spring-jcl-5.3.22.jar jakarta.a
+ nnotation-api-1.3.5.jar spring-expression-5.3.22.jar opentelemetry-cont
+ ext-1.29.0.jar log4j-to-slf4j-2.17.2.jar spring-boot-starter-json-2.7.2
+ .jar lucene-sandbox-4.7.2.jar commons-net-3.6.jar java-jwt-3.9.0.jar lo
+ g4j-api-2.17.2.jar spring-boot-starter-2.7.2.jar commons-collections-3.
+ 2.2.jar httpcore-4.4.15.jar lucene-queryparser-4.7.2.jar aspose-words-1
+ 5.8.0-jdk16.jar postgresql-42.3.6.jar lettuce-core-6.1.9.RELEASE.jar to
+ mcat-embed-core-9.0.65.jar fastjson-1.2.47.jar netty-common-4.1.79.Fina
+ l.jar druid-1.2.11.jar aspectjweaver-1.9.7.jar postgresql-42.3.4.jar ch
+ ecker-qual-3.5.0.jar spring-boot-starter-jdbc-2.7.2.jar elasticsearch-r
+ est-client-7.17.4.jar spring-aop-5.3.22.jar poi-scratchpad-4.0.0.jar ja
+ ckson-databind-2.13.3.jar netty-resolver-4.1.79.Final.jar lucene-querie
+ s-4.7.2.jar commons-codec-1.15.jar jackson-core-2.13.3.jar lucene-analy
+ zers-common-4.7.2.jar spring-boot-starter-logging-2.7.2.jar netty-handl
+ er-4.1.79.Final.jar HikariCP-4.0.3.jar mybatis-3.5.9.jar jul-to-slf4j-1
+ .7.36.jar spring-oxm-5.3.22.jar curvesapi-1.04.jar slf4j-api-1.7.36.jar
+  poi-ooxml-schemas-4.0.0.jar jackson-module-parameter-names-2.13.3.jar 
+ tomcat-embed-websocket-9.0.65.jar netty-buffer-4.1.79.Final.jar poi-4.0
+ .0.jar logback-core-1.2.11.jar lombok-1.18.20.jar commons-compress-1.18
+ .jar spring-boot-starter-tomcat-2.7.2.jar jackson-datatype-jdk8-2.13.3.
+ jar xmlbeans-3.0.1.jar spring-boot-autoconfigure-2.7.2.jar aspose-cells
+ -18.9.jar snakeyaml-1.30.jar commons-logging-1.2.jar mybatis-spring-2.0
+ .7.jar json-20190722.jar httpcore-nio-4.4.15.jar netty-codec-4.1.79.Fin
+ al.jar
 

+ 1 - 1
vue/src/components/basic/chart/chart-prod-dynamics.vue

@@ -52,7 +52,7 @@
     </a-form>
     <div class="echarts-total">
       <template v-for="(it) in getTotals()">
-        <span style="color: #2f54eb; font-weight: bold;">{{it.name}}</span>&nbsp;:&nbsp;{{it.total}}{{it.unit}} &nbsp;&nbsp;&nbsp;&nbsp;
+        <span style="color: #2f54eb; font-weight: bold;">{{it.name}}</span>&nbsp;:&nbsp;{{it.total.toFixed(3)}}{{it.unit}} &nbsp;&nbsp;&nbsp;&nbsp;
       </template>
     </div>
     <div class="echart" :id="('chart-'+id)" :style="getChartStyle()"></div>

+ 21 - 17
vue/src/views/wellinfo/columns.ts

@@ -1,4 +1,4 @@
-export const boreholeInterColumns=[
+export const boreholeInterColumns = [
   {title: '层号(序号)', dataIndex: 'zone_no', key: 'zone_no', width: 120},
   {title: '裸眼井解释成果类型', dataIndex: 'borehole_inter_type_name', key: 'borehole_inter_type_name', width: 120},
   {title: '起始深度', dataIndex: 'start_depth', key: 'start_depth', width: 120},
@@ -33,28 +33,32 @@ export const boreholeInterColumns=[
   {title: '垂深底深', dataIndex: 'end_tvd', key: 'end_tvd', width: 120},
   {title: '垂深层厚 ', dataIndex: 'tvd_thickness', key: 'tvd_thickness', width: 120},
   {title: '备注', dataIndex: 'remarks', key: 'remarks', width: 120},
-  {title: '创建/更新日期', dataIndex: 'update_date', key: 'update_date', width: 120,customRender:({record})=>{
-    return record.update_date == null ? record.create_date : record.update_date;
-    }}
+  {
+    title: '创建/更新日期', dataIndex: 'update_date', key: 'update_date', width: 120, customRender: ({record}) => {
+      return record.update_date == null ? record.create_date : record.update_date;
+    }
+  }
 ];
-export const testHistoryColumns=[
+export const testHistoryColumns = [
   {title: '测试日期', dataIndex: 'testing_date', key: 'testing_date', width: 120},
   {title: '测试名称', dataIndex: 'testing_name', key: 'testing_name', width: 120},
   {title: '测试单位', dataIndex: 'anal_coy', key: 'anal_coy', width: 120},
   {title: '内容描述', dataIndex: 'construction_description', key: 'construction_description', width: 120}
 ]
 
-export const analyticalAssaysColumns=[
-  {title: '分析类型', dataIndex: 'item_code', key: 'item_code', width: 120},
-  {title: '分析指标', dataIndex: 'item_name', key: 'item_name', width: 120},
-  {title: '指标单位', dataIndex: 'meter_unit', key: 'meter_unit', width: 120},
-  {title: '指标值', dataIndex: 'idx_value', key: 'idx_value', width: 120},
-  {title: '描述', dataIndex: 'description', key: 'description', width: 120}
+export const analyticalAssaysColumns = [
+  {
+    title: '分析类型', dataIndex: 'item_code', key: 'item_code', width: 220,
+    customCell: (row) => {
+      return {rowSpan: row.rowSpan};
+    },
+  },
+  {title: '分析指标', dataIndex: 'item_name', key: 'item_name'},
+  {title: '指标单位', dataIndex: 'meter_unit', key: 'meter_unit'},
+  {title: '指标值', dataIndex: 'idx_value', key: 'idx_value'},
+  {title: '描述', dataIndex: 'description', key: 'description'}
 ]
-export const historyAssignmentColumns=[
-  {title: '井筒id', dataIndex: 'wellbore_id', key: 'wellbore_id', width: 120},
-  {title: '作业阶段id', dataIndex: 'event_id', key: 'event_id', width: 120},
-  {title: '试油试采id', dataIndex: 'test_id', key: 'test_id', width: 120},
+export const historyAssignmentColumns = [
   {title: '开始时间', dataIndex: 'start_time', key: 'start_time', width: 120},
   {title: '结束时间', dataIndex: 'end_time', key: 'end_time', width: 120},
   {title: '施工简述', dataIndex: 'constr_description', key: 'constr_description', width: 120},
@@ -72,9 +76,9 @@ export const historyAssignmentColumns=[
   {title: '作业队伍', dataIndex: 'work_team', key: 'work_team', width: 120},
   {title: '泵深', dataIndex: 'pump_depth', key: 'pump_depth', width: 120},
 ]
-export const dataIndexColumns=[
+export const dataIndexColumns = [
   {title: '日期', dataIndex: 'date', key: 'date', width: 120},
-  {title: '文档名', dataIndex: 'file_name', key: 'file_name', width: 120 },
+  {title: '文档名', dataIndex: 'file_name', key: 'file_name', width: 120},
   {title: '文档业务类型', dataIndex: 'file_business_type', key: 'file_business_type', width: 120},
   {title: '存储类型', dataIndex: 'storage_type', key: 'storage_type', width: 120}
 ]

+ 70 - 44
vue/src/views/wellinfo/detail.vue

@@ -17,11 +17,11 @@
         <p>井名<span>{{ dataModel.well_common_name }}</span>构造位置<span>{{
             dataModel.structure_pos
           }}</span>
-          <template v-if="dataModel.spud_date">
-            ,于<span>{{ dataModel.spud_date }}</span>开钻
+          <template v-if="dataModel.spud_date_fmt">
+            ,于<span>{{ dataModel.spud_date_fmt }}</span>开钻
           </template>
-          <template v-if="dataModel.end_drilling_date">
-            ,<span>{{ dataModel.end_drilling_date }}</span>完钻
+          <template v-if="dataModel.end_drilling_date_fmt">
+            ,<span>{{ dataModel.end_drilling_date_fmt }}</span>完钻
           </template>
           <template v-if="dataModel.completion_method">
             ,采取<span>{{ dataModel.completion_method }}</span>方式完井。
@@ -87,11 +87,12 @@
           <a-divider type="vertical" class="info-title" style="margin-top: 0px" dashed>井身结构</a-divider>
           <a-descriptions bordered>
             <a-descriptions-item label="井名:" :labelStyle="{'width':'12%'}" :contentStyle="{'width':'21%'}">
-              {{ dataModel.well_common_name }}</a-descriptions-item>
+              {{ dataModel.well_common_name }}
+            </a-descriptions-item>
             <a-descriptions-item label="井别:">{{ dataModel.well_purpose }}</a-descriptions-item>
             <a-descriptions-item label="井型:">{{ dataModel.well_type }}</a-descriptions-item>
-            <a-descriptions-item label="开钻日期:">{{ dataModel.spud_date }}</a-descriptions-item>
-            <a-descriptions-item label="完钻日期:">{{ dataModel.end_drilling_date }}</a-descriptions-item>
+            <a-descriptions-item label="开钻日期:">{{ dataModel.spud_date_fmt }}</a-descriptions-item>
+            <a-descriptions-item label="完钻日期:">{{ dataModel.end_drilling_date_fmt }}</a-descriptions-item>
             <a-descriptions-item label="设计井深:">{{
                 dataModel.budgeted_md == null ? "" : (dataModel.budgeted_md + "m")
               }}
@@ -114,8 +115,8 @@
                 dataModel.azimuth_angle == null ? "" : (dataModel.azimuth_angle + "°")
               }}
             </a-descriptions-item>
-            <a-descriptions-item label="井位坐标X:">{{ dataModel.well_coordinates_x }}</a-descriptions-item>
-            <a-descriptions-item label="井位坐标y:">{{ dataModel.well_coordinates_y }}</a-descriptions-item>
+            <a-descriptions-item label="井位坐标经度:">{{ dataModel.well_coordinates_x }}</a-descriptions-item>
+            <a-descriptions-item label="井位坐标纬度:">{{ dataModel.well_coordinates_y }}</a-descriptions-item>
           </a-descriptions>
           <a-divider type="vertical" class="info-title" dashed>井A1信息</a-divider>
           <a-descriptions bordered>
@@ -127,7 +128,7 @@
             <a-descriptions-item label="地理位置描述:" :span="3">{{ dataModel.geo_description }}</a-descriptions-item>
             <a-descriptions-item label="构造位置描述:" :span="3">{{ dataModel.structure_pos }}</a-descriptions-item>
             <a-descriptions-item label="创建/更新日期:">
-              {{ dataModel.update_date == null ? dataModel.create_date : dataModel.update_date }}
+              {{ dataModel.update_date_fmt == null ? dataModel.create_date_fmt : dataModel.update_date_fmt }}
             </a-descriptions-item>
             <a-descriptions-item label="井筒生命阶段:">{{ dataModel.phase }}</a-descriptions-item>
             <a-descriptions-item label="通用井筒名:">{{ dataModel.wellbore_common_name }}</a-descriptions-item>
@@ -216,25 +217,6 @@
         </div>
       </div>
     </a-card>
-    <a-card :bordered="false" :headStyle="cardSettings.cardHeadStyle" class="card-detail">
-      <template #title>
-        <div slot="title" style="width:100%" @click="cardSettings.cardExplain.expand=!cardSettings.cardExplain.expand">
-          业务解释
-        </div>
-      </template>
-      <template #extra>
-        <UpSquareOutlined v-if="cardSettings.cardExplain.expand" @click="cardSettings.cardExplain.expand=false"
-                          :style="cardSettings.buttonStyle"/>
-        <DownSquareOutlined v-else @click="cardSettings.cardExplain.expand=true"
-                            :style="cardSettings.buttonStyle"/>
-      </template>
-      <div v-if="cardSettings.cardExplain.expand">
-        <a-table :columns="boreholeInterColumns" :data-source="boreholeInterList" :scroll="{ x:'100%', y: 500 }"
-                 :pagination="false"
-                 bordered>
-        </a-table>
-      </div>
-    </a-card>
     <a-card :bordered="false" :headStyle="cardSettings.cardHeadStyle" class="card-detail">
       <template #title>
         <div slot="title" style="width:100%" @click="cardSettings.cardTest.expand=!cardSettings.cardTest.expand">测试历史
@@ -300,7 +282,7 @@
       </template>
       <div v-if="cardSettings.cardWork.expand">
         <p class="info-body">
-          井实施井下作业施工<span>{{ historyAssignmentCount }}</span>次,其中
+          井实施井下作业施工<span>{{ historyAssignmentCount }}</span>次,其中
           <template v-for="it in historyAssignmentSummary">
             {{ it.test_processes_name }}<span>{{ it.testing_num }}</span>次、
           </template>
@@ -315,6 +297,25 @@
         </a-table>
       </div>
     </a-card>
+    <a-card :bordered="false" :headStyle="cardSettings.cardHeadStyle" class="card-detail">
+      <template #title>
+        <div slot="title" style="width:100%" @click="cardSettings.cardExplain.expand=!cardSettings.cardExplain.expand">
+          业务解释
+        </div>
+      </template>
+      <template #extra>
+        <UpSquareOutlined v-if="cardSettings.cardExplain.expand" @click="cardSettings.cardExplain.expand=false"
+                          :style="cardSettings.buttonStyle"/>
+        <DownSquareOutlined v-else @click="cardSettings.cardExplain.expand=true"
+                            :style="cardSettings.buttonStyle"/>
+      </template>
+      <div v-if="cardSettings.cardExplain.expand">
+        <a-table :columns="boreholeInterColumns" :data-source="boreholeInterList" :scroll="{ x:'100%', y: 500 }"
+                 :pagination="false"
+                 bordered>
+        </a-table>
+      </div>
+    </a-card>
     <a-card :bordered="false" :headStyle="cardSettings.cardHeadStyle" class="card-detail">
       <template #title>
         <div slot="title" style="width:100%" @click="cardSettings.cardGIS.expand=!cardSettings.cardGIS.expand">GIS地图
@@ -396,14 +397,14 @@ export default defineComponent({
       testHistoryList: [],
       testHistorySummary: [],
       lastTestHistory: {},
-      analyticalAssaysList: [],
+      analyticalAssaysList: [] as any[],
       analyticalAssaysSummary: [],
       historyAssignmentList: [],
       historyAssignmentSummary: [],
       lastHistoryAssignment: {},
       historyAssignmentCount: 0,
       dataIndexList: [] as any[],
-      mapDatas : [] as any
+      mapDatas: [] as any
     });
 
     const loadData = async (id) => {
@@ -416,7 +417,7 @@ export default defineComponent({
         wellData.testHistoryList = data.testHistoryList;
         wellData.testHistorySummary = data.testHistorySummary;
         wellData.lastTestHistory = data.lastTestHistory ?? {};
-        wellData.analyticalAssaysList = data.analyticalAssaysList;
+        wellData.analyticalAssaysList = rowSpan(data.analyticalAssaysList);
         wellData.analyticalAssaysSummary = data.analyticalAssaysSummary;
         wellData.historyAssignmentList = data.historyAssignmentList;
         wellData.historyAssignmentSummary = data.historyAssignmentSummary;
@@ -424,11 +425,11 @@ export default defineComponent({
         wellData.dataIndexList = data.dataIndexList;
         wellData.historyAssignmentCount = wellData.historyAssignmentSummary.reduce((total, it: any) => total + it.testing_num, 0);
         wellData.mapDatas = [{
-          well_id : wellData.dataModel.well_id,
-          well_common_name : data.dataModel.well_common_name,
-          geo_description : data.dataModel.geo_description,
-          x : data.dataModel.well_coordinates_x,
-          y : data.dataModel.well_coordinates_y
+          well_id: wellData.dataModel.well_id,
+          well_common_name: data.dataModel.well_common_name,
+          geo_description: data.dataModel.geo_description,
+          x: data.dataModel.well_coordinates_x,
+          y: data.dataModel.well_coordinates_y
         }];
 
         fileOptions.businessType = wellData.dataIndexList.map(x => x.file_business_type);
@@ -441,6 +442,28 @@ export default defineComponent({
       })
     }
 
+    function rowSpan(list: any[]) {
+      for (let i = 0; i < list.length; i++) {
+        list[i].rowSpan = getRowSpan(list[i].item_code, i + 1, list);
+      }
+      return list;
+    }
+
+    function getRowSpan(itemCode, starIndex, list: any[]) {
+      let rowSpan = 1;
+      for (let i = starIndex; i < list.length; i++) {
+        if (list[i].item_code != itemCode) {
+          break;
+        }
+        if (list[i].rowSpan == 0) {
+          break;
+        }
+        ++rowSpan;
+        list[i].rowSpan = 0;
+      }
+      return list[starIndex - 1].rowSpan == 0 ? 0 : rowSpan;
+    }
+
     const downFile = (record: any) => {
       download(record.storage_path, record.file_name);
     };
@@ -492,20 +515,23 @@ export default defineComponent({
     margin-top: 5px;
   }
 }
-.files-type{
+
+.files-type {
   margin-top: 10px;
 
-  span{
-    color:#8e9ae1;
-    border:1px solid #c6ccf0;
+  span {
+    color: #8e9ae1;
+    border: 1px solid #c6ccf0;
     padding: 3px 5px;
     margin-bottom: 5px;
   }
-  .ant-tag-checkable-checked,.ant-tag-checkable-checked:active{
+
+  .ant-tag-checkable-checked, .ant-tag-checkable-checked:active {
     background-color: #8e9ae1;
-    color:#ffffff;
+    color: #ffffff;
   }
 }
+
 .info-body {
   line-height: 30px;
 

+ 66 - 16
vue/src/views/wellinfo/index.vue

@@ -98,7 +98,7 @@
           </a-row>
           <a-row :gutter="24" class="query-index-row" v-if="showQuery">
             <a-col :span="18">
-              <a-form-item name="spud_date_begin" label="地单元:">
+              <a-form-item name="spud_date_begin" label="地单元:">
                 <a-tree-select
                   v-model:value="formState.unitList"
                   show-search
@@ -113,21 +113,21 @@
           </a-row>
           <a-row :gutter="24" class="query-index-row" v-if="showQuery">
             <a-col :span="6">
-              <a-form-item name="completion_date_begin" label="完井日期:">
+              <a-form-item name="spud_date_begin" label="开钻日期:">
                 <a-range-picker :key="formState.ref_date" format="YYYY-MM-DD" :placeholder="['开始日期', '结束日期']"
-                                @change="(d)=>{onRangeChange(d,'completion_date_begin','completion_date_end')}"/>
+                                @change="(d)=>{onRangeChange(d,'spud_date_begin','spud_date_end')}"/>
               </a-form-item>
             </a-col>
             <a-col :span="6">
-              <a-form-item name="oil_prod_begin_date_begin" label="投产日期:">
+              <a-form-item name="completion_date_begin" label="完井日期:">
                 <a-range-picker :key="formState.ref_date" format="YYYY-MM-DD" :placeholder="['开始日期', '结束日期']"
-                                @change="(d)=>{onRangeChange(d,'oil_prod_begin_date_begin','oil_prod_begin_date_end')}"/>
+                                @change="(d)=>{onRangeChange(d,'completion_date_begin','completion_date_end')}"/>
               </a-form-item>
             </a-col>
             <a-col :span="6">
-              <a-form-item name="spud_date_begin" label="开钻日期:">
+              <a-form-item name="oil_prod_begin_date_begin" label="投产日期:">
                 <a-range-picker :key="formState.ref_date" format="YYYY-MM-DD" :placeholder="['开始日期', '结束日期']"
-                                @change="(d)=>{onRangeChange(d,'spud_date_begin','spud_date_end')}"/>
+                                @change="(d)=>{onRangeChange(d,'oil_prod_begin_date_begin','oil_prod_begin_date_end')}"/>
               </a-form-item>
             </a-col>
           </a-row>
@@ -163,7 +163,7 @@
       <a-spin :spinning="loading">
         <div class="query-index-table" v-if="viewModel=='list'">
           <a-table :columns="filterColumns" :data-source="data" :scroll="{ x:'100%', y: 550 }"
-                   :row-key="record=>record.tempId" :pagination="false"
+                   :row-key="record=>record.tempId" :pagination="false" @resizeColumn="handleResizeColumn"
                    bordered>
             <template #bodyCell="{ column,record }">
               <template v-if="column.dataIndex === 'oil'">
@@ -291,13 +291,26 @@
     </div>
     <a-modal v-model:visible="isShowDoc" title="相关文档" :footer="null" @onCancel="isShowDoc=false">
       <a-input-search
-        v-model:value="docKey"
+        v-model:value="fileOptions.docKey"
         placeholder="查找文档" allow-clear
       />
+      <div class="files-type">
+        <a-checkable-tag color="processing"
+                         :checked="fileOptions.selectBusinessType.length==0||fileOptions.selectBusinessType.length==fileOptions.businessType.length"
+                         @change="() => fileOptions.selectBusinessType=[]">全部
+        </a-checkable-tag>
+        <template v-for="tag in fileOptions.businessType">
+          <a-checkable-tag color="processing"
+                           :checked="fileOptions.selectBusinessType.includes(tag)"
+                           @change="checked => onBusTypeChange(checked,tag)">{{ tag }}
+          </a-checkable-tag>
+        </template>
+      </div>
       <div style="max-height:300px;overflow-y:scroll;margin-top:10px;">
         <a-list item-layout="horizontal" :data-source="docList">
           <template #renderItem="{ item }">
-            <a-list-item v-if="item.file_name.indexOf(docKey)>-1||docKey==''">
+            <a-list-item v-if="(item.file_name.indexOf(fileOptions.docKey)>-1||fileOptions.docKey=='')
+                  &&(fileOptions.selectBusinessType.length==0||fileOptions.selectBusinessType.includes(item.file_business_type))">
               <template #actions>
                 <filePreview :fileName="item.file_name" :filePath="item.storage_path"></filePreview>
                 <a-button type="link" @click="downFile(item)" functioncode="T010501" danger>下载</a-button>
@@ -320,7 +333,7 @@
 </template>
 
 <script lang="ts">
-import {ref, defineComponent, computed, watch} from 'vue';
+import {ref, defineComponent, computed, watch, reactive} from 'vue';
 import type {FormInstance} from 'ant-design-vue';
 import {useRoute} from 'vue-router';
 import {get, postData} from "@/api/common";
@@ -354,7 +367,7 @@ export default defineComponent({
     const viewModel = ref("list");
     const tabsViewStore = useTabsViewStore();
     const docKey = ref('');
-    const docList = ref([]);
+    const docList = ref<any>([]);
     const wellTypeList = ref([{label: "直井", value: "直井"}, {label: "定向井", value: "定向井"}, {label: "分支井", value: "分支井"}]);
     const wellPurposeList = ref([{label: "探井", value: "探井"}, {label: "开发井", value: "开发井"}, {label: "水井", value: "水井"}]);
     const replaceFields = {
@@ -362,6 +375,20 @@ export default defineComponent({
       title: 'label',
       key: 'value',
     };
+    const fileOptions = reactive({
+      docKey: '',
+      businessType: [] as any[],
+      selectBusinessType: [] as any[]
+    })
+
+    function onBusTypeChange(checked, it) {
+      if (checked) {
+        fileOptions.selectBusinessType.push(it);
+      } else {
+        fileOptions.selectBusinessType.splice(fileOptions.selectBusinessType.indexOf(it), 1);
+      }
+      console.log(checked, it);
+    }
 
     const downFile = (record: any) => {
       download(record.storage_path, record.file_name);
@@ -400,9 +427,9 @@ export default defineComponent({
       })
       //拖拽后在显示隐藏列则需要按拖拽后的列排序
       const sortedArray = filterValue.sort((a, b) => {
-        const indexA = filterColumns.value.findIndex(f=>f.key==a.key);
-        const indexB = filterColumns.value.findIndex(f=>f.key==b.key);
-        return (indexA==-1||indexB==-1)?1: indexA - indexB;
+        const indexA = filterColumns.value.findIndex(f => f.key == a.key);
+        const indexB = filterColumns.value.findIndex(f => f.key == b.key);
+        return (indexA == -1 || indexB == -1) ? 1 : indexA - indexB;
       });
       filterColumns.value = [...sortedArray];
       setSettingColoumns();
@@ -590,8 +617,10 @@ export default defineComponent({
       if (selectedNodes.node.parent != undefined || activeTab.value == "1") {
         if (activeTab.value == "1") {
           formState.org_id_a1 = selected.length > 0 ? selectedNodes.node.key : '';
+          formState.orgList = selected.length > 0 ? [formState.org_id_a1] : [];
         } else {
           formState.project_id = selected.length > 0 ? selectedNodes.node.key : '';
+          formState.unitList = selected.length > 0 ? [formState.project_id] : [];
         }
         loadData();
       }
@@ -600,6 +629,8 @@ export default defineComponent({
       get('wellInfo/getWellDocumentList', {wellId: id}).then(data => {
         docList.value = data;
         isShowDoc.value = true;
+        fileOptions.businessType = docList.value.map(x => x.file_business_type);
+        fileOptions.businessType = Array.from(new Set(fileOptions.businessType));
       })
     };
     const labelCol = {style: {width: '100px'}};
@@ -612,9 +643,12 @@ export default defineComponent({
       labelCol, getTdColor, downFile,
       tabChange, onCheckboxChange, treeRef, colspan,
       treeOnExpand,
-      subjectTrees,
+      subjectTrees, fileOptions, onBusTypeChange,
       getSubjectTree, searchTree,
       treeOnSelect, pagination, getSettingColoumns,
+      handleResizeColumn: (w, col) => {
+        col.width = w;
+      }
     };
   },
   created() {
@@ -770,5 +804,21 @@ export default defineComponent({
 .color_level4, .ant-table-tbody > tr > td.color_level4:hover {
   background-color: #B7DBFF !important;
 }
+
+.files-type {
+  margin-top: 10px;
+
+  span {
+    color: #8e9ae1;
+    border: 1px solid #c6ccf0;
+    padding: 3px 5px;
+    margin-bottom: 5px;
+  }
+
+  .ant-tag-checkable-checked, .ant-tag-checkable-checked:active {
+    background-color: #8e9ae1;
+    color: #ffffff;
+  }
+}
 </style>
 

+ 52 - 33
vue/src/views/wellinfo/table.ts

@@ -40,8 +40,8 @@ const dragEnter = (e) => {
       newItems.splice(state.dragIndex, 0, ...group);
       //如果起始为块则需要减两列
       //如果放下为块则要加两列
-      if (!groupList.includes(dragKey)&&!groupList.includes(moveKey)){
-        index = state.dragIndex+ 1;
+      if (!groupList.includes(dragKey) && !groupList.includes(moveKey)) {
+        index = state.dragIndex + 1;
       }
       if (groupList.includes(dragKey)) {
         index = index - 2;
@@ -64,11 +64,11 @@ const dragEnter = (e) => {
       filterColumns.value = newItems;
     }
     filterColumns.value = newItems;
-    localStorage.setItem("userColumns",JSON.stringify(filterColumns.value));
+    localStorage.setItem("userColumns", JSON.stringify(filterColumns.value));
     state.dragIndex = index;
   }
 };
-const onHeaderCell= () => {
+const onHeaderCell = () => {
   return {
     draggable: true,
     onDragstart: dragStart,
@@ -80,8 +80,8 @@ const oilHeader = () => {
     style: {'border-top': '2px solid red'},
   }
 }
-const oilDragHeader:GetComponentProps<any> = () => {
-  return {...oilHeader(),...onHeaderCell()}
+const oilDragHeader: GetComponentProps<any> = () => {
+  return {...oilHeader(), ...onHeaderCell()}
 }
 
 const gasHeader = () => {
@@ -89,16 +89,16 @@ const gasHeader = () => {
     style: {'border-top': '2px solid #009900'},
   }
 }
-const gasDragHeader:GetComponentProps<any> = () => {
-  return {...gasHeader(),...onHeaderCell()}
+const gasDragHeader: GetComponentProps<any> = () => {
+  return {...gasHeader(), ...onHeaderCell()}
 }
 const waterHeader = () => {
   return {
     style: {'border-top': '2px solid #4472C4'},
   }
 }
-const waterDragHeader:GetComponentProps<any> = () => {
-  return {...waterHeader(),...onHeaderCell()}
+const waterDragHeader: GetComponentProps<any> = () => {
+  return {...waterHeader(), ...onHeaderCell()}
 }
 export const getTdColor = (water_cut) => {
   if (water_cut == null || water_cut <= 2) {
@@ -121,7 +121,7 @@ export const formState = reactive({
   well_common_name: '',
   well_id: '',
   well_type: '',
-  well_purpose:'',
+  well_purpose: '',
   spud_date_begin: '',
   spud_date_end: '',
   completion_date_begin: '',
@@ -132,8 +132,8 @@ export const formState = reactive({
   oil_prod_recent_date_end: '',
   org_id_a1: '',
   project_id: '',
-  orgList:[],
-  unitList:[],
+  orgList: [] as any[],
+  unitList: [] as any[],
 });
 export const columns: TableColumnsType = [
   {
@@ -149,17 +149,34 @@ export const columns: TableColumnsType = [
     dataIndex: 'well_common_name',
     key: 'well_common_name',
     width: 120,
+    resizable: true,
     fixed: 'left'
   },
-  {title: '组织机构', dataIndex: 'org_name_a1', key: 'org_name_a1', width: 150,ellipsis:true, customHeaderCell: onHeaderCell},
-  {title: '地质单元', dataIndex: 'project_name', key: 'project_name', width: 120,ellipsis:true,  customHeaderCell: onHeaderCell},
-  {title: '井别', dataIndex: 'well_purpose', key: 'well_purpose', width: 100, customHeaderCell: onHeaderCell},
-  {title: '井型', dataIndex: 'well_type', key: 'well_type', width: 80, customHeaderCell: onHeaderCell},
+  {
+    title: '组织机构',
+    dataIndex: 'org_name_a1',
+    key: 'org_name_a1',
+    width: 150,
+    ellipsis: true,
+    resizable: true,
+    customHeaderCell: onHeaderCell
+  },
+  {
+    title: '地质单元',
+    dataIndex: 'project_name',
+    key: 'project_name',
+    width: 120,
+    ellipsis: true,
+    resizable: true,
+    customHeaderCell: onHeaderCell
+  },
+  {title: '井别', dataIndex: 'well_purpose', key: 'well_purpose', width: 100,resizable: true, customHeaderCell: onHeaderCell},
+  {title: '井型', dataIndex: 'well_type', key: 'well_type', width: 80,resizable: true, customHeaderCell: onHeaderCell},
   {
     title: '开钻日期',
     dataIndex: 'spud_date',
     key: 'spud_date',
-    width: 120,
+    width: 120,resizable: true,
     customHeaderCell: onHeaderCell,
     customRender: ({record}) =>
       record.spud_date == null ? "" : (dayjs(record.spud_date).format('YYYY-MM-DD'))
@@ -168,7 +185,7 @@ export const columns: TableColumnsType = [
     title: '完钻日期',
     dataIndex: 'end_drilling_date',
     key: 'end_drilling_date',
-    width: 120,
+    width: 120,resizable: true,
     customHeaderCell: onHeaderCell,
     customRender: ({record}) =>
       record.end_drilling_date == null ? "" : (dayjs(record.end_drilling_date).format('YYYY-MM-DD'))
@@ -177,43 +194,45 @@ export const columns: TableColumnsType = [
     title: '完井日期',
     dataIndex: 'completion_date',
     key: 'completion_date',
-    width: 120,
+    width: 120,resizable: true,
     customHeaderCell: onHeaderCell,
     customRender: ({record}) =>
-      record.end_drilling_date == null ? "" : (dayjs(record.completion_date).format('YYYY-MM-DD'))
+      record.completion_date == null ? "" : (dayjs(record.completion_date).format('YYYY-MM-DD'))
   },
   {
     title: '投产日期',
-    dataIndex: 'oil_prod_begin_date',
+    dataIndex: 'oil_prod_begin_date',resizable: true,
     key: 'oil_prod_begin_date', width: 120, customHeaderCell: onHeaderCell,
     customRender: ({record}) =>
       record.oil_prod_begin_date == null ? "" : (dayjs(record.oil_prod_begin_date).format('YYYY-MM-DD'))
   },
-  {title: '状态', dataIndex: 'well_state', key: 'well_state', width: 120, customHeaderCell: onHeaderCell},
-  {title: '设计井深(m)', dataIndex: 'budgeted_md', key: 'tempNo', width: 120, customHeaderCell: onHeaderCell},
+  {title: '状态', dataIndex: 'well_state', key: 'well_state',resizable: true, width: 120, customHeaderCell: onHeaderCell},
+  {title: '设计井深(m)', dataIndex: 'budgeted_md', key: 'tempNo', width: 120, resizable: true,customHeaderCell: onHeaderCell},
   {
     title: '含水率',
     dataIndex: 'water_cut',
     key: 'water_cut',
     width: 60,
-    align: 'center',
+    align: 'center',resizable: true,
     customHeaderCell: onHeaderCell,
     customCell: (record) => {
       return {class: getTdColor(record.water_cut)};
-    }
+    },
+    customRender: ({record}) =>
+      record.water_cut == null ? "" : record.water_cut + "%"
   },
   {
     title: '最近月产油量(t)',
     dataIndex: 'oil_prod_mon',
     key: 'oil_prod_mon',
-    width: 120,
+    width: 120,resizable: true,
     customHeaderCell: oilDragHeader
   },
   {
     title: '累产油量(10kt)',
     dataIndex: 'oil_prod_year',
     key: 'oil_prod_year',
-    width: 120,
+    width: 120,resizable: true,
     customHeaderCell: oilHeader
   },
   {title: '累产油量趋势', dataIndex: 'oil', key: 'oil', width: 100, customHeaderCell: oilHeader},
@@ -221,14 +240,14 @@ export const columns: TableColumnsType = [
     title: '最近月产气量(10^4m³)',
     dataIndex: 'gas_prod_mon',
     key: 'gas_prod_mon',
-    width: 170,
+    width: 170,resizable: true,
     customHeaderCell: gasDragHeader
   },
   {
     title: '累产气量(10^8m³)',
     dataIndex: 'gas_prod_year',
     key: 'gas_prod_year',
-    width: 150,
+    width: 150,resizable: true,
     customHeaderCell: gasHeader
   },
   {title: '累产气量趋势', dataIndex: 'gas', key: 'gas', width: 100, customHeaderCell: gasHeader},
@@ -236,14 +255,14 @@ export const columns: TableColumnsType = [
     title: '最近注水量(t)',
     dataIndex: 'water_prod_mon',
     key: 'water_prod_mon',
-    width: 110,
-    customHeaderCell:waterDragHeader
+    width: 110,resizable: true,
+    customHeaderCell: waterDragHeader
   },
   {
     title: '累注水量(10kt)',
     dataIndex: 'water_prod_year',
     key: 'water_prod_year',
-    width: 150,
+    width: 150,resizable: true,
     customHeaderCell: waterHeader
   },
   {title: '累注水量趋势', dataIndex: 'water', key: 'water', width: 100, customHeaderCell: waterHeader},