Bladeren bron

井筒-优化

xiaoqiao 10 maanden geleden
bovenliggende
commit
c23868722d

+ 3 - 1
src/main/resources/mapping/cquery/WellInfoCQuery.xml

@@ -56,7 +56,7 @@
         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,
+        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,
@@ -262,6 +262,7 @@
         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">
@@ -283,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

+ 21 - 14
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,25 +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=[
+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},
@@ -69,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}
 ]

+ 65 - 39
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,7 +87,8 @@
           <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_fmt }}</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;
 

+ 65 - 15
vue/src/views/wellinfo/index.vue

@@ -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},