Commit 9ffcb9c1 authored by zhanglw's avatar zhanglw

边坡设备报警,人员定位

parent c7a64edb
ENV = 'development'
# 接口地址
#VUE_APP_BASE_API = 'http://localhost:8000'
VUE_APP_BASE_API = 'http://192.168.3.23:9092'
#VUE_APP_BASE_API = 'http://8.143.203.103:9091'
VUE_APP_WS_API = 'ws://8.143.203.103:9092/webSocket'
#VUE_APP_BASE_API = 'http://192.168.3.216:9092'
#VUE_APP_LOCAL_API = 'http://192.168.3.216:9092'
VUE_APP_BASE_API = 'http://192.168.3.23:9092'
VUE_APP_LOCAL_API = 'http://192.168.3.23:9092'
VUE_APP_LOCAL_API2 = 'http://8.143.203.103:9091/'
VUE_APP_WS_API = 'ws://8.143.203.103:9092/webSocket'
# 是否启用 babel-plugin-dynamic-import-node插件
VUE_CLI_BABEL_TRANSPILE_MODULES = true
......@@ -2901,6 +2901,99 @@ var HttpReq = function(){
params:param,
})
},
slopeGetEquipmentAlarm: function(param){
return request({
url: '/api/equipmentAlarm',
method: 'get',
params:param,
})
},
slopeEquipmentAlarmRemove: function(data){
return request({
url: '/api/equipmentAlarm/remove',
method: 'PUT',
data: data,
})
},
slopeGetEquipmentData: function(param){
return request({
url: '/api/HengYuanEquipmentData',
method: 'get',
params:param,
})
},
propleGetPerbeacon: function(param){
return request({
url: '/tab/perbeacon',
method: 'get',
params:param,
})
},
proplePostPerbeacon: function(data){
return request({
url: '/tab/perbeacon',
method: 'POST',
data:data,
})
},
proplePutPerbeacon: function(data){
return request({
url: '/tab/perbeacon',
method: 'PUT',
data:data,
})
},
propleDeletePerbeacon: function(data){
return request({
url: '/tab/perbeacon',
method: 'Delete',
data:data,
})
},
propleGetPerequipment: function(param){
return request({
url: '/tab/perequipment',
method: 'get',
params:param,
})
},
proplePostPerequipment: function(data){
return request({
url: '/tab/perequipment',
method: 'POST',
data:data,
})
},
proplePutPerequipment: function(data){
return request({
url: '/tab/perequipment',
method: 'PUT',
data:data,
})
},
propleDeletePerequipment: function(data){
return request({
url: '/tab/perequipment',
method: 'Delete',
data:data,
})
},
proplePostPerequipmentUpload: function(data){
return request({
url: '/tab/perequipment/upload',
method: 'POST',
data:data,
})
},
propleGetPerequipmentOut: function(param){
return request({
url: '/tab/perequipment/out',
method: 'get',
params:param,
})
},
},
......
......@@ -21,7 +21,7 @@
<!-- 表格 -->
<div class="panel-bottom page-row">
<h3>人员管理</h3>
<h3>用户管理</h3>
<div class="ctin-box">
<div class="content-within">
<div class="content-fix">
......
<template>
<div class="common-page device-manage">
<div class="option page-row">
<!--工具栏-->
<div class="head-container">
<!-- 搜索 -->
<label class="el-form-item-label" style="font-weight: 500;">设备号</label>
<el-input v-model="query.beaconame" clearable size="small" placeholder="请输入设备号" style="width:180px;"/>
<el-button size="mini" type="success" icon="el-icon-search" @click="toSearch">搜索</el-button>
<el-button size="mini" icon="el-icon-refresh" @click="clearLimit">重置</el-button>
</div>
</div>
<!-- 表格 -->
<div class="panel-bottom page-row">
<div class="ctin-box">
<div class="content-within">
<div class="content-fix">
<div class="toolbar">
<el-button size="mini" type="primary" icon="el-icon-plus" @click="toAdd">新增</el-button>
</div>
<div class="content">
<el-table :data="tableData" v-loading="loading" border style="width:auto" :row-class-name="tableRowClassName">
<el-table-column prop="beaconame" label="信标名称" align="center"></el-table-column>
<el-table-column prop="beaconumber" label="信标编号" align="center"></el-table-column>
<el-table-column prop="xcoordinate" label="X坐标" align="center"></el-table-column>
<el-table-column prop="ycoordinate" label="Y坐标" align="center"></el-table-column>
<el-table-column prop="time" label="时间" align="center"></el-table-column>
<el-table-column label="操作" align="center" fixed="right">
<template slot-scope="scope">
<el-button size="mini" type="primary" icon="el-icon-edit" @click="toEdit(scope.row)"></el-button>
<el-button size="mini" type="danger" icon="el-icon-delete" @click="toDelete(scope.row)"></el-button>
</template>
</el-table-column>
</el-table>
<!--分页组件-->
<el-pagination :total="total" :current-page="page" style="margin-top: 8px;"
layout="total, prev, pager, next, sizes" @size-change="sizeChange"
@current-change="pageChange"/>
</div>
</div>
</div>
</div>
</div>
<!-- 表单渲染 -->
<el-dialog append-to-body :close-on-click-modal="false" :before-close="cancelForm" :visible.sync="visible" :title="title" width="800px">
<el-form :model="formData" :rules="rules" ref="formViewRef" :inline="true" :status-icon="true" size="mini">
<el-row>
<el-col :span="12">
<div class="grid-content">
<el-form-item label="信标名称:" prop="beaconame" class="form-cell">
<div class="cell-box">
<el-input v-model="formData.beaconame" class="cell-input"></el-input>
</div>
</el-form-item>
</div>
</el-col>
<el-col :span="12">
<div class="grid-content">
<el-form-item label="信标编号:" class="form-cell" prop="beaconumber">
<div class="cell-box">
<el-input v-model="formData.beaconumber" class="cell-input"></el-input>
</div>
</el-form-item>
</div>
</el-col>
</el-row>
<el-row>
<el-col :span="12">
<div class="grid-content">
<el-form-item label="X坐标:" class="form-cell" prop="xcoordinate">
<div class="cell-box">
<el-input v-model="formData.xcoordinate" class="cell-input"></el-input>
</div>
</el-form-item>
</div>
</el-col>
<el-col :span="12">
<div class="grid-content">
<el-form-item label="Y坐标:" class="form-cell" prop="ycoordinate">
<div class="cell-box">
<el-input v-model="formData.ycoordinate" class="cell-input"></el-input>
</div>
</el-form-item>
</div>
</el-col>
</el-row>
</el-form>
<div slot="footer" class="dialog-footer">
<el-button type="text" @click="cancelForm">取消</el-button>
<el-button type="primary" @click="submitForm('formViewRef', formData)">确认</el-button>
</div>
</el-dialog>
</div>
</template>
<script>
import {Tools, HttpReq, Dates} from '@/assets/js/common.js';
export default {
name: 'beacon',
data() {
const basePathUrl = window.basePathUrl || ''
return {
configUrl: basePathUrl + 'config/config.json',
title: '新增',
visible: false,
loading: false,
page: 1,
size: 10,
total: 0,
query: {},
map: null,
graphicLayer: null,
stuOpts: [
{label: '全部', value: undefined},
{label: '离线', value: '离线'},
{label: '在线', value: '在线'},
],
tableData: [],
formData: {
beaconame: '',
beaconumber: '',
xcoordinate: '',
ycoordinate: '',
},
rules: {
beaconame: {required: true, message: ' ', trigger: 'blur'},
beaconumber: {required: true, message: ' ', trigger: 'blur'},
xcoordinate: {required: true, message: ' ', trigger: 'blur'},
ycoordinate: {required: true, message: ' ', trigger: 'blur'},
},
}
},
mounted() {
this.$nextTick(() => {
this.loadData();
})
},
methods: {
formatOpt(arr,val){
let str='';
arr.forEach((item)=>{
if(item.value==val){
str = item.label;
}
});
return str;
},
loadData() {
var param = this.query;
param.page = this.page - 1;
param.size = this.size;
this.$nextTick(() => {
//获取安检信息
HttpReq.truckDispatching.propleGetPerbeacon(param).then((res) => {
if (res.code == 200) {
this.loading = false;
this.tableData = res.body.list;
this.total = res.body.total;
}
})
})
},
toAdd() {
this.title = '新增';
this.visible = true;
},
toEdit(item) {
this.title = '编辑';
this.visible = true;
this.formData = item;
},
toDelete(item) {
var id = item.id;
this.$confirm('确认删除该条数据吗?', '提示', {
confirmButtonText: '确定',
cancelButtonText: '取消',
type: 'warning'
}).then((e) => {
HttpReq.truckDispatching.propleDeletePerbeacon({id}).then((res) => {
if (res.code == 200) {
this.$message({
message: res.msg,
type: 'success'
});
this.loadData();
}
})
})
},
cancelForm() {
this.visible = false;
this.$refs.formViewRef.resetFields();
},
tableRowClassName({row, rowIndex}) {
},
// 点击搜索
toSearch() {
this.page = 1;
this.loadData();
},
// 重置搜索
clearLimit() {
this.query = {};
this.loadData()
},
pageChange(e) {
this.page = e
this.loadData()
},
sizeChange(e) {
this.page = 1
this.size = e
this.loadData()
},
submitForm(validateName, item) {
this.$refs[validateName].validate(valid => {
if (valid) {
if (this.title === '新增') {
HttpReq.truckDispatching.proplePostPerbeacon(item).then((res) => {
if (res.code == 200) {
this.$message({
message: res.msg,
type: 'success'
});
this.cancelForm();
this.loadData()
}
})
} else {
HttpReq.truckDispatching.proplePutPerbeacon(item).then((res) => {
if (res.code == 200) {
this.$message({
message: res.msg,
type: 'success'
});
this.cancelForm();
this.loadData()
}
})
}
}
});
},
},
}
</script>
<style rel="stylesheet/scss" lang="scss" scope>
.el-table .warning-row {
background: oldlace;
}
.el-table .success-row {
background: #f0f9eb;
}
.cell-input {
//min-width: 220px;
}
.form-cell {
margin: 0 !important;
width: 100%;
}
.grid-content {
//border: 1px solid rgba(100, 100, 100, 0.1);
padding: 5px 30px;
}
.cell-box {
min-width: 120px;
}
.cell-box .el-input__inner {
border: 1px solid rgba(100, 100, 100, 0.1);
}
.cell-box .el-input.is-disabled .el-input__inner {
border: 1px solid rgba(100, 100, 100, 0.1);
background: white;
cursor: text;
}
.cell-box .el-input.is-disabled .el-input__icon {
cursor: text;
}
.cell-box .el-icon-arrow-up:before {
content: '';
}
.mapcontainer {
height: 30vh;
width: 680px;
overflow: hidden;
}
</style>
<template>
<div class="common-page device-manage">
<div class="option page-row">
<!--工具栏-->
<div class="head-container">
<!-- 搜索 -->
<label class="el-form-item-label" style="font-weight: 500;">设备号</label>
<el-input v-model="query.beaconame" clearable size="small" placeholder="请输入设备号" style="width:180px;"/>
<el-button size="mini" type="success" icon="el-icon-search" @click="toSearch">搜索</el-button>
<el-button size="mini" icon="el-icon-refresh" @click="clearLimit">重置</el-button>
</div>
</div>
<!-- 表格 -->
<div class="panel-bottom page-row">
<div class="ctin-box">
<div class="content-within">
<div class="content-fix">
<div class="toolbar">
<el-button size="mini" type="primary" icon="el-icon-plus" @click="toAdd">新增</el-button>
</div>
<div class="content">
<el-table :data="tableData" v-loading="loading" border style="width:auto" :row-class-name="tableRowClassName">
<el-table-column prop="beaconame" label="信标名称" align="center"></el-table-column>
<el-table-column prop="beaconumber" label="信标编号" align="center"></el-table-column>
<el-table-column prop="xcoordinate" label="X坐标" align="center"></el-table-column>
<el-table-column prop="ycoordinate" label="Y坐标" align="center"></el-table-column>
<el-table-column prop="time" label="时间" align="center"></el-table-column>
<el-table-column label="操作" align="center" fixed="right">
<template slot-scope="scope">
<el-button size="mini" type="primary" icon="el-icon-edit" @click="toEdit(scope.row)"></el-button>
<el-button size="mini" type="danger" icon="el-icon-delete" @click="toDelete(scope.row)"></el-button>
</template>
</el-table-column>
</el-table>
<!--分页组件-->
<el-pagination :total="total" :current-page="page" style="margin-top: 8px;"
layout="total, prev, pager, next, sizes" @size-change="sizeChange"
@current-change="pageChange"/>
</div>
</div>
</div>
</div>
</div>
<!-- 表单渲染 -->
<el-dialog append-to-body :close-on-click-modal="false" :before-close="cancelForm" :visible.sync="visible" :title="title" width="800px">
<el-form :model="formData" :rules="rules" ref="formViewRef" :inline="true" :status-icon="true" size="mini">
<el-row>
<el-col :span="12">
<div class="grid-content">
<el-form-item label="信标名称:" prop="beaconame" class="form-cell">
<div class="cell-box">
<el-input v-model="formData.beaconame" class="cell-input"></el-input>
</div>
</el-form-item>
</div>
</el-col>
<el-col :span="12">
<div class="grid-content">
<el-form-item label="信标编号:" class="form-cell" prop="beaconumber">
<div class="cell-box">
<el-input v-model="formData.beaconumber" class="cell-input"></el-input>
</div>
</el-form-item>
</div>
</el-col>
</el-row>
<el-row>
<el-col :span="12">
<div class="grid-content">
<el-form-item label="X坐标:" class="form-cell" prop="xcoordinate">
<div class="cell-box">
<el-input v-model="formData.xcoordinate" class="cell-input"></el-input>
</div>
</el-form-item>
</div>
</el-col>
<el-col :span="12">
<div class="grid-content">
<el-form-item label="Y坐标:" class="form-cell" prop="ycoordinate">
<div class="cell-box">
<el-input v-model="formData.ycoordinate" class="cell-input"></el-input>
</div>
</el-form-item>
</div>
</el-col>
</el-row>
</el-form>
<div slot="footer" class="dialog-footer">
<el-button type="text" @click="cancelForm">取消</el-button>
<el-button type="primary" @click="submitForm('formViewRef', formData)">确认</el-button>
</div>
</el-dialog>
</div>
</template>
<script>
import {Tools, HttpReq, Dates} from '@/assets/js/common.js';
export default {
name: 'peopleAlarm',
data() {
const basePathUrl = window.basePathUrl || ''
return {
configUrl: basePathUrl + 'config/config.json',
title: '新增',
visible: false,
loading: false,
page: 1,
size: 10,
total: 0,
query: {},
map: null,
graphicLayer: null,
stuOpts: [
{label: '全部', value: undefined},
{label: '离线', value: '离线'},
{label: '在线', value: '在线'},
],
tableData: [],
formData: {
beaconame: '',
beaconumber: '',
xcoordinate: '',
ycoordinate: '',
},
rules: {
beaconame: {required: true, message: ' ', trigger: 'blur'},
beaconumber: {required: true, message: ' ', trigger: 'blur'},
xcoordinate: {required: true, message: ' ', trigger: 'blur'},
ycoordinate: {required: true, message: ' ', trigger: 'blur'},
},
}
},
mounted() {
this.$nextTick(() => {
this.loadData();
})
},
methods: {
formatOpt(arr,val){
let str='';
arr.forEach((item)=>{
if(item.value==val){
str = item.label;
}
});
return str;
},
loadData() {
var param = this.query;
param.page = this.page - 1;
param.size = this.size;
this.$nextTick(() => {
//获取安检信息
HttpReq.truckDispatching.propleGetPerbeacon(param).then((res) => {
if (res.code == 200) {
this.loading = false;
this.tableData = res.body.list;
this.total = res.body.total;
}
})
})
},
toAdd() {
this.title = '新增';
this.visible = true;
},
toEdit(item) {
this.title = '编辑';
this.visible = true;
this.formData = item;
},
toDelete(item) {
var id = item.id;
this.$confirm('确认删除该条数据吗?', '提示', {
confirmButtonText: '确定',
cancelButtonText: '取消',
type: 'warning'
}).then((e) => {
HttpReq.truckDispatching.propleDeletePerbeacon({id}).then((res) => {
if (res.code == 200) {
this.$message({
message: res.msg,
type: 'success'
});
this.loadData();
}
})
})
},
cancelForm() {
this.visible = false;
this.$refs.formViewRef.resetFields();
},
tableRowClassName({row, rowIndex}) {
},
// 点击搜索
toSearch() {
this.page = 1;
this.loadData();
},
// 重置搜索
clearLimit() {
this.query = {};
this.loadData()
},
pageChange(e) {
this.page = e
this.loadData()
},
sizeChange(e) {
this.page = 1
this.size = e
this.loadData()
},
submitForm(validateName, item) {
this.$refs[validateName].validate(valid => {
if (valid) {
if (this.title === '新增') {
HttpReq.truckDispatching.proplePostPerbeacon(item).then((res) => {
if (res.code == 200) {
this.$message({
message: res.msg,
type: 'success'
});
this.cancelForm();
this.loadData()
}
})
} else {
HttpReq.truckDispatching.proplePutPerbeacon(item).then((res) => {
if (res.code == 200) {
this.$message({
message: res.msg,
type: 'success'
});
this.cancelForm();
this.loadData()
}
})
}
}
});
},
},
}
</script>
<style rel="stylesheet/scss" lang="scss" scope>
.el-table .warning-row {
background: oldlace;
}
.el-table .success-row {
background: #f0f9eb;
}
.cell-input {
//min-width: 220px;
}
.form-cell {
margin: 0 !important;
width: 100%;
}
.grid-content {
//border: 1px solid rgba(100, 100, 100, 0.1);
padding: 5px 30px;
}
.cell-box {
min-width: 120px;
}
.cell-box .el-input__inner {
border: 1px solid rgba(100, 100, 100, 0.1);
}
.cell-box .el-input.is-disabled .el-input__inner {
border: 1px solid rgba(100, 100, 100, 0.1);
background: white;
cursor: text;
}
.cell-box .el-input.is-disabled .el-input__icon {
cursor: text;
}
.cell-box .el-icon-arrow-up:before {
content: '';
}
.mapcontainer {
height: 30vh;
width: 680px;
overflow: hidden;
}
</style>
<template>
<div class="common-page device-manage">
<div class="option page-row">
<!--工具栏-->
<div class="head-container">
<!-- 搜索 -->
<label class="el-form-item-label" style="font-weight: 500;">设备号</label>
<el-input v-model="query.beaconame" clearable size="small" placeholder="请输入设备号" style="width:180px;"/>
<el-button size="mini" type="success" icon="el-icon-search" @click="toSearch">搜索</el-button>
<el-button size="mini" icon="el-icon-refresh" @click="clearLimit">重置</el-button>
</div>
</div>
<!-- 表格 -->
<div class="panel-bottom page-row">
<div class="ctin-box">
<div class="content-within">
<div class="content-fix">
<div class="toolbar">
<el-button size="mini" type="primary" icon="el-icon-plus" @click="toAdd">新增</el-button>
<el-button size="mini" icon="el-icon-document" @click="downloadFile">导出</el-button>
</div>
<div class="content">
<el-table :data="tableData" v-loading="loading" border style="width:auto" :row-class-name="tableRowClassName">
<el-table-column prop="name" label="人员姓名" align="center"></el-table-column>
<el-table-column prop="sex" label="性别" align="center">
<template slot-scope="scope">
<span>{{ scope.row.sex===1?'':'' }}</span>
</template>
</el-table-column>
<el-table-column prop="phone" label="电话" align="center"></el-table-column>
<el-table-column prop="cameraid" label="摄像头id" align="center"></el-table-column>
<el-table-column prop="safetyhatmac" label="安全帽MAC" align="center"></el-table-column>
<el-table-column prop="safetyhatelectricity" label="安全帽电量" align="center"></el-table-column>
<el-table-column prop="safetyhatstatus" label="安全帽状态" align="center">
<template slot-scope="scope">
<span>{{ scope.row.safetyhatstatus=='2'?'在线':'离线' }}</span>
</template>
</el-table-column>
<el-table-column prop="lastonlinetime" label="最后一次在线时间" align="center"></el-table-column>
<el-table-column label="操作" align="center" fixed="right">
<template slot-scope="scope">
<el-button size="mini" type="primary" icon="el-icon-edit" @click="toEdit(scope.row)"></el-button>
<el-button size="mini" type="danger" icon="el-icon-delete" @click="toDelete(scope.row)"></el-button>
</template>
</el-table-column>
</el-table>
<!--分页组件-->
<el-pagination :total="total" :current-page="page" style="margin-top: 8px;"
layout="total, prev, pager, next, sizes" @size-change="sizeChange"
@current-change="pageChange"/>
</div>
</div>
</div>
</div>
</div>
<!-- 表单渲染 -->
<el-dialog append-to-body :close-on-click-modal="false" :before-close="cancelForm" :visible.sync="visible" :title="title" width="800px">
<el-form :model="formData" :rules="rules" ref="formViewRef" :inline="true" :status-icon="true">
<el-row>
<el-col :span="12">
<div class="grid-content">
<el-form-item label="人员名称:" class="form-cell" prop="name">
<div class="cell-box">
<el-input v-model="formData.name" class="cell-input"></el-input>
</div>
</el-form-item>
</div>
</el-col>
<el-col :span="12">
<div class="grid-content">
<el-form-item label="性别:" class="form-cell" prop="sex">
<div class="cell-box">
<el-select v-model="formData.sex" placeholder="无" class="cell-input">
<el-option v-for="item in sexOpts" :key="item.value" :label="item.label" :value="item.value"></el-option>
</el-select>
</div>
</el-form-item>
</div>
</el-col>
</el-row>
<el-row>
<el-col :span="12">
<div class="grid-content">
<el-form-item label="电话:" class="form-cell" prop="phone">
<div class="cell-box">
<el-input v-model="formData.phone" class="cell-input"></el-input>
</div>
</el-form-item>
</div>
</el-col>
<el-col :span="12">
<div class="grid-content">
<el-form-item label="摄像头id:" class="form-cell" prop="cameraid">
<div class="cell-box">
<el-input v-model="formData.cameraid" class="cell-input"></el-input>
</div>
</el-form-item>
</div>
</el-col>
</el-row>
<el-row>
<el-col :span="12">
<div class="grid-content">
<el-form-item label="部门:" class="form-cell" prop="deptid">
<div class="cell-box">
<treeselect
:multiple="false"
:options="allDepartmentData"
:load-options="loadOptions"
placeholder="请选择部门"
style="width: 200px"
@select="selectDepart"
v-model="formData.deptid"
/>
</div>
</el-form-item>
</div>
</el-col>
<el-col :span="12">
<div class="grid-content">
<el-form-item label="岗位:" class="form-cell" prop="postid">
<div class="cell-box">
<el-select v-model="formData.postid" placeholder="请选择岗位" >
<el-option v-for="(obj,index) in allPostData" :label="obj.name" :value="obj.name" :key="index"></el-option>
</el-select>
</div>
</el-form-item>
</div>
</el-col>
</el-row>
<el-row>
<el-col :span="12">
<div class="grid-content">
<el-form-item label="身份证号:" class="form-cell" prop="idcard">
<div class="cell-box">
<el-input v-model="formData.idcard" class="cell-input"></el-input>
</div>
</el-form-item>
</div>
</el-col>
<el-col :span="12">
<div class="grid-content">
<el-form-item label="安全帽颜色:" class="form-cell" prop="color">
<div class="cell-box">
<el-select v-model="formData.color" placeholder="无" class="cell-input">
<el-option v-for="item in colorOpts" :key="item.value" :label="item.label" :value="item.value"></el-option>
</el-select>
</div>
</el-form-item>
</div>
</el-col>
</el-row>
<el-row>
<el-col :span="24">
<div class="grid-content">
<el-form-item label="上传照片:" class="form-cell">
<div class="cell-box">
<el-input v-model="formData.photo" style="width:160px;" placeholder="请上传照片" disabled />
<input type="file" name="image" @change="excelImport($event)" />
</div>
</el-form-item>
</div>
</el-col>
</el-row>
</el-form>
<div slot="footer" class="dialog-footer">
<el-button type="text" @click="cancelForm">取消</el-button>
<el-button type="primary" @click="submitForm('formViewRef', formData)">确认</el-button>
</div>
</el-dialog>
</div>
</template>
<script>
import {Tools, HttpReq, Dates} from '@/assets/js/common.js';
import Treeselect from '@riophae/vue-treeselect'
import '@riophae/vue-treeselect/dist/vue-treeselect.css'
import { LOAD_CHILDREN_OPTIONS } from '@riophae/vue-treeselect'
export default {
name: 'peopleLocation',
components: {Treeselect},
data() {
const basePathUrl = window.basePathUrl || ''
return {
configUrl: basePathUrl + 'config/config.json',
title: '新增',
visible: false,
loading: false,
page: 1,
size: 10,
total: 0,
query: {},
map: null,
graphicLayer: null,
sexOpts: [
{label: '', value: 1},
{label: '', value: 2},
],
colorOpts:[
{label: '红色', value: '1'},
{label: '黄色', value: '2'},
{label: '蓝色', value: '3'},
],
tableData: [],
allDepartmentData: [],
allPostData: [],
formData: {
name: '',
sex: 1,
phone: '',
idcard: '',
color: '1',
deptid: undefined,
postid: undefined,
photo: '',
},
deptName: '',
rules: {
name: {required: true, message: ' ', trigger: 'blur'},
sex: {required: true, message: ' ', trigger: 'blur'},
phone: {required: true, message: ' ', trigger: 'blur'},
idcard: {required: true, message: ' ', trigger: 'blur'},
},
}
},
mounted() {
this.$nextTick(() => {
//获取用于选择的部门
HttpReq.truckDispatching.getAllDepartmentQuery({enabled: true}).then((response) => {
for(let index of response.content){
let modeInfo = {} ;
modeInfo.id = index.id
modeInfo.label = index.name;
modeInfo.children = null;
this.allDepartmentData.push(modeInfo);
}
});
//获取用于选择的岗位
HttpReq.truckDispatching.getAllPostQuery({size:9999}).then((res) => {
this.allPostData = res.content;
});
this.loadData();
})
},
methods: {
selectDepart(val){
this.deptName = val.label;
return val.label;
},
loadOptions({ action, parentNode, callback }) {
if (action === LOAD_CHILDREN_OPTIONS) {
HttpReq.truckDispatching.getAllDepartmentQuery({enabled: true, pid: parentNode.id}).then(response => {
let arr = [];
for(let index of response.content){
let chiledModeInfo = {};
chiledModeInfo.id = index.id;
chiledModeInfo.label = index.name;
arr.push(chiledModeInfo);
}
parentNode.children = response.content.map(function(obj) {
if(obj.hasChildren) {
obj.children = null;
}
return obj
})
});
setTimeout(() => {
callback()
}, 200)
}
},
formatOpt(arr,val){
let str='';
arr.forEach((item)=>{
if(item.value==val){
str = item.label;
}
});
return str;
},
loadData() {
var param = this.query;
param.page = this.page - 1;
param.size = this.size;
param.type = 0;
this.$nextTick(() => {
//获取安检信息
HttpReq.truckDispatching.propleGetPerequipment(param).then((res) => {
if (res.code == 200) {
this.loading = false;
this.tableData = res.body.list;
this.total = res.body.total;
}
})
})
},
toAdd() {
this.title = '新增';
this.visible = true;
this.formData = {
name: '',
sex: 1,
phone: '',
idcard: '',
color: '1',
deptid: undefined,
postid: undefined,
photo: '',
};
},
toEdit(item) {
this.title = '编辑';
this.visible = true;
this.formData = item;
},
toDelete(item) {
var id = item.id;
this.$confirm('确认删除该条数据吗?', '提示', {
confirmButtonText: '确定',
cancelButtonText: '取消',
type: 'warning'
}).then((e) => {
HttpReq.truckDispatching.propleDeletePerequipment({id}).then((res) => {
if (res.code == 200) {
this.$message({
message: res.msg,
type: 'success'
});
this.loadData();
}
})
})
},
download(obj, name, suffix) {
var url = window.URL.createObjectURL(new Blob([obj]));
var link = document.createElement('a');
link.style.display = 'none';
link.href = url;
var fileName = name + '.' + suffix;
link.setAttribute('download', fileName);
document.body.appendChild(link);
link.click();
document.body.removeChild(link);
},
downloadFile() {
var loading = this.$loading({
lock: true,
text: '请稍后.....',
spinner: 'el-icon-loading',
background: 'rgba(0, 0, 0, 0.7)'
});
var param = this.query;
param.page = this.page - 1;
param.size = this.size;
param.type = 0;
HttpReq.truckDispatching.propleGetPerequipmentOut(param).then((res) => {
if (res.code == 200) {
loading.close();
this.download(res.body, 'xxx', 'xlsx')
}
})
},
cancelForm() {
this.visible = false;
},
tableRowClassName({row, rowIndex}) {
},
// 点击搜索
toSearch() {
this.page = 1;
this.loadData();
},
// 重置搜索
clearLimit() {
this.query = {};
this.loadData()
},
pageChange(e) {
this.page = e
this.loadData()
},
sizeChange(e) {
this.page = 1
this.size = e
this.loadData()
},
//图片上传
excelImport(event) {
let file = event.target.files[0];
let formData = new FormData();
formData.append("files", file);
HttpReq.truckDispatching.proplePostPerequipmentUpload(formData).then((res) => {
this.$notify({
title: '上传成功!',
type: 'success',
duration: 2500
});
this.formData.photo = res.body;
})
},
submitForm(validateName, item) {
this.$refs[validateName].validate(valid => {
if (valid) {
item.type = 0;
item.deptid = this.deptName;
if (this.title === '新增') {
HttpReq.truckDispatching.proplePostPerequipment(item).then((res) => {
if (res.code == 200) {
this.$message({
message: res.msg,
type: 'success'
});
this.cancelForm();
this.loadData()
}
})
} else {
HttpReq.truckDispatching.proplePutPerequipment(item).then((res) => {
if (res.code == 200) {
this.$message({
message: res.msg,
type: 'success'
});
this.cancelForm();
this.loadData()
}
})
}
}
});
},
},
}
</script>
<style rel="stylesheet/scss" lang="scss" scope>
.el-table .warning-row {
background: oldlace;
}
.el-table .success-row {
background: #f0f9eb;
}
.cell-input {
//min-width: 220px;
}
.form-cell {
margin: 0 !important;
width: 100%;
}
.grid-content {
//border: 1px solid rgba(100, 100, 100, 0.1);
padding: 5px 30px;
}
.cell-box {
min-width: 120px;
}
.cell-box .el-input__inner {
border: 1px solid rgba(100, 100, 100, 0.1);
}
.cell-box .el-input.is-disabled .el-input__inner {
border: 1px solid rgba(100, 100, 100, 0.1);
background: white;
cursor: text;
}
.cell-box .el-input.is-disabled .el-input__icon {
cursor: text;
}
.cell-box .el-icon-arrow-up:before {
content: '';
}
.mapcontainer {
height: 30vh;
width: 680px;
overflow: hidden;
}
</style>
<template>
<div class="common-page device-manage">
<div class="option page-row">
<!--工具栏-->
<div class="head-container">
<!-- 搜索 -->
<label class="el-form-item-label" style="font-weight: 500;">设备号</label>
<el-input v-model="query.equipno" clearable size="small" placeholder="请输入设备号" style="width:180px;"/>
<label class="el-form-item-label" style="font-weight: 500;">在线状态</label>
<el-select v-model="query.onlineStatus" placeholder="请选择">
<el-option v-for="item in stuOpts" :key="item.value" :label="item.label" :value="item.value"></el-option>
</el-select>
<el-button size="mini" type="success" icon="el-icon-search" @click="toSearch">搜索</el-button>
<el-button size="mini" icon="el-icon-refresh" @click="clearLimit">重置</el-button>
</div>
</div>
<!-- 表格 -->
<div class="panel-bottom page-row">
<div class="ctin-box">
<div class="content-within">
<div class="content-fix">
<div class="toolbar">
<el-button size="mini" type="primary" icon="el-icon-plus" @click="toAdd">新增</el-button>
</div>
<div class="content">
<el-table :data="tableData" v-loading="loading" border style="width:auto" :row-class-name="tableRowClassName">
<el-table-column prop="equipname" label="设备名称" align="center"></el-table-column>
<el-table-column prop="devicetype" label="设备类型" align="center">
<template slot-scope="scope">
<span>{{formatOpt(devOpts, scope.row.devicetype)}}</span>
</template>
</el-table-column>
<el-table-column prop="equipno" label="设备编号" align="center"></el-table-column>
<el-table-column prop="eqdanwei" label="数值单位" align="center"></el-table-column>
<el-table-column prop="installationdata" label="安装日期" align="center"></el-table-column>
<el-table-column prop="manufacture" label="生产厂家" align="center"></el-table-column>
<el-table-column prop="datarealtime" label="最后更新时间" align="center"></el-table-column>
<el-table-column prop="onlineStatus" label="状态" align="center"></el-table-column>
<el-table-column label="操作" align="center" fixed="right">
<template slot-scope="scope">
<el-button size="mini" type="primary" icon="el-icon-edit" @click="toEdit(scope.row)"></el-button>
<el-button size="mini" type="danger" icon="el-icon-delete" @click="toDelete(scope.row)"></el-button>
</template>
</el-table-column>
</el-table>
<!--分页组件-->
<el-pagination :total="total" :current-page="page" style="margin-top: 8px;"
layout="total, prev, pager, next, sizes" @size-change="sizeChange"
@current-change="pageChange"/>
</div>
</div>
</div>
</div>
</div>
<!-- 表单渲染 -->
<el-dialog append-to-body :close-on-click-modal="false" :before-close="cancelForm" :visible.sync="visible" :title="title" width="800px">
<el-form :model="formData" :rules="rules" ref="formViewRef" :inline="true" :status-icon="true" size="mini">
<el-row>
<el-col :span="12">
<div class="grid-content">
<el-form-item label="设备名称:" prop="equipname" class="form-cell">
<div class="cell-box">
<el-input v-model="formData.equipname" class="cell-input"></el-input>
</div>
</el-form-item>
</div>
</el-col>
<el-col :span="12">
<div class="grid-content">
<el-form-item label="设备类型:" class="form-cell" prop="devicetype">
<div class="cell-box">
<el-select v-model="formData.devicetype" placeholder="无" class="cell-input">
<el-option v-for="item in devOpts" :key="item.value" :label="item.label" :value="item.value"></el-option>
</el-select>
</div>
</el-form-item>
</div>
</el-col>
</el-row>
<el-row>
<el-col :span="12">
<div class="grid-content">
<el-form-item label="设备编号:" class="form-cell" prop="equipno">
<div class="cell-box">
<el-input v-model="formData.equipno" class="cell-input"></el-input>
</div>
</el-form-item>
</div>
</el-col>
<el-col :span="12">
<div class="grid-content">
<el-form-item label="数值单位:" class="form-cell" prop="eqdanwei">
<div class="cell-box">
<el-input v-model="formData.eqdanwei" class="cell-input"></el-input>
</div>
</el-form-item>
</div>
</el-col>
</el-row>
</el-form>
<div slot="footer" class="dialog-footer">
<el-button type="text" @click="cancelForm">取消</el-button>
<el-button type="primary" @click="submitForm('formViewRef', formData)">确认</el-button>
</div>
</el-dialog>
</div>
</template>
<script>
import {Tools, HttpReq, Dates} from '@/assets/js/common.js';
export default {
name: 'peopleLogData',
data() {
const basePathUrl = window.basePathUrl || ''
return {
configUrl: basePathUrl + 'config/config.json',
title: '新增',
visible: false,
loading: false,
page: 1,
size: 10,
total: 0,
query: {},
map: null,
graphicLayer: null,
stuOpts: [
{label: '全部', value: undefined},
{label: '离线', value: '离线'},
{label: '在线', value: '在线'},
],
devOpts: [
{label: '干滩', value: 1},
{label: '库水位', value: 2},
{label: '表面位移', value: 3},
{label: '内部位移', value: 4},
{label: '浸润线', value: 5},
{label: '降雨量', value: 6},
{label: '排流量', value: 7},
{label: '水质', value: 8},
{label: '渗流量', value: 9},
{label: '外坡比', value: 16},
],
datOpts:[
{label: '', value: 1},
{label: '', value: 0},
],
usedOpts:[
{label: '在用', value: 1},
{label: '不在用', value: 0},
],
eqtOpts:[
{label: '4G设备', value: 0},
{label: 'IP设备', value: 1},
{label: 'mqtt设备', value: 2},
],
bjOpts:[
{label: '报警', value: 1},
{label: '不报警', value: 0},
],
ssOpts: [
{label: 'gnss', value: 0},
{label: '超声', value: 1},
{label: '投入式水位计或渗压计', value: 2},
{label: '沉降', value: 3},
{label: '雨量', value: 5},
{label: '测斜', value: 7},
],
tableData: [],
formData: {
longitude: '',
latitude: '',
equipname: '',
equipno: '',
devicetype: '',
eqdanwei: '',
installationdata: '',
manufacture: '',
datumpoint: 0,
installheight: '',
electricitysupply: '',
accuracy: '',
altitude: '',
onelevelalarm: '',
twolevelalarm: '',
threelevelalarm: '',
fourlevelalarm: '',
isUsed: '',
ipaddress: '',
eqtype: '',
initial: '',
initialx: '',
initialy: '',
initialz: '',
state: '',
burialDepth: '',
checkperiod: '',
sensortype: '',
bmwyX: '',
bmwyY: '',
bmwyZ: '',
jrxTrepanning: '',
jrxBurial: '',
jrxCoordX: '',
kswequipno: '',
gtwangle: '',
gtsafeheight: '',
pslspeed: '',
},
rules: {
longitude: {required: true, message: '请在地图上放置设备', trigger: 'blur'},
equipname: {required: true, message: ' ', trigger: 'blur'},
equipno: {required: true, message: ' ', trigger: 'blur'},
devicetype: {required: true, message: ' ', trigger: 'blur'},
eqdanwei: {required: true, message: ' ', trigger: 'blur'},
installationdata: {required: true, message: ' ', trigger: 'blur'},
manufacture: {required: true, message: ' ', trigger: 'blur'},
datumpoint: {required: true, message: ' ', trigger: 'blur'},
},
}
},
mounted() {
this.$nextTick(() => {
this.loadData();
})
},
methods: {
formatOpt(arr,val){
let str='';
arr.forEach((item)=>{
if(item.value==val){
str = item.label;
}
});
return str;
},
onMapload(map) {
map.unbindContextMenu();
var graphicLayer = new mars3d.layer.GraphicLayer();
map.addLayer(graphicLayer);
const graphic = new mars3d.graphic.PointEntity({
style: {
color: "#ff0000",
pixelSize: 10,
outlineColor: "#ffffff",
outlineWidth: 2,
label: {
text: "放置位置",
font_size: 18,
color: "#ff0000",
outline: true,
outlineColor: "#000000",
outlineWidth: 5,
pixelOffsetY: -24,
distanceDisplayCondition: true,
distanceDisplayCondition_far: 500000,
distanceDisplayCondition_near: 0
}
},
})
graphicLayer.addGraphic(graphic);
map.on(mars3d.EventType.click, (event) => {
let p = mars3d.LngLatPoint.fromCartesian(event.cartesian);
this.formData.longitude = p.lng;
this.formData.latitude = p.lat;
graphicLayer.eachGraphic((graphic) => {
graphic.addDynamicPosition(Cesium.Cartesian3.fromDegrees(p.lng, p.lat, 0), 0)
})
});
this.map = map;
this.graphicLayer = graphicLayer;
},
loadData() {
var sort = 'id,desc';
var param = this.query;
param.page = this.page - 1;
param.pageSize = this.size;
param.sort = sort;
this.$nextTick(() => {
//获取安检信息
HttpReq.truckDispatching.slopeGetDeviceList(param).then((res) => {
if (res.code == 200) {
this.loading = false;
this.tableData = res.data.records;
this.total = res.data.total;
}
})
})
},
toAdd() {
this.title = '新增';
this.visible = true;
},
toEdit(item) {
HttpReq.truckDispatching.slopeGetDevice({id:item.id}).then((res) => {
if (res.code == 200) {
this.title = '编辑';
this.visible = true;
this.formData = res.data;
setTimeout(() => {
this.graphicLayer.eachGraphic((graphic) => {
graphic.addDynamicPosition(Cesium.Cartesian3.fromDegrees(this.formData.longitude, this.formData.latitude, 0), 0)
})
this.map.setCameraView({ lat: this.formData.latitude, lng: this.formData.longitude });
},5000)
}
})
},
toDelete(item) {
var id = item.id;
this.$confirm('确认删除该条数据吗?', '提示', {
confirmButtonText: '确定',
cancelButtonText: '取消',
type: 'warning'
}).then((e) => {
HttpReq.truckDispatching.slopeDeleteDevice({id}).then((res) => {
if (res.code == 200) {
this.$message({
message: res.msg,
type: 'success'
});
this.loadData();
}
})
})
},
cancelForm() {
this.visible = false;
this.$refs.formViewRef.resetFields();
},
tableRowClassName({row, rowIndex}) {
},
// 点击搜索
toSearch() {
this.page = 1;
this.loadData();
},
// 重置搜索
clearLimit() {
this.query = {};
this.loadData()
},
pageChange(e) {
this.page = e
this.loadData()
},
sizeChange(e) {
this.page = 1
this.size = e
this.loadData()
},
submitForm(validateName, item) {
this.$refs[validateName].validate(valid => {
if (valid) {
if (this.title === '新增') {
HttpReq.truckDispatching.slopePostDevice(item).then((res) => {
if (res.code == 200) {
this.$message({
message: res.msg,
type: 'success'
});
this.cancelForm();
this.loadData()
}
})
} else {
HttpReq.truckDispatching.slopePutDevice(item).then((res) => {
if (res.code == 200) {
this.$message({
message: res.msg,
type: 'success'
});
this.cancelForm();
this.loadData()
}
})
}
}
});
},
},
}
</script>
<style rel="stylesheet/scss" lang="scss" scope>
.el-table .warning-row {
background: oldlace;
}
.el-table .success-row {
background: #f0f9eb;
}
.cell-input {
//min-width: 220px;
}
.form-cell {
margin: 0 !important;
width: 100%;
}
.grid-content {
//border: 1px solid rgba(100, 100, 100, 0.1);
padding: 5px 30px;
}
.cell-box {
min-width: 120px;
}
.cell-box .el-input__inner {
border: 1px solid rgba(100, 100, 100, 0.1);
}
.cell-box .el-input.is-disabled .el-input__inner {
border: 1px solid rgba(100, 100, 100, 0.1);
background: white;
cursor: text;
}
.cell-box .el-input.is-disabled .el-input__icon {
cursor: text;
}
.cell-box .el-icon-arrow-up:before {
content: '';
}
.mapcontainer {
height: 30vh;
width: 680px;
overflow: hidden;
}
</style>
<template>
<div class="common-page device-manage">
<div class="option page-row">
<!--工具栏-->
<div class="head-container">
<!-- 搜索 -->
<label class="el-form-item-label" style="font-weight: 500;">设备号</label>
<el-input v-model="query.equipno" clearable size="small" placeholder="请输入设备号" style="width:180px;"/>
<label class="el-form-item-label" style="font-weight: 500;">在线状态</label>
<el-select v-model="query.onlineStatus" placeholder="请选择">
<el-option v-for="item in stuOpts" :key="item.value" :label="item.label" :value="item.value"></el-option>
</el-select>
<el-button size="mini" type="success" icon="el-icon-search" @click="toSearch">搜索</el-button>
<el-button size="mini" icon="el-icon-refresh" @click="clearLimit">重置</el-button>
</div>
</div>
<!-- 表格 -->
<div class="panel-bottom page-row">
<div class="ctin-box">
<div class="content-within">
<div class="content-fix">
<div class="toolbar">
<el-button size="mini" type="primary" icon="el-icon-plus" @click="toAdd">新增</el-button>
</div>
<div class="content">
<el-table :data="tableData" v-loading="loading" border style="width:auto" :row-class-name="tableRowClassName">
<el-table-column prop="equipname" label="设备名称" align="center"></el-table-column>
<el-table-column prop="devicetype" label="设备类型" align="center">
<template slot-scope="scope">
<span>{{formatOpt(devOpts, scope.row.devicetype)}}</span>
</template>
</el-table-column>
<el-table-column prop="equipno" label="设备编号" align="center"></el-table-column>
<el-table-column prop="eqdanwei" label="数值单位" align="center"></el-table-column>
<el-table-column prop="installationdata" label="安装日期" align="center"></el-table-column>
<el-table-column prop="manufacture" label="生产厂家" align="center"></el-table-column>
<el-table-column prop="datarealtime" label="最后更新时间" align="center"></el-table-column>
<el-table-column prop="onlineStatus" label="状态" align="center"></el-table-column>
<el-table-column label="操作" align="center" fixed="right">
<template slot-scope="scope">
<el-button size="mini" type="primary" icon="el-icon-edit" @click="toEdit(scope.row)"></el-button>
<el-button size="mini" type="danger" icon="el-icon-delete" @click="toDelete(scope.row)"></el-button>
</template>
</el-table-column>
</el-table>
<!--分页组件-->
<el-pagination :total="total" :current-page="page" style="margin-top: 8px;"
layout="total, prev, pager, next, sizes" @size-change="sizeChange"
@current-change="pageChange"/>
</div>
</div>
</div>
</div>
</div>
<!-- 表单渲染 -->
<el-dialog append-to-body :close-on-click-modal="false" :before-close="cancelForm" :visible.sync="visible" :title="title" width="800px">
<el-form :model="formData" :rules="rules" ref="formViewRef" :inline="true" :status-icon="true" size="mini">
<el-row>
<el-col :span="12">
<div class="grid-content">
<el-form-item label="设备名称:" prop="equipname" class="form-cell">
<div class="cell-box">
<el-input v-model="formData.equipname" class="cell-input"></el-input>
</div>
</el-form-item>
</div>
</el-col>
<el-col :span="12">
<div class="grid-content">
<el-form-item label="设备类型:" class="form-cell" prop="devicetype">
<div class="cell-box">
<el-select v-model="formData.devicetype" placeholder="无" class="cell-input">
<el-option v-for="item in devOpts" :key="item.value" :label="item.label" :value="item.value"></el-option>
</el-select>
</div>
</el-form-item>
</div>
</el-col>
</el-row>
<el-row>
<el-col :span="12">
<div class="grid-content">
<el-form-item label="设备编号:" class="form-cell" prop="equipno">
<div class="cell-box">
<el-input v-model="formData.equipno" class="cell-input"></el-input>
</div>
</el-form-item>
</div>
</el-col>
<el-col :span="12">
<div class="grid-content">
<el-form-item label="数值单位:" class="form-cell" prop="eqdanwei">
<div class="cell-box">
<el-input v-model="formData.eqdanwei" class="cell-input"></el-input>
</div>
</el-form-item>
</div>
</el-col>
</el-row>
</el-form>
<div slot="footer" class="dialog-footer">
<el-button type="text" @click="cancelForm">取消</el-button>
<el-button type="primary" @click="submitForm('formViewRef', formData)">确认</el-button>
</div>
</el-dialog>
</div>
</template>
<script>
import {Tools, HttpReq, Dates} from '@/assets/js/common.js';
export default {
name: 'visitPeople',
data() {
const basePathUrl = window.basePathUrl || ''
return {
configUrl: basePathUrl + 'config/config.json',
title: '新增',
visible: false,
loading: false,
page: 1,
size: 10,
total: 0,
query: {},
map: null,
graphicLayer: null,
stuOpts: [
{label: '全部', value: undefined},
{label: '离线', value: '离线'},
{label: '在线', value: '在线'},
],
devOpts: [
{label: '干滩', value: 1},
{label: '库水位', value: 2},
{label: '表面位移', value: 3},
{label: '内部位移', value: 4},
{label: '浸润线', value: 5},
{label: '降雨量', value: 6},
{label: '排流量', value: 7},
{label: '水质', value: 8},
{label: '渗流量', value: 9},
{label: '外坡比', value: 16},
],
datOpts:[
{label: '', value: 1},
{label: '', value: 0},
],
usedOpts:[
{label: '在用', value: 1},
{label: '不在用', value: 0},
],
eqtOpts:[
{label: '4G设备', value: 0},
{label: 'IP设备', value: 1},
{label: 'mqtt设备', value: 2},
],
bjOpts:[
{label: '报警', value: 1},
{label: '不报警', value: 0},
],
ssOpts: [
{label: 'gnss', value: 0},
{label: '超声', value: 1},
{label: '投入式水位计或渗压计', value: 2},
{label: '沉降', value: 3},
{label: '雨量', value: 5},
{label: '测斜', value: 7},
],
tableData: [],
formData: {
longitude: '',
latitude: '',
equipname: '',
equipno: '',
devicetype: '',
eqdanwei: '',
installationdata: '',
manufacture: '',
datumpoint: 0,
installheight: '',
electricitysupply: '',
accuracy: '',
altitude: '',
onelevelalarm: '',
twolevelalarm: '',
threelevelalarm: '',
fourlevelalarm: '',
isUsed: '',
ipaddress: '',
eqtype: '',
initial: '',
initialx: '',
initialy: '',
initialz: '',
state: '',
burialDepth: '',
checkperiod: '',
sensortype: '',
bmwyX: '',
bmwyY: '',
bmwyZ: '',
jrxTrepanning: '',
jrxBurial: '',
jrxCoordX: '',
kswequipno: '',
gtwangle: '',
gtsafeheight: '',
pslspeed: '',
},
rules: {
longitude: {required: true, message: '请在地图上放置设备', trigger: 'blur'},
equipname: {required: true, message: ' ', trigger: 'blur'},
equipno: {required: true, message: ' ', trigger: 'blur'},
devicetype: {required: true, message: ' ', trigger: 'blur'},
eqdanwei: {required: true, message: ' ', trigger: 'blur'},
installationdata: {required: true, message: ' ', trigger: 'blur'},
manufacture: {required: true, message: ' ', trigger: 'blur'},
datumpoint: {required: true, message: ' ', trigger: 'blur'},
},
}
},
mounted() {
this.$nextTick(() => {
this.loadData();
})
},
methods: {
formatOpt(arr,val){
let str='';
arr.forEach((item)=>{
if(item.value==val){
str = item.label;
}
});
return str;
},
onMapload(map) {
map.unbindContextMenu();
var graphicLayer = new mars3d.layer.GraphicLayer();
map.addLayer(graphicLayer);
const graphic = new mars3d.graphic.PointEntity({
style: {
color: "#ff0000",
pixelSize: 10,
outlineColor: "#ffffff",
outlineWidth: 2,
label: {
text: "放置位置",
font_size: 18,
color: "#ff0000",
outline: true,
outlineColor: "#000000",
outlineWidth: 5,
pixelOffsetY: -24,
distanceDisplayCondition: true,
distanceDisplayCondition_far: 500000,
distanceDisplayCondition_near: 0
}
},
})
graphicLayer.addGraphic(graphic);
map.on(mars3d.EventType.click, (event) => {
let p = mars3d.LngLatPoint.fromCartesian(event.cartesian);
this.formData.longitude = p.lng;
this.formData.latitude = p.lat;
graphicLayer.eachGraphic((graphic) => {
graphic.addDynamicPosition(Cesium.Cartesian3.fromDegrees(p.lng, p.lat, 0), 0)
})
});
this.map = map;
this.graphicLayer = graphicLayer;
},
loadData() {
var sort = 'id,desc';
var param = this.query;
param.page = this.page - 1;
param.pageSize = this.size;
param.sort = sort;
this.$nextTick(() => {
//获取安检信息
HttpReq.truckDispatching.slopeGetDeviceList(param).then((res) => {
if (res.code == 200) {
this.loading = false;
this.tableData = res.data.records;
this.total = res.data.total;
}
})
})
},
toAdd() {
this.title = '新增';
this.visible = true;
},
toEdit(item) {
HttpReq.truckDispatching.slopeGetDevice({id:item.id}).then((res) => {
if (res.code == 200) {
this.title = '编辑';
this.visible = true;
this.formData = res.data;
setTimeout(() => {
this.graphicLayer.eachGraphic((graphic) => {
graphic.addDynamicPosition(Cesium.Cartesian3.fromDegrees(this.formData.longitude, this.formData.latitude, 0), 0)
})
this.map.setCameraView({ lat: this.formData.latitude, lng: this.formData.longitude });
},5000)
}
})
},
toDelete(item) {
var id = item.id;
this.$confirm('确认删除该条数据吗?', '提示', {
confirmButtonText: '确定',
cancelButtonText: '取消',
type: 'warning'
}).then((e) => {
HttpReq.truckDispatching.slopeDeleteDevice({id}).then((res) => {
if (res.code == 200) {
this.$message({
message: res.msg,
type: 'success'
});
this.loadData();
}
})
})
},
cancelForm() {
this.visible = false;
this.$refs.formViewRef.resetFields();
},
tableRowClassName({row, rowIndex}) {
},
// 点击搜索
toSearch() {
this.page = 1;
this.loadData();
},
// 重置搜索
clearLimit() {
this.query = {};
this.loadData()
},
pageChange(e) {
this.page = e
this.loadData()
},
sizeChange(e) {
this.page = 1
this.size = e
this.loadData()
},
submitForm(validateName, item) {
this.$refs[validateName].validate(valid => {
if (valid) {
if (this.title === '新增') {
HttpReq.truckDispatching.slopePostDevice(item).then((res) => {
if (res.code == 200) {
this.$message({
message: res.msg,
type: 'success'
});
this.cancelForm();
this.loadData()
}
})
} else {
HttpReq.truckDispatching.slopePutDevice(item).then((res) => {
if (res.code == 200) {
this.$message({
message: res.msg,
type: 'success'
});
this.cancelForm();
this.loadData()
}
})
}
}
});
},
},
}
</script>
<style rel="stylesheet/scss" lang="scss" scope>
.el-table .warning-row {
background: oldlace;
}
.el-table .success-row {
background: #f0f9eb;
}
.cell-input {
//min-width: 220px;
}
.form-cell {
margin: 0 !important;
width: 100%;
}
.grid-content {
//border: 1px solid rgba(100, 100, 100, 0.1);
padding: 5px 30px;
}
.cell-box {
min-width: 120px;
}
.cell-box .el-input__inner {
border: 1px solid rgba(100, 100, 100, 0.1);
}
.cell-box .el-input.is-disabled .el-input__inner {
border: 1px solid rgba(100, 100, 100, 0.1);
background: white;
cursor: text;
}
.cell-box .el-input.is-disabled .el-input__icon {
cursor: text;
}
.cell-box .el-icon-arrow-up:before {
content: '';
}
.mapcontainer {
height: 30vh;
width: 680px;
overflow: hidden;
}
</style>
......@@ -6,9 +6,9 @@
<div class="head-container">
<!-- 搜索 -->
<label class="el-form-item-label" style="font-weight: 500;">设备号</label>
<el-input v-model="query.sensorId" clearable size="small" placeholder="请输入设备号" style="width:180px;"/>
<el-input v-model="query.equipno" clearable size="small" placeholder="请输入设备号" style="width:180px;"/>
<label class="el-form-item-label" style="font-weight: 500;">报警状态</label>
<el-select v-model="query.alarmStatus" placeholder="请选择">
<el-select v-model="query.state" placeholder="请选择">
<el-option v-for="item in stuOpts" :key="item.value" :label="item.label" :value="item.value"></el-option>
</el-select>
<label class="el-form-item-label" style="font-weight: 500;">日期范围</label>
......@@ -32,23 +32,35 @@
<div class="content-fix">
<div class="toolbar" style="text-align:right">
<el-button size="mini" type="primary" icon="el-icon-refresh" @click="loadData">刷新</el-button>
<el-button size="mini" type="warning" icon="el-icon-document" @click="toAdd">导出</el-button>
<el-button size="mini" type="warning" icon="el-icon-document" @click="downloadFile">导出</el-button>
<el-button size="mini" icon="el-icon-printer" v-print="printObj" @click="printeTable">打印</el-button>
</div>
<div class="content">
<el-table id="printContainer" :data="tableData" v-loading="loading" border style="width:auto" :row-class-name="tableRowClassName">
<el-table-column prop="formId" label="设备名称" align="center"></el-table-column>
<el-table-column prop="username" label="设备编号" align="center"></el-table-column>
<el-table-column prop="carNo" label="状态" align="center"></el-table-column>
<el-table-column prop="carClass" label="报警等级" align="center"></el-table-column>
<el-table-column prop="carNo" label="报警值" align="center"></el-table-column>
<el-table-column prop="carNo" label="报警原因" align="center"></el-table-column>
<el-table-column prop="createTime" label="报警时间" align="center"></el-table-column>
<el-table-column prop="carNo" label="解除报警原因" align="center"></el-table-column>
<el-table-column prop="createTime" label="解除报警时间" align="center"></el-table-column>
<el-table-column prop="equipname" label="设备名称" align="center"></el-table-column>
<el-table-column prop="equipno" label="设备编号" align="center"></el-table-column>
<el-table-column prop="state" label="状态" align="center">
<template slot-scope="scope">
<span>{{ scope.row.state===1?'报警':'解除报警'}}</span>
</template>
</el-table-column>
<el-table-column prop="alarmlevel" label="报警等级" align="center">
<template slot-scope="scope">
<i v-if="scope.row.alarmlevel===1" class="el-icon-message-solid" style="color: red"></i>
<i v-if="scope.row.alarmlevel===2" class="el-icon-message-solid" style="color: orange"></i>
<i v-if="scope.row.alarmlevel===3" class="el-icon-message-solid" style="color: gold"></i>
<i v-if="scope.row.alarmlevel===4" class="el-icon-message-solid" style="color: dodgerblue"></i>
</template>
</el-table-column>
<el-table-column prop="evalue" label="报警值" align="center"></el-table-column>
<el-table-column prop="reason" label="报警原因" align="center"></el-table-column>
<el-table-column prop="time" label="报警时间" align="center"></el-table-column>
<el-table-column prop="jcreason" label="解除报警原因" align="center"></el-table-column>
<el-table-column prop="jcbjtime" label="解除报警时间" align="center"></el-table-column>
<el-table-column label="操作" align="center" v-if="!isPrint">
<template slot-scope="scope">
<el-button size="mini" type="primary" icon="el-icon-close-notification" @click="toEdit(scope.row)"></el-button>
<el-button v-show="scope.row.state===1" size="mini" style="margin:0" type="primary" icon="el-icon-close-notification" @click="toEdit(scope.row)"></el-button>
<el-button v-show="scope.row.state!==1" size="mini" style="margin:0" type="primary" icon="el-icon-close-notification" @click="toEdit(scope.row)" disabled></el-button>
</template>
</el-table-column>
</el-table>
......@@ -64,19 +76,19 @@
<!-- 表单渲染 -->
<el-dialog append-to-body :close-on-click-modal="false" :before-close="cancelForm" :visible.sync="editVisible" title="解除报警" width="500px">
<el-form :model="formData" :rules="rules" ref="formViewRef" :inline="true" label-width="180px">
<el-form-item label="解除时长:" class="form-cell" prop="name" style="width:100%">
<el-form-item label="解除时长:" class="form-cell" prop="jcHours" style="width:100%">
<div class="cell-box">
<el-input v-model="formData.name" class="cell-input"></el-input>
<el-input v-model="formData.jcHours" class="cell-input" type="number"></el-input>
</div>
</el-form-item>
<el-form-item label="报警原因:" class="form-cell" prop="devType">
<el-form-item label="报警原因:" class="form-cell" prop="bjReason">
<div class="cell-box">
<el-input v-model="formData.devType" class="cell-input"></el-input>
<el-input v-model="formData.bjReason" class="cell-input"></el-input>
</div>
</el-form-item>
<el-form-item label="解除报警原因:" class="form-cell" prop="devNo">
<el-form-item label="解除报警原因:" class="form-cell" prop="jcbjReason">
<div class="cell-box">
<el-input v-model="formData.devNo" class="cell-input"></el-input>
<el-input v-model="formData.jcbjReason" class="cell-input"></el-input>
</div>
</el-form-item>
</el-form>
......@@ -110,17 +122,16 @@ export default {
stuOpts: [
{label: '全部', value: undefined},
{label: '报警', value: 1},
{label: '正常', value: 0},
{label: '解除报警', value: 2},
],
tableData: [],
formData: {
name: '',
devType: '',
devNo: '',
},
rules: {
devNo: {required: true, message: '请填写解除报警原因', trigger: 'blur'},
equipmentNo: null,
jcHours: 12,
bjReason: '',
jcbjReason: '',
},
rules: {},
printObj: {
id: "printContainer",
popTitle: '打印',
......@@ -137,14 +148,18 @@ export default {
},
methods: {
loadData() {
var sort = 'id,desc';
var param = this.query;
param.page = this.page - 1;
param.pageSize = this.size;
param.sort = sort;
param.startTime = undefined;
param.endTime = undefined;
if(param.timeList && param.timeList.length){
param.startTime = param.timeList[0];
param.endTime = param.timeList[1];
}
this.$nextTick(() => {
//获取安检信息
HttpReq.truckDispatching.ajReportListFind(param).then((res) => {
HttpReq.truckDispatching.slopeGetEquipmentAlarm(param).then((res) => {
if (res.code == 200) {
this.loading = false;
this.tableData = res.data.records;
......@@ -153,8 +168,17 @@ export default {
})
})
},
toEdit() {
downloadFile() {
},
toEdit(item) {
this.editVisible = true;
this.formData = {
equipmentNo: item.equipno,
jcHours: 12,
bjReason: '',
jcbjReason: '',
}
},
printeTable() {
this.isPrint=true;
......@@ -187,12 +211,16 @@ export default {
submitForm(validateName, item) {
this.$refs[validateName].validate(valid => {
if (valid) {
// if (this.title === '新增') {
// this.reqAddItem(this.form, item)
// } else {
// this.reqUpdateItem(this.form, item)
// }
alert(9999);
HttpReq.truckDispatching.slopeEquipmentAlarmRemove(item).then((res) => {
if (res.code == 200) {
this.$message({
message: res.msg,
type: 'success'
});
this.cancelForm();
this.loadData()
}
})
}
});
},
......
......@@ -6,11 +6,7 @@
<div class="head-container">
<!-- 搜索 -->
<label class="el-form-item-label" style="font-weight: 500;">设备号</label>
<el-input v-model="query.sensorId" clearable size="small" placeholder="请输入设备号" style="width:180px;"/>
<label class="el-form-item-label" style="font-weight: 500;">报警状态</label>
<el-select v-model="query.alarmStatus" placeholder="请选择">
<el-option v-for="item in stuOpts" :key="item.value" :label="item.label" :value="item.value"></el-option>
</el-select>
<el-input v-model="query.equipno" clearable size="small" placeholder="请输入设备号" style="width:180px;"/>
<label class="el-form-item-label" style="font-weight: 500;">日期范围</label>
<el-date-picker
v-model="query.timeList"
......@@ -37,18 +33,18 @@
</div>
<div class="content">
<el-table :data="tableData" v-loading="loading" border style="width:auto" :row-class-name="tableRowClassName">
<el-table-column prop="formId" label="设备名称" align="center"></el-table-column>
<el-table-column prop="username" label="设备编号" align="center"></el-table-column>
<el-table-column prop="carNo" label="连接状态" align="center"></el-table-column>
<el-table-column prop="createTime" label="监测时间" align="center"></el-table-column>
<el-table-column prop="carClass" label="风速" align="center"></el-table-column>
<el-table-column prop="carClass" label="温度" align="center"></el-table-column>
<el-table-column prop="carClass" label="大气压" align="center"></el-table-column>
<el-table-column prop="carClass" label="LPM2.5" align="center"></el-table-column>
<el-table-column prop="carClass" label="LTSP" align="center"></el-table-column>
<el-table-column prop="carClass" label="LPM10" align="center"></el-table-column>
<el-table-column prop="carClass" label="湿度" align="center"></el-table-column>
<el-table-column prop="carClass" label="风向" align="center"></el-table-column>
<el-table-column prop="deviceName" label="设备名称" align="center"></el-table-column>
<el-table-column prop="mn" label="设备编号" align="center"></el-table-column>
<el-table-column prop="statusDev" label="连接状态" align="center"></el-table-column>
<el-table-column prop="time" label="监测时间" align="center"></el-table-column>
<el-table-column prop="ws" label="风速" align="center"></el-table-column>
<el-table-column prop="ta" label="温度" align="center"></el-table-column>
<el-table-column prop="pa" label="大气压" align="center"></el-table-column>
<el-table-column prop="lpm25" label="LPM2.5" align="center"></el-table-column>
<el-table-column prop="ltsp" label="LTSP" align="center"></el-table-column>
<el-table-column prop="lpm10" label="LPM10" align="center"></el-table-column>
<el-table-column prop="ua" label="湿度" align="center"></el-table-column>
<el-table-column prop="wd" label="风向" align="center"></el-table-column>
</el-table>
<!--分页组件-->
<el-pagination :total="total" :current-page="page" style="margin-top: 8px;"
......@@ -101,14 +97,18 @@ export default {
},
methods: {
loadData() {
var sort = 'id,desc';
var param = this.query;
param.page = this.page - 1;
param.pageSize = this.size;
param.sort = sort;
param.startTime = undefined;
param.endTime = undefined;
if(param.timeList && param.timeList.length){
param.startTime = param.timeList[0];
param.endTime = param.timeList[1];
}
this.$nextTick(() => {
//获取安检信息
HttpReq.truckDispatching.ajReportListFind(param).then((res) => {
HttpReq.truckDispatching.slopeGetEquipmentData(param).then((res) => {
if (res.code == 200) {
this.loading = false;
this.tableData = res.data.records;
......@@ -117,25 +117,6 @@ export default {
})
})
},
toAdd() {
this.title = '新增';
this.visible = true;
},
toEdit() {
},
toDelete(item) {
var id = item.id;
this.$confirm('确认删除该条数据吗?', '提示', {
confirmButtonText: '确定',
cancelButtonText: '取消',
type: 'warning'
}).then((e) => {
}).catch((e) => {
})
},
cancelForm() {
this.visible = false;
},
......
......@@ -127,11 +127,11 @@ export default {
},
methods: {
loadData() {
var sort = 'id,desc';
var param = this.query;
param.page = this.page - 1;
param.pageSize = this.size;
param.sort = sort;
param.startTime = undefined;
param.endTime = undefined;
if(param.timeList && param.timeList.length){
param.startTime = param.timeList[0];
param.endTime = param.timeList[1];
......@@ -165,6 +165,8 @@ export default {
},
toSearchDev(){
var param = this.search;
param.startTime = undefined;
param.endTime = undefined;
if(param.timeList && param.timeList.length){
param.startTime = param.timeList[0];
param.endTime = param.timeList[1];
......
......@@ -124,11 +124,11 @@ export default {
},
methods: {
loadData() {
var sort = 'id,desc';
var param = this.query;
param.page = this.page - 1;
param.pageSize = this.size;
param.sort = sort;
param.startTime = undefined;
param.endTime = undefined;
if(param.timeList && param.timeList.length){
param.startTime = param.timeList[0];
param.endTime = param.timeList[1];
......@@ -165,6 +165,8 @@ export default {
},
toSearchDev(){
var param = this.search;
param.startTime = undefined;
param.endTime = undefined;
if(param.timeList && param.timeList.length){
param.startTime = param.timeList[0];
param.endTime = param.timeList[1];
......
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