fix: 修改智能安全帽和机械设备定位模块若干bug

This commit is contained in:
vce 2024-03-22 20:06:42 +08:00
parent d75501bf7d
commit b98dff8772
3 changed files with 177 additions and 91 deletions

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.6 KiB

View File

@ -158,7 +158,7 @@
</el-checkbox-group>
</el-scrollbar>
</div>
<div v-else style="text-align: center; margin-top: 100px; color: #fff">暂无围栏</div>
<div v-else style="text-align: center; margin-top: 65px; color: #fff">暂无围栏</div>
</div>
<!-- 创建围栏弹窗 -->
<div class="fenceCreate" v-if="fenceCreateShow">
@ -168,7 +168,7 @@
</div>
<!-- <div class="fence-title">创建围栏</div> -->
<el-form size="medium" :model="addForm" ref="addFormRef" label-width="80px" :rules="formFenceRules">
<div class="bigFormBox">
<!-- <div class="bigFormBox">
<div class="itemBox1">
<div>围栏名称</div>
<div><el-input v-model="addForm.fenceName" placeholder="请输入"></el-input></div>
@ -201,40 +201,40 @@
<div class="itemBox4" v-if="addForm.rangeType === 2">
<div>围栏形状</div>
<div>
<!-- <div class="fence-shape">多边形</div> -->
<div class="">多边形</div>
</div>
</div>
</div> -->
<div style="margin-top: 15%">
<el-form-item class="el-form-item__label" label="围栏名称" prop="fenceName">
<el-input v-model="addForm.fenceName" placeholder="请输入"></el-input>
</el-form-item>
<el-form-item label="范围类型" prop="rangeType">
<el-radio-group
v-model="addForm.rangeType"
style="display: flex; justify-content: space-between; padding-top: 0px; padding-right: 0px"
@change="changeAreaType"
>
<el-radio :label="1">标准区域</el-radio>
<el-radio :label="2">自定义</el-radio>
</el-radio-group>
</el-form-item>
<el-form-item label="区域半径" prop="areaRadius" v-if="addForm.rangeType === 1">
<el-input
type="number"
v-model="addForm.areaRadius"
placeholder="请输入"
:maxlength="5"
@input="areaRadiusChange"
></el-input>
</el-form-item>
<el-form-item label="围栏形状" prop="fenceShape" v-if="addForm.rangeType === 2">
<div class="fence-shape">多边形</div>
</el-form-item>
</div>
<!-- <el-form-item class="el-form-item__label" label="围栏名称" prop="fenceName">
<el-input v-model="addForm.fenceName" placeholder="请输入"></el-input>
</el-form-item>
<el-form-item label="范围类型" prop="rangeType">
<el-radio-group
v-model="addForm.rangeType"
style="display: flex; justify-content: space-between; padding-top: 10px; padding-right: 10px"
@change="changeAreaType"
>
<el-radio :label="1">标准区域</el-radio>
<el-radio :label="2">自定义</el-radio>
</el-radio-group>
</el-form-item>
<el-form-item label="区域半径" prop="areaRadius" v-if="addForm.rangeType === 1">
<el-input
type="number"
v-model="addForm.areaRadius"
placeholder="请输入"
:maxlength="5"
@input="areaRadiusChange"
></el-input>
</el-form-item>
<el-form-item label="围栏形状" prop="fenceShape" v-if="addForm.rangeType === 2">
<div class="fence-shape">多边形</div>
</el-form-item> -->
<div class="cFooter">
<div class="tool tool1" @click="handleCancel">取消</div>
<div class="tool tool1" @click="closeFenceCreate">取消</div>
<div class="tool tool2" @click="submitFence(addFormRef)">保存</div>
</div>
</el-form>
@ -366,6 +366,23 @@ let addForm = ref({
projectSn: "",
enterpriseId: ""
});
let formFenceRules = ref({
fenceName: [
{
required: true,
message: "必填",
trigger: "blur"
},
{ min: 1, max: 20, message: "长度在 1 到 20 个字符", trigger: "blur" }
], //
areaRadius: [
{
required: true,
message: "必填",
trigger: "change"
}
]
});
let pagInfo = ref({
pageNo: 1, //
pageSize: 10, //
@ -431,6 +448,24 @@ watch(choiceMonth, newVal => {
});
function handleCancel() {
fenceCreateShow.value = false;
addForm.value = {
areaRadius: 100, //
fenceName: "", //
addr: "",
rangeType: 1,
locationList: [
{
fenceId: 0,
id: 0,
latitude: "",
longitude: "",
sortNum: 0
}
],
projectSn: "",
enterpriseId: ""
};
exitEditFn();
clearFn();
}
@ -507,7 +542,7 @@ function deleteFenceInfo(idGroups) {
});
}
const submitFence = async (formEL: FormInstance | undefined) => {
if (locationList.value.length == 0) {
if (locationList.value.length === 0) {
ElMessage({
showClose: true,
message: "未设置围栏区域!",
@ -710,20 +745,21 @@ function openFenceCreate() {
//
function closeFenceCreate() {
fenceCreateShow.value = false;
let tempArr = [
{
fenceId: 0,
id: 0,
latitude: "",
longitude: "",
sortNum: 0
}
];
addForm.value = {
areaRadius: 100, //
fenceName: "", //
addr: "",
rangeType: 1,
locationList: [
{
fenceId: 0,
id: 0,
latitude: "",
longitude: "",
sortNum: 0
}
],
locationList: tempArr,
projectSn: "",
enterpriseId: ""
};
@ -1421,7 +1457,7 @@ function echoPersonMarker(item) {
marker.emit("click", { target: marker });
}
}
let address = "未知";
let address = "<text style='color: darkred;font-weight:bolder'>未知</text>";
AMap.plugin("AMap.Geocoder", function () {
let geocoder = new AMap.Geocoder();
@ -1450,6 +1486,7 @@ function echoPersonMarker(item) {
info.push('<p style="padding:7px;">设备名称: ' + item.equipmentName + "</p>");
info.push('<p style="padding:7px;">最后更新时间: ' + item.updateTime + "</p>");
info.push('<p style="padding:7px;">位置: ' + address + "</p>");
info.push('<p style="padding:7px;">经纬度: ' + item.longitude + " | " + item.latitude + "</p>");
var infoWindow = new AMap.InfoWindow({
offset: new AMap.Pixel(10, -30),
@ -1536,7 +1573,7 @@ function echoPersonMarker(item) {
background-size: 100% 100%;
box-sizing: border-box;
padding: 25px;
width: 330px;
width: 360px;
height: 380px;
left: 40px;
top: 40px;
@ -1563,6 +1600,12 @@ function echoPersonMarker(item) {
color: rgba(255, 255, 255, 0.6);
font-size: 18px;
}
:deep(.el-form-item__label) {
color: #fff;
}
:deep(.el-radio__label) {
color: #fff;
}
.cFooter {
width: 70%;
display: flex;
@ -1905,6 +1948,16 @@ function echoPersonMarker(item) {
margin-top: 1% !important;
}
}
:deep(.titltText) {
margin: 0 0 0 0;
height: 100%;
margin-left: 0.08rem;
margin-top: -0.03rem;
display: flex;
align-items: center;
letter-spacing: 0.01rem;
}
.wei-lan {
.icon-off {
position: absolute;

View File

@ -17,7 +17,12 @@
<el-form :inline="true" size="medium" :model="queryInfo" class="demo-form-inline" style="margin-left: 15px">
<el-form-item>
<el-select filterable v-model="queryInfo.devSn" placeholder="请选择或搜索" @change="devChange">
<el-option v-for="(item, index) in nameOptions" :key="index" :label="item.label" :value="item.value"></el-option>
<el-option
v-for="(item, index) in nameOptions"
:key="index"
:label="item.label"
:value="item.value"
></el-option>
<!-- <el-option v-for="(item, index) in devList" :key="index" :label="item.workerName" :value="item.devSn" ></el-option> -->
</el-select>
</el-form-item>
@ -70,7 +75,12 @@
<el-form-item>
<span style="color: #fff; margin-left: 25px; margin-right: 10px">人员名称</span>
<el-select filterable v-model="queryInfo.devSn" placeholder="请选择或搜索" @change="devChange" clearable>
<el-option v-for="(item, index) in nameOptions" :key="index" :label="item.label" :value="item.value"></el-option>
<el-option
v-for="(item, index) in nameOptions"
:key="index"
:label="item.label"
:value="item.value"
></el-option>
<!-- <el-option v-for="(item, index) in devList" :key="index" :label="item.workerName" :value="item.workerInfoId" ></el-option> -->
</el-select>
</el-form-item>
@ -106,7 +116,7 @@
<div style="width: 50%">{{ item.fenceName }}</div>
<div style="width: 50%">{{ item.workerNum }}</div>
</div>
<div class="not-data" v-if="fenceList.length == 0">
<div class="not-data" style="top: 20%" v-if="fenceList.length == 0">
<img src="@/assets/images/noData.png" alt="" />
<p>暂无数据</p>
</div>
@ -167,7 +177,7 @@
</el-checkbox-group>
</el-scrollbar>
</div>
<div v-else style="text-align: center; margin-top: 100px; color: #fff">暂无围栏</div>
<div v-else style="text-align: center; margin-top: 65px; color: #fff">暂无围栏</div>
</div>
<!-- 创建围栏弹窗 -->
@ -178,7 +188,7 @@
</div>
<!-- <div class="fence-title">创建围栏</div> -->
<el-form size="medium" :model="addForm" ref="addFormRef" label-width="80px" :rules="formFenceRules">
<div class="bigFormBox">
<!-- <div class="bigFormBox">
<div class="itemBox1">
<div>围栏名称</div>
<div><el-input v-model="addForm.fenceName" placeholder="请输入"></el-input></div>
@ -211,38 +221,40 @@
<div class="itemBox4" v-if="addForm.rangeType === 2">
<div>围栏形状</div>
<div>
<!-- <div class="fence-shape">多边形</div> -->
<div class="">多边形</div>
</div>
</div>
</div>
<!-- <el-form-item label="围栏名称" prop="fenceName">
<el-input v-model="addForm.fenceName" placeholder="请输入"></el-input>
</el-form-item>
</div> -->
<div style="margin-top: 15%">
<el-form-item label="围栏名称" prop="fenceName">
<el-input v-model="addForm.fenceName" placeholder="请输入"></el-input>
</el-form-item>
<el-form-item label="范围类型" prop="rangeType">
<el-radio-group
v-model="addForm.rangeType"
style="display: flex; justify-content: space-between; padding-top: 10px; padding-right: 10px"
@change="changeAreaType"
>
<el-radio :label="1">标准区域</el-radio>
<el-radio :label="2">自定义</el-radio>
</el-radio-group>
</el-form-item>
<el-form-item label="区域半径" prop="areaRadius" v-if="addForm.rangeType === 1">
<el-input
type="number"
v-model="addForm.areaRadius"
placeholder="请输入"
:maxlength="5"
@input="areaRadiusChange"
></el-input>
</el-form-item>
<el-form-item label="围栏形状" prop="fenceShape" v-if="addForm.rangeType === 2">
<div class="fence-shape">多边形</div>
</el-form-item>
<div class="create-footer">
<el-form-item label="范围类型" prop="rangeType">
<el-radio-group
v-model="addForm.rangeType"
style="display: flex; justify-content: space-between; padding-top: 0px; padding-right: 0px"
@change="changeAreaType"
>
<el-radio :label="1">标准区域</el-radio>
<el-radio :label="2">自定义</el-radio>
</el-radio-group>
</el-form-item>
<el-form-item label="区域半径" prop="areaRadius" v-if="addForm.rangeType === 1">
<el-input
type="number"
v-model="addForm.areaRadius"
placeholder="请输入"
:maxlength="5"
@input="areaRadiusChange"
></el-input>
</el-form-item>
<el-form-item label="围栏形状" prop="fenceShape" v-if="addForm.rangeType === 2">
<div class="fence-shape">多边形</div>
</el-form-item>
</div>
<!-- <div class="create-footer">
<el-button class="cancleBtn" @click="fenceCreateShow = false" icon="el-icon-circle-close" size="medium"
>取消
</el-button>
@ -250,9 +262,9 @@
>保存
</el-button>
</div> -->
<div class="cFooter">
<div class="tool tool1" @click="handleCancel">取消</div>
<div class="tool tool1" @click="closeFenceCreate">取消</div>
<div class="tool tool2" @click="submitFence(addFormRef)">保存</div>
</div>
</el-form>
@ -348,6 +360,7 @@ import startIcon from "@/assets/images/carPosition/startIcon.png";
import endIcon from "@/assets/images/carPosition/endIcon.png";
import personOn from "@/assets/images/carPosition/personOn.png";
import smartSafeHat from "@/assets/images/smartSafeHat.png";
import smartSafeHat2 from "@/assets/images/smartSafeHat2.png";
import { GlobalStore } from "@/stores";
import { ElMessage, ElMessageBox } from "element-plus";
import type { FormInstance, FormRules } from "element-plus";
@ -508,7 +521,7 @@ watch(choiceMonth, newVal => {
}
});
function handleCancel(){
function handleCancel() {
fenceCreateShow.value = false;
clearFn();
}
@ -1076,7 +1089,7 @@ function getCrewListData() {
// });
// nameOptions.value = nameOption.concat(carOption);
nameOptions.value = nameOption.concat([]);
devList.value = res.result;
} else {
ElMessage.error(res.message);
@ -1375,6 +1388,7 @@ function trackMapInit(path: any, item: any) {
info.push('<p style="padding:7px;">人员名称: ' + item.workerName + "</p>");
info.push('<p style="padding:7px;">最后更新时间: ' + item.updateTime + "</p>");
info.push('<p style="padding:7px;">位置: ' + address + "</p>");
// info.push('<p style="padding:7px;">: ' + address + "</p>");
var infoWindow = new AMap.InfoWindow({
offset: new AMap.Pixel(30, -30),
content: info.join("") //使
@ -1404,11 +1418,15 @@ function initMap() {
var autoOptions = {
input: "tipinput"
};
let auto = new AMap.Autocomplete(autoOptions);
placeSearch = new AMap.PlaceSearch({
map: map
}); //
AMap.event.addListener(auto, "select", select); //
// >>>>>>>>>>>>>>>>><<<<<<<<<<<<<<<<<<<
// let auto = new AMap.Autocomplete(autoOptions);
// placeSearch = new AMap.PlaceSearch({
// map: map
// }); //
// AMap.event.addListener(auto, "select", select); //
// >>>>>>>>>>>>>>>>><<<<<<<<<<<<<<<<<<<
mouseTool = new AMap.MouseTool(map);
mouseTool.on("draw", function (event) {
// event.obj
@ -1726,13 +1744,13 @@ function echoPersonMarker(item) {
position: lnglats[0],
map: map,
// icon: personOn //
icon: smartSafeHat //
icon: smartSafeHat2 //
});
marker.on("click", markerClick);
marker.emit("click", { target: marker });
}
}
let address = "未知";
let address = "<text style='color: darkred;font-weight:bolder'>未知</text>";
AMap.plugin("AMap.Geocoder", function () {
let geocoder = new AMap.Geocoder();
@ -1764,6 +1782,7 @@ function echoPersonMarker(item) {
info.push('<p style="padding:7px;">人员名称: ' + item.workerName + "</p>");
info.push('<p style="padding:7px;">最后更新时间: ' + item.updateTime + "</p>");
info.push('<p style="padding:7px;">位置: ' + address + "</p>");
info.push('<p style="padding:7px;">经纬度: ' + item.longitude + " | " + item.latitude + "</p>");
var infoWindow = new AMap.InfoWindow({
offset: new AMap.Pixel(10, -30),
@ -1848,7 +1867,7 @@ function echoPersonMarker(item) {
background-size: 100% 100%;
box-sizing: border-box;
padding: 25px;
width: 330px;
width: 360px;
height: 380px;
left: 40px;
top: 40px;
@ -1866,8 +1885,7 @@ function echoPersonMarker(item) {
.create-footer {
margin: 100px 0 0 50px;
}
}
.close-icon {
.close-icon {
position: absolute;
right: 0%;
top: 0%;
@ -1875,6 +1893,12 @@ function echoPersonMarker(item) {
color: rgba(255, 255, 255, 0.6);
font-size: 18px;
}
:deep(.el-form-item__label) {
color: #fff;
}
:deep(.el-radio__label) {
color: #fff;
}
.cFooter {
width: 70%;
display: flex;
@ -1908,7 +1932,6 @@ function echoPersonMarker(item) {
background-size: 100% 100%;
}
}
.bigFormBox {
width: 100%;
display: flex;
@ -1998,6 +2021,7 @@ function echoPersonMarker(item) {
}
}
}
}
}
.fence-box {
position: relative;
@ -2275,6 +2299,15 @@ function echoPersonMarker(item) {
margin-top: 1% !important;
}
}
:deep(.titltText) {
margin: 0 0 0 0;
height: 100%;
margin-left: 0.08rem;
margin-top: -0.03rem;
display: flex;
align-items: center;
letter-spacing: 0.01rem;
}
.wei-lan {
.icon-off {
position: absolute;