Commit 97f21ca9 authored by 纪泽龙's avatar 纪泽龙

合并到jzl

parents 0b91e536 24aa3dcc
......@@ -9,6 +9,7 @@ export function listPipe(query) {
})
}
// 查询管道信息列表
export function pipeAllInfoList(query) {
return request({
......@@ -18,11 +19,15 @@ export function pipeAllInfoList(query) {
})
}
// 查询管道信息详细
export function getPipe(pipeId) {
// getAllDeviceInfo
export function getAllDevice(data) {
return request({
url: '/device/pipe/' + pipeId,
method: 'get'
url: '/device/pipe/getAllDeviceInfo',
method: 'post',
data: data
})
}
......
......@@ -4,8 +4,14 @@
:visible.sync="dialogVisible"
:before-close="handleClose"
>
<el-row>
<el-form ref="editForm" :model="editForm" label-width="120px" size="mini">
<el-row >
<el-form
:rules="rules"
ref="editForm"
:model="editForm"
label-width="120px"
size="mini"
>
<el-col>
<el-form-item v-show="false" label="管道id" prop="pipeId">
<el-input
......@@ -44,8 +50,8 @@
</el-form-item>
</el-col>
<el-col>
<el-form-item label="管道所在地址" prop="iconUrl">
<el-input v-model="editForm.iconUrl"></el-input>
<el-form-item label="管道所在地址" prop="pipeAddr">
<el-input v-model="editForm.pipeAddr"></el-input>
</el-form-item>
</el-col>
<el-col>
......@@ -78,7 +84,7 @@
<!-- select -->
<el-radio-group v-model="editForm.pipePressure">
<!-- 1低压,2中压,3次高压,4高压 -->
<el-radio label="1"></el-radio>
<el-radio label="1"></el-radio>
<el-radio label="2">中压</el-radio>
<el-radio label="3">次高压</el-radio>
<el-radio label="4">高压</el-radio>
......@@ -86,20 +92,21 @@
</el-form-item>
</el-col>
<el-col>
<el-form-item label="上传图片" prop="">
<el-form-item label="上传图片" prop="iconUrl">
<MyFileUpload
listType="picture-card"
@resFun="fileFinshed"
@remove="listRemove"
:fileArr="fileArr"
/>
<el-input v-show="false" disabled v-model="editForm.iconUrl"></el-input>
</el-form-item>
<!-- <el-form-item v-show="false" label="设备图片路径" prop="iconUrl"> -->
<!-- </el-form-item> -->
</el-col>
<el-col>
<el-form-item v-show="false" label="设备图片路径" prop="url">
<el-input disabled v-model="editForm.url"></el-input>
</el-form-item>
</el-col>
<!-- <el-col>
</el-col> -->
<el-col>
<el-form-item label="安装日期" prop="installationTime">
<el-col :span="11">
......@@ -141,6 +148,8 @@
<script>
import MyFileUpload from "@/components/MyFileUpload";
import { addPipe, updatePipe } from "@/api/device/pipe.js";
import { getString } from "@/utils/gassafety.js";
import moment from "moment";
export default {
props: {
lineData: {
......@@ -170,11 +179,42 @@ export default {
// isShow: false,
fileArr: [],
editForm: {
pipeName:"",
pipeType: "1",
pipePressure: "1",
url: "",
iconUrl: "",
},
dialogVisible: false,
rules: {
pipeName: [
{ required: true, message: "请输入管道名称", trigger: "blur" },
// { min: 3, max: 5, message: "长度在 3 到 5 个字符", trigger: "blur" },
],
pipeCode: [
{ required: true, message: "请输入管道编号", trigger: "blur" },
],
pipeLength: [
{ required: true, message: "请输入管道长度", trigger: "blur" },
],
pipeAddr: [
{ required: true, message: "请输入管道所在地址", trigger: "blur" },
],
pipeType: [
{ required: true, message: "请选择管道类型", trigger: "blur" },
],
pipePressure: [
{ required: true, message: "请选择管道压力", trigger: "blur" },
],
iconUrl: [{ required: true, message: "请上传骨片", trigger: "change" }],
installationTime: [
{
// type: "date",
required: true,
message: "请选择日期",
trigger: "change",
},
],
},
};
},
created() {
......@@ -182,25 +222,33 @@ export default {
if (this.lineData?.pipeId) {
this.editForm = { ...this.lineData };
}
this.editForm.coordinates = this.lnglatsArr;
this.editForm.coordinates = getString(this.lnglatsArr);
// 如果有图片路径就赋显,如果没有就啥也没有
this.fileArr = this.editForm.url != "" ? [{ url: this.editForm.url }] : [];
this.fileArr = this.lineData.pipeId ? [{ url: this.editForm.iconUrl }] : [];
},
methods: {
mouseup(){
console.log('组件mouseup')
},
ok() {
// console.log(this.editForm.pipeId);
// if(this.editForm.pipeId){
// console.log("更改")
// }else{
// console.log("新增")
// }
const data = { ...this.editForm };
console.log("data", data);
console.log(this.editForm.pipeId);
this.requeset(this.editForm.pipeId).then((res) => {
this.dialogVisible = false;
this.lineOkCallBack.call(this.gaodeMap, this.target);
});
this.$refs.editForm.validate((valid)=>{
if(valid){
const data = { ...this.editForm };
data.installationTime = moment(this.editForm.installationTime).format(
"YYYY-MM-DD HH:mm:ss"
);
console.log("data", data);
console.log(this.editForm.pipeId);
this.requeset(this.editForm.pipeId, data).then((res) => {
// 改变this指向,传回去target ,传回去data
if (res.code == 200) {
this.dialogVisible = false;
data.pipeId =data.pipeId ?data.pipeId: res.data;
this.lineOkCallBack.call(this.gaodeMap, this.target, data);
}
});
}
})
// console.log(this.gaodeMap,this.target)
},
async requeset(id, data) {
......@@ -222,16 +270,18 @@ export default {
this.$confirm("确认关闭?")
.then((_) => {
done();
})
.catch((_) => {});
},
// 图片上传成功
fileFinshed(e) {
this.editForm.url = e.url;
this.editForm.iconUrl = e.url;
},
// 图片列表移除
listRemove(e) {
this.editForm.url = "";
this.editForm.iconUrl = "";
this.fileArr = [];
},
},
......
......@@ -4,8 +4,10 @@ import valveWell from "../components/PopWindow/valveWell.vue";
import flowMeter from "../components/PopWindow/flowMeter.vue";
import pipelineView from "../components/PopWindow/pipelineView.vue";
import lineInfoWindow from "../components/PopWindow/lineInfoWindow.vue";
import { delDeviceInfo } from "@/api/device/deviceInfo";
import { delDeviceInfo } from "@/api/device/deviceInfo";
import markerInfoWindow from "../components/PopWindow/markerInfoWindow.vue";
import { getArray } from "@/utils/gassafety.js";
import { delPipe } from "@/api/device/pipe.js";
import vue from "../main";
let defaultCenter = "石家庄";
export let map;
......@@ -25,7 +27,10 @@ class gaodeMap {
lineType = 0;
// 创建一个新的lineObj
newLineObj = null;
lineFlag =false;
mouseTool = null;
myMap = null;
//构造函数中设置中央点默认值
constructor(center) {
this.markers = [];
......@@ -43,6 +48,38 @@ class gaodeMap {
//mapStyle: 'amap://styles/darkblue',
// mapStyle: 'amap://styles/3b679a15f448a4740ba2ff7524e1a4ae',
});
this.myMap = map;
this.myMap.on("mousedown", e => {
// e.originEvent.stopPropagation();
// console.log(this.mouseTool);
// this.createNewLine()
// console.log(123)
// console.log(this.lineFlag)
// if (this.lineFlag) {
// return;
// }
// console.log("this.newLineObj",this.newLineObj)
// if (this.newLineObj != null) {
// this.newLineObj.polyEditor.close();
// map.remove(this.newLineObj);
// console.log(this.mouseTool);
// }
// console.log("map", e);
});
this.myMap.on("click", e => {
if (this.lineType !=1 ||this.lineFlag) return;
console.log(this.lineFlag);
// this.lineFlag = false;
// this.createNewLine();
// console.log("mapUp")
// 除了这里,还要利用vue页面的window事件辅助,当组件出来的时候,就得利用window事件
if (this.newLineObj != null) {
this.newLineObj.polyEditor.close();
map.remove(this.newLineObj);
this.createNewLine();
}
console.log("抬起来了");
});
this.districtBoundaries();
}
......@@ -103,9 +140,13 @@ class gaodeMap {
addMarker(markerType, data) {
let that = this;
that.markerType = markerType;
let infoWindow = new AMap.InfoWindow({ isCustom: true, offset: new AMap.Pixel(12, -65),anchor: "left-top" });
let infoWindow = new AMap.InfoWindow({
isCustom: true,
offset: new AMap.Pixel(12, -65),
anchor: "left-top"
});
let marker = new AMap.Marker({
position: [data.longitude,data.latitude],
position: [data.longitude, data.latitude],
map: map,
offset: new AMap.Pixel(-13, -30)
});
......@@ -128,7 +169,7 @@ class gaodeMap {
} else if ("delete" == that.mapOperateType) {
if (confirm("确认删除") == true) {
map.remove(marker);
that.deleteMarker(markerType,data.deviceId);
that.deleteMarker(markerType, data.deviceId);
}
} else {
map.setZoomAndCenter(13, e.target.getPosition());
......@@ -145,7 +186,6 @@ class gaodeMap {
editWindow.form.longitude = e.lnglat.lng;
editWindow.form.latitude = e.lnglat.lat;
});
}
this.markers.push(marker);
......@@ -188,30 +228,30 @@ class gaodeMap {
getMarketContent(data) {
switch (this.markerType) {
case DEVICE_TYPE.REGEULATORBOX: {
const dom = createPop(markerInfoWindow,{
const dom = createPop(markerInfoWindow, {
title: "调压箱",
data: data,
map:map
map: map
});
const html = dom.$el;
dom.remove();
return html;
}
case DEVICE_TYPE.VALUEWELL: {
const dom = createPop(markerInfoWindow,{
const dom = createPop(markerInfoWindow, {
title: "阀门井",
data: data,
map:map
map: map
});
const html = dom.$el;
dom.remove();
return html;
}
case DEVICE_TYPE.FLOWMETER: {
const dom = createPop(markerInfoWindow,{
const dom = createPop(markerInfoWindow, {
title: "流量计",
data: data,
map:map
map: map
});
const html = dom.$el;
dom.remove();
......@@ -240,19 +280,18 @@ class gaodeMap {
if(DEVICE_TYPE.REGEULATORBOX == delType || DEVICE_TYPE.VALUEWELL == delType || DEVICE_TYPE.FLOWMETER == delType || DEVICE_TYPE.PRESSUREGAGE == delType){
delDeviceInfo(deviceId);
}
}
/**
* 设置设备图标
* @param marker
*/
setMarkerIcon(marker){
setMarkerIcon(marker) {
switch (this.markerType) {
case DEVICE_TYPE.REGEULATORBOX: {
let icon = new AMap.Icon({
//size: new AMap.Size(51, 23),
image: require("../assets/images/tiaoyaxiang.png"),
image: require("../assets/images/tiaoyaxiang.png")
});
marker.setIcon(icon);
break;
......@@ -260,7 +299,7 @@ class gaodeMap {
case DEVICE_TYPE.VALUEWELL: {
let icon = new AMap.Icon({
//size: new AMap.Size(51, 23),
image: require("../assets/images/famenjing.png"),
image: require("../assets/images/famenjing.png")
});
marker.setIcon(icon);
break;
......@@ -268,7 +307,7 @@ class gaodeMap {
case DEVICE_TYPE.FLOWMETER: {
let icon = new AMap.Icon({
//size: new AMap.Size(51, 23),
image: require("../assets/images/liuliangji.png"),
image: require("../assets/images/liuliangji.png")
});
marker.setIcon(icon);
break;
......@@ -276,7 +315,7 @@ class gaodeMap {
case DEVICE_TYPE.DUTYPERSON: {
let icon = new AMap.Icon({
//size: new AMap.Size(51, 23),
image: require("../assets/images/zhibaorenyuan.png"),
image: require("../assets/images/zhibaorenyuan.png")
});
marker.setIcon(icon);
break;
......@@ -284,7 +323,7 @@ class gaodeMap {
case DEVICE_TYPE.WORKORDER: {
let icon = new AMap.Icon({
//size: new AMap.Size(51, 23),
image: require("../assets/images/zhibaorenyuan.png"),
image: require("../assets/images/zhibaorenyuan.png")
});
marker.setIcon(icon);
break;
......@@ -304,12 +343,19 @@ class gaodeMap {
* 添加折线
* @param path
*/
addPolyline(path) {
console.log(path);
addPolyline(arr) {
// this` polyLines = [];
for (let i = 0; i < path.length; i++) {
console.log("包装的数组", arr);
for (let i = 0; i < arr.length; i++) {
const item = arr[i];
let { coordinates } = item;
// console.log("coordinates",coordinates)
// let path = coordinates ? getArray(coordinates) :[];
// 字符串转二维数组
let path = coordinates ? eval(coordinates) : [];
let polyline = new AMap.Polyline({
path: path[i],
path,
strokeColor: "#F7FE38",
strokeWeight: 8,
strokeOpacity: 0.9,
......@@ -319,13 +365,14 @@ class gaodeMap {
extData: {
type: "line",
//当前line状态 0:正常状态 1:正在编辑状态
isState: 0
isState: 0,
lineData: item
}
});
this.polyLines.push(polyline);
// 信息窗体
const dom = createPop(lineInfoWindow, {
obj: { a: 123, editorPage: true }
obj: { a: 123, editorPage: true, ...item }
});
console.log("dom", dom.$el);
......@@ -339,39 +386,6 @@ class gaodeMap {
});
this.newLineAddEvent(polyline);
// // 编辑状态
// let polyEditor = new AMap.PolyEditor(map, polyline);
// //创建右键菜单
// let contextMenu = new AMap.ContextMenu();
// //菜单选择
// contextMenu.addItem(
// "编辑Polyline",
// function() {
// polyEditor.setTarget(polyline);
// polyEditor.open();
// contextMenu.close();
// },
// 0
// );
// // 结束编辑
// contextMenu.addItem(
// "结束编辑",
// function() {
// polyEditor.close();
// contextMenu.close();
// },
// 0
// );
// contextMenu.addItem(
// "保存信息",
// function() {
// console.log("折线数组", polyline.getPath());
// // polyEditor.close();
// // contextMenu.close()
// },
// 0
// );
//添加事件
polyline.on("mouseover", e => {
......@@ -432,20 +446,6 @@ class gaodeMap {
});
// 计算info的位置
// function infoPosition() {}
// polyline.on("rightclick", e => {
// console.log(this.lineType);
// // if(!this.lineFlag==0) return;
// // lineFlag 1新建 2编辑 3删除 0啥也不让干
// switch (this.lineType) {
// case 2: {
// contextMenu.open(map, e.lnglat);
// break;
// }
// default:
// break;
// }
// });
}
map.add(this.polyLines);
// 缩放地图到合适的视野级别
......@@ -454,6 +454,7 @@ class gaodeMap {
// 创建一条新的线
createNewLine() {
this.mouseTool.polyline({
// bubbles:false,
strokeWeight: 9,
strokeColor: "#80d8ff",
extData: {
......@@ -461,9 +462,20 @@ class gaodeMap {
//当前line状态 0:正常状态 1:正在编辑状态
isState: 0
}
//同Polyline的Option设置
});
}
// 创建出来的新线归位,重置,当点击编辑跟删除的时候
newLineReset() {
this.lineFlag = false;
if (this.mouserTool) {
this.mouseTool.close();
}
if (this.newLineObj) {
map.remove(this.newLineObj);
}
}
// 新建line增加编辑以及右键菜单
addEditorAndMenu(obj) {
let polyEditor = new AMap.PolyEditor(map, obj);
......@@ -514,10 +526,21 @@ class gaodeMap {
// 新line与老line添加点击事件
newLineAddEvent(obj) {
obj.polyEditor = new AMap.PolyEditor(map, obj);
obj.on("click", () => {
console.log(this.lineType)
// obj.polyEditor.on('adjust',(e)=>{
// console.log("addnode")
// })
obj.on("mousedown", e => {
console.log(e.originEvent);
console.log("lineType",this.lineType);
this.lineFlag = true;
// 每次点击关闭然后再次激活
this.mouseTool.close();
// 删除
if (this.lineType == 3) {
this.lineDelete(obj);
return;
}
// 获取当前状态 0普通状态,1是正编辑状态
const { isState, type } = obj.getExtData();
// 如果不是新线的时候并且没点编辑,点击是无效的
if (type != "newLine" && this.lineType != 2) return;
......@@ -530,35 +553,76 @@ class gaodeMap {
obj.setExtData(opstions);
} else {
// 经纬度
const lnglatsArr = obj.getPath().map(item=>([item.lng,item.lat]));
const lnglatsArr = obj.getPath().map(item => [item.lng, item.lat]);
// 管道总长度
const pipeLength = obj.getLength();
// 传回来的数据 如果是新管道就是空
const lineData = type == "newLine" ? {} : obj.getExtData().lineData;
this.infoWindowPipelineView({ target:obj, lineType: type,lnglatsArr, pipeLength,lineData });
console.log("lineData===================>传入组件的数据", lineData);
this.infoWindowPipelineView({
target: obj,
lineType: type,
lnglatsArr,
pipeLength,
lineData
});
}
});
}
lineDelete(obj) {
vue
.$confirm("是否删除该管道", "提示", {
// confirmButtonText: "确定",
// cancelButtonText: "取消",
type: "warning",
// center: true
})
.then(() => {
const {
lineData: { pipeId }
} = obj.getExtData();
console.log(pipeId);
delPipe(pipeId).then(res => {
const index = this.polyLines.indexOf(obj);
// 如果是老线,就要线删除原来的,然后重新包装一遍
if (index >= 0) {
this.polyLines.splice(index, 1);
map.remove(obj);
}
vue.$message({
type: "success",
message: "删除成功!"
});
});
})
.catch(() => {
vue.$message({
type: "info",
message: "已取消删除"
});
});
}
// 关闭所有已经上传的线的编辑状态
linePolyEditorAllClose() {
this.polyLines.forEach(item => {
item.polyEditor.close();
// let opstions = obj.getExtData();
// opstions.isState = 1;
item.setExtData({isState:0});
item.setExtData({ isState: 0 });
item.setOptions({ strokeColor: "#F7FE38" });
});
}
// 传进组件的会调 点确认的时候调
lineOkCallBack(target) {
lineOkCallBack(target, data) {
target.polyEditor.close();
const index = this.polyLines.indexOf(target);
// 如果是老线,就要线删除原来的,然后重新包装一遍
if (index >= 0) {
this.polyLines.splice(index, 1);
}
this.addPolyline([target.getPath()]);
console.log("data999-=================>传回来的data", data);
this.addPolyline([data]);
map.remove(target);
// console.log('polyLines',this.polyLines)
}
......@@ -601,10 +665,10 @@ class gaodeMap {
e.obj.on("click", function(aa) {
let postion = aa.target._position;
//兼容拖拽后单击事件,拖拽后点击事件返回位置为数组
if(postion instanceof Array){
if (postion instanceof Array) {
device.form.longitude = postion[0];
device.form.latitude = postion[1];
}else{
} else {
device.form.longitude = postion.lng;
device.form.latitude = postion.lat;
}
......@@ -617,6 +681,12 @@ class gaodeMap {
if (e.obj.getExtData().type == "newLine") {
console.log("挂上菜单");
that.newLineAddEvent(e.obj);
// 记录这条线
that.newLineObj = e.obj;
that.mouseTool.close();
// 创建一条新线,然后在点地图的时候删除原来的旧线
// that.createNewLine();
// 右键菜单
// that.addEditorAndMenu(e.obj)
that.overlays.push(e.obj);
......@@ -719,9 +789,9 @@ class gaodeMap {
);
}
searchTips(inputId){
searchTips(inputId) {
let that = this;
AMap.plugin(['AMap.AutoComplete', 'AMap.PlaceSearch'], function () {
AMap.plugin(["AMap.AutoComplete", "AMap.PlaceSearch"], function() {
//输入提示
var autoOptions = {
input: inputId
......@@ -731,22 +801,22 @@ class gaodeMap {
map: map
});
//构造地点查询类
auto.on('select', function(e){
console.log(e,"eeeeee========")
auto.on("select", function(e) {
console.log(e, "eeeeee========");
that.placeSearch.clear();
that.placeSearch.setCity(e.poi.adcode);
that.placeSearch.search(e.poi.name); //关键字查询查询
})
})
that.placeSearch.search(e.poi.name); //关键字查询查询
});
});
}
searchKeyWord(keyWord){
AMap.plugin(['AMap.AutoComplete'], function () {
searchKeyWord(keyWord) {
AMap.plugin(["AMap.AutoComplete"], function() {
var placeSearch = new AMap.PlaceSearch({
map: map
});
placeSearch.search(keyWord); //关键字查询查询
})
placeSearch.search(keyWord); //关键字查询查询
});
}
closeAddMarker(){
......
......@@ -3,124 +3,133 @@
* Copyright (c) 2021 gassafety
*/
const baseURL = process.env.VUE_APP_BASE_API
const baseURL = process.env.VUE_APP_BASE_API;
// 日期格式化
export function parseTime(time, pattern) {
if (arguments.length === 0 || !time) {
return null
}
const format = pattern || '{y}-{m}-{d} {h}:{i}:{s}'
let date
if (typeof time === 'object') {
date = time
} else {
if ((typeof time === 'string') && (/^[0-9]+$/.test(time))) {
time = parseInt(time)
} else if (typeof time === 'string') {
time = time.replace(new RegExp(/-/gm), '/');
}
if ((typeof time === 'number') && (time.toString().length === 10)) {
time = time * 1000
}
date = new Date(time)
}
const formatObj = {
y: date.getFullYear(),
m: date.getMonth() + 1,
d: date.getDate(),
h: date.getHours(),
i: date.getMinutes(),
s: date.getSeconds(),
a: date.getDay()
}
const time_str = format.replace(/{(y|m|d|h|i|s|a)+}/g, (result, key) => {
let value = formatObj[key]
// Note: getDay() returns 0 on Sunday
if (key === 'a') { return ['日', '一', '二', '三', '四', '五', '六'][value] }
if (result.length > 0 && value < 10) {
value = '0' + value
}
return value || 0
})
return time_str
if (arguments.length === 0 || !time) {
return null;
}
const format = pattern || "{y}-{m}-{d} {h}:{i}:{s}";
let date;
if (typeof time === "object") {
date = time;
} else {
if (typeof time === "string" && /^[0-9]+$/.test(time)) {
time = parseInt(time);
} else if (typeof time === "string") {
time = time.replace(new RegExp(/-/gm), "/");
}
if (typeof time === "number" && time.toString().length === 10) {
time = time * 1000;
}
date = new Date(time);
}
const formatObj = {
y: date.getFullYear(),
m: date.getMonth() + 1,
d: date.getDate(),
h: date.getHours(),
i: date.getMinutes(),
s: date.getSeconds(),
a: date.getDay()
};
const time_str = format.replace(/{(y|m|d|h|i|s|a)+}/g, (result, key) => {
let value = formatObj[key];
// Note: getDay() returns 0 on Sunday
if (key === "a") {
return ["日", "一", "二", "三", "四", "五", "六"][value];
}
if (result.length > 0 && value < 10) {
value = "0" + value;
}
return value || 0;
});
return time_str;
}
// 表单重置
export function resetForm(refName) {
if (this.$refs[refName]) {
this.$refs[refName].resetFields();
}
if (this.$refs[refName]) {
this.$refs[refName].resetFields();
}
}
// 添加日期范围
export function addDateRange(params, dateRange, propName) {
var search = params;
search.params = {};
if (null != dateRange && '' != dateRange) {
if (typeof (propName) === "undefined") {
search.params["beginTime"] = dateRange[0];
search.params["endTime"] = dateRange[1];
} else {
search.params["begin" + propName] = dateRange[0];
search.params["end" + propName] = dateRange[1];
}
}
return search;
var search = params;
search.params = {};
if (null != dateRange && "" != dateRange) {
if (typeof propName === "undefined") {
search.params["beginTime"] = dateRange[0];
search.params["endTime"] = dateRange[1];
} else {
search.params["begin" + propName] = dateRange[0];
search.params["end" + propName] = dateRange[1];
}
}
return search;
}
// 回显数据字典
export function selectDictLabel(datas, value) {
var actions = [];
Object.keys(datas).some((key) => {
if (datas[key].dictValue == ('' + value)) {
actions.push(datas[key].dictLabel);
return true;
}
})
return actions.join('');
var actions = [];
Object.keys(datas).some(key => {
if (datas[key].dictValue == "" + value) {
actions.push(datas[key].dictLabel);
return true;
}
});
return actions.join("");
}
// 回显数据字典(字符串数组)
export function selectDictLabels(datas, value, separator) {
var actions = [];
var currentSeparator = undefined === separator ? "," : separator;
var temp = value.split(currentSeparator);
Object.keys(value.split(currentSeparator)).some((val) => {
Object.keys(datas).some((key) => {
if (datas[key].dictValue == ('' + temp[val])) {
actions.push(datas[key].dictLabel + currentSeparator);
}
})
})
return actions.join('').substring(0, actions.join('').length - 1);
var actions = [];
var currentSeparator = undefined === separator ? "," : separator;
var temp = value.split(currentSeparator);
Object.keys(value.split(currentSeparator)).some(val => {
Object.keys(datas).some(key => {
if (datas[key].dictValue == "" + temp[val]) {
actions.push(datas[key].dictLabel + currentSeparator);
}
});
});
return actions.join("").substring(0, actions.join("").length - 1);
}
// 通用下载方法
export function download(fileName) {
window.location.href = baseURL + "/common/download?fileName=" + encodeURI(fileName) + "&delete=" + true;
window.location.href =
baseURL +
"/common/download?fileName=" +
encodeURI(fileName) +
"&delete=" +
true;
}
// 字符串格式化(%s )
export function sprintf(str) {
var args = arguments, flag = true, i = 1;
str = str.replace(/%s/g, function () {
var arg = args[i++];
if (typeof arg === 'undefined') {
flag = false;
return '';
}
return arg;
});
return flag ? str : '';
var args = arguments,
flag = true,
i = 1;
str = str.replace(/%s/g, function() {
var arg = args[i++];
if (typeof arg === "undefined") {
flag = false;
return "";
}
return arg;
});
return flag ? str : "";
}
// 转换字符串,undefined,null等转化为""
export function praseStrEmpty(str) {
if (!str || str == "undefined" || str == "null") {
return "";
}
return str;
if (!str || str == "undefined" || str == "null") {
return "";
}
return str;
}
/**
......@@ -131,45 +140,79 @@ export function praseStrEmpty(str) {
* @param {*} children 孩子节点字段 默认 'children'
*/
export function handleTree(data, id, parentId, children) {
let config = {
id: id || 'id',
parentId: parentId || 'parentId',
childrenList: children || 'children'
};
var childrenListMap = {};
var nodeIds = {};
var tree = [];
for (let d of data) {
let parentId = d[config.parentId];
if (childrenListMap[parentId] == null) {
childrenListMap[parentId] = [];
}
nodeIds[d[config.id]] = d;
childrenListMap[parentId].push(d);
}
for (let d of data) {
let parentId = d[config.parentId];
if (nodeIds[parentId] == null) {
tree.push(d);
}
}
for (let t of tree) {
adaptToChildrenList(t);
}
function adaptToChildrenList(o) {
if (childrenListMap[o[config.id]] !== null) {
o[config.childrenList] = childrenListMap[o[config.id]];
}
if (o[config.childrenList]) {
for (let c of o[config.childrenList]) {
adaptToChildrenList(c);
}
}
}
return tree;
let config = {
id: id || "id",
parentId: parentId || "parentId",
childrenList: children || "children"
};
var childrenListMap = {};
var nodeIds = {};
var tree = [];
for (let d of data) {
let parentId = d[config.parentId];
if (childrenListMap[parentId] == null) {
childrenListMap[parentId] = [];
}
nodeIds[d[config.id]] = d;
childrenListMap[parentId].push(d);
}
for (let d of data) {
let parentId = d[config.parentId];
if (nodeIds[parentId] == null) {
tree.push(d);
}
}
for (let t of tree) {
adaptToChildrenList(t);
}
function adaptToChildrenList(o) {
if (childrenListMap[o[config.id]] !== null) {
o[config.childrenList] = childrenListMap[o[config.id]];
}
if (o[config.childrenList]) {
for (let c of o[config.childrenList]) {
adaptToChildrenList(c);
}
}
}
return tree;
}
// 二维数组转字符串
export const getString = objarr => {
const typeNO = objarr.length;
let tree = "[";
for (var i = 0; i < typeNO; i++) {
tree += "[";
tree += "'" + objarr[i][0] + "',";
tree += "'" + objarr[i][1] + "'";
tree += "]";
if (i < typeNO - 1) {
tree += ",";
}
}
tree += "]";
return tree;
};
// 二维数组字符串转回数组
export const getArray = str => {
let newArr = str.slice(1, str.length - 1);
newArr = newArr.split("],")
return newArr.map((item, index, own) => {
let str = "",
arr = [];
str = item.replace(/\[/g, "");
str = str.replace(/]/g, "");
arr = str.split(",");
arr = arr.map(item => {
return Number(item);
});
return arr;
});
};
......@@ -31,7 +31,7 @@
<div
class="el-btn"
:class="{ active: targetNum == 1 }"
@click="addDevice"
@click.stop="addDevice"
>
<template v-if="iconClass == 'icon-create'">
<span class="left">
......@@ -49,7 +49,7 @@
<div
class="el-btn"
:class="{ active: targetNum == 2 }"
@click="editDevice"
@click.stop="editDevice"
>
<span class="left">
<i class="iconfont icon-compile" />
......@@ -59,7 +59,7 @@
<div
class="el-btn"
:class="{ active: targetNum == 3 }"
@click="deleteDevice"
@click.stop="deleteDevice"
>
<span class="left">
<i class="iconfont icon-delete" />
......@@ -75,7 +75,7 @@
<div
class="op-btn"
:class="{ active: item.value == createValue }"
@click="createChange(item)"
@click.stop="createChange($event, item)"
>
<span class="left">
<i class="iconfont" :class="item.icon" />
......@@ -89,9 +89,20 @@
</div>
<!-- <el-select-->
<el-input v-model="keyWord" placeholder="点击输入" id="tipinput" class="search-input"/>
<el-button type="red" icon="el-icon-search" class="search-but" @click="search()">搜索</el-button>
<!-- <el-button
<el-input
v-model="keyWord"
placeholder="点击输入"
id="tipinput"
class="search-input"
/>
<el-button
type="red"
icon="el-icon-search"
class="search-but"
@click="search()"
>搜索</el-button
>
<!-- <el-button
type="primary"
style="position: absolute; top: 100px; left: 75%"
@click="addDevice"
......@@ -128,7 +139,7 @@
v-for="item in changeBtnData"
:key="item.value"
class="box"
:class="{ active: leftBarNum.indexOf(item.value)>=0 }"
:class="{ active: leftBarNum.indexOf(item.value) >= 0 }"
@click="leftBarChange(item)"
>
<div class="left">
......@@ -143,9 +154,9 @@
</template>
<script>
import gaodeMap from "utils/gaodeMap.js";
import {pipeAllInfoList} from "@/api/device/pipe.js"
import { pipeAllInfoList } from "@/api/device/pipe.js";
import { map, DEVICE_TYPE, mapOperateType } from "utils/gaodeMap.js";
import { getAllDeviceInfo } from "@/api/device/deviceInfo";
import { getAllDeviceInfo } from "@/api/device/deviceInfo";
export default {
data() {
return {
......@@ -168,13 +179,13 @@ export default {
phone: null,
installationTime: null,
inspectionTime: null,
remarks: null
remarks: null,
},
radio1: "",
// 1新建,2编辑,3删除,点按钮变色
targetNum: 0,
// 左边的bar的active判定
leftBarNum:[1,2,3,4,5],
leftBarNum: [1, 2, 3, 4, 5],
// 新建里的值
iconClass: "icon-create",
......@@ -207,15 +218,14 @@ export default {
label: "压力表",
},
],
keyWord:""
keyWord: "",
};
},
mounted() {
let gaoMap = new gaodeMap("石家庄");
pipeAllInfoList().then(res=>{
console.log("管道",res);
})
this.gaoMap = gaoMap;
window.addEventListener("click", this.barClose);
let path = [
[
[114.436698, 38.083306],
......@@ -229,20 +239,20 @@ export default {
[114.530768, 38.00165],
],
];
gaoMap.addPolyline(path);
gaoMap.addMouseTool();
gaoMap.searchTips("tipinput");
this.getDeviceInfo();
this.getPipeList();
},
methods: {
// 左边的Bar修改值
leftBarChange(item){
leftBarChange(item) {
// this.leftBarNum= this.leftBarNum != item.value ? item.value:0;
const index = this.leftBarNum.indexOf(item.value);
if(index>=0){
this.leftBarNum.splice(index,1)
}else{
this.leftBarNum.push(item.value)
if (index >= 0) {
this.leftBarNum.splice(index, 1);
} else {
this.leftBarNum.push(item.value);
}
},
addDevice() {
......@@ -254,8 +264,8 @@ export default {
this.createReset();
}
}
if(this.targetNum ==1 && this.createValue ==1){
this.gaoMap.lineType=1;
if (this.targetNum == 1 && this.createValue == 1) {
this.gaoMap.lineType = 1;
}
this.deviceType = !this.deviceType;
this.gaoMap.mapOperateType = "add";
......@@ -263,15 +273,16 @@ export default {
},
// 选择新建项目哪个
createChange(item) {
createChange(e, item) {
// e.stopPropagation();
this.deviceType = false;
this.iconClass = item.icon;
this.createValue = item.value;
this.createLabel = item.label;
if(this.targetNum==1 && this.createValue==1){
if (this.targetNum == 1 && this.createValue == 1) {
// 0是初始,1是新建 2是编辑 3删除
this.gaoMap.lineType=1;
this.gaoMap.lineType = 1;
this.gaoMap.createNewLine();
}else {
this.gaoMap.draw(this.createValue.toString());
......@@ -285,12 +296,14 @@ export default {
},
editDevice() {
this.targetNum = this.targetNum != 2 ? 2 : 0;
this.gaoMap.lineType=this.targetNum;
console.log(this.gaoMap.lineType)
if(this.targetNum!=2) {
this.gaoMap.lineType = this.targetNum;
console.log(this.gaoMap.lineType);
if (this.targetNum != 2) {
this.gaoMap.linePolyEditorAllClose();
}
this.createReset();
// 如果正在新建线条,则清空
this.gaoMap.newLineReset();
this.deviceType = false;
this.gaoMap.mapOperateType = "edit";
this.gaoMap.addMarkerDragg();
......@@ -299,8 +312,9 @@ export default {
},
deleteDevice() {
this.targetNum = this.targetNum != 3 ? 3 : 0;
this.gaoMap.lineType=this.targetNum;
this.gaoMap.lineType = this.targetNum;
// 如果正在新建线条,则清空
this.gaoMap.newLineReset();
this.createReset();
this.deviceType = false;
this.gaoMap.mapOperateType = "delete";
......@@ -320,19 +334,22 @@ export default {
this.gaoMap.createNewLine();
}
},
getDeviceInfo(){
getDeviceInfo() {
this.loading = true;
getAllDeviceInfo(this.queryParams).then(response => {
if(response.code == 200){
for(var i = 0;i < response.data.length; i++){
if("1" == response.data[i].deviceType){
this.gaoMap.addMarker(DEVICE_TYPE.REGEULATORBOX,response.data[i])
getAllDeviceInfo(this.queryParams).then((response) => {
if (response.code == 200) {
for (var i = 0; i < response.data.length; i++) {
if ("1" == response.data[i].deviceType) {
this.gaoMap.addMarker(
DEVICE_TYPE.REGEULATORBOX,
response.data[i]
);
}
if("2" == response.data[i].deviceType){
this.gaoMap.addMarker(DEVICE_TYPE.VALUEWELL,response.data[i])
if ("2" == response.data[i].deviceType) {
this.gaoMap.addMarker(DEVICE_TYPE.VALUEWELL, response.data[i]);
}
if("3" == response.data[i].deviceType){
this.gaoMap.addMarker(DEVICE_TYPE.FLOWMETER,response.data[i])
if ("3" == response.data[i].deviceType) {
this.gaoMap.addMarker(DEVICE_TYPE.FLOWMETER, response.data[i]);
}
if("4" == response.data[i].deviceType){
this.gaoMap.addMarker(DEVICE_TYPE.PRESSUREGAGE,response.data[i])
......@@ -341,12 +358,37 @@ export default {
}
this.loading = false;
});
},
search(){
getPipeList() {
pipeAllInfoList().then((res) => {
console.log("管道", res);
if (res.code == 200) {
this.gaoMap.addPolyline(res.data);
}
});
},
search() {
this.gaoMap.placeSearch.clear();
this.gaoMap.placeSearch.search(this.keyWord)
}
this.gaoMap.placeSearch.search(this.keyWord);
},
// 新建下拉列表关闭
barClose() {
console.log("window");
this.deviceType = false;
// 如果没有选择的时候点window 则高亮消失
if (this.targetNum == 1 && this.iconClass == "icon-create") {
this.targetNum = 0;
}
// 辅助新建重新画线
if (!this.gaoMap.lineFlag) return;
this.gaoMap.lineFlag = false;
this.gaoMap.createNewLine();
},
},
beforeDestroy() {
console.log("移除window事件");
window.removeEventListener("click", this.barClose);
},
};
</script>
......@@ -558,17 +600,19 @@ input[type="radio"] {
width: 4rem;
margin-right: 1rem;
}
.search-input{
.search-input {
position: absolute;
top: 100px;
left: 2%;
width:240px;
width: 240px;
}
.search-but{
.search-but {
position: absolute;
top: 100px; left: 19%;
width:85px;color: white;
background-color: #053B6A;
top: 100px;
left: 19%;
width: 85px;
color: white;
background-color: #053b6a;
}
</style>
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment