瀏覽代碼

井站维护,增加井的参数维护

chenwen 2 年之前
父節點
當前提交
f33d59c880
共有 6 個文件被更改,包括 361 次插入6 次删除
  1. 7 0
      src/api/paramMgr.js
  2. 27 0
      src/api/wellParam.js
  3. 2 2
      src/pages/base/WellEdit.vue
  4. 164 0
      src/pages/base/WellParam.vue
  5. 157 0
      src/pages/base/WellParamEdit.vue
  6. 4 4
      src/pages/base/station.vue

+ 7 - 0
src/api/paramMgr.js

@@ -24,4 +24,11 @@ api.del = (data) => {
 	    });
 }
 
+api.loadAll = () =>{
+	return request({
+	    url: '/base/parammgr/loadAll',
+	    method: 'get'
+	});
+}
+
 export  default api

+ 27 - 0
src/api/wellParam.js

@@ -0,0 +1,27 @@
+import request from '../utils/request';
+
+const api={}
+
+//查询接口由表格组件自带
+
+api.save = (data) => {
+		let url='/base/wellparam/add'
+		if(data.paramId){
+			url='/base/wellparam/update'
+		}
+	    return request({
+	        url: url,
+	        method: 'post',
+			params:  data
+	    });
+}
+
+api.del = (data) => {
+	    return request({
+	        url: '/base/wellparam/delete',
+	        method: 'post',
+			params:  data
+	    });
+}
+
+export  default api

+ 2 - 2
src/pages/base/WellEdit.vue

@@ -179,7 +179,7 @@
 	const initUpdate=async (id)=>{
 		isUpdateAction.value=true
 		if(!initFormDone){
-			console.log('start init form')
+			//console.log('start init form')
 			try{
 				await initForm()
 			}
@@ -203,7 +203,7 @@
 	watch(
 			()=>props.wellId,
 			(newVal, oldVal)=>{
-				console.log(newVal+":"+oldVal)
+				//console.log(newVal+":"+oldVal)
 				newVal?initUpdate(newVal):initAdd()
 			}
 			,{ immediate: true }

+ 164 - 0
src/pages/base/WellParam.vue

@@ -0,0 +1,164 @@
+<template>
+	<div class="qpage">
+		
+		
+		<div class="qpage-body">
+			<CrudTable 
+			ref="crudTable"
+			page-info-opts=""
+			url="/base/wellparam/loadByWell"
+			:pageSize="60"
+			:autoLoad="false"
+			>
+			  <template #toolGroup>
+				  <el-button type="primary" icon="plus" @click="openEditHandle()">新增</el-button>
+				 
+			  </template>
+			  <template #tabColumns={indexGenerate}>
+				  <el-table-column type="index" :index="indexGenerate" label="序号" width="60" align="center"/>
+				  <el-table-column prop="paramName" label="参数名" width="150" />
+				  <el-table-column prop="paramCode" label="参数编码" width="120" />
+				  <el-table-column prop="paramUnit" label="计量单位" width="120" />
+				  <el-table-column prop="unitScale" label="换算比例" width="160" />
+				  <el-table-column prop="format" label="格式化" width="160" />
+				  
+				  <el-table-column prop="oper" label="操作" width="160" fixed="right">
+				  					<template #default="scope">
+				  						<div class="tool-column">
+				  							<el-button type="primary" icon="edit" size="small" @click="openEditHandle(scope.row)">编辑</el-button>
+				  							
+				  							<el-button type="warning" icon="delete" size="small" @click="delHandle(scope.row)">删除</el-button>
+				  						</div>
+				  					    
+				  					</template>
+				  </el-table-column>
+			  </template>
+				
+			</CrudTable>
+		</div>
+		
+		
+		<el-dialog v-model="editDialogShow" title="编辑" :close-on-click-modal="false"
+		:destroy-on-close="true"
+		>
+			<WellParamEdit ref="editWin" :record="crtEditRecord"></WellParamEdit>
+			<template #footer>
+			    <span class="dialog-footer">
+			        <el-button @click="beforeCloseHandle('cancel')">取消</el-button>
+			        <el-button type="primary" @click="beforeCloseHandle('sure')">
+			         确定
+			        </el-button>
+			    </span>
+			</template>
+		</el-dialog>
+	</div>
+</template>
+
+<script setup>
+	import {reactive,ref,useAttrs,watch} from 'vue'
+	import CrudTable from "../../components/crudtable/CrudTable.vue"
+	import WellParamEdit from "./WellParamEdit.vue"
+	import wellParamAPI from "../../api/wellParam.js"
+	import {ElMessageBox,ElMessage} from 'element-plus'
+	
+	const attrs = useAttrs()
+	
+	const crudTable=ref(null)
+	
+
+	
+	const editDialogShow=ref(false)
+	
+	const crtEditRecord=ref(null)
+	
+	let oldQueryParam=null
+	
+	const queryHandle=(queryParam)=>{
+		queryParam=queryParam||oldQueryParam
+		if(crudTable.value==null){
+			setTimeout(()=>{crudTable.value.query(queryParam)},100)
+		}
+		else{
+			crudTable.value.query(queryParam)
+		}
+		oldQueryParam=queryParam
+	}
+	
+	
+	watch(
+			()=>attrs['wellId'],
+			(newVal, oldVal)=>{
+				queryHandle({wellId:newVal})
+			}
+			,{ immediate: true }
+		)
+	
+	
+	
+	const delHandle=(record)=>{
+		ElMessageBox.confirm(
+			'确定要删除该记录吗?',
+			'操作确认',
+			{
+				confirmButtonText:'确定',
+				cancelButtonText:'取消',
+				type: 'warning'
+			}
+		).then(()=>{
+			wellParamAPI.del({paramId:record.paramId}).then(resp=>{
+				if(resp.code!=0){
+					ElMessage.error(resp.msg)
+					return
+				}
+				ElMessage.success('操作成功')
+				queryHandle()
+				
+			}).catch(err=>{
+				ElMessage.error(err||'操作失败')
+			})
+		}).catch(()=>{
+			console.log('cancel del')
+		})
+	}
+	
+	const editWin=ref(null)
+	
+	const openEditHandle=(record)=>{
+		editDialogShow.value=true
+		crtEditRecord.value=record||{wellId:attrs['wellId']}
+	}
+	
+	const beforeCloseHandle=async (tag)=>{
+		if(tag==='cancel'){
+			editDialogShow.value=false
+		}
+		else{
+			
+			try{
+				await editWin.value.submitForm()
+				editDialogShow.value=false
+				queryHandle()
+			}
+			catch(err){
+				console.log(err)
+			}
+			
+		}
+	}
+	
+	
+	
+	
+	
+	
+	
+	
+</script>
+
+<style scoped>
+	@import url('../../assets/css/qpage.css');
+	
+	.edit-form-item{
+		width:260px;
+	}
+</style>

+ 157 - 0
src/pages/base/WellParamEdit.vue

@@ -0,0 +1,157 @@
+<template>
+	<div class="edit-page">
+		<el-form :model="formModel" ref="formcomp"  label-position="right" label-width="auto" :inline="false" :rules="rules" :inline-message="true">
+		      
+			  <el-form-item label="参数名" prop="paramName">
+			    <el-input v-model="formModel.paramName" autocomplete="off" placeholder="请输入参数名" class="edit-form-item" clearable/>
+			  </el-form-item>
+		      
+			 <el-form-item label="参数编码" prop="paramCode">
+				<el-select v-model="formModel.paramCode"  placeholder="选择参数编码" class="edit-form-item">
+					<el-option
+				       v-for="item in paramCodeOpts"
+				       :key="item.paramCode"
+				       :label="item.paramCode+'【'+item.paramName+'】'"
+				       :value="item.paramCode"
+				     />
+				</el-select>
+			 </el-form-item>
+			 
+			 <el-form-item label="计量单位" prop="paramUnit">
+			   <el-input v-model="formModel.paramUnit" autocomplete="off" placeholder="请输入计量单位" class="edit-form-item" clearable/>
+			 </el-form-item>
+			  
+			 <el-form-item label="换算比例">
+			   <el-input v-model="formModel.unitScale" autocomplete="off" placeholder="请输入换算比例" class="edit-form-item" clearable onkeyup="value=value.replace(/^\D*(\d*(?:\.\d{0,3})?).*$/g, '$1')"/>
+			 </el-form-item>
+			 
+			 <el-form-item label="格式化" prop="format">
+			   <el-input v-model="formModel.format" autocomplete="off" placeholder="请输入格式化串" class="edit-form-item" clearable/>
+			 </el-form-item>
+			  
+			
+		</el-form>
+	</div>
+</template>
+
+<script setup>
+	import {reactive,ref,toRaw,onMounted} from 'vue'
+	import wellParamAPI from "../../api/wellParam.js"
+	import paramMgrAPI from "../../api/paramMgr.js"
+	import {ElMessageBox,ElMessage} from 'element-plus'
+	
+	const formModel = reactive({
+	  paramId:'',
+	  wellId:'',
+	  paramName: '',
+	  paramCode:'',
+	  paramUnit:'',
+	  unitScale:null,
+	  format:''
+	})
+	
+	const props=defineProps({
+		record:Object
+	})
+	
+	const formcomp = ref(null);
+	
+	const rules =reactive({
+		paramName:[
+			{required:true,message:'参数名还未填写',trigger:'blur'},
+			{ min: 1, max: 20, message: '参数名长度应该为1-20', trigger: 'blur' }
+			],
+		paramCode:[
+			{required:true,message:'参数编码还未选择',trigger:'blur'},
+			
+			],
+		paramUnit:[
+			{required:true,message:'计量单位还未填写',trigger:'blur'},
+			{ min: 1, max: 32, message: '计量单位长度应该为1-32', trigger: 'blur' }
+			],
+		format:[
+			{pattern:/^#*0(\.[0#]+)?$/,message: '格式化串不符合规范如:#0.00', trigger: 'blur' }
+		]
+	})
+	
+	onMounted(async ()=>{
+		try{
+			await initForm()
+			if(props.record){
+				let {paramId,wellId,paramCode,paramName,paramUnit,unitScale,format}=props.record
+				Object.assign(formModel,{paramId,wellId,paramCode,paramName,paramUnit,unitScale,format})
+			}
+		}
+		catch(err){
+			console.log('init form error')
+		}
+		
+	})
+	
+	
+	let initFormDone=false
+	
+	const paramCodeOpts=ref([])
+	
+	const initForm=async ()=>{
+		try{
+			let resp=await paramMgrAPI.loadAll()
+			if(resp.code!=0){
+				return
+			}
+			paramCodeOpts.value=resp.data
+			initFormDone=true
+			
+			return Promise.resolve('ok')
+		}
+		catch(err){
+			return Promise.reject('err')
+		}
+	}
+	
+	
+	const submitForm=async ()=>{
+		let validateRst=false
+		try{
+			validateRst = await formcomp.value.validate()
+		}
+		catch(err){
+			ElMessage.error("请按要求填写数据");
+			console.log(err)
+			return Promise.reject('invalidate')
+		}
+		
+		if(validateRst){  //验证通过,准备提交数据
+		  try{
+			   let resp =await wellParamAPI.save(toRaw(formModel))
+			   if(resp.code!=0){
+			   	ElMessage.error(resp.msg)
+			   	return Promise.reject(resp.msg)
+			   }
+			   ElMessage.success('操作成功')
+			   return Promise.resolve('ok')
+			}
+			catch (e) {
+				ElMessage.error(e||'操作失败')
+				return Promise.reject('操作失败')
+			}
+		}
+		
+		
+		
+	}
+	
+	defineExpose({
+		submitForm
+	})
+</script>
+
+<style scoped>
+	/* .el-form--inline.el-form--label-top{
+		justify-content: space-between;
+	} */
+	.edit-form-item{
+		width:260px;
+	}
+	
+</style>

+ 4 - 4
src/pages/base/station.vue

@@ -15,10 +15,10 @@
 			</transition>
 		</template>
 		
-		<template v-else-if="crtcomp[1]=='ParamMgr'">
+		<template v-else-if="crtcomp[1]=='WellParam'">
 			<el-divider content-position="left">采集参数定义</el-divider>
 			<transition name="fade">
-				<component :is="ParamMgr" :wellId="currentTreeNode.id"/>
+				<component :is="WellParam" :wellId="currentTreeNode.id"/>
 			</transition>
 		</template>
 		
@@ -33,7 +33,7 @@
 	import { useHomeStore } from "../../store/home.js"
 	import OrgEdit from './OrgEdit.vue'
 	import WellEdit from './WellEdit.vue'
-	import ParamMgr from './ParamMgr.vue'
+	import WellParam from './WellParam.vue'
 	
 	const store=useHomeStore()
 	const  {currentTreeNode} = storeToRefs(store)
@@ -46,7 +46,7 @@
 			crtcomp.value=newNode&&newNode.typeEnd?['OrgEdit','WellEdit']:['OrgEdit']
 		}
 		else{
-			crtcomp.value=['WellEdit','ParamMgr']
+			crtcomp.value=['WellEdit','WellParam']
 		}
 	},{ immediate: true })
 </script>