Merge remote-tracking branch 'origin/pet' into pet

# Conflicts:
#	src/views/corpInfo/user/components/edit.vue
hyx_2024-9-25_tongbu
guoyuepeng 2024-09-20 14:59:13 +08:00
commit 5163d5ca32
53 changed files with 11298 additions and 9209 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://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" src="./static/map/cesium91/CesiumUnminified/Cesium.js"></script>
<script type="text/javascript" src="./static/map/cesium91/CustomCesiumSDK.js"></script>
<link href="./static/map/cesium91/CesiumUnminified/Widgets/widgets.css" rel="stylesheet"/>
</head>
<body>
<div id="app"></div>

Binary file not shown.

After

Width:  |  Height:  |  Size: 8.1 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 8.3 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 8.4 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 8.6 KiB

View File

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

View File

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

View File

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

View File

@ -0,0 +1,395 @@
<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%;"
format="yyyy-MM-dd HH:mm:ss"
value-format="yyyy-MM-dd HH:mm:ss"
/>
</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%;"
format="yyyy-MM-dd HH:mm:ss"
value-format="yyyy-MM-dd HH:mm:ss"
/>
</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'
import formatDate from '@/utils/dateformat'
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
}
]
}
this.infoForm.incidentDate = new Date(data.info.incidentDate)
this.infoForm.reportDate = new Date(data.info.reportDate)
}).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
}
this.infoForm.incidentDate = formatDate(this.infoForm.incidentDate, 'YYYY-MM-DD HH:mm:ss')
this.infoForm.reportDate = formatDate(this.infoForm.reportDate, 'YYYY-MM-DD HH:mm:ss')
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.disposal.MAJORDANGERSOURCE_DISPOSAL_ID = data.pd.MAJORDANGERSOURCE_DISPOSAL_ID
this.disposal.DISPOSAL_TIME = data.pd.DISPOSAL_TIME
console.info(this.disposal)
// this.dialogFormEdit = false
// this.hasDisposal = false
}).catch((e) => {
@ -414,7 +414,7 @@ export default {
this.uploadDisposalAfterFile()
this.listLoading = true
this.disposal.DISPOSAL_STATUS = '1'
console.info(this.disposal)
requestFN(
'/majordangersourcedisposal/' + methodName,
this.disposal
@ -423,7 +423,6 @@ export default {
this.dialogFormEdit = false
this.hasDisposal = false
this.resetDisposal()
console.info(this.disposal)
this.timer = setInterval(this.handleTimerOperation, 5000)
}).catch((e) => {
this.listLoading = false
@ -443,7 +442,7 @@ export default {
}
}
// formData.append('FFILE', this.disposal.disposalBeforeFile)
console.info(this.disposal.MAJORDANGERSOURCE_DISPOSAL_ID)
formData.append('FOREIGN_KEY', this.disposal.MAJORDANGERSOURCE_DISPOSAL_ID)
formData.append('TYPE', 20)
this.uploadFileSubmit(formData, '处置前照片上传完成')
@ -457,7 +456,7 @@ export default {
}
}
// formData.append('FFILE', this.disposal.disposalAfterFile)
console.info(this.disposal.MAJORDANGERSOURCE_DISPOSAL_ID)
formData.append('FOREIGN_KEY', this.disposal.MAJORDANGERSOURCE_DISPOSAL_ID)
formData.append('TYPE', 21)
this.uploadFileSubmit(formData, '处置后照片上传完成')
@ -467,7 +466,7 @@ export default {
'/imgfiles/add',
formData
).then((data) => {
console.info(str)
}).catch((e) => {
})
},

View File

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

View File

@ -96,7 +96,7 @@
</template>
<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-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>
</el-table-column>
</el-table>
@ -798,7 +798,7 @@ export default {
SHIFTDUTYTWO: this.SHIFTDUTYTWO,
IS_HAZARDCONFIRMER: this.IS_HAZARDCONFIRMER,
USER_ID: this.USER_ID,
ISPUSH: '1'
ISPUSH: '2'
}
).then((data) => {
this.listLoading = false

View File

@ -139,11 +139,11 @@
<i class="el-icon-plus"/>
</el-upload>
<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">* 图像大小不超过1M</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">* 图像分辨率大于32×32像素小于4096×4096像素<br>人脸占比不低于64×64像素</div> -->
<!-- <div style="color: red;font-size: 12px">如无合适照片请该人员登陆曹港APP中进行人脸照片采集</div> -->
</div>
</div>
</el-form-item>

View File

@ -29,7 +29,11 @@
<el-col :span="4">
<el-form-item label="是否标点" label-width="110px">
<el-select v-model="IS_PUNCTUATION" clearable placeholder="请选择" style="width: 100%;">
<el-option v-for="item in punctuationStatusList" :key="item.value" :label="item.label" :value="item.value" />
<el-option
v-for="item in punctuationStatusList"
:key="item.value"
:label="item.label"
:value="item.value"/>
</el-select>
</el-form-item>
</el-col>
@ -75,14 +79,14 @@
</el-table-column>
<el-table-column label="操作" width="450">
<template slot-scope="{row}">
<el-button
v-show="true"
class="tiffany-btn"
icon="el-icon-picture"
type="primary"
size="mini"
@click="handleShowQr(row)">点位二维码
</el-button>
<!-- <el-button-->
<!-- v-show="true"-->
<!-- class="tiffany-btn"-->
<!-- icon="el-icon-picture"-->
<!-- type="primary"-->
<!-- size="mini"-->
<!-- @click="handleShowQr(row)">点位二维码-->
<!-- </el-button>-->
<el-button
v-show="edit"
type="primary"
@ -98,12 +102,20 @@
@click="handleDelete(row)">删除
</el-button>
<!-- 新增按钮检查记录二维码 -->
<!-- <el-button-->
<!-- class="tiffany-btn"-->
<!-- icon="el-icon-document"-->
<!-- type="info"-->
<!-- size="mini"-->
<!-- @click="handleShowRecordQr(row)">检查记录二维码-->
<!-- </el-button>-->
<el-button
class="tiffany-btn"
icon="el-icon-document"
type="info"
size="mini"
@click="handleShowRecordQr(row)">检查记录二维码
@click="handleShowNotificationCard(row)">
告知卡
</el-button>
</template>
</el-table-column>
@ -123,27 +135,91 @@
</div>
</div>
<el-dialog :visible.sync="dialogFormShow" title="查看二维码" width="680px" class="top-dialog">
<div id="printTest" style="border: 1px solid #fff;">
<div class="level-title" style="margin-top:20px">
<h1>消防点位信息</h1>
<!-- <el-dialog :visible.sync="dialogFormShow" title="查看二维码" width="680px" class="top-dialog">-->
<!-- <div id="printTest" style="border: 1px solid #fff;">-->
<!-- <div class="level-title" style="margin-top:20px">-->
<!-- <h1>消防点位信息</h1>-->
<!-- </div>-->
<!-- <table class="table-ui">-->
<!-- <tr>-->
<!-- <td class="tbg">消防区域</td>-->
<!-- <td >{{ qrInfo.FIRE_REGION_NAME }}</td>-->
<!-- <td class="tbg">消防点位</td>-->
<!-- <td>{{ qrInfo.FIRE_POINT_NAME }}</td>-->
<!-- </tr>-->
<!-- <tr>-->
<!-- <td class="tbg">负责部门</td>-->
<!-- <td>{{ qrInfo.DEPARTMENT_NAME }}</td>-->
<!-- <td class="tbg">负责人</td>-->
<!-- <td>{{ qrInfo.USERNAME }}</td>-->
<!-- </tr>-->
<!-- </table>-->
<!-- <div class="table-qrcode">-->
<!-- <vue-qr :text="qrcodeStr" :margin="0" :size="300" color-dark="#000" color-light="#fff" />-->
<!-- </div>-->
<!-- </div>-->
<!-- <div slot="footer" class="dialog-footer">-->
<!-- <el-button @click="dialogFormShow = false"> </el-button>-->
<!-- <el-button v-print="'#printTest'" type="primary"> </el-button>-->
<!-- </div>-->
<!-- </el-dialog>-->
<el-dialog :visible.sync="dialogFormShow" title="消防点位维护信息告知牌" width="780px" class="top-dialog">
<el-tabs v-model="tabsActive">
<el-tab-pane label="横版" name="horizontal"/>
<el-tab-pane label="竖版" name="vertical"/>
</el-tabs>
<div id="printTest">
<div class="main_title">消防点位维护信息告知牌</div>
<div v-if="tabsActive === 'horizontal'" class="horizontal">
<div class="info">
<div class="row">
<div class="title">消防点位</div>
<div class="value">{{ qrInfo.FIRE_POINT_NAME }}</div>
</div>
<div class="row">
<div class="title">点位编号</div>
<div class="value">{{ qrInfo.FIRE_POINT_CODE }}</div>
</div>
</div>
<div class="qr_info">
<div class="row">
<div class="title">检查码</div>
<div class="qr">
<vue-qr :text="qrcodeStr" :margin="0" :size="280" color-dark="#000" color-light="#fff"/>
</div>
<div class="title">查询码</div>
<div class="qr">
<vue-qr :text="qrcodeStr1" :margin="0" :size="280" color-dark="#000" color-light="#fff"/>
</div>
</div>
</div>
</div>
<table class="table-ui">
<tr>
<td class="tbg">消防区域</td>
<td >{{ qrInfo.FIRE_REGION_NAME }}</td>
<td class="tbg">消防点位</td>
<td>{{ qrInfo.FIRE_POINT_NAME }}</td>
</tr>
<tr>
<td class="tbg">负责部门</td>
<td>{{ qrInfo.DEPARTMENT_NAME }}</td>
<td class="tbg">负责人</td>
<td>{{ qrInfo.USERNAME }}</td>
</tr>
</table>
<div class="table-qrcode">
<vue-qr :text="qrcodeStr" :margin="0" :size="300" color-dark="#000" color-light="#fff" />
<div v-if="tabsActive === 'vertical'" class="vertical">
<div class="info">
<div class="row">
<div class="title">消防点位</div>
<div class="value">{{ qrInfo.FIRE_POINT_NAME }}</div>
</div>
<div class="row">
<div class="title">点位编号</div>
<div class="value">{{ qrInfo.FIRE_POINT_CODE }}</div>
</div>
</div>
<div class="qr_info">
<div class="row">
<div class="title">检查码</div>
<div class="qr">
<vue-qr :text="qrcodeStr" :margin="0" :size="280" color-dark="#000" color-light="#fff"/>
</div>
</div>
<div class="row">
<div class="title">查询码</div>
<div class="qr">
<vue-qr :text="qrcodeStr1" :margin="0" :size="280" color-dark="#000" color-light="#fff"/>
</div>
</div>
</div>
</div>
</div>
<div slot="footer" class="dialog-footer">
@ -158,7 +234,7 @@
<h1>检查记录二维码</h1>
</div>
<div class="table-qrcode">
<vue-qr :text="recordQrcodeStr" :margin="0" :size="300" color-dark="#000" color-light="#fff" />
<vue-qr :text="recordQrcodeStr" :margin="0" :size="300" color-dark="#000" color-light="#fff"/>
</div>
</div>
<div slot="footer" class="dialog-footer">
@ -167,11 +243,19 @@
</div>
</el-dialog>
<el-dialog v-loading ="listLoading" :visible.sync="dialogEditUser" title="批量修改负责人" width="800px">
<el-form ref="firefightingBatchEditDept" :model="dialogEditUserForm" :rules="dialogEditUserRules" label-width="150px">
<el-dialog v-loading="listLoading" :visible.sync="dialogEditUser" title="批量修改负责人" width="800px">
<el-form
ref="firefightingBatchEditDept"
:model="dialogEditUserForm"
:rules="dialogEditUserRules"
label-width="150px">
<el-row>
<el-form-item label="负责人员" prop="USER_ID">
<el-select v-model="dialogEditUserForm.USER_ID" placeholder="请选择人员" class="filter-item" style="width: 80%;">
<el-select
v-model="dialogEditUserForm.USER_ID"
placeholder="请选择人员"
class="filter-item"
style="width: 80%;">
<el-option v-for="item in userList" :key="item.USER_ID" :label="item.NAME" :value="item.USER_ID"/>
</el-select>
</el-form-item>
@ -204,6 +288,8 @@ export default {
dialogFormShow: false,
dialogRecordFormShow: false,
qrcodeStr: '',
qrcodeStr1: '',
tabsActive: 'horizontal',
recordQrcodeStr: '',
qrInfo: {},
add: false,
@ -269,16 +355,46 @@ export default {
handleShowQr(ROW) {
this.dialogFormShow = true
this.qrInfo = ROW
this.qrcodeStr = this.config.weburlWaiwang + 'static/qrcode/views/bsbw/point_list.html?id=' + ROW.FIRE_POINT_ID
this.qrcodeStr = JSON.stringify({
MANAGER_TYPE: 'fireListManager',
FIRE_POINT_ID: ROW.FIRE_POINT_ID
})
},
handleShowRecordQr(ROW) {
this.dialogRecordFormShow = true
const json = {
MANAGER_TYPE: 'fireListManager',
USER_ID: ROW.USER_ID,
DEPARTMENT_ID: ROW.DEPARTMENT_ID
console.log(ROW)
this.dialogFormShow = true
// qrInfo
this.qrInfo = {
FIRE_REGION_NAME: ROW.FIRE_REGION_NAME, //
FIRE_POINT_NAME: ROW.FIRE_POINT_NAME, //
DEPARTMENT_NAME: ROW.DEPARTMENT_NAME, //
USERNAME: ROW.USERNAME //
}
this.recordQrcodeStr = JSON.stringify(json)
const json = {
MANAGER_TYPE: 'checkRecordManager',
USER_ID: ROW.USER_ID,
DEPARTMENT_ID: ROW.DEPARTMENT_ID,
FIRE_POINT_ID: ROW.FIRE_POINT_ID
}
const jsonStr = JSON.stringify(json)
this.qrcodeStr = jsonStr
console.info(this.qrcodeStr)
},
handleShowNotificationCard(ROW) {
this.dialogFormShow = true
this.qrInfo = ROW
//
this.qrcodeStr = JSON.stringify({
MANAGER_TYPE: 'checkRecordManager',
USER_ID: ROW.USER_ID,
DEPARTMENT_ID: ROW.DEPARTMENT_ID,
FIRE_POINT_ID: ROW.FIRE_POINT_ID
})
//
this.qrcodeStr1 = JSON.stringify({
MANAGER_TYPE: 'fireListManager',
FIRE_POINT_ID: ROW.FIRE_POINT_ID
})
},
handleEdit(FIRE_POINT_ID) {
this.$parent.FIRE_POINT_ID = FIRE_POINT_ID
@ -443,7 +559,8 @@ export default {
})
this.dialogEditUser = false
this.getList()
}).catch(() => {})
}).catch(() => {
})
}
})
},
@ -528,10 +645,12 @@ export default {
.returnBtn {
float: right;
}
.app-container {
display: flex;
align-items: baseline;
}
.table-qrcode {
text-align: center;
padding-top: 20px;
@ -542,3 +661,139 @@ export default {
width: 100%
}
</style>
<style scoped lang="scss">
#printTest {
border: 1px solid #ccc;
padding: 20px;
margin: 10px;
.main_title {
font-weight: bold;
font-size: 30px;
text-align: center;
color: #000;
}
.horizontal {
.info {
color: #000;
font-size: 16px;
margin-top: 30px;
.row {
display: flex;
align-items: center;
.title {
width: 120px;
text-align: center;
border: 1px solid #000;
padding: 5px;
letter-spacing: 6px;
}
.value {
border: 1px solid #000;
border-left: none;
flex: 1;
padding: 5px 5px 5px 10px;
}
& + .row {
.title, .value {
border-top: none;
}
}
}
}
.qr_info {
color: #000;
font-size: 16px;
.row {
display: flex;
.title {
width: 30px;
line-height: 22px;
writing-mode: vertical-rl;
text-align: center;
letter-spacing: 15px;
border: 1px solid #000;
border-top: none;
padding: 4px;
}
.qr {
flex: 1;
border: 1px solid #000;
border-top: none;
border-left: none;
padding: 5px;
display: flex;
align-items: center;
justify-content: center;
& + .title {
border-left: none;
}
}
}
}
}
.vertical {
.info, .qr_info {
color: #000;
font-size: 16px;
margin-top: 30px;
.row {
display: flex;
.title {
width: 200px;
text-align: center;
padding: 5px;
border: 1px solid #000;
letter-spacing: 6px;
}
.value, .qr {
padding: 5px 5px 5px 10px;
border: 1px solid #000;
border-left: none;
flex: 1;
}
& + .row {
.title, .value, .qr {
border-top: none;
}
}
}
}
.qr_info {
margin-top: 0;
.row {
.title {
letter-spacing: 12px;
line-height: 280px;
border-top: none;
}
.qr {
display: flex;
align-items: center;
justify-content: center;
border-top: none;
}
}
}
}
}
</style>

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

@ -230,7 +230,7 @@ export default {
this.measuresList = data.measuresList
this.gasList = data.gasList
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) {
this.$set(this.info, 'WORK_OPERATOR_ID', [])
} else {

View File

@ -9,13 +9,22 @@
<windspeedstation v-if="type === '2da29f00852a4653ba3e760b9de57412'" :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"/>
<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"/>
<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-cfd v-if="type === 'CAMERA00004' || type === 'platcamera00004'" :id="id" :type="type" :gangkou="gangkou"/>
<video-play-plat v-if="type === 'platcamera'" :id="id" :type="type" :gangkou="gangkou"/>
<!--秦港一公司 边界入侵 详细页面 start-->
<!--秦港一公司 边界入侵 详细页面 start-->
<video-play-bianjieruqin v-if="type === 'bianjieruqin'" :id="id" :type="type" :gangkou="gangkou"/>
<!--秦港一公司 边界入侵 详细页面 end-->
<!--秦港一公司 八项作业 详细页面 start-->
@ -180,6 +189,14 @@ export default {
infoname: {
type: String,
default: ''
},
videoType: {
type: String,
default: ''
},
code: {
type: String,
default: ''
}
},
methods: {

View File

@ -1,6 +1,6 @@
<template>
<div class="app-container print-work" style="width: 100%">
<div v-if= "type !== 'CAMERA'" class="level-title">
<div v-if="corpId == '035958e685cf4850bc40151c5e0617a6' " class="app-container print-work">
<div v-if= "type !== 'CAMERA'" class="level-title">\
<h1>区域名称{{ info.GATE_AREA_NAME }}</h1>
</div>
<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"/>
</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>
<script>
import { requestFN } from '@/utils/request'
import moment from 'moment'
import videoPlay from './video_play.vue'
import videoPlayGate from './video_play_gate.vue'
export default {
components: { videoPlay },
components: { videoPlay, videoPlayGate },
props: {
id: {
type: String,
@ -79,19 +156,53 @@ export default {
gangkou: {
type: String,
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() {
return {
config: config,
info: {},
recordAllList: []
recordAllList: [],
varList: [],
carRecordAllList: []
}
},
created() {
this.getData()
this.getListData()
if (this.type !== 'CAMERA') {
this.getData()
this.getListData()
}
},
methods: {
formatDate(date, format) {
@ -106,8 +217,10 @@ export default {
'/map/getGatesInAndOutNumById',
{
GATE_AREA_ID: this.id,
GATE_VIDEO_ID: this.GATE_VIDEO_ID,
TYPE: this.type,
GANGKOU: this.gangkou
GANGKOU: this.gangkou,
CORPINFO_ID: this.corpId
}
).then((data) => {
Object.assign(this.info, data.pd)
@ -117,6 +230,7 @@ export default {
this.info.CAR_OUT = 0
this.info.PERSON_IN = 0
this.info.PERSON_OUT = 0
this.varList = data.pd.varList
for (let i = 0; i < data.pd.varList.length; i++) {
if (data.pd.varList[i].TYPE == 'CAR_IN') {
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()
}).catch((e) => {
@ -142,11 +261,14 @@ export default {
'/map/getGatesInAndOutListById?showCount=10000&currentPage=1',
{
GATE_AREA_ID: this.id,
GATE_VIDEO_ID: this.GATE_VIDEO_ID,
TYPE: this.type,
GANGKOU: this.gangkou
GANGKOU: this.gangkou,
CORPINFO_ID: this.corpId
}
).then((data) => {
this.recordAllList = data.recordAllList
this.carRecordAllList = data.carRecordAllList
this.$forceUpdate()
}).catch((e) => {
})

View File

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

View File

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

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

View File

@ -215,6 +215,8 @@
:corp-info-id="dialog.corpInfoId"
:gangkou="gangkouActive"
:infoname="dialog.infoname"
:code="dialog.code"
:video-type="dialog.video_type"
/>
</div>
</template>
@ -229,7 +231,7 @@ import { requestFN } from '@/utils/request'
import gangkouIndex from './components/gangkou_index.vue'
import fengongsiIndex from './components/fengongsi_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 xiaofang from './components/xiaofang.vue'
import anquan from './components/anquan.vue'
@ -386,6 +388,18 @@ export default {
checkImg: require('../../assets/map/index/map_on.png'),
check: '',
label: '气象监测'
},
{
img: require('../../assets/map/index/sisetu.png'),
checkImg: require('../../assets/map/index/sisetu_on.png'),
check: false,
label: '四色图'
},
{
img: require('../../assets/map/index/bianjie.png'),
checkImg: require('../../assets/map/index/bianjie_on.png'),
check: false,
label: '边界'
}
],
myEntityCollection: {},
@ -415,7 +429,7 @@ export default {
img: require('../../assets/map/gangkou_index/buttom/ico1.png'),
checkImg: require('../../assets/map/gangkou_index/buttom/ico1_on.png'),
type: 'PERSON',
containAuthorization: [],
containAuthorization: ['035958e685cf4850bc40151c5e0617a6'],
eliminateAuthorization: []
},
{
@ -425,9 +439,29 @@ export default {
img: require('../../assets/map/gangkou_index/buttom/ico2.png'),
checkImg: require('../../assets/map/gangkou_index/buttom/ico2_on.png'),
type: 'CAR',
containAuthorization: [],
containAuthorization: ['035958e685cf4850bc40151c5e0617a6'],
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: '摄像头',
dialog_width: '600px',
@ -1194,7 +1228,7 @@ export default {
}
const point_type = pick.id._monitoItems.data.point_type
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.title = label
this.dialog.type = point_type.substring(3)
@ -1202,6 +1236,9 @@ export default {
this.dialog.corpInfoId = corpInfoId
this.dialog.infoname = infoname
this.dialog.width = dialog_width || '50%'
this.dialog.code = code
this.dialog.video_type = video_type
this.dialog.name = name
}
} else {
this.closeBubbles()
@ -1364,7 +1401,7 @@ export default {
this.bottomOptionsKey = Math.random()
this.bottomOptionsAnimationComplex = false
this.toCenter({ longitude, latitude, height })
drag.addPolygon(id)
// drag.addPolygon(id)
viewer.dataSources.removeAll()
this.poinEntity = {}
this.branchPoint = []
@ -1624,6 +1661,26 @@ export default {
this.dialog.corpInfoId = ''
this.dialog.infoname = ''
this.dialog.width = '96%'
} else if (index === 7) {
if (!this.gangkouActive) {
this.$message.warning('请先选择港口')
return
}
if (this.rightOptionsList[index].check) {
drag.addPolygon(this.gangkouActive, '')
} else {
drag.removeFourColorDiagram()
}
} else if (index === 8) {
if (!this.gangkouActive) {
this.$message.warning('请先选择港口')
return
}
if (this.rightOptionsList[index].check) {
drag.addPolygon(this.gangkouActive, 'wall')
} else {
drag.removeWall()
}
}
},
changeSceneMode(check) {
@ -1735,6 +1792,8 @@ export default {
this.poinEntity = {}
this.toCenter(this.initCenter)
this.dragAreaEntity(this.initPoint)
this.rightOptionsList[7].check = false
this.rightOptionsList[8].check = false
}
this.componentKey = Math.random()
@ -1781,7 +1840,9 @@ export default {
}
}
}
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.removeTrajectory()
}
@ -1819,12 +1880,23 @@ export default {
this.cfdBottomOptionsList[pindex].list[index].check = true
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') {
!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
console.info('Assssssss')
this.initRYDWWebsocket('21590a00ea5e462e9ee44dd332dddc26')
} else if (this.gangkouActive === '00003' && this.CORP_INFO_ID === '033549ed3bd648e49c8a65eb4993ec2f' && urlType === 'peoplePosition') {
// websocket
console.info('Assssssss')
this.initRYDWWebsocket('033549ed3bd648e49c8a65eb4993ec2f')
} else {
requestFN(
pointUrl,
@ -1837,6 +1909,7 @@ export default {
).then(async(data) => {
const points = []
const varList = this.filterNull(data.varList)
console.info(data)
for (let i = 0; i < varList.length; i++) {
const point = {}
point.id = pindex + '_' + index + '_' + i
@ -1879,6 +1952,7 @@ export default {
}
points.push(point)
}
console.info(points)
if (this.gangkouActive === '00004' && urlType === 'carPosition') {
this.timerCfdCarDingwei()
this.carLocArr = points
@ -2717,6 +2791,8 @@ export default {
if (containAuthorization.length === 0) return true
if (containAuthorization.includes(CORP_INFO_ID)) {
return true
} else if (containAuthorization.includes('allCorp') && CORP_INFO_ID) {
return true
} else {
return false
}

View File

@ -80,6 +80,7 @@ const polygonMap = {
export default class DragEntity {
constructor(val) {
this.viewer = val.viewer
this.id = []
}
addEntity(value) {
@ -111,14 +112,46 @@ export default class DragEntity {
}
}
if (value.point_type.indexOf('标记点') !== -1) {
billboard = {
image: imgMap['img' + value.icon_type],
height: 36,
width: 30,
verticalOrigin: Cesium.VerticalOrigin.BOTTOM,
horizontalOrigin: Cesium.HorizontalOrigin.CENTER,
heightReference: Cesium.HeightReference.CLAMP_TO_GROUND,
disableDepthTestDistance: Number.POSITIVE_INFINITY
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 = {
image: imgMap['img' + value.icon_type],
height: 36,
width: 30,
verticalOrigin: Cesium.VerticalOrigin.BOTTOM,
horizontalOrigin: Cesium.HorizontalOrigin.CENTER,
heightReference: Cesium.HeightReference.CLAMP_TO_GROUND,
disableDepthTestDistance: Number.POSITIVE_INFINITY
}
}
}
// 曹妃甸使用
@ -243,16 +276,24 @@ export default class DragEntity {
})
}
addPolygon(id) {
addPolygon(id, type) {
if (!polygonMap[id]) return
const loadMapBoxObj = polygonMap[id]()
if (type === 'wall') {
const loadMapBoxItem = loadMapBoxObj['wallList']
for (let i = 0; i < loadMapBoxItem.length; i++) {
this.addWall(this.formatPolygon(loadMapBoxItem[i]))
}
return
}
// 循环获取所有颜色
for (const loadMapBoxKey in loadMapBoxObj) {
// 获取每种颜色
const loadMapBoxItem = loadMapBoxObj[loadMapBoxKey]
if (loadMapBoxKey === 'wallList') continue
// 循环每种颜色里每一块创建多边形
for (let i = 0; i < loadMapBoxItem.length; i++) {
this.formatPolygon(loadMapBoxItem[i])
this.addFourColorDiagram(this.formatPolygon(loadMapBoxItem[i]), loadMapBoxItem[i])
}
}
}
@ -263,33 +304,68 @@ export default class DragEntity {
latitudeAndLongitude.push(item.x)
latitudeAndLongitude.push(item.y)
})
if (item.type === 'wall') {
const target = new Cesium.Entity({
wall: {
positions: Cesium.Cartesian3.fromDegreesArray(latitudeAndLongitude),
material: new Cesium.PolylineTrailLinkMaterialProperty({
color: Cesium.Color.fromBytes(201, 118, 243).withAlpha(0.5),
duration: 2000
}, this.viewer),
maximumHeights: new Array(latitudeAndLongitude.length).fill(40),
minimumHeights: new Array(latitudeAndLongitude.length).fill(0)
}
})
this.viewer.entities.add(target)
} else {
const target = new Cesium.Entity({
polygon: {
hierarchy: Cesium.Cartesian3.fromDegreesArray(latitudeAndLongitude),
extrudedHeight: item.stretchHeight,
height: item.height,
// eslint-disable-next-line new-cap
material: new Cesium.Color.fromCssColorString(item.color),
outline: !!item.strokeColor,
// eslint-disable-next-line new-cap
outlineColor: new Cesium.Color.fromCssColorString(item.strokeColor)
}
})
this.viewer.entities.add(target)
return latitudeAndLongitude
}
addFourColorDiagram(latitudeAndLongitude, item) {
const id = Cesium.createGuid()
this.id.push({
id,
key: 'FourColorDiagram'
})
const target = new Cesium.Entity({
id,
polygon: {
hierarchy: Cesium.Cartesian3.fromDegreesArray(latitudeAndLongitude),
extrudedHeight: item.stretchHeight,
height: item.height,
// eslint-disable-next-line new-cap
material: new Cesium.Color.fromCssColorString(item.color),
outline: !!item.strokeColor,
// eslint-disable-next-line new-cap
outlineColor: new Cesium.Color.fromCssColorString(item.strokeColor)
}
})
this.viewer.entities.add(target)
}
addWall(latitudeAndLongitude) {
const id = Cesium.createGuid()
this.id.push({
id,
key: 'Wall'
})
const target = new Cesium.Entity({
id,
wall: {
positions: Cesium.Cartesian3.fromDegreesArray(latitudeAndLongitude),
material: new Cesium.PolylineTrailLinkMaterialProperty({
color: Cesium.Color.fromBytes(201, 118, 243).withAlpha(0.5),
duration: 2000
}, this.viewer),
maximumHeights: new Array(latitudeAndLongitude.length).fill(40),
minimumHeights: new Array(latitudeAndLongitude.length).fill(0)
}
})
this.viewer.entities.add(target)
}
removeFourColorDiagram() {
for (let i = 0; i < this.id.length; i++) {
if (this.id[i].key === 'FourColorDiagram') {
this.viewer.entities.removeById(this.id[i].id)
this.id.splice(i, 1)
i--
}
}
}
removeWall() {
for (let i = 0; i < this.id.length; i++) {
if (this.id[i].key === 'Wall') {
this.viewer.entities.removeById(this.id[i].id)
this.id.splice(i, 1)
i--
}
}
}
}

File diff suppressed because it is too large Load Diff

View File

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

View File

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

View File

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

View File

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

View File

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

View File

@ -13,16 +13,16 @@
</el-form-item>
</el-col>
</el-row>
<el-row :gutter="20">
<el-col :span="12">
<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 :label="'1'" ></el-radio>
<el-radio :label="'0'" ></el-radio>
</el-radio-group>
</el-form-item>
</el-col>
</el-row>
<!-- <el-row :gutter="20">-->
<!-- <el-col :span="12">-->
<!-- <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 :label="'1'" ></el-radio>-->
<!-- <el-radio :label="'0'" ></el-radio>-->
<!-- </el-radio-group>-->
<!-- </el-form-item>-->
<!-- </el-col>-->
<!-- </el-row>-->
<el-row :gutter="20">
<el-col :span="12">
<el-form-item label="被检查单位" prop="INSPECTED_DEPARTMENT_ID">
@ -96,7 +96,7 @@
<el-col :span="11">
<el-form-item label="检查人员" prop="INSPECTION_USER_ID">
<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-form-item>
</el-col>
@ -530,7 +530,7 @@ export default {
this.INSPECTED_SITEUSER_List = []
}
if (newVal != null && newVal != '') {
this.getXgfUserList(newVal)
this.getUserList(newVal)
}
},
immediate: false
@ -600,7 +600,9 @@ export default {
updateInspecteDept(DEPARTMENT_ID, i) {
// this.form.inspectorList[i].INSPECTION_USER_ID = ''
// 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) {

View File

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

View File

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

View File

@ -7,7 +7,7 @@
<link rel="stylesheet" type="text/css" href="./css/style.css" />
<link rel="stylesheet" href="./swiper-master/package/swiper-bundle.min.css">
<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="./js/sweetalert.min.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/Theme.js"></script>
<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>
<!-- vue -->
<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>
</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 src="../../../bi/js/sweetalert.min.js"></script>
<script type="text/javascript">

View File

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

View File

@ -81,7 +81,7 @@
</div>
<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 src="../../../bi/js/sweetalert.min.js"></script>
<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 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 src="../../../bi/js/sweetalert.min.js"></script>
<script src="../../assets/js/vant.min.js"></script>

View File

@ -116,7 +116,7 @@
</div>
</div>
</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 src="../../../bi/js/sweetalert.min.js"></script>
<script src="../../assets/js/vant.min.js"></script>

View File

@ -119,7 +119,7 @@
</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 src="../../../bi/js/sweetalert.min.js"></script>
<script type="text/javascript">

View File

@ -12,7 +12,7 @@
<!--全局配置-->
<script src="../../../config.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>
.wrapper {
display: flex;

View File

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

View File

@ -85,7 +85,7 @@
</ul>
</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 src="../../../bi/js/sweetalert.min.js"></script>

View File

@ -12,7 +12,7 @@
<!--全局配置-->
<script src="../../../config.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>
.wrapper {
display: flex;

View File

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

View File

@ -60,7 +60,7 @@
<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>
</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 src="../../../bi/js/sweetalert.min.js"></script>
<script type="text/javascript">

View File

@ -49,7 +49,7 @@
</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 src="../../../bi/js/sweetalert.min.js"></script>
<script src="../../../request.js"></script>