Merge branch 'dev' into limingyu-20240416-一公司动火作业地图

pet_li_6.6
limingyu 2024-04-22 09:32:45 +08:00
commit a53d9140ea
12 changed files with 450 additions and 86 deletions

View File

@ -281,8 +281,8 @@ export default {
dialogVisible: false, dialogVisible: false,
dialogAlarm: false, dialogAlarm: false,
rules: { rules: {
LONGITUDE: [{ required: true, message: '不可为空', trigger: 'blur' }], // LONGITUDE: [{ required: true, message: '', trigger: 'blur' }],
LATITUDE: [{ required: true, message: '不可为空', trigger: 'blur' }], // LATITUDE: [{ required: true, message: '', trigger: 'blur' }],
RECIPIENT: [{ required: true, message: '不可为空', trigger: 'blur' }], RECIPIENT: [{ required: true, message: '不可为空', trigger: 'blur' }],
INDICATORSOURCE: [{ required: true, message: '不可为空', trigger: 'blur' }], INDICATORSOURCE: [{ required: true, message: '不可为空', trigger: 'blur' }],
ALARMTHRESHOLD: [{ required: true, message: '不可为空', trigger: 'blur' }], ALARMTHRESHOLD: [{ required: true, message: '不可为空', trigger: 'blur' }],
@ -582,7 +582,8 @@ export default {
RECIPIENT: '', RECIPIENT: '',
TYPE: '', TYPE: '',
LATITUDE: '', LATITUDE: '',
LONGITUDE: '' LONGITUDE: '',
LONGTITUDEANDLATITUDE: ''
} }
this.addForm.dialogType = '' this.addForm.dialogType = ''
}, },

View File

@ -0,0 +1,170 @@
<template>
<div>
<el-dialog :visible.sync="visible" :append-to-body="appendToBody" title="修改班级名称" width="700px" destroy-on-close >
<el-form ref="form" :model="form" label-width="110px">
<el-form-item label="班级名称" prop="CLASS_NAME">
<el-input
id="CLASS_NAME"
ref="CLASS_NAME"
v-model="form.CLASS_NAME"
style="width: 400px;"
maxlength="255"
placeholder="这里输入班级名称..."
title="班级名称"/>
</el-form-item>
</el-form>
<div slot="footer" class="dialog-footer">
<el-button @click="close"> </el-button>
<el-button type="primary" @click="confirm"> </el-button>
</div>
</el-dialog>
</div>
</template>
<script>
import vueQr from 'vue-qr'
import { requestFN } from '@/utils/request'
export default {
components: { vueQr },
props: {
appendToBody: {
type: Boolean,
default: false
}
},
data() {
return {
visible: false,
qrCodeStr: '',
form: {
CLASS_NAME: '',
CLASS_MESSAGE_ID: ''
}
}
},
methods: {
init(row) {
this.visible = true
this.form.CLASS_MESSAGE_ID = row.CLASS_MESSAGE_ID
},
close() {
this.visible = false
this.form = {
CLASS_NAME: '',
CLASS_MESSAGE_ID: ''
}
},
confirm() {
this.loading = true
if (!this.form.CLASS_NAME || this.form.CLASS_NAME === '') {
this.$message.error('请输入班级名称')
return
}
requestFN('/classMessage/changeName', this.form).then((data) => {
this.$message.success('保存成功')
this.visible = false
this.close()
this.$emit('getResult')
}).catch((e) => {
this.loading = false
})
}
}
}
</script>
<style lang="scss" scoped>
.name{
width: 120px;
overflow: hidden;//
white-space: nowrap; //
text-overflow: ellipsis;//
}
.red {
width: 660px;
color: #ff0000;
margin-left: 34px;
font-size: 24px;
}
.bg_table {
background: url("../../../../assets/tablebg.jpg") no-repeat bottom center;
background-size: 100%;
width: 660px;
height: 430px;
border: 4px solid #453d3a;
transform: scale(0.5);
transform-origin: top left;
.title {
font-size: 28px;
text-align: center;
margin-top: 34px;
font-weight: bold;
color: #000000;
}
.table {
border-collapse: collapse;
width: 590px;
color: #453d3a;
font-size: 20px;
margin: 34px;
text-align: left;
margin-top: 10px;
.tcenter {
text-align: center
}
.w60 {
width: 100px;
}
.w74 {
width: 148px
}
th, td {
border: 2px solid #453d3a;
text-align: left;
height: 40px;
padding: 0 16px;
box-sizing: border-box;
.textone {
width: 80px;
text-align: justify;
text-align-last: justify;
text-justify: distribute-all-lines;
margin: 0 auto;
}
.text1 {
width: 60px;
text-align: justify;
text-align-last: justify;
text-justify: distribute-all-lines;
margin: 0 auto;
}
.text2 {
width: 50px;
text-align: justify;
text-align-last: justify;
text-justify: distribute-all-lines;
margin: 0 auto;
}
.text {
}
}
}
}
</style>

View File

@ -1,5 +1,5 @@
<template> <template>
<el-dialog v-loading="loading" :visible.sync="visible" :title="title" :before-close="close" width="70%"> <el-dialog v-loading="loading" :visible.sync="visible" :title="title" :before-close="close" width="70%" top="50px">
<el-form ref="form" :rules="rules" :model="form" label-width="110px"> <el-form ref="form" :rules="rules" :model="form" label-width="110px">
<el-row :gutter="10"> <el-row :gutter="10">
<el-col :span="12"> <el-col :span="12">
@ -81,6 +81,7 @@
:data="peopleList" :data="peopleList"
:row-key="getRowKey" :row-key="getRowKey"
:header-cell-style="{'font-weight': 'bold','color': '#000'}" :header-cell-style="{'font-weight': 'bold','color': '#000'}"
height="500px"
tooltip-effect="dark" tooltip-effect="dark"
border border
fit fit

View File

@ -104,7 +104,7 @@
border border
fit fit
highlight-current-row highlight-current-row
@select="updateSelect" @selection-change="updateSelect"
> >
<el-table-column :reserve-selection="true" type="selection" width="55" align="center"/> <el-table-column :reserve-selection="true" type="selection" width="55" align="center"/>
@ -164,6 +164,7 @@
</el-col> </el-col>
<el-col :span="6"> <el-col :span="6">
<div style="margin-left: 10px"> <div style="margin-left: 10px">
<div>已选择人员数量{{ ($refs.multipleTable && $refs.multipleTable.selection)?$refs.multipleTable.selection.length:0 }}</div>
<div class="el-form-item__label">已选择人员名称</div> <div class="el-form-item__label">已选择人员名称</div>
<el-table <el-table
:data="selectPeopleList" :data="selectPeopleList"
@ -270,16 +271,18 @@ export default {
this.getDic() this.getDic()
}, },
updateSelect(rows, row) { updateSelect(rows, row) {
console.log(rows) if (this.visible) {
if (this.form.CLASS_SIZE === '' || !this.form.CLASS_SIZE) { if (this.form.CLASS_SIZE === '' || !this.form.CLASS_SIZE) {
this.$message.error('请先选择班级容量') this.$message.error('请先选择班级容量')
return this.$refs.multipleTable.clearSelection()
return
}
if (rows.length > this.form.CLASS_SIZE) {
this.$message.error('已超出班级容量')
return
}
this.selectPeopleList = rows
} }
if (rows.length > this.form.CLASS_SIZE) {
this.$message.error('已超出班级容量')
return
}
this.selectPeopleList = rows
}, },
confirm() { confirm() {
const list = this.$refs.multipleTable.selection const list = this.$refs.multipleTable.selection
@ -325,6 +328,7 @@ export default {
} }
this.selectPeopleList = [] this.selectPeopleList = []
this.util.BELONG_TO_CORP = '' this.util.BELONG_TO_CORP = ''
this.$refs.multipleTable.clearSelection()
}, },
getDic() { getDic() {
let i = 0 let i = 0
@ -474,7 +478,9 @@ export default {
this.$refs.userPdf.init({ CLASS_MESSAGE_ID: CLASS_MESSAGE_ID }) this.$refs.userPdf.init({ CLASS_MESSAGE_ID: CLASS_MESSAGE_ID })
}, },
changePeopleList() { changePeopleList() {
requestFN('/classMessage/getPeopleList?showCount=' + this.form.CLASS_SIZE + '&currentPage=1').then((data) => { requestFN('/classMessage/getPeopleList?showCount=' + this.form.CLASS_SIZE + '&currentPage=1',
{ BELONG_TO_CORP: this.util.BELONG_TO_CORP }
).then((data) => {
this.peopleList = data.varList this.peopleList = data.varList
for (let i = 0; i < this.peopleList.length; i++) { for (let i = 0; i < this.peopleList.length; i++) {
this.peopleList[i].STATUS = '' this.peopleList[i].STATUS = ''

View File

@ -60,10 +60,10 @@
width="55" width="55"
align="center"/> align="center"/>
<el-table-column type="index" label="序号" width="50" align="center" /> <el-table-column type="index" label="序号" width="50" align="center" />
<el-table-column prop="CLASS_NAME" label="班级名称" /> <el-table-column prop="CLASS_NAME" width="300px" label="班级名称" />
<el-table-column prop="TRAINING_TYPE_NAME" label="培训类型" /> <el-table-column prop="TRAINING_TYPE_NAME" width="200px" label="培训类型" />
<el-table-column prop="OPENING_TIME" label="开班时间" /> <el-table-column prop="OPENING_TIME" label="开班时间" />
<el-table-column prop="PLACE_NAME" label="培训地点" /> <el-table-column prop="PLACE_NAME" width="200px" label="培训地点" />
<el-table-column prop="CLASS_SIZE" label="班级容量" /> <el-table-column prop="CLASS_SIZE" label="班级容量" />
<el-table-column prop="TRAINEES_NUM" label="培训人员数量" /> <el-table-column prop="TRAINEES_NUM" label="培训人员数量" />
<el-table-column prop="CLASS_STATUS" label="班级状态"> <el-table-column prop="CLASS_STATUS" label="班级状态">
@ -71,11 +71,12 @@
{{ row.CLASS_STATUS === '0'?'待开班':(row.CLASS_STATUS === '1'?'已开班':'完成') }} {{ row.CLASS_STATUS === '0'?'待开班':(row.CLASS_STATUS === '1'?'已开班':'完成') }}
</template> </template>
</el-table-column> </el-table-column>
<el-table-column label="操作" align="center" width="200"> <el-table-column label="操作" align="center" width="400" fixed="right">
<template slot-scope="{row}"> <template slot-scope="{row}">
<el-button type="primary" icon="el-icon-edit" size="mini" @click="handleEdit(row.CLASS_MESSAGE_ID)"></el-button> <el-button type="primary" icon="el-icon-edit" size="mini" @click="handleEdit(row.CLASS_MESSAGE_ID)"></el-button>
<el-button v-show=" row.CLASS_STATUS === '0'" type="danger" icon="el-icon-delete" size="mini" @click="handleDelete(row.CLASS_MESSAGE_ID)"></el-button>
<el-button v-show=" row.CLASS_STATUS === '1'" type="primary" size="mini" @click="uploadExcel(row)"></el-button> <el-button v-show=" row.CLASS_STATUS === '1'" type="primary" size="mini" @click="uploadExcel(row)"></el-button>
<el-button v-if="false" v-show="del" type="danger" icon="el-icon-delete" size="mini" @click="handleDelete(row.CLASS_MESSAGE_ID)"></el-button> <el-button v-show=" row.CLASS_STATUS === '0'" type="primary" icon="el-icon-edit" size="mini" @click="changeName(row)"></el-button>
</template> </template>
</el-table-column> </el-table-column>
</el-table> </el-table>
@ -89,6 +90,7 @@
<edit ref="edit" :title="title" :is-show="isShow" @getResult = "getList"/> <edit ref="edit" :title="title" :is-show="isShow" @getResult = "getList"/>
<init-class ref="initClass" :title="title" :is-show="isShow" @getResult = "getList"/> <init-class ref="initClass" :title="title" :is-show="isShow" @getResult = "getList"/>
<upload-excel ref="uploadExcel" title="上传" append-to-body @getChoose="getFile"/> <upload-excel ref="uploadExcel" title="上传" append-to-body @getChoose="getFile"/>
<change-name ref="changeName" @getResult = "getList"/>
</div> </div>
</template> </template>
<script> <script>
@ -99,8 +101,9 @@ import edit from './edit.vue'
import { upload } from '@/utils/upload' import { upload } from '@/utils/upload'
import uploadExcel from '../../../../components/uploadExcel/index.vue' import uploadExcel from '../../../../components/uploadExcel/index.vue'
import InitClass from './initClass.vue' import InitClass from './initClass.vue'
import ChangeName from './changeName.vue'
export default { export default {
components: { InitClass, uploadExcel, Pagination, edit }, components: { ChangeName, InitClass, uploadExcel, Pagination, edit },
directives: { waves }, directives: { waves },
data() { data() {
return { return {
@ -200,7 +203,7 @@ export default {
requestFN( requestFN(
'/classMessage/delete', '/classMessage/delete',
{ {
CLASSMESSAGE_ID: id CLASS_MESSAGE_ID: id
} }
).then(() => { ).then(() => {
this.$message({ this.$message({
@ -335,6 +338,9 @@ export default {
}, },
uploadExcel(row) { uploadExcel(row) {
this.$refs.uploadExcel.init(row) this.$refs.uploadExcel.init(row)
},
changeName(row) {
this.$refs.changeName.init(row)
} }
} }
} }

View File

@ -166,7 +166,7 @@ export default {
downloadPdf(dom, '相关方安全告知培训合格证') downloadPdf(dom, '相关方安全告知培训合格证')
}, },
getShowPicture(row) { getShowPicture(row) {
if (row.PHOTO && row.PHOTO !== '' && (row.PHOTO.indexOf('.jpg') >= 0 || row.PHOTO.indexOf('.png') >= 0 || row.PHOTO.indexOf('.jpeg') >= 0)) { if (row.PHOTO) {
return true return true
} }
}, },

View File

@ -1,6 +1,6 @@
<template> <template>
<div class="renyuan"> <div class="renyuan">
<div class="block1"> <div v-if="false" class="block1">
<layout-title title="定位基础信息"/> <layout-title title="定位基础信息"/>
<div class="options"> <div class="options">
<div v-for="(item,index) in block1OptionsList" :key="index" class="option"> <div v-for="(item,index) in block1OptionsList" :key="index" class="option">
@ -15,7 +15,7 @@
</div> </div>
</div> </div>
</div> </div>
<div class="block2"> <div v-if="false" class="block2">
<layout-title title="定位状态数据"/> <layout-title title="定位状态数据"/>
<div class="options"> <div class="options">
<div class="bg"/> <div class="bg"/>
@ -29,7 +29,7 @@
</div> </div>
</div> </div>
</div> </div>
<div class="block3"> <div v-if="false" class="block3">
<layout-title title="定位标签状态"/> <layout-title title="定位标签状态"/>
<div class="content"> <div class="content">
<div class="options"> <div class="options">
@ -56,18 +56,42 @@
</div> </div>
</div> </div>
</div> </div>
<div class="block4">
<layout-title title="报警列表"/>
<div class="content">
<div class="table">
<div class="tr">
<div class="td">区域名称</div>
<div class="td">报警设备编号</div>
<div class="td">状态告警</div>
</div>
<div v-for="(item,index) in block4List" :key="index" class="tr">
<div class="td">{{ item.alarmName }}</div>
<div class="td">{{ item.equipmentName }}</div>
<div class="td">{{ item.statusName }}</div>
</div>
</div>
</div>
</div>
</div> </div>
</template> </template>
<script> <script>
import layoutTitle from './title.vue' import layoutTitle from './title.vue'
import CountTo from 'vue-count-to' import CountTo from 'vue-count-to'
import { requestFN } from '../../../utils/request'
export default { export default {
components: { components: {
CountTo, CountTo,
layoutTitle layoutTitle
}, },
props: {
corpInfoId: {
type: String,
default: ''
}
},
data() { data() {
return { return {
block1OptionsList: [ block1OptionsList: [
@ -131,12 +155,26 @@ export default {
count: '-', count: '-',
facount: '-' facount: '-'
} }
] ],
block4List: []
} }
}, },
created() {
this.getData()
},
methods: { methods: {
block3OptionsClick(index) { block3OptionsClick(index) {
this.block3OptionsIndex = index this.block3OptionsIndex = index
},
getData() {
requestFN(
'/map/getAlarmList',
{ corpId: this.corpInfoId }
).then((data) => {
this.block4List = data.list
}).catch((e) => {
this.$message.error(e)
})
} }
} }
} }
@ -321,6 +359,48 @@ export default {
} }
} }
} }
.block4 {
margin-top: 10px;
width: 410px;
background-image: linear-gradient(to bottom, rgba(0, 0, 0, 0), rgba(0, 0, 0, 0.8));
.content {
border: 1px solid;
border-image: linear-gradient(to bottom, rgba(58, 122, 149, 0), rgba(58, 122, 149, 1)) 1;
border-top: none;
padding: 10px;
.options {
display: flex;
justify-content: flex-end;
.title {
cursor: pointer;
}
}
.table {
margin-top: 5px;
.tr {
display: flex;
&:nth-child(odd) {
background-color: rgba(42, 86, 158, 0.53);
}
.td {
flex: 1;
text-align: center;
font-size: 12px;
color: #fff;
padding: 5px;
}
}
}
}
}
} }
@keyframes scale { @keyframes scale {

View File

@ -54,7 +54,7 @@
<!--曹妃甸东 八项作业 曹实业详细页面 end--> <!--曹妃甸东 八项作业 曹实业详细页面 end-->
<peoplePositionNine v-if="type === 'peoplePositionNine'" :id="id" :type="type" :infoname="infoname"/> <peoplePositionNine v-if="type === 'peoplePositionNine'" :id="id" :type="type" :infoname="infoname"/>
<peoplePositionOne v-if="type === 'peoplePositionOne' && corpInfoId !== '035958e685cf4850bc40151c5e0617a6'" :id="id" :type="type" /> <peoplePositionOne v-if="type === 'peoplePositionOne' && corpInfoId !== '035958e685cf4850bc40151c5e0617a6'" :id="id" :type="type" />
<peoplePositionYGS v-if="type === 'peoplePositionOne' && corpInfoId === '035958e685cf4850bc40151c5e0617a6'" :id="id" :type="type" /> <peoplePositionYGS v-if="type === 'peoplePositionOne' && corpInfoId === '035958e685cf4850bc40151c5e0617a6'" :id="id" :type="type" :corp-id="corpInfoId" />
<!-- 重点工程 start --> <!-- 重点工程 start -->
<outSourceInfo v-if="type === 'PROJECT'" :id="id" :type="type" /> <outSourceInfo v-if="type === 'PROJECT'" :id="id" :type="type" />
<outSourceVideoInfo v-if="type === 'VIDEO'" :id="id" :type="type" /> <outSourceVideoInfo v-if="type === 'VIDEO'" :id="id" :type="type" />

View File

@ -8,19 +8,25 @@
<td class="bbg-transparent">照片</td> <td class="bbg-transparent">照片</td>
<td ><img src="../../../assets/map/index/touxiang.png" alt="" width="50" height="50"></td> <td ><img src="../../../assets/map/index/touxiang.png" alt="" width="50" height="50"></td>
<td class="bbg-transparent">姓名</td> <td class="bbg-transparent">姓名</td>
<td >{{ info?info.NAME:'' }}</td> <td >{{ info?info.userName:'' }}</td>
</tr> </tr>
<tr> <tr>
<td class="bbg-transparent">公司</td>
<td >{{ info?info.corpName:'' }}</td>
<td class="bbg-transparent">部门</td> <td class="bbg-transparent">部门</td>
<td >{{ info?info.DEPARTMENT_NAME:'' }}</td> <td >{{ info?info.departmentName:'' }}</td>
<td class="bbg-transparent">岗位</td> </tr>
<td >{{ info?info.POST_NAME:'' }}</td> <tr>
<td class="bbg-transparent">设备id</td>
<td >{{ info?info.deviceId:'' }}</td>
<td class="bbg-transparent">设备名称</td>
<td >{{ info?info.deviceName:'' }}</td>
</tr> </tr>
<tr> <tr>
<td class="bbg-transparent">人员类型</td> <td class="bbg-transparent">人员类型</td>
<td >{{ info?info.PERSON_TYPE:'' }}</td> <td>{{ otherInfo?otherInfo.personType:'' }}</td>
<td class="bbg-transparent">是否为隐患确认人</td> <td class="bbg-transparent">岗位</td>
<td >{{ info.IS_HAZARDCONFIRMER == 0 ?'否':'是' }}</td> <td>{{ otherInfo?otherInfo.postName:'' }}</td>
</tr> </tr>
</table> </table>
</div> </div>
@ -42,12 +48,19 @@ export default {
default() { default() {
return '' return ''
} }
},
corpId: {
type: String,
default() {
return ''
}
} }
}, },
data() { data() {
return { return {
config: config, config: config,
info: {} info: {},
otherInfo: {}
} }
}, },
created() { created() {
@ -58,10 +71,12 @@ export default {
requestFN( requestFN(
'/map/getPersonByCardNo', '/map/getPersonByCardNo',
{ {
CARDNO: this.id CARDNO: this.id,
corpId: this.corpId
} }
).then((data) => { ).then((data) => {
this.info = data.pd this.info = data.info.required
this.otherInfo = data.otherInfo
}).catch((e) => { }).catch((e) => {
}) })
} }

View File

@ -1117,6 +1117,7 @@ export default {
subscription: { subscription: {
// '+' // '+'
topic: '+/UwbBQ/+/prop', topic: '+/UwbBQ/+/prop',
topic1: '+/+/+/alarm',
qos: 0 qos: 0
}, },
@ -1143,7 +1144,8 @@ export default {
vmport: '7010', vmport: '7010',
linkPort: '8093', linkPort: '8093',
VIIDPort: '8088' VIIDPort: '8088'
} },
trajectoryEntityCollection: {}
} }
}, },
mounted() { mounted() {
@ -1466,6 +1468,58 @@ export default {
} }
// var cartesian = this.getCatesian3FromPX(movement.position) // var cartesian = this.getCatesian3FromPX(movement.position)
}, Cesium.ScreenSpaceEventType.LEFT_CLICK) }, Cesium.ScreenSpaceEventType.LEFT_CLICK)
viewer.cesiumWidget.screenSpaceEventHandler.removeInputAction(Cesium.ScreenSpaceEventType.RIGHT_DOUBLE_CLICK)
viewer.cesiumWidget.screenSpaceEventHandler.removeInputAction(Cesium.ScreenSpaceEventType.RIGHT_CLICK)
document.addEventListener('contextmenu', function(event) {
event.preventDefault()
})
this.handler.setInputAction(movement => {
const pick = viewer.scene.pick(movement.position)
if (Cesium.defined(pick) && (pick.id.id)) {
if (!pick.id._monitoItems) {
this.removeTrajectory()
return
}
const point_type = pick.id._monitoItems.data.point_type
const point_id = pick.id._monitoItems.data.id
const corpInfoId = pick.id._monitoItems.data.corpInfoId
if (point_type === '标记点peoplePositionOne') {
this.removeTrajectory()
this.addTrajectory(point_id, corpInfoId)
}
} else {
this.removeTrajectory()
}
}, Cesium.ScreenSpaceEventType.RIGHT_CLICK)
},
addTrajectory(point_id, corpInfoId) {
requestFN(
'/map/getPersonTrace',
{
id: point_id,
corpId: corpInfoId
}
).then((data) => {
if (data.list) {
const positions = []
for (let i = 0; i < data.list.length; i++) {
positions.push(Cesium.Cartesian3.fromDegrees(data.list[i].XAxis, data.list[i].YAxis))
}
const entity = new Cesium.Entity({
id: 'trajectory',
polyline: { positions, width: 5.0, material: Cesium.Color.RED }
})
const collection = new Cesium.CustomDataSource('trajectoryEntityCollection')
collection.entities.add(entity)
viewer.dataSources.add(collection)
this.trajectoryEntityCollection = collection
}
})
},
removeTrajectory() {
if (Object.keys(this.trajectoryEntityCollection).length === 0) return
viewer.dataSources.remove(this.trajectoryEntityCollection)
this.trajectoryEntityCollection = {}
}, },
getCatesian3FromPX: function(px) { getCatesian3FromPX: function(px) {
@ -1820,6 +1874,7 @@ export default {
this.destroyConnection() this.destroyConnection()
this.clearAllBottomOptionsItemsCheck() this.clearAllBottomOptionsItemsCheck()
this.clearAllBottomOptionsItemsEntityCollection() this.clearAllBottomOptionsItemsEntityCollection()
this.removeTrajectory()
this.onePerLocArr = [] this.onePerLocArr = []
this.perLocArr = [] this.perLocArr = []
this.clearMqttPoint() this.clearMqttPoint()
@ -1864,6 +1919,7 @@ export default {
this.addBranchPoint() this.addBranchPoint()
this.clearAllBottomOptionsItemsCheck() this.clearAllBottomOptionsItemsCheck()
this.clearAllBottomOptionsItemsEntityCollection() this.clearAllBottomOptionsItemsEntityCollection()
this.removeTrajectory()
}, },
bottomOptionsClick(index) { bottomOptionsClick(index) {
if (this.bottomClickDisable) return if (this.bottomClickDisable) return
@ -1938,6 +1994,7 @@ export default {
} else if (this.CORP_INFO_ID) { } else if (this.CORP_INFO_ID) {
this.CORP_INFO_ID = '' this.CORP_INFO_ID = ''
this.clearAllBottomOptionsItemsEntityCollection() this.clearAllBottomOptionsItemsEntityCollection()
this.removeTrajectory()
this.dragAreaEntity(this.branchPoint) this.dragAreaEntity(this.branchPoint)
this.toCenter(this.parentCenter) this.toCenter(this.parentCenter)
this.destroyConnection() this.destroyConnection()
@ -2010,7 +2067,8 @@ export default {
} }
if (this.gangkouActive === '00003' && this.CORP_INFO_ID === '035958e685cf4850bc40151c5e0617a6' && urlType === 'peoplePosition') { if (this.gangkouActive === '00003' && this.CORP_INFO_ID === '035958e685cf4850bc40151c5e0617a6' && urlType === 'peoplePosition') {
this.doUnSubscribe() this.doUnSubscribe()
this.clearMqttPoint('1698584148364034050/UwbBQ/') this.clearMqttPoint('+/UwbBQ/')
this.removeTrajectory()
} }
this.bottomOptionsList[pindex].list[index].check = false this.bottomOptionsList[pindex].list[index].check = false
if (this.gangkouActive === '00004') { if (this.gangkouActive === '00004') {
@ -2529,45 +2587,55 @@ export default {
}, },
mqttMessage(CORP_INFO_ID) { mqttMessage(CORP_INFO_ID) {
this.client.on('message', (topic, message) => { this.client.on('message', (topic, message) => {
// created by liu jun mqtt if (topic.indexOf('UwbBQ') !== -1 && topic.indexOf('prop') !== -1) {
let peopleList = JSON.parse(message) // created by liu jun mqtt
if (!Array.isArray(peopleList)) { let peopleList = JSON.parse(message)
peopleList = [peopleList] if (!Array.isArray(peopleList)) {
} peopleList = [peopleList]
for (let i = 0; i < peopleList.length; i++) {
const item = peopleList[i]
//
// UwbBQidUwbJiZhanid
if (item.productKey !== 'UwbBQ') {
continue
} }
// for (let i = 0; i < peopleList.length; i++) {
const index = this.onePerLocArr.findIndex(item1 => { const item = peopleList[i]
return item1.id.toString() === item.deviceCode.toString() //
}) // UwbBQidUwbJiZhanid
const x = item.properties[2].value if (item.productKey !== 'UwbBQ') {
const y = item.properties[3].value continue
const pointColor = this.isPointxyWithinTheArea(this.pointBox, x, y) }
if (index !== -1) { //
this.onePerLocArr[index].x = x const index = this.onePerLocArr.findIndex(item1 => {
this.onePerLocArr[index].y = y return item1.id.toString() === item.deviceCode.toString()
this.onePerLocArr[index].icon_type = 'img4_0' + pointColor })
ry_drag.getPosition(this.onePerLocArr[index]) const x = item.properties[2].value
} else { const y = item.properties[3].value
const perLoc = { const pointColor = this.isPointxyWithinTheArea(this.pointBox, x, y)
id: item.deviceCode, if (index !== -1) {
x: x, this.onePerLocArr[index].x = x
y: y, this.onePerLocArr[index].y = y
icon_type: 'img4_0' + pointColor, this.onePerLocArr[index].icon_type = 'img4_0' + pointColor
data_id: item.deviceCode, ry_drag.getPosition(this.onePerLocArr[index])
point_type: '标记点peoplePositionOne', } else {
label: '人员定位', const perLoc = {
corpInfoId: CORP_INFO_ID id: item.deviceCode,
x: x,
y: y,
icon_type: 'img4_0' + pointColor,
data_id: item.deviceCode,
point_type: '标记点peoplePositionOne',
label: '人员定位',
corpInfoId: CORP_INFO_ID
}
this.onePerLocArr.push(perLoc)
ry_drag.addEntity(perLoc)
this.mqttPoint[this.subscription.topic.substring(0, this.subscription.topic.lastIndexOf('+')) + item.deviceCode] = item.deviceCode
} }
this.onePerLocArr.push(perLoc)
ry_drag.addEntity(perLoc)
this.mqttPoint[this.subscription.topic.substring(0, this.subscription.topic.lastIndexOf('+')) + item.deviceCode] = item.deviceCode
} }
} else if (topic.indexOf('alarm') !== -1) {
const formatMessage = JSON.parse(message)
this.$notify({
title: '报警信息',
dangerouslyUseHTMLString: true,
message: `部门:${formatMessage.deptName}<br/>类型:${formatMessage.identifierName}`,
type: 'error'
})
} }
}) })
}, },
@ -2589,8 +2657,8 @@ export default {
}, },
// //
doSubscribe() { doSubscribe() {
const { topic, qos } = this.subscription const { topic, topic1, qos } = this.subscription
this.client.subscribe(topic, { qos }, (error, res) => { this.client.subscribe([topic, topic1], { qos }, (error, res) => {
if (error) { if (error) {
console.log('Subscribe to topics error', error) console.log('Subscribe to topics error', error)
return return
@ -2601,8 +2669,8 @@ export default {
}, },
// //
doUnSubscribe() { doUnSubscribe() {
const { topic } = this.subscription const { topic, topic1 } = this.subscription
this.client.unsubscribe(topic, error => { this.client.unsubscribe([topic, topic1], error => {
if (error) { if (error) {
console.log('Subscribe to topics error', error) console.log('Subscribe to topics error', error)
} }

View File

@ -140,6 +140,7 @@ export default {
this.$message.success('推送成功') this.$message.success('推送成功')
this.visible = false this.visible = false
this.$emit('refresh', '') this.$emit('refresh', '')
this.beforeClose()
}) })
.catch((e) => { .catch((e) => {
console.log(e) console.log(e)
@ -182,28 +183,40 @@ export default {
handleClose() { handleClose() {
this.form = { this.form = {
STATUS: '', STATUS: '1',
APPOINT_CORP_ID: '',
APPOINT_CORP_NAME: '',
APPOINT_DEPARTMENT_ID: null, APPOINT_DEPARTMENT_ID: null,
APPOINT_DEPARTMENT_NAME: '', APPOINT_DEPARTMENT_NAME: '',
APPOINT_USER_ID: '', APPOINT_USER_ID: null,
APPOINT_USER_NAME: '', APPOINT_USER_NAME: '',
OPINION: '',
user: '', user: '',
tm: new Date().getTime(),
list: [], list: [],
tm: new Date().getTime() isShow: true,
info: {},
entrustFlag: '1'
} }
this.visible = false this.visible = false
}, },
beforeClose() { beforeClose() {
this.visible = false this.visible = false
this.form = { this.form = {
STATUS: '', STATUS: '1',
APPOINT_CORP_ID: '',
APPOINT_CORP_NAME: '',
APPOINT_DEPARTMENT_ID: null, APPOINT_DEPARTMENT_ID: null,
APPOINT_DEPARTMENT_NAME: '', APPOINT_DEPARTMENT_NAME: '',
APPOINT_USER_ID: '', APPOINT_USER_ID: null,
APPOINT_USER_NAME: '', APPOINT_USER_NAME: '',
OPINION: '',
user: '', user: '',
tm: new Date().getTime(),
list: [], list: [],
tm: new Date().getTime() isShow: true,
info: {},
entrustFlag: '1'
} }
} }
} }

View File

@ -153,12 +153,14 @@ export default {
this.$message.error('请填写完整信息') this.$message.error('请填写完整信息')
} else { } else {
if (this.form.TYPE !== '2') { if (this.form.TYPE !== '2') {
this.loading = true
requestFN('/xgf/user/approveMax', this.form) requestFN('/xgf/user/approveMax', this.form)
.then((data) => { .then((data) => {
this.$message.success('推送成功') this.$message.success('推送成功')
this.visible = false this.visible = false
this.$emit('refresh', '') this.$emit('refresh', '')
this.handleClose() this.handleClose()
this.loading = false
}) })
.catch((e) => { .catch((e) => {
console.log(e) console.log(e)
@ -174,12 +176,14 @@ export default {
formData.append('weiTuoShu', this.form.APPOINT_ANNEX[i].raw) formData.append('weiTuoShu', this.form.APPOINT_ANNEX[i].raw)
} }
} }
this.loading = true
upload('/xgf/user/approveMax', formData) upload('/xgf/user/approveMax', formData)
.then((data) => { .then((data) => {
this.$message.success('推送成功') this.$message.success('推送成功')
this.visible = false this.visible = false
this.$emit('refresh', '') this.$emit('refresh', '')
this.handleClose() this.handleClose()
this.loading = false
}) })
.catch((e) => { .catch((e) => {
console.log(e) console.log(e)