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

生成工单制作完成

parent e63c5879
......@@ -77,12 +77,20 @@
<!-- 报警状态 -->
<div class="warn-wrapper" v-if="true">
<div class="warn-content">
<div>报警状态:<span>报警({{alarmType}})</span></div>
<div>详细信息:<span>{{alarmValue?alarmValue:"-"}}</span></div>
<div>
报警状态:<span>报警({{ alarmType }})</span>
</div>
<div>
详细信息:<span>{{ alarmValue ? alarmValue : "-" }}</span>
</div>
</div>
<div class="btn">
<el-button class="elbtn" type="primary">设备详情</el-button>
<el-button class="elbtn" type="primary">生成工单</el-button>
<div @click.stop="stopPropatation" class="btn">
<span>
<el-button class="elbtn" type="primary">设备详情</el-button>
</span>
<span v-if="orderId" @mousedown.stop="createWork">
<el-button class="elbtn" type="primary">生成工单</el-button>
</span>
</div>
</div>
</div>
......@@ -95,10 +103,8 @@ export default {
props: {
obj: { typs: Object },
},
data(){
return {
}
data() {
return {};
},
created() {
console.log("created", this.obj);
......@@ -108,17 +114,21 @@ export default {
bigImageArr() {
return [this.obj.iconUrl];
},
alarmType(){
alarmType() {
return this.obj.polyline.getExtData().lineData.alarmType;
},
alarmValue(){
alarmValue() {
return this.obj.polyline.getExtData().lineData.alarmValue;
}
},
orderId() {
// 如果已经生成过工单,就不能再次生成了
return this.obj.polyline.getExtData().lineData.orderId ? false : true;
},
},
methods: {
moment,
mousedown(e) {
console.log("??")
console.log("??");
return;
// console.log(this.$refs.previewImg)
this.$refs.previewImg.showViewer = true;
......@@ -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() {
this.obj.polyline.infoWindow.close();
},
......@@ -152,7 +167,7 @@ export default {
.top {
width: 100%;
height: 51px;
background-color: #FF5A67;
background-color: #ff5a67;
.text {
font-weight: 600;
font-size: 16px;
......@@ -241,7 +256,7 @@ export default {
box-sizing: border-box;
padding: 10px 0 2px 22px;
border-bottom: 1px solid #e2e2e2;
color:#FE5966;
color: #fe5966;
& > div {
font-size: 14px;
font-weight: 400;
......@@ -251,11 +266,16 @@ export default {
.btn {
padding: 16px 0;
text-align: center;
.elbtn {
background-color: #053b6a;
box-shadow: 0px 3px 6px rgba(0, 0, 0, 0.16);
width: 95px;
height: 33px;
span {
display: inline-block;
padding: 0 10px;
.elbtn {
background-color: #053b6a;
box-shadow: 0px 3px 6px rgba(0, 0, 0, 0.16);
width: 95px;
height: 33px;
border: none;
}
}
}
}
......
......@@ -64,12 +64,25 @@
<!-- 报警状态 -->
<div class="warn-wrapper" v-if="true">
<div class="warn-content">
<div>报警状态:<span>报警({{data.alarmType}})</span></div>
<div>详细信息:<span>{{data.alarmValue?data.alarmValue :"-"}}</span></div>
<div>
报警状态:<span>报警({{ data.alarmType }})</span>
</div>
<div>
详细信息:<span>{{ data.alarmValue ? data.alarmValue : "-" }}</span>
</div>
</div>
<div class="btn">
<el-button class="elbtn" type="primary">设备详情</el-button>
<el-button v-if="title=='压力表'|| title=='流量计' " class="elbtn" type="primary">生成工单</el-button>
<span>
<el-button 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>
......@@ -85,8 +98,24 @@ export default {
data: {},
map: null,
},
computed: {
orderId() {
// 如果已经生成过工单,就不能再次生成了
return this.data.orderId ? false : true;
},
},
methods: {
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>
......@@ -102,7 +131,7 @@ export default {
.top {
width: 100%;
height: 51px;
background-color: #FF5A67;
background-color: #ff5a67;
.text {
font-weight: 600;
font-size: 16px;
......@@ -201,11 +230,16 @@ export default {
.btn {
padding: 16px 0;
text-align: center;
.elbtn {
background-color: #053b6a;
box-shadow: 0px 3px 6px rgba(0, 0, 0, 0.16);
width: 95px;
height: 33px;
span {
display: inline-block;
padding: 0 10px;
.elbtn {
background-color: #053b6a;
box-shadow: 0px 3px 6px rgba(0, 0, 0, 0.16);
width: 95px;
height: 33px;
border: none;
}
}
}
}
......
......@@ -135,8 +135,6 @@ export default {
},
// 菜单选择事件
handleSelect(key, keyPath) {
console.log("key", key);
console.log("keypath", keyPath);
let path;
this.currentIndex = key;
if (this.ishttp(key)) {
......@@ -148,8 +146,15 @@ export default {
} else {
// 显示左侧联动菜单
path = this.activeRoutes(key);
console.log(path)
console.log(this.$route.path)
if (this.$route.path != path[0].path) {
this.$router.push(path[0].path);
if(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") {
......@@ -163,6 +168,7 @@ export default {
},
// 当前激活的路由
activeRoutes(key) {
// if(this.$route.path=="/index") return;
var routes = [];
if (this.childrenMenus && this.childrenMenus.length > 0) {
this.childrenMenus.map((item) => {
......
......@@ -328,12 +328,12 @@ class gaodeMap {
function infoOpen(e) {
if (e.target.getExtData().alarmState == 1) {
if(e.target.getExtData().deviceType==4){
if (e.target.getExtData().deviceType == 4) {
that.markerType = "7";
}else if(e.target.getExtData().deviceType<=3){
that.markerType = +e.target.getExtData().deviceType+1+"";
} else if (e.target.getExtData().deviceType <= 3) {
that.markerType = +e.target.getExtData().deviceType + 1 + "";
}
console.log("that.markerType",that.markerType )
console.log("that.markerType", that.markerType);
// 警告状态这样就要换infowindow
e.target.content = that.getMarketContent(
e.target.getExtData(),
......@@ -346,12 +346,12 @@ class gaodeMap {
// ? "2"
// : e.target.getExtData().deviceType + "";
// 上图状态跟后台状态不统一,所以需要判断一下
if(e.target.getExtData().deviceType==4){
if (e.target.getExtData().deviceType == 4) {
that.markerType = "7";
}else if(e.target.getExtData().deviceType<=3){
that.markerType = +e.target.getExtData().deviceType+1+"";
} else if (e.target.getExtData().deviceType <= 3) {
that.markerType = +e.target.getExtData().deviceType + 1 + "";
}
console.log("that.markerType")
console.log("that.markerType");
e.target.content = that.getMarketContent(
e.target.getExtData(),
markerInfoWindow
......@@ -485,7 +485,7 @@ class gaodeMap {
* @param marker
*/
setMarkerIcon(marker) {
console.log(this.markerType)
console.log(this.markerType);
switch (this.markerType) {
case DEVICE_TYPE.REGEULATORBOX: {
let icon = new AMap.Icon({
......@@ -554,7 +554,7 @@ class gaodeMap {
}
}
}
changeMarkIcon(marker,iconUrl){
changeMarkIcon(marker, iconUrl) {
let icon = new AMap.Icon({
opacity: 0.1,
image: iconUrl
......@@ -765,10 +765,10 @@ class gaodeMap {
}
if (polyline.getExtData().lineData.alarmState == 1) {
polyline.setOptions({ strokeColor: "#ff0000" });
}else{
} else {
polyline.setOptions({ strokeColor: "#FF5A67" });
}
console.log ( polyline.getOptions() );
infoWindow.setOffset(new AMap.Pixel(X, Y));
this.boxCollision(infoWindow.dom);
this.showInfoWindow = infoWindow;
......@@ -990,10 +990,20 @@ class gaodeMap {
item.moveMarker && item.moveMarker.show();
item.polyline && item.polyline.show();
item.passedPolyline && item.passedPolyline.show();
if (item.pointArr?.length > 0) {
item.pointArr.forEach(item => {
item.show();
});
}
} else {
item.moveMarker && item.moveMarker.hide();
item.polyline && item.polyline.hide();
item.passedPolyline && item.passedPolyline.hide();
if (item.pointArr?.length > 0) {
item.pointArr.forEach(item => {
item.hide();
});
}
}
}
bool ? item.show() : item.hide();
......
......@@ -278,6 +278,7 @@ export default {
submitForm() {
this.$refs["form"].validate(valid => {
if (valid) {
console.log(this.form)
this.form.resourceId = this.form.alarmId;
this.form.orderType = "3";
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 @@
<div class="text">
<div class="top">{{ typeName[item.type] }}</div>
<div class="bottom">
{{ item.number }}{{ item.type == 99 ? "KM" : "个" }}
{{ item.number }}{{ item.type == 99 ? "M" : "个" }}
</div>
</div>
</div>
......
......@@ -100,6 +100,7 @@
ref="RightBototmData"
:list="rightBototmData"
/>
<CreateWork ref="CreateWork" :open="createWorkOpen" />
</div>
</template>
<script>
......@@ -113,11 +114,13 @@ import gaodeMap, {
import { selectAlarmDevice } from "@/api/dataMonitoring/deviceAlarm.js";
import { getAllDeviceInfo, countDeviceByType } from "@/api/device/deviceInfo";
import RightBototmData from "./components/RightBototmData.vue";
import CreateWork from "./components/CreateWork.vue";
import { getInspectorLocations } from "@/api/inspectorLocation/location";
export default {
components: {
RightBototmData,
CreateWork,
},
data() {
return {
......@@ -175,6 +178,10 @@ export default {
// 右下角的数据data
rightBototmData: [],
bottomDataShow: true,
// 是否显示生成工单弹框
createWorkOpen: false,
// 查询用的
alarmId: "",
};
},
created() {
......@@ -193,6 +200,10 @@ export default {
gaoMap.searchTips("tipinput");
// 获取地图上设备资源
this.getResource();
// 把组件this传入类
this.gaoMap.view = this;
// 右下角数据 跟值班人员
this.rightBottomData();
},
......@@ -216,15 +227,50 @@ export default {
},
// 右下角数据
async rightBottomData() {
this.gaoMap.view = this;
await countPipeLength().then((res) => {
// console.log("管道管道管道管道管道管道", res);
const obj = { number: res.data, type: "99" };
this.rightBototmData.push(obj);
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);
}
});
await countDeviceByType().then((res) => {
// console.log("markerresresresresresresresresresresresres", res);
this.rightBototmData.push(...res.data);
console.log("markerresresresresresresresresresresresres", res);
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();
......@@ -232,7 +278,6 @@ export default {
// 左边的Bar修改值
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);
......@@ -326,7 +371,7 @@ export default {
if (polyLineArr.length > 0) {
polyLineArr.forEach((item) => {
// 获取循报警设备的id
const { deviceId, alarmType, alarmValue, endTime } = item;
const { deviceId, orderId,alarmId,alarmType, alarmValue, endTime } = item;
console.log("endTime", endTime);
// 获取polyLine
const polyline = this.gaoMap.polyLines.filter((item) => {
......@@ -336,6 +381,9 @@ export default {
let options = polyline.getExtData();
// 增加一个报警状态
// 如果有endtime说明状态已经不是报警状态了,要归位,所有东西都要变回来
options.lineData.view =this;
options.lineData.alarmId = alarmId;
options.lineData.orderId = orderId;
if (endTime) {
polyline.setOptions({ strokeColor: "#F7FE38" });
options.lineData.alarmState = 0;
......@@ -362,7 +410,7 @@ export default {
if (deviceArr.length > 0) {
deviceArr.forEach((item) => {
// 获取循报警设备的id
const { deviceId, alarmType, alarmValue, endTime } = item;
const { deviceId,alarmId, alarmType, alarmValue, endTime,orderId } = item;
console.log("endTime", endTime);
// 获取polyLine
const device = this.gaoMap.markers.filter((item) => {
......@@ -374,6 +422,9 @@ export default {
// 增加一个报警状态
// 如果有endtime说明状态已经不是报警状态了,要归位,所有东西都要变回来
options.view=this;
options.alarmId = alarmId;
options.orderId = orderId;
if (endTime) {
console.log("设备恢复");
options.alarmState = 0;
......@@ -654,15 +705,21 @@ export default {
this.initMap();
this.leftBarNum = [1, 2, 3, 4, 7, 8, 9];
},
// 改变弹框状态
openChange(bool){
this.createWorkOpen=bool;
}
},
beforeDestroy() {
console.log("移除window事件");
window.removeEventListener("click", this.barClose);
map.clearMap();
window.removeEventListener("mousedown", this.barClose);
// 关闭scoket
if (this.ws) {
this.ws.close();
this.ws=null;
this.ws = null;
}
},
};
......
......@@ -81,7 +81,7 @@ export default {
code: [{ required: true, trigger: "change", message: "验证码不能为空" }]
},
loading: false,
redirect: undefined
redirect: "/index"
};
},
watch: {
......
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