picasso пре 3 година
родитељ
комит
d0d1c46461

+ 2 - 7
src/api/heatStation/index.ts

@@ -4,17 +4,12 @@ export default {
   loop: {
     getList: (params: object) => get('/region/loop/list', params),
     add: (data: object) => post('/region/loop/add', data),
-    edit: (data: object) => post('/region/loop/edit', data),
-    // getLists: (params: object) => get('/product/list', params),
-    // delete: (ids: number) => del('/product/del', { ids }),
-    // edit: (data: object) => put('/product/edit', data),
-    // detail: (id: number) => get('/product/detail', { id }),
+    edit: (data: object) => post('/region/loop/edit', data)
   },
   heatStation: {
     getList: (params: object) => get('/region/heatStation/tree', params),
     add: (data: object) => post('/region/heatStation/add', data),
     edit: (data: object) => put('/region/heatStation/edit', data),
-    // delete: (ids: number) => del('/product/del', { ids }),
-    // detail: (id: number) => get('/product/detail', { id }),
+    del: (id: number) => del('/region/heatStation/del', { id }),
   }
 }

+ 13 - 25
src/views/heatStation/heatStation/component/detail.vue

@@ -1,36 +1,24 @@
 <template>
 	<div class="system-edit-dic-container">
-		<el-dialog title="查看设备" v-model="isShowDialog" width="769px">
+		<el-dialog title="换热站详情" v-model="isShowDialog" width="575px">
 			<el-form :model="ruleForm" ref="formRef" :rules="rules" size="default" label-width="110px">
-				<el-form-item label="设备标识" prop="key">
-					{{ ruleForm.key }}
-				</el-form-item>
-				<el-form-item label="设备名称" prop="name">
+				<el-form-item label="换热站名称" prop="name">
 					{{ ruleForm.name }}
 				</el-form-item>
-
-				<el-form-item label="所属产品" prop="productId">
-					{{ ruleForm.productName }}
+				<el-form-item label="换热站位置" prop="position">
+					{{ ruleForm.position }}
 				</el-form-item>
-
-				<el-form-item label="所属部门" prop="deptId">
-					{{ ruleForm.deptName }}
+				<el-form-item label="负责人" prop="principal">
+					{{ ruleForm.principal }}
 				</el-form-item>
-
-				<el-form-item label="设备证书" prop="certificate">
-					{{ ruleForm.certificate }}
+				<el-form-item label="状态" prop="status">
+					{{ ruleForm.status === 1 ? '在线' : '不在线' }}
 				</el-form-item>
-
-				<el-form-item label="设备秘钥" prop="secureKey">
-					{{ ruleForm.secureKey }}
-				</el-form-item>
-
-				<el-form-item label="固件版本号" prop="version">
-					{{ ruleForm.version }}
-				</el-form-item>
-
-				<el-form-item label="备注" prop="desc">
-					{{ ruleForm.desc }}
+        <el-form-item label="地图展示" prop="">
+					<div>
+						<span>经度:{{ ruleForm.lnt ? `${ruleForm.lnt},` : '' }}</span>
+						<span style="margin-left: 10px">纬度:{{ ruleForm.lat }}</span>
+					</div>
 				</el-form-item>
 			</el-form>
 		</el-dialog>

+ 3 - 8
src/views/heatStation/heatStation/component/edit.vue

@@ -2,7 +2,7 @@
 	<div class="system-edit-dic-container">
 		<el-dialog :title="(ruleForm.id !== 0 ? '修改' : '添加') + '换热站'" v-model="dialogVisible" width="769px">
 			<el-form :model="ruleForm" ref="formRef" :rules="rules" size="default" label-width="110px">
-				<el-form-item label="上级换热站" prop="">
+				<el-form-item label="所属换热站" prop="">
 					<el-tree-select
 						v-model="ruleForm.parentId"
 						:data="treeData"
@@ -20,9 +20,6 @@
 				<el-form-item label="换热站名称" prop="name">
 					<el-input v-model="ruleForm.name" placeholder="请输入换热站名称" />
 				</el-form-item>
-				<!-- <el-form-item label="换热站编号" prop="code">
-					<el-input v-model="ruleForm.code" placeholder="请输入换热站编号" />
-				</el-form-item> -->
 				<el-form-item label="换热站位置" prop="position">
 					<el-input v-model="ruleForm.position" placeholder="请输入换热站位置" />
 				</el-form-item>
@@ -59,7 +56,6 @@ import { reactive, toRefs, defineComponent, ref, unref, nextTick, onMounted } fr
 import api from '/@/api/heatStation';
 import { ElMessage } from 'element-plus';
 import { Console } from 'console';
-import { loadBMap } from '/@/utils/loadMap.js'
 interface RuleFormState {
 	id: number;
 	parentId: number | string;
@@ -98,7 +94,6 @@ export default defineComponent({
 				status: [{ required: true, message: '状态不能为空', trigger: 'blur' }]
 			},
 			treeData: [],
-			mapResult: [], // 地图搜索点结果
 			mapLocal: null as any
 		})
 		// 打开弹窗
@@ -164,15 +159,15 @@ export default defineComponent({
 						//修改
 						api.heatStation.edit(params).then(() => {
 							ElMessage.success('换热站修改成功')
+							emit('queryList')
 							closeDialog() // 关闭弹窗
-							emit('querylist')
 						})
 					} else {
 						//添加
 						api.heatStation.add(params).then(() => {
 							ElMessage.success('换热站添加成功')
+							emit('queryList')
 							closeDialog() // 关闭弹窗
-							emit('querylist')
 						})
 					}
 				}

+ 16 - 16
src/views/heatStation/heatStation/index.vue

@@ -49,7 +49,7 @@
           <template #default="scope">
 			 			<el-button size="small" text type="primary" @click="onOpenDetail(scope.row)">详情</el-button>
             <el-button size="small" text type="warning" @click="onOpenEditDic(scope.row)">修改</el-button>
-            <!-- <el-button size="small" text type="danger" @click="onRowDel(scope.row)">删除</el-button> -->
+            <el-button size="small" text type="danger" @click="onRowDel(scope.row)">删除</el-button>
           </template>
         </el-table-column>
       </el-table>
@@ -141,27 +141,27 @@ export default defineComponent({
 		// 删除产品
 		const onRowDel = (row: TableDataRow) => {
 			let msg = '你确定要删除所选数据?';
-			let ids: number[] = [];
-			if (row) {
-				msg = `此操作将永久删除设备:“${row.name}”,是否继续?`;
-				ids = [row.id];
-			} else {
-				ids = state.ids;
-			}
-			if (ids.length === 0) {
-				ElMessage.error('请选择要删除的数据。');
-				return;
-			}
+			// let ids: number[] = [];
+			// if (row) {
+			msg = `此操作将永久删除设备:“${row.name}”,是否继续?`;
+				// ids = [row.id];
+			// } else {
+			// 	ids = state.ids;
+			// }
+			// if (ids.length === 0) {
+			// 	ElMessage.error('请选择要删除的数据。');
+			// 	return;
+			// }
 			ElMessageBox.confirm(msg, '提示', {
 				confirmButtonText: '确认',
 				cancelButtonText: '取消',
 				type: 'warning',
 			})
 				.then(() => {
-					// api.loop.del(ids).then(() => {
-					// 	ElMessage.success('删除成功');
-					// 	queryList();
-					// });
+					api.heatStation.del(row.id).then(() => {
+						ElMessage.success('删除成功');
+						queryList();
+					});
 				})
 				.catch(() => {});
 		};

+ 85 - 17
src/views/heatStation/loop/component/edit.vue

@@ -9,7 +9,19 @@
 					<el-input v-model="ruleForm.code" placeholder="请输入环路编号" />
 				</el-form-item>
 				<el-form-item label="所属换热站" prop="stationId">
-					<el-input v-model="ruleForm.stationId" placeholder="请输入所属换热站" />
+					<el-tree-select
+						v-model="ruleForm.stationId"
+						:data="treeData"
+						:props="{
+							label: 'name',
+							children: 'children'
+						}"
+						node-key="id"
+						:clearable="true"
+						check-strictly
+						style="width: 100%;"
+						:render-after-expand="true"
+					/>
 				</el-form-item>
         <el-form-item label="环路类型" prop="loopTypes">
           <el-select v-model="ruleForm.loopTypes" placeholder="请选择环路类型" clearable size="default" style="width: 100%">
@@ -53,12 +65,16 @@
           </el-col>
         </el-row>
         <el-form-item label="环路年代" prop="decade">
-          <el-input v-model="ruleForm.name" placeholder="请输入环路年代" />
+          <el-input v-model="ruleForm.decade" placeholder="请输入环路年代" />
         </el-form-item>
-        <el-form-item label="编辑路线信息" prop="decade">
-          <baidu-map class="map" :center="{ lng: 116.404, lat: 39.915 }" :zoom="15" style="width: 100%; height: 300px">
-            <bm-navigation anchor="BMAP_ANCHOR_TOP_RIGHT"></bm-navigation>
-          </baidu-map>
+        <el-form-item label="编辑路线信息" prop="">
+					<div class="mb10">
+						<el-button type="primary">添加途经点</el-button>
+					</div>
+					<div class="mb10" style="width: 100%">
+						<el-input v-model="keyword" @change="onLocalChange" placeholder="请输入关键字进行搜索" clearable style="width: 100%;"></el-input>
+					</div>
+					<div style="width: 100%; height: 300px" id="loop-map-container"></div>
         </el-form-item>
 				<el-form-item label="状态" prop="status">
 					<el-radio v-model="ruleForm.status" :label="1">在线</el-radio>
@@ -76,9 +92,14 @@
 </template>
 
 <script lang="ts">
-import { reactive, toRefs, defineComponent, ref, unref } from 'vue';
+import { reactive, toRefs, defineComponent, ref, unref, nextTick } from 'vue';
 import api from '/@/api/heatStation';
 import { ElMessage } from 'element-plus';
+interface Point {
+	sort?: number;
+	lnt: number;
+	lat: number
+}
 interface RuleFormState {
 	id: number;
 	name: string;
@@ -90,6 +111,7 @@ interface RuleFormState {
 	heatingTypes: string;
 	heatingArea: string;
 	forRealArea: string;
+	viaPoint: Array<Point>;
 	decade: string;
 	status: number;
 }
@@ -112,6 +134,7 @@ export default defineComponent({
         heatingArea: '',
         forRealArea: '',
         decade: '',
+				viaPoint: [],
         status: 1
 			},
 			rules: {
@@ -120,21 +143,20 @@ export default defineComponent({
 				stationId: [{ required: true, message: '所属换热站不能为空', trigger: 'blur' }],
 				loopTypes: [{ required: true, message: '环路类型不能为空', trigger: 'blur' }],
 				status: [{ required: true, message: '状态不能为空', trigger: 'blur' }]
-			}
+			},
+			treeData: [],
+			keyword: '', // 地图关键字
+			mapLocal: null as any
 		})
 		// 打开弹窗
 		const openDialog = (row: RuleFormState | null) => {
 			resetForm()
-
-			// api.product.getLists({ status: 1 }).then((res: any) => {
-			// 	state.productData = res.product || [];
-			// });
-			// api.dept.getList({ status: -1 }).then((res: any) => {
-			// 	state.deptData = res || [];
-			// });
-
+			queryTree()
+			nextTick(() => {
+				initMap()
+			})
 			if (row) {
-				state.ruleForm = row
+				(state.ruleForm as any) = row
 			}
 			state.dialogVisible = true
 		}
@@ -150,6 +172,7 @@ export default defineComponent({
         heatingTypes: '',
         heatingArea: '',
         forRealArea: '',
+				viaPoint: [],
         decade: '',
         status: 1
 			}
@@ -161,7 +184,18 @@ export default defineComponent({
 		// 取消
 		const onCancel = () => {
 			closeDialog()
+			state.keyword = ''
 		}
+		const queryTree = () => {
+			api.heatStation.getList({
+					name: '',
+					code: '',
+					status: -1
+				})
+				.then((res: any) => {
+					state.treeData = res || [];
+				});
+		};
 		// 新增
 		const onSubmit = () => {
 			const formWrap = unref(formRef) as any
@@ -186,6 +220,39 @@ export default defineComponent({
 				}
 			})
 		}
+		
+		const initMap = () => {
+			let BMapGL = (window as any).BMapGL
+			let map = new BMapGL.Map("loop-map-container");
+			// 116.404, 39.915
+			let point = new BMapGL.Point(116.404, 39.915);
+			let zoomCtrl = new BMapGL.ZoomControl();  // 添加缩放控件
+			let cityCtrl = new BMapGL.CityListControl()
+			map.centerAndZoom(point, 15); 
+			map.enableScrollWheelZoom(true); // 开启滚轮缩放
+			map.addControl(zoomCtrl);
+			map.addControl(cityCtrl);
+			// if (state.ruleForm.lnt && state.ruleForm.lat) {
+			// 	let marker = new BMapGL.Marker(new BMapGL.Point(state.ruleForm.lnt, state.ruleForm.lat));
+			// 	// 在地图上添加点标记
+			// 	map.addOverlay(marker);
+			// }
+
+			state.mapLocal = new BMapGL.LocalSearch(map, {
+				renderOptions:{map: map}
+			})
+
+			map.addEventListener('click', (e: any) => {
+				console.log('map--click', e)
+				let point = e.latlng
+				// state.ruleForm.lnt = point.lng
+				// state.ruleForm.lat = point.lat
+			})
+		}
+
+		const onLocalChange = () => {
+			state.mapLocal.search(state.keyword)
+		}
 
 		return {
 			openDialog,
@@ -193,6 +260,7 @@ export default defineComponent({
 			onCancel,
 			onSubmit,
 			formRef,
+			onLocalChange,
 			...toRefs(state)
 		}
 	}

+ 6 - 0
src/views/heatStation/loop/index.vue

@@ -110,6 +110,11 @@ import Detail from './component/detail.vue';
 import api from '/@/api/heatStation';
 
 // 定义接口来定义对象的类型
+interface Point {
+	sort?: number;
+	lnt: number;
+	lat: number
+}
 interface TableDataRow {
 	id: number;
 	name: string;
@@ -121,6 +126,7 @@ interface TableDataRow {
 	heatingTypes: number;
 	heatingArea: string;
 	forRealArea: string;
+	viaPoint: Array<Point>;
 	decade: string;
 	status: number;
 }