Преглед на файлове

增加井站关联基本功能,部分模块的微调

chenwen преди 2 години
родител
ревизия
f148b5f540
променени са 8 файла, в които са добавени 418 реда и са изтрити 39 реда
  1. 44 0
      src/api/station.js
  2. 5 7
      src/components/Header.vue
  3. 26 25
      src/components/Sidetree.vue
  4. 190 0
      src/pages/base/OrgEdit.vue
  5. 125 0
      src/pages/base/WellEdit.vue
  6. 23 2
      src/pages/base/station.vue
  7. 2 2
      src/pages/sys/SortCode.vue
  8. 3 3
      src/pages/sys/UserEdit.vue

+ 44 - 0
src/api/station.js

@@ -0,0 +1,44 @@
+import request from '../utils/request';
+
+const api={}
+
+api.loadSubNodes = (data) => {
+    return request({
+        url: '/station/loadSideTreeSubNodes',
+        method: 'post',
+		params:data
+    });
+};
+
+api.loadOrgTree = () => {
+    return request({
+        url: '/org/loadOrgTree',
+        method: 'post'
+    });
+};
+
+api.save = (data) => {
+	    return request({
+	        url: '/org/update',
+	        method: 'post',
+			params:  data
+	    });
+}
+	
+api.add = (data) => {
+	    return request({
+	        url: '/org/add',
+	        method: 'post',
+			params:  data
+	    });
+}
+	
+api.del = (data) => {
+	    return request({
+	        url: '/org/delete',
+	        method: 'post',
+			params:  data
+	    });
+}
+
+export  default api

+ 5 - 7
src/components/Header.vue

@@ -33,13 +33,11 @@
                 </div>
                
                 <!-- 用户名下拉菜单 -->
-                <el-dropdown class="user-name" trigger="click" @command="handleCommand">
+                <el-dropdown class="user-name"  @command="handleCommand">
 					<div>
-						<el-tooltip effect="dark" :content="app.takeSetting('usName')">
-							<div class="el-dropdown-link">
-								{{app.takeSetting("usName")}}
-							</div>
-						</el-tooltip>
+						<div class="el-dropdown-link">
+							{{app.takeSetting("usName")}}
+						</div>
 						<el-icon  color="#ffffff" :size="16"><CaretBottom/></el-icon>
 					</div>
                     
@@ -218,7 +216,7 @@
 
 .header-right {
     float: right;
-    padding-right: 5px;
+    padding-right: 15px;
 	
 }
 .header-user-con {

+ 26 - 25
src/components/Sidetree.vue

@@ -11,20 +11,23 @@
 		</div>
 		<div class="side-body">
 			<el-scrollbar style="height:100%;padding:5px;box-sizing: border-box;">
-				<el-tree :data="sysWells" :props="defaultProps" :highlight-current="true" class="tree" v-show="systreeShow" @node-click="selWellHandle">
+				<el-tree :load="loadSysTree" :props="defNodeProps" lazy  :highlight-current="true" class="tree" v-show="systreeShow" @node-click="selWellHandle">
 					    <template #default="{ node, data }">
 					        <span class="custom-tree-node">
-							  <template v-if="node.isLeaf">
-								 <el-icon><help-filled/></el-icon><span style="margin-left:2px;">{{ node.label }}</span> 
+							  <template v-if="node.nodeType=='well'">
+									<el-icon><help-filled/></el-icon><span style="margin-left:2px;">{{ node.label }}</span> 
+							  </template>
+							  
+							  <template v-else>
+							  		<el-icon><home-filled/></el-icon><span style="margin-left:2px;">{{ node.label }}</span> 
 							  </template>
 					          
-							  <span v-else>{{ node.label }}</span>
 					          
 					        </span>
 					    </template>
 				</el-tree>
 				
-				<el-tree :data="customWells" :props="defaultProps" :highlight-current="true" class="tree" v-show="!systreeShow">
+				<el-tree :data="customWells" :props="defNodeProps" :highlight-current="true" class="tree" v-show="!systreeShow">
 					    <template #default="{ node, data }">
 					        <span class="custom-tree-node">
 							  <template v-if="node.isLeaf">
@@ -44,11 +47,11 @@
 </template>
 
 <script setup>
-	import {ref} from 'vue'
+	import {ref,toRaw} from 'vue'
 	import {storeToRefs} from 'pinia'
 	import {useHomeStore} from "../store/home.js"
-	import sidetreeAPI from "../api/sidetree.js"
-
+	import stationAPI from "../api/station.js"
+	import utils from "../utils/utils.js"
 
 	const store = useHomeStore()
 	const {collapse,systreeShow} = storeToRefs(store)
@@ -59,29 +62,27 @@
 	
 	
 	
-	const defaultProps = {
+	const defNodeProps = {
 		children: 'children',
-		label: 'label',
-		isLeaf:'leaf'
+		label: 'name',
+		isLeaf:'isLeaf'
 	}
 	
-	const sysWells = ref([])
+	const loadSysTree=(node,resolve)=>{
+		let srcNode=toRaw(node.data)
+		srcNode=srcNode==null||srcNode.length==0?null:srcNode
+		stationAPI.loadSubNodes(srcNode).then((resp) => {
+			if(resp.code===0&&resp.data){
+				resolve(resp.data)
+			}
+		})
+	}
+	
+	
+	
 	
-	const customWells = ref([])
 	
-	const getData = () => {
-	    sidetreeAPI.fetchData({}).then((res) => {
-	        sysWells.value=res
-	    });
-	};
-	getData();
 	
-	const getCustomData = () => {
-	    sidetreeAPI.fetchCustomData({}).then((res) => {
-	        customWells.value=res
-	    });
-	};
-	getCustomData();
 	
 	const selWellHandle = (nodeData, node, nodeComp,evn) =>{
 		console.log(nodeData)

+ 190 - 0
src/pages/base/OrgEdit.vue

@@ -0,0 +1,190 @@
+<template>
+	<div class="edit-page">
+		<el-form :model="formModel" ref="formcomp"  label-position="right" label-width="100" :inline="false" :rules="rules" :inline-message="true">
+		    <el-row :gutter="20">
+				<el-col :sm="24" :md="12" :lg="8">
+					<el-form-item label="单位名称" prop="orgName">
+						<el-input v-model="formModel.orgName" autocomplete="off" placeholder="请输入单位名称" class="edit-form-item" clearable/>
+					</el-form-item>
+				</el-col>
+				<el-col :sm="24" :md="12" :lg="8">
+					<el-form-item label="上级单位名称">
+					  <el-tree-select v-model="formModel.superId" :data="orgTreeNodes" :props="orgNodeProps" :render-after-expand="false" check-strictly  style="width:100%;"/>
+					</el-form-item>
+				</el-col>
+				<el-col :sm="24" :md="12" :lg="8">
+					<el-form-item label="多井巡查模板">
+						<el-input v-model="formModel.multiPatrolTemp" autocomplete="off" placeholder="请选择多井巡查模板" class="edit-form-item" clearable/>
+					</el-form-item>
+				</el-col>
+				<el-col :sm="24" :md="12" :lg="8">
+					<el-form-item label="显示序号">
+						<el-input-number v-model="formModel.displayNum" :min="1" :max="10000"/>
+					</el-form-item>
+				</el-col>
+								
+				<el-col :span="24">
+					<el-form-item label=" ">
+						<el-button type="primary" @click="saveSubmit">保存</el-button>
+						<el-button type="success" @click="addSubmit">新增</el-button>
+						<el-button  @click="delSubmit">删除</el-button>
+					</el-form-item>
+				</el-col>
+			</el-row>
+			  
+		      
+			 
+			 
+			
+			  
+			 
+			  
+			
+		</el-form>
+	</div>
+</template>
+
+<script setup>
+	import {reactive,ref,toRaw,onMounted} from 'vue'
+	import stationAPI from "../../api/station.js"
+	import {ElMessageBox,ElMessage} from 'element-plus'
+	import utils from "../../utils/utils.js"
+	
+	const props=defineProps({
+		record:Object
+	})
+	
+	const orgTreeNodes = ref([])
+	
+	const orgNodeProps = {
+		children: 'children',
+		label: 'name',
+		value:'id'
+	}
+	
+	const formModel = reactive({
+	  orgId:'',
+	  orgName: '',
+	  superId:'',
+	  superName:'',
+	  displayNum:1,
+	  multiPatrolTemp:''
+	})
+	
+	const formcomp = ref(null);
+	
+	const rules =reactive({
+		orgName:[
+			{required:true,message:'单位名还未填写',trigger:'blur'},
+			{ min: 1, max: 20, message: '单位名长度应该为1-20', trigger: 'blur' }
+			],
+		superId:[
+			{required:true,message:'上级单位名还未选择',trigger:'blur'}
+			]
+	})
+	
+	
+	onMounted(()=>{
+		loadOrgTree()
+	})
+	
+	const loadOrgTree=()=>{
+		let converDef={id:'id',name:'name',superId:'superId',superName:'superName',children:'children'}
+		stationAPI.loadOrgTree().then((resp) => {
+			console.log(resp)
+			if(resp.code===0){
+				let treeDatas=utils.list2Tree(resp.data||[],converDef)
+				console.log(treeDatas['topNodes'])
+				orgTreeNodes.value=treeDatas['topNodes']
+			}
+			else{
+				console.log(resp.msg)
+			}
+		   
+		});
+	}
+	
+	const saveSubmit=()=>{
+		formcomp.value.validate((valid) => {
+			if(!valid){
+				ElMessage.error("请按要求填写数据");
+				return
+			}
+			stationAPI.save(toRaw(formModel)).then(resp=>{
+				if(resp.code!=0){
+					ElMessage.error(resp.msg)
+					return
+				}
+				ElMessage.success('操作成功')
+				
+				
+			}).catch(err=>{
+				ElMessage.error(err||'操作失败')
+			})
+		})
+	}
+	
+	const addSubmit=()=>{
+		formcomp.value.validate((valid) => {
+			if(!valid){
+				ElMessage.error("请按要求填写数据");
+				return
+			}
+			stationAPI.add(toRaw(formModel)).then(resp=>{
+				if(resp.code!=0){
+					ElMessage.error(resp.msg)
+					return
+				}
+				ElMessage.success('操作成功')
+				//clearForm()
+				
+				
+			}).catch(err=>{
+				ElMessage.error(err||'操作失败')
+			})
+		})
+	}
+	
+	const delSubmit=()=>{
+		if(!formModel.orgId){
+			ElMessage.error("请先选择一个组织机构,再继续");
+			return;
+		}
+		ElMessageBox.confirm(
+			'确定要删除吗?',
+			'操作确认',
+			{
+				confirmButtonText:'确定',
+				cancelButtonText:'取消',
+				type: 'warning'
+			}
+		).then(()=>{
+			stationAPI.del({orgId:formModel.orgId}).then(resp=>{
+				if(resp.code!=0){
+					ElMessage.error(resp.msg)
+					return
+				}
+				ElMessage.success('操作成功')
+				clearForm()
+				
+				
+			}).catch(err=>{
+				ElMessage.error(err||'操作失败')
+			})
+			
+		}).catch(()=>{
+			console.log('cancel del')
+		})
+	}
+	
+	const clearForm=()=>{
+		let [superName,superId,orgId,orgName,displayNum,multiPatrolTemp]=[null,null,null,null,null,null]
+		Object.assign(formModel,{superName,superId,orgId,orgName,displayNum,multiPatrolTemp})
+	}
+</script>
+
+<style scoped>
+	.el-col{
+		height:60px;
+	}
+</style>

+ 125 - 0
src/pages/base/WellEdit.vue

@@ -0,0 +1,125 @@
+<template>
+	<div class="edit-page">
+		<el-form :model="formModel" ref="formcomp"  label-position="right" label-width="100" :inline="false" :rules="rules" :inline-message="true">
+		    <el-row :gutter="20">
+				<el-col :sm="24" :md="12" :lg="8">
+					<el-form-item label="井名" prop="wellName">
+						<el-input v-model="formModel.wellName" autocomplete="off" placeholder="请输入井名" class="edit-form-item" clearable/>
+					</el-form-item>
+				</el-col>
+				<el-col :sm="24" :md="12" :lg="8">
+					<el-form-item label="井型">
+						<el-select v-model="formModel.wellType" placeholder="请选择井型" style="width:100%">
+						    <el-option
+						      v-for="item in wellTypeOpts"
+						      :key="item.codeId"
+						      :label="item.codeName"
+						      :value="item.codeId"
+						    />
+						</el-select>
+					</el-form-item>
+				</el-col>
+				<el-col :sm="24" :md="12" :lg="8">
+					<el-form-item label="井别">
+						<el-select v-model="formModel.wellSort" placeholder="请选择井别" style="width:100%">
+						    <el-option
+						      v-for="item in wellSortOpts"
+						      :key="item.codeId"
+						      :label="item.codeName"
+						      :value="item.codeId"
+						    />
+						</el-select>
+					</el-form-item>
+				</el-col>
+				<el-col :sm="24" :md="12" :lg="8">
+					<el-form-item label="经度">
+					  <el-input v-model="formModel.lng" autocomplete="off" placeholder="请输入经度" class="edit-form-item" clearable/>
+					</el-form-item>
+				</el-col>
+				<el-col :sm="24" :md="12" :lg="8">
+					<el-form-item label="纬度">
+					  <el-input v-model="formModel.lat" autocomplete="off" placeholder="请输入纬度" class="edit-form-item" clearable/>
+					</el-form-item>
+				</el-col>
+				<el-col :sm="24" :md="12" :lg="8">
+					<el-form-item label="巡查模板" prop="patrolStdTemp">
+					  <el-input v-model="formModel.patrolStdTemp" autocomplete="off" placeholder="请选择巡查模板" class="edit-form-item" clearable/>
+					</el-form-item>
+				</el-col>
+				<el-col :span="24">
+					<el-form-item label="地理位置">
+					  <el-input v-model="formModel.locate" autocomplete="off" placeholder="请输入地理位置" class="edit-form-item" clearable/>
+					</el-form-item>
+				</el-col>
+				<el-col :span="24">
+					<el-form-item label=" ">
+						<el-button type="primary" @click="saveSubmit">保存</el-button>
+						<el-button type="success" @click="addSubmit">新增</el-button>
+						<el-button  @click="delSubmit">删除</el-button>
+					</el-form-item>
+				</el-col>
+			</el-row>
+			  
+		      
+			 
+			 
+			
+			  
+			 
+			  
+			
+		</el-form>
+	</div>
+</template>
+
+<script setup>
+	import {reactive,ref,toRaw,onMounted} from 'vue'
+	import paramMgrAPI from "../../api/paramMgr.js"
+	import {ElMessageBox,ElMessage} from 'element-plus'
+	
+	const props=defineProps({
+		record:Object
+	})
+	
+	const formModel = reactive({
+	  wellId:'',
+	  wellName: '',
+	  wellSort:'',
+	  wellType:'',
+	  lng:'',
+	  lat:'',
+	  locate:'',
+	  patrolStdTemp:''
+	})
+	
+	const formcomp = ref(null);
+	
+	const rules =reactive({
+		wellName:[
+			{required:true,message:'参数名还未填写',trigger:'blur'},
+			{ min: 1, max: 20, message: '参数名长度应该为1-20', trigger: 'blur' }
+			],
+		patrolStdTemp:[
+			{required:true,message:'参数编码还未填写',trigger:'blur'},
+			]
+	})
+	
+	const wellSortOpts=ref([])
+	const wellTypeOpts=ref([])
+	
+	
+	const saveSubmit=()=>{}
+	
+	const addSubmit=()=>{}
+	
+	const delSubmit=()=>{}
+	
+	
+</script>
+
+<style scoped>
+	.el-col{
+		height:60px;
+	}
+	
+</style>

+ 23 - 2
src/pages/base/station.vue

@@ -1,8 +1,29 @@
 <template>
+	<div class="page-container">
+		<transition name="fade">
+			<component :is="OrgEdit"/>
+		</transition>
+		
+		<el-divider content-position="left">增加新井</el-divider>
+		
+		
+		<transition name="fade">
+			<component :is="WellEdit"/>
+		</transition>
+	</div>
+	
 </template>
 
-<script>
+<script setup>
+	import {reactive,ref,toRaw,onMounted} from 'vue'
+	import OrgEdit from './OrgEdit.vue'
+	import WellEdit from './WellEdit.vue'
+	
+	const crtcomp=ref(null)
 </script>
 
-<style>
+<style scoped>
+	.page-container{
+		padding:20px 50px;
+	}
 </style>

+ 2 - 2
src/pages/sys/SortCode.vue

@@ -96,7 +96,7 @@
 	const rules =reactive({
 		codeName:[
 			{required:true,message:'编码名还未填写',trigger:'blur'},
-			{ min: 3, max: 20, message: '编码名长度应该为3-20', trigger: 'blur' }
+			{ min: 1, max: 20, message: '编码名长度应该为1-20', trigger: 'blur' }
 			]
 	})
 	
@@ -130,7 +130,7 @@
 	}
 	
 	const clearForm=()=>{
-		let [fatherCodeName,fatherCodeId,codeId,codeName,displayNum,assistCode,spare1,spare2,spare3,spare4]=[null,null,null,null,null,null,null,null,null,null]
+		let [fatherCodeName,fatherCodeId,codeId,codeName,displayNum,assistCode,spare1,spare2,spare3,spare4]=[null,null,null,null,1,null,null,null,null,null]
 		Object.assign(formModel,{fatherCodeName,fatherCodeId,codeId,codeName,displayNum,assistCode,spare1,spare2,spare3,spare4})
 	}
 	

+ 3 - 3
src/pages/sys/UserEdit.vue

@@ -75,7 +75,7 @@
 			//formModel.roleName=['40289f3c87073161018707391f350003','40289f3c87076a0c0187076a0c060000']
 			let {userId,realName,loginId}=props.record
 			userAPI.queryByRoleUserId({userId:userId}).then((resp) => {
-				console.log("8888")
+				
 			if(resp.code===0){				
 				formModel.roleName=resp.data	
 			}	       
@@ -112,9 +112,9 @@
 				if(visiblePwd.value){
 					formModel.pwd =md5(formModel.pwd);
 				}
-				console.log("formModel1>>>>:"+JSON.stringify(formModel));				
+								
 				formModel.roleName= formModel.roleName.join(',');
-				console.log("formModel2>>>>:"+JSON.stringify(formModel));
+				
 				//return 
 			   let resp =await userAPI.save(toRaw(formModel))
 			   if(resp.code!=0){