Commit 09639534 authored by 纪泽龙's avatar 纪泽龙

Merge branch 'develop_jzl'

parents f7357d54 ea113c13
...@@ -4,5 +4,6 @@ ENV = 'development' ...@@ -4,5 +4,6 @@ ENV = 'development'
# 燃气安全管理系统/开发环境 # 燃气安全管理系统/开发环境
VUE_APP_BASE_API = '/dev-api' VUE_APP_BASE_API = '/dev-api'
# 路由懒加载 # 路由懒加载
VUE_CLI_BABEL_TRANSPILE_MODULES = true VUE_CLI_BABEL_TRANSPILE_MODULES = true
...@@ -2,8 +2,7 @@ ...@@ -2,8 +2,7 @@
<el-dialog <el-dialog
:title="title" :title="title"
:visible.sync="dialogVisible" :visible.sync="dialogVisible"
:before-close="handleClose" :before-close="handleClose">
>
<el-row> <el-row>
<el-form ref="form" :model="form" :rules="rules" label-width="135px"> <el-form ref="form" :model="form" :rules="rules" label-width="135px">
<el-row> <el-row>
...@@ -25,19 +24,13 @@ ...@@ -25,19 +24,13 @@
<el-row> <el-row>
<el-col :span="11"> <el-col :span="11">
<el-form-item label="设备名称" prop="deviceName"> <el-form-item label="设备名称" prop="deviceName">
<el-input <el-input v-model="form.deviceName" placeholder="请输入设备名称" />
v-model="form.deviceName"
placeholder="请输入设备名称"
/>
</el-form-item> </el-form-item>
</el-col> </el-col>
<el-col :span="11"> <el-col :span="11">
<el-form-item label="设备型号" prop="deviceModel"> <el-form-item label="设备型号" prop="deviceModel">
<el-input <el-input v-model="form.deviceModel" placeholder="请输入设备型号" />
v-model="form.deviceModel"
placeholder="请输入设备型号"
/>
</el-form-item> </el-form-item>
</el-col> </el-col>
</el-row> </el-row>
...@@ -56,7 +49,7 @@ ...@@ -56,7 +49,7 @@
<el-col :span="22"> <el-col :span="22">
<el-form-item label="经纬度坐标" prop=""> <el-form-item label="经纬度坐标" prop="">
<el-card shadow="newver" class="box-card"> <el-card class="box-card">
<div v-text="`[[${form.longitude},${form.latitude}]]`"></div> <div v-text="`[[${form.longitude},${form.latitude}]]`"></div>
</el-card> </el-card>
</el-form-item> </el-form-item>
...@@ -146,7 +139,35 @@ export default { ...@@ -146,7 +139,35 @@ export default {
dialogVisible: false, dialogVisible: false,
fileList: [], fileList: [],
// 表单校验 // 表单校验
rules: {}, rules: {
pipeCode: [
{ required: true, message: "请选择所属管道", trigger: "blur" },
// { min: 3, max: 5, message: "长度在 3 到 5 个字符", trigger: "blur" },
],
deviceName: [
{ required: true, message: "请输入设备名称", trigger: "blur" },
],
deviceModel: [
{ required: true, message: "请输入设备型号", trigger: "blur" },
],
deviceAddr: [
{ required: true, message: "请输入所在地址", trigger: "blur" },
],
iotNo: [
{ required: true, message: "请输入物联网编号", trigger: "blur" },
],
linkman: [{ required: true, message: "请输入联系人", trigger: "blur" }],
phone: [{ required: true, message: "请输入联系电话", trigger: "blur" }],
iconUrl: [{ required: true, message: "请上传图片", trigger: "change" }],
installationTime: [
{
// type: "date",
required: true,
message: "请选择日期",
trigger: "change",
},
],
},
map: null, map: null,
obj: null, obj: null,
gaoMap: null, gaoMap: null,
...@@ -202,19 +223,19 @@ export default { ...@@ -202,19 +223,19 @@ export default {
this.form.url = ""; this.form.url = "";
this.fileArr = []; this.fileArr = [];
}, },
getPipeInfos(){ getPipeInfos() {
pipeAllInfoList({}).then((response) => { pipeAllInfoList({}).then((response) => {
this.pipeList = response.data; this.pipeList = response.data;
}); });
}
}, },
watch:{ },
dialogVisible(val){ watch: {
if(val){ dialogVisible(val) {
if (val) {
this.getPipeInfos(); this.getPipeInfos();
} }
} },
} },
}; };
</script> </script>
......
...@@ -77,12 +77,20 @@ ...@@ -77,12 +77,20 @@
<!-- 报警状态 --> <!-- 报警状态 -->
<div class="warn-wrapper" v-if="true"> <div class="warn-wrapper" v-if="true">
<div class="warn-content"> <div class="warn-content">
<div>报警状态:<span>报警({{alarmType}})</span></div> <div>
<div>详细信息:<span>{{alarmValue?alarmValue:"-"}}</span></div> 报警状态:<span>报警({{ alarmType }})</span>
</div>
<div>
详细信息:<span>{{ alarmValue ? alarmValue : "-" }}</span>
</div>
</div> </div>
<div class="btn"> <div @click.stop="stopPropatation" class="btn">
<span>
<el-button class="elbtn" type="primary">设备详情</el-button> <el-button class="elbtn" type="primary">设备详情</el-button>
</span>
<span v-if="orderId" @mousedown.stop="createWork">
<el-button class="elbtn" type="primary">生成工单</el-button> <el-button class="elbtn" type="primary">生成工单</el-button>
</span>
</div> </div>
</div> </div>
</div> </div>
...@@ -95,10 +103,8 @@ export default { ...@@ -95,10 +103,8 @@ export default {
props: { props: {
obj: { typs: Object }, obj: { typs: Object },
}, },
data(){ data() {
return { return {};
}
}, },
created() { created() {
console.log("created", this.obj); console.log("created", this.obj);
...@@ -108,17 +114,21 @@ export default { ...@@ -108,17 +114,21 @@ export default {
bigImageArr() { bigImageArr() {
return [this.obj.iconUrl]; return [this.obj.iconUrl];
}, },
alarmType(){ alarmType() {
return this.obj.polyline.getExtData().lineData.alarmType; return this.obj.polyline.getExtData().lineData.alarmType;
}, },
alarmValue(){ alarmValue() {
return this.obj.polyline.getExtData().lineData.alarmValue; return this.obj.polyline.getExtData().lineData.alarmValue;
} },
orderId() {
// 如果已经生成过工单,就不能再次生成了
return this.obj.polyline.getExtData().lineData.orderId ? false : true;
},
}, },
methods: { methods: {
moment, moment,
mousedown(e) { mousedown(e) {
console.log("??") console.log("??");
return; return;
// console.log(this.$refs.previewImg) // console.log(this.$refs.previewImg)
this.$refs.previewImg.showViewer = true; this.$refs.previewImg.showViewer = true;
...@@ -134,6 +144,11 @@ export default { ...@@ -134,6 +144,11 @@ export default {
}); });
}); });
}, },
createWork() {
// 控制外层弹框 可能有点长
this.obj.polyline.getExtData().lineData.view.$refs.CreateWork.alarmId =this.data.alarmId;
this.obj.polyline.getExtData().lineData.view.$refs.CreateWork.open = true;
},
close() { close() {
this.obj.polyline.infoWindow.close(); this.obj.polyline.infoWindow.close();
}, },
...@@ -152,7 +167,7 @@ export default { ...@@ -152,7 +167,7 @@ export default {
.top { .top {
width: 100%; width: 100%;
height: 51px; height: 51px;
background-color: #FF5A67; background-color: #ff5a67;
.text { .text {
font-weight: 600; font-weight: 600;
font-size: 16px; font-size: 16px;
...@@ -241,7 +256,7 @@ export default { ...@@ -241,7 +256,7 @@ export default {
box-sizing: border-box; box-sizing: border-box;
padding: 10px 0 2px 22px; padding: 10px 0 2px 22px;
border-bottom: 1px solid #e2e2e2; border-bottom: 1px solid #e2e2e2;
color:#FE5966; color: #fe5966;
& > div { & > div {
font-size: 14px; font-size: 14px;
font-weight: 400; font-weight: 400;
...@@ -251,11 +266,16 @@ export default { ...@@ -251,11 +266,16 @@ export default {
.btn { .btn {
padding: 16px 0; padding: 16px 0;
text-align: center; text-align: center;
span {
display: inline-block;
padding: 0 10px;
.elbtn { .elbtn {
background-color: #053b6a; background-color: #053b6a;
box-shadow: 0px 3px 6px rgba(0, 0, 0, 0.16); box-shadow: 0px 3px 6px rgba(0, 0, 0, 0.16);
width: 95px; width: 95px;
height: 33px; height: 33px;
border: none;
}
} }
} }
} }
......
...@@ -64,12 +64,25 @@ ...@@ -64,12 +64,25 @@
<!-- 报警状态 --> <!-- 报警状态 -->
<div class="warn-wrapper" v-if="true"> <div class="warn-wrapper" v-if="true">
<div class="warn-content"> <div class="warn-content">
<div>报警状态:<span>报警({{data.alarmType}})</span></div> <div>
<div>详细信息:<span>{{data.alarmValue?data.alarmValue :"-"}}</span></div> 报警状态:<span>报警({{ data.alarmType }})</span>
</div>
<div>
详细信息:<span>{{ data.alarmValue ? data.alarmValue : "-" }}</span>
</div>
</div> </div>
<div class="btn"> <div class="btn">
<span>
<el-button class="elbtn" type="primary">设备详情</el-button> <el-button class="elbtn" type="primary">设备详情</el-button>
<el-button v-if="title=='压力表'|| title=='流量计' " class="elbtn" type="primary">生成工单</el-button> </span>
<span v-if="orderId" @mousedown.stop="createWork">
<el-button
v-if="title == '压力表' || title == '流量计'"
class="elbtn"
type="primary"
>生成工单</el-button
>
</span>
</div> </div>
</div> </div>
</div> </div>
...@@ -85,8 +98,24 @@ export default { ...@@ -85,8 +98,24 @@ export default {
data: {}, data: {},
map: null, map: null,
}, },
computed: {
orderId() {
// 如果已经生成过工单,就不能再次生成了
return this.data.orderId ? false : true;
},
},
methods: { methods: {
moment, moment,
createWork() {
// 控制外层弹框
console.log(this.data.view.$refs.CreateWork);
this.data.view.$refs.CreateWork.alarmId = this.data.alarmId;
this.data.view.$refs.CreateWork.open = true;
},
},
beforeDestroy() {
// this.data.view.createWorkOpen = false;
}, },
}; };
</script> </script>
...@@ -102,7 +131,7 @@ export default { ...@@ -102,7 +131,7 @@ export default {
.top { .top {
width: 100%; width: 100%;
height: 51px; height: 51px;
background-color: #FF5A67; background-color: #ff5a67;
.text { .text {
font-weight: 600; font-weight: 600;
font-size: 16px; font-size: 16px;
...@@ -201,11 +230,16 @@ export default { ...@@ -201,11 +230,16 @@ export default {
.btn { .btn {
padding: 16px 0; padding: 16px 0;
text-align: center; text-align: center;
span {
display: inline-block;
padding: 0 10px;
.elbtn { .elbtn {
background-color: #053b6a; background-color: #053b6a;
box-shadow: 0px 3px 6px rgba(0, 0, 0, 0.16); box-shadow: 0px 3px 6px rgba(0, 0, 0, 0.16);
width: 95px; width: 95px;
height: 33px; height: 33px;
border: none;
}
} }
} }
} }
......
...@@ -135,8 +135,6 @@ export default { ...@@ -135,8 +135,6 @@ export default {
}, },
// 菜单选择事件 // 菜单选择事件
handleSelect(key, keyPath) { handleSelect(key, keyPath) {
console.log("key", key);
console.log("keypath", keyPath);
let path; let path;
this.currentIndex = key; this.currentIndex = key;
if (this.ishttp(key)) { if (this.ishttp(key)) {
...@@ -148,8 +146,15 @@ export default { ...@@ -148,8 +146,15 @@ export default {
} else { } else {
// 显示左侧联动菜单 // 显示左侧联动菜单
path = this.activeRoutes(key); path = this.activeRoutes(key);
console.log(path)
console.log(this.$route.path)
if (this.$route.path != path[0].path) { if (this.$route.path != path[0].path) {
if(path[0].path){
this.$router.push(path[0].path); this.$router.push(path[0].path);
}else{
if(path[0].path=="" && this.$route.path=="/index") return;
this.$router.push("/index");
}
} }
// if (key == "/enterprise") { // if (key == "/enterprise") {
...@@ -163,6 +168,7 @@ export default { ...@@ -163,6 +168,7 @@ export default {
}, },
// 当前激活的路由 // 当前激活的路由
activeRoutes(key) { activeRoutes(key) {
// if(this.$route.path=="/index") return;
var routes = []; var routes = [];
if (this.childrenMenus && this.childrenMenus.length > 0) { if (this.childrenMenus && this.childrenMenus.length > 0) {
this.childrenMenus.map((item) => { this.childrenMenus.map((item) => {
......
...@@ -2,6 +2,7 @@ ...@@ -2,6 +2,7 @@
import regulatorBox from "../components/PopWindow/regulatorBox.vue"; import regulatorBox from "../components/PopWindow/regulatorBox.vue";
import valveWell from "../components/PopWindow/valveWell.vue"; import valveWell from "../components/PopWindow/valveWell.vue";
import flowMeter from "../components/PopWindow/flowMeter.vue"; import flowMeter from "../components/PopWindow/flowMeter.vue";
import pressureGage from "../components/PopWindow/pressureGage.vue";
import pipelineView from "../components/PopWindow/pipelineView.vue"; import pipelineView from "../components/PopWindow/pipelineView.vue";
import lineInfoWindow from "../components/PopWindow/lineInfoWindow.vue"; import lineInfoWindow from "../components/PopWindow/lineInfoWindow.vue";
import { delDeviceInfo } from "@/api/device/deviceInfo"; import { delDeviceInfo } from "@/api/device/deviceInfo";
...@@ -816,7 +817,7 @@ class gaodeMap { ...@@ -816,7 +817,7 @@ class gaodeMap {
}); });
} }
case DEVICE_TYPE.PRESSUREGAGE: { case DEVICE_TYPE.PRESSUREGAGE: {
return createPop(flowMeter, { return createPop(pressureGage, {
title: val+ "压力表" title: val+ "压力表"
}); });
} }
......
...@@ -328,7 +328,12 @@ class gaodeMap { ...@@ -328,7 +328,12 @@ class gaodeMap {
function infoOpen(e) { function infoOpen(e) {
if (e.target.getExtData().alarmState == 1) { if (e.target.getExtData().alarmState == 1) {
that.markerType = e.target.getExtData().deviceType; if (e.target.getExtData().deviceType == 4) {
that.markerType = "7";
} else if (e.target.getExtData().deviceType <= 3) {
that.markerType = +e.target.getExtData().deviceType + 1 + "";
}
console.log("that.markerType", that.markerType);
// 警告状态这样就要换infowindow // 警告状态这样就要换infowindow
e.target.content = that.getMarketContent( e.target.content = that.getMarketContent(
e.target.getExtData(), e.target.getExtData(),
...@@ -336,11 +341,17 @@ class gaodeMap { ...@@ -336,11 +341,17 @@ class gaodeMap {
); );
} else { } else {
// 初始化为1的时候是没有的,所以需要判断一下 // 初始化为1的时候是没有的,所以需要判断一下
that.markerType = // that.markerType =
e.target.getExtData().deviceType + "" == 1 // e.target.getExtData().deviceType + "" == 1
? "2" // ? "2"
: e.target.getExtData().deviceType + ""; // : e.target.getExtData().deviceType + "";
console.log(typeof e.target.getExtData().deviceType); // 上图状态跟后台状态不统一,所以需要判断一下
if (e.target.getExtData().deviceType == 4) {
that.markerType = "7";
} else if (e.target.getExtData().deviceType <= 3) {
that.markerType = +e.target.getExtData().deviceType + 1 + "";
}
console.log("that.markerType");
e.target.content = that.getMarketContent( e.target.content = that.getMarketContent(
e.target.getExtData(), e.target.getExtData(),
markerInfoWindow markerInfoWindow
...@@ -474,6 +485,7 @@ class gaodeMap { ...@@ -474,6 +485,7 @@ class gaodeMap {
* @param marker * @param marker
*/ */
setMarkerIcon(marker) { setMarkerIcon(marker) {
console.log(this.markerType);
switch (this.markerType) { switch (this.markerType) {
case DEVICE_TYPE.REGEULATORBOX: { case DEVICE_TYPE.REGEULATORBOX: {
let icon = new AMap.Icon({ let icon = new AMap.Icon({
...@@ -542,7 +554,7 @@ class gaodeMap { ...@@ -542,7 +554,7 @@ class gaodeMap {
} }
} }
} }
changeMarkIcon(marker,iconUrl){ changeMarkIcon(marker, iconUrl) {
let icon = new AMap.Icon({ let icon = new AMap.Icon({
opacity: 0.1, opacity: 0.1,
image: iconUrl image: iconUrl
...@@ -753,16 +765,17 @@ class gaodeMap { ...@@ -753,16 +765,17 @@ class gaodeMap {
} }
if (polyline.getExtData().lineData.alarmState == 1) { if (polyline.getExtData().lineData.alarmState == 1) {
polyline.setOptions({ strokeColor: "#ff0000" }); polyline.setOptions({ strokeColor: "#ff0000" });
}else{ } else {
polyline.setOptions({ strokeColor: "#FF5A67" }); polyline.setOptions({ strokeColor: "#FF5A67" });
} }
console.log ( polyline.getOptions() );
infoWindow.setOffset(new AMap.Pixel(X, Y)); infoWindow.setOffset(new AMap.Pixel(X, Y));
this.boxCollision(infoWindow.dom); this.boxCollision(infoWindow.dom);
this.showInfoWindow = infoWindow; this.showInfoWindow = infoWindow;
// const // const
}); });
polyline.on("mouseout", e => { polyline.on("mouseout", e => {
// console.log("polyline.getExtData().lineData.alarmState",polyline.getExtData().lineData.alarmState)
if (polyline.getExtData().lineData.alarmState == 1) return; if (polyline.getExtData().lineData.alarmState == 1) return;
polyline.setOptions({ strokeColor: "#F7FE38" }); polyline.setOptions({ strokeColor: "#F7FE38" });
// infoWindow.close(); // infoWindow.close();
...@@ -977,10 +990,20 @@ class gaodeMap { ...@@ -977,10 +990,20 @@ class gaodeMap {
item.moveMarker && item.moveMarker.show(); item.moveMarker && item.moveMarker.show();
item.polyline && item.polyline.show(); item.polyline && item.polyline.show();
item.passedPolyline && item.passedPolyline.show(); item.passedPolyline && item.passedPolyline.show();
if (item.pointArr?.length > 0) {
item.pointArr.forEach(item => {
item.show();
});
}
} else { } else {
item.moveMarker && item.moveMarker.hide(); item.moveMarker && item.moveMarker.hide();
item.polyline && item.polyline.hide(); item.polyline && item.polyline.hide();
item.passedPolyline && item.passedPolyline.hide(); item.passedPolyline && item.passedPolyline.hide();
if (item.pointArr?.length > 0) {
item.pointArr.forEach(item => {
item.hide();
});
}
} }
} }
bool ? item.show() : item.hide(); bool ? item.show() : item.hide();
......
...@@ -308,6 +308,7 @@ export default { ...@@ -308,6 +308,7 @@ export default {
submitForm() { submitForm() {
this.$refs["form"].validate(valid => { this.$refs["form"].validate(valid => {
if (valid) { if (valid) {
console.log(this.form)
this.form.resourceId = this.form.alarmId; this.form.resourceId = this.form.alarmId;
this.form.orderType = "3"; this.form.orderType = "3";
addBasicsInfo(this.form).then(response => { addBasicsInfo(this.form).then(response => {
......
<template>
<el-dialog
:title="title"
:visible.sync="open"
:close="close"
width="800px"
append-to-body
>
<el-form ref="form" :model="form" :rules="rules" label-width="130px">
<el-form-item label="报警设备" prop="deviceName">
<font>{{ form.deviceName }}</font>
</el-form-item>
<el-form-item label="报警类型" prop="alarmType">
<font>{{ form.alarmType }}</font>
</el-form-item>
<el-form-item label="报警值" prop="alarmValue">
<font>{{ form.alarmValue }}</font>
</el-form-item>
<el-form-item label="工单名称" prop="orderName">
<el-input v-model="form.orderName" placeholder="请输入工单名称" />
</el-form-item>
<el-form-item label="指定执行人员" prop="appointInspector">
<el-select
v-model="form.appointInspector"
placeholder="请选择执行人员"
clearable
size="small"
@change="setUserId"
>
<el-option
v-for="item in inspector"
:key="item.userId"
:label="item.nickName"
:value="item.userId"
></el-option>
</el-select>
</el-form-item>
<el-form-item label="工单描述" prop="remarks">
<el-input
type="textarea"
v-model="form.remarks"
placeholder="请输入工单描述"
/>
</el-form-item>
</el-form>
<div slot="footer" class="dialog-footer">
<el-button :loading="loading" type="primary" @click="submitForm"
>确 定</el-button
>
<!-- <el-button @click="cancel">取 消</el-button> -->
<el-button>取 消</el-button>
</div>
</el-dialog>
</template>
<script>
import { inspectorList } from "@/api/system/user";
import { addBasicsInfo } from "@/api/workOrder/basicsInfo";
import { getDeviceAlarm } from "@/api/dataMonitoring/deviceAlarm";
export default {
props: {
// 传进来一些内容
content: {
type: Object,
},
},
data() {
return {
form: {
deviceName: "",
alarmType: "",
alarmValue: "",
orderName: "",
appointInspector: "",
remarks: "",
},
open: false,
title: "",
inspector: [],
loading: false,
alarmId:"",
rules: {
orderName: [
{ required: true, message: "工单名称不能为空", trigger: "blur" },
],
appointInspector: [
{ required: true, message: "请选择巡检人员", trigger: "blur" },
],
},
};
},
created() {
// this.alarmId && this.handleIssue(this.alarmId);
},
watch: {
open(value, oldValue) {
if (value) {
console.log(this.alarmId);
this.handleIssue(this.alarmId)
}
},
},
methods: {
handleIssue(alarmId) {
this.getInspectorList();
getDeviceAlarm(alarmId).then((response) => {
this.form = response.data;
this.open = true;
this.title = "填写工单信息";
});
},
getInspectorList() {
this.loading = true;
inspectorList().then((response) => {
this.inspector = response.data;
this.loading = false;
});
},
setUserId(val) {
this.form.appointInspector = val;
},
submitForm() {
this.$refs["form"].validate((valid) => {
if (valid) {
this.form.resourceId = this.form.alarmId;
this.form.orderType = "3";
addBasicsInfo(this.form).then((response) => {
this.msgSuccess("生成工单成功");
this.open = false;
this.$emit("callback");
});
}
});
},
close() {
this.open = false;
},
},
};
</script>
<style>
</style>
\ No newline at end of file
...@@ -53,7 +53,7 @@ ...@@ -53,7 +53,7 @@
<div class="text"> <div class="text">
<div class="top">{{ typeName[item.type] }}</div> <div class="top">{{ typeName[item.type] }}</div>
<div class="bottom"> <div class="bottom">
{{ item.number }}{{ item.type == 99 ? "KM" : "个" }} {{ item.number }}{{ item.type == 99 ? "M" : "个" }}
</div> </div>
</div> </div>
</div> </div>
......
...@@ -100,6 +100,7 @@ ...@@ -100,6 +100,7 @@
ref="RightBototmData" ref="RightBototmData"
:list="rightBototmData" :list="rightBototmData"
/> />
<CreateWork ref="CreateWork" :open="createWorkOpen" />
</div> </div>
</template> </template>
<script> <script>
...@@ -113,11 +114,13 @@ import gaodeMap, { ...@@ -113,11 +114,13 @@ import gaodeMap, {
import { selectAlarmDevice } from "@/api/dataMonitoring/deviceAlarm.js"; import { selectAlarmDevice } from "@/api/dataMonitoring/deviceAlarm.js";
import { getAllDeviceInfo, countDeviceByType } from "@/api/device/deviceInfo"; import { getAllDeviceInfo, countDeviceByType } from "@/api/device/deviceInfo";
import RightBototmData from "./components/RightBototmData.vue"; import RightBototmData from "./components/RightBototmData.vue";
import CreateWork from "./components/CreateWork.vue";
import { getInspectorLocations } from "@/api/inspectorLocation/location"; import { getInspectorLocations } from "@/api/inspectorLocation/location";
export default { export default {
components: { components: {
RightBototmData, RightBototmData,
CreateWork,
}, },
data() { data() {
return { return {
...@@ -175,6 +178,10 @@ export default { ...@@ -175,6 +178,10 @@ export default {
// 右下角的数据data // 右下角的数据data
rightBototmData: [], rightBototmData: [],
bottomDataShow: true, bottomDataShow: true,
// 是否显示生成工单弹框
createWorkOpen: false,
// 查询用的
alarmId: "",
}; };
}, },
created() { created() {
...@@ -193,6 +200,10 @@ export default { ...@@ -193,6 +200,10 @@ export default {
gaoMap.searchTips("tipinput"); gaoMap.searchTips("tipinput");
// 获取地图上设备资源 // 获取地图上设备资源
this.getResource(); this.getResource();
// 把组件this传入类
this.gaoMap.view = this;
// 右下角数据 跟值班人员 // 右下角数据 跟值班人员
this.rightBottomData(); this.rightBottomData();
}, },
...@@ -216,15 +227,50 @@ export default { ...@@ -216,15 +227,50 @@ export default {
}, },
// 右下角数据 // 右下角数据
async rightBottomData() { async rightBottomData() {
this.gaoMap.view = this;
await countPipeLength().then((res) => { await countPipeLength().then((res) => {
// console.log("管道管道管道管道管道管道", res); // console.log("管道管道管道管道管道管道", res);
const obj = { number: res.data, type: "99" }; if (res.code == 200) {
let obj;
if (res.data > 0) {
obj = { number: res.data, type: "99" };
} else {
obj = { number: 0, type: "99" };
}
this.rightBototmData.push(obj); this.rightBototmData.push(obj);
}
}); });
await countDeviceByType().then((res) => { await countDeviceByType().then((res) => {
// console.log("markerresresresresresresresresresresresres", res); console.log("markerresresresresresresresresresresresres", res);
this.rightBototmData.push(...res.data); if (res.code == 200) {
let obj = [
{
number: 0,
type: "1",
},
{
number: 0,
type: "2",
},
{
number: 0,
type: "3",
},
{
number: 0,
type: "4",
},
];
res.data.forEach((item, index) => {
for (let i = 0; i < obj.length; i++) {
let objItem = obj[i];
if (item.type == objItem.type) {
objItem.number = item.number;
}
}
});
this.rightBototmData.push(...obj);
}
}); });
// 值班人员 // 值班人员
this.getInspectorLocations(); this.getInspectorLocations();
...@@ -232,7 +278,6 @@ export default { ...@@ -232,7 +278,6 @@ export default {
// 左边的Bar修改值 // 左边的Bar修改值
leftBarChange(item) { leftBarChange(item) {
// this.leftBarNum= this.leftBarNum != item.value ? item.value:0; // this.leftBarNum= this.leftBarNum != item.value ? item.value:0;
const index = this.leftBarNum.indexOf(item.value); const index = this.leftBarNum.indexOf(item.value);
if (index >= 0) { if (index >= 0) {
this.leftBarNum.splice(index, 1); this.leftBarNum.splice(index, 1);
...@@ -307,9 +352,9 @@ export default { ...@@ -307,9 +352,9 @@ export default {
getSelectAlarmDevice() { getSelectAlarmDevice() {
selectAlarmDevice().then((res) => { selectAlarmDevice().then((res) => {
if (res.length > 0) { if (res.length > 0) {
}
console.log("报警设备", res); console.log("报警设备", res);
this.statusChange(res); this.statusChange(res);
}
}); });
}, },
// 遍历设备改变状态 polyLines markers // 遍历设备改变状态 polyLines markers
...@@ -326,25 +371,37 @@ export default { ...@@ -326,25 +371,37 @@ export default {
if (polyLineArr.length > 0) { if (polyLineArr.length > 0) {
polyLineArr.forEach((item) => { polyLineArr.forEach((item) => {
// 获取循报警设备的id // 获取循报警设备的id
const { deviceId, alarmType, alarmValue, endTime } = item; const { deviceId, orderId,alarmId,alarmType, alarmValue, endTime } = item;
console.log("endTime", endTime);
// 获取polyLine // 获取polyLine
const polyline = this.gaoMap.polyLines.filter((item) => { const polyline = this.gaoMap.polyLines.filter((item) => {
const pipeId = item.getExtData().lineData.pipeId; const pipeId = item.getExtData().lineData.pipeId;
return deviceId == pipeId; return deviceId == pipeId;
})[0]; })[0];
polyline.setOptions({ strokeColor: "#ff0000" }); let options = polyline.getExtData();
const options = polyline.getExtData();
// 增加一个报警状态 // 增加一个报警状态
// 如果有endtime说明状态已经不是报警状态了,要归位,所有东西都要变回来 // 如果有endtime说明状态已经不是报警状态了,要归位,所有东西都要变回来
options.lineData.view =this;
options.lineData.alarmId = alarmId;
options.lineData.orderId = orderId;
if (endTime) { if (endTime) {
polyline.setOptions({ strokeColor: "#F7FE38" });
options.lineData.alarmState = 0; options.lineData.alarmState = 0;
// 报警类型
options.lineData.alarmType = null;
// 报警信息
options.lineData.alarmValue = null;
console.log("管道回复");
} else { } else {
polyline.setOptions({ strokeColor: "#ff0000" });
options.lineData.alarmState = 1; options.lineData.alarmState = 1;
}
// 报警类型 // 报警类型
options.lineData.alarmType = alarmType; options.lineData.alarmType = alarmType;
// 报警信息 // 报警信息
options.lineData.alarmValue = alarmValue; options.lineData.alarmValue = alarmValue;
console.log("管道报警");
}
polyline.setExtData(options); polyline.setExtData(options);
}); });
} }
...@@ -353,7 +410,8 @@ export default { ...@@ -353,7 +410,8 @@ export default {
if (deviceArr.length > 0) { if (deviceArr.length > 0) {
deviceArr.forEach((item) => { deviceArr.forEach((item) => {
// 获取循报警设备的id // 获取循报警设备的id
const { deviceId, alarmType, alarmValue, endTime } = item; const { deviceId,alarmId, alarmType, alarmValue, endTime,orderId } = item;
console.log("endTime", endTime);
// 获取polyLine // 获取polyLine
const device = this.gaoMap.markers.filter((item) => { const device = this.gaoMap.markers.filter((item) => {
const id = item.getExtData().deviceId; const id = item.getExtData().deviceId;
...@@ -364,58 +422,86 @@ export default { ...@@ -364,58 +422,86 @@ export default {
// 增加一个报警状态 // 增加一个报警状态
// 如果有endtime说明状态已经不是报警状态了,要归位,所有东西都要变回来 // 如果有endtime说明状态已经不是报警状态了,要归位,所有东西都要变回来
options.view=this;
options.alarmId = alarmId;
options.orderId = orderId;
if (endTime) { if (endTime) {
options.lineData.alarmState = 0; console.log("设备恢复");
options.alarmState = 0;
// 报警类型
options.alarmType = null;
// 报警信息
options.alarmValue = null;
} else { } else {
options.lineData.alarmState = 1; console.log("设备报警");
} options.alarmState = 1;
// 报警类型 // 报警类型
options.alarmType = alarmType; options.alarmType = alarmType;
// 报警信息 // 报警信息
options.alarmValue = alarmValue; options.alarmValue = alarmValue;
}
device.setExtData(options); device.setExtData(options);
// const imageName = device.getExtData() // const imageName = device.getExtData()
// console.log(imageName) // console.log(imageName)
console.log(
"device.getExtData().deviceType============",
device.getExtData().deviceType
);
// 3是流量计 4是压力表 // 3是流量计 4是压力表
if (device.getExtData().deviceType == 3) { if (device.getExtData().deviceType == 3) {
// 如果有endtime说明已经维护好了
if (endTime) {
this.gaoMap.changeMarkIcon(
device,
require(`@/assets/images/liuliangji.png`)
);
} else {
this.gaoMap.changeMarkIcon( this.gaoMap.changeMarkIcon(
device, device,
require(`@/assets/images/lljWran.png`) require(`@/assets/images/lljWran.png`)
); );
}
} else if (device.getExtData().deviceType == 4) { } else if (device.getExtData().deviceType == 4) {
if (endTime) {
this.gaoMap.changeMarkIcon(
device,
require(`@/assets/images/yalibiao.png`)
);
} else {
this.gaoMap.changeMarkIcon( this.gaoMap.changeMarkIcon(
device, device,
require(`@/assets/images/ylbWran.png`) require(`@/assets/images/ylbWran.png`)
); );
} }
}
}); });
} }
if (this.ws) return;
this.socket(); this.socket();
}, },
socket() { socket() {
this.ws = new WebSocket("ws://36.148.23.59:8901/gassafety/websocketServer"); console.log("socket执行");
this.ws = new WebSocket(
"ws://36.148.23.59:8901/gassafety/websocketServer"
);
// this.ws = new WebSocket( // this.ws = new WebSocket(
// "ws://192.168.2.23:8903/gassafety/websocketServer" // "ws://192.168.2.23:8903/gassafety/websocketServer"
// ); // );
this.ws.onopen = (evt) => { this.ws.onopen = (evt) => {
console.log("WebSockets=======gogogog"); console.log("WebSockets=======gogogog");
this.ws.send("WebSockets!========================="); // this.ws.send("WebSockets!=========================");
}; };
this.ws.onmessage = (evt) => { this.ws.onmessage = (evt) => {
console.log("Received Message: " + evt.data); console.log("推送", evt);
// console.log("Received Message: " + evt.data);
// ws.close(); // ws.close();
this.statusChange([evt.data]); const obj = JSON.parse(evt.data);
this.statusChange([obj]);
}; };
this.ws.onclose = () => { this.ws.onclose = () => {
console.log("ws协议关闭"); console.log("ws协议关闭");
}; };
// this.ws.onclose = function (evt) { this.ws.onclose = function (evt) {
// console.log("Connection closed."); console.log("关闭");
// }; };
}, },
// 选择新建项目哪个 // 选择新建项目哪个
...@@ -619,13 +705,22 @@ export default { ...@@ -619,13 +705,22 @@ export default {
this.initMap(); this.initMap();
this.leftBarNum = [1, 2, 3, 4, 7, 8, 9]; this.leftBarNum = [1, 2, 3, 4, 7, 8, 9];
}, },
// 改变弹框状态
openChange(bool){
this.createWorkOpen=bool;
}
}, },
beforeDestroy() { beforeDestroy() {
console.log("移除window事件"); console.log("移除window事件");
window.removeEventListener("click", this.barClose); map.clearMap();
window.removeEventListener("mousedown", this.barClose);
// 关闭scoket // 关闭scoket
if (this.ws) {
this.ws.close(); this.ws.close();
this.ws = null;
}
}, },
}; };
</script> </script>
......
...@@ -81,7 +81,7 @@ export default { ...@@ -81,7 +81,7 @@ export default {
code: [{ required: true, trigger: "change", message: "验证码不能为空" }] code: [{ required: true, trigger: "change", message: "验证码不能为空" }]
}, },
loading: false, loading: false,
redirect: undefined redirect: "/index"
}; };
}, },
watch: { watch: {
......
'use strict' "use strict";
const path = require('path') const path = require("path");
const defaultSettings = require('./src/settings.js') const defaultSettings = require("./src/settings.js");
function resolve(dir) { function resolve(dir) {
return path.join(__dirname, dir) return path.join(__dirname, dir);
} }
const name = defaultSettings.title || '燃气安全管理系统' // 标题 const name = defaultSettings.title || "燃气安全管理系统"; // 标题
const port = process.env.port || process.env.npm_config_port || 80 // 端口 const port = process.env.port || process.env.npm_config_port || 80; // 端口
// vue.config.js 配置说明 // vue.config.js 配置说明
//官方vue.config.js 参考文档 https://cli.vuejs.org/zh/config/#css-loaderoptions //官方vue.config.js 参考文档 https://cli.vuejs.org/zh/config/#css-loaderoptions
...@@ -18,104 +18,113 @@ module.exports = { ...@@ -18,104 +18,113 @@ module.exports = {
// 默认情况下,Vue CLI 会假设你的应用是被部署在一个域名的根路径上 // 默认情况下,Vue CLI 会假设你的应用是被部署在一个域名的根路径上
publicPath: process.env.NODE_ENV === "production" ? "/" : "/", publicPath: process.env.NODE_ENV === "production" ? "/" : "/",
// 在npm run build 或 yarn build 时 ,生成文件的目录名称(要和baseUrl的生产环境路径一致)(默认dist) // 在npm run build 或 yarn build 时 ,生成文件的目录名称(要和baseUrl的生产环境路径一致)(默认dist)
outputDir: 'dist', outputDir: "dist",
// 用于放置生成的静态资源 (js、css、img、fonts) 的;(项目打包之后,静态资源会放在这个文件夹下) // 用于放置生成的静态资源 (js、css、img、fonts) 的;(项目打包之后,静态资源会放在这个文件夹下)
assetsDir: 'static', assetsDir: "static",
// 是否开启eslint保存检测,有效值:ture | false | 'error' // 是否开启eslint保存检测,有效值:ture | false | 'error'
lintOnSave: process.env.NODE_ENV === 'development', lintOnSave: process.env.NODE_ENV === "development",
// 如果你不需要生产环境的 source map,可以将其设置为 false 以加速生产环境构建。 // 如果你不需要生产环境的 source map,可以将其设置为 false 以加速生产环境构建。
productionSourceMap: false, productionSourceMap: false,
// webpack-dev-server 相关配置 // webpack-dev-server 相关配置
devServer: { devServer: {
host: '0.0.0.0', host: "0.0.0.0",
port: port, port: port,
open: true, open: true,
proxy: { proxy: {
// detail: https://cli.vuejs.org/config/#devserver-proxy // detail: https://cli.vuejs.org/config/#devserver-proxy
[process.env.VUE_APP_BASE_API]: { [process.env.VUE_APP_BASE_API]: {
// target: `http://36.148.23.59:8901/gassafety`,
target: `http://36.148.23.59:8901/gassafety`, target: `http://36.148.23.59:8901/gassafety`,
changeOrigin: true, changeOrigin: true,
pathRewrite: { pathRewrite: {
['^' + process.env.VUE_APP_BASE_API]: '' ["^" + process.env.VUE_APP_BASE_API]: ""
}
} }
}, },
// "/websocket": {
// target: "ws://192.168.2.23:8903/gassafety/websocketServer",
// ws: true,
// changeOrigin: true,
// logLevel: "debug",
// secure: false,
// pathRewrite: {
// "^/websocket": ""
// }
// }
},
disableHostCheck: true disableHostCheck: true
}, },
configureWebpack: { configureWebpack: {
name: name, name: name,
resolve: { resolve: {
alias: { alias: {
'@': resolve('src'), "@": resolve("src"),
'utils' : resolve('src/utils') utils: resolve("src/utils")
} }
}, },
externals: { externals: {
'AMap': 'AMap' AMap: "AMap"
} }
}, },
chainWebpack(config) { chainWebpack(config) {
config.plugins.delete('preload') // TODO: need test config.plugins.delete("preload"); // TODO: need test
config.plugins.delete('prefetch') // TODO: need test config.plugins.delete("prefetch"); // TODO: need test
// set svg-sprite-loader // set svg-sprite-loader
config.module config.module
.rule('svg') .rule("svg")
.exclude.add(resolve('src/assets/icons')) .exclude.add(resolve("src/assets/icons"))
.end() .end();
config.module config.module
.rule('icons') .rule("icons")
.test(/\.svg$/) .test(/\.svg$/)
.include.add(resolve('src/assets/icons')) .include.add(resolve("src/assets/icons"))
.end() .end()
.use('svg-sprite-loader') .use("svg-sprite-loader")
.loader('svg-sprite-loader') .loader("svg-sprite-loader")
.options({ .options({
symbolId: 'icon-[name]' symbolId: "icon-[name]"
}) })
.end() .end();
config.when(process.env.NODE_ENV !== "development", config => {
config config
.when(process.env.NODE_ENV !== 'development', .plugin("ScriptExtHtmlWebpackPlugin")
config => { .after("html")
config .use("script-ext-html-webpack-plugin", [
.plugin('ScriptExtHtmlWebpackPlugin') {
.after('html')
.use('script-ext-html-webpack-plugin', [{
// `runtime` must same as runtimeChunk name. default is `runtime` // `runtime` must same as runtimeChunk name. default is `runtime`
inline: /runtime\..*\.js$/ inline: /runtime\..*\.js$/
}]) }
.end() ])
config .end();
.optimization.splitChunks({ config.optimization.splitChunks({
chunks: 'all', chunks: "all",
cacheGroups: { cacheGroups: {
libs: { libs: {
name: 'chunk-libs', name: "chunk-libs",
test: /[\\/]node_modules[\\/]/, test: /[\\/]node_modules[\\/]/,
priority: 10, priority: 10,
chunks: 'initial' // only package third parties that are initially dependent chunks: "initial" // only package third parties that are initially dependent
}, },
elementUI: { elementUI: {
name: 'chunk-elementUI', // split elementUI into a single package name: "chunk-elementUI", // split elementUI into a single package
priority: 20, // the weight needs to be larger than libs and app or it will be packaged into libs or app priority: 20, // the weight needs to be larger than libs and app or it will be packaged into libs or app
test: /[\\/]node_modules[\\/]_?element-ui(.*)/ // in order to adapt to cnpm test: /[\\/]node_modules[\\/]_?element-ui(.*)/ // in order to adapt to cnpm
}, },
commons: { commons: {
name: 'chunk-commons', name: "chunk-commons",
test: resolve('src/components'), // can customize your rules test: resolve("src/components"), // can customize your rules
minChunks: 3, // minimum common number minChunks: 3, // minimum common number
priority: 5, priority: 5,
reuseExistingChunk: true reuseExistingChunk: true
} }
} }
}) });
config.optimization.runtimeChunk('single'), config.optimization.runtimeChunk("single"),
{ {
from: path.resolve(__dirname, './public/robots.txt'), //防爬虫文件 from: path.resolve(__dirname, "./public/robots.txt"), //防爬虫文件
to: './', //到根目录下 to: "./" //到根目录下
};
});
} }
} };
)
}
}
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