Browse Source

产层分析模块调整(按新的样本数据-回归结果要求)

chenwen 1 năm trước cách đây
mục cha
commit
ab9b2025e8
3 tập tin đã thay đổi với 144 bổ sung61 xóa
  1. 27 0
      src/api/ipr.js
  2. 3 1
      src/components/crudtable/CrudTable.vue
  3. 114 60
      src/pages/analysis/IPR.vue

+ 27 - 0
src/api/ipr.js

@@ -21,4 +21,31 @@ api.addRegression = (sendData)=>{
 	});
 }
 
+api.loadRegression=(wellId,month)=>{
+	return request({
+	    url: '/analysis/ipr/loadRegression',
+	    method: 'post',
+		data:  {wellId,month}
+	});
+}
+
+api.loadIPR=(regressId)=>{
+	return request({
+	    url: '/analysis/ipr/loadIPR',
+	    method: 'post',
+		data:  {regressId}
+	});
+}
+
+api.saveRegression = (jsonData)=>{
+	return request({
+	    url: '/analysis/ipr/saveRegression',
+	    method: 'post',
+		data:  jsonData,
+		headers:{
+			'Content-Type':'application/json'
+		}
+	});
+}
+
 export  default api

+ 3 - 1
src/components/crudtable/CrudTable.vue

@@ -38,6 +38,8 @@
 	
 	const $eltable=ref(null)
 	
+	const emit=defineEmits(['loadSuccess'])
+	
 	const props=defineProps({
 		pageSize:Number,
 		pageSizeOpts:{
@@ -148,7 +150,6 @@
 		isLoading.value=true
 		try{
 			let resp=await request({url: props.url,method: 'post',data: getReqParam(queryParams)})
-			
 			isLoading.value=false
 			//console.log(resp)
 			pagination.watchReload=true				
@@ -159,6 +160,7 @@
 				pagination.totalRows=resp.data.totalRow
 				pagination.pageCount = resp.data.pageCount
 				_queryParam=queryParams||{}
+				emit('loadSuccess',resp)
 				
 				return 0
 			}

+ 114 - 60
src/pages/analysis/IPR.vue

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