Compare commits

...

38 Commits

Author SHA1 Message Date
shanao b5e5e2b0e8 Merge remote-tracking branch 'origin/dev-shanao' into dev
# Conflicts:
#	config/index.js
#	package-lock.json
#	package.json
#	static/config.js
2024-09-13 18:02:30 +08:00
shanao 0f75e526de 测试完成 2024-09-13 17:18:25 +08:00
shanao 8062274b39 修复全部问题 2024-09-12 17:32:07 +08:00
huangyuxuan aec58b0f91 [BUG修复](dev)
修复删除检查记录主账号掉线BUG
2024-09-12 14:15:08 +08:00
shanao 270d0d3c86 修复全部问题 2024-09-12 14:10:14 +08:00
mengfanliang 638f6d4901 Merge branch 'dev-shanao' of http://47.92.113.182:3000/guoyuepeng/qa-prevention-gwj-vue into dev-shanao
fix: 解决分支合并冲突
2024-09-12 11:43:09 +08:00
mengfanliang b29e9ed249 feat: 调试事故信息查询菜单图片回显路径问题 2024-09-12 11:40:32 +08:00
shanao ce40b8f194 修复导出相关问题 2024-09-12 10:18:12 +08:00
guoyuepeng 290c566c73 1.代码格式优化 2024-09-11 17:43:28 +08:00
guoyuepeng c0667c8b46 1.删除info打印 2024-09-11 17:37:58 +08:00
guoyuepeng a8128a0e56 1.移植门口门禁系统和
2.升级js
3.还原安全环保检查
2024-09-11 17:35:16 +08:00
water_xu 4a314fc646 用户管理 - 人脸图像提示语修改 2024-09-11 08:48:24 +08:00
water_xu 952384269f 用户管理 - 人脸图像提示语修改 2024-09-10 19:14:15 +08:00
water_xu 537c7e129f 人员中台 - 暂时调整ISPUSH为2 2024-09-10 18:54:34 +08:00
huangyuxuan cfc84cfced [BUG修复](dev)
取消是否为相关方选项
2024-09-10 18:45:20 +08:00
shanao 4933738b6d 修复导出相关问题 2024-09-10 14:09:40 +08:00
shanao f7cb02d681 导出还没通 2024-09-09 18:04:04 +08:00
huangyuxuan 71cb404eb4 [BUG修复](hyx_2024-9-9_prevention)
修复新增安全环保检查时检察人员名字变为idbug
2024-09-09 16:50:28 +08:00
huangyuxuan d2d3d2d6f8 Merge remote-tracking branch 'origin/dev' into dev 2024-09-09 16:33:43 +08:00
huangyuxuan 98d69362b1 [代码更新](dev)
回退代码版本
2024-09-09 16:33:36 +08:00
guoyuepeng 1696e625be 1.还原人员信息查询条件 2024-09-09 16:30:29 +08:00
huangyuxuan 95525221d5 [代码更新](dev)
回退代码版本
2024-09-09 16:28:36 +08:00
mengfanliang d07eaa7cfc feat: 事故信息查询模块接口对接 2024-09-09 15:17:43 +08:00
shanao 6e97caf3a4 调试 2024-09-08 22:08:29 +08:00
shanao 5aa6676248 事故调查管理代码提交 2024-09-06 19:38:37 +08:00
mengfanliang 2c930b42b2 feat: 事故信息管理菜单重构 2024-09-06 18:17:09 +08:00
shanao 991ef9ea52 事故调查管理代码提交 2024-09-06 16:19:59 +08:00
water_xu 5d9fa4685c Merge branch 'dev' of http://47.92.113.182:3000/guoyuepeng/qa-prevention-gwj-vue into dev 2024-09-06 15:48:04 +08:00
water_xu 9883455926 人员中台 - 暂时调整ISPUSH字段值为2(允许查询所有用户) 2024-09-06 14:23:06 +08:00
huangyuxuan d0390f864f Merge branch 'pet' into dev 2024-09-06 11:44:41 +08:00
liujun 2b54822d58 Merge branch 'liujun-2024-09-05-九公司人员定位' into dev 2024-09-05 18:31:39 +08:00
liujun 7662675179 就公司人员定位系统功能更新 2024-09-05 10:19:49 +08:00
guoyuepeng eb90049369 1.修改提示 2024-09-05 08:39:34 +08:00
guoyuepeng 876c870efc 1.修改前端显示,强制回档 2024-09-04 11:27:24 +08:00
guoyuepeng 605feeceb8 Merge remote-tracking branch 'origin/dev' into dev 2024-09-04 11:23:59 +08:00
guoyuepeng 1354982c6a 1.八项作业强制回档 2024-09-04 11:23:38 +08:00
WenShiJun 202af29c01 消防安全管理添加扫码查看检查记录 2024-09-03 18:07:42 +08:00
wangpeng 3d576a33ca 事故调查管理代码提交 2024-08-30 18:22:13 +08:00
56 changed files with 2125 additions and 183 deletions

View File

@ -10,10 +10,12 @@
<script type="text/javascript" charset="utf-8" src="https://g.alicdn.com/de/prismplayer/2.16.0/aliplayer-min.js"></script> <script type="text/javascript" charset="utf-8" src="https://g.alicdn.com/de/prismplayer/2.16.0/aliplayer-min.js"></script>
<script type="text/javascript" charset="utf-8" src="https://api.tianditu.gov.cn/api?v=4.0&tk=e8a16137fd226a62a23cc7ba5c9c78ce"></script> <script type="text/javascript" charset="utf-8" src="https://api.tianditu.gov.cn/api?v=4.0&tk=e8a16137fd226a62a23cc7ba5c9c78ce"></script>
<script type="text/javascript" src="static/jswebrtc.min.js"></script>
<script type="text/javascript" charset="utf-8" src="https://api.tianditu.gov.cn/api?v=4.0&tk=e8a16137fd226a62a23cc7ba5c9c78ce"></script> <script type="text/javascript" charset="utf-8" src="https://api.tianditu.gov.cn/api?v=4.0&tk=e8a16137fd226a62a23cc7ba5c9c78ce"></script>
<script type="text/javascript" src="./static/map/cesium91/CesiumUnminified/Cesium.js"></script> <script type="text/javascript" src="./static/map/cesium91/CesiumUnminified/Cesium.js"></script>
<script type="text/javascript" src="./static/map/cesium91/CustomCesiumSDK.js"></script> <script type="text/javascript" src="./static/map/cesium91/CustomCesiumSDK.js"></script>
<link href="./static/map/cesium91/CesiumUnminified/Widgets/widgets.css" rel="stylesheet"/> <link href="./static/map/cesium91/CesiumUnminified/Widgets/widgets.css" rel="stylesheet"/>
</head> </head>
<body> <body>
<div id="app"></div> <div id="app"></div>

Binary file not shown.

After

Width:  |  Height:  |  Size: 12 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 12 KiB

View File

@ -24,7 +24,6 @@ router.beforeEach((to, from, next) => {
router.addRoutes(accessRoutes) router.addRoutes(accessRoutes)
next({ ...to, replace: true }) next({ ...to, replace: true })
} catch (error) { } catch (error) {
console.info(error)
next(`/login`) next(`/login`)
} }
}) })
@ -37,7 +36,6 @@ router.beforeEach((to, from, next) => {
router.addRoutes(accessRoutes) router.addRoutes(accessRoutes)
next({ ...to, replace: true }) next({ ...to, replace: true })
} catch (error) { } catch (error) {
console.info(error)
next(`/login`) next(`/login`)
} }
} }

View File

@ -100,6 +100,12 @@ export const constantRoutes = [
hidden: true, hidden: true,
component: () => import('@/views/map/index') component: () => import('@/views/map/index')
} }
// {
// path: '/accident/records',
// name: 'apiAccidentRecords',
// meta: { name: '事故调查' },
// component: () => import('@/views/accident/records/index.vue')
// }
] ]
const createRouter = () => new Router({ const createRouter = () => new Router({
// mode: 'history', // require service support // mode: 'history', // require service support

View File

@ -7,7 +7,6 @@
* @returns {Boolean} * @returns {Boolean}
*/ */
export function validText(str) { export function validText(str) {
console.info(str)
if (str.trim().length < 1) { if (str.trim().length < 1) {
return false return false
} }

View File

@ -0,0 +1,384 @@
<template>
<div class="app-container">
<el-form
ref="form"
:model="infoForm"
:rules="rules"
label-width="180px"
style="width: 900px"
>
<el-form-item :label-width="formLabelWidth" label="事故案号" prop="incidentNumber">
<el-input v-model="infoForm.incidentNumber" :disabled="isDisabled" autocomplete="off"/>
</el-form-item>
<el-form-item :label-width="formLabelWidth" label="事故名称" prop="incidentName">
<el-input v-model="infoForm.incidentName" :disabled="isDisabled" autocomplete="off"/>
</el-form-item>
<el-form-item :label-width="formLabelWidth" label="事故类型" prop="incidentType">
<el-select v-model="infoForm.incidentType" :disabled="isDisabled" placeholder="请选择">
<el-option v-for="item in incidentTypes" :key="item.id" :label="item.name" :value="item.id"/>
</el-select>
</el-form-item>
<el-form-item :label-width="formLabelWidth" label="事故级别" prop="incidentLevel">
<el-select v-model="infoForm.incidentLevel" :disabled="isDisabled" placeholder="请选择">
<el-option v-for="item in incidentLevels" :key="item.id" :label="item.name" :value="item.id"/>
</el-select>
</el-form-item>
<el-form-item :label-width="formLabelWidth" label="事故发生地点" prop="location">
<el-input v-model="infoForm.location" :disabled="isDisabled" autocomplete="off"/>
</el-form-item>
<el-form-item :label-width="formLabelWidth" label="事故发生时间" prop="incidentDate">
<el-date-picker
:disabled="isDisabled"
v-model="infoForm.incidentDate"
type="datetime"
placeholder="选择事故发生时间"
style="width: 100%;"
/>
</el-form-item>
<el-form-item :label-width="formLabelWidth" label="直接经济损失(万元)" prop="directLoss">
<el-input v-model="infoForm.directLoss" :disabled="isDisabled" type="number" autocomplete="off"/>
</el-form-item>
<el-form-item :label-width="formLabelWidth" label="受伤人数" prop="injured">
<el-input v-model="infoForm.injured" :disabled="isDisabled" type="number" autocomplete="off"/>
</el-form-item>
<el-form-item :label-width="formLabelWidth" label="死亡人数" prop="fatalities">
<el-input v-model="infoForm.fatalities" :disabled="isDisabled" type="number" autocomplete="off"/>
</el-form-item>
<el-form-item :label-width="formLabelWidth" label="重伤人数" prop="seriouslyInjured">
<el-input v-model="infoForm.seriouslyInjured" :disabled="isDisabled" type="number" autocomplete="off"/>
</el-form-item>
<el-form-item :label-width="formLabelWidth" label="事故起因" prop="cause">
<el-input v-model="infoForm.cause" :disabled="isDisabled" autocomplete="off"/>
</el-form-item>
<el-form-item :label-width="formLabelWidth" label="事故概述" prop="summary">
<el-input v-model="infoForm.summary" :disabled="isDisabled" autocomplete="off"/>
</el-form-item>
<el-form-item :label-width="formLabelWidth" label="事故照片" prop="fileList">
<el-upload
ref="upload"
:disabled="isDisabled"
:file-list="infoForm.fileList"
:multiple="false"
:auto-upload="true"
:limit="limitNum"
:on-remove="handleRemovePicture"
:on-preview="handlePictureCardPreview"
:before-upload="beforeAccidentUpload"
:on-error="handleError"
:on-exceed="handleExceed"
name="file"
action="#"
accept=".jpg,.jpeg,.png"
list-type="picture-card">
<i class="el-icon-plus"/>
</el-upload>
</el-form-item>
<el-form-item :label-width="formLabelWidth" label="原因分析及责任认定" prop="analysis">
<el-input v-model="infoForm.analysis" :disabled="isDisabled" autocomplete="off"/>
</el-form-item>
<el-form-item :label-width="formLabelWidth" label="考核建议" prop="suggestions">
<el-input v-model="infoForm.suggestions" :disabled="isDisabled" autocomplete="off"/>
</el-form-item>
<el-form-item :label-width="formLabelWidth" label="整改措施" prop="measures">
<el-input v-model="infoForm.measures" :disabled="isDisabled" autocomplete="off"/>
</el-form-item>
<el-form-item :label-width="formLabelWidth" label="填表人" prop="creator">
<el-input v-model="infoForm.creator" :disabled="isDisabled" autocomplete="off"/>
</el-form-item>
<el-form-item :label-width="formLabelWidth" label="报出日期" prop="reportDate">
<el-date-picker
v-model="infoForm.reportDate"
:disabled="isDisabled"
type="datetime"
placeholder="请选择报出日期"
style="width: 100%;"
/>
</el-form-item>
</el-form>
<el-dialog :visible.sync="dialogImgVisible">
<div v-if="infoForm.fileList.length > 0">
<img :src="infoForm.fileList[0].url" width="100%" alt="">
</div>
</el-dialog>
<div class="ui-height"/>
<div class="ui-foot">
<el-button
type="primary"
icon="el-icon-arrow-left"
plain
@click="goBack">返回
</el-button>
<el-button type="primary" @click="confirm"> </el-button>
</div>
</div>
</template>
<script>
import { requestFN } from '../../../../utils/request'
import { upload } from '@/utils/upload'
export default {
data() {
return {
config: config,
infoForm: {
id: '', // ID
incidentNumber: '', //
incidentName: '', //
incidentType: null, //
companyName: '', //
incidentLevel: '', //
incidentNature: '', //
location: '', //
incidentDate: null, //
directLoss: '', //
injured: null, //
fatalities: null, //
seriouslyInjured: null, //
cause: '', //
summary: '', //
fileList: [], //
analysis: '', //
suggestions: '', //
measures: '', //
creator: '', //
reportDate: null //
},
formLabelWidth: '140px',
/** 事故类型 */
incidentTypes: [],
/** 事故等级 */
incidentLevels: [],
tableName: '',
/** 图片上传限制个数 */
limitNum: 1,
/** 预览弹窗 */
dialogImgVisible: false,
rules: {
incidentNumber: [{ required: true, message: '事故案号不能为空', trigger: 'blur' }],
incidentName: [{ required: true, message: '事故名称不能为空', trigger: 'blur' }],
incidentType: [{ required: true, message: '事故类型不能为空', trigger: 'blur' }],
incidentLevel: [{ required: true, message: '事故级别不能为空', trigger: 'blur' }],
incidentNature: [{ required: true, message: '事故性质不能为空', trigger: 'blur' }],
location: [{ required: true, message: '事故发生地点不能为空', trigger: 'blur' }],
incidentDate: [{ required: true, message: '事故发生时间不能为空', trigger: 'blur' }],
directLoss: [{ required: true, message: '直接经济损失(万元)不能为空', trigger: 'blur' }],
injured: [{ required: true, message: '受伤人数不能为空', trigger: 'blur' }],
seriouslyInjured: [{ required: true, message: '隐患类型不能为空', trigger: 'blur' }],
cause: [{ required: true, message: '事故起因不能为空', trigger: 'blur' }],
summary: [{ required: true, message: '事故概述不能为空', trigger: 'blur' }],
fileList: [{ required: true, message: '事故照片不能为空', trigger: 'blur' }],
analysis: [{ required: true, message: '原因分析及责任认定不能为空', trigger: 'blur' }],
suggestions: [{ required: true, message: '考核建议不能为空', trigger: 'blur' }],
measures: [{ required: true, message: '整改措施不能为空', trigger: 'blur' }],
creator: [{ required: true, message: '填表人不能为空', trigger: 'blur' }],
reportDate: [{ required: true, message: '报出日期不能为空', trigger: 'blur' }]
}
}
},
computed: {
isDisabled() {
return this.$parent.tableName === '查看'
}
},
created() {
this.getDict()
const id = this.$parent.id
this.tableName = this.$parent.tableName
if (id == null || id === '') {
this.infoForm = this.$options.data().infoForm
} else {
// ID,
requestFN('/accident/' + id, {}).then((data) => {
this.infoForm = {
...data.info,
fileList: [
{
name: 'photo',
url: config.fileUrl + data.info.photos,
remotePathName: data.info.photos
}
]
}
}).catch((e) => {
})
}
},
methods: {
/**
* 文件列表移除文件时的钩子
*/
handleRemovePicture(file) {
if (file.remotePathName) {
requestFN(`/accident/delete/photos`, {
path: file.remotePathName
}).then((res) => {
if (res.result === 'success') {
this.infoForm.fileList = []
this.$message({
message: '文件删除成功',
type: 'info',
duration: 2000
})
}
})
}
},
/**
* 点击文件列表中已上传的文件时的钩子
*/
handlePictureCardPreview(file) {
this.dialogImgVisible = true
this.dialogImageUrl = file.url
},
/**
* 文件上传失败时的钩子处理
*/
// eslint-disable-next-line handle-callback-err
handleError(err, file, fileList) {
this.$message({
message: `${file.name}上传失败, 请稍后重试`,
type: 'error',
duration: 2000
})
},
/**
* 文件超出个数限制的钩子处理
*/
handleExceed(files, fileList) {
this.$message.warning(`当前限制选择 ${this.limitNum} 个文件,本次选择了 ${files.length} 个文件`)
},
/**
* 上传文件之前的钩子参数为上传的文件若返回 false 或者返回 Promise 且被 reject则停止上传
*/
beforeAccidentUpload(file) {
if (!file) {
this.$message({
message: '请上传图片',
type: 'error'
})
return false
}
const types = ['image/jpeg', 'image/jpg', 'image/png']
const isImage = types.includes(file.type)
if (!isImage) {
this.$message.error('上传图片只能是 JPG、JPEG、PNG 格式!')
return false
} else {
const formData = new FormData()
formData.append('file', file)
upload('/accident/import/photos', formData).then((data) => {
if (data.result === 'success') {
this.infoForm = {
...this.infoForm,
fileList: [{
name: file.name,
url: config.fileUrl + data.path,
remotePathName: data.path
}]
}
}
})
return false
}
},
/**
* 返回到列表页面
*/
goBack() {
this.handleResetInitForm()
this.image = []
this.dialogImageUrl = ''
this.$parent.activeName = 'List'
},
/**
* 表单清空处理
*/
handleResetInitForm() {
this.infoForm = {
id: '', // ID
incidentNumber: '', //
incidentName: '', //
incidentType: null, //
companyName: '', //
incidentLevel: '', //
incidentNature: '', //
location: '', //
incidentDate: null, //
directLoss: '', //
injured: null, //
fatalities: null, //
seriouslyInjured: null, //
cause: '', //
summary: '', //
fileList: [], //
analysis: '', //
suggestions: '', //
measures: '', //
creator: '', //
reportDate: null //
}
},
/**
* 表单确认按钮
*/
confirm() {
this.$refs.form.validate(valid => {
if (!valid) {
return false
}
const params = {
...this.infoForm,
photos: this.infoForm.fileList[0].remotePathName
}
delete params.fileList
requestFN('/accident' + (this.tableName === '修改' ? '/update' : '/save'), params)
.then((response) => {
//
this.$message.success(this.tableName + '成功')
this.infoForm = this.$options.data().infoForm
this.$parent.activeName = 'List'
// eslint-disable-next-line handle-callback-err
}).catch((error) => {
this.$message.error(this.tableName + '失败')
})
})
},
/**
* 获取字典
*/
getDict() {
const url = '/dictionaries/listSelectTree'
requestFN(url,
{
DICTIONARIES_ID: '8d4140a900184b60836ad1a6490fd510'
}
).then((data) => {
this.incidentTypes = JSON.parse(data.zTreeNodes)
})
requestFN(url,
{
DICTIONARIES_ID: 'b61a1edc59c0430c8741c5f51aa26c3c'
}
).then((data) => {
this.incidentLevels = JSON.parse(data.zTreeNodes)
})
}
}
}
</script>
<style scoped lang="scss"></style>

View File

@ -0,0 +1,338 @@
<template>
<div class="app-container">
<el-form ref="searchForm" :model="searchForm" label-width="100px">
<el-row :gutter="12">
<el-col :span="4">
<el-form-item label="事故名称" prop="incidentName">
<el-input v-model="searchForm.incidentName" placeholder="请输入事故名称" class="filter-item"/>
</el-form-item>
</el-col>
<el-col :span="6">
<el-form-item label="发生时间" prop="incidentDates">
<el-date-picker
v-model="searchForm.incidentDates"
:default-time="['00:00:00', '23:59:59']"
value-format="yyyy-MM-dd HH:mm:ss"
format="yyyy-MM-dd"
style="width: 100%"
type="daterange"
range-separator="-"
start-placeholder="开始日期"
end-placeholder="结束日期"
/>
</el-form-item>
</el-col>
<el-col :span="4">
<el-form-item label="发生地点" prop="location">
<el-input v-model="searchForm.location" placeholder="请输入发生地点" />
</el-form-item>
</el-col>
<el-col :span="3">
<el-form-item label="事故类型" prop="incidentType">
<el-select v-model="searchForm.incidentType" placeholder="请选择">
<el-option v-for="item in incidentTypes" :key="item.id" :label="item.name" :value="item.id" />
</el-select>
</el-form-item>
</el-col>
<el-col :span="3">
<el-form-item label="事故等级" prop="incidentLevel">
<el-select v-model="searchForm.incidentLevel" placeholder="请选择">
<el-option v-for="item in incidentLevels" :key="item.id" :label="item.name" :value="item.id" />
</el-select>
</el-form-item>
</el-col>
<el-col :span="3">
<el-button v-waves type="primary" icon="el-icon-search" @click="searchList"></el-button>
<el-button v-waves icon="el-icon-refresh" @click="handleReset"></el-button>
</el-col>
</el-row>
<!-- 搜索查询 end -->
<!-- 顶部操作按钮 start -->
<el-row :gutter="24">
<el-col :span="24">
<el-button type="primary" icon="el-icon-circle-plus" @click="goView('', '新增')">新增</el-button>
<el-button icon="el-icon-s-promotion" @click="handleAllExport"></el-button>
<el-button type="danger" icon="el-icon-delete-solid" @click="handleBatchDel"></el-button>
</el-col>
</el-row>
<!-- 顶部操作按钮 end -->
</el-form>
<!-- table 表格 start -->
<div style="margin-top: 16px;">
<el-table
v-loading="listLoading"
ref="multipleTable"
:data="varList"
tooltip-effect="dark"
style="width: 100%"
border
@selection-change="handleSelectionChange"
>
<el-table-column type="selection" width="55"/>
<el-table-column label="事故名称" prop="incidentName"/>
<el-table-column label="所属公司" prop="companyName"/>
<el-table-column label="发生时间" prop="incidentDate">
<template v-slot="{row}">
{{ formatDate(row.incidentDate,'YYYY-MM-DD HH:mm:ss') }}
</template>
</el-table-column>
<el-table-column label="发生地点" prop="location"/>
<el-table-column label="操作" width="300">
<template v-slot="{row}">
<el-button icon="el-icon-view" size="mini" @click="goView(row.id, '查看')">查看</el-button>
<el-button icon="el-icon-edit" size="mini" @click="goEdit(row.id, '修改')">修改</el-button>
<el-button icon="el-icon-delete-solid" type="danger" size="mini" @click="deleteRow(row.id)"></el-button>
</template>
</el-table-column>
</el-table>
</div>
<!-- table 表格 end -->
<div class="pagination-group">
<pagination :total="listQuery.total" :page.sync="listQuery.page" :limit.sync="listQuery.limit" @pagination="searchList" />
</div>
</div>
</template>
<script>
import Pagination from '@/components/Pagination'
import waves from '@/directive/waves'
import formatDate from '@/utils/dateformat'
import { requestFN } from '../../../../utils/request'
export default {
components: { Pagination },
directives: { waves },
data() {
return {
//
searchForm: {
/** 事故名称 */
incidentName: '',
/** 发生时间 */
incidentDates: [],
/** 开始时间 */
startTime: null,
/** 结束时间 */
endTime: null,
/** 发生地点 */
location: '',
/** 事故类型 */
incidentType: '',
/** 事故等级 */
incidentLevel: ''
},
/** 当前选中行 */
multipleSelection: [],
/** 列表加载态 */
listLoading: false,
/** 源列表数据项 */
varList: [],
/** 事故类型 */
incidentTypes: [],
/** 事故等级 */
incidentLevels: [],
//
listQuery: {
/** 当前页数 */
page: 1,
/** 分页数 */
limit: 20,
/** 总页数 */
total: 0
}
}
},
created() {
this.getDict()
this.searchList()
},
methods: {
/**
* 查询搜索
*/
searchList() {
this.listLoading = true
const dates = this.searchForm.incidentDates
if (dates != null && dates.length === 2) {
this.searchForm.startTime = dates[0]
this.searchForm.endTime = dates[1]
}
const url = '/accident/page?showCount=' + this.listQuery.limit + '&currentPage=' + this.listQuery.page
requestFN(url, { ...this.searchForm }).then((data) => {
this.listLoading = false
this.varList = data.varList
this.listQuery.total = data.page.totalResult
}).catch((e) => {
this.listLoading = false
})
},
/**
* 重置搜索条件
*/
handleReset() {
this.searchForm = this.$options.data().searchForm
this.searchList()
},
/**
* 表格行选择器处理
*/
handleSelectionChange(val) {
this.multipleSelection = val
},
/**
* 跳转查看详情页面
*/
goView(id, name) {
this.$parent.id = id
this.$parent.tableName = name
this.$parent.activeName = 'AddOrEdit'
},
/**
* 跳转修改页面
*/
goEdit(id, name) {
this.$parent.id = id
this.$parent.tableName = name
this.$parent.activeName = 'AddOrEdit'
},
/**
* 删除行数据
*/
deleteRow(id) {
if (id === null || id === '') {
this.$message.warning('请选择要删除的行')
return
}
//
this.$confirm('确定要删除这调记录吗?', '提示', {
confirmButtonText: '确定',
cancelButtonText: '取消',
type: 'warning'
}).then(() => {
//
const url = '/accident/delete/' + '' + id
requestFN(url).then((response) => {
//
this.$message.success('删除成功')
this.searchList()
// eslint-disable-next-line handle-callback-err
}).catch((error) => {
this.$message.error('删除失败')
})
}).catch(() => {
this.$message({
type: 'info',
message: '已取消删除'
})
})
},
/**
* 全部导出
*/
handleAllExport() {
this.$confirm('确定要下载excel模板吗?', {
confirmButtonText: '确定',
cancelButtonText: '取消',
type: 'warning'
}).then(() => {
this.listLoading = false
window.location.href = config.httpurl + '/accident/export/excel'
}).catch(() => {
this.listLoading = false
})
this.listLoading = false
},
/**
* 刷新
*/
handleRefresh() {
this.searchForm = this.$options.data().searchForm
this.searchList()
// this.toggleSelection()
},
/**
* 批量删除
*/
handleBatchDel() {
//
const selectedRows = this.multipleSelection
//
if (this.multipleSelection === '' || selectedRows.length === 0) {
this.$message.warning('请选择要删除的行')
return
}
//
this.$confirm('确定要删除这些记录吗?', '提示', {
confirmButtonText: '确定',
cancelButtonText: '取消',
type: 'warning'
}).then(() => {
// ID
let ids = ''
selectedRows.forEach(row => { ids += row.id + ',' })
//
const url = '/accident/delete/' + '' + ids
requestFN(url).then((response) => {
//
this.$message.success('删除成功')
this.searchList()
// eslint-disable-next-line handle-callback-err
}).catch(() => {
this.$message.error('删除失败')
})
}).catch(() => {
this.$message({
type: 'info',
message: '已取消删除'
})
})
},
/**
* 查询字典
*/
getDict() {
const url = '/dictionaries/listSelectTree'
requestFN(url,
{
DICTIONARIES_ID: '8d4140a900184b60836ad1a6490fd510'
}
).then((data) => {
this.incidentTypes = JSON.parse(data.zTreeNodes)
})
requestFN(url,
{
DICTIONARIES_ID: 'b61a1edc59c0430c8741c5f51aa26c3c'
}
).then((data) => {
this.incidentLevels = JSON.parse(data.zTreeNodes)
})
},
formatDate(date, format) {
return formatDate(date, format)
}
}
}
</script>
<style lang="scss" scoped>
.pagination-group {
margin-top: 14px;
}
</style>

View File

@ -0,0 +1,37 @@
<template>
<div>
<List v-if="activeName === 'List'" ref="List" />
<Add v-if="activeName === 'AddOrEdit'" ref="AddOrEdit" />
</div>
</template>
<script>
import List from './components/list.vue'
import Add from './components/addOrEdit.vue'
export default {
components: {
List: List,
Add: Add
},
data() {
return {
activeName: 'List',
id: '',
tableName: ''
}
},
watch: {
activeName(val) {
if (val === 'List') {
this.$nextTick(() => {
this.$refs.List.searchList()
})
}
}
}
}
</script>
<style scoped>
</style>

View File

@ -368,7 +368,7 @@ export default {
this.listLoading = false this.listLoading = false
this.disposal.MAJORDANGERSOURCE_DISPOSAL_ID = data.pd.MAJORDANGERSOURCE_DISPOSAL_ID this.disposal.MAJORDANGERSOURCE_DISPOSAL_ID = data.pd.MAJORDANGERSOURCE_DISPOSAL_ID
this.disposal.DISPOSAL_TIME = data.pd.DISPOSAL_TIME this.disposal.DISPOSAL_TIME = data.pd.DISPOSAL_TIME
console.info(this.disposal)
// this.dialogFormEdit = false // this.dialogFormEdit = false
// this.hasDisposal = false // this.hasDisposal = false
}).catch((e) => { }).catch((e) => {
@ -414,7 +414,7 @@ export default {
this.uploadDisposalAfterFile() this.uploadDisposalAfterFile()
this.listLoading = true this.listLoading = true
this.disposal.DISPOSAL_STATUS = '1' this.disposal.DISPOSAL_STATUS = '1'
console.info(this.disposal)
requestFN( requestFN(
'/majordangersourcedisposal/' + methodName, '/majordangersourcedisposal/' + methodName,
this.disposal this.disposal
@ -423,7 +423,6 @@ export default {
this.dialogFormEdit = false this.dialogFormEdit = false
this.hasDisposal = false this.hasDisposal = false
this.resetDisposal() this.resetDisposal()
console.info(this.disposal)
this.timer = setInterval(this.handleTimerOperation, 5000) this.timer = setInterval(this.handleTimerOperation, 5000)
}).catch((e) => { }).catch((e) => {
this.listLoading = false this.listLoading = false
@ -443,7 +442,7 @@ export default {
} }
} }
// formData.append('FFILE', this.disposal.disposalBeforeFile) // formData.append('FFILE', this.disposal.disposalBeforeFile)
console.info(this.disposal.MAJORDANGERSOURCE_DISPOSAL_ID)
formData.append('FOREIGN_KEY', this.disposal.MAJORDANGERSOURCE_DISPOSAL_ID) formData.append('FOREIGN_KEY', this.disposal.MAJORDANGERSOURCE_DISPOSAL_ID)
formData.append('TYPE', 20) formData.append('TYPE', 20)
this.uploadFileSubmit(formData, '处置前照片上传完成') this.uploadFileSubmit(formData, '处置前照片上传完成')
@ -457,7 +456,7 @@ export default {
} }
} }
// formData.append('FFILE', this.disposal.disposalAfterFile) // formData.append('FFILE', this.disposal.disposalAfterFile)
console.info(this.disposal.MAJORDANGERSOURCE_DISPOSAL_ID)
formData.append('FOREIGN_KEY', this.disposal.MAJORDANGERSOURCE_DISPOSAL_ID) formData.append('FOREIGN_KEY', this.disposal.MAJORDANGERSOURCE_DISPOSAL_ID)
formData.append('TYPE', 21) formData.append('TYPE', 21)
this.uploadFileSubmit(formData, '处置后照片上传完成') this.uploadFileSubmit(formData, '处置后照片上传完成')
@ -467,7 +466,7 @@ export default {
'/imgfiles/add', '/imgfiles/add',
formData formData
).then((data) => { ).then((data) => {
console.info(str)
}).catch((e) => { }).catch((e) => {
}) })
}, },

View File

@ -496,9 +496,6 @@ export default {
if (this.isClearRectificationor) { if (this.isClearRectificationor) {
this.hiddenForm.RECTIFICATIONOR = '' this.hiddenForm.RECTIFICATIONOR = ''
} }
console.info(this.isClearRectificationor)
console.info(this.hiddenForm.RECTIFICATIONOR)
this.getReUserList(newVal) this.getReUserList(newVal)
this.isClearRectificationor = true this.isClearRectificationor = true
} }

View File

@ -139,11 +139,11 @@
<i class="el-icon-plus"/> <i class="el-icon-plus"/>
</el-upload> </el-upload>
<div style="margin-left:20px;line-height:1.6"> <div style="margin-left:20px;line-height:1.6">
<div style="color: red;font-size: 12px">若新上传人脸图片将覆盖旧人脸信息不上传则不做修改</div> <!-- <div style="color: red;font-size: 12px">若新上传人脸图片将覆盖旧人脸信息不上传则不做修改</div>
<div style="color: red;font-size: 12px">* 图像格式JPEGJPGPNGBMP</div> <div style="color: red;font-size: 12px">* 图像格式JPEGJPGPNGBMP</div>
<div style="color: red;font-size: 12px">* 图像大小不超过1M</div> <div style="color: red;font-size: 12px">* 图像大小不超过1M</div>
<div style="color: red;font-size: 12px">* 图像分辨率大于32×32像素小于4096×4096像素<br>人脸占比不低于64×64像素</div> <div style="color: red;font-size: 12px">* 图像分辨率大于32×32像素小于4096×4096像素<br>人脸占比不低于64×64像素</div> -->
<div style="color: red;font-size: 12px">如无合适照片请该人员登陆曹港APP中进行人脸照片采集</div> <!-- <div style="color: red;font-size: 12px">如无合适照片请该人员登陆曹港APP中进行人脸照片采集</div> -->
</div> </div>
</div> </div>
</el-form-item> </el-form-item>

View File

@ -96,7 +96,7 @@
</template> </template>
<el-button v-show="edit" type="primary" icon="el-icon-edit" size="mini" @click="handleEdit(row)"></el-button> <el-button v-show="edit" type="primary" icon="el-icon-edit" size="mini" @click="handleEdit(row)"></el-button>
<el-button v-show="del && row.ISMAIN=='0'" type="danger" icon="el-icon-delete" size="mini" @click="handleDelete(row.USER_ID, row.NAME, row.ISPUSH)"></el-button> <el-button v-show="del && row.ISMAIN=='0'" type="danger" icon="el-icon-delete" size="mini" @click="handleDelete(row.USER_ID, row.NAME, row.ISPUSH)"></el-button>
<el-button v-if="row.ISPUSH == '0'" type="primary" icon="el-icon-position" size="mini" @click="goPush(row)"></el-button> <!-- <el-button v-if="row.ISPUSH == '0'" type="primary" icon="el-icon-position" size="mini" @click="goPush(row)"></el-button>-->
</template> </template>
</el-table-column> </el-table-column>
</el-table> </el-table>
@ -798,7 +798,7 @@ export default {
SHIFTDUTYTWO: this.SHIFTDUTYTWO, SHIFTDUTYTWO: this.SHIFTDUTYTWO,
IS_HAZARDCONFIRMER: this.IS_HAZARDCONFIRMER, IS_HAZARDCONFIRMER: this.IS_HAZARDCONFIRMER,
USER_ID: this.USER_ID, USER_ID: this.USER_ID,
ISPUSH: '1' ISPUSH: '2'
} }
).then((data) => { ).then((data) => {
this.listLoading = false this.listLoading = false

View File

@ -139,11 +139,11 @@
<i class="el-icon-plus"/> <i class="el-icon-plus"/>
</el-upload> </el-upload>
<div style="margin-left:20px;line-height:1.6"> <div style="margin-left:20px;line-height:1.6">
<div style="color: red;font-size: 12px">若新上传人脸图片将覆盖旧人脸信息不上传则不做修改</div> <!-- <div style="color: red;font-size: 12px">若新上传人脸图片将覆盖旧人脸信息不上传则不做修改</div>
<div style="color: red;font-size: 12px">* 图像格式JPEGJPGPNGBMP</div> <div style="color: red;font-size: 12px">* 图像格式JPEGJPGPNGBMP</div>
<div style="color: red;font-size: 12px">* 图像大小不超过1M</div> <div style="color: red;font-size: 12px">* 图像大小不超过1M</div>
<div style="color: red;font-size: 12px">* 图像分辨率大于32×32像素小于4096×4096像素<br>人脸占比不低于64×64像素</div> <div style="color: red;font-size: 12px">* 图像分辨率大于32×32像素小于4096×4096像素<br>人脸占比不低于64×64像素</div> -->
<div style="color: red;font-size: 12px">如无合适照片请该人员登陆曹港APP中进行人脸照片采集</div> <!-- <div style="color: red;font-size: 12px">如无合适照片请该人员登陆曹港APP中进行人脸照片采集</div> -->
</div> </div>
</div> </div>
</el-form-item> </el-form-item>

View File

@ -73,7 +73,7 @@
<el-tag v-else type="danger"></el-tag> <el-tag v-else type="danger"></el-tag>
</template> </template>
</el-table-column> </el-table-column>
<el-table-column label="操作" width="380"> <el-table-column label="操作" width="450">
<template slot-scope="{row}"> <template slot-scope="{row}">
<el-button <el-button
v-show="true" v-show="true"
@ -97,6 +97,14 @@
size="mini" size="mini"
@click="handleDelete(row)">删除 @click="handleDelete(row)">删除
</el-button> </el-button>
<!-- 新增按钮检查记录二维码 -->
<el-button
class="tiffany-btn"
icon="el-icon-document"
type="info"
size="mini"
@click="handleShowRecordQr(row)">检查记录二维码
</el-button>
</template> </template>
</el-table-column> </el-table-column>
</el-table> </el-table>
@ -143,6 +151,22 @@
<el-button v-print="'#printTest'" type="primary"> </el-button> <el-button v-print="'#printTest'" type="primary"> </el-button>
</div> </div>
</el-dialog> </el-dialog>
<el-dialog :visible.sync="dialogRecordFormShow" title="查看检查记录二维码" width="680px" class="top-dialog">
<div id="recordPrintTest" style="border: 1px solid #fff;">
<div class="level-title" style="margin-top:20px">
<h1>检查记录二维码</h1>
</div>
<div class="table-qrcode">
<vue-qr :text="recordQrcodeStr" :margin="0" :size="300" color-dark="#000" color-light="#fff" />
</div>
</div>
<div slot="footer" class="dialog-footer">
<el-button @click="dialogRecordFormShow = false"> </el-button>
<el-button v-print="'#recordPrintTest'" type="primary"> </el-button>
</div>
</el-dialog>
<el-dialog v-loading ="listLoading" :visible.sync="dialogEditUser" title="批量修改负责人" width="800px"> <el-dialog v-loading ="listLoading" :visible.sync="dialogEditUser" title="批量修改负责人" width="800px">
<el-form ref="firefightingBatchEditDept" :model="dialogEditUserForm" :rules="dialogEditUserRules" label-width="150px"> <el-form ref="firefightingBatchEditDept" :model="dialogEditUserForm" :rules="dialogEditUserRules" label-width="150px">
<el-row> <el-row>
@ -157,7 +181,6 @@
<el-button @click="dialogEditUser = false"> </el-button> <el-button @click="dialogEditUser = false"> </el-button>
<el-button type="primary" @click="dialogEditUserConfirm"> </el-button> <el-button type="primary" @click="dialogEditUserConfirm"> </el-button>
</div> </div>
</el-dialog> </el-dialog>
</div> </div>
</template> </template>
@ -171,9 +194,7 @@ import waves from '@/directive/waves' // waves directive
import SelectTree from '@/components/SelectTree' import SelectTree from '@/components/SelectTree'
export default { export default {
components: { Pagination, SelectTree, vueQr }, components: { Pagination, SelectTree, vueQr },
directives: { waves }, directives: { waves },
data() { data() {
return { return {
@ -181,7 +202,9 @@ export default {
addBtnType: true, addBtnType: true,
listLoading: true, listLoading: true,
dialogFormShow: false, dialogFormShow: false,
dialogRecordFormShow: false,
qrcodeStr: '', qrcodeStr: '',
recordQrcodeStr: '',
qrInfo: {}, qrInfo: {},
add: false, add: false,
del: false, del: false,
@ -246,39 +269,36 @@ export default {
handleShowQr(ROW) { handleShowQr(ROW) {
this.dialogFormShow = true this.dialogFormShow = true
this.qrInfo = ROW this.qrInfo = ROW
// 2024-07-22 H5created by liu jun
this.qrcodeStr = this.config.weburlWaiwang + 'static/qrcode/views/bsbw/point_list.html?id=' + ROW.FIRE_POINT_ID this.qrcodeStr = this.config.weburlWaiwang + 'static/qrcode/views/bsbw/point_list.html?id=' + ROW.FIRE_POINT_ID
// const json = { },
// MANAGER_TYPE: 'fireListManager', handleShowRecordQr(ROW) {
// FIRE_POINT_ID: ROW.FIRE_POINT_ID this.dialogRecordFormShow = true
// } const json = {
// const jsonStr = JSON.stringify(json) MANAGER_TYPE: 'fireListManager',
// this.qrcodeStr = jsonStr USER_ID: ROW.USER_ID,
DEPARTMENT_ID: ROW.DEPARTMENT_ID
}
this.recordQrcodeStr = JSON.stringify(json)
}, },
handleEdit(FIRE_POINT_ID) { handleEdit(FIRE_POINT_ID) {
this.$parent.FIRE_POINT_ID = FIRE_POINT_ID this.$parent.FIRE_POINT_ID = FIRE_POINT_ID
this.$parent.activeName = 'Edit' this.$parent.activeName = 'Edit'
}, },
selectable(row, index) { selectable(row, index) {
// return row.DEVICE_COUNT == 0
return true return true
}, },
getRowKey(row) { getRowKey(row) {
return row.FIRE_POINT_ID return row.FIRE_POINT_ID
}, },
//
handleAdd() { handleAdd() {
this.$parent.activeName = 'Edit' this.$parent.activeName = 'Edit'
this.$parent.FIRE_POINT_ID = '' this.$parent.FIRE_POINT_ID = ''
this.$parent.FIRE_POINT_CODE = '' this.$parent.FIRE_POINT_CODE = ''
this.$parent.FIRE_POINT_NAME = '' this.$parent.FIRE_POINT_NAME = ''
}, },
//
getQuery() { getQuery() {
// this.$refs.multipleTable.clearSelection()
this.getList() this.getList()
}, },
//
getList(pid) { getList(pid) {
this.listLoading = true this.listLoading = true
this.varList = [] this.varList = []
@ -299,7 +319,8 @@ export default {
}).catch((e) => { }).catch((e) => {
this.listLoading = false this.listLoading = false
}) })
}, goKeyReset() { },
goKeyReset() {
this.FIRE_POINT_NAME = '' this.FIRE_POINT_NAME = ''
this.FIRE_POINT_CODE = '' this.FIRE_POINT_CODE = ''
this.IS_PUNCTUATION = '' this.IS_PUNCTUATION = ''
@ -345,7 +366,6 @@ export default {
this.listLoading = false this.listLoading = false
}) })
}, },
//
getTreeData() { getTreeData() {
requestFN( requestFN(
'/department/listTreeV2', '/department/listTreeV2',
@ -355,7 +375,6 @@ export default {
}).catch((e) => { }).catch((e) => {
}) })
}, },
//
handleEditUser(row) { handleEditUser(row) {
this.editDataIds = [] this.editDataIds = []
if (row.FIRE_POINT_ID) { if (row.FIRE_POINT_ID) {
@ -510,7 +529,7 @@ export default {
float: right; float: right;
} }
.app-container { .app-container {
display: flex; /**/ display: flex;
align-items: baseline; align-items: baseline;
} }
.table-qrcode { .table-qrcode {

View File

@ -81,7 +81,8 @@
</el-table-column> </el-table-column>
<el-table-column prop="STATE" label="审核状态" > <el-table-column prop="STATE" label="审核状态" >
<template slot-scope="{row}"> <template slot-scope="{row}">
{{ translate(row.STATE.toString(), statusList) }} <template v-if="row.IS_FORCED_END ===1"> </template>
<template v-else > {{ translate(row.STATE.toString(), statusList) }} </template>
</template> </template>
</el-table-column> </el-table-column>
<el-table-column prop="examineUserName" label="审核人" > <el-table-column prop="examineUserName" label="审核人" >
@ -89,11 +90,12 @@
{{ row.examineUserName || row.examineDeptName }} {{ row.examineUserName || row.examineDeptName }}
</template> </template>
</el-table-column> </el-table-column>
<el-table-column label="操作" align="center" width="200"> <el-table-column label="操作" align="center" width="300">
<template slot-scope="{row}"> <template slot-scope="{row}">
<!-- <el-button :disabled="row.STATE !='11'" type="primary" icon="el-icon-document" size="mini" @click="goDetail(row.HOTWORKAPPLICATION_ID,'apply')"></el-button>--> <!-- <el-button :disabled="row.STATE !='11'" type="primary" icon="el-icon-document" size="mini" @click="goDetail(row.HOTWORKAPPLICATION_ID,'apply')"></el-button>-->
<!-- <el-button :disabled="row.STATE !='-2'" type="primary" icon="el-icon-document" size="mini" @click="goDetail(row.HOTWORKAPPLICATION_ID,'repulse')"></el-button>--> <!-- <el-button :disabled="row.STATE !='-2'" type="primary" icon="el-icon-document" size="mini" @click="goDetail(row.HOTWORKAPPLICATION_ID,'repulse')"></el-button>-->
<el-button icon="el-icon-view" size="mini" @click="goInfo(row.HOTWORKAPPLICATION_ID,'see')"></el-button> <el-button icon="el-icon-view" size="mini" @click="goInfo(row.HOTWORKAPPLICATION_ID,'see')"></el-button>
<el-button v-if="(row.CREATOR == loginUserID || loginUserID == '1' || loginRoleNumber == 'R20201225624685') && row.STATE != 11" type="primary" icon="el-icon-document" size="mini" @click="forcedEnd(row.HOTWORKAPPLICATION_ID,row.STATE)"></el-button>
<!--<el-button v-if="row.STATE=='-6' && row.CREATOR == loginUserID" type="danger" icon="el-icon-delete" plain @click="batchDel(row.HOTWORKAPPLICATION_ID)"></el-button>--> <!--<el-button v-if="row.STATE=='-6' && row.CREATOR == loginUserID" type="danger" icon="el-icon-delete" plain @click="batchDel(row.HOTWORKAPPLICATION_ID)"></el-button>-->
<el-button v-if="(row.CREATOR == loginUserID || loginUserID == '1' || loginRoleNumber == 'R20201225624685') && row.STATE != 11" type="danger" icon="el-icon-delete" plain @click="batchDel(row.HOTWORKAPPLICATION_ID)"></el-button> <el-button v-if="(row.CREATOR == loginUserID || loginUserID == '1' || loginRoleNumber == 'R20201225624685') && row.STATE != 11" type="danger" icon="el-icon-delete" plain @click="batchDel(row.HOTWORKAPPLICATION_ID)"></el-button>
</template> </template>
@ -184,7 +186,7 @@ export default {
{ id: '36', name: '安委会办公室待审批' }, { id: '36', name: '安委会办公室待审批' },
{ id: '37', name: '安全总监待审批' }, { id: '37', name: '安全总监待审批' },
{ id: '10', name: '延时监火' }, { id: '10', name: '延时监火' },
{ id: '11', name: '归档' }, { id: '11', name: '归档' }, // 1.,2.
{ id: '-1', name: '审核不通过' }, { id: '-1', name: '审核不通过' },
{ id: '-2', name: '特级不通过' }, { id: '-2', name: '特级不通过' },
{ id: '-3', name: '关闭归档' }, { id: '-3', name: '关闭归档' },
@ -294,6 +296,7 @@ export default {
this.$parent.HOTWORKAPPLICATION_ID = id this.$parent.HOTWORKAPPLICATION_ID = id
this.$parent.HOTWORKAPPLICATION_TYPE = type this.$parent.HOTWORKAPPLICATION_TYPE = type
}, },
getDictTreeData() { getDictTreeData() {
return new Promise((resolve) => { return new Promise((resolve) => {
requestFN( requestFN(
@ -354,6 +357,35 @@ export default {
}) })
}).catch(() => { }).catch(() => {
}) })
},
forcedEnd(id, STATE) { //
this.$confirm('确定要强制结束吗?', {
confirmButtonText: '确定',
cancelButtonText: '取消',
type: 'warning'
}).then(() => {
this.listLoading = true
requestFN(
'/hotworkapplication/forcedEnd',
{
HOTWORKAPPLICATION_ID: id,
STATE: STATE,
loginUserId: this.loginUserID
}
).then(() => {
this.$message({
message: '结束成功',
type: 'success'
})
this.listLoading = false
this.varList = []
this.listQuery.page = 1
this.getList()
}).catch((e) => {
this.listLoading = false
})
}).catch(() => {
})
} }
} }
} }

View File

@ -0,0 +1,470 @@
<template>
<div class="menjin">
<div class="block1">
<layout-title title="设备在线情况"/>
<div class="options">
<div v-for="(item,index) in block1OptionsList" :key="index" class="option">
<div class="title active">{{ item.title }}</div>
<div class="circular">
<img :src="item.img" alt="">
</div>
<div class="label">
{{ item.label1 }}<count-to :start-val="0" :end-val="item.count1" :duration="3600"/>
</div>
<div v-if="item.label2" class="label">
{{ item.label2 }}<count-to :start-val="0" :end-val="item.count2" :duration="3600"/>
</div>
</div>
</div>
</div>
<div class="block4">
<layout-title title="区域进出记录"/>
<div class="content">
<div class="options">
<div
v-for="(item,index) in block4OptionsTabs"
:key="index"
:class="['title', {active:index === block4OptionsIndex}]"
@click="block4OptionsClick(index)"
>
{{ item }}
</div>
</div>
<div id="main1"/>
</div>
</div>
<div class="block3">
<layout-title title="口门进出记录"/>
<div class="content">
<div class="options">
<div
v-for="(item,index) in block3OptionsList"
:key="index"
:class="['title', {active:index === block3OptionsIndex}]"
@click="block3OptionsClick(index)"
>
{{ item }}
</div>
</div>
<div class="table">
<div class="tr">
<div class="td">卡口名称</div>
<div class="td">{{ block3OptionsIndex===0 ? '人员':'车牌' }}</div>
<div class="td">时间</div>
<div class="td">状态</div>
</div>
<div v-for="(item,index) in block3List" :key="index" class="tr">
<div class="td line1">{{ item.DOORNAME }}</div>
<div class="td">{{ item.NAME }}</div>
<div class="td line1">{{ item.TIME.substring(11) }}</div>
<div class="td">{{ item.STATUS }}</div>
</div>
</div>
</div>
</div>
</div>
</template>
<script>
import layoutTitle from './title.vue'
import CountTo from 'vue-count-to'
import { requestFN } from '@/utils/request'
import * as echarts from 'echarts'
let myChart1
export default {
components: {
layoutTitle,
CountTo
},
props: {
corpInfoId: {
type: String,
default: ''
},
area: {
type: String,
default: ''
},
gangkou: {
type: String,
default: ''
}
},
data() {
return {
block1OptionsList: [
{
title: '人员闸机数',
img: require('../../../assets/map/menjin/ico1.png'),
label1: '在线数',
count1: 0
// label2: '线',
// count2: 0
},
{
title: '车辆闸机数',
img: require('../../../assets/map/menjin/ico2.png'),
label1: '在线数',
count1: 0
// label2: '线',
// count2: 0
},
{
title: '摄像头数',
img: require('../../../assets/map/menjin/ico3.png'),
label1: '摄像头数',
count1: 0
}
],
block3OptionsList: ['人员闸机', '车辆闸机'],
block3OptionsIndex: 1,
block2List: [],
block3List: [],
block4OptionsTabs: ['人员', '车辆'],
block4OptionsIndex: 0,
block4OptionsList: []
}
},
mounted() {
this.getMachineCount() //
this.getEntryAndExitCount()// echar
this.listPerpleCarGateMachine('1') //
window.onresize = function() {
myChart1 && myChart1.resize()
}
},
destroyed() {
myChart1 = null
},
methods: {
getEntryAndExitCount() {
requestFN(
'/mkmjRelation/getAllCarAndPeopleInfoCountByArea',
{ CORPINFO_ID: this.corpInfoId }
).then((data) => {
this.block4OptionsList = data.varList
this.initEcharts1(this.block4OptionsList)
}).catch((e) => {
})
},
initEcharts1(data) {
const xAxisData = []
const entryData = []
const exitData = []
for (let i = 0; i < data.length; i++) {
if (this.block4OptionsIndex === 0) {
if (data[i].TYPE === 'person') {
xAxisData.push(data[i].AREA_NAME)
console.log(data[i])
entryData.push(data[i].INPERSONCOUNT)
exitData.push(data[i].OUTPERSONCOUNT)
}
}
if (this.block4OptionsIndex === 1) {
if (data[i].TYPE === 'car') {
xAxisData.push(data[i].AREA_NAME)
console.log(data[i])
entryData.push(data[i].INCARCOUNT)
exitData.push(data[i].OUTCARCOUNT)
}
}
}
myChart1 && myChart1.dispose()
myChart1 = echarts.init(document.querySelector('#main1'))
const option = {
tooltip: {
trigger: 'axis',
axisPointer: { //
type: 'shadow' // 线'line' | 'shadow'
}
},
grid: {
left: '2%',
right: '4%',
bottom: '8%',
top: '16%',
containLabel: true
},
legend: {
data: ['进', '出'],
right: 10,
top: 12,
textStyle: {
color: '#fff'
},
itemWidth: 12,
itemHeight: 10
},
xAxis: {
type: 'category',
data: xAxisData,
axisLine: {
lineStyle: {
color: 'white'
}
},
axisLabel: {
textStyle: {
fontFamily: 'Microsoft YaHei'
}
}
},
yAxis: {
type: 'value',
axisLine: {
show: false,
lineStyle: {
color: 'white'
}
},
splitLine: {
show: true,
lineStyle: {
color: 'rgba(255,255,255,0.3)'
}
},
axisLabel: {}
},
series: [{
name: '进',
type: 'bar',
barWidth: '15%',
itemStyle: {
normal: {
color: new echarts.graphic.LinearGradient(0, 0, 0, 1, [{
offset: 0,
color: '#8bd46e'
}, {
offset: 1,
color: '#09bcb7'
}]),
barBorderRadius: 12
}
},
data: entryData
},
{
name: '出',
type: 'bar',
barWidth: '15%',
itemStyle: {
normal: {
color: new echarts.graphic.LinearGradient(0, 0, 0, 1, [{
offset: 0,
color: '#fccb05'
}, {
offset: 1,
color: '#f5804d'
}]),
barBorderRadius: 11
}
},
data: exitData
}
]
}
myChart1.setOption(option)
},
block4OptionsClick(index) {
console.log(index)
this.block4OptionsIndex = index
this.initEcharts1(this.block4OptionsList)
},
getMachineCount() {
requestFN(
'/map/getDoorCount',
{
CORPINFO_ID: this.corpInfoId
}
).then((data) => {
this.block1OptionsList[0].count1 = data.data.personMachineCount
this.block1OptionsList[1].count1 = data.data.carMachineCount
this.block1OptionsList[2].count1 = data.data.cameraCount
}).catch((e) => {
})
},
listPerpleCarGateMachine(type) {
requestFN(
'/map/getDoorRecord',
{
TYPE: type,
CORPINFO_ID: this.corpInfoId
}
).then((data) => {
this.block3List = data.varList.slice(0, 8)
}).catch((e) => {
})
},
block3OptionsClick(index) {
this.block3OptionsIndex = index
this.listPerpleCarGateMachine(index)
}
}
}
</script>
<style lang="scss" scoped>
.menjin {
.title {
background-image: url("../../../assets/map/menjin/title_on.png");
background-size: 100% 100%;
background-repeat: no-repeat;
width: 113px;
height: 26px;
font-size: 14px;
line-height: 26px;
text-align: center;
color: #fff;
&.active {
background-image: url("../../../assets/map/menjin/title.png");
}
}
.block1 {
width: 410px;
background-image: linear-gradient(to bottom, rgba(0, 0, 0, 0), rgba(0, 0, 0, 0.8));
.options {
display: flex;
justify-content: space-between;
padding: 10px 15px;
border: 1px solid;
border-image: linear-gradient(to bottom, rgba(58, 122, 149, 0), rgba(58, 122, 149, 1)) 1;
border-top: none;
.option {
display: flex;
flex-direction: column;
align-items: center;
.circular {
margin-top: 5px;
background-image: url("../../../assets/map/menjin/img1.png");
background-size: 100% 100%;
background-repeat: no-repeat;
width: 50px;
height: 50px;
text-align: center;
padding-top: 13px;
img {
width: 30px;
height: 26px;
animation: scale 2s infinite;
}
}
.label {
margin-top: 5px;
font-size: 12px;
color: #fff;
}
}
}
}
.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;
}
}
#main1{
margin-top: 10px;
width: 100%;
height: 200px;
}
}
}
.block3 {
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;
&:nth-child(2) {
flex-basis: 20%;
}
&.green {
color: #7ccf41;
}
&.yellow {
color: #ffcb05;
}
}
}
}
}
}
}
@keyframes scale {
0% {
transform: scale(1);
}
50% {
transform: scale(0.8);
}
100% {
transform: scale(1);
}
}
.line1 {
width: 150px;
white-space: nowrap;
overflow: hidden;
text-overflow: ellipsis;
}
</style>

View File

@ -0,0 +1,207 @@
<template>
<div>
{{ corpInfoId }}
{{ area }}
{{ gangkou }}
<menjin2 v-if="corpInfoId" :corp-info-id="corpInfoId" :area="area" :gangkou="gangkou"/>
<menjin v-else :corp-info-id="corpInfoId" :area="area" :gangkou="gangkou"/>
</div>
</template>
<script>
import menjin from './menjin'
import menjin2 from './menjin2'
export default {
components: {
menjin,
menjin2
},
props: {
corpInfoId: {
type: String,
default: ''
},
area: {
type: String,
default: ''
},
gangkou: {
type: String,
default: ''
}
}
}
</script>
<style lang="scss" scoped>
.menjin {
.title {
background-image: url("../../../assets/map/menjin/title_on.png");
background-size: 100% 100%;
background-repeat: no-repeat;
width: 113px;
height: 26px;
font-size: 14px;
line-height: 26px;
text-align: center;
color: #fff;
&.active {
background-image: url("../../../assets/map/menjin/title.png");
}
}
.block1 {
width: 410px;
background-image: linear-gradient(to bottom, rgba(0, 0, 0, 0), rgba(0, 0, 0, 0.8));
.options {
display: flex;
justify-content: space-between;
padding: 10px 15px;
border: 1px solid;
border-image: linear-gradient(to bottom, rgba(58, 122, 149, 0), rgba(58, 122, 149, 1)) 1;
border-top: none;
.option {
display: flex;
align-items: center;
.img{
width: 81px;
height: 93px;
img{
width: 100%;
height: 100%;
}
}
.info{
margin-left: 10px;
font-size: 14px;
color: #fff;
div{
margin-top: 5px;
}
}
}
}
}
.block2 {
width: 410px;
background-image: linear-gradient(to bottom, rgba(0, 0, 0, 0), rgba(0, 0, 0, 0.8));
margin-top: 10px;
.options {
padding: 10px 15px;
border: 1px solid;
border-image: linear-gradient(to bottom, rgba(58, 122, 149, 0), rgba(58, 122, 149, 1)) 1;
border-top: none;
#main1{
width: 100%;
height: 300px;
}
}
}
.block3 {
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;
.scroll {
max-height: 200px;
overflow-y: auto;
&::-webkit-scrollbar {
width: 5px;
}
&::-webkit-scrollbar-thumb {
border-radius: 5px;
background: rgba(2, 30, 81, 0.851);
}
&::-webkit-scrollbar-track {
border-radius: 5px;
background: rgba(255, 255, 255, 0.1);
}
.tr {
&:nth-child(odd) {
background-color: transparent;
}
}
}
.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;
&:nth-child(2) {
flex-basis: 20%;
}
&:nth-child(3) {
flex: none;
flex-basis: 50px;
}
&.green {
color: #7ccf41;
}
&.yellow {
color: #ffcb05;
}
}
}
}
}
}
}
@keyframes scale {
0% {
transform: scale(1);
}
50% {
transform: scale(0.8);
}
100% {
transform: scale(1);
}
}
.line1 {
width: 150px;
white-space: nowrap;
overflow: hidden;
text-overflow: ellipsis;
}
</style>

View File

@ -55,7 +55,7 @@
</div> </div>
</div> </div>
</div> </div>
<div class="block4"> <div v-if="corpInfoId !== '21590a00ea5e462e9ee44dd332dddc26'" class="block4">
<layout-title title="报警列表"/> <layout-title title="报警列表"/>
<div class="content"> <div class="content">
<div class="table"> <div class="table">
@ -72,6 +72,25 @@
</div> </div>
</div> </div>
</div> </div>
<div v-if="corpInfoId === '21590a00ea5e462e9ee44dd332dddc26'" 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 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.alarmTime }}</div>
<div class="td">{{ item.foulUserName }}</div>
<div class="td">{{ item.place }}</div>
</div>
</div>
</div>
</div>
</div> </div>
</template> </template>
@ -173,9 +192,10 @@ export default {
}, },
getData() { getData() {
requestFN( requestFN(
'/map/getAllDwMessage', '/map/getAllDwMessage', { corpId: this.corpInfoId }
{ corpId: this.corpInfoId }
).then((data) => { ).then((data) => {
//
if (this.corpInfoId === '035958e685cf4850bc40151c5e0617a6') {
this.block4List = data.alarmList.list this.block4List = data.alarmList.list
this.block1OptionsList = [ this.block1OptionsList = [
{ {
@ -204,6 +224,27 @@ export default {
count: data.orthermessage.infoList.tklyr.num count: data.orthermessage.infoList.tklyr.num
} }
] ]
}
if (this.corpInfoId === '21590a00ea5e462e9ee44dd332dddc26') {
this.block1OptionsList = [
{
title: '总设备数',
img: require('../../../assets/map/renyuan/img1ico1.png'),
count: data.orthermessage.onlineDeviceNum
},
{
title: '在线人员数',
img: require('../../../assets/map/renyuan/img1ico1.png'),
count: data.orthermessage.lockNum
},
{
title: '离线人数',
img: require('../../../assets/map/renyuan/img1ico1.png'),
count: data.orthermessage.unLockNum
}
]
this.block4List = data.orthermessage.alarmList
}
}).catch((e) => { }).catch((e) => {
this.$message.error(e) this.$message.error(e)
}) })

View File

@ -230,7 +230,7 @@ export default {
this.measuresList = data.measuresList this.measuresList = data.measuresList
this.gasList = data.gasList this.gasList = data.gasList
this.otherProtectiveMeasures = this.validStr(this.info.OTHER_PROTECTIVE_MEASURES.replace(/;_;/g, '')) ? this.info.OTHER_PROTECTIVE_MEASURES.split(';_;') : [] this.otherProtectiveMeasures = this.validStr(this.info.OTHER_PROTECTIVE_MEASURES.replace(/;_;/g, '')) ? this.info.OTHER_PROTECTIVE_MEASURES.split(';_;') : []
console.info(this.otherProtectiveMeasures)
if (!this.info.WORK_OPERATOR_ID) { if (!this.info.WORK_OPERATOR_ID) {
this.$set(this.info, 'WORK_OPERATOR_ID', []) this.$set(this.info, 'WORK_OPERATOR_ID', [])
} else { } else {

View File

@ -9,7 +9,16 @@
<windspeedstation v-if="type === '2da29f00852a4653ba3e760b9de57412'" :id="id" :type="type" :gangkou="gangkou"/> <windspeedstation v-if="type === '2da29f00852a4653ba3e760b9de57412'" :id="id" :type="type" :gangkou="gangkou"/>
<xf-point v-if="type === 'point'" :id="id" :type="type" :gangkou="gangkou"/> <xf-point v-if="type === 'point'" :id="id" :type="type" :gangkou="gangkou"/>
<xf-control v-if="type === 'xfbf01' || type ==='xfkzs01' || type ==='xfjyd01' || type ==='xfsy01'" :id="id" :type="type" :gangkou="gangkou"/> <xf-control v-if="type === 'xfbf01' || type ==='xfkzs01' || type ==='xfjyd01' || type ==='xfsy01'" :id="id" :type="type" :gangkou="gangkou"/>
<mk-gate-machine v-if="type === 'CAR'||type ==='PERSON' || type ==='CAMERA'" :id="id" :type="type" :gangkou="gangkou"/> <mk-gate-machine
v-if="type === 'CAR'||type ==='PERSON' || type ==='CAMERA'|| type ==='PERSON_MACHINE'|| type ==='CAR_MACHINE' "
:id="id"
:type="type"
:gangkou="gangkou"
:corp-id="corpInfoId"
:gate-video-id="GATE_VIDEO_ID"
:code = "code"
:video-type="videoType"
:name = "name" />
<mk-gate-machine-cfd v-if="type === 'CAR00004'||type ==='PERSON00004' " :id="id" :type="type" :gangkou="gangkou" :infoname="infoname"/> <mk-gate-machine-cfd v-if="type === 'CAR00004'||type ==='PERSON00004' " :id="id" :type="type" :gangkou="gangkou" :infoname="infoname"/>
<zhong_da_info v-if="type === 'majordangersource'" :id="id" :type="type" :gangkou="gangkou"/> <zhong_da_info v-if="type === 'majordangersource'" :id="id" :type="type" :gangkou="gangkou"/>
<video-play v-if="type === 'video'" :id="id" :type="type" :gangkou="gangkou" request-url="/api/homemajor/getVideoInfo"/> <video-play v-if="type === 'video'" :id="id" :type="type" :gangkou="gangkou" request-url="/api/homemajor/getVideoInfo"/>
@ -180,6 +189,14 @@ export default {
infoname: { infoname: {
type: String, type: String,
default: '' default: ''
},
videoType: {
type: String,
default: ''
},
code: {
type: String,
default: ''
} }
}, },
methods: { methods: {

View File

@ -1,6 +1,6 @@
<template> <template>
<div class="app-container print-work" style="width: 100%"> <div v-if="corpId == '035958e685cf4850bc40151c5e0617a6' " class="app-container print-work">
<div v-if= "type !== 'CAMERA'" class="level-title"> <div v-if= "type !== 'CAMERA'" class="level-title">\
<h1>区域名称{{ info.GATE_AREA_NAME }}</h1> <h1>区域名称{{ info.GATE_AREA_NAME }}</h1>
</div> </div>
<table v-if= "type !== 'CAMERA'" class="table-ui"> <table v-if= "type !== 'CAMERA'" class="table-ui">
@ -55,14 +55,91 @@
<video-play v-if="type === 'CAMERA' && info.GATEVIDEO_ID" :id="info.GATEVIDEO_ID" :type="type" :gangkou="gangkou"/> <video-play v-if="type === 'CAMERA' && info.GATEVIDEO_ID" :id="info.GATEVIDEO_ID" :type="type" :gangkou="gangkou"/>
</div> </div>
</div> </div>
<div v-else class="app-container print-work">
<div v-if= "type !== 'CAMERA'" class="level-title">
<h1>区域名称{{ info.GATE_AREA_NAME }}</h1>
</div>
<div v-if= "type !== 'CAMERA'" >
<table v-for="(item,index) in varList" :key="index" class="table-ui">
<tr>
<td class="bbg-transparent">闸机名称</td>
<td colspan="5">{{ item.GATE_NAME }}</td>
</tr>
<tr>
<td class="bbg-transparent">今日进</td>
<td width="80px">{{ item.CAR_IN }}</td>
<td class="bbg-transparent">今日出</td>
<td width="80px">{{ item.CAR_OUT }}</td>
<td class="bbg-transparent">当前滞留</td>
<td width="80px">{{ item.CAR_IN - item.CAR_OUT }}</td>
</tr>
</table>
</div>
<table v-if= "type != 'CAMERA'" class="table-ui">
<tr v-if="carRecordAllList != null && carRecordAllList.length > 0">
<td colspan="6">
<table class="table-ui">
<tr>
<td class="bbg-transparent">车牌</td>
<td class="bbg-transparent">时间</td>
<td class="bbg-transparent">闸机</td>
<td class="bbg-transparent">状态</td>
</tr>
<tr v-for="(item,index) in carRecordAllList" :key="index">
<td>{{ item.LICENSE_PLATE }}</td>
<td>{{ item.TIME }}</td>
<td>{{ item.COMING_REASON }}</td>
<td>{{ item.STATE == '0' ? '进港': '出港' }}</td>
</tr>
</table>
</td>
</tr>
<tr v-if="recordAllList != null && recordAllList.length > 0">
<td colspan="6">
<table class="table-ui">
<tr>
<td>卡号</td>
<td>人员姓名</td>
<td>刷卡时间</td>
<td>闸机</td>
<td>状态</td>
</tr>
<tr v-for="(item,index) in recordAllList" :key="index">
<td>{{ item.CARDTYPE }}</td>
<td>{{ item.USERNAME }}</td>
<td>{{ item.TIME }}</td>
<td>{{ item.EQUIPMENTNAME }}</td>
<td>
<span v-if="item.STATE == '0'"></span>
<span v-if="item.STATE == '1'"></span>
</td>
</tr>
</table>
</td>
</tr>
</table>
<div v-if= "type == 'CAMERA'" class="level-title">
<h1>摄像头名称{{ name }}</h1>
</div>
<table v-if= "type == 'CAMERA'" class="table-ui">
<tr>
<td class="bbg-transparent">编码</td>
<td >{{ code }}</td>
</tr>
</table>
<div class="video">
<video-play-gate v-if="type === 'CAMERA' && code" :id="code" :type="videoType" :gangkou="gangkou"/>
</div>
</div>
</template> </template>
<script> <script>
import { requestFN } from '@/utils/request' import { requestFN } from '@/utils/request'
import moment from 'moment' import moment from 'moment'
import videoPlay from './video_play.vue' import videoPlay from './video_play.vue'
import videoPlayGate from './video_play_gate.vue'
export default { export default {
components: { videoPlay }, components: { videoPlay, videoPlayGate },
props: { props: {
id: { id: {
type: String, type: String,
@ -79,19 +156,53 @@ export default {
gangkou: { gangkou: {
type: String, type: String,
default: '' default: ''
},
corpId: {
type: String,
default() {
return ''
}
},
GATE_VIDEO_ID: {
type: String,
default() {
return ''
}
},
code: {
type: String,
default() {
return ''
}
},
videoType: {
type: String,
default() {
return ''
}
},
name: {
type: String,
default() {
return ''
}
} }
}, },
data() { data() {
return { return {
config: config, config: config,
info: {}, info: {},
recordAllList: [] recordAllList: [],
varList: [],
carRecordAllList: []
} }
}, },
created() { created() {
if (this.type !== 'CAMERA') {
this.getData() this.getData()
this.getListData() this.getListData()
}
}, },
methods: { methods: {
formatDate(date, format) { formatDate(date, format) {
@ -106,8 +217,10 @@ export default {
'/map/getGatesInAndOutNumById', '/map/getGatesInAndOutNumById',
{ {
GATE_AREA_ID: this.id, GATE_AREA_ID: this.id,
GATE_VIDEO_ID: this.GATE_VIDEO_ID,
TYPE: this.type, TYPE: this.type,
GANGKOU: this.gangkou GANGKOU: this.gangkou,
CORPINFO_ID: this.corpId
} }
).then((data) => { ).then((data) => {
Object.assign(this.info, data.pd) Object.assign(this.info, data.pd)
@ -117,6 +230,7 @@ export default {
this.info.CAR_OUT = 0 this.info.CAR_OUT = 0
this.info.PERSON_IN = 0 this.info.PERSON_IN = 0
this.info.PERSON_OUT = 0 this.info.PERSON_OUT = 0
this.varList = data.pd.varList
for (let i = 0; i < data.pd.varList.length; i++) { for (let i = 0; i < data.pd.varList.length; i++) {
if (data.pd.varList[i].TYPE == 'CAR_IN') { if (data.pd.varList[i].TYPE == 'CAR_IN') {
this.info.CAR_IN = data.pd.varList[i].COUNT this.info.CAR_IN = data.pd.varList[i].COUNT
@ -132,6 +246,11 @@ export default {
} }
} }
} }
if (this.type == 'CAMERA') {
Object.assign(this.info, data.pd.info)
this.info.CODE = data.pd.video.EXTERNALINDEXCODE
this.info.VIDEONAME = data.pd.video.NAME
}
this.$forceUpdate() this.$forceUpdate()
}).catch((e) => { }).catch((e) => {
@ -142,11 +261,14 @@ export default {
'/map/getGatesInAndOutListById?showCount=10000&currentPage=1', '/map/getGatesInAndOutListById?showCount=10000&currentPage=1',
{ {
GATE_AREA_ID: this.id, GATE_AREA_ID: this.id,
GATE_VIDEO_ID: this.GATE_VIDEO_ID,
TYPE: this.type, TYPE: this.type,
GANGKOU: this.gangkou GANGKOU: this.gangkou,
CORPINFO_ID: this.corpId
} }
).then((data) => { ).then((data) => {
this.recordAllList = data.recordAllList this.recordAllList = data.recordAllList
this.carRecordAllList = data.carRecordAllList
this.$forceUpdate() this.$forceUpdate()
}).catch((e) => { }).catch((e) => {
}) })

View File

@ -126,7 +126,6 @@ export default {
this.ImgList = data.ImgList this.ImgList = data.ImgList
this.measuresList = data.varList this.measuresList = data.varList
this.gongdanList = data.data this.gongdanList = data.data
console.info(this.gongdanList)
}).catch((e) => { }).catch((e) => {
}) })
} }

View File

@ -105,7 +105,6 @@ export default {
this.ImgList = data.ImgList this.ImgList = data.ImgList
this.measuresList = data.varList this.measuresList = data.varList
this.gongdanList = data.data this.gongdanList = data.data
console.info(this.gongdanList)
}).catch((e) => { }).catch((e) => {
}) })
} }

View File

@ -1,5 +1,5 @@
<template> <template>
<div class="app-container print-work" style="width: 100%;"> <div class="app-container print-work">
<div class="level-title"> <div class="level-title">
<h1>人员信息</h1> <h1>人员信息</h1>
</div> </div>
@ -29,12 +29,12 @@
<td>{{ otherInfo?otherInfo.postName:'' }}</td> <td>{{ otherInfo?otherInfo.postName:'' }}</td>
</tr> </tr>
</table> </table>
<table class="table-ui"> <!-- 一公司人员定位页面 -->
<table v-if="corpId === '035958e685cf4850bc40151c5e0617a6'" class="table-ui">
<tr> <tr>
<td class="bbg-transparent">姓名</td> <td class="bbg-transparent">姓名</td>
<td >{{ info?info.userName:'' }}</td> <td >{{ info?info.userName:'' }}</td>
</tr> </tr>
<tr> <tr>
<td class="bbg-transparent">定位卡号:</td> <td class="bbg-transparent">定位卡号:</td>
<td >{{ info?info.id:'' }}</td> <td >{{ info?info.id:'' }}</td>
@ -48,6 +48,25 @@
<td>{{ info?info.departmentName:'' }}</td> <td>{{ info?info.departmentName:'' }}</td>
</tr> </tr>
</table> </table>
<!-- 九公司人员定位页面 -->
<table v-if="corpId === '21590a00ea5e462e9ee44dd332dddc26'" class="table-ui">
<tr>
<td class="bbg-transparent">姓名</td>
<td >{{ (info && info.name) ? info.name : '未绑定人员' }}</td>
</tr>
<tr>
<td class="bbg-transparent">定位卡号:</td>
<td >{{ info?info.id:'' }}</td>
</tr>
<tr>
<td class="bbg-transparent">定位卡电量</td>
<td >{{ info?info.battery:'' }}</td>
</tr>
<tr>
<td class="bbg-transparent">公司</td>
<td>{{ info?info.corpName:'' }}</td>
</tr>
</table>
</div> </div>
</template> </template>

View File

@ -0,0 +1,88 @@
<template>
<div>
<div id="aLiVideoPlayer" class="prism-player"/>
</div>
</template>
<script>
import { requestFN } from '@/utils/request'
export default {
props: {
id: {
type: String,
default() {
return ''
}
},
type: {
type: String,
default() {
return ''
}
},
gangkou: {
type: String,
default: ''
},
requestUrl: {
type: String,
default: '/mkmjGateVideo/goAllVideo'
}
},
data() {
return {
hls: false,
player: null,
url: ''
}
},
beforeDestroy() {
this.player && this.player.dispose()
},
created() {
this.showVideo()
},
methods: {
showVideo() {
requestFN(
'/platform/door/video/getHlsPath',
{
INDEXCODE: this.id
}
).then((res) => {
// for (let i = 0; i < data.videoList.length; i++) {
// if (data.videoList[0].HLSVIDEOURL) {
// this.url = data.videoList[0].GBSVIDEOURL
// this.hls = true
// } else {
this.hls = false
this.$nextTick(() => {
// eslint-disable-next-line no-undef
this.player = new Aliplayer({
'id': 'aLiVideoPlayer',
'source': res.data.url,
'width': '100%',
'height': '500px',
'autoplay': true,
'isLive': true,
'rePlay': false,
'playsinline': true,
'preload': true,
'controlBarVisibility': 'hover',
'useH5Prism': true
}, function(player) {
console.log('The player is created')
})
})
// }
// }
})
}
}
}
</script>
<style lang="scss" scoped>
</style>

View File

@ -279,7 +279,7 @@ export default {
this.listLoading = false this.listLoading = false
this.disposal.MAJORDANGERSOURCE_DISPOSAL_ID = data.pd.MAJORDANGERSOURCE_DISPOSAL_ID this.disposal.MAJORDANGERSOURCE_DISPOSAL_ID = data.pd.MAJORDANGERSOURCE_DISPOSAL_ID
this.disposal.DISPOSAL_TIME = data.pd.DISPOSAL_TIME this.disposal.DISPOSAL_TIME = data.pd.DISPOSAL_TIME
console.info(this.disposal)
// this.dialogFormEdit = false // this.dialogFormEdit = false
// this.hasDisposal = false // this.hasDisposal = false
}).catch((e) => { }).catch((e) => {
@ -325,7 +325,7 @@ export default {
this.uploadDisposalAfterFile() this.uploadDisposalAfterFile()
this.listLoading = true this.listLoading = true
this.disposal.DISPOSAL_STATUS = '1' this.disposal.DISPOSAL_STATUS = '1'
console.info(this.disposal)
requestFN( requestFN(
'/majordangersourcedisposal/' + methodName, '/majordangersourcedisposal/' + methodName,
this.disposal this.disposal
@ -334,7 +334,7 @@ export default {
this.dialogFormEdit = false this.dialogFormEdit = false
this.hasDisposal = false this.hasDisposal = false
this.resetDisposal() this.resetDisposal()
console.info(this.disposal)
this.timer = setInterval(this.handleTimerOperation, 5000) this.timer = setInterval(this.handleTimerOperation, 5000)
}).catch((e) => { }).catch((e) => {
this.listLoading = false this.listLoading = false
@ -354,7 +354,7 @@ export default {
} }
} }
// formData.append('FFILE', this.disposal.disposalBeforeFile) // formData.append('FFILE', this.disposal.disposalBeforeFile)
console.info(this.disposal.MAJORDANGERSOURCE_DISPOSAL_ID)
formData.append('FOREIGN_KEY', this.disposal.MAJORDANGERSOURCE_DISPOSAL_ID) formData.append('FOREIGN_KEY', this.disposal.MAJORDANGERSOURCE_DISPOSAL_ID)
formData.append('TYPE', 20) formData.append('TYPE', 20)
this.uploadFileSubmit(formData, '处置前照片上传完成') this.uploadFileSubmit(formData, '处置前照片上传完成')

View File

@ -182,6 +182,18 @@
</template> </template>
</template> </template>
</template> </template>
<transition
enter-active-class="animate__animated animate__fadeInDown"
leave-active-class="animate__animated animate__fadeOutUp"
>
<div v-if="isPeopleTrajectory" class="people_trajectory">
<el-select v-model="peopleTrajectoryValue" popper-class="people_trajectory_select">
<el-option v-for="item in onePerLocArr" :key="item.id" :value="item.id" :label="item.id"/>
</el-select>
<el-button class="search_btn" @click="addTrajectory"></el-button>
<el-button class="reset_btn" @click="()=>{removeTrajectory();peopleTrajectoryValue = ''}">重置</el-button>
</div>
</transition>
</div> </div>
</transition> </transition>
<div class="right_options"> <div class="right_options">
@ -203,6 +215,8 @@
:corp-info-id="dialog.corpInfoId" :corp-info-id="dialog.corpInfoId"
:gangkou="gangkouActive" :gangkou="gangkouActive"
:infoname="dialog.infoname" :infoname="dialog.infoname"
:code="dialog.code"
:video-type="dialog.video_type"
/> />
</div> </div>
</template> </template>
@ -217,7 +231,7 @@ import { requestFN } from '@/utils/request'
import gangkouIndex from './components/gangkou_index.vue' import gangkouIndex from './components/gangkou_index.vue'
import fengongsiIndex from './components/fengongsi_index.vue' import fengongsiIndex from './components/fengongsi_index.vue'
import caofeidianIndex from './components/caofeidian_index.vue' import caofeidianIndex from './components/caofeidian_index.vue'
import menjin from './components/menjin.vue' import menjin from './components/menjin_index.vue'
import menjinCfd from './components/menjinCfd.vue' import menjinCfd from './components/menjinCfd.vue'
import xiaofang from './components/xiaofang.vue' import xiaofang from './components/xiaofang.vue'
import anquan from './components/anquan.vue' import anquan from './components/anquan.vue'
@ -403,7 +417,7 @@ export default {
img: require('../../assets/map/gangkou_index/buttom/ico1.png'), img: require('../../assets/map/gangkou_index/buttom/ico1.png'),
checkImg: require('../../assets/map/gangkou_index/buttom/ico1_on.png'), checkImg: require('../../assets/map/gangkou_index/buttom/ico1_on.png'),
type: 'PERSON', type: 'PERSON',
containAuthorization: [], containAuthorization: ['035958e685cf4850bc40151c5e0617a6'],
eliminateAuthorization: [] eliminateAuthorization: []
}, },
{ {
@ -413,9 +427,29 @@ export default {
img: require('../../assets/map/gangkou_index/buttom/ico2.png'), img: require('../../assets/map/gangkou_index/buttom/ico2.png'),
checkImg: require('../../assets/map/gangkou_index/buttom/ico2_on.png'), checkImg: require('../../assets/map/gangkou_index/buttom/ico2_on.png'),
type: 'CAR', type: 'CAR',
containAuthorization: [], containAuthorization: ['035958e685cf4850bc40151c5e0617a6'],
eliminateAuthorization: [] eliminateAuthorization: []
}, },
{
label: '人员闸机', //
dialog_width: '800px',
check: false,
img: require('../../assets/map/gangkou_index/buttom/ico1.png'),
checkImg: require('../../assets/map/gangkou_index/buttom/ico1_on.png'),
type: 'PERSON_MACHINE',
containAuthorization: ['allCorp'],
eliminateAuthorization: ['035958e685cf4850bc40151c5e0617a6']
},
{
label: '车辆闸机', //
dialog_width: '600px',
check: false,
img: require('../../assets/map/gangkou_index/buttom/ico2.png'),
checkImg: require('../../assets/map/gangkou_index/buttom/ico2_on.png'),
type: 'CAR_MACHINE',
containAuthorization: ['allCorp'],
eliminateAuthorization: ['035958e685cf4850bc40151c5e0617a6']
},
{ {
label: '摄像头', label: '摄像头',
dialog_width: '600px', dialog_width: '600px',
@ -656,26 +690,17 @@ export default {
checkImg: require('../../assets/map/gangkou_index/buttom/ico21_on.png'), checkImg: require('../../assets/map/gangkou_index/buttom/ico21_on.png'),
containAuthorization: [], containAuthorization: [],
eliminateAuthorization: [] eliminateAuthorization: []
},
{
label: '人员轨迹',
dialog_width: '1200px',
check: false,
type: 'peopleTrajectory',
img: require('../../assets/map/gangkou_index/buttom/ico29.png'),
checkImg: require('../../assets/map/gangkou_index/buttom/ico29_on.png'),
containAuthorization: [],
eliminateAuthorization: []
} }
// {
// label: '',
// dialog_width: '1200px',
// check: false,
// type: 'platcamera',
// img: require('../../assets/map/gangkou_index/buttom/ico26.png'),
// checkImg: require('../../assets/map/gangkou_index/buttom/ico26_on.png'),
// containAuthorization: [],
// eliminateAuthorization: []
// }
// {
// label: '',
// dialog_width: '1200px',
// check: false,
// img: require('../../assets/map/gangkou_index/buttom/ico22.png'),
// checkImg: require('../../assets/map/gangkou_index/buttom/ico22_on.png'),
// containAuthorization: [],
// eliminateAuthorization: []
// }
] ]
}, },
{ {
@ -1091,7 +1116,9 @@ export default {
longitude: '', longitude: '',
latitude: '' latitude: ''
}, },
trajectoryEntityCollection: {} trajectoryEntityCollection: {},
isPeopleTrajectory: false,
peopleTrajectoryValue: ''
} }
}, },
mounted() { mounted() {
@ -1189,7 +1216,7 @@ export default {
} }
const point_type = pick.id._monitoItems.data.point_type const point_type = pick.id._monitoItems.data.point_type
if (point_type.indexOf('标记点') !== -1) { if (point_type.indexOf('标记点') !== -1) {
const { label, point_type, data_id, corpInfoId, dialog_width, infoname } = pick.id._monitoItems.data const { label, point_type, data_id, corpInfoId, dialog_width, infoname, code, video_type, name } = pick.id._monitoItems.data
this.dialog.visible = true this.dialog.visible = true
this.dialog.title = label this.dialog.title = label
this.dialog.type = point_type.substring(3) this.dialog.type = point_type.substring(3)
@ -1197,6 +1224,9 @@ export default {
this.dialog.corpInfoId = corpInfoId this.dialog.corpInfoId = corpInfoId
this.dialog.infoname = infoname this.dialog.infoname = infoname
this.dialog.width = dialog_width || '50%' this.dialog.width = dialog_width || '50%'
this.dialog.code = code
this.dialog.video_type = video_type
this.dialog.name = name
} }
} else { } else {
this.closeBubbles() this.closeBubbles()
@ -1226,12 +1256,13 @@ export default {
} }
}, Cesium.ScreenSpaceEventType.RIGHT_CLICK) }, Cesium.ScreenSpaceEventType.RIGHT_CLICK)
}, },
addTrajectory(point_id, corpInfoId) { addTrajectory() {
this.removeTrajectory()
requestFN( requestFN(
'/map/getPersonTrace', '/map/getPersonTrace',
{ {
id: point_id, id: this.peopleTrajectoryValue,
corpId: corpInfoId corpId: this.CORP_INFO_ID
} }
).then((data) => { ).then((data) => {
if (data.list) { if (data.list) {
@ -1671,6 +1702,7 @@ export default {
this.bottomOptionsList[i].list[j].check = false this.bottomOptionsList[i].list[j].check = false
} }
} }
this.isPeopleTrajectory = false
} }
}, },
clearAllBottomOptionsItemsEntityCollection() { clearAllBottomOptionsItemsEntityCollection() {
@ -1757,12 +1789,26 @@ export default {
} }
this.carLocArr = [] this.carLocArr = []
} }
if (urlType === 'peopleTrajectory') {
this.isPeopleTrajectory = false
}
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('+/UwbBQ/') this.clearMqttPoint('+/UwbBQ/')
this.removeTrajectory() this.removeTrajectory()
for (let i = 0; i < this.bottomOptionsList[pindex].list.length; i++) {
if (this.bottomOptionsList[pindex].list[i].type === 'peopleTrajectory') {
if (this.bottomOptionsList[pindex].list[i].check) {
this.bottomOptionsList[pindex].list[i].check = false
this.isPeopleTrajectory = false
break
} }
if (this.gangkouActive === '00003' && this.CORP_INFO_ID === '21590a00ea5e462e9ee44dd332dddc26' && urlType === 'peoplePosition') { }
}
}
if (this.gangkouActive === '00003' && this.CORP_INFO_ID === '21590a00ea5e462e9ee44dd332dddc26' &&
this.CORP_INFO_ID === '033549ed3bd648e49c8a65eb4993ec2f' &&
urlType === 'peoplePosition') {
this.clearRYDWPoint('+/UwbBQ/') this.clearRYDWPoint('+/UwbBQ/')
this.removeTrajectory() this.removeTrajectory()
} }
@ -1778,17 +1824,45 @@ export default {
} }
}) })
} else { } else {
if (urlType === 'peopleTrajectory') {
let flag = false
for (let i = 0; i < this.bottomOptionsList[pindex].list.length; i++) {
if (this.bottomOptionsList[pindex].list[i].type === 'peoplePosition') {
if (!this.bottomOptionsList[pindex].list[i].check) {
flag = true
break
}
}
}
if (flag) {
this.$message.warning('请先选择人员定位!!!')
return
} else {
this.isPeopleTrajectory = true
}
}
this.bottomOptionsList[pindex].list[index].check = true this.bottomOptionsList[pindex].list[index].check = true
if (this.gangkouActive === '00004') { if (this.gangkouActive === '00004') {
this.cfdBottomOptionsList[pindex].list[index].check = true this.cfdBottomOptionsList[pindex].list[index].check = true
this.bottomOptionsList[pindex].list[index].check = false this.bottomOptionsList[pindex].list[index].check = false
} }
console.info('---------')
console.info('---------')
console.info(this.CORP_INFO_ID === '033549ed3bd648e49c8a65eb4993ec2f')
console.info('---------')
console.info('---------')
if (this.gangkouActive === '00003' && this.CORP_INFO_ID === '035958e685cf4850bc40151c5e0617a6' && urlType === 'peoplePosition') { if (this.gangkouActive === '00003' && this.CORP_INFO_ID === '035958e685cf4850bc40151c5e0617a6' && urlType === 'peoplePosition') {
!this.connecting ? this.createConnection(this.CORP_INFO_ID) : this.doSubscribe() !this.connecting ? this.createConnection(this.CORP_INFO_ID) : this.doSubscribe()
} else if (this.gangkouActive === '00003' && this.CORP_INFO_ID === '21590a00ea5e462e9ee44dd332dddc26' && urlType === 'peoplePosition') { } else if (this.gangkouActive === '00003' && this.CORP_INFO_ID === '21590a00ea5e462e9ee44dd332dddc26' &&
urlType === 'peoplePosition') {
// websocket // websocket
console.info('Assssssss')
this.initRYDWWebsocket('21590a00ea5e462e9ee44dd332dddc26') this.initRYDWWebsocket('21590a00ea5e462e9ee44dd332dddc26')
} else if (this.gangkouActive === '00003' && this.CORP_INFO_ID === '033549ed3bd648e49c8a65eb4993ec2f' && urlType === 'peoplePosition') {
// websocket
console.info('Assssssss')
this.initRYDWWebsocket('033549ed3bd648e49c8a65eb4993ec2f')
} else { } else {
requestFN( requestFN(
pointUrl, pointUrl,
@ -1801,6 +1875,7 @@ export default {
).then(async(data) => { ).then(async(data) => {
const points = [] const points = []
const varList = this.filterNull(data.varList) const varList = this.filterNull(data.varList)
console.info(data)
for (let i = 0; i < varList.length; i++) { for (let i = 0; i < varList.length; i++) {
const point = {} const point = {}
point.id = pindex + '_' + index + '_' + i point.id = pindex + '_' + index + '_' + i
@ -1843,6 +1918,7 @@ export default {
} }
points.push(point) points.push(point)
} }
console.info(points)
if (this.gangkouActive === '00004' && urlType === 'carPosition') { if (this.gangkouActive === '00004' && urlType === 'carPosition') {
this.timerCfdCarDingwei() this.timerCfdCarDingwei()
this.carLocArr = points this.carLocArr = points
@ -2341,10 +2417,10 @@ export default {
_this.fwebsocket = new WebSocket(encodeURI(wsUrl)) _this.fwebsocket = new WebSocket(encodeURI(wsUrl))
_this.fwebsocket.onmessage = function(message) { _this.fwebsocket.onmessage = function(message) {
console.info('接收消息') console.info('接收消息')
const peopleList = JSON.parse(message.data).data.data const peopleList = JSON.parse(message.data)
for (let i = 0; i < peopleList.length; i++) { for (let i = 0; i < peopleList.length; i++) {
const item = peopleList[i] const item = peopleList[i]
if ((!item) || (item.ts === 1)) continue if ((!item)) continue
// //
const index = _this.onePerLocArr.findIndex(item1 => { const index = _this.onePerLocArr.findIndex(item1 => {
return item1.id.toString() === item.id.toString() return item1.id.toString() === item.id.toString()
@ -2360,6 +2436,7 @@ export default {
} else { } else {
const perLoc = { const perLoc = {
id: item.id, id: item.id,
name: item.name,
x: x, x: x,
y: y, y: y,
icon_type: 'img4_0' + pointColor, icon_type: 'img4_0' + pointColor,
@ -2680,6 +2757,8 @@ export default {
if (containAuthorization.length === 0) return true if (containAuthorization.length === 0) return true
if (containAuthorization.includes(CORP_INFO_ID)) { if (containAuthorization.includes(CORP_INFO_ID)) {
return true return true
} else if (containAuthorization.includes('allCorp') && CORP_INFO_ID) {
return true
} else { } else {
return false return false
} }
@ -3099,9 +3178,52 @@ export default {
transform: translateY(0); transform: translateY(0);
} }
} }
.people_trajectory{
position: absolute;
top: -60px;
left: 0;
width: 400px;
padding: 10px;
background-image: linear-gradient(to right, rgb(31 62 129 / 57%) 0%, rgb(17 93 255 / 40%) 50%, rgb(31 62 129 / 57%) 100%);
.search_btn{
background-color: #1563e3;
color: #fff;
border-color: #1563e3;
}
.reset_btn{
background-color: #558be5;
color: #fff;
border-color: #558be5;
}
}
</style> </style>
<style> <style>
.cesium-viewer-toolbar, .cesium-viewer-fullscreenContainer, .cesium-infoBox-visible { .cesium-viewer-toolbar, .cesium-viewer-fullscreenContainer, .cesium-infoBox-visible {
display: none !important; display: none !important;
} }
.people_trajectory .el-input__inner{
background-color: #100693 !important;
border-color: #100693 !important;
color: #fff !important;
}
.people_trajectory_select{
background-color: #100693 !important;
border-color: #100693 !important;
}
.people_trajectory_select .el-select-dropdown__item{
color: #fff !important;
}
.people_trajectory_select .el-select-dropdown__item.hover{
background-color: #2111ec !important;
color: #fff !important;
}
.people_trajectory_select .popper__arrow{
border-top-color: #100693 !important;
border-bottom-color: #100693 !important;
}
.people_trajectory_select .popper__arrow::after{
border-top-color: #100693 !important;
border-bottom-color: #100693 !important;
}
</style> </style>

View File

@ -111,6 +111,37 @@ export default class DragEntity {
} }
} }
if (value.point_type.indexOf('标记点') !== -1) { if (value.point_type.indexOf('标记点') !== -1) {
if (value.label == '人员闸机') {
billboard = {
image: imgMap['img0_0' ],
height: 36,
width: 30,
verticalOrigin: Cesium.VerticalOrigin.BOTTOM,
horizontalOrigin: Cesium.HorizontalOrigin.CENTER,
heightReference: Cesium.HeightReference.CLAMP_TO_GROUND,
disableDepthTestDistance: Number.POSITIVE_INFINITY
}
} else if (value.label == '车辆闸机') {
billboard = {
image: imgMap['img0_1' ],
height: 36,
width: 30,
verticalOrigin: Cesium.VerticalOrigin.BOTTOM,
horizontalOrigin: Cesium.HorizontalOrigin.CENTER,
heightReference: Cesium.HeightReference.CLAMP_TO_GROUND,
disableDepthTestDistance: Number.POSITIVE_INFINITY
}
} else if (value.label == '摄像头') {
billboard = {
image: imgMap['img0_2' ],
height: 36,
width: 30,
verticalOrigin: Cesium.VerticalOrigin.BOTTOM,
horizontalOrigin: Cesium.HorizontalOrigin.CENTER,
heightReference: Cesium.HeightReference.CLAMP_TO_GROUND,
disableDepthTestDistance: Number.POSITIVE_INFINITY
}
} else {
billboard = { billboard = {
image: imgMap['img' + value.icon_type], image: imgMap['img' + value.icon_type],
height: 36, height: 36,
@ -121,6 +152,7 @@ export default class DragEntity {
disableDepthTestDistance: Number.POSITIVE_INFINITY disableDepthTestDistance: Number.POSITIVE_INFINITY
} }
} }
}
// 曹妃甸使用 // 曹妃甸使用
if (value.gangkou === '00004') { if (value.gangkou === '00004') {
if (value.label === '人员定位') { if (value.label === '人员定位') {

View File

@ -30,6 +30,16 @@ export default class DragEntity {
heightReference: Cesium.HeightReference.CLAMP_TO_GROUND, heightReference: Cesium.HeightReference.CLAMP_TO_GROUND,
disableDepthTestDistance: Number.POSITIVE_INFINITY disableDepthTestDistance: Number.POSITIVE_INFINITY
}, },
label: {
text: point.name ? point.name : point.id,
font: '13px sans-serif',
pixelOffset: new Cesium.Cartesian2(0, -55),
showBackground: true,
// eslint-disable-next-line new-cap
backgroundColor: new Cesium.Color.fromCssColorString('rgba(20, 58, 142, 1)'),
backgroundPadding: new Cesium.Cartesian2(7, 5),
disableDepthTestDistance: Number.POSITIVE_INFINITY
},
orientation: new Cesium.VelocityOrientationProperty(point.property), orientation: new Cesium.VelocityOrientationProperty(point.property),
monitoItems: { monitoItems: {
@ -43,7 +53,9 @@ export default class DragEntity {
this.viewer.clock.clockRange = Cesium.ClockRange.CLAMPED this.viewer.clock.clockRange = Cesium.ClockRange.CLAMPED
this.viewer.clock.shouldAnimate = false this.viewer.clock.shouldAnimate = false
} }
delEntity(point) {
this.viewer.entities.remove(point)
}
getPosition(point) { getPosition(point) {
if (this.viewer.clock.shouldAnimate === false) { if (this.viewer.clock.shouldAnimate === false) {
this.viewer.clock.shouldAnimate = true this.viewer.clock.shouldAnimate = true

View File

@ -595,7 +595,7 @@ export default {
this.$refs.form.validate(valid => { this.$refs.form.validate(valid => {
if (valid) { if (valid) {
requestFN( requestFN(
'/safetyenvironmental/V2/finalcheck', '/hidden/finalcheck',
{ {
HIDDEN_ID: this.HIDDEN_ID, HIDDEN_ID: this.HIDDEN_ID,
FINAL_CHECKDESCR: this.form.FINAL_CHECKDESCR, FINAL_CHECKDESCR: this.form.FINAL_CHECKDESCR,

View File

@ -340,7 +340,7 @@ export default {
}) })
this.listLoading = true this.listLoading = true
requestFN( requestFN(
'/safetyenvironmental/V2/assign', '/hidden/assign',
{ ...this.form, { ...this.form,
HIDDEN_STATUS: this.$parent.HIDDEN_STATUS, HIDDEN_STATUS: this.$parent.HIDDEN_STATUS,
INSPECTION_ID: this.$parent.INSPECTION_ID INSPECTION_ID: this.$parent.INSPECTION_ID

View File

@ -243,7 +243,7 @@ export default {
getData() { getData() {
return new Promise((resolve) => { return new Promise((resolve) => {
requestFN( requestFN(
'/safetyenvironmental/V2/goShow', '/safetyenvironmental/goShow',
{ {
INSPECTION_ID: this.$parent.INSPECTION_ID INSPECTION_ID: this.$parent.INSPECTION_ID
} }

View File

@ -436,7 +436,7 @@ export default {
}) })
this.listLoading = true this.listLoading = true
requestFN( requestFN(
'/safetyenvironmental/V2/assign', '/hidden/assign',
{ ...this.form, { ...this.form,
HIDDEN_STATUS: this.$parent.HIDDEN_STATUS, HIDDEN_STATUS: this.$parent.HIDDEN_STATUS,
INSPECTION_ID: this.$parent.INSPECTION_ID INSPECTION_ID: this.$parent.INSPECTION_ID

View File

@ -330,7 +330,7 @@ export default {
hiddenCount(INSPECTION_ID) { hiddenCount(INSPECTION_ID) {
this.listLoading = true this.listLoading = true
requestFN( requestFN(
'/safetyenvironmental/V2/hiddencount', '/safetyenvironmentalexplain/hiddencount',
{ {
INSPECTION_ID: INSPECTION_ID INSPECTION_ID: INSPECTION_ID
} }
@ -347,10 +347,9 @@ export default {
}, },
// //
subCanvas(img64) { subCanvas(img64) {
console.info('img64' + img64)
this.form.INSPECTED_SITEUSER_SIGN_IMG = img64 this.form.INSPECTED_SITEUSER_SIGN_IMG = img64
this.$set(this.form, 'INSPECTED_SITEUSER_SIGN_TIME', formatDate(new Date(), 'YYYY-MM-DD HH:mm')) this.$set(this.form, 'INSPECTED_SITEUSER_SIGN_TIME', formatDate(new Date(), 'YYYY-MM-DD HH:mm'))
console.info(this.form)
this.dialogWriteSign = false this.dialogWriteSign = false
}, },

View File

@ -13,16 +13,16 @@
</el-form-item> </el-form-item>
</el-col> </el-col>
</el-row> </el-row>
<el-row :gutter="20"> <!-- <el-row :gutter="20">-->
<el-col :span="12"> <!-- <el-col :span="12">-->
<el-form-item label="是否为相关方" prop="IS_XGF"> <!-- <el-form-item label="是否为相关方" prop="IS_XGF">-->
<el-radio-group id="IS_XGF" ref="IS_XGF" v-model="form.IS_XGF" @change="getXgfTreeData"> <!-- <el-radio-group id="IS_XGF" ref="IS_XGF" v-model="form.IS_XGF" @change="getXgfTreeData">-->
<el-radio :label="'1'" ></el-radio> <!-- <el-radio :label="'1'" ></el-radio>-->
<el-radio :label="'0'" ></el-radio> <!-- <el-radio :label="'0'" ></el-radio>-->
</el-radio-group> <!-- </el-radio-group>-->
</el-form-item> <!-- </el-form-item>-->
</el-col> <!-- </el-col>-->
</el-row> <!-- </el-row>-->
<el-row :gutter="20"> <el-row :gutter="20">
<el-col :span="12"> <el-col :span="12">
<el-form-item label="被检查单位" prop="INSPECTED_DEPARTMENT_ID"> <el-form-item label="被检查单位" prop="INSPECTED_DEPARTMENT_ID">
@ -96,7 +96,7 @@
<el-col :span="11"> <el-col :span="11">
<el-form-item label="检查人员" prop="INSPECTION_USER_ID"> <el-form-item label="检查人员" prop="INSPECTION_USER_ID">
<el-select v-model="item.INSPECTION_USER_ID" clearable placeholder="请选择检查人员" @change="changeHiddenUserList"> <el-select v-model="item.INSPECTION_USER_ID" clearable placeholder="请选择检查人员" @change="changeHiddenUserList">
<el-option v-for="data in INSPECTED_SITEUSER_List" :key="data.USER_ID" :label="data.NAME" :value="data.USER_ID" /> <el-option v-for="data in INSPECTOR_List[index]" :key="data.USER_ID" :label="data.NAME" :value="data.USER_ID" />
</el-select> </el-select>
</el-form-item> </el-form-item>
</el-col> </el-col>
@ -530,7 +530,7 @@ export default {
this.INSPECTED_SITEUSER_List = [] this.INSPECTED_SITEUSER_List = []
} }
if (newVal != null && newVal != '') { if (newVal != null && newVal != '') {
this.getXgfUserList(newVal) this.getUserList(newVal)
} }
}, },
immediate: false immediate: false
@ -600,7 +600,9 @@ export default {
updateInspecteDept(DEPARTMENT_ID, i) { updateInspecteDept(DEPARTMENT_ID, i) {
// this.form.inspectorList[i].INSPECTION_USER_ID = '' // this.form.inspectorList[i].INSPECTION_USER_ID = ''
// this.getInspectorList(DEPARTMENT_ID, i) // this.getInspectorList(DEPARTMENT_ID, i)
this.getXgfUserList(DEPARTMENT_ID) // this.getXgfUserList(DEPARTMENT_ID)
this.form.inspectorList[i].INSPECTION_USER_ID = ''
this.getInspectorList(DEPARTMENT_ID, i)
}, },
// //
getInspectorList(DEPARTMENT_ID, i) { getInspectorList(DEPARTMENT_ID, i) {

View File

@ -306,7 +306,7 @@ export default {
getData() { getData() {
return new Promise((resolve) => { return new Promise((resolve) => {
requestFN( requestFN(
'/safetyenvironmental/V2/goShow', '/safetyenvironmental/goShow',
{ {
INSPECTION_ID: this.$parent.INSPECTION_ID INSPECTION_ID: this.$parent.INSPECTION_ID
} }

View File

@ -357,7 +357,7 @@ export default {
getList() { getList() {
this.listLoading = true this.listLoading = true
requestFN( requestFN(
'/safetyenvironmental/V2/list?showCount=' + this.listQuery.limit + '&currentPage=' + this.listQuery.page, '/safetyenvironmental/list?showCount=' + this.listQuery.limit + '&currentPage=' + this.listQuery.page,
{ {
...this.search, ...this.search,
INSPECTION_TIME_START: this.search.INSPECTION_TIME[0], INSPECTION_TIME_START: this.search.INSPECTION_TIME[0],
@ -471,7 +471,7 @@ export default {
}).then(() => { }).then(() => {
this.listLoading = true this.listLoading = true
requestFN( requestFN(
'/safetyenvironmental/V2/hide', '/safetyenvironmental/hide',
{ {
INSPECTION_ID: id, INSPECTION_ID: id,
hide: '1' hide: '1'

View File

@ -7,7 +7,7 @@
<link rel="stylesheet" type="text/css" href="./css/style.css" /> <link rel="stylesheet" type="text/css" href="./css/style.css" />
<link rel="stylesheet" href="./swiper-master/package/swiper-bundle.min.css"> <link rel="stylesheet" href="./swiper-master/package/swiper-bundle.min.css">
<script src="./js/vue.js"></script> <script src="./js/vue.js"></script>
<script type="text/javascript" src="./js/jquery-3.3.1.min.js"></script> <script type="text/javascript" src="./js/jquery-3.7.1.min.js"></script>
<script src="../config.js"></script> <script src="../config.js"></script>
<script src="./js/sweetalert.min.js"></script> <script src="./js/sweetalert.min.js"></script>
<script src="./js/ezuikit.js"></script> <script src="./js/ezuikit.js"></script>

2
static/bi/js/jquery-3.7.1.min.js vendored Normal file

File diff suppressed because one or more lines are too long

View File

@ -16,7 +16,7 @@
<script src="js/IndoorMap3d.js"></script> <script src="js/IndoorMap3d.js"></script>
<script src="js/Theme.js"></script> <script src="js/Theme.js"></script>
<link href="css/indoor3D.css" rel="stylesheet"> <link href="css/indoor3D.css" rel="stylesheet">
<script type="text/javascript" src="../js/jquery-3.3.1.min.js"></script> <script type="text/javascript" src="../js/jquery-3.7.1.min.js"></script>
<script type="text/javascript" src="../js/pre-loader.js"></script> <script type="text/javascript" src="../js/pre-loader.js"></script>
<!-- vue --> <!-- vue -->
<script src="../js/vue.js"></script> <script src="../js/vue.js"></script>

View File

@ -71,7 +71,7 @@
<a href="javascript:;" class="weui-btn bg-blue" style="font-size: 14px;line-height:2.6;" onclick="back()">返回列表</a> <a href="javascript:;" class="weui-btn bg-blue" style="font-size: 14px;line-height:2.6;" onclick="back()">返回列表</a>
</div> </div>
--> -->
<script type="text/javascript" src="../../assets/js/jquery-1.7.2.js"></script> <script type="text/javascript" src="../../../bi/js/jquery-3.7.1.min.js"></script>
<script type="text/javascript" src="../../../bi/js/pre-loader.js"></script> <script type="text/javascript" src="../../../bi/js/pre-loader.js"></script>
<script src="../../../bi/js/sweetalert.min.js"></script> <script src="../../../bi/js/sweetalert.min.js"></script>
<script type="text/javascript"> <script type="text/javascript">

View File

@ -373,7 +373,7 @@
<div style="padding: 0 20px;"> <div style="padding: 0 20px;">
<a href="javascript:;" class="weui-btn bg-blue" style="font-size: 14px;line-height:2.6;" onclick="back()">返回列表</a> <a href="javascript:;" class="weui-btn bg-blue" style="font-size: 14px;line-height:2.6;" onclick="back()">返回列表</a>
</div> </div>
<script type="text/javascript" src="../../assets/js/jquery-1.7.2.js"></script> <script type="text/javascript" src="../../../bi/js/jquery-3.7.1.min.js"></script>
<script type="text/javascript" src="../../../bi/js/pre-loader.js"></script> <script type="text/javascript" src="../../../bi/js/pre-loader.js"></script>
<script src="../../../bi/js/sweetalert.min.js"></script> <script src="../../../bi/js/sweetalert.min.js"></script>
<script type="text/javascript"> <script type="text/javascript">

View File

@ -81,7 +81,7 @@
</div> </div>
<script src="//api.map.baidu.com/api?type=webgl&v=1.0&ak=OElqFYoKiAH8KFtph8ftLKF5NlNrbCUr"></script> <script src="//api.map.baidu.com/api?type=webgl&v=1.0&ak=OElqFYoKiAH8KFtph8ftLKF5NlNrbCUr"></script>
<script type="text/javascript" src="../../assets/js/jquery-1.7.2.js"></script> <script type="text/javascript" src="../../../bi/js/jquery-3.7.1.min.js"></script>
<script type="text/javascript" src="../../../bi/js/pre-loader.js"></script> <script type="text/javascript" src="../../../bi/js/pre-loader.js"></script>
<script src="../../../bi/js/sweetalert.min.js"></script> <script src="../../../bi/js/sweetalert.min.js"></script>
<script type="text/javascript"> <script type="text/javascript">

View File

@ -91,7 +91,7 @@
<!--<script src="//api.map.baidu.com/api?type=webgl&v=1.0&ak=OElqFYoKiAH8KFtph8ftLKF5NlNrbCUr"></script>--> <!--<script src="//api.map.baidu.com/api?type=webgl&v=1.0&ak=OElqFYoKiAH8KFtph8ftLKF5NlNrbCUr"></script>-->
<script type="text/javascript" src="../../assets/js/jquery-1.7.2.js"></script> <script type="text/javascript" src="../../../bi/js/jquery-3.7.1.min.js"></script>
<script type="text/javascript" src="../../../bi/js/pre-loader.js"></script> <script type="text/javascript" src="../../../bi/js/pre-loader.js"></script>
<script src="../../../bi/js/sweetalert.min.js"></script> <script src="../../../bi/js/sweetalert.min.js"></script>
<script src="../../assets/js/vant.min.js"></script> <script src="../../assets/js/vant.min.js"></script>

View File

@ -116,7 +116,7 @@
</div> </div>
</div> </div>
</body> </body>
<script type="text/javascript" src="../../assets/js/jquery-1.7.2.js"></script> <script type="text/javascript" src=".../../../bi/js/jquery-3.7.1.min.js"></script>
<script type="text/javascript" src="../../../bi/js/pre-loader.js"></script> <script type="text/javascript" src="../../../bi/js/pre-loader.js"></script>
<script src="../../../bi/js/sweetalert.min.js"></script> <script src="../../../bi/js/sweetalert.min.js"></script>
<script src="../../assets/js/vant.min.js"></script> <script src="../../assets/js/vant.min.js"></script>

View File

@ -119,7 +119,7 @@
</div> </div>
</div> </div>
</div> </div>
<script type="text/javascript" src="../../assets/js/jquery-1.7.2.js"></script> <script type="text/javascript" src="../../../bi/js/jquery-3.7.1.min.js"></script>
<script type="text/javascript" src="../../../bi/js/pre-loader.js"></script> <script type="text/javascript" src="../../../bi/js/pre-loader.js"></script>
<script src="../../../bi/js/sweetalert.min.js"></script> <script src="../../../bi/js/sweetalert.min.js"></script>
<script type="text/javascript"> <script type="text/javascript">

View File

@ -12,7 +12,7 @@
<!--全局配置--> <!--全局配置-->
<script src="../../../config.js"></script> <script src="../../../config.js"></script>
<script src="../../assets/js/vant.min.js"></script> <script src="../../assets/js/vant.min.js"></script>
<script type="text/javascript" src="../../assets/js/jquery-1.7.2.js"></script> <script type="text/javascript" src="../../../bi/js/jquery-3.7.1.min.js"></script>
<style> <style>
.wrapper { .wrapper {
display: flex; display: flex;

View File

@ -70,7 +70,7 @@
<div style="padding: 0 20px;"> <div style="padding: 0 20px;">
<a href="javascript:;" class="weui-btn bg-blue" style="font-size: 14px;line-height:2.6;" onclick="back()">返回列表</a> <a href="javascript:;" class="weui-btn bg-blue" style="font-size: 14px;line-height:2.6;" onclick="back()">返回列表</a>
</div> </div>
<script type="text/javascript" src="../../assets/js/jquery-1.7.2.js"></script> <script type="text/javascript" src="../../../bi/js/jquery-3.7.1.min.js"></script>
<script type="text/javascript" src="../../../bi/js/pre-loader.js"></script> <script type="text/javascript" src="../../../bi/js/pre-loader.js"></script>
<script src="../../../bi/js/sweetalert.min.js"></script> <script src="../../../bi/js/sweetalert.min.js"></script>
<script type="text/javascript"> <script type="text/javascript">

View File

@ -85,7 +85,7 @@
</ul> </ul>
</div> </div>
</div> </div>
<script type="text/javascript" src="../../assets/js/jquery-1.7.2.js"></script> <script type="text/javascript" src="../../../bi/js/jquery-3.7.1.min.js"></script>
<script type="text/javascript" src="../../../bi/js/pre-loader.js"></script> <script type="text/javascript" src="../../../bi/js/pre-loader.js"></script>
<script src="../../../bi/js/sweetalert.min.js"></script> <script src="../../../bi/js/sweetalert.min.js"></script>

View File

@ -12,7 +12,7 @@
<!--全局配置--> <!--全局配置-->
<script src="../../../config.js"></script> <script src="../../../config.js"></script>
<script src="../../assets/js/vant.min.js"></script> <script src="../../assets/js/vant.min.js"></script>
<script type="text/javascript" src="../../assets/js/jquery-1.7.2.js"></script> <script type="text/javascript" src="../../../bi/js/jquery-3.7.1.min.js"></script>
<style> <style>
.wrapper { .wrapper {
display: flex; display: flex;

View File

@ -321,7 +321,7 @@
<div style="padding: 0 20px;"> <div style="padding: 0 20px;">
<a href="javascript:;" class="weui-btn bg-blue" style="font-size: 14px;line-height:2.6;" onclick="back()">返回列表</a> <a href="javascript:;" class="weui-btn bg-blue" style="font-size: 14px;line-height:2.6;" onclick="back()">返回列表</a>
</div> </div>
<script type="text/javascript" src="../../assets/js/jquery-1.7.2.js"></script> <script type="text/javascript" src="../../../bi/js/jquery-3.7.1.min.js"></script>
<script type="text/javascript" src="../../../bi/js/pre-loader.js"></script> <script type="text/javascript" src="../../../bi/js/pre-loader.js"></script>
<script src="../../../bi/js/sweetalert.min.js"></script> <script src="../../../bi/js/sweetalert.min.js"></script>
<script type="text/javascript"> <script type="text/javascript">

View File

@ -82,7 +82,7 @@
<script src="//api.map.baidu.com/api?type=webgl&v=1.0&ak=OElqFYoKiAH8KFtph8ftLKF5NlNrbCUr"></script> <script src="//api.map.baidu.com/api?type=webgl&v=1.0&ak=OElqFYoKiAH8KFtph8ftLKF5NlNrbCUr"></script>
<script type="text/javascript" src="../../assets/js/jquery-1.7.2.js"></script> <script type="text/javascript" src="../../../bi/js/jquery-3.7.1.min.js"></script>
<script type="text/javascript" src="../../../bi/js/pre-loader.js"></script> <script type="text/javascript" src="../../../bi/js/pre-loader.js"></script>
<script src="../../../bi/js/sweetalert.min.js"></script> <script src="../../../bi/js/sweetalert.min.js"></script>
<script type="text/javascript"> <script type="text/javascript">

View File

@ -60,7 +60,7 @@
<div style="padding: 0 20px;margin-top:20px"> <div style="padding: 0 20px;margin-top:20px">
<a href="javascript:;" class="weui-btn bg-blue" style="font-size: 14px;line-height:2.6;" onclick="back()">返回列表</a> <a href="javascript:;" class="weui-btn bg-blue" style="font-size: 14px;line-height:2.6;" onclick="back()">返回列表</a>
</div> </div>
<script type="text/javascript" src="../../assets/js/jquery-1.7.2.js"></script> <script type="text/javascript" src="../../../bi/js/jquery-3.7.1.min.js"></script>
<script type="text/javascript" src="../../../bi/js/pre-loader.js"></script> <script type="text/javascript" src="../../../bi/js/pre-loader.js"></script>
<script src="../../../bi/js/sweetalert.min.js"></script> <script src="../../../bi/js/sweetalert.min.js"></script>
<script type="text/javascript"> <script type="text/javascript">

View File

@ -49,7 +49,7 @@
</div> </div>
</div> </div>
<script type="text/javascript" src="../../assets/js/jquery-1.7.2.js"></script> <script type="text/javascript" src="../../../bi/js/jquery-3.7.1.min.js"></script>
<script type="text/javascript" src="../../../bi/js/pre-loader.js"></script> <script type="text/javascript" src="../../../bi/js/pre-loader.js"></script>
<script src="../../../bi/js/sweetalert.min.js"></script> <script src="../../../bi/js/sweetalert.min.js"></script>
<script src="../../../request.js"></script> <script src="../../../request.js"></script>