|
@@ -1,33 +1,58 @@
|
|
|
<template>
|
|
|
<div class="qpage">
|
|
|
-
|
|
|
+ <el-form :inline="true" :model="queryForm" class="query-form-inline" label-width="auto">
|
|
|
+ <el-form-item label="井名">
|
|
|
+ <div style="width:140px;">{{queryForm.wellName}}</div>
|
|
|
+ </el-form-item>
|
|
|
+ <el-form-item label="月份">
|
|
|
+ <el-date-picker
|
|
|
+ v-model="queryForm.month"
|
|
|
+ type="month"
|
|
|
+ placeholder="选择月份"
|
|
|
+ format="YYYY-MM"
|
|
|
+ value-format="YYYY-MM"
|
|
|
+ @change="changeMonthHandler"
|
|
|
+ />
|
|
|
+ </el-form-item>
|
|
|
+
|
|
|
+ <el-form-item label="记录序号">
|
|
|
+ <el-select v-model="queryForm.regressId" placeholder="选择记录序号" @change="changeRegressHandler">
|
|
|
+ <el-option v-for="(regress,index) in regressRecords" :key="regress.regressId" :label="index+1" :value="regress.regressId"/>
|
|
|
+ </el-select>
|
|
|
+ </el-form-item>
|
|
|
+
|
|
|
+ <el-form-item>
|
|
|
+ <el-button type="primary" @click="queryHandle">检索</el-button>
|
|
|
+ <el-button type="success" @click="createNewRegress">创建新分析</el-button>
|
|
|
+ </el-form-item>
|
|
|
+ </el-form>
|
|
|
|
|
|
<div class="qpage-body">
|
|
|
<CrudTable
|
|
|
ref="crudTable"
|
|
|
page-info-opts="total, prev, pager, next"
|
|
|
- url="/analysis/ipr/query"
|
|
|
- :pageSize="20"
|
|
|
+ url="/analysis/ipr/loadIPR"
|
|
|
+ :pageSize="50"
|
|
|
:autoLoad="false"
|
|
|
:cell-class-name="cellClassSet"
|
|
|
:row-key="row=>row.dataId"
|
|
|
style="flex:1;"
|
|
|
+ @loadSuccess="elTabLoadSuccess"
|
|
|
>
|
|
|
<template #toolGroup>
|
|
|
- <!-- <div style="width:140px;float:left;line-height: 32px;font-size:14px;">{{queryForm.wellName}}</div> -->
|
|
|
- <el-button style="width:140px;border:solid 1px #409eff;" plain>{{queryForm.wellName}}</el-button>
|
|
|
- <el-button type="primary" icon="plus" @click="addNewRow">新增</el-button>
|
|
|
- <el-button type="success" icon="select" @click="save">保存</el-button>
|
|
|
+ <!-- <el-button style="width:140px;border:solid 1px #409eff;" plain>{{queryForm.wellName}}</el-button> -->
|
|
|
+ <el-button type="primary" icon="plus" @click="addNewRow">新增样本行</el-button>
|
|
|
+ <!-- <el-button type="success" icon="select" @click="save">保存</el-button> -->
|
|
|
<el-button type="warning" icon="search" @click="openDialog">选择压差数据</el-button>
|
|
|
</template>
|
|
|
<template #tabColumns={indexGenerate}>
|
|
|
- <el-table-column type="selection" width="55" :reserve-selection="true"/>
|
|
|
+ <!-- <el-table-column type="selection" width="55" :reserve-selection="true"/> -->
|
|
|
<el-table-column prop="depthDiff" width="110" align="center">
|
|
|
<template #header>
|
|
|
深度差<br>(m)
|
|
|
</template>
|
|
|
<template #default="scope">
|
|
|
- <el-input-number v-model="scope.row.depthDiff" :controls="false" :precision="2" @change="recordChangeHandler(scope.row)"/>
|
|
|
+ <el-input-number v-model="scope.row.depthDiff" :controls="false" :precision="2" />
|
|
|
</template>
|
|
|
</el-table-column>
|
|
|
<el-table-column prop="flowPressDiff" width="110" align="center">
|
|
@@ -35,7 +60,7 @@
|
|
|
流动压差<br>(KPa)
|
|
|
</template>
|
|
|
<template #default="scope">
|
|
|
- <el-input-number v-model="scope.row.flowPressDiff" :controls="false" :precision="3" @change="recordChangeHandler(scope.row)"/>
|
|
|
+ <el-input-number v-model="scope.row.flowPressDiff" :controls="false" :precision="3" />
|
|
|
</template>
|
|
|
</el-table-column>
|
|
|
<el-table-column prop="liquidYield" width="110" align="center">
|
|
@@ -43,7 +68,7 @@
|
|
|
液量<br>(m^3/d)
|
|
|
</template>
|
|
|
<template #default="scope">
|
|
|
- <el-input-number v-model="scope.row.liquidYield" :controls="false" :precision="3" @change="recordChangeHandler(scope.row)"/>
|
|
|
+ <el-input-number v-model="scope.row.liquidYield" :controls="false" :precision="3" />
|
|
|
</template>
|
|
|
</el-table-column>
|
|
|
<el-table-column prop="oilYield" width="110" align="center">
|
|
@@ -51,7 +76,7 @@
|
|
|
油量<br>(m^3/d)
|
|
|
</template>
|
|
|
<template #default="scope">
|
|
|
- <el-input-number v-model="scope.row.oilYield" :controls="false" :precision="3" @change="recordChangeHandler(scope.row)"/>
|
|
|
+ <el-input-number v-model="scope.row.oilYield" :controls="false" :precision="3" />
|
|
|
</template>
|
|
|
</el-table-column>
|
|
|
<el-table-column prop="waterYield" width="110" align="center">
|
|
@@ -59,7 +84,7 @@
|
|
|
水量<br>(m^3/d)
|
|
|
</template>
|
|
|
<template #default="scope">
|
|
|
- <el-input-number v-model="scope.row.waterYield" :controls="false" :precision="3" @change="recordChangeHandler(scope.row)"/>
|
|
|
+ <el-input-number v-model="scope.row.waterYield" :controls="false" :precision="3" />
|
|
|
</template>
|
|
|
</el-table-column>
|
|
|
|
|
@@ -88,7 +113,7 @@
|
|
|
<el-option label="3阶回归" :value="3"/>
|
|
|
</el-select>
|
|
|
|
|
|
- <el-button type="primary" plain @click="drawCurve"><el-icon><DataLine /></el-icon>绘制图形</el-button>
|
|
|
+ <el-button type="primary" plain @click="drawCurve(true)"><el-icon><DataLine /></el-icon>绘制图形</el-button>
|
|
|
<el-button type="success" plain @click="saveRegressRst"><el-icon><Select /></el-icon>保存回归结果</el-button>
|
|
|
</div>
|
|
|
<div class="ipr-body">
|
|
@@ -131,15 +156,23 @@
|
|
|
|
|
|
const queryForm = reactive({
|
|
|
wellId: null,
|
|
|
- wellName:null
|
|
|
+ wellName:null,
|
|
|
+ month:null,
|
|
|
+ regressId:null
|
|
|
})
|
|
|
|
|
|
+ const regressRecords=ref(null)
|
|
|
+
|
|
|
const iprCanvasBox = reactive({
|
|
|
width:'400px',
|
|
|
height:'300px'
|
|
|
})
|
|
|
|
|
|
const queryHandle=()=>{
|
|
|
+ if(queryForm.regressId==null){
|
|
|
+ ElMessage.error('选择井号、月份、记录号后再继续')
|
|
|
+ return false
|
|
|
+ }
|
|
|
setTimeout(()=>{
|
|
|
crudTable.value.query(queryForm)
|
|
|
},100)
|
|
@@ -151,6 +184,44 @@
|
|
|
|
|
|
})
|
|
|
|
|
|
+ //更改月份后
|
|
|
+ const changeMonthHandler=(month)=>{
|
|
|
+ queryForm.regressId=null
|
|
|
+ iprAPI.loadRegression(queryForm.wellId,queryForm.month).then(resp=>{
|
|
|
+ if(resp.code!=0){
|
|
|
+ ElMessage.error(resp.msg || '加载记录号失败')
|
|
|
+ return
|
|
|
+ }
|
|
|
+ regressRecords.value=resp.data
|
|
|
+
|
|
|
+ if(resp.data && resp.data.length==1){
|
|
|
+ changeRegressHandler(resp.data[0].regressId)
|
|
|
+ }
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+ }).catch(err=>{
|
|
|
+ console.log(err)
|
|
|
+ ElMessage.error('加载记录号出错')
|
|
|
+ })
|
|
|
+ }
|
|
|
+
|
|
|
+ //更改回归记录号后,初始化曲线阶数
|
|
|
+ const changeRegressHandler=(regressId)=>{
|
|
|
+ cleanTabAndCurve()
|
|
|
+ let selRegress=regressRecords.value.filter(itm=>itm.regressId==regressId)
|
|
|
+ regressionConfig.order=selRegress[0].orderNum
|
|
|
+ regressionConfig.ySort=selRegress[0].pressSort
|
|
|
+ queryForm.regressId=regressId
|
|
|
+ queryHandle()
|
|
|
+ }
|
|
|
+
|
|
|
+ //table加载完数据
|
|
|
+ const elTabLoadSuccess=()=>{
|
|
|
+ console.log('elTabLoadSuccess')
|
|
|
+ drawCurve()
|
|
|
+ }
|
|
|
+
|
|
|
const openDialog=()=>{
|
|
|
if(!isReady()){
|
|
|
return
|
|
@@ -187,10 +258,6 @@
|
|
|
return true
|
|
|
}
|
|
|
|
|
|
- const recordChangeHandler=(record)=>{
|
|
|
- record.changeIf=true
|
|
|
- }
|
|
|
-
|
|
|
const addNewRow=(record)=>{
|
|
|
if(!isReady()){
|
|
|
return
|
|
@@ -202,49 +269,31 @@
|
|
|
|
|
|
const delRow=(record,index)=>{
|
|
|
//console.log(record,index)
|
|
|
+ /*
|
|
|
if(!record.dataId){
|
|
|
let ds=crudTable.value.getTableDataSet()
|
|
|
ds.value.splice(index,1)
|
|
|
}
|
|
|
else{
|
|
|
record.delIf=!record.delIf
|
|
|
- }
|
|
|
-
|
|
|
+ }*/
|
|
|
+ let ds=crudTable.value.getTableDataSet()
|
|
|
+ ds.value.splice(index,1)
|
|
|
}
|
|
|
|
|
|
+ const createNewRegress=()=>{
|
|
|
+ let ds=crudTable.value.getTableDataSet()
|
|
|
+ ds.value=[]
|
|
|
+ queryForm.regressId=null
|
|
|
+ }
|
|
|
|
|
|
- const save=()=>{
|
|
|
- if(!isReady()){
|
|
|
- return
|
|
|
- }
|
|
|
- let ds=toRaw(crudTable.value.getTableDataSet().value)
|
|
|
- if(!ds || ds.length==0){
|
|
|
- ElMessage.error('无数据')
|
|
|
- return
|
|
|
- }
|
|
|
- let saveds=[]
|
|
|
- ds.forEach((record,index) => {
|
|
|
- if(record.delIf || record.changeIf){
|
|
|
- record.status=record.delIf?-1:2
|
|
|
- saveds.push(record)
|
|
|
- }
|
|
|
- })
|
|
|
-
|
|
|
- iprAPI.save(JSON.stringify(saveds)).then(resp=>{
|
|
|
- if(resp.code!=0){
|
|
|
- ElMessage.error(resp.msg || '保存数据失败')
|
|
|
- return
|
|
|
- }
|
|
|
- ElMessage.success('保存成功')
|
|
|
- queryHandle()
|
|
|
- }).catch(err=>{
|
|
|
- ElMessage.error('保存数据出错')
|
|
|
- console.log(err)
|
|
|
- })
|
|
|
-
|
|
|
-
|
|
|
+ const cleanTabAndCurve=()=>{
|
|
|
+ let ds=crudTable.value.getTableDataSet()
|
|
|
+ ds.value=[]
|
|
|
+ drawCurve()
|
|
|
}
|
|
|
|
|
|
+
|
|
|
onMounted(()=>{
|
|
|
setTimeout(()=>{
|
|
|
let iprBody=document.querySelector('.ipr-body').getBoundingClientRect()
|
|
@@ -265,7 +314,7 @@
|
|
|
if(newNode!=null && newNode.nodeType=='well'){
|
|
|
queryForm.wellId=newNode.id
|
|
|
queryForm.wellName=newNode.name
|
|
|
- queryHandle()
|
|
|
+ //queryHandle()
|
|
|
}
|
|
|
|
|
|
},{ immediate: true })
|
|
@@ -278,10 +327,13 @@
|
|
|
yUnit:'流动压差(KPa)'
|
|
|
})
|
|
|
let drawSerials=null
|
|
|
- const drawCurve=()=>{
|
|
|
- let selectedds=crudTable.value.getSelectionRows()
|
|
|
- if(selectedds==null || selectedds.length<4){
|
|
|
- ElMessage.error('请在左侧至少选择5条数据再继续')
|
|
|
+ const drawCurve=(tipIf)=>{
|
|
|
+ let iprSamples=toRaw(crudTable.value.getTableDataSet().value)
|
|
|
+ console.log(iprSamples)
|
|
|
+ if(!iprSamples){
|
|
|
+ if(tipIf){
|
|
|
+ ElMessage.error('无样本数据')
|
|
|
+ }
|
|
|
return
|
|
|
}
|
|
|
|
|
@@ -290,7 +342,7 @@
|
|
|
regressionConfig.yUnit=regressionConfig.ySort=='depth'?'深度差(m)':'流动压差(KPa)'
|
|
|
|
|
|
drawSerials=[{name:'液量',datas:[]},{name:'油量',datas:[]},{name:'水量',datas:[]}]
|
|
|
- selectedds.forEach(ds=>{
|
|
|
+ iprSamples.forEach(ds=>{
|
|
|
if(ds.liquidYield!=null){
|
|
|
drawSerials[0].datas.push([ds.liquidYield,ds[pressKey]])
|
|
|
}
|
|
@@ -308,7 +360,7 @@
|
|
|
/*回归曲线绘制-end*/
|
|
|
|
|
|
const saveRegressRst=()=>{
|
|
|
- let saveData={wellId:queryForm.wellId,pressSort:regressionConfig.ySort}
|
|
|
+ let saveData={regressId:queryForm.regressId,wellId:queryForm.wellId,pressSort:regressionConfig.ySort,orderNum:regressionConfig.order}
|
|
|
drawSerials.forEach(itm=>{
|
|
|
if(itm.name=='液量'){
|
|
|
saveData['liquidExpression']=itm.regression.expression
|
|
@@ -325,7 +377,9 @@
|
|
|
})
|
|
|
//console.log(drawSerials[0].regression.parameter)
|
|
|
|
|
|
- iprAPI.addRegression(saveData).then(resp=>{
|
|
|
+ saveData['iprs']=toRaw(crudTable.value.getTableDataSet().value)
|
|
|
+
|
|
|
+ iprAPI.saveRegression(saveData).then(resp=>{
|
|
|
if(!resp || resp.code!=0){
|
|
|
ElMessage.error(resp.msg || '保存操作失败了')
|
|
|
return
|
|
@@ -345,7 +399,7 @@
|
|
|
}
|
|
|
|
|
|
.qpage-body{
|
|
|
- height: calc(100% - 5px);
|
|
|
+ height: calc(100% - 60px);
|
|
|
display: flex;
|
|
|
flex-flow: row nowrap;
|
|
|
}
|