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

2024-07-22新BI页面
guoyuepeng 2024-07-02 17:52:34 +08:00
commit 20c574897b
90 changed files with 8052 additions and 551 deletions
src
assets/map
gangkou_index/buttom
views
classMessage/classMessage/components
firefighting
alarm
alarmDeviceMaintenance
alarmInfomation
firecontrol
firecontrolroom
firepumproom
firerescueteam
fireresources
firewatersource
gatemachine/primarygatemanager
gatebaseinfo/components
keyprojects
personnelmanagement
platformelectronic
videomanager/components
threeSystems/lawsRegulations/components
xgf
coerceCheckIn
coerceIntakeLog
flow/components
static

View File

@ -5,7 +5,7 @@
"author": "",
"private": true,
"scripts": {
"dev": "webpack-dev-server --inline --progress --config build/webpack.dev.conf.js --host 192.168.0.247",
"dev": "webpack-dev-server --inline --progress --config build/webpack.dev.conf.js --host 192.168.0.105",
"start": "npm run dev",
"unit": "jest --config test/unit/jest.conf.js --coverage",
"e2e": "node test/e2e/runner.js",

Binary file not shown.

After

Width:  |  Height:  |  Size: 12 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 12 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 9.1 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 9.3 KiB

View File

@ -121,7 +121,7 @@
size="mini"
@click="getUserInfo(row)">查看
</el-button>
<el-button v-if="form.CLASS_STATUS === '1'" icon="el-icon-s-open" type="primary" @click="updatePhoto(row)"></el-button>
<el-button icon="el-icon-s-open" type="primary" @click="updatePhoto(row)"></el-button>
<el-button
v-if="row.STATUS === '0' && form.CLASS_STATUS === '1'"
type="primary"

View File

@ -1,7 +1,14 @@
<template>
<el-dialog v-loading="loading" :visible.sync="visible" :title="title" :before-close="close" width="90%" top="50px">
<el-dialog
v-loading="loading"
:visible.sync="visible"
:title="title"
:fullscreen="fullscreenFlag"
:before-close="close"
width="90%"
top="50px">
<el-row>
<el-col :span="18">
<el-col :span="12">
<el-form ref="form" :rules="rules" :model="form" label-width="110px">
<el-row :gutter="10">
<el-col :span="8">
@ -52,7 +59,12 @@
</el-col>
<el-col :span="8">
<el-form-item label="班级容量" prop="CLASS_SIZE">
<el-select v-model="form.CLASS_SIZE" :disabled="isShow" placeholder="请选择" style="width: 100%" @change="changePeopleList">
<el-select
v-model="form.CLASS_SIZE"
:disabled="isShow"
placeholder="请选择"
style="width: 100%"
@change="changePeopleList">
<el-option
v-for="item in warehouse.classSizeList"
:key="item.DICTIONARIES_ID"
@ -61,27 +73,21 @@
</el-select>
</el-form-item>
</el-col>
<el-col v-if="false" :span="8">
<el-form-item v-if="false" label="培训有效期" prop="VALIDITY_PERIOD">
<el-date-picker
v-model="form.VALIDITY_PERIOD"
:disabled="isShow"
type="daterange"
value-format="yyyy-MM-dd"
range-separator="至"
start-placeholder="开始日期"
end-placeholder="结束日期"
style="width: 100%"/>
</el-form-item>
</el-col>
</el-row>
<el-row>
<el-col :span="24">
<div style="font-size: 10px; color: red">{{ '温馨提示1、输入名称、电话、身份证号按回车或让输入框失去焦点即可搜索。2、双击人员列可直接添加' }}</div>
<el-divider content-position="center">搜索条件</el-divider>
</el-col>
<el-col :span="12">
<el-form-item label="归属企业">
<el-select v-model="util.BELONG_TO_CORP" :disabled="isShow" filterable placeholder="请选择" style="width: 100%" @change="getPeopleList">
<el-select
v-model="util.BELONG_TO_CORP"
:disabled="isShow"
filterable
placeholder="请选择"
style="width: 100%"
@change="getPeopleList">
<el-option
v-for="item in warehouse.companyList"
:key="item.BELONG_TO_CORP"
@ -90,6 +96,39 @@
</el-select>
</el-form-item>
</el-col>
<el-col :span="12">
<el-form-item label="姓名">
<el-input
v-model="util.NAME"
:disabled="isShow"
style="width: 100%"
maxlength="50"
placeholder="这里输入..."
@change="getPeopleList"/>
</el-form-item>
</el-col>
<el-col :span="12">
<el-form-item label="联系电话">
<el-input
v-model="util.PHONE"
:disabled="isShow"
style="width: 100%"
maxlength="50"
placeholder="这里输入..."
@change="getPeopleList"/>
</el-form-item>
</el-col>
<el-col :span="12">
<el-form-item label="身份证号">
<el-input
v-model="util.CARD_ID"
:disabled="isShow"
style="width: 100%"
maxlength="50"
placeholder="这里输入..."
@change="getPeopleList"/>
</el-form-item>
</el-col>
</el-row>
<el-row>
<el-col :span="24">
@ -102,59 +141,68 @@
tooltip-effect="dark"
height="450px"
border
fit
highlight-current-row
@row-dblclick="clickAddSelect"
@selection-change="updateSelect"
>
<el-table-column :reserve-selection="true" type="selection" width="55" align="center"/>
<el-table-column type="index" label="序号" width="50" align="center"/>
<el-table-column prop="USERNAME" label="用户名"/>
<el-table-column prop="NAME" label="姓名"/>
<el-table-column :reserve-selection="true" fixed type="selection" width="55" align="center"/>
<el-table-column fixed type="index" label="序号" width="50" align="center"/>
<el-table-column prop="USERNAME" width="200px" label="用户名"/>
<el-table-column prop="NAME" width="150px" label="姓名"/>
<el-table-column prop="CARD_ID" label="身份证号" width="150px"/>
<el-table-column prop="BELONG_TO_CORP_NAME" width="300px" label="所属企业"/>
<el-table-column prop="DEPARTMENT_NAME" width="300px" label="部门"/>
<el-table-column prop="SEX" width="50px" label="性别">
<template slot-scope="{row}">
{{ row.SEX === '0' ? '男' : '女' }}
</template>
</el-table-column>
<el-table-column prop="CARD_ID" label="身份证号" width="150px"/>
<el-table-column prop="BELONG_TO_CORP_NAME" label="所属企业"/>
<el-table-column prop="DEPARTMENT_NAME" label="部门"/>
<el-table-column prop="PHOTO" label="免冠照片" width="120px">
<template slot-scope="{row}">
<el-image v-if="getShowPicture(row)" :src="config.fileUrl+row.PHOTO" :preview-src-list="[config.fileUrl+row.PHOTO]" :z-index="9999" style="width: 100px; height: 100px"/>
<img v-if="!getShowPicture(row)" src="../../../../assets/images/peopleHead.png" alt="" style="width: 100px; height: 100px">
<el-image
v-if="getShowPicture(row)"
:src="config.fileUrl+row.PHOTO"
:preview-src-list="[config.fileUrl+row.PHOTO]"
:z-index="9999"
style="width: 100px; height: 100px"/>
<img
v-if="!getShowPicture(row)"
src="../../../../assets/images/peopleHead.png"
alt=""
style="width: 100px; height: 100px">
</template>
</el-table-column>
<el-table-column prop="PHONE" label="联系电话"/>
<el-table-column prop="STATUS" label="培训结果">
<el-table-column prop="PHONE" width="200px" label="联系电话"/>
<el-table-column v-if="false" prop="STATUS" label="培训结果">
<template slot-scope="{row}">
<template v-if="row.STATUS === '0'"></template>
<template v-else-if="row.STATUS === '1'">合格</template>
</template>
</el-table-column>
<el-table-column label="操作" align="center" width="200">
<el-table-column fixed="right" label="操作" align="center" width="100">
<template slot-scope="{row}">
<el-button
v-if="form.CLASS_STATUS === '2' && row.STATUS === '1'"
type="primary"
icon="el-icon-edit"
size="mini"
@click="getUserInfo(row)">查看
</el-button>
<el-button
v-if="row.STATUS === '0' && form.CLASS_STATUS === '1'"
type="primary"
icon="el-icon-edit"
size="mini"
@click="changFlag(row,'1')">合格
</el-button>
<el-button
v-if="row.STATUS == '1' && form.CLASS_STATUS === '1'"
type="danger"
icon="el-icon-delete"
size="mini"
@click="changFlag(row,'0')">不合格
</el-button>
<el-tooltip class="item" effect="dark" content="加入本次课程" placement="top-start">
<el-button
v-if="!row.isSelect"
type="warning"
icon="el-icon-plus"
circle
@click="addSelect(row)"/>
</el-tooltip>
<el-tooltip class="item" effect="dark" content="已加入本次课程" placement="top-start">
<el-button
v-if="row.isSelect"
type="success"
icon="el-icon-check"
circle/>
</el-tooltip>
<el-tooltip class="item" effect="dark" content="详情" placement="top-start">
<el-button
type="primary"
icon="el-icon-info"
circle
@click="viewUserInfo(row)"/>
</el-tooltip>
</template>
</el-table-column>
</el-table>
@ -162,44 +210,56 @@
</el-row>
</el-form>
</el-col>
<el-col :span="6">
<el-col :span="12">
<div style="margin-left: 10px">
<div>已选择人员数量{{ ($refs.multipleTable && $refs.multipleTable.selection)?$refs.multipleTable.selection.length:0 }}</div>
<div>已选择人员数量{{
(selectPeopleList && selectPeopleList.length) ? selectPeopleList.length : 0
}}
</div>
<div class="el-form-item__label">已选择人员名称</div>
<el-table
:data="selectPeopleList"
border
height="600px"
height="642px"
style="width: 100%;margin-left: 10px">
<el-table-column prop="NAME" fixed label="姓名" width="150px" style="width: 150px"/>
<el-table-column prop="NAME" fixed label="姓名" width="100px" style="width: 150px"/>
<el-table-column prop="USERNAME" label="用户名" width="150px" style="width: 150px"/>
<el-table-column prop="BELONG_TO_CORP_NAME" label="所属企业" width="150px" style="width: 150px"/>
<el-table-column prop="CARD_ID" label="身份证号" width="150px"/>
<el-table-column prop="BELONG_TO_CORP_NAME" label="所属企业" width="200px" style="width: 150px"/>
<el-table-column prop="CARD_ID" label="身份证号" width="200px"/>
<el-table-column fixed="right" label="操作" align="center">
<template slot-scope="{row}">
<el-tooltip class="item" effect="dark" content="删除" placement="top-start">
<el-button type="danger" icon="el-icon-delete" circle @click="deleteSelect(row)"/>
</el-tooltip>
<el-tooltip class="item" effect="dark" content="详情" placement="top-start">
<el-button type="primary" icon="el-icon-info" circle @click="viewUserInfo(row)"/>
</el-tooltip>
</template>
</el-table-column>
</el-table>
</div>
</el-col>
</el-row>
<div slot="footer" class="dialog-footer">
<el-button @click="close"> </el-button>
<el-button v-if="!form.CLASS_STATUS || form.CLASS_STATUS === ''" type="primary" @click="confirm"> </el-button>
<el-button v-if="form.CLASS_STATUS === '0' || form.CLASS_STATUS === '1'" type="primary" @click="getExcel(form.CLASS_MESSAGE_ID)">excel</el-button>
<el-button v-if="form.CLASS_STATUS === '1'" type="primary" @click="graduation(form.CLASS_MESSAGE_ID)"></el-button>
<el-button v-if="form.CLASS_STATUS === '2'" type="primary" @click="getCertificate(form.CLASS_MESSAGE_ID)"></el-button>
<el-button @click="fullscreen">{{ fullscreenFlag ? '' : ' ' }}</el-button>
<el-button type="primary" @click="confirm"> </el-button>
</div>
<user ref="userInfo" append-to-body/>
<user_pdf ref="userPdf" append-to-body/>
<user-info ref="userInfos" append-to-body/>
</el-dialog>
</template>
<script>
import Pagination from '@/components/Pagination' // el-pagination
import { requestFN } from '@/utils/request'
import waves from '@/directive/waves' // waves directive
import axios from 'axios'
import dayjs from 'dayjs' // waves directive
import user from './user.vue'
import User_pdf from './user_pdf.vue'
import UserInfo from '../../../xgf/flow_audit/userInfo.vue'
export default {
components: { User_pdf, Pagination, user },
components: { UserInfo, User_pdf, Pagination, user },
directives: { waves },
props: {
title: {
@ -224,10 +284,16 @@ export default {
CLASS_SIZE: '', //
CLASS_STATUS: '', // 0-1-2-
VALIDITY_PERIOD: [],
CLASS_MESSAGE_ID: ''
CLASS_MESSAGE_ID: '',
peopleList: []
},
util: {
BELONG_TO_CORP: ''
BELONG_TO_CORP: '',
NAME: '',
PHONE: '',
CARD_ID: '',
EDIT_FLAG: '',
CLASS_MESSAGE_ID: ''
},
warehouse: {
placeList: [],
@ -254,7 +320,9 @@ export default {
VALIDITY_PERIOD: [{ trigger: 'blur', required: true, message: '请选择时间区间' }]
},
peopleList: [],
selectPeopleList: []
selectPeopleList: [],
fullscreenFlag: false,
lock: false
}
},
created() {
@ -264,6 +332,8 @@ export default {
this.loading = true
this.visible = true
if (e && e.CLASS_MESSAGE_ID && e.CLASS_MESSAGE_ID !== '') {
this.util.EDIT_FLAG = '1'
this.util.CLASS_MESSAGE_ID = e.CLASS_MESSAGE_ID
this.getInformation(e)
} else {
this.getPeopleList()
@ -282,10 +352,16 @@ export default {
return
}
this.selectPeopleList = rows
for (let i = 0; i < this.selectPeopleList.length; i++) {
this.selectPeopleList[i].isSelect = true
}
if (!this.lock) {
this.getPeopleList()
}
}
},
confirm() {
const list = this.$refs.multipleTable.selection
const list = this.selectPeopleList
if (!list || !list.length || list.length === 0) {
this.$message.error('没有人员数据')
return
@ -317,6 +393,7 @@ export default {
})
},
close() {
console.log('清理缓存')
this.visible = false
this.form = {
CLASS_NAME: '', //
@ -327,7 +404,14 @@ export default {
CLASS_STATUS: ''// 0-1-2-
}
this.selectPeopleList = []
this.util.BELONG_TO_CORP = ''
this.util = {
BELONG_TO_CORP: '',
NAME: '',
PHONE: '',
CARD_ID: '',
EDIT_FLAG: '',
CLASS_MESSAGE_ID: ''
}
this.$refs.multipleTable.clearSelection()
},
getDic() {
@ -379,8 +463,17 @@ export default {
} else {
pageSize = this.form.CLASS_SIZE
}
requestFN('/classMessage/getPeopleList?showCount=' + pageSize + '&currentPage=1', { BELONG_TO_CORP: this.util.BELONG_TO_CORP }).then((data) => {
this.peopleList = data.varList
requestFN('/classMessage/getPeopleList?showCount=' + pageSize + '&currentPage=1', this.util).then((data) => {
const _peopleList = data.varList
if (data.varList && data.varList.length > 0) {
_peopleList.forEach((item) => {
const list = this.selectPeopleList.filter(ver => ver.USER_ID === item.USER_ID)
if (list && list.length > 0) {
item.isSelect = true
}
})
}
this.peopleList = _peopleList
this.loading = false
}).catch((e) => {
this.loading = false
@ -392,7 +485,12 @@ export default {
if (data.code === '0') {
this.form = data.pd
this.form.VALIDITY_PERIOD = [this.form.VALIDITY_PERIOD_START, this.form.VALIDITY_PERIOD_END]
this.peopleList = this.form.peopleList
this.selectPeopleList = this.form.peopleList
this.$refs.multipleTable.selection = this.form.peopleList
this.form.peopleList.forEach(row => {
this.$refs.multipleTable.toggleRowSelection(row)
})
this.getPeopleList()
} else {
this.$message.error('数据异常')
}
@ -401,82 +499,10 @@ export default {
this.loading = false
})
},
getExcel(id) {
const loading = this.$loading({
lock: true,
text: '加载中...',
spinner: 'el-icon-loading',
background: 'rgba(0, 0, 0, 0.7)'
})
axios.get(config.httpurl + '/classMessage/excel?CLASS_MESSAGE_ID=' + id, {
responseType: 'blob'
}).then(res => {
setTimeout(() => {
const blob = new Blob([res.data], { type: 'application/vnd.ms-excel' })
const downloadElement = document.createElement('a')
const href = window.URL.createObjectURL(blob)
downloadElement.style.display = 'none'
downloadElement.href = href
downloadElement.download = dayjs().format('YYYY-MM-DD HH:mm:ss')
document.body.appendChild(downloadElement)
downloadElement.click()
document.body.removeChild(downloadElement)
window.URL.revokeObjectURL(href)
this.$emit('getResult', '')
loading.close()
this.close()
}, 2000)
}).catch((e) => {
console.log(e)
loading.close()
this.$message.error('导出失败,或未查询到隐患')
})
},
changFlag(row, flag) {
row.STATUS = flag
requestFN('/classMessage/enterGrades', { CLASS_INFO_ID: row.CLASS_INFO_ID, STATUS: flag })
.then((data) => {
this.$message({
type: 'success',
message: '操作成功'
})
this.$emit('getResult', '')
}).catch((e) => {
})
},
graduation(id) {
this.$confirm('确定要结业吗, 结业后成绩将无法更改', '提示', {
confirmButtonText: '确定',
cancelButtonText: '取消',
type: 'warning'
}).then(() => {
requestFN('/classMessage/graduation', { CLASS_MESSAGE_ID: id })
.then((data) => {
this.$message({
type: 'success',
message: '操作成功'
})
this.visible = false
this.loading = false
this.close()
this.$emit('getResult', '')
}).catch((e) => {
this.loading = false
})
}).catch(() => {
this.$message({
type: 'info',
message: '已取操作'
})
})
},
getUserInfo(row) {
console.log(row)
this.$refs.userInfo.init(row)
},
getCertificate(CLASS_MESSAGE_ID) {
this.$refs.userPdf.init({ CLASS_MESSAGE_ID: CLASS_MESSAGE_ID })
},
changePeopleList() {
requestFN('/classMessage/getPeopleList?showCount=' + this.form.CLASS_SIZE + '&currentPage=1',
{ BELONG_TO_CORP: this.util.BELONG_TO_CORP }
@ -492,8 +518,52 @@ export default {
},
getShowPicture(row) {
return row.PHOTO && row.PHOTO !== ''
},
fullscreen() {
this.fullscreenFlag = !this.fullscreenFlag
},
addSelect(row) {
if (this.form.CLASS_SIZE === '' || !this.form.CLASS_SIZE) {
this.$message.error('请先选择班级容量')
this.$refs.multipleTable.clearSelection()
return
}
this.selectPeopleList.push(row)
this.$refs.multipleTable.toggleRowSelection(row)
},
clickAddSelect(row, column, event) {
if (!row.isSelect) {
this.addSelect(row)
}
},
deleteSelect(row) {
this.selectPeopleList = this.selectPeopleList.filter(ver => ver.USER_ID !== row.USER_ID)
this.form.peopleList = this.form.peopleList.filter(ver => ver.USER_ID !== row.USER_ID)
//
this.$refs.multipleTable.clearSelection()
this.lock = true
this.form.peopleList.forEach(row => {
this.$refs.multipleTable.toggleRowSelection(row)
})
this.getPeopleList()
this.lock = false
},
viewUserInfo(row) {
this.$refs.userInfos.init({ XGF_USER_ID: row.USER_ID })
}
}
}
</script>
<style lang="scss" scoped>
/* 设置默认高度-滚动条高度 */
.el-table__fixed {
height: calc(100% - 15px) !important;
}
/* 用于消除固定列下方的伪元素边框线 */
.el-table__fixed:before {
height: 0px;
}
</style>

View File

@ -71,12 +71,19 @@
{{ row.CLASS_STATUS === '0'?'待开班':(row.CLASS_STATUS === '1'?'已开班':'完成') }}
</template>
</el-table-column>
<el-table-column label="操作" align="center" width="400" fixed="right">
<el-table-column label="操作" align="center" width="360" fixed="right">
<template slot-scope="{row}">
<el-button type="primary" icon="el-icon-edit" size="mini" @click="handleEdit(row.CLASS_MESSAGE_ID)"></el-button>
<el-button v-show=" row.CLASS_STATUS === '0'" type="danger" icon="el-icon-delete" size="mini" @click="handleDelete(row.CLASS_MESSAGE_ID)"></el-button>
<el-button v-show=" row.CLASS_STATUS === '1'" type="primary" size="mini" @click="uploadExcel(row)"></el-button>
<el-button v-show=" row.CLASS_STATUS === '0'" type="primary" icon="el-icon-edit" size="mini" @click="changeName(row)"></el-button>
<el-row>
<el-col :span="24" style="margin-bottom: 10px">
<el-button type="primary" icon="el-icon-edit" size="mini" @click="handleEdit(row.CLASS_MESSAGE_ID)"></el-button>
<el-button v-if=" row.CLASS_STATUS === '0'" type="primary" icon="el-icon-edit" size="mini" @click="handleInit(row.CLASS_MESSAGE_ID)"></el-button>
<el-button v-if=" row.CLASS_STATUS === '0'" type="danger" icon="el-icon-delete" size="mini" @click="handleDelete(row.CLASS_MESSAGE_ID)"></el-button>
</el-col>
<el-col :span="24">
<el-button v-if=" row.CLASS_STATUS === '1'" type="primary" size="mini" @click="uploadExcel(row)"></el-button>
<el-button v-if=" row.CLASS_STATUS === '0'" type="primary" icon="el-icon-edit" size="mini" @click="changeName(row)"></el-button>
</el-col>
</el-row>
</template>
</el-table-column>
</el-table>
@ -193,6 +200,11 @@ export default {
this.isShow = true
this.$refs.edit.init({ CLASS_MESSAGE_ID: ID })
},
handleInit(ID) {
this.title = '详情'
this.isShow = false
this.$refs.initClass.init({ CLASS_MESSAGE_ID: ID })
},
handleDelete(id) {
this.$confirm('确定要删除吗?', {
confirmButtonText: '确定',

View File

@ -0,0 +1,128 @@
<template>
<div class="app-container">
<div class="filter-container">
<div class="filter-group ">
<div class="filter-lable" style="width: 60px">
公司名称
</div>
<div class="filter-width">
<el-input v-model="KEYWORDS" placeholder="公司名称" class="filter-item" style="width: 150px;"/>
</div>
</div>
<el-button v-waves class="filter-item" type="primary" icon="el-icon-search" @click="getQuery">
搜索
</el-button>
<el-button v-waves class="filter-item" type="success" icon="el-icon-refresh" @click="goKeyReset">
重置
</el-button>
</div>
<el-table
v-loading="listLoading"
ref="multipleTable"
:data="varList"
:header-cell-style="{
'font-weight': 'bold',
'color': '#000'
}"
tooltip-effect="dark"
border
fit
highlight-current-row
>
<el-table-column type="index" label="序号" width="50" align="center" />
<el-table-column prop="CORP_NAME" label="公司名称" />
<el-table-column prop="checkedCount" label="申请总数" align="center" >
<template slot-scope="{row}">
<span :style="row.applications_num > 0 ? {color:'#0c60e1',cursor: 'pointer'} : {color: '#606266'}" @click="goList('Blindboard',row.CORPINFO_ID,'1')">{{ row.applications_num }}</span>
</template>
</el-table-column>
<el-table-column prop="checkedItemCount" label="完成数" align="center" >
<template slot-scope="{row}">
<span :style="row.completions_num > 0 ? {color:'#0c60e1',cursor: 'pointer'} : {color: '#606266'}" @click="goList('Blindboard',row.CORPINFO_ID,'2')">{{ row.completions_num }}</span>
</template>
</el-table-column>
<el-table-column prop="ybCount" label="废除数" align="center" >
<template slot-scope="{row}">
<span :style="row.abolishments_num > 0 ? {color:'#0c60e1',cursor: 'pointer'} : {color: '#606266'}" @click="goList('Blindboard',row.CORPINFO_ID, '3')">{{ row.abolishments_num }}</span>
</template>
</el-table-column>
<el-table-column prop="zdCount" label="进行数" align="center" >
<template slot-scope="{row}">
<span :style="row.operations_num > 0 ? {color:'#0c60e1',cursor: 'pointer'} : {color: '#606266'}" @click="goList('Blindboard',row.CORPINFO_ID, '4')">{{ row.operations_num }}</span>
</template>
</el-table-column>
</el-table>
<div class="page-btn-group">
<div/>
<pagination :total="total" :page.sync="listQuery.page" :limit.sync="listQuery.limit" @pagination="getList" />
</div>
</div>
</template>
<script>
import Pagination from '@/components/Pagination' // el-pagination
import { requestFN } from '@/utils/request'
import waves from '@/directive/waves' // waves directive
import SelectTree from '@/components/SelectTree'
export default {
components: { Pagination, SelectTree },
directives: { waves },
data() {
return {
USER_LEVEL: sessionStorage.getItem('user').LEVEL || -1,
config: config,
listLoading: true,
add: false,
del: false,
edit: false,
listQuery: {
page: 1,
limit: 20
},
total: 0,
KEYWORDS: '',
varList: [],
pd: []
}
},
async created() {
await this.getList()
},
methods: {
getQuery() {
this.getList()
},
goKeyReset() {
this.KEYWORDS = ''
this.getList()
},
// ,
goList(tableName, CORPINFO_ID, ticketType) {
this.$parent.activeName = tableName
this.$parent.CORPINFO_ID = CORPINFO_ID
this.$parent.ticketType = ticketType
this.$parent.CUTROAD_ID =''
},
getList() {
return new Promise((resolve) => {
this.listLoading = true
requestFN(
'/dangerousWork/gfBlindBoard/corpCountlist?showCount=' + this.listQuery.limit + '&currentPage=' + this.listQuery.page,
{
COPRINF_ID: sessionStorage.getItem('user').CORPINFO_ID || '',
KEYWORDS: this.KEYWORDS
}
).then((data) => {
this.listLoading = false
this.varList = data.varList
this.total = data.page.totalResult
resolve()
}).catch((e) => {
this.listLoading = false
})
})
}
}
}
</script>

View File

@ -0,0 +1,265 @@
<template>
<div>
<div id="printTest" class="app-container print-work">
<el-page-header content="审批表详情" class="no-print" @back="goBack"/>
<table class="table-ui">
<thead>
<tr>
<td colspan="8" style="border: none">
<div class="level-title mt-20">
<h1>盲板抽堵安全作业票</h1>
<div class="level-code">编号:{{ pd.CHECK_NO }}</div>
</div>
</td>
</tr>
</thead>
<tr>
<td class="bbg">申请单位</td>
<td colspan="2">{{ pd.APPLY_DEPARTMENT_NAME }}</td>
<td class="bbg">作业单位</td>
<td colspan="2">{{ pd.CONSTRUCTION_DEPARTMENT_NAME }}</td>
<td class="bbg">作业类别</td>
<td>
<input :checked="pd.WORK_TYPE=='1'" type="checkbox" disabled>堵盲板
<input :checked="pd.WORK_TYPE=='2'" type="checkbox" disabled>抽盲板
</td>
</tr>
<tr>
<td rowspan="2" class="bbg">设备管道名称</td>
<td colspan="3" class="bbg">管道参数</td>
<td colspan="3" class="bbg">盲板参数</td>
<td rowspan="2" class="bbg">实际作业开始时间</td>
</tr>
<tr>
<td class="bbg">介质</td>
<td class="bbg">温度</td>
<td class="bbg">压力</td>
<td class="bbg">材质</td>
<td class="bbg">规格</td>
<td class="bbg">编号</td>
</tr>
<tr v-for="(item,index) in boardList" :key="index">
<td v-if="index == 0" :rowspan="boardList.length">{{ pd.NAME }}</td>
<td v-if="index == 0" :rowspan="boardList.length">{{ pd.MEDIUM }}</td>
<td v-if="index == 0" :rowspan="boardList.length">{{ pd.TEMPERATURE }}</td>
<td v-if="index == 0" :rowspan="boardList.length">{{ pd.PRESSURE }}</td>
<td>{{ item.BOARD_MATERIAL }}</td>
<td>{{ item.BOARD_SPECIFICATION }}</td>
<td>{{ item.BOARD_NO }}</td>
<td v-if="index == 0" :rowspan="boardList.length">{{ pd.BOARD_INSTALL_TIME }}</td>
</tr>
<tr>
<td colspan="8">
<div>盲板位置图可另附图及编号</div>
<div style="display: flex;justify-content: space-between;margin-top: 20px;">
<img v-viewer :src="config.fileUrl + pd.BOARD_PATH" alt="" width="100" height="100">
<div>
编制人
<img v-viewer :src="config.fileUrl + pd.APPLY_USER_SIGNER_PATH" alt="" width="100" height="100">
{{ pd.APPLY_USER_SIGNER_TIME }}
</div>
</div>
</td>
</tr>
<tr>
<td colspan="2" class="bbg">作业负责人</td>
<td colspan="2">{{ pd.CONSTRUCTION_USER_NAME }}</td>
<td class="bbg">作业人</td>
<td>{{ pd.WORK_USER }}</td>
<td class="bbg">监护人</td>
<td v-if="pd.GUARDIAN_USER_SIGNER_PATH" colspan="5">
<div style="text-align: right">
<span>签字</span>
<img v-viewer :src="config.fileUrl + pd.GUARDIAN_USER_SIGNER_PATH" alt="" width="100" height="100">
<span>{{ pd.GUARDIAN_USER_SIGNER_TIME }}</span>
</div>
</td>
</tr>
<tr>
<td colspan="2" class="bbg">关联的其他特殊作业及安全作业票编号</td>
<td colspan="6">{{ pd.SPECIAL_WORK }}</td>
</tr>
<tr>
<td colspan="2" class="bbg">风险辨识结果</td>
<td colspan="6">{{ pd.BOARD_HARM }}</td>
</tr>
<tr>
<td colspan="8">
<table class="table-ui">
<tr>
<td>序号</td>
<td>安全措施</td>
<td>是否涉及</td>
<td>确认人</td>
</tr>
<tr v-for="(item,index) in measuresList" :key="index">
<td>{{ index + 1 }}</td>
<td>{{ item.PROTECTIVE_MEASURES }}</td>
<td>
<span v-if="item.STATUS=='1'"><input type="radio" disabled checked>&nbsp;&nbsp;&nbsp;</span>
<span v-if="item.STATUS=='-1'"><input type="radio" disabled checked>不涉及</span>
</td>
<td>
{{ item.CONFIRM_NAME }}
</td>
</tr>
<tr v-if="pd.APPLY_USER_MEASURES || pd.CONSTRUCTION_USER_MEASURES || pd.LEADER_USER_MEASURES">
<td>{{ measuresList.length + 1 }}</td>
<td colspan="3">
<div v-if="pd.APPLY_USER_MEASURES" style="display: flex;justify-content: space-between;">
<span>其他安全措施{{ pd.APPLY_USER_MEASURES }}</span>
<span>编制人{{ pd.APPLY_USER_NAME }}</span>
</div>
<div v-if="pd.CONSTRUCTION_USER_MEASURES" style="display: flex;justify-content: space-between;margin-top: 10px;">
<span>其他安全措施{{ pd.CONSTRUCTION_USER_MEASURES }}</span>
<span>编制人{{ pd.CONSTRUCTION_USER_NAME }}</span>
</div>
<div v-if="pd.LEADER_USER_MEASURES" style="display: flex;justify-content: space-between;margin-top: 10px;">
<span>其他安全措施{{ pd.LEADER_USER_MEASURES }}</span>
<span>编制人{{ pd.LEADER_USER_NAME }}</span>
</div>
</td>
</tr>
</table>
</td>
</tr>
<tr>
<td class="bbg">安全交底人</td>
<td colspan="10">
<div v-if="pd.CONFESS_USER_SIGNER_PATH" style="text-align: right">
<span>签字</span>
<img v-viewer :src="config.fileUrl + pd.CONFESS_USER_SIGNER_PATH" alt="" width="100" height="100">
<span>{{ pd.CONFESS_USER_SIGNER_TIME }}</span>
</div>
</td>
</tr>
<tr>
<td class="bbg">接受交底人</td>
<td colspan="10">
<div v-for="item in imgList" :key="item.ACCEPT_CONFESS_ID" style="text-align: right">
<span>签字</span>
<img v-viewer :src="config.fileUrl + item.ACCEPT_CONFESS_USER_SIGNER_PATH" alt="" width="100" height="100">
<span>{{ item.ACCEPT_CONFESS_USER_SIGNER_TIME }}</span>
</div>
</td>
</tr>
<tr v-if="pd.CONSTRUCTION_USER_SIGNER_PATH">
<td colspan="8">
<div>作业负责人意见{{ pd.CONSTRUCTION_CONTENT }}</div>
<div style="text-align: right">
<span>签字</span>
<img v-viewer :src="config.fileUrl + pd.CONSTRUCTION_USER_SIGNER_PATH" alt="" width="100" height="100">
<span>{{ pd.CONSTRUCTION_USER_SIGNER_TIME }}</span>
</div>
</td>
</tr>
<tr v-if="pd.LEADER_USER_SIGNER_PATH">
<td colspan="8">
<div>所在单位意见{{ pd.LEADER_CONTENT }}</div>
<div style="text-align: right">
<span>签字</span>
<img v-viewer :src="config.fileUrl + pd.LEADER_USER_SIGNER_PATH" alt="" width="100" height="100">
<span>{{ pd.LEADER_USER_SIGNER_TIME }}</span>
</div>
</td>
</tr>
<tr v-if="imgList1.length>0">
<td colspan="10">
<div>完工验收{{ pd.ACCEPT_CONTENT }}</div>
<div v-for="item in imgList1" :key="item.ACCEPT_CONFESS_ID" style="text-align: right">
<span>签字</span>
<img v-viewer :src="config.fileUrl + item.ACCEPT_USER_SIGNER_PATH" alt="" width="100" height="100">
<span>{{ item.ACCEPT_USER_SIGNER_TIME }}</span>
</div>
</td>
</tr>
</table>
</div>
<div style="padding-top: 100px"/>
<div class="ui-foot">
<el-button icon="el-icon-arrow-left" @click="goBack"> </el-button>
</div>
</div>
</template>
<script>
import { requestFN } from '@/utils/request'
import dateformat from '@/utils/dateformat'
export default {
data() {
return {
config: config,
BLINDBOARD_ID: this.$parent.BLINDBOARD_ID, // ID
pd: [], //
boardList: [],
imgList: [],
imgList1: [],
measuresList: []
}
},
created() {
this.getData()
},
methods: {
formatTime(date, column) {
if (date) {
return dateformat(date, 'YYYY年MM月DD日HH时mm分')
} else {
return ''
}
},
formatDate(date, column) {
if (date) {
return dateformat(date, 'YYYY-MM-DD')
} else {
return ''
}
},
getRowKey(row) {
return row.BLINDBOARD_ID
},
getData() {
this.listLoading = true
requestFN(
'/dangerousWork/gfBlindBoard/goEdit',
{
BLINDBOARD_ID: this.BLINDBOARD_ID
}
).then((data) => {
this.listLoading = false
this.pd = data.pd // map
this.imgList = data.imgList
this.imgList1 = data.imgList1
this.boardList = data.boardList // map
this.measuresList = data.measuresList // map
this.pd.APPLY_USER_MEASURES = this.pd.OTHER_PROTECTIVE_MEASURES.split(';_;')[0]
this.pd.CONSTRUCTION_USER_MEASURES = this.pd.OTHER_PROTECTIVE_MEASURES.split(';_;')[1]
this.pd.LEADER_USER_MEASURES = this.pd.OTHER_PROTECTIVE_MEASURES.split(';_;')[2]
}).catch((e) => {
this.listLoading = false
})
},
goBack() {
this.$parent.activeName = 'Blindboard'
}
}
}
</script>
<style lang="sass" scoped>
.print-approval-p10
padding: 20px 0
span
vertical-align: middle
.print-approval-img
width: 200px
height: 97px
display: inline-block
img
width: 100%
height: 100%
.level-code
margin-left: auto
</style>

View File

@ -0,0 +1,321 @@
<template>
<div class="app-container">
<el-form label-width="50px">
<el-row>
<el-col :span="4">
<el-form-item label="编号">
<el-input v-model="KEYWORDS" placeholder="请输入编号"/>
</el-form-item>
</el-col>
<el-col :span="4">
<el-form-item label="状态">
<el-select v-model="STATUS" clearable placeholder="请选择" style="width: 100%;">
<el-option v-for="item in statusList" :key="item.ID" :label="item.NAME" :value="item.ID" />
</el-select>
</el-form-item>
</el-col>
<el-col :span="4">
<el-form-item label-width="10px">
<el-button v-waves class="filter-item" type="primary" icon="el-icon-search" @click="getQuery">
搜索
</el-button>
<el-button v-waves icon="el-icon-refresh" type="success" @click="goKeyReset">
重置
</el-button>
</el-form-item>
</el-col>
</el-row>
</el-form>
<el-table v-loading="listLoading" ref="multipleTable" :data="varList" :row-key="getRowKey" :header-cell-style="{'font-weight': 'bold','color': '#000'}" tooltip-effect="dark" border fit highlight-current-row>
<el-table-column :reserve-selection="true" type="selection" width="55" align="center" />
<el-table-column type="index" label="序号" width="50" align="center" />
<el-table-column prop="NAME" label="设备管道名称" show-overflow-tooltip />
<el-table-column prop="CHECK_NO" label="编号" show-overflow-tooltip />
<el-table-column prop="APPLY_USER_NAME" label="申请人" width="100" />
<el-table-column prop="APPLY_DEPARTMENT_NAME" label="申请部门" />
<el-table-column prop="CONSTRUCTION_USER_NAME" label="作业负责人" show-overflow-tooltip >
<template slot-scope="{row}">
{{ row.CONSTRUCTION_USER_NAME }}
</template>
</el-table-column>
<el-table-column prop="LEADER_USER_NAME" label="所在单位负责人" show-overflow-tooltip >
<template slot-scope="{row}">
{{ row.LEADER_USER_NAME }}
</template>
</el-table-column>
<el-table-column prop="ACCEPT_USER_NAME" label="验收部门负责人" show-overflow-tooltip >
<template slot-scope="{row}">
{{ row.ACCEPT_USER_NAME }}
</template>
</el-table-column>
<el-table-column prop="STATUS" label="审核状态">
<template slot-scope="{row}">
<span v-if="row.APPLY_STATUS==0"></span>
<span v-else-if="row.APPLY_STATUS==1">作业负责人待审核</span>
<span v-else-if="row.APPLY_STATUS==4">所在单位待审核</span>
<span v-else-if="row.APPLY_STATUS==5">待验收</span>
<span v-else-if="row.APPLY_STATUS==6">验收归档</span>
<span v-else-if="row.APPLY_STATUS==-2">作业负责人审核打回</span>
<span v-else-if="row.APPLY_STATUS==-5">所在单位审核打回</span>
<span v-else-if="row.APPLY_STATUS==-6">验收打回</span>
</template>
</el-table-column>
<el-table-column prop="ISDELETE" label="是否删除">
<template slot-scope="{row}">
<span v-if="row.ISDELETE==0"></span>
<span v-else-if="row.ISDELETE==1"></span>
</template>
</el-table-column>
<el-table-column label="操作" align="center" width="230">
<template slot-scope="{row}">
<el-button type="primary" icon="el-icon-plus" @click="goChart(row)"></el-button>
<el-button type="primary" icon="el-icon-document" size="mini" @click="goDetail(row.BLINDBOARD_ID)"></el-button>
</template>
</el-table-column>
</el-table>
<div class="page-btn-group">
<div>
<!-- <el-button v-show="add" type="primary" icon="el-icon-plus" @click="handleAdd"></el-button>-->
<!-- <el-button v-show="del" type="danger" icon="el-icon-delete" plain @click="batchDel"></el-button>-->
</div>
<pagination :total="total" :page.sync="listQuery.page" :limit.sync="listQuery.limit" @pagination="getList" />
</div>
<el-dialog :visible.sync="dialogFormShow " :title="dialogType==='add'?'查看流程图':'新增'" width="1200px">
<el-steps :active="getStatus()" :process-status="getProcessStatus()" align-center finish-status="success" >
<el-step title="盲板抽堵作业提交">
<template slot="description">
<div>{{ getProcessMessage().title }}</div>
<div>{{ getProcessMessage().USER_NAME }}</div>
<div>{{ getProcessMessage().OPERATTIME }}</div>
</template>
</el-step>
<el-step title="作业负责人意见">
<template slot="description">
<div>{{ pd.CONSTRUCTION_USER_NAME }}</div>
<div>{{ pd.CONSTRUCTION_USER_SIGNER_TIME }}</div>
</template>
</el-step>
<el-step description="" title="所在单位意见">
<template slot="description">
<div>{{ pd.LEADER_USER_NAME }}</div>
<div>{{ pd.LEADER_USER_SIGNER_TIME }}</div>
</template>
</el-step>
<el-step title="完成验收">
<template slot="description">
<div>{{ pd.ACCEPT_USER_NAME }}</div>
<div>{{ pd.ACCEPT_USER_SIGNER_TIME }}</div>
</template>
</el-step>
<el-step title="验收归档">
<template slot="description">
<div>{{ pd.ACCEPT_USER_NAME }}</div>
<div>{{ pd.ACCEPT_USER_SIGNER_TIME }}</div>
</template>
</el-step>
</el-steps>
<div style="margin: 60px 60px 0 60px;display: flex;justify-content: space-between">
<div v-if="pd.GUARDIAN_USER_SIGNER_TIME">
<div style="color: #13ce66">
监护人{{ pd.GUARDIAN_USER_NAME }}已签字
</div>
</div>
<div v-if="!pd.GUARDIAN_USER_SIGNER_TIME">
<div style="color: red">
监护人{{ pd.GUARDIAN_USER_NAME }}未签字
</div>
</div>
<div v-if="pd.CONFESS_USER_SIGNER_TIME">
<div style="color: #13ce66">
安全交底人{{ pd.CONFESS_USER_NAME }}已签字
</div>
</div>
<div v-if="!pd.CONFESS_USER_SIGNER_TIME">
<div style="color: red">
安全交底人{{ pd.CONFESS_USER_NAME }}未签字
</div>
</div>
<div v-if="pd.ACCEPT_CONFESS_USER_SIGNER_TIME">
<div style="color: #13ce66">
接受交底人{{ pd.ACCEPT_CONFESS_USER_NAME }}已签字
</div>
</div>
<div v-if="!pd.ACCEPT_CONFESS_USER_SIGNER_TIME">
<div style="color: red">
接受交底人{{ pd.ACCEPT_CONFESS_USER_NAME }}未签字
</div>
</div>
</div>
<div slot="footer" class="dialog-footer">
<!-- <el-button @click="dialogFormShow = false"> </el-button>-->
<el-button type="primary" @click="dialogFormShow = false"> </el-button>
</div>
</el-dialog>
<div style="height: 60px;"></div>
<div class="ui-foot">
<el-button type="primary" @click="goBack"> </el-button>
</div>
</div>
</template>
<script>
import Pagination from '@/components/Pagination' // el-pagination
import { requestFN } from '@/utils/request'
import waves from '@/directive/waves' // waves directive
export default {
components: { Pagination },
directives: { waves },
data() {
return {
listLoading: true,
add: false,
del: false,
edit: false,
listQuery: {
page: 1,
limit: 20
},
total: 0,
KEYWORDS: '',
varList: [],
pd: [],
multipleSelectionAll: [], //
multipleSelection: [], //
dialogFormShow: false,
dialogFormEdit: false,
dialogType: 'add',
replyVarList: [], // REPLY
replyListQuery: {
page: 1,
limit: 20
},
replyTotal: 0,
dialogFormHuifuShow: false,
statusList: [
{ ID: '', NAME: '请选择' },
{ ID: '0', NAME: '盲板抽堵作业待提交' },
{ ID: '1', NAME: '作业负责人待审核' },
{ ID: '4', NAME: '所在单位待审核' },
{ ID: '5', NAME: '待验收' },
{ ID: '6', NAME: '验收归档' },
{ ID: '-2', NAME: '作业负责人审核打回' },
{ ID: '-5', NAME: '所在单位审核打回' },
{ ID: '-6', NAME: '验收打回' }
],
STATUS: '',
DEPTIDS: ''
}
},
created() {
this.getList()
},
methods: {
getRowKey(row) {
return row.CUTROAD_ID
},
//
getQuery() {
this.$refs.multipleTable.clearSelection()
this.getList()
},
goKeyReset() {
this.KEYWORDS = ''
this.STATUS = ''
this.getQuery()
},
//
getList() {
this.listLoading = true
requestFN(
'/dangerousWork/gfBlindBoard/list?showCount=' + this.listQuery.limit + '&currentPage=' + this.listQuery.page,
{
KEYWORDS: this.KEYWORDS, APPLY_STATUS: this.STATUS,
DEPTIDS: this.DEPTIDS, tm: new Date().getTime(),
CORPINFO_ID: this.$parent.CORPINFO_ID,
ticketType: this.$parent.ticketType
}
).then((data) => {
this.listLoading = false
this.varList = data.varList
this.total = data.page.totalResult
}).catch((e) => {
this.listLoading = false
})
},
goChart(row) {
this.pd = row
this.dialogFormShow = true
},
getStatus() {
if (this.pd.APPLY_STATUS <= '0') {
return 0
}
if (this.pd.APPLY_STATUS == '1') {
return 1
}
if (this.pd.APPLY_STATUS == '4') {
return 2
}
if (this.pd.APPLY_STATUS == '5') {
return 3
}
if (this.pd.APPLY_STATUS == '6') {
return 5
}
},
getProcessStatus() {
if (this.pd.APPLY_STATUS < '0') {
return 'error'
} else {
return 'process'
}
},
getProcessMessage() {
let obj = {}
if (this.pd.APPLY_STATUS >= '0') {
obj = {
title: '',
USER_NAME: this.pd.APPLY_USER_NAME,
OPERATTIME: this.pd.CREATTIME
}
}
if (this.pd.APPLY_STATUS == '-2') {
obj = {
title: '作业负责人审核打回',
USER_NAME: this.pd.CONSTRUCTION_USER_NAME,
OPERATTIME: this.pd.OPERATTIME
}
}
if (this.pd.APPLY_STATUS == '-5') {
obj = {
title: '所在单位审核打回',
USER_NAME: this.pd.LEADER_USER_NAME,
OPERATTIME: this.pd.OPERATTIME
}
}
if (this.pd.APPLY_STATUS == '-6') {
obj = {
title: '验收打回',
AUSER_NAME: this.pd.ACCEPT_USER_NAME,
OPERATTIME: this.pd.OPERATTIME
}
}
return obj
},
getIsPase(col) {
if (!this.pd[col]) {
return '已跳过'
}
},
goDetail(id) {
this.$parent.activeName = 'Detail'
this.$parent.BLINDBOARD_ID = id
},
goBack(){
this.$parent.activeName = 'CorpInfo'
}
}
}
</script>

View File

@ -0,0 +1,23 @@
<template>
<div>
<CorpInfo v-show="activeName=='CorpInfo'" ref="list" />
<Blindboard v-if="activeName=='Blindboard'"/>
<Detail v-if="activeName=='Detail'"/>
</div>
</template>
<script>
import CorpInfo from './components/corpInfo'
import Blindboard from './components/list'
import Detail from './components/detail'
export default {
components: { CorpInfo, Blindboard,Detail },
data() {
return {
activeName: 'CorpInfo',
CORPINFO_ID: '',
ticketType: '',
BLINDBOARD_ID: ''
}
}
}
</script>

View File

@ -0,0 +1,128 @@
<template>
<div class="app-container">
<div class="filter-container">
<div class="filter-group ">
<div class="filter-lable" style="width: 60px">
公司名称
</div>
<div class="filter-width">
<el-input v-model="KEYWORDS" placeholder="公司名称" class="filter-item" style="width: 150px;"/>
</div>
</div>
<el-button v-waves class="filter-item" type="primary" icon="el-icon-search" @click="getQuery">
搜索
</el-button>
<el-button v-waves class="filter-item" type="success" icon="el-icon-refresh" @click="goKeyReset">
重置
</el-button>
</div>
<el-table
v-loading="listLoading"
ref="multipleTable"
:data="varList"
:header-cell-style="{
'font-weight': 'bold',
'color': '#000'
}"
tooltip-effect="dark"
border
fit
highlight-current-row
>
<el-table-column type="index" label="序号" width="50" align="center" />
<el-table-column prop="CORP_NAME" label="公司名称" />
<el-table-column prop="checkedCount" label="申请总数" align="center" >
<template slot-scope="{row}">
<span :style="row.applications_num > 0 ? {color:'#0c60e1',cursor: 'pointer'} : {color: '#606266'}" @click="goList('Breakground',row.CORPINFO_ID,'1')">{{ row.applications_num }}</span>
</template>
</el-table-column>
<el-table-column prop="checkedItemCount" label="完成数" align="center" >
<template slot-scope="{row}">
<span :style="row.completions_num > 0 ? {color:'#0c60e1',cursor: 'pointer'} : {color: '#606266'}" @click="goList('Breakground',row.CORPINFO_ID,'2')">{{ row.completions_num }}</span>
</template>
</el-table-column>
<el-table-column prop="ybCount" label="废除数" align="center" >
<template slot-scope="{row}">
<span :style="row.abolishments_num > 0 ? {color:'#0c60e1',cursor: 'pointer'} : {color: '#606266'}" @click="goList('Breakground',row.CORPINFO_ID, '3')">{{ row.abolishments_num }}</span>
</template>
</el-table-column>
<el-table-column prop="zdCount" label="进行数" align="center" >
<template slot-scope="{row}">
<span :style="row.operations_num > 0 ? {color:'#0c60e1',cursor: 'pointer'} : {color: '#606266'}" @click="goList('Breakground',row.CORPINFO_ID, '4')">{{ row.operations_num }}</span>
</template>
</el-table-column>
</el-table>
<div class="page-btn-group">
<div/>
<pagination :total="total" :page.sync="listQuery.page" :limit.sync="listQuery.limit" @pagination="getList" />
</div>
</div>
</template>
<script>
import Pagination from '@/components/Pagination' // el-pagination
import { requestFN } from '@/utils/request'
import waves from '@/directive/waves' // waves directive
import SelectTree from '@/components/SelectTree'
export default {
components: { Pagination, SelectTree },
directives: { waves },
data() {
return {
USER_LEVEL: sessionStorage.getItem('user').LEVEL || -1,
config: config,
listLoading: true,
add: false,
del: false,
edit: false,
listQuery: {
page: 1,
limit: 20
},
total: 0,
KEYWORDS: '',
varList: [],
pd: []
}
},
async created() {
await this.getList()
},
methods: {
getQuery() {
this.getList()
},
goKeyReset() {
this.KEYWORDS = ''
this.getList()
},
// ,
goList(tableName, CORPINFO_ID, ticketType) {
this.$parent.activeName = tableName
this.$parent.CORPINFO_ID = CORPINFO_ID
this.$parent.ticketType = ticketType
this.$parent.CUTROAD_ID =''
},
getList() {
return new Promise((resolve) => {
this.listLoading = true
requestFN(
'/gfBreakGround/corpCountlist?showCount=' + this.listQuery.limit + '&currentPage=' + this.listQuery.page,
{
COPRINF_ID: sessionStorage.getItem('user').CORPINFO_ID || '',
KEYWORDS: this.KEYWORDS
}
).then((data) => {
this.listLoading = false
this.varList = data.varList
this.total = data.page.totalResult
resolve()
}).catch((e) => {
this.listLoading = false
})
})
}
}
}
</script>

View File

@ -0,0 +1,283 @@
<template>
<div>
<div id="printTest" class="app-container print-work">
<el-page-header content="审批表详情" class="no-print" @back="goBack()"/>
<table class="table-ui">
<thead>
<tr>
<td colspan="6" style="border: none">
<div class="level-title mt-20">
<h1>动土安全作业票</h1>
<div class="level-code">编号:{{ pd.CHECK_NO }}</div>
</div>
</td>
</tr>
</thead>
<tr>
<td class="bbg">申请单位</td>
<td>{{ pd.APPLY_DEPARTMENT_NAME }}</td>
<td class="bbg" colspan="2">作业申请时间</td>
<td colspan="2">{{ pd.CREATTIME }}</td>
</tr>
<tr>
<td class="bbg">作业单位</td>
<td>{{ pd.CONSTRUCTION_DEPARTMENT_NAME }}</td>
<td class="bbg">作业地点</td>
<td>{{ pd.WORK_PLACE }}</td>
<td class="bbg">作业内容</td>
<td>{{ pd.JOB_CONTENT }}</td>
</tr>
<tr>
<td class="bbg">监护人</td>
<td>
<div v-if="pd.GUARDIAN_USER_SIGNER_PATH" style="text-align: right">
<span>签字</span>
<img v-viewer :src="config.fileUrl + pd.GUARDIAN_USER_SIGNER_PATH" alt="" width="100" height="100">
<span>{{ pd.GUARDIAN_USER_SIGNER_TIME }}</span>
</div>
</td>
<td class="bbg" colspan="2">作业负责人</td>
<td colspan="2">{{ pd.CONSTRUCTION_USER_NAME }}</td>
</tr>
<tr>
<td class="bbg">关联的其他特殊作业及安全作业票编号</td>
<td colspan="5">{{ pd.SPECIAL_WORK }}</td>
</tr>
<tr>
<td colspan="6">
<div>作业内容范围方式包括深度面积并附简图{{ pd.WORK_CONTENT }}</div>
<div style="display: flex;justify-content: space-between;margin-top: 20px;">
<img v-viewer :src="config.fileUrl + pd.CONTENT_IMG_PATH" alt="" width="100" height="100">
<div>
编制人
<img v-viewer :src="config.fileUrl + pd.APPLY_USER_SIGNER_PATH" alt="" width="100" height="100">
{{ pd.APPLY_USER_SIGNER_TIME }}
</div>
</div>
</td>
</tr>
<tr>
<td class="bbg">风险辨识结果</td>
<td colspan="5">{{ pd.HAZARD_IDENTIFICATION.split(";_;")[0] }}</td>
</tr>
<tr>
<td class="bbg">作业实施时间</td>
<td colspan="5">{{ pd.WORK_START_DATE }}{{ pd.WORK_END_DATE }}</td>
</tr>
<tr>
<td colspan="6">
<table class="table-ui">
<tr>
<td>序号</td>
<td>安全措施</td>
<td>是否涉及</td>
<td>确认人</td>
</tr>
<tr v-for="(item,index) in measuresList" :key="index">
<td>{{ index + 1 }}</td>
<td>{{ item.PROTECTIVE_MEASURES }}</td>
<td>
<span v-if="item.STATUS=='1'"><input type="radio" disabled checked>&nbsp;&nbsp;&nbsp;</span>
<span v-if="item.STATUS=='-1'"><input type="radio" disabled checked>不涉及</span>
</td>
<td>
{{ item.CONFIRM_NAME }}
</td>
</tr>
<tr v-if="pd.APPLY_USER_MEASURES || pd.CONSTRUCTION_USER_MEASURES || pd.PRODUCTION_USER_MEASURES || pd.SAFETY_USER_MEASURES || pd.LEADER_USER_MEASURES">
<td>{{ measuresList.length + 1 }}</td>
<td colspan="3">
<div v-if="pd.APPLY_USER_MEASURES" style="display: flex;justify-content: space-between;">
<span>其他安全措施{{ pd.APPLY_USER_MEASURES }}</span>
<span>编制人{{ pd.APPLY_USER_NAME }}</span>
</div>
<div v-if="pd.CONSTRUCTION_USER_MEASURES" style="display: flex;justify-content: space-between;margin-top: 10px;">
<span>其他安全措施{{ pd.CONSTRUCTION_USER_MEASURES }}</span>
<span>编制人{{ pd.CONSTRUCTION_USER_NAME }}</span>
</div>
<div v-if="pd.PRODUCTION_USER_ID && pd.PRODUCTION_USER_MEASURES" style="display: flex;justify-content: space-between;margin-top: 10px;">
<span>其他安全措施{{ pd.PRODUCTION_USER_MEASURES }}</span>
<span>编制人{{ pd.PRODUCTION_USER_NAME }}</span>
</div>
<div v-if="pd.SAFETY_USER_ID && pd.SAFETY_USER_MEASURES" style="display: flex;justify-content: space-between;margin-top: 10px;">
<span>其他安全措施{{ pd.SAFETY_USER_MEASURES }}</span>
<span>编制人{{ pd.SAFETY_USER_NAME }}</span>
</div>
<div v-if="pd.LEADER_USER_ID && pd.LEADER_USER_MEASURES" style="display: flex;justify-content: space-between;margin-top: 10px;">
<span>其他安全措施{{ pd.LEADER_USER_MEASURES }}</span>
<span>编制人{{ pd.LEADER_USER_NAME }}</span>
</div>
</td>
</tr>
</table>
</td>
</tr>
<tr>
<td class="bbg">安全交底人</td>
<td colspan="10">
<div v-if="pd.CONFESS_USER_SIGNER_PATH" style="text-align: right">
<span>签字</span>
<img v-viewer :src="config.fileUrl + pd.CONFESS_USER_SIGNER_PATH" alt="" width="100" height="100">
<span>{{ pd.CONFESS_USER_SIGNER_TIME }}</span>
</div>
</td>
</tr>
<tr>
<td class="bbg">接受交底人</td>
<td colspan="10">
<div v-for="item in imgList" :key="item.ACCEPT_CONFESS_ID" style="text-align: right">
<span>签字</span>
<img v-viewer :src="config.fileUrl + item.ACCEPT_CONFESS_USER_SIGNER_PATH" alt="" width="100" height="100">
<span>{{ item.ACCEPT_CONFESS_USER_SIGNER_TIME }}</span>
</div>
</td>
</tr>
<tr v-if="pd.CONSTRUCTION_USER_SIGNER_PATH">
<td colspan="6">
<div>作业负责人意见{{ pd.CONSTRUCTION_CONTENT }}</div>
<div style="text-align: right">
<span>签字</span>
<img v-viewer :src="config.fileUrl + pd.CONSTRUCTION_USER_SIGNER_PATH" alt="" width="100" height="100">
<span>{{ pd.CONSTRUCTION_USER_SIGNER_TIME }}</span>
</div>
</td>
</tr>
<tr v-if="pd.PRODUCTION_USER_SIGNER_PATH">
<td colspan="6">
<div>所在单位意见{{ pd.PRODUCTION_CONTENT }}</div>
<div style="text-align: right">
<span>签字</span>
<img v-viewer :src="config.fileUrl + pd.PRODUCTION_USER_SIGNER_PATH" alt="" width="100" height="100">
<span>{{ pd.PRODUCTION_USER_SIGNER_TIME }}</span>
</div>
</td>
</tr>
<tr v-if="pd.SAFETY_USER_SIGNER_PATH">
<td colspan="6">
<div>有关水工艺设备消防安全等部门会签意见{{ pd.SAFETY_CONTENT }}</div>
<div style="text-align: right">
<span>签字</span>
<img v-viewer :src="config.fileUrl + pd.SAFETY_USER_SIGNER_PATH" alt="" width="100" height="100">
<span>{{ pd.SAFETY_USER_SIGNER_TIME }}</span>
</div>
</td>
</tr>
<tr v-if="pd.LEADER_USER_SIGNER_PATH">
<td colspan="6">
<div>审批部门意见{{ pd.LEADER_CONTENT }}</div>
<div style="text-align: right">
<span>签字</span>
<img v-viewer :src="config.fileUrl + pd.LEADER_USER_SIGNER_PATH" alt="" width="100" height="100">
<span>{{ pd.LEADER_USER_SIGNER_TIME }}</span>
</div>
</td>
</tr>
<tr v-if="imgList1.length>0">
<td colspan="10">
<div>完工验收{{ pd.ACCEPT_CONTENT }}</div>
<div v-for="item in imgList1" :key="item.ACCEPT_CONFESS_ID" style="text-align: right">
<span>签字</span>
<img v-viewer :src="config.fileUrl + item.ACCEPT_USER_SIGNER_PATH" alt="" width="100" height="100">
<span>{{ item.ACCEPT_USER_SIGNER_TIME }}</span>
</div>
</td>
</tr>
</table>
</div>
<div style="padding-top: 100px"/>
<div class="ui-foot">
<el-button icon="el-icon-arrow-left" @click="goBack()"> </el-button>
</div>
</div>
</template>
<script>
import { requestFN } from '@/utils/request'
import dateformat from '@/utils/dateformat'
export default {
data() {
return {
config: config,
BREAKGROUND_ID: this.$parent.BREAKGROUND_ID, // ID
pd: [], //
measuresList: [],
imgList: [],
imgList1: [],
otherProtectiveMeasures: [],
hazardIdentification: []
}
},
created() {
console.info()
this.getData()
},
methods: {
validStr(str) {
if (str != null && str != '' && typeof (str) != 'undefined' && str != 0) { return true }
return false
},
formatTime(date, column) {
if (date) {
return dateformat(date, 'YYYY年MM月DD日HH时mm分')
} else {
return ''
}
},
formatDate(date, column) {
if (date) {
return dateformat(date, 'YYYY-MM-DD')
} else {
return ''
}
},
getRowKey(row) {
return row.BREAKGROUND_ID
},
getData() {
this.listLoading = true
requestFN(
'/gfBreakGround/goEdit',
{
BREAKGROUND_ID: this.BREAKGROUND_ID
}
).then((data) => {
this.listLoading = false
this.pd = data.pd // map
this.imgList = data.imgList
this.imgList1 = data.imgList1
this.measuresList = data.measuresList // map
this.pd.APPLY_USER_MEASURES = this.pd.OTHER_PROTECTIVE_MEASURES.split(';_;')[0]
this.pd.CONSTRUCTION_USER_MEASURES = this.pd.OTHER_PROTECTIVE_MEASURES.split(';_;')[1]
this.pd.PRODUCTION_USER_MEASURES = this.pd.OTHER_PROTECTIVE_MEASURES.split(';_;')[2]
this.pd.SAFETY_USER_MEASURES = this.pd.OTHER_PROTECTIVE_MEASURES.split(';_;')[3]
this.pd.LEADER_USER_MEASURES = this.pd.OTHER_PROTECTIVE_MEASURES.split(';_;')[4]
}).catch((e) => {
this.listLoading = false
})
},
goBack() {
this.$parent.activeName = 'Breakground'
}
}
}
</script>
<style lang="sass" scoped>
.print-approval-p10
padding: 20px 0
span
vertical-align: middle
.bbg
width: 270px
.print-approval-img
width: 200px
height: 97px
display: inline-block
img
width: 100%
height: 100%
.level-code
margin-left: auto
</style>

View File

@ -0,0 +1,371 @@
<template>
<div class="app-container">
<el-form label-width="50px">
<el-row>
<el-col :span="4">
<el-form-item label="编号">
<el-input v-model="KEYWORDS" placeholder="请输入编号"/>
</el-form-item>
</el-col>
<el-col :span="4">
<el-form-item label="状态">
<el-select v-model="STATUS" clearable placeholder="请选择" style="width: 100%;">
<el-option v-for="item in statusList" :key="item.ID" :label="item.NAME" :value="item.ID" />
</el-select>
</el-form-item>
</el-col>
<el-col :span="4">
<el-form-item label-width="10px">
<el-button v-waves class="filter-item" type="primary" icon="el-icon-search" @click="getQuery">
搜索
</el-button>
<el-button v-waves icon="el-icon-refresh" type="success" @click="goKeyReset">
重置
</el-button>
</el-form-item>
</el-col>
</el-row>
</el-form>
<el-table v-loading="listLoading" ref="multipleTable" :data="varList" :row-key="getRowKey" :header-cell-style="{'font-weight': 'bold','color': '#000'}" tooltip-effect="dark" border fit highlight-current-row>
<el-table-column :reserve-selection="true" type="selection" width="57" align="center" />
<el-table-column type="index" label="序号222" width="50" align="center" />
<el-table-column prop="CHECK_NO" label="编号" show-overflow-tooltip />
<el-table-column prop="CONSTRUCTION_DEPARTMENT_NAME" label="施工单位" />
<el-table-column prop="APPLY_USER_NAME" label="申请人" width="100" />
<el-table-column prop="APPLY_DEPARTMENT_NAME" label="申请部门" />
<el-table-column prop="CONSTRUCTION_USER_NAME" label="作业负责人" show-overflow-tooltip />
<el-table-column prop="PRODUCTION_USER_NAME" label="所在单位负责人" show-overflow-tooltip >
<template slot-scope="{row}">
{{ row.PRODUCTION_USER_NAME || ' 已跳过' }}
</template>
</el-table-column>
<el-table-column prop="SAFETY_USER_NAME" label="有关部门负责人" show-overflow-tooltip >
<template slot-scope="{row}">
{{ row.SAFETY_USER_NAME || ' 已跳过' }}
</template>
</el-table-column>
<el-table-column prop="LEADER_USER_NAME" label="审批部门负责人" show-overflow-tooltip >
<template slot-scope="{row}">
{{ row.LEADER_USER_NAME || ' 已跳过' }}
</template>
</el-table-column>
<el-table-column prop="ACCEPT_USER_NAME" label="验收部门负责人" show-overflow-tooltip />
<el-table-column prop="STATUS" label="审核状态">
<template slot-scope="{row}">
<span v-if="row.APPLY_STATUS==0"></span>
<span v-else-if="row.APPLY_STATUS==1">作业负责人待审核</span>
<span v-else-if="row.APPLY_STATUS==2">所在单位待审核</span>
<span v-else-if="row.APPLY_STATUS==3">有关部门待审核</span>
<span v-else-if="row.APPLY_STATUS==4">审批部门待审核</span>
<span v-else-if="row.APPLY_STATUS==5">待验收</span>
<span v-else-if="row.APPLY_STATUS==6">验收归档</span>
<span v-else-if="row.APPLY_STATUS==-2">作业负责人审核打回</span>
<span v-else-if="row.APPLY_STATUS==-3">所在单位审核打回</span>
<span v-else-if="row.APPLY_STATUS==-4">有关部门审核打回</span>
<span v-else-if="row.APPLY_STATUS==-5">审批部门审核打回</span>
<span v-else-if="row.APPLY_STATUS==-6">验收打回</span>
</template>
</el-table-column>
<el-table-column prop="ISDELETE" label="是否删除">
<template slot-scope="{row}">
<span v-if="row.ISDELETE==0"></span>
<span v-else-if="row.ISDELETE==1"></span>
</template>
</el-table-column>
<el-table-column label="操作" align="center" width="230">
<template slot-scope="{row}">
<el-button type="primary" icon="el-icon-plus" @click="goChart(row)"></el-button>
<el-button type="primary" icon="el-icon-document" size="mini" @click="goDetail(row.BREAKGROUND_ID)"></el-button>
</template>
</el-table-column>
</el-table>
<div class="page-btn-group">
<div>
<!-- <el-button v-show="add" type="primary" icon="el-icon-plus" @click="handleAdd"></el-button>-->
<!-- <el-button v-show="del" type="danger" icon="el-icon-delete" plain @click="batchDel"></el-button>-->
</div>
<pagination :total="total" :page.sync="listQuery.page" :limit.sync="listQuery.limit" @pagination="getList" />
</div>
<el-dialog :visible.sync="dialogFormShow " :title="dialogType==='add'?'查看流程图':'新增'" width="1350px">
<el-steps :active="getStatus()" :process-status="getProcessStatus()" finish-status="success" align-center>
<el-step title="动土作业提交">
<template slot="description">
<div>{{ getProcessMessage().title }}</div>
<div>{{ getProcessMessage().USER_NAME }}</div>
<div>{{ getProcessMessage().OPERATTIME }}</div>
</template>
</el-step>
<el-step title="作业负责人意见" >
<template slot="description">
<div>{{ pd.CONSTRUCTION_USER_NAME }}</div>
<div>{{ pd.CONSTRUCTION_USER_SIGNER_TIME }}</div>
</template>
</el-step>
<el-step title="所在单位意见">
<template slot="description">
<div v-if="getIsPase('PRODUCTION_USER_NAME')">{{ '' }}</div>
<div v-else>{{ pd.PRODUCTION_USER_NAME }}</div>
<div>{{ pd.PRODUCTION_USER_SIGNER_TIME }}</div>
</template>
</el-step>
<el-step title="有关部门意见" >
<template slot="description">
<div v-if="getIsPase('SAFETY_USER_NAME')">{{ '' }}</div>
<div v-else>{{ pd.SAFETY_USER_NAME }}</div>
<div>{{ pd.SAFETY_USER_SIGNER_TIME }}</div>
</template>
</el-step>
<el-step title="审批部门意见" >
<template slot="description">
<div v-if="getIsPase('LEADER_USER_NAME')">{{ '' }}</div>
<div v-else>{{ pd.LEADER_USER_NAME }}</div>
<div>{{ pd.LEADER_USER_SIGNER_TIME }}</div>
</template>
</el-step>
<el-step title="完成验收">
<template slot="description">
<div>{{ pd.ACCEPT_USER_NAME }}</div>
<div>{{ pd.ACCEPT_USER_SIGNER_TIME }}</div>
</template>
</el-step>
<el-step title="验收归档">
<template slot="description">
<div>{{ pd.ACCEPT_USER_NAME }}</div>
<div>{{ pd.ACCEPT_USER_SIGNER_TIME }}</div>
</template>
</el-step>
</el-steps>
<div style="margin: 60px 60px 0 60px;display: flex;justify-content: space-between">
<div v-if="pd.GUARDIAN_USER_SIGNER_TIME">
<div style="color: #13ce66">
监护人{{ pd.GUARDIAN_USER_NAME }}已签字
</div>
</div>
<div v-if="!pd.GUARDIAN_USER_SIGNER_TIME">
<div style="color: red">
监护人{{ pd.GUARDIAN_USER_NAME }}未签字
</div>
</div>
<div v-if="pd.CONFESS_USER_SIGNER_TIME">
<div style="color: #13ce66">
安全交底人{{ pd.CONFESS_USER_NAME }}已签字
</div>
</div>
<div v-if="!pd.CONFESS_USER_SIGNER_TIME">
<div style="color: red">
安全交底人{{ pd.CONFESS_USER_NAME }}未签字
</div>
</div>
<div v-if="pd.ACCEPT_CONFESS_USER_SIGNER_TIME">
<div style="color: #13ce66">
接受交底人{{ pd.ACCEPT_CONFESS_USER_NAME }}已签字
</div>
</div>
<div v-if="!pd.ACCEPT_CONFESS_USER_SIGNER_TIME">
<div style="color: red">
接受交底人{{ pd.ACCEPT_CONFESS_USER_NAME }}未签字
</div>
</div>
</div>
<div slot="footer" class="dialog-footer">
<!-- <el-button @click="dialogFormShow = false"> </el-button>-->
<el-button type="primary" @click="dialogFormShow = false"> </el-button>
</div>
</el-dialog>
<div style="height: 60px;"></div>
<div class="ui-foot">
<el-button type="primary" @click="goBack"> </el-button>
</div>
</div>
</template>
<script>
import Pagination from '@/components/Pagination' // el-pagination
import { requestFN } from '@/utils/request'
import waves from '@/directive/waves' // waves directive
export default {
components: { Pagination },
directives: { waves },
data() {
return {
listLoading: true,
add: false,
del: false,
edit: false,
listQuery: {
page: 1,
limit: 20
},
total: 0,
KEYWORDS: '',
varList: [],
pd: [],
multipleSelectionAll: [], //
multipleSelection: [], //
dialogFormShow: false,
dialogFormEdit: false,
dialogType: 'add',
replyVarList: [], // REPLY
replyListQuery: {
page: 1,
limit: 20
},
replyTotal: 0,
dialogFormHuifuShow: false,
statusList: [
{ ID: '', NAME: '请选择' },
{ ID: '0', NAME: '动土作业待提交' },
{ ID: '1', NAME: '作业负责人待审核' },
{ ID: '2', NAME: '所在单位待审核' },
{ ID: '3', NAME: '有关部门待审核' },
{ ID: '4', NAME: '审批部门待审核' },
{ ID: '5', NAME: '待验收' },
{ ID: '6', NAME: '验收归档' },
{ ID: '-2', NAME: '作业负责人审核打回' },
{ ID: '-3', NAME: '所在单位审核打回' },
{ ID: '-4', NAME: '有关部门审核打回' },
{ ID: '-5', NAME: '审批部门审核打回' },
{ ID: '-6', NAME: '验收打回' }
],
STATUS: '',
DEPTIDS: ''
}
},
created() {
this.getList()
},
methods: {
getRowKey(row) {
return row.CUTROAD_ID
},
//
getQuery() {
this.$refs.multipleTable.clearSelection()
this.getList()
},
goKeyReset() {
this.KEYWORDS = ''
this.STATUS = ''
this.getQuery()
},
//
getList() {
this.listLoading = true
requestFN(
'/gfBreakGround/list?showCount=' + this.listQuery.limit + '&currentPage=' + this.listQuery.page,
{
KEYWORDS: this.KEYWORDS, APPLY_STATUS: this.STATUS,
DEPTIDS: this.DEPTIDS, tm: new Date().getTime(),
CORPINFO_ID: this.$parent.CORPINFO_ID,
ticketType: this.$parent.ticketType
}
).then((data) => {
this.listLoading = false
this.varList = data.varList
this.total = data.page.totalResult
this.hasButton()
}).catch((e) => {
this.listLoading = false
})
},
goChart(row) {
this.pd = row
this.dialogFormShow = true
},
getStatus() {
if (this.pd.APPLY_STATUS <= '0') {
return 0
}
if (this.pd.APPLY_STATUS == '1') {
return 1
}
if (this.pd.APPLY_STATUS == '2') {
return 2
}
if (this.pd.APPLY_STATUS == '3') {
return 3
}
if (this.pd.APPLY_STATUS == '4') {
return 4
}
if (this.pd.APPLY_STATUS == '5') {
return 5
}
if (this.pd.APPLY_STATUS == '6') {
return 7
}
},
getProcessStatus() {
if (this.pd.APPLY_STATUS < '0') {
return 'error'
} else {
return 'process'
}
},
getProcessMessage() {
let obj = {}
if (this.pd.APPLY_STATUS >= '0') {
obj = {
title: '',
USER_NAME: this.pd.APPLY_USER_NAME,
OPERATTIME: this.pd.CREATTIME
}
}
if (this.pd.APPLY_STATUS == '-2') {
obj = {
title: '作业负责人审核打回',
USER_NAME: this.pd.CONSTRUCTION_USER_NAME,
OPERATTIME: this.pd.OPERATTIME
}
}
if (this.pd.APPLY_STATUS == '-3') {
obj = {
title: '所在单位审核打回',
USER_NAME: this.pd.PRODUCTION_USER_NAME,
OPERATTIME: this.pd.OPERATTIME
}
}
if (this.pd.APPLY_STATUS == '-4') {
obj = {
title: '有关部门审核打回',
USER_NAME: this.pd.SAFETY_USER_NAME,
OPERATTIME: this.pd.OPERATTIME
}
}
if (this.pd.APPLY_STATUS == '-5') {
obj = {
title: '审批部门审核打回',
USER_NAME: this.pd.LEADER_USER_NAME,
OPERATTIME: this.pd.OPERATTIME
}
}
if (this.pd.APPLY_STATUS == '-6') {
obj = {
title: '验收打回',
AUSER_NAME: this.pd.ACCEPT_USER_NAME,
OPERATTIME: this.pd.OPERATTIME
}
}
return obj
},
getIsPase(col) {
if (!this.pd[col]) {
return '已跳过'
}
},
goDetail(id) {
console.info('222222222222222222222 ')
console.info(id)
this.$parent.activeName = 'Detail'
this.$parent.BREAKGROUND_ID = id
},
goBack(){
this.$parent.activeName = 'CorpInfo'
this.$parent.BREAKGROUND_ID = ''
}
}
}
</script>

View File

@ -0,0 +1,23 @@
<template>
<div>
<CorpInfo v-show="activeName=='CorpInfo'" ref="list" />
<Breakground v-if="activeName=='Breakground'"/>
<Detail v-if="activeName=='Detail'"/>
</div>
</template>
<script>
import CorpInfo from './components/corpInfo'
import Breakground from './components/list'
import Detail from './components/detail'
export default {
components: { CorpInfo, Breakground,Detail },
data() {
return {
activeName: 'CorpInfo',
CORPINFO_ID: '',
ticketType: '',
BREAKGROUND_ID: ''
}
}
}
</script>

View File

@ -0,0 +1,128 @@
<template>
<div class="app-container">
<div class="filter-container">
<div class="filter-group ">
<div class="filter-lable" style="width: 60px">
公司名称
</div>
<div class="filter-width">
<el-input v-model="KEYWORDS" placeholder="公司名称" class="filter-item" style="width: 150px;"/>
</div>
</div>
<el-button v-waves class="filter-item" type="primary" icon="el-icon-search" @click="getQuery">
搜索
</el-button>
<el-button v-waves class="filter-item" type="success" icon="el-icon-refresh" @click="goKeyReset">
重置
</el-button>
</div>
<el-table
v-loading="listLoading"
ref="multipleTable"
:data="varList"
:header-cell-style="{
'font-weight': 'bold',
'color': '#000'
}"
tooltip-effect="dark"
border
fit
highlight-current-row
>
<el-table-column type="index" label="序号" width="50" align="center" />
<el-table-column prop="CORP_NAME" label="公司名称" />
<el-table-column prop="checkedCount" label="申请总数" align="center" >
<template slot-scope="{row}">
<span :style="row.applications_num > 0 ? {color:'#0c60e1',cursor: 'pointer'} : {color: '#606266'}" @click="goList('circuit_list',row.CORPINFO_ID,'1')">{{ row.applications_num }}</span>
</template>
</el-table-column>
<el-table-column prop="checkedItemCount" label="完成数" align="center" >
<template slot-scope="{row}">
<span :style="row.completions_num > 0 ? {color:'#0c60e1',cursor: 'pointer'} : {color: '#606266'}" @click="goList('circuit_list',row.CORPINFO_ID,'2')">{{ row.completions_num }}</span>
</template>
</el-table-column>
<el-table-column prop="ybCount" label="废除数" align="center" >
<template slot-scope="{row}">
<span :style="row.abolishments_num > 0 ? {color:'#0c60e1',cursor: 'pointer'} : {color: '#606266'}" @click="goList('circuit_list',row.CORPINFO_ID, '3')">{{ row.abolishments_num }}</span>
</template>
</el-table-column>
<el-table-column prop="zdCount" label="进行数" align="center" >
<template slot-scope="{row}">
<span :style="row.operations_num > 0 ? {color:'#0c60e1',cursor: 'pointer'} : {color: '#606266'}" @click="goList('circuit_list',row.CORPINFO_ID, '4')">{{ row.operations_num }}</span>
</template>
</el-table-column>
</el-table>
<div class="page-btn-group">
<div/>
<pagination :total="total" :page.sync="listQuery.page" :limit.sync="listQuery.limit" @pagination="getList" />
</div>
</div>
</template>
<script>
import Pagination from '@/components/Pagination' // el-pagination
import { requestFN } from '@/utils/request'
import waves from '@/directive/waves' // waves directive
import SelectTree from '@/components/SelectTree'
export default {
components: { Pagination, SelectTree },
directives: { waves },
data() {
return {
USER_LEVEL: sessionStorage.getItem('user').LEVEL || -1,
config: config,
listLoading: true,
add: false,
del: false,
edit: false,
listQuery: {
page: 1,
limit: 20
},
total: 0,
KEYWORDS: '',
varList: [],
pd: []
}
},
async created() {
await this.getList()
},
methods: {
getQuery() {
this.getList()
},
goKeyReset() {
this.KEYWORDS = ''
this.getList()
},
// ,
goList(tableName, CORPINFO_ID, ticketType) {
this.$parent.activeName = tableName
this.$parent.CORPINFO_ID = CORPINFO_ID
this.$parent.ticketType = ticketType
this.$parent.CUTROAD_ID =''
},
getList() {
return new Promise((resolve) => {
this.listLoading = true
requestFN(
'/dangerousWork/gfcutroad/corpCountlist?showCount=' + this.listQuery.limit + '&currentPage=' + this.listQuery.page,
{
COPRINF_ID: sessionStorage.getItem('user').CORPINFO_ID || '',
KEYWORDS: this.KEYWORDS
}
).then((data) => {
this.listLoading = false
this.varList = data.varList
this.total = data.page.totalResult
resolve()
}).catch((e) => {
this.listLoading = false
})
})
}
}
}
</script>

View File

@ -0,0 +1,279 @@
<template>
<div>
<div id="printTest" class="app-container print-work">
<el-page-header content="审批表详情" class="no-print" @back="goBack"/>
<table class="table-ui">
<thead>
<tr>
<td colspan="6" style="border: none">
<div class="level-title mt-20">
<h1>断路安全作业票</h1>
<div class="level-code" >编号:{{ pd.CHECK_NO }}</div>
</div>
</td>
</tr>
</thead>
<tr>
<td class="bbg">申请单位</td>
<td>{{ pd.APPLY_DEPARTMENT_NAME }}</td>
<td class="bbg">作业单位</td>
<td>{{ pd.CONSTRUCTION_DEPARTMENT_NAME }}</td>
<td class="bbg">作业负责人</td>
<td>{{ pd.CONSTRUCTION_USER_NAME }}</td>
</tr>
<tr>
<td class="bbg">涉及相关单位部门</td>
<td colspan="3">{{ pd.OTHER_DEPT }}</td>
<td class="bbg">监护人</td>
<td>
<div v-if="pd.GUARDIAN_USER_SIGNER_PATH" style="text-align: right">
<span>签字</span>
<img v-viewer :src="config.fileUrl + pd.GUARDIAN_USER_SIGNER_PATH" alt="" width="100" height="100">
<span>{{ pd.GUARDIAN_USER_SIGNER_TIME }}</span>
</div>
</td>
</tr>
<tr>
<td class="bbg">断路原因</td>
<td colspan="5">{{ pd.WORK_REASON }}</td>
</tr>
<tr>
<td class="bbg">关联的其他特殊作业及安全作业票编号</td>
<td colspan="5">{{ pd.SPECIAL_WORK }}</td>
</tr>
<tr>
<td colspan="6">
<div>断路地段示意图可另附图及相关说明{{ pd.WORK_CONTENT }}</div>
<div style="display: flex;justify-content: space-between;margin-top: 20px;">
<img v-viewer :src="config.fileUrl + pd.CONTENT_IMG_PATH" alt="" width="100" height="100">
<div>
编制人
<img v-viewer :src="config.fileUrl + pd.APPLY_USER_SIGNER_PATH" alt="" width="100" height="100">
{{ pd.APPLY_USER_SIGNER_TIME }}
</div>
</div>
</td>
</tr>
<tr>
<td class="bbg">风险辨识结果</td>
<td colspan="5">{{ pd.HAZARD_IDENTIFICATION.split(";_;")[0] }}</td>
</tr>
<tr>
<td class="bbg">作业实施时间</td>
<td colspan="5">{{ pd.WORK_START_DATE }}{{ pd.WORK_END_DATE }}</td>
</tr>
<tr>
<td colspan="6">
<table class="table-ui">
<tr>
<td>序号</td>
<td>安全措施</td>
<td>是否涉及</td>
<td>确认人</td>
</tr>
<tr v-for="(item,index) in measuresList" :key="index">
<td>{{ index + 1 }}</td>
<td>{{ item.PROTECTIVE_MEASURES }}</td>
<td>
<span v-if="item.STATUS=='1'"><input type="radio" disabled checked>&nbsp;&nbsp;&nbsp;</span>
<span v-if="item.STATUS=='-1'"><input type="radio" disabled checked>不涉及</span>
</td>
<td>
{{ item.CONFIRM_NAME }}
</td>
</tr>
<tr v-if="pd.APPLY_USER_MEASURES || pd.CONSTRUCTION_USER_MEASURES || pd.PRODUCTION_USER_MEASURES || pd.SAFETY_USER_MEASURES || pd.LEADER_USER_MEASURES ">
<td>{{ measuresList.length + 1 }}</td>
<td colspan="3">
<div v-if="pd.APPLY_USER_MEASURES" style="display: flex;justify-content: space-between;">
<span>其他安全措施{{ pd.APPLY_USER_MEASURES }}</span>
<span>编制人{{ pd.APPLY_USER_NAME }}</span>
</div>
<div v-if="pd.CONSTRUCTION_USER_MEASURES" style="display: flex;justify-content: space-between;margin-top: 10px;">
<span>其他安全措施{{ pd.CONSTRUCTION_USER_MEASURES }}</span>
<span>编制人{{ pd.CONSTRUCTION_USER_NAME }}</span>
</div>
<div v-if="pd.PRODUCTION_USER_ID && pd.PRODUCTION_USER_MEASURES" style="display: flex;justify-content: space-between;margin-top: 10px;">
<span>其他安全措施{{ pd.PRODUCTION_USER_MEASURES }}</span>
<span>编制人{{ pd.PRODUCTION_USER_NAME }}</span>
</div>
<div v-if="pd.SAFETY_USER_ID && pd.SAFETY_USER_MEASURES" style="display: flex;justify-content: space-between;margin-top: 10px;">
<span>其他安全措施{{ pd.SAFETY_USER_MEASURES }}</span>
<span>编制人{{ pd.SAFETY_USER_NAME }}</span>
</div>
<div v-if="pd.LEADER_USER_ID && pd.LEADER_USER_MEASURES" style="display: flex;justify-content: space-between;margin-top: 10px;">
<span>其他安全措施{{ pd.LEADER_USER_MEASURES }}</span>
<span>编制人{{ pd.LEADER_USER_NAME }}</span>
</div>
</td>
</tr>
</table>
</td>
</tr>
<tr>
<td class="bbg">安全交底人</td>
<td colspan="10">
<div v-if="pd.CONFESS_USER_SIGNER_PATH" style="text-align: right">
<span>签字</span>
<img v-viewer :src="config.fileUrl + pd.CONFESS_USER_SIGNER_PATH" alt="" width="100" height="100">
<span>{{ pd.CONFESS_USER_SIGNER_TIME }}</span>
</div>
</td>
</tr>
<tr>
<td class="bbg">接受交底人</td>
<td colspan="10">
<div v-for="item in imgList" :key="item.ACCEPT_CONFESS_ID" style="text-align: right">
<span>签字</span>
<img v-viewer :src="config.fileUrl + item.ACCEPT_CONFESS_USER_SIGNER_PATH" alt="" width="100" height="100">
<span>{{ item.ACCEPT_CONFESS_USER_SIGNER_TIME }}</span>
</div>
</td>
</tr>
<tr v-if="pd.CONSTRUCTION_USER_SIGNER_PATH">
<td colspan="6">
<div>作业负责人意见{{ pd.CONSTRUCTION_CONTENT }}</div>
<div style="text-align: right">
<span>签字</span>
<img v-viewer :src="config.fileUrl + pd.CONSTRUCTION_USER_SIGNER_PATH" alt="" width="100" height="100">
<span>{{ pd.CONSTRUCTION_USER_SIGNER_TIME }}</span>
</div>
</td>
</tr>
<tr v-if="pd.PRODUCTION_USER_SIGNER_PATH">
<td colspan="6">
<div>所在单位意见{{ pd.PRODUCTION_CONTENT }}</div>
<div style="text-align: right">
<span>签字</span>
<img v-viewer :src="config.fileUrl + pd.PRODUCTION_USER_SIGNER_PATH" alt="" width="100" height="100">
<span>{{ pd.PRODUCTION_USER_SIGNER_TIME }}</span>
</div>
</td>
</tr>
<tr v-if="pd.SAFETY_USER_SIGNER_PATH">
<td colspan="6">
<div>消防安全管理部门意见{{ pd.SAFETY_CONTENT }}</div>
<div style="text-align: right">
<span>签字</span>
<img v-viewer :src="config.fileUrl + pd.SAFETY_USER_SIGNER_PATH" alt="" width="100" height="100">
<span>{{ pd.SAFETY_USER_SIGNER_TIME }}</span>
</div>
</td>
</tr>
<tr v-if="pd.LEADER_USER_SIGNER_PATH">
<td colspan="6">
<div>审批部门意见{{ pd.LEADER_CONTENT }}</div>
<div style="text-align: right">
<span>签字</span>
<img v-viewer :src="config.fileUrl + pd.LEADER_USER_SIGNER_PATH" alt="" width="100" height="100">
<span>{{ pd.LEADER_USER_SIGNER_TIME }}</span>
</div>
</td>
</tr>
<tr v-if="imgList1.length>0">
<td colspan="10">
<div>完工验收{{ pd.ACCEPT_CONTENT }}</div>
<div v-for="item in imgList1" :key="item.ACCEPT_CONFESS_ID" style="text-align: right">
<span>签字</span>
<img v-viewer :src="config.fileUrl + item.ACCEPT_USER_SIGNER_PATH" alt="" width="100" height="100">
<span>{{ item.ACCEPT_USER_SIGNER_TIME }}</span>
</div>
</td>
</tr>
</table>
</div>
<div style="padding-top: 100px"/>
<div class="ui-foot">
<el-button icon="el-icon-arrow-left" @click="goBack"> </el-button>
</div>
</div>
</template>
<script>
import { requestFN } from '@/utils/request'
import dateformat from '@/utils/dateformat'
export default {
data() {
return {
config: config,
CUTROAD_ID: this.$parent.CUTROAD_ID, // ID
pd: [], //
measuresList: [],
otherProtectiveMeasures: [],
imgList: [],
imgList1: [],
hazardIdentification: []
}
},
created() {
this.getData()
},
methods: {
validStr(str) {
if (str != null && str != '' && typeof (str) != 'undefined' && str != 0) { return true }
return false
},
formatTime(date, column) {
if (date) {
return dateformat(date, 'YYYY年MM月DD日HH时mm分')
} else {
return ''
}
},
formatDate(date, column) {
if (date) {
return dateformat(date, 'YYYY-MM-DD')
} else {
return ''
}
},
getRowKey(row) {
return row.CUTROAD_ID
},
getData() {
this.listLoading = true
requestFN(
'/dangerousWork/gfcutroad/goEdit',
{
CUTROAD_ID: this.CUTROAD_ID
}
).then((data) => {
this.listLoading = false
this.pd = data.pd // map
this.measuresList = data.measuresList // map
this.imgList = data.imgList
this.pd.APPLY_USER_MEASURES = this.pd.OTHER_PROTECTIVE_MEASURES.split(';_;')[0]
this.pd.CONSTRUCTION_USER_MEASURES = this.pd.OTHER_PROTECTIVE_MEASURES.split(';_;')[1]
this.pd.PRODUCTION_USER_MEASURES = this.pd.OTHER_PROTECTIVE_MEASURES.split(';_;')[2]
this.pd.SAFETY_USER_MEASURES = this.pd.OTHER_PROTECTIVE_MEASURES.split(';_;')[3]
this.pd.LEADER_USER_MEASURES = this.pd.OTHER_PROTECTIVE_MEASURES.split(';_;')[4]
}).catch((e) => {
this.listLoading = false
})
},
goBack() {
this.$parent.activeName = 'circuit_list'
this.$parent.CUTROAD_ID = ''
}
}
}
</script>
<style lang="sass" scoped>
.print-approval-p10
padding: 20px 0
span
vertical-align: middle
.bbg
width: 270px
.print-approval-img
width: 200px
height: 97px
display: inline-block
img
width: 100%
height: 100%
.level-code
margin-left: auto
</style>

View File

@ -0,0 +1,365 @@
<template>
<div class="app-container">
<el-form label-width="50px">
<el-row>
<el-col :span="4">
<el-form-item label="编号">
<el-input v-model="KEYWORDS" placeholder="请输入编号"/>
</el-form-item>
</el-col>
<el-col :span="4">
<el-form-item label="状态">
<el-select v-model="STATUS" clearable placeholder="请选择" style="width: 100%;">
<el-option v-for="item in statusList" :key="item.ID" :label="item.NAME" :value="item.ID" />
</el-select>
</el-form-item>
</el-col>
<el-col :span="4">
<el-form-item label-width="10px">
<el-button v-waves class="filter-item" type="primary" icon="el-icon-search" @click="getQuery">
搜索
</el-button>
<el-button v-waves icon="el-icon-refresh" type="success" @click="goKeyReset">
重置
</el-button>
</el-form-item>
</el-col>
</el-row>
</el-form>
<el-table v-loading="listLoading" ref="multipleTable" :data="varList" :row-key="getRowKey" :header-cell-style="{'font-weight': 'bold','color': '#000'}" tooltip-effect="dark" border fit highlight-current-row>
<el-table-column :reserve-selection="true" type="selection" width="57" align="center" />
<el-table-column type="index" label="序号" width="50" align="center" />
<el-table-column prop="CHECK_NO" label="编号" show-overflow-tooltip />
<el-table-column prop="APPLY_USER_NAME" label="填写人" />
<el-table-column prop="CONSTRUCTION_USER_NAME" label="作业负责人" show-overflow-tooltip />
<el-table-column prop="PRODUCTION_USER_NAME" label="所在单位负责人" show-overflow-tooltip >
<template slot-scope="{row}">
{{ row.PRODUCTION_USER_NAME || ' 已跳过' }}
</template>
</el-table-column>
<el-table-column prop="SAFETY_DEPARTMENT_NAME" label="消防、安全管理部门负责人" show-overflow-tooltip width="200">
<template slot-scope="{row}">
{{ row.SAFETY_DEPARTMENT_NAME || ' 已跳过' }}
</template>
</el-table-column>
<el-table-column prop="LEADER_USER_NAME" label="审批部门负责人" show-overflow-tooltip >
<template slot-scope="{row}">
{{ row.LEADER_USER_NAME || ' 已跳过' }}
</template>
</el-table-column>
<el-table-column prop="ACCEPT_USER_NAME" label="验收部门负责人" show-overflow-tooltip />
<el-table-column prop="STATUS" label="审核状态">
<template slot-scope="{row}">
<span v-if="row.APPLY_STATUS==0"></span>
<span v-else-if="row.APPLY_STATUS==1">作业负责人待审核</span>
<span v-else-if="row.APPLY_STATUS==2">所在单位待审核</span>
<span v-else-if="row.APPLY_STATUS==3">消防安全管理部门待审核</span>
<span v-else-if="row.APPLY_STATUS==4">审批部门待审核</span>
<span v-else-if="row.APPLY_STATUS==5">待验收</span>
<span v-else-if="row.APPLY_STATUS==6">验收归档</span>
<span v-else-if="row.APPLY_STATUS==-2">作业负责人审核打回</span>
<span v-else-if="row.APPLY_STATUS==-3">所在单位审核打回</span>
<span v-else-if="row.APPLY_STATUS==-4">消防安全管理部门审核打回</span>
<span v-else-if="row.APPLY_STATUS==-5">审批部门审核打回</span>
<span v-else-if="row.APPLY_STATUS==-6">验收打回</span>
</template>
</el-table-column>
<el-table-column prop="ISDELETE" label="是否删除">
<template slot-scope="{row}">
<span v-if="row.ISDELETE==0"></span>
<span v-else-if="row.ISDELETE==1"></span>
</template>
</el-table-column>
<el-table-column label="操作" align="center" width="230">
<template slot-scope="{row}">
<el-button type="primary" icon="el-icon-plus" @click="goChart(row)"></el-button>
<el-button type="primary" icon="el-icon-document" size="mini" @click="goDetail(row.CUTROAD_ID)"></el-button>
</template>
</el-table-column>
</el-table>
<div class="page-btn-group">
<div>
</div>
<pagination :total="total" :page.sync="listQuery.page" :limit.sync="listQuery.limit" @pagination="getList" />
</div>
<el-dialog :visible.sync="dialogFormShow " :title="dialogType==='add'?'查看流程图':'新增'" width="1400px">
<el-steps :active="getStatus()" :process-status="getProcessStatus()" finish-status="success" align-center>
<el-step title="断路安全作业提交">
<template slot="description">
<div>{{ getProcessMessage().title }}</div>
<div>{{ getProcessMessage().USER_NAME }}</div>
<div>{{ getProcessMessage().OPERATTIME }}</div>
</template>
</el-step>
<el-step title="作业负责人意见">
<template slot="description">
<div>{{ pd.CONSTRUCTION_USER_NAME }}</div>
<div>{{ pd.CONSTRUCTION_USER_SIGNER_TIME }}</div>
</template>
</el-step>
<el-step title="所在单位意见">
<template slot="description">
<div v-if="getIsPase('PRODUCTION_USER_NAME')">{{ '' }}</div>
<div v-else>{{ pd.PRODUCTION_USER_NAME }}</div>
<div>{{ pd.PRODUCTION_USER_SIGNER_TIME }}</div>
</template>
</el-step>
<el-step title="消防、安全管理部门意见" >
<template slot="description">
<div v-if="getIsPase('SAFETY_DEPARTMENT_NAME')">{{ '' }}</div>
<div v-else>{{ pd.SAFETY_USER_NAME }}</div>
<div>{{ pd.SAFETY_USER_SIGNER_TIME }}</div>
</template>
</el-step>
<el-step title="审批部门意见" >
<template slot="description">
<div v-if="getIsPase('LEADER_USER_NAME')">{{ '' }}</div>
<div v-else>{{ pd.LEADER_USER_NAME }}</div>
<div>{{ pd.LEADER_USER_SIGNER_TIME }}</div>
</template>
</el-step>
<el-step title="完成验收" description="">
<template slot="description">
<div>{{ pd.ACCEPT_USER_NAME }}</div>
<div>{{ pd.ACCEPT_USER_SIGNER_TIME }}</div>
</template>
</el-step>
<el-step title="验收归档" description="">
<template slot="description">
<div>{{ pd.ACCEPT_USER_NAME }}</div>
<div>{{ pd.ACCEPT_USER_SIGNER_TIME }}</div>
</template>
</el-step>
</el-steps>
<div style="margin: 60px 60px 0 60px;display: flex;justify-content: space-between">
<div v-if="pd.GUARDIAN_USER_SIGNER_TIME">
<div style="color: #13ce66">
监护人{{ pd.GUARDIAN_USER_NAME }}已签字
</div>
</div>
<div v-if="!pd.GUARDIAN_USER_SIGNER_TIME">
<div style="color: red">
监护人{{ pd.GUARDIAN_USER_NAME }}未签字
</div>
</div>
<div v-if="pd.CONFESS_USER_SIGNER_TIME">
<div style="color: #13ce66">
安全交底人{{ pd.CONFESS_USER_NAME }}已签字
</div>
</div>
<div v-if="!pd.CONFESS_USER_SIGNER_TIME">
<div style="color: red">
安全交底人{{ pd.CONFESS_USER_NAME }}未签字
</div>
</div>
<div v-if="pd.ACCEPT_CONFESS_USER_SIGNER_TIME">
<div style="color: #13ce66">
接受交底人{{ pd.ACCEPT_CONFESS_USER_NAME }}已签字
</div>
</div>
<div v-if="!pd.ACCEPT_CONFESS_USER_SIGNER_TIME">
<div style="color: red">
接受交底人{{ pd.ACCEPT_CONFESS_USER_NAME }}未签字
</div>
</div>
</div>
<div slot="footer" class="dialog-footer">
<!-- <el-button @click="dialogFormShow = false"> </el-button>-->
<el-button type="primary" @click="dialogFormShow = false"> </el-button>
</div>
</el-dialog>
<div style="height: 60px;"></div>
<div class="ui-foot">
<el-button type="primary" @click="goBack"> </el-button>
</div>
</div>
</template>
<script>
import Pagination from '@/components/Pagination' // el-pagination
import { requestFN } from '@/utils/request'
import waves from '@/directive/waves' // waves directive
export default {
components: { Pagination },
directives: { waves },
data() {
return {
listLoading: true,
add: false,
del: false,
edit: false,
listQuery: {
page: 1,
limit: 20
},
total: 0,
KEYWORDS: '',
varList: [],
pd: [],
multipleSelectionAll: [], //
multipleSelection: [], //
dialogFormShow: false,
dialogFormEdit: false,
dialogType: 'add',
replyVarList: [], // REPLY
replyListQuery: {
page: 1,
limit: 20
},
replyTotal: 0,
dialogFormHuifuShow: false,
statusList: [
{ ID: '', NAME: '请选择' },
{ ID: '0', NAME: '断路安全作业待提交' },
{ ID: '1', NAME: '作业负责人待审核' },
{ ID: '2', NAME: '所在单位待审核' },
{ ID: '3', NAME: '消防、安全管理部门待审核' },
{ ID: '4', NAME: '审批部门待审核' },
{ ID: '5', NAME: '待验收' },
{ ID: '6', NAME: '验收归档' },
{ ID: '-2', NAME: '作业负责人审核打回' },
{ ID: '-3', NAME: '所在单位审核打回' },
{ ID: '-4', NAME: '消防、安全管理部门审核打回' },
{ ID: '-5', NAME: '审批部门审核打回' },
{ ID: '-6', NAME: '验收打回' }
],
STATUS: '',
DEPTIDS: ''
}
},
created() {
this.getList()
},
methods: {
getRowKey(row) {
return row.CUTROAD_ID
},
//
getQuery() {
this.$refs.multipleTable.clearSelection()
this.getList()
},
goKeyReset() {
this.KEYWORDS = ''
this.STATUS = ''
this.getQuery()
},
//
getList() {
this.listLoading = true
requestFN(
'/dangerousWork/gfcutroad/list?showCount=' + this.listQuery.limit + '&currentPage=' + this.listQuery.page,
{
KEYWORDS: this.KEYWORDS, APPLY_STATUS: this.STATUS,
DEPTIDS: this.DEPTIDS, tm: new Date().getTime(),
CORPINFO_ID: this.$parent.CORPINFO_ID,
ticketType: this.$parent.ticketType
}
).then((data) => {
this.listLoading = false
this.varList = data.varList
this.total = data.page.totalResult
}).catch((e) => {
this.listLoading = false
})
},
goChart(row) {
this.pd = row
this.dialogFormShow = true
},
getStatus() {
if (this.pd.APPLY_STATUS <= '0') {
return 0
}
if (this.pd.APPLY_STATUS == '1') {
return 1
}
if (this.pd.APPLY_STATUS == '2') {
return 2
}
if (this.pd.APPLY_STATUS == '3') {
return 3
}
if (this.pd.APPLY_STATUS == '4') {
return 4
}
if (this.pd.APPLY_STATUS == '5') {
return 5
}
if (this.pd.APPLY_STATUS == '6') {
return 7
}
},
getProcessStatus() {
if (this.pd.APPLY_STATUS < '0') {
return 'error'
} else {
return 'process'
}
},
getProcessMessage() {
let obj = {}
if (this.pd.APPLY_STATUS >= '0') {
obj = {
title: '',
USER_NAME: this.pd.APPLY_USER_NAME,
OPERATTIME: this.pd.CREATTIME
}
}
if (this.pd.APPLY_STATUS == '-2') {
obj = {
title: '作业负责人审核打回',
USER_NAME: this.pd.CONSTRUCTION_USER_NAME,
OPERATTIME: this.pd.OPERATTIME
}
}
if (this.pd.APPLY_STATUS == '-3') {
obj = {
title: '所在单位审核打回',
USER_NAME: this.pd.PRODUCTION_USER_NAME,
OPERATTIME: this.pd.OPERATTIME
}
}
if (this.pd.APPLY_STATUS == '-4') {
obj = {
title: '消防、安全管理部门审核打回',
USER_NAME: this.pd.SAFETY_USER_NAME,
OPERATTIME: this.pd.OPERATTIME
}
}
if (this.pd.APPLY_STATUS == '-5') {
obj = {
title: '审批部门审核打回',
USER_NAME: this.pd.LEADER_USER_NAME,
OPERATTIME: this.pd.OPERATTIME
}
}
if (this.pd.APPLY_STATUS == '-6') {
obj = {
title: '验收打回',
AUSER_NAME: this.pd.ACCEPT_USER_NAME,
OPERATTIME: this.pd.OPERATTIME
}
}
return obj
},
getIsPase(col) {
if (!this.pd[col]) {
return '已跳过'
}
},
goBack(){
this.$parent.activeName = 'CorpInfo'
this.$parent.CORPINFO_ID = ''
this.$parent.ticketType = ''
this.$parent.CUTROAD_ID =''
},
goDetail(id) {
console.info(id)
this.$parent.activeName = 'Detail'
this.$parent.CUTROAD_ID = id
}
}
}
</script>

View File

@ -0,0 +1,23 @@
<template>
<div>
<CorpInfo v-show="activeName=='CorpInfo'" ref="list" />
<circuitList v-if="activeName=='circuit_list'"/>
<Detail v-if="activeName=='Detail'"/>
</div>
</template>
<script>
import CorpInfo from './components/corpInfo'
import circuitList from './components/list'
import Detail from './components/detail'
export default {
components: { CorpInfo, circuitList,Detail },
data() {
return {
activeName: 'CorpInfo',
CORPINFO_ID: '',
ticketType: '',
CUTROAD_ID: ''
}
}
}
</script>

View File

@ -0,0 +1,128 @@
<template>
<div class="app-container">
<div class="filter-container">
<div class="filter-group ">
<div class="filter-lable" style="width: 60px">
公司名称
</div>
<div class="filter-width">
<el-input v-model="KEYWORDS" placeholder="公司名称" class="filter-item" style="width: 150px;"/>
</div>
</div>
<el-button v-waves class="filter-item" type="primary" icon="el-icon-search" @click="getQuery">
搜索
</el-button>
<el-button v-waves class="filter-item" type="success" icon="el-icon-refresh" @click="goKeyReset">
重置
</el-button>
</div>
<el-table
v-loading="listLoading"
ref="multipleTable"
:data="varList"
:header-cell-style="{
'font-weight': 'bold',
'color': '#000'
}"
tooltip-effect="dark"
border
fit
highlight-current-row
>
<el-table-column type="index" label="序号" width="50" align="center" />
<el-table-column prop="CORP_NAME" label="公司名称" />
<el-table-column prop="checkedCount" label="申请总数" align="center" >
<template slot-scope="{row}">
<span :style="row.applications_num > 0 ? {color:'#0c60e1',cursor: 'pointer'} : {color: '#606266'}" @click="goList('electricity_list',row.CORPINFO_ID,'1')">{{ row.applications_num }}</span>
</template>
</el-table-column>
<el-table-column prop="checkedItemCount" label="完成数" align="center" >
<template slot-scope="{row}">
<span :style="row.completions_num > 0 ? {color:'#0c60e1',cursor: 'pointer'} : {color: '#606266'}" @click="goList('electricity_list',row.CORPINFO_ID,'2')">{{ row.completions_num }}</span>
</template>
</el-table-column>
<el-table-column prop="ybCount" label="废除数" align="center" >
<template slot-scope="{row}">
<span :style="row.abolishments_num > 0 ? {color:'#0c60e1',cursor: 'pointer'} : {color: '#606266'}" @click="goList('electricity_list',row.CORPINFO_ID, '3')">{{ row.abolishments_num }}</span>
</template>
</el-table-column>
<el-table-column prop="zdCount" label="进行数" align="center" >
<template slot-scope="{row}">
<span :style="row.operations_num > 0 ? {color:'#0c60e1',cursor: 'pointer'} : {color: '#606266'}" @click="goList('electricity_list',row.CORPINFO_ID, '4')">{{ row.operations_num }}</span>
</template>
</el-table-column>
</el-table>
<div class="page-btn-group">
<div/>
<pagination :total="total" :page.sync="listQuery.page" :limit.sync="listQuery.limit" @pagination="getList" />
</div>
</div>
</template>
<script>
import Pagination from '@/components/Pagination' // el-pagination
import { requestFN } from '@/utils/request'
import waves from '@/directive/waves' // waves directive
import SelectTree from '@/components/SelectTree'
export default {
components: { Pagination, SelectTree },
directives: { waves },
data() {
return {
USER_LEVEL: sessionStorage.getItem('user').LEVEL || -1,
config: config,
listLoading: true,
add: false,
del: false,
edit: false,
listQuery: {
page: 1,
limit: 20
},
total: 0,
KEYWORDS: '',
varList: [],
pd: []
}
},
async created() {
await this.getList()
},
methods: {
getQuery() {
this.getList()
},
goKeyReset() {
this.KEYWORDS = ''
this.getList()
},
// ,
goList(tableName, CORPINFO_ID, ticketType) {
this.$parent.activeName = tableName
this.$parent.CORPINFO_ID = CORPINFO_ID
this.$parent.ticketType = ticketType
this.$parent.CUTROAD_ID =''
},
getList() {
return new Promise((resolve) => {
this.listLoading = true
requestFN(
'/dangerousWork/gfElectricity/corpCountlist?showCount=' + this.listQuery.limit + '&currentPage=' + this.listQuery.page,
{
COPRINF_ID: sessionStorage.getItem('user').CORPINFO_ID || '',
KEYWORDS: this.KEYWORDS
}
).then((data) => {
this.listLoading = false
this.varList = data.varList
this.total = data.page.totalResult
resolve()
}).catch((e) => {
this.listLoading = false
})
})
}
}
}
</script>

View File

@ -0,0 +1,269 @@
<template>
<div>
<div id="printTest" class="app-container print-work">
<div class="level-title">
<h1>临时用电作业许可证</h1>
<div class="level-btns">编号:{{ pd.CHECK_NO }}</div>
</div>
<table class="table-ui">
<tr>
<td class="bbg">申请单位</td>
<td colspan="2">{{ pd.APPLY_DEPARTMENT_NAME }}</td>
<td class="bbg">作业申请时间</td>
<td colspan="2">{{ pd.CREATTIME }}</td>
</tr>
<tr>
<td class="bbg">作业地点</td>
<td colspan="2">{{ pd.WORK_PLACE }}</td>
<td class="bbg">作业内容</td>
<td colspan="2">{{ pd.WORK_CONTENT }}</td>
</tr>
<tr>
<td class="bbg">电源接入点及许可用电功率</td>
<td colspan="2">{{ pd.ALLOW_POWER }}</td>
<td class="bbg">工作电压</td>
<td colspan="2">{{ pd.WORK_VOLTAGE }}</td>
</tr>
<tr>
<td class="bbg">用电设备名称及额定功率</td>
<td>{{ pd.RATED_POWER }}</td>
<td class="bbg">监护人</td>
<td>
<div v-if="pd.GUARDIAN_USER_SIGNER_PATH" style="text-align: right">
<span>签字</span>
<img v-viewer :src="config.fileUrl + pd.GUARDIAN_USER_SIGNER_PATH" alt="" width="100" height="100">
<span>{{ pd.GUARDIAN_USER_SIGNER_TIME }}</span>
</div>
</td>
<td class="bbg">用电人</td>
<td>{{ pd.ELECTRICITY_USER }}</td>
</tr>
<tr>
<td class="bbg">作业人</td>
<td colspan="2">{{ pd.WORK_USER }}</td>
<td class="bbg">电工证号</td>
<td colspan="2">{{ pd.CARD_NO }}</td>
</tr>
<tr>
<td class="bbg">作业负责人</td>
<td colspan="2">{{ pd.CONFIRM_USER_NAME }}</td>
<td class="bbg">电工证号</td>
<td colspan="2">{{ pd.LEADER_CARD_NO }}</td>
</tr>
<tr>
<td class="bbg">关联的其他特殊作业及安全作业票编号</td>
<td colspan="5">{{ pd.SPECIAL_WORK }}</td>
</tr>
<tr>
<td class="bbg">风险辨识结果</td>
<td colspan="5">{{ pd.RISK_IDENTIFICATION }}</td>
</tr>
<tr>
<td class="bbg" colspan="6">可燃气体分析运行的生产装置罐区和具有火灾爆炸危险场所</td>
</tr>
<template v-for="(item,index) in gasList">
<tr :key="index">
<td class="bbg">分析时间</td>
<td colspan="2">{{ item.ANALYZE_TIME }}</td>
<td class="bbg">分析点</td>
<td colspan="2">{{ item.ANALYZE_PLACE }}</td>
</tr>
<tr :key="index">
<td class="bbg">可燃气体检测结果</td>
<td colspan="2">{{ item.ANALYZE_RESULT }}</td>
<td class="bbg">分析人</td>
<td colspan="2">{{ item.ANALYZE_USER }}</td>
</tr>
</template>
<tr>
<td class="bbg">作业实施时间</td>
<td colspan="5">{{ pd.WORK_START_DATE }}{{ pd.WORK_END_DATE }}</td>
</tr>
<tr>
<td colspan="6">
<table class="table-ui">
<tr>
<td>序号</td>
<td>安全措施</td>
<td>是否涉及</td>
<td>确认人</td>
</tr>
<tr v-for="(item,index) in measuresList" :key="index">
<td>{{ index + 1 }}</td>
<td>{{ item.PROTECTIVE_MEASURES }}</td>
<td>
<span v-if="item.STATUS=='1'"><input type="radio" disabled checked>&nbsp;&nbsp;&nbsp;&nbsp;</span>
<span v-if="item.STATUS=='-1'"><input type="radio" disabled checked>不涉及</span>
</td>
<td>
{{ item.CONFIRM_NAME }}
</td>
</tr>
<tr v-if="pd.CONFIRM_USER_MEASURES || pd.AUDIT_USER_MEASURES || pd.APPROVE_USER_MEASURES">
<td>{{ measuresList.length + 1 }}</td>
<td colspan="3">
<div v-if="pd.CONFIRM_USER_MEASURES" style="display: flex;justify-content: space-between;">
<span>其他安全措施{{ pd.CONFIRM_USER_MEASURES }}</span>
<span>编制人{{ pd.CONFIRM_USER_NAME }}</span>
</div>
<div v-if="pd.AUDIT_USER_MEASURES" style="display: flex;justify-content: space-between;margin-top: 10px;">
<span>其他安全措施{{ pd.AUDIT_USER_MEASURES }}</span>
<span>编制人{{ pd.AUDIT_USER_NAME }}</span>
</div>
<div v-if="pd.APPROVE_USER_MEASURES" style="display: flex;justify-content: space-between;margin-top: 10px;">
<span>其他安全措施{{ pd.APPROVE_USER_MEASURES }}</span>
<span>编制人{{ pd.APPROVE_USER_NAME }}</span>
</div>
</td>
</tr>
</table>
</td>
</tr>
<tr>
<td class="bbg">安全交底人</td>
<td colspan="10">
<div v-if="pd.CONFESS_USER_SIGNER_PATH" style="text-align: right">
<span>签字</span>
<img v-viewer :src="config.fileUrl + pd.CONFESS_USER_SIGNER_PATH" alt="" width="100" height="100">
<span>{{ pd.CONFESS_USER_SIGNER_TIME }}</span>
</div>
</td>
</tr>
<tr>
<td class="bbg">接受交底人</td>
<td colspan="10">
<div v-if="pd.ACCEPT_CONFESS_USER_SIGNER_PATH" style="text-align: right">
<span>签字</span>
<img v-viewer :src="config.fileUrl + pd.ACCEPT_CONFESS_USER_SIGNER_PATH" alt="" width="100" height="100">
<span>{{ pd.ACCEPT_CONFESS_USER_SIGNER_TIME }}</span>
</div>
</td>
</tr>
<tr>
<td colspan="6">
<div>作业负责人意见{{ pd.CONFIRM_CONTENT }}</div>
<div style="text-align: right">
<span>签字</span>
<img v-viewer v-if="pd.CONFIRM_USER_SIGNER_PATH" :src="config.fileUrl + pd.CONFIRM_USER_SIGNER_PATH" alt="" width="100" height="100">
<span>{{ pd.CONFIRM_USER_SIGNER_TIME }}</span>
</div>
</td>
</tr>
<tr>
<td colspan="6">
<div>用电单位意见{{ pd.AUDIT_CONTENT }}</div>
<div style="text-align: right">
<span>签字</span>
<img v-viewer v-if="pd.AUDIT_USER_SIGNER_PATH" :src="config.fileUrl + pd.AUDIT_USER_SIGNER_PATH" alt="" width="100" height="100">
<span>{{ pd.AUDIT_USER_SIGNER_TIME }}</span>
</div>
</td>
</tr>
<tr>
<td colspan="6">
<div>配送电单位意见{{ pd.APPROVE_CONTENT }}</div>
<div style="text-align: right">
<span>签字</span>
<img v-viewer v-if="pd.APPROVE_USER_SIGNER_PATH" :src="config.fileUrl + pd.APPROVE_USER_SIGNER_PATH" alt="" width="100" height="100">
<span>{{ pd.APPROVE_USER_SIGNER_TIME }}</span>
</div>
</td>
</tr>
<tr>
<td colspan="6">
<div>完工验收{{ pd.ACCEPT_CONTENT }}</div>
<div style="text-align: right">
<span>签字</span>
<img v-viewer v-if="pd.ACCEPT_USER_SIGNER_PATH" :src="config.fileUrl + pd.ACCEPT_USER_SIGNER_PATH" alt="" width="100" height="100">
<span>{{ pd.ACCEPT_USER_SIGNER_TIME }}</span>
</div>
</td>
</tr>
</table>
</div>
<div class="ui-height" />
<div class="ui-foot">
<el-button type="primary" @click="goBack"> </el-button>
</div>
</div>
</template>
<script>
import { requestFN } from '@/utils/request'
import dateformat from '@/utils/dateformat'
export default {
data() {
return {
config: config,
ELECTRICITY_ID: this.$parent.ELECTRICITY_ID, // ID
pd: [], //
measuresList: [],
gasList: [],
otherProtectiveMeasures: []
}
},
created() {
this.getData()
},
methods: {
validStr(str) {
if (str != null && str != '' && typeof (str) != 'undefined' && str != 0) { return true }
return false
},
formatTime(date, column) {
if (date) {
return dateformat(date, 'YYYY年MM月DD日HH时mm分')
} else {
return ''
}
},
formatDate(date, column) {
if (date) {
return dateformat(date, 'YYYY-MM-DD')
} else {
return ''
}
},
getRowKey(row) {
return row.ELECTRICITY_ID
},
getData() {
this.listLoading = true
requestFN(
'/dangerousWork/gfElectricity/goEdit',
{
ELECTRICITY_ID: this.ELECTRICITY_ID
}
).then((data) => {
this.listLoading = false
this.pd = data.pd // map
this.measuresList = data.measuresList // map
this.gasList = data.gasList // map
this.otherProtectiveMeasures = this.validStr(this.pd.OTHER_PROTECTIVE_MEASURES.replace(/;_;/g, '')) ? this.pd.OTHER_PROTECTIVE_MEASURES.split(';_;') : []
}).catch((e) => {
this.listLoading = false
})
},
goBack() {
this.$parent.activeName = 'electricity_list'
}
}
}
</script>
<style lang="sass" scoped>
.print-approval-p10
padding: 20px 0
span
vertical-align: middle
.print-approval-img
width: 200px
height: 97px
display: inline-block
img
width: 100%
height: 100%
</style>

View File

@ -0,0 +1,314 @@
<template>
<div class="app-container">
<el-form label-width="50px">
<el-row>
<el-col :span="4">
<el-form-item label="编号">
<el-input v-model="KEYWORDS" placeholder="请输入编号"/>
</el-form-item>
</el-col>
<el-col :span="4">
<el-form-item label="状态">
<el-select v-model="STATUS" clearable placeholder="请选择" style="width: 100%;">
<el-option v-for="item in statusList" :key="item.ID" :label="item.NAME" :value="item.ID" />
</el-select>
</el-form-item>
</el-col>
<el-col :span="4">
<el-form-item label-width="10px">
<el-button v-waves class="filter-item" type="primary" icon="el-icon-search" @click="getQuery">
搜索
</el-button>
<el-button v-waves icon="el-icon-refresh" type="success" @click="goKeyReset">
重置
</el-button>
</el-form-item>
</el-col>
</el-row>
</el-form>
<el-table v-loading="listLoading" ref="multipleTable" :data="varList" :row-key="getRowKey" :header-cell-style="{'font-weight': 'bold','color': '#000'}" tooltip-effect="dark" border fit highlight-current-row>
<el-table-column :reserve-selection="true" type="selection" width="55" align="center" />
<el-table-column type="index" label="序号" width="50" align="center" />
<el-table-column prop="CHECK_NO" label="编号" />
<el-table-column prop="APPLY_USER_NAME" label="申请人" />
<el-table-column prop="ANALYZE_USER_NAME" label="分析人" />
<el-table-column prop="CONFIRM_USER_NAME" label="作业单位负责人" />
<el-table-column prop="AUDIT_USER_NAME" label="用电单位负责人" />
<el-table-column prop="APPROVE_USER_NAME" label="配送电单位负责人" />
<el-table-column prop="ACCEPT_USER_NAME" label="验收部门负责人" />
<el-table-column prop="STATUS" label="审核状态">
<template slot-scope="{row}">
<span v-if="row.APPLY_STATUS==0"></span>
<span v-else-if="row.APPLY_STATUS==1">作业负责人待审核</span>
<span v-else-if="row.APPLY_STATUS==2">用电单位待审核</span>
<span v-else-if="row.APPLY_STATUS==3">配送电单位待审核</span>
<span v-else-if="row.APPLY_STATUS==4">待验收</span>
<span v-else-if="row.APPLY_STATUS==5">验收归档</span>
<span v-else-if="row.APPLY_STATUS==-2">作业负责人审核打回</span>
<span v-else-if="row.APPLY_STATUS==-3">用电单位审核打回</span>
<span v-else-if="row.APPLY_STATUS==-4">配送电单位审核打回</span>
<span v-else-if="row.APPLY_STATUS==-5">验收打回</span>
</template>
</el-table-column>
<el-table-column prop="ISDELETE" label="是否删除">
<template slot-scope="{row}">
<span v-if="row.ISDELETE==0"></span>
<span v-else-if="row.ISDELETE==1"></span>
</template>
</el-table-column>
<el-table-column label="操作" align="center" width="230">
<template slot-scope="{row}">
<el-button type="primary" icon="el-icon-plus" @click="goChart(row)"></el-button>
<el-button type="primary" icon="el-icon-document" size="mini" @click="goDetail(row.ELECTRICITY_ID)"></el-button>
</template>
</el-table-column>
</el-table>
<div class="page-btn-group">
<div>
<!-- <el-button v-show="add" type="primary" icon="el-icon-plus" @click="handleAdd"></el-button>-->
<!-- <el-button v-show="del" type="danger" icon="el-icon-delete" plain @click="batchDel"></el-button>-->
</div>
<pagination :total="total" :page.sync="listQuery.page" :limit.sync="listQuery.limit" @pagination="getList" />
</div>
<el-dialog :visible.sync="dialogFormShow " :title="dialogType==='add'?'查看流程图':'新增'" width="1400px">
<el-steps :active="getStatus()" :process-status="getProcessStatus()" finish-status="success" align-center>
<el-step title="临时用电作业提交">
<template slot="description">
<div>{{ getProcessMessage().title }}</div>
<div>{{ getProcessMessage().USER_NAME }}</div>
<div>{{ getProcessMessage().OPERATTIME }}</div>
</template>
</el-step>
<el-step title="作业负责人意见">
<template slot="description">
<div>{{ pd.CONFIRM_USER_NAME }}</div>
<div>{{ pd.CONFIRM_USER_SIGNER_TIME }}</div>
</template>
</el-step>
<el-step title="用电单位意见">
<template slot="description">
<div>{{ pd.AUDIT_USER_NAME }}</div>
<div>{{ pd.AUDIT_USER_SIGNER_TIME }}</div>
</template>
</el-step>
<el-step title="配送电单位意见">
<template slot="description">
<div>{{ pd.APPROVE_USER_NAME }}</div>
<div>{{ pd.APPROVE_USER_SIGNER_TIME }}</div>
</template>
</el-step>
<el-step title="完成验收">
<template slot="description">
<div>{{ pd.ACCEPT_USER_NAME }}</div>
<div>{{ pd.ACCEPT_USER_SIGNER_TIME }}</div>
</template>
</el-step>
<el-step title="验收归档">
<template slot="description">
<div>{{ pd.ACCEPT_USER_NAME }}</div>
<div>{{ pd.ACCEPT_USER_SIGNER_TIME }}</div>
</template>
</el-step>
</el-steps>
<div slot="footer" class="dialog-footer">
<!-- <el-button @click="dialogFormShow = false"> </el-button>-->
<el-button type="primary" @click="dialogFormShow = false"> </el-button>
</div>
</el-dialog>
<div style="height: 60px;"></div>
<div class="ui-foot">
<el-button type="primary" @click="goBack"> </el-button>
</div>
</div>
</template>
<script>
import Pagination from '@/components/Pagination' // el-pagination
import { requestFN } from '@/utils/request'
import waves from '@/directive/waves' // waves directive
export default {
components: { Pagination },
directives: { waves },
data() {
return {
listLoading: true,
add: false,
del: false,
edit: false,
listQuery: {
page: 1,
limit: 20
},
total: 0,
KEYWORDS: '',
varList: [],
pd: [],
multipleSelectionAll: [], //
multipleSelection: [], //
dialogFormShow: false,
dialogFormEdit: false,
dialogType: 'add',
replyVarList: [], // REPLY
replyListQuery: {
page: 1,
limit: 20
},
replyTotal: 0,
dialogFormHuifuShow: false,
statusList: [
{ ID: '', NAME: '请选择' },
{ ID: '0', NAME: '临时用电作业待提交' },
{ ID: '1', NAME: '作业负责人待审核' },
{ ID: '2', NAME: '用电单位待审核' },
{ ID: '3', NAME: '配送电单位待审核' },
{ ID: '4', NAME: '待验收' },
{ ID: '5', NAME: '验收归档' },
{ ID: '-2', NAME: '作业负责人审核打回' },
{ ID: '-3', NAME: '用电单位审核打回' },
{ ID: '-4', NAME: '配送电单位审核打回' },
{ ID: '-5', NAME: '验收打回' }
],
STATUS: '',
DEPTIDS: ''
}
},
created() {
this.getList()
},
methods: {
getRowKey(row) {
return row.ELECTRICITY_ID
},
//
getQuery() {
this.$refs.multipleTable.clearSelection()
this.getList()
},
goKeyReset() {
this.KEYWORDS = ''
this.STATUS = ''
this.getQuery()
},
//
getList() {
this.listLoading = true
requestFN(
'/dangerousWork/gfElectricity/list?showCount=' + this.listQuery.limit + '&currentPage=' + this.listQuery.page,
{
KEYWORDS: this.KEYWORDS, APPLY_STATUS: this.STATUS,
DEPTIDS: this.DEPTIDS, tm: new Date().getTime(),
CORPINFO_ID: this.$parent.CORPINFO_ID,
ticketType: this.$parent.ticketType
}
).then((data) => {
this.listLoading = false
this.varList = data.varList
this.total = data.page.totalResult
this.hasButton()
}).catch((e) => {
this.listLoading = false
})
},
//
hasButton() {
var keys = 'electricity:add,electricity:del,electricity:edit,toExcel'
requestFN(
'/head/hasButton',
{
keys: keys
}
).then((data) => {
this.add = data.electricityfhadminadd //
this.del = data.electricityfhadmindel //
this.edit = data.electricityfhadminedit //
}).catch((e) => {
this.listLoading = false
})
},
goChart(row) {
this.pd = row
this.dialogFormShow = true
},
getStatus() {
if (this.pd.APPLY_STATUS <= '0') {
return 0
}
if (this.pd.APPLY_STATUS == '1') {
return 1
}
if (this.pd.APPLY_STATUS == '2') {
return 2
}
if (this.pd.APPLY_STATUS == '3') {
return 3
}
if (this.pd.APPLY_STATUS == '4') {
return 4
}
if (this.pd.APPLY_STATUS == '5') {
return 6
}
},
getProcessStatus() {
if (this.pd.APPLY_STATUS < '0') {
return 'error'
} else {
return 'process'
}
},
getProcessMessage() {
let obj = {}
if (this.pd.APPLY_STATUS >= '0') {
obj = {
title: '',
USER_NAME: this.pd.APPLY_USER_NAME,
OPERATTIME: this.pd.CREATTIME
}
}
if (this.pd.APPLY_STATUS == '-2') {
obj = {
title: '作业负责人审核打回',
USER_NAME: this.pd.CONFIRM_USER_NAME,
OPERATTIME: this.pd.OPERATTIME
}
}
if (this.pd.APPLY_STATUS == '-3') {
obj = {
title: '用电单位审核打回',
USER_NAME: this.pd.AUDIT_USER_NAME,
OPERATTIME: this.pd.OPERATTIME
}
}
if (this.pd.APPLY_STATUS == '-4') {
obj = {
title: '配送电单位审核打回',
USER_NAME: this.pd.APPROVE_USER_NAME,
OPERATTIME: this.pd.OPERATTIME
}
}
if (this.pd.APPLY_STATUS == '-5') {
obj = {
title: '验收打回',
AUSER_NAME: this.pd.ACCEPT_USER_NAME,
OPERATTIME: this.pd.OPERATTIME
}
}
return obj
},
getIsPase(col) {
if (!this.pd[col]) {
return '已跳过'
}
},
goDetail(id) {
this.$parent.activeName = 'Detail'
this.$parent.ELECTRICITY_ID = id
},
goBack(){
this.$parent.activeName = 'CorpInfo'
this.$parent.BREAKGROUND_ID = ''
}
}
}
</script>

View File

@ -0,0 +1,32 @@
<template>
<div>
<CorpInfo v-show="activeName=='CorpInfo'" ref="list" />
<List v-if="activeName=='electricity_list'" />
<Detail v-if="activeName=='Detail'"/>
</div>
</template>
<script>
import CorpInfo from './components/corpInfo'
import List from './components/list'
import Detail from './components/detail'
export default {
components: { CorpInfo, List, Detail },
data() {
return {
activeName: 'CorpInfo',
ELECTRICITY_ID: ''
}
},
watch: {
activeName(val) {
if (val == 'List') {
this.$refs.list.getQuery()
}
}
}
}
</script>
<style scoped>
</style>

View File

@ -0,0 +1,128 @@
<template>
<div class="app-container">
<div class="filter-container">
<div class="filter-group ">
<div class="filter-lable" style="width: 60px">
公司名称
</div>
<div class="filter-width">
<el-input v-model="KEYWORDS" placeholder="公司名称" class="filter-item" style="width: 150px;"/>
</div>
</div>
<el-button v-waves class="filter-item" type="primary" icon="el-icon-search" @click="getQuery">
搜索
</el-button>
<el-button v-waves class="filter-item" type="success" icon="el-icon-refresh" @click="goKeyReset">
重置
</el-button>
</div>
<el-table
v-loading="listLoading"
ref="multipleTable"
:data="varList"
:header-cell-style="{
'font-weight': 'bold',
'color': '#000'
}"
tooltip-effect="dark"
border
fit
highlight-current-row
>
<el-table-column type="index" label="序号" width="50" align="center" />
<el-table-column prop="CORP_NAME" label="公司名称" />
<el-table-column prop="checkedCount" label="申请总数" align="center" >
<template slot-scope="{row}">
<span :style="row.applications_num > 0 ? {color:'#0c60e1',cursor: 'pointer'} : {color: '#606266'}" @click="goList('highwork_list',row.CORPINFO_ID,'1')">{{ row.applications_num }}</span>
</template>
</el-table-column>
<el-table-column prop="checkedItemCount" label="完成数" align="center" >
<template slot-scope="{row}">
<span :style="row.completions_num > 0 ? {color:'#0c60e1',cursor: 'pointer'} : {color: '#606266'}" @click="goList('highwork_list',row.CORPINFO_ID,'2')">{{ row.completions_num }}</span>
</template>
</el-table-column>
<el-table-column prop="ybCount" label="废除数" align="center" >
<template slot-scope="{row}">
<span :style="row.abolishments_num > 0 ? {color:'#0c60e1',cursor: 'pointer'} : {color: '#606266'}" @click="goList('highwork_list',row.CORPINFO_ID, '3')">{{ row.abolishments_num }}</span>
</template>
</el-table-column>
<el-table-column prop="zdCount" label="进行数" align="center" >
<template slot-scope="{row}">
<span :style="row.operations_num > 0 ? {color:'#0c60e1',cursor: 'pointer'} : {color: '#606266'}" @click="goList('highwork_list',row.CORPINFO_ID, '4')">{{ row.operations_num }}</span>
</template>
</el-table-column>
</el-table>
<div class="page-btn-group">
<div/>
<pagination :total="total" :page.sync="listQuery.page" :limit.sync="listQuery.limit" @pagination="getList" />
</div>
</div>
</template>
<script>
import Pagination from '@/components/Pagination' // el-pagination
import { requestFN } from '@/utils/request'
import waves from '@/directive/waves' // waves directive
import SelectTree from '@/components/SelectTree'
export default {
components: { Pagination, SelectTree },
directives: { waves },
data() {
return {
USER_LEVEL: sessionStorage.getItem('user').LEVEL || -1,
config: config,
listLoading: true,
add: false,
del: false,
edit: false,
listQuery: {
page: 1,
limit: 20
},
total: 0,
KEYWORDS: '',
varList: [],
pd: []
}
},
async created() {
await this.getList()
},
methods: {
getQuery() {
this.getList()
},
goKeyReset() {
this.KEYWORDS = ''
this.getList()
},
// ,
goList(tableName, CORPINFO_ID, ticketType) {
this.$parent.activeName = tableName
this.$parent.CORPINFO_ID = CORPINFO_ID
this.$parent.ticketType = ticketType
this.$parent.CUTROAD_ID =''
},
getList() {
return new Promise((resolve) => {
this.listLoading = true
requestFN(
'/dangerousWork/gfHighWork/corpCountlist?showCount=' + this.listQuery.limit + '&currentPage=' + this.listQuery.page,
{
COPRINF_ID: sessionStorage.getItem('user').CORPINFO_ID || '',
KEYWORDS: this.KEYWORDS
}
).then((data) => {
this.listLoading = false
this.varList = data.varList
this.total = data.page.totalResult
resolve()
}).catch((e) => {
this.listLoading = false
})
})
}
}
}
</script>

View File

@ -0,0 +1,274 @@
<template>
<div>
<div id="printTest" class="app-container print-work">
<el-page-header content="审批表详情" class="no-print" @back="goBack"/>
<table class="table-ui">
<thead>
<tr>
<td colspan="4" style="border: none">
<div class="level-title mt-20">
<h1>高处安全作业票</h1>
<div class="level-btns">编号:{{ pd.CHECK_NO }}</div>
</div>
</td>
</tr>
</thead>
<tr>
<td class="bbg">作业申请单位</td>
<td>{{ pd.APPLY_DEPARTMENT_NAME }}</td>
<td class="bbg">作业申请时间</td>
<td>{{ pd.CREATTIME }}</td>
</tr>
<tr>
<td class="bbg">作业地点</td>
<td>{{ pd.WORK_PLACE }}</td>
<td class="bbg">作业内容</td>
<td>{{ pd.WORK_CONTENT }}</td>
</tr>
<tr>
<td class="bbg">作业高度</td>
<td>{{ pd.WORK_HIGH }}</td>
<td class="bbg">高处作业级别</td>
<td>
{{ pd.WORK_LEVEL == '1' ? 'I级高处作业' : '' }}
{{ pd.WORK_LEVEL == '2' ? 'II级高处作业' : '' }}
{{ pd.WORK_LEVEL == '3' ? 'III级高处作业' : '' }}
{{ pd.WORK_LEVEL == '4' ? 'IV级高处作业' : '' }}
</td>
</tr>
<tr>
<td class="bbg">作业单位</td>
<td>{{ pd.CONSTRUCTION_DEPARTMENT_NAME }}</td>
<td class="bbg">监护人</td>
<td>
<div v-if="pd.GUARDIAN_USER_SIGNER_PATH" style="text-align: right">
<span>签字</span>
<img v-viewer :src="config.fileUrl + pd.GUARDIAN_USER_SIGNER_PATH" alt="" width="100" height="100">
<span>{{ pd.GUARDIAN_USER_SIGNER_TIME }}</span>
</div>
</td>
</tr>
<tr>
<td class="bbg">作业人</td>
<td>{{ pd.PROJECT_MANAGER }}</td>
<td class="bbg">作业负责人</td>
<td>{{ pd.CONSTRUCTION_USER_NAME }}</td>
</tr>
<tr>
<td class="bbg">关联的其他特殊作业及安全作业票编号</td>
<td colspan="3">{{ pd.SPECIAL_WORK }}</td>
</tr>
<tr>
<td class="bbg">风险辨识结果</td>
<td colspan="3">{{ pd.HAZARD_IDENTIFICATION }}</td>
</tr>
<tr>
<td class="bbg">作业实施时间</td>
<td colspan="3">{{ pd.WORK_START_DATE }}{{ pd.WORK_END_DATE }}</td>
</tr>
<tr>
<td colspan="4">
<table class="table-ui">
<tr>
<td>序号</td>
<td>安全措施</td>
<td>是否涉及</td>
<td>确认人</td>
</tr>
<tr v-for="(item,index) in measuresList" :key="index">
<td>{{ index + 1 }}</td>
<td>{{ item.PROTECTIVE_MEASURES }}</td>
<td>
<span v-if="item.STATUS=='1'"><input type="radio" disabled checked>&nbsp;&nbsp;&nbsp;&nbsp;</span>
<span v-if="item.STATUS=='-1'"><input type="radio" disabled checked>不涉及</span>
</td>
<td>
{{ item.CONFIRM_NAME }}
</td>
</tr>
<tr v-if="pd.CONFIRM_USER_MEASURES || pd.LEADER_USER_MEASURES || pd.AUDIT_USER_MEASURES || pd.APPROVE_USER_MEASURES ">
<td>{{ measuresList.length + 1 }}</td>
<td colspan="3">
<div v-if="pd.CONFIRM_USER_MEASURES" style="display: flex;justify-content: space-between;">
<span>其他安全措施{{ pd.CONFIRM_USER_MEASURES }}</span>
<span>编制人{{ pd.CONSTRUCTION_USER_NAME }}</span>
</div>
<div v-if="pd.LEADER_USER_ID && pd.CONFIRM_USER_MEASURES" style="display: flex;justify-content: space-between;margin-top: 10px;">
<span>其他安全措施{{ pd.LEADER_USER_MEASURES }}</span>
<span>编制人{{ pd.LEADER_USER_NAME }}</span>
</div>
<div v-if="pd.AUDIT_USER_ID && pd.AUDIT_USER_MEASURES" style="display: flex;justify-content: space-between;margin-top: 10px;">
<span>其他安全措施{{ pd.AUDIT_USER_MEASURES }}</span>
<span>编制人{{ pd.AUDIT_USER_NAME }}</span>
</div>
<div v-if="pd.APPROVE_USER_MEASURES" style="display: flex;justify-content: space-between;margin-top: 10px;">
<span>其他安全措施{{ pd.APPROVE_USER_MEASURES }}</span>
<span>编制人{{ pd.APPROVE_USER_NAME }}</span>
</div>
</td>
</tr>
</table>
</td>
</tr>
<tr>
<td class="bbg">安全交底人</td>
<td colspan="10">
<div v-if="pd.CONFESS_USER_SIGNER_PATH" style="text-align: right">
<span>签字</span>
<img v-viewer :src="config.fileUrl + pd.CONFESS_USER_SIGNER_PATH" alt="" width="100" height="100">
<span>{{ pd.CONFESS_USER_SIGNER_TIME }}</span>
</div>
</td>
</tr>
<tr>
<td class="bbg">接受交底人</td>
<td colspan="10">
<div v-if="pd.ACCEPT_CONFESS_USER_SIGNER_PATH" style="text-align: right">
<span>签字</span>
<img v-viewer :src="config.fileUrl + pd.ACCEPT_CONFESS_USER_SIGNER_PATH" alt="" width="100" height="100">
<span>{{ pd.ACCEPT_CONFESS_USER_SIGNER_TIME }}</span>
</div>
</td>
</tr>
<tr v-if="pd.CONSTRUCTION_USER_SIGNER_PATH">
<td colspan="4">
<div>作业负责人意见{{ pd.CONSTRUCTION_CONTENT }}</div>
<div style="text-align: right">
<span>签字</span>
<img v-viewer :src="config.fileUrl + pd.CONSTRUCTION_USER_SIGNER_PATH" alt="" width="100" height="100">
<span>{{ pd.CONSTRUCTION_USER_SIGNER_TIME }}</span>
</div>
</td>
</tr>
<tr v-if="pd.LEADER_USER_SIGNER_PATH">
<td colspan="4">
<div>所在单位意见{{ pd.LEADER_CONTENT }}</div>
<div style="text-align: right">
<span>签字</span>
<img v-viewer :src="config.fileUrl + pd.LEADER_USER_SIGNER_PATH" alt="" width="100" height="100">
<span>{{ pd.LEADER_USER_SIGNER_TIME }}</span>
</div>
</td>
</tr>
<tr v-if="pd.AUDIT_USER_SIGNER_PATH">
<td colspan="4">
<div>审核部门意见{{ pd.AUDIT_CONTENT }}</div>
<div style="text-align: right">
<span>签字</span>
<img v-viewer :src="config.fileUrl + pd.AUDIT_USER_SIGNER_PATH" alt="" width="100" height="100">
<span>{{ pd.AUDIT_USER_SIGNER_TIME }}</span>
</div>
</td>
</tr>
<tr v-if="pd.APPROVE_USER_SIGNER_PATH">
<td colspan="4">
<div>审批部门意见{{ pd.APPROVE_CONTENT }}</div>
<div style="text-align: right">
<span>签字</span>
<img v-viewer :src="config.fileUrl + pd.APPROVE_USER_SIGNER_PATH" alt="" width="100" height="100">
<span>{{ pd.APPROVE_USER_SIGNER_TIME }}</span>
</div>
</td>
</tr>
<tr v-if="pd.ACCEPT_USER_SIGNER_PATH">
<td colspan="4">
<div>完工验收{{ pd.ACCEPT_CONTENT }}</div>
<div style="text-align: right">
<span>签字</span>
<img v-viewer :src="config.fileUrl + pd.ACCEPT_USER_SIGNER_PATH" alt="" width="100" height="100">
<span>{{ pd.ACCEPT_USER_SIGNER_TIME }}</span>
</div>
</td>
</tr>
</table>
</div>
<!-- <div class="ui-height" />-->
<div class="ui-foot">
<el-button icon="el-icon-arrow-left" @click="goBack"> </el-button>
</div>
</div>
</template>
<script>
import { requestFN } from '@/utils/request'
import dateformat from '@/utils/dateformat'
export default {
data() {
return {
config: config,
HIGHWORK_ID: this.$parent.HIGHWORK_ID, // ID
pd: [], //
measuresList: [],
otherProtectiveMeasures: [],
hazardIdentification: []
}
},
created() {
this.getData()
},
methods: {
validStr(str) {
if (str != null && str != '' && typeof (str) != 'undefined' && str != 0) { return true }
return false
},
formatTime(date, column) {
if (date) {
return dateformat(date, 'YYYY年MM月DD日HH时mm分')
} else {
return ''
}
},
formatDate(date, column) {
if (date) {
return dateformat(date, 'YYYY-MM-DD')
} else {
return ''
}
},
getRowKey(row) {
return row.HIGHWORK_ID
},
getData() {
this.listLoading = true
requestFN(
'/dangerousWork/gfHighWork/goEdit',
{
HIGHWORK_ID: this.HIGHWORK_ID
}
).then((data) => {
this.listLoading = false
this.pd = data.pd // map
this.measuresList = data.measuresList // map
this.pd.CONFIRM_USER_MEASURES = data.pd.OTHER_PROTECTIVE_MEASURES.split(';_;')[0]
this.pd.LEADER_USER_MEASURES = data.pd.OTHER_PROTECTIVE_MEASURES.split(';_;')[1]
this.pd.AUDIT_USER_MEASURES = data.pd.OTHER_PROTECTIVE_MEASURES.split(';_;')[2]
this.pd.APPROVE_USER_MEASURES = data.pd.OTHER_PROTECTIVE_MEASURES.split(';_;')[3]
}).catch((e) => {
this.listLoading = false
})
},
goBack() {
this.$parent.activeName = 'highwork_list'
}
}
}
</script>
<style lang="sass" scoped>
.print-approval-p10
padding: 20px 0
span
vertical-align: middle
.bbg
width: 270px
.print-approval-img
width: 200px
height: 97px
display: inline-block
img
width: 100%
height: 100%
.app-container
margin-bottom: 50px
</style>

View File

@ -0,0 +1,352 @@
<template>
<div class="app-container">
<el-form label-width="50px">
<el-row>
<el-col :span="4">
<el-form-item label="编号">
<el-input v-model="KEYWORDS" placeholder="请输入编号"/>
</el-form-item>
</el-col>
<el-col :span="4">
<el-form-item label="状态">
<el-select v-model="STATUS" clearable placeholder="请选择" style="width: 100%;">
<el-option v-for="item in statusList" :key="item.ID" :label="item.NAME" :value="item.ID" />
</el-select>
</el-form-item>
</el-col>
<el-col :span="4">
<el-form-item label-width="10px">
<el-button v-waves class="filter-item" type="primary" icon="el-icon-search" @click="getQuery">
搜索
</el-button>
<el-button v-waves icon="el-icon-refresh" type="success" @click="goKeyReset">
重置
</el-button>
</el-form-item>
</el-col>
</el-row>
</el-form>
<el-table v-loading="listLoading" ref="multipleTable" :data="varList" :row-key="getRowKey" :header-cell-style="{'font-weight': 'bold','color': '#000'}" tooltip-effect="dark" border fit highlight-current-row>
<el-table-column :reserve-selection="true" type="selection" width="55" align="center" />
<el-table-column type="index" label="序号" width="50" align="center" />
<el-table-column prop="CHECK_NO" label="编号" show-overflow-tooltip />
<el-table-column prop="APPLY_USER" label="填写人" />
<el-table-column prop="CONSTRUCTION_USER_NAME" label="作业负责人" show-overflow-tooltip />
<el-table-column prop="LEADER_USER_NAME" label="所在单位负责人" show-overflow-tooltip >
<template slot-scope="{row}">
{{ row.LEADER_USER_NAME || ' 已跳过' }}
</template>
</el-table-column>
<el-table-column prop="AUDIT_USER_NAME" label="审核部门负责人" show-overflow-tooltip >
<template slot-scope="{row}">
{{ row.AUDIT_USER_NAME || ' 已跳过' }}
</template>
</el-table-column>
<el-table-column prop="APPROVE_USER_NAME" label="审批部门负责人" show-overflow-tooltip >
<template slot-scope="{row}">
{{ row.APPROVE_USER_NAME || ' 已跳过' }}
</template>
</el-table-column>
<el-table-column prop="ACCEPT_USER_NAME" label="验收部门负责人" show-overflow-tooltip />
<el-table-column prop="STATUS" label="审核状态">
<template slot-scope="{row}">
<span v-if="row.APPLY_STATUS==0"></span>
<span v-else-if="row.APPLY_STATUS==1">作业负责人待审核</span>
<span v-else-if="row.APPLY_STATUS==2">所在单位待审核</span>
<span v-else-if="row.APPLY_STATUS==3">审核部门待审核</span>
<span v-else-if="row.APPLY_STATUS==4">审批部门待审核</span>
<span v-else-if="row.APPLY_STATUS==5">待验收</span>
<span v-else-if="row.APPLY_STATUS==6">验收归档</span>
<span v-else-if="row.APPLY_STATUS==-2">作业负责人审核打回</span>
<span v-else-if="row.APPLY_STATUS==-3">所在单位审核打回</span>
<span v-else-if="row.APPLY_STATUS==-4">审核部门审核打回</span>
<span v-else-if="row.APPLY_STATUS==-5">审批部门审核打回</span>
<span v-else-if="row.APPLY_STATUS==-6">验收打回</span>
</template>
</el-table-column>
<el-table-column prop="ISDELETE" label="是否删除">
<template slot-scope="{row}">
<span v-if="row.ISDELETE==0"></span>
<span v-else-if="row.ISDELETE==1"></span>
</template>
</el-table-column>
<el-table-column label="操作" align="center" width="230">
<template slot-scope="{row}">
<el-button type="primary" icon="el-icon-plus" @click="goChart(row)"></el-button>
<el-button type="primary" icon="el-icon-document" size="mini" @click="goDetail(row.HIGHWORK_ID)"></el-button>
</template>
</el-table-column>
</el-table>
<div class="page-btn-group">
<div>
<!-- <el-button v-show="add" type="primary" icon="el-icon-plus" @click="handleAdd"></el-button>-->
<!-- <el-button v-show="del" type="danger" icon="el-icon-delete" plain @click="batchDel"></el-button>-->
</div>
<pagination :total="total" :page.sync="listQuery.page" :limit.sync="listQuery.limit" @pagination="getList" />
</div>
<el-dialog :visible.sync="dialogFormShow " :title="dialogType==='add'?'查看流程图':'新增'" width="1350px">
<el-steps :active="getStatus()" :process-status="getProcessStatus()" finish-status="success" align-center>
<el-step title="高处作业提交">
<template slot="description">
<div>{{ getProcessMessage().title }}</div>
<div>{{ getProcessMessage().USER_NAME }}</div>
<div>{{ getProcessMessage().OPERATTIME }}</div>
</template>
</el-step>
<el-step title="作业负责人意见" description="">
<template slot="description">
<div>{{ pd.CONSTRUCTION_USER_NAME }}</div>
<div>{{ pd.CONSTRUCTION_USER_SIGNER_TIME }}</div>
</template>
</el-step>
<el-step title="所在单位意见">
<template slot="description">
<div v-if="getIsPase('LEADER_USER_NAME')">{{ '' }}</div>
<div v-else>{{ pd.LEADER_USER_NAME }}</div>
<div>{{ pd.LEADER_USER_SIGNER_TIME }}</div>
</template>
</el-step>
<el-step title="审核部门意见" >
<template slot="description">
<div v-if="getIsPase('AUDIT_USER_NAME')">{{ '' }}</div>
<div v-else>{{ pd.AUDIT_USER_NAME }}</div>
<div>{{ pd.AUDIT_USER_SIGNER_TIME }}</div>
</template>
</el-step>
<el-step :description="getIsPase('APPROVE_USER_NAME')" title="审批部门意见" >
<template slot="description">
<div v-if="getIsPase('APPROVE_USER_NAME')">{{ '' }}</div>
<div v-else>{{ pd.APPROVE_USER_NAME }}</div>
<div>{{ pd.APPROVE_USER_SIGNER_TIME }}</div>
</template>
</el-step>
<el-step title="完成验收" description="">
<template slot="description">
<div>{{ pd.ACCEPT_USER_NAME }}</div>
<div>{{ pd.ACCEPT_USER_SIGNER_TIME }}</div>
</template>
</el-step>
<el-step title="验收归档" description="">
<template slot="description">
<div>{{ pd.ACCEPT_USER_NAME }}</div>
<div>{{ pd.ACCEPT_USER_SIGNER_TIME }}</div>
</template>
</el-step>
</el-steps>
<div slot="footer" class="dialog-footer">
<!-- <el-button @click="dialogFormShow = false"> </el-button>-->
<el-button type="primary" @click="dialogFormShow = false"> </el-button>
</div>
</el-dialog>
<div style="height: 60px;"></div>
<div class="ui-foot">
<el-button type="primary" @click="goBack"> </el-button>
</div>
</div>
</template>
<script>
import Pagination from '@/components/Pagination' // el-pagination
import { requestFN } from '@/utils/request'
import waves from '@/directive/waves' // waves directive
export default {
components: { Pagination },
directives: { waves },
data() {
return {
listLoading: true,
add: false,
del: false,
edit: false,
listQuery: {
page: 1,
limit: 20
},
total: 0,
KEYWORDS: '',
varList: [],
pd: [],
multipleSelectionAll: [], //
multipleSelection: [], //
dialogFormShow: false,
dialogFormEdit: false,
dialogType: 'add',
replyVarList: [], // REPLY
replyListQuery: {
page: 1,
limit: 20
},
replyTotal: 0,
dialogFormHuifuShow: false,
statusList: [
{ ID: '', NAME: '请选择' },
{ ID: '0', NAME: '高处作业待提交' },
{ ID: '1', NAME: '作业负责人待审核' },
{ ID: '2', NAME: '所在单位待审核' },
{ ID: '3', NAME: '审核部门待审核' },
{ ID: '4', NAME: '审批部门待审核' },
{ ID: '5', NAME: '待验收' },
{ ID: '6', NAME: '验收归档' },
{ ID: '-2', NAME: '作业负责人审核打回' },
{ ID: '-3', NAME: '所在单位审核打回' },
{ ID: '-4', NAME: '审核部门审核打回' },
{ ID: '-5', NAME: '审批部门审核打回' },
{ ID: '-6', NAME: '验收打回' }
],
STATUS: '',
DEPTIDS: ''
}
},
created() {
this.getList()
},
methods: {
getRowKey(row) {
return row.HIGHWORK_ID
},
//
getQuery() {
this.$refs.multipleTable.clearSelection()
this.getList()
},
goKeyReset() {
this.KEYWORDS = ''
this.STATUS = ''
this.getQuery()
},
//
getList() {
this.listLoading = true
requestFN(
'/dangerousWork/gfHighWork/list?showCount=' + this.listQuery.limit + '&currentPage=' + this.listQuery.page,
{
KEYWORDS: this.KEYWORDS, APPLY_STATUS: this.STATUS,
DEPTIDS: this.DEPTIDS, tm: new Date().getTime(),
CORPINFO_ID: this.$parent.CORPINFO_ID,
ticketType: this.$parent.ticketType
}
).then((data) => {
this.listLoading = false
this.varList = data.varList
this.total = data.page.totalResult
this.hasButton()
}).catch((e) => {
this.listLoading = false
})
},
//
hasButton() {
var keys = 'highwork:add,highwork:del,highwork:edit,toExcel'
requestFN(
'/head/hasButton',
{
keys: keys
}
).then((data) => {
this.add = data.highworkfhadminadd //
this.del = data.highworkfhadmindel //
this.edit = data.highworkfhadminedit //
}).catch((e) => {
this.listLoading = false
})
},
goChart(row) {
this.pd = row
this.dialogFormShow = true
},
getStatus() {
if (this.pd.APPLY_STATUS <= '0') {
return 0
}
if (this.pd.APPLY_STATUS == '1') {
return 1
}
if (this.pd.APPLY_STATUS == '2') {
return 2
}
if (this.pd.APPLY_STATUS == '3') {
return 3
}
if (this.pd.APPLY_STATUS == '4') {
return 4
}
if (this.pd.APPLY_STATUS == '5') {
return 5
}
if (this.pd.APPLY_STATUS == '6') {
return 7
}
},
getProcessStatus() {
if (this.pd.APPLY_STATUS < '0') {
return 'error'
} else {
return 'process'
}
},
getProcessMessage() {
let obj = {}
if (this.pd.APPLY_STATUS >= '0') {
obj = {
title: '',
USER_NAME: this.pd.APPLY_USER,
OPERATTIME: this.pd.CREATTIME
}
}
if (this.pd.APPLY_STATUS == '-2') {
obj = {
title: '作业负责人审核打回',
USER_NAME: this.pd.CONSTRUCTION_USER_NAME,
OPERATTIME: this.pd.OPERATTIME
}
}
if (this.pd.APPLY_STATUS == '-3') {
obj = {
title: '所在单位审核打回',
USER_NAME: this.pd.LEADER_USER_NAME,
OPERATTIME: this.pd.OPERATTIME
}
}
if (this.pd.APPLY_STATUS == '-4') {
obj = {
title: '审核部门审核打回',
USER_NAME: this.pd.AUDIT_USER_NAME,
OPERATTIME: this.pd.OPERATTIME
}
}
if (this.pd.APPLY_STATUS == '-5') {
obj = {
title: '审批部门审核打回',
USER_NAME: this.pd.APPROVE_USER_NAME,
OPERATTIME: this.pd.OPERATTIME
}
}
if (this.pd.APPLY_STATUS == '-6') {
obj = {
title: '验收打回',
AUSER_NAME: this.pd.ACCEPT_USER_NAME,
OPERATTIME: this.pd.OPERATTIME
}
}
return obj
},
getIsPase(col) {
if (!this.pd[col]) {
return '已跳过'
}
},
goDetail(id) {
this.$parent.activeName = 'Detail'
this.$parent.HIGHWORK_ID = id
},
goBack(){
this.$parent.activeName = 'CorpInfo'
this.$parent.HIGHWORK_ID = ''
}
}
}
</script>

View File

@ -0,0 +1,27 @@
<template>
<div>
<CorpInfo v-show="activeName=='CorpInfo'" ref="list"/>
<List v-if="activeName=='highwork_list'" />
<Detail v-if="activeName=='Detail'"/>
</div>
</template>
<script>
import CorpInfo from "./components/corpInfo";
import List from './components/list'
import Detail from './components/detail'
export default {
components: {CorpInfo,List,Detail},
data() {
return {
activeName: 'CorpInfo',
HIGHWORK_ID: '',
ticketType : '',
CUTROAD_ID:''
}
}
}
</script>
<style scoped>
</style>

View File

@ -0,0 +1,128 @@
<template>
<div class="app-container">
<div class="filter-container">
<div class="filter-group ">
<div class="filter-lable" style="width: 60px">
公司名称
</div>
<div class="filter-width">
<el-input v-model="KEYWORDS" placeholder="公司名称" class="filter-item" style="width: 150px;"/>
</div>
</div>
<el-button v-waves class="filter-item" type="primary" icon="el-icon-search" @click="getQuery">
搜索
</el-button>
<el-button v-waves class="filter-item" type="success" icon="el-icon-refresh" @click="goKeyReset">
重置
</el-button>
</div>
<el-table
v-loading="listLoading"
ref="multipleTable"
:data="varList"
:header-cell-style="{
'font-weight': 'bold',
'color': '#000'
}"
tooltip-effect="dark"
border
fit
highlight-current-row
>
<el-table-column type="index" label="序号" width="50" align="center" />
<el-table-column prop="CORP_NAME" label="公司名称" />
<el-table-column prop="checkedCount" label="申请总数" align="center" >
<template slot-scope="{row}">
<span :style="row.applications_num > 0 ? {color:'#0c60e1',cursor: 'pointer'} : {color: '#606266'}" @click="goList('hoisting_list',row.CORPINFO_ID,'1')">{{ row.applications_num }}</span>
</template>
</el-table-column>
<el-table-column prop="checkedItemCount" label="完成数" align="center" >
<template slot-scope="{row}">
<span :style="row.completions_num > 0 ? {color:'#0c60e1',cursor: 'pointer'} : {color: '#606266'}" @click="goList('hoisting_list',row.CORPINFO_ID,'2')">{{ row.completions_num }}</span>
</template>
</el-table-column>
<el-table-column prop="ybCount" label="废除数" align="center" >
<template slot-scope="{row}">
<span :style="row.abolishments_num > 0 ? {color:'#0c60e1',cursor: 'pointer'} : {color: '#606266'}" @click="goList('hoisting_list',row.CORPINFO_ID, '3')">{{ row.abolishments_num }}</span>
</template>
</el-table-column>
<el-table-column prop="zdCount" label="进行数" align="center" >
<template slot-scope="{row}">
<span :style="row.operations_num > 0 ? {color:'#0c60e1',cursor: 'pointer'} : {color: '#606266'}" @click="goList('hoisting_list',row.CORPINFO_ID, '4')">{{ row.operations_num }}</span>
</template>
</el-table-column>
</el-table>
<div class="page-btn-group">
<div/>
<pagination :total="total" :page.sync="listQuery.page" :limit.sync="listQuery.limit" @pagination="getList" />
</div>
</div>
</template>
<script>
import Pagination from '@/components/Pagination' // el-pagination
import { requestFN } from '@/utils/request'
import waves from '@/directive/waves' // waves directive
import SelectTree from '@/components/SelectTree'
export default {
components: { Pagination, SelectTree },
directives: { waves },
data() {
return {
USER_LEVEL: sessionStorage.getItem('user').LEVEL || -1,
config: config,
listLoading: true,
add: false,
del: false,
edit: false,
listQuery: {
page: 1,
limit: 20
},
total: 0,
KEYWORDS: '',
varList: [],
pd: []
}
},
async created() {
await this.getList()
},
methods: {
getQuery() {
this.getList()
},
goKeyReset() {
this.KEYWORDS = ''
this.getList()
},
// ,
goList(tableName, CORPINFO_ID, ticketType) {
this.$parent.activeName = tableName
this.$parent.CORPINFO_ID = CORPINFO_ID
this.$parent.ticketType = ticketType
this.$parent.HOISTING_ID =''
},
getList() {
return new Promise((resolve) => {
this.listLoading = true
requestFN(
'/dangerousWork/gfHoisting/corpCountlist?showCount=' + this.listQuery.limit + '&currentPage=' + this.listQuery.page,
{
COPRINF_ID: sessionStorage.getItem('user').CORPINFO_ID || '',
KEYWORDS: this.KEYWORDS
}
).then((data) => {
this.listLoading = false
this.varList = data.varList
this.total = data.page.totalResult
resolve()
}).catch((e) => {
this.listLoading = false
})
})
}
}
}
</script>

View File

@ -0,0 +1,305 @@
<template>
<div>
<div id="printTest" class="app-container print-work">
<el-page-header content="审批表详情" class="no-print" @back="goBack"/>
<table class="table-ui">
<thead>
<tr>
<td colspan="6" style="border: none">
<div class="level-title mt-20">
<h1>吊装安全作业票</h1>
<div class="level-btns">编号:{{ pd.CHECK_NO }}</div>
</div>
</td>
</tr>
</thead>
<tr>
<td class="bbg">作业申请单位</td>
<td>{{ pd.APPLY_DEPARTMENT_NAME }}</td>
<td class="bbg">作业单位</td>
<td>{{ pd.LEADER_DEPARTMENT_NAME }}</td>
<td class="bbg">作业申请时间</td>
<td>{{ pd.CREATTIME }}</td>
</tr>
<tr>
<td class="bbg">吊装地点</td>
<td>{{ pd.WORK_PLACE }}</td>
<td class="bbg">吊具名称</td>
<td>{{ pd.TOOL_NAME }}</td>
<td class="bbg">吊物内容</td>
<td>{{ pd.WORK_CONTENT }}</td>
</tr>
<tr>
<td class="bbg">吊装作业人</td>
<td>{{ pd.WORK_USER }}</td>
<td class="bbg">司索人</td>
<td>{{ pd.SISUO_USER }}</td>
<td class="bbg">监护人</td>
<td>
<div v-if="pd.GUARDIAN_USER_SIGNER_PATH" style="text-align: right">
<span>签字</span>
<img v-viewer :src="config.fileUrl + pd.GUARDIAN_USER_SIGNER_PATH" alt="" width="100" height="100">
<span>{{ pd.GUARDIAN_USER_SIGNER_TIME }}</span>
</div>
</td>
</tr>
<tr>
<td class="bbg">指挥人员</td>
<td>{{ pd.PROJECT_MANAGER }}</td>
<td class="bbg" colspan="2">吊物质量t及作业级别</td>
<td colspan="2">
<span>{{ pd.PART_WEIGHT }}t</span>
<span style="margin-left: 20px;">
{{ pd.WORK_LEVEL == '1' ? '一级作业级别' : '' }}
{{ pd.WORK_LEVEL == '2' ? '二级作业级别' : '' }}
{{ pd.WORK_LEVEL == '3' ? '三级作业级别' : '' }}
</span>
</td>
</tr>
<tr>
<td class="bbg">风险辨识结果</td>
<td colspan="5">{{ pd.HAZARD_IDENTIFICATION }}</td>
</tr>
<tr>
<td class="bbg">作业实施时间</td>
<td colspan="5">{{ pd.WORK_START_DATE }}{{ pd.WORK_END_DATE }}</td>
</tr>
<tr>
<td colspan="6">
<table class="table-ui">
<tr>
<td>序号</td>
<td>安全措施</td>
<td>是否涉及</td>
<td>确认人</td>
</tr>
<tr v-for="(item,index) in measuresList" :key="index">
<td>{{ index + 1 }}</td>
<td>{{ item.PROTECTIVE_MEASURES }}
</td>
<td>
<span v-if="item.STATUS=='1'"><input type="radio" disabled checked>&nbsp;&nbsp;&nbsp;&nbsp;</span>
<span v-if="item.STATUS=='-1'"><input type="radio" disabled checked>不涉及</span>
</td>
<td>
{{ item.CONFIRM_NAME }}
</td>
</tr>
<tr v-if="pd.LEADER_USER_MEASURES || pd.CONFIRM_USER_MEASURES || pd.AUDIT_USER_MEASURES || pd.APPROVE_USER_MEASURES">
<td>{{ measuresList.length + 1 }}</td>
<td colspan="3">
<div v-if="pd.LEADER_USER_MEASURES" style="display: flex;justify-content: space-between;">
<span>其他安全措施{{ pd.LEADER_USER_MEASURES }}</span>
<span>编制人{{ pd.LEADER_USER_NAME }}</span>
</div>
<div v-if="pd.CONSTRUCTION_USER_ID && pd.CONFIRM_USER_MEASURES" style="display: flex;justify-content: space-between;margin-top: 10px;">
<span>其他安全措施{{ pd.CONFIRM_USER_MEASURES }}</span>
<span>编制人{{ pd.CONSTRUCTION_USER_NAME }}</span>
</div>
<div v-if="pd.AUDIT_USER_ID && pd.AUDIT_USER_MEASURES" style="display: flex;justify-content: space-between;margin-top: 10px;">
<span>其他安全措施{{ pd.AUDIT_USER_MEASURES }}</span>
<span>编制人{{ pd.AUDIT_USER_NAME }}</span>
</div>
<div v-if="pd.APPROVE_USER_ID && pd.APPROVE_USER_MEASURES" style="display: flex;justify-content: space-between;margin-top: 10px;">
<span>其他安全措施{{ pd.APPROVE_USER_MEASURES }}</span>
<span>编制人{{ pd.APPROVE_USER_NAME }}</span>
</div>
</td>
</tr>
</table>
</td>
</tr>
<tr>
<td class="bbg">安全交底人</td>
<td colspan="10">
<div v-if="pd.CONFESS_USER_SIGNER_PATH" style="text-align: right">
<span>签字</span>
<img v-viewer :src="config.fileUrl + pd.CONFESS_USER_SIGNER_PATH" alt="" width="100" height="100">
<span>{{ pd.CONFESS_USER_SIGNER_TIME }}</span>
</div>
</td>
</tr>
<tr>
<td class="bbg">接受交底人</td>
<td colspan="10">
<div v-if="pd.ACCEPT_CONFESS_USER_SIGNER_PATH" style="text-align: right">
<span>签字</span>
<img v-viewer :src="config.fileUrl + pd.ACCEPT_CONFESS_USER_SIGNER_PATH" alt="" width="100" height="100">
<span>{{ pd.ACCEPT_CONFESS_USER_SIGNER_TIME }}</span>
</div>
</td>
</tr>
<tr v-if="pd.LEADER_USER_SIGNER_PATH">
<td colspan="6">
<div>作业指挥意见{{ pd.LEADER_CONTENT }}</div>
<div style="text-align: right">
<span>签字</span>
<img v-viewer :src="config.fileUrl + pd.LEADER_USER_SIGNER_PATH" alt="" width="100" height="100">
<span>{{ pd.LEADER_USER_SIGNER_TIME }}</span>
</div>
</td>
</tr>
<tr v-if="pd.CONSTRUCTION_USER_SIGNER_PATH">
<td colspan="6">
<div>所在单位意见{{ pd.CONSTRUCTION_CONTENT }}</div>
<div style="text-align: right">
<span>签字</span>
<img v-viewer :src="config.fileUrl + pd.CONSTRUCTION_USER_SIGNER_PATH" alt="" width="100" height="100">
<span>{{ pd.CONSTRUCTION_USER_SIGNER_TIME }}</span>
</div>
</td>
</tr>
<tr v-if="pd.AUDIT_USER_SIGNER_PATH">
<td colspan="6">
<div>审核部门意见{{ pd.AUDIT_CONTENT }}</div>
<div style="text-align: right">
<span>签字</span>
<img v-viewer :src="config.fileUrl + pd.AUDIT_USER_SIGNER_PATH" alt="" width="100" height="100">
<span>{{ pd.AUDIT_USER_SIGNER_TIME }}</span>
</div>
</td>
</tr>
<tr v-if="pd.APPROVE_USER_SIGNER_PATH">
<td colspan="6">
<div>审批部门意见{{ pd.APPROVE_CONTENT }}</div>
<div style="text-align: right">
<span>签字</span>
<img v-viewer :src="config.fileUrl + pd.APPROVE_USER_SIGNER_PATH" alt="" width="100" height="100">
<span>{{ pd.APPROVE_USER_SIGNER_TIME }}</span>
</div>
</td>
</tr>
<tr v-if="pd.ACCEPT_USER_SIGNER_PATH">
<td colspan="6">
<div>完工验收{{ pd.ACCEPT_CONTENT }}</div>
<div style="text-align: right">
<span>签字</span>
<img v-viewer :src="config.fileUrl + pd.ACCEPT_USER_SIGNER_PATH" alt="" width="100" height="100">
<span>{{ pd.ACCEPT_USER_SIGNER_TIME }}</span>
</div>
</td>
</tr>
</table>
</div>
<!-- <div class="ui-height" />-->
<div class="ui-foot">
<!-- <el-button v-print="'#printTest'" v-if="pd.APPLY_STATUS==4"> </el-button>-->
<el-button icon="el-icon-arrow-left" @click="goBack"> </el-button>
</div>
</div>
</template>
<script>
import { requestFN } from '@/utils/request'
import dateformat from '@/utils/dateformat'
export default {
data() {
return {
config: config,
HOISTING_ID: this.$parent.HOISTING_ID, // ID
pd: [], //
measuresList: [],
otherProtectiveMeasures: []
}
},
created() {
this.getData()
},
methods: {
handleStr(measuresList) {
for (let i = 0; i < measuresList.length; i++) {
//
const PROTECTIVE_MEASURES = measuresList[i].PROTECTIVE_MEASURES.split('')
for (let j = 1; j <= 3; j++) {
//
if (this.findCharIndex(PROTECTIVE_MEASURES, '', j) !== -1) {
//
PROTECTIVE_MEASURES.splice(
this.findCharIndex(PROTECTIVE_MEASURES, '', j) + 1,
0,
measuresList[i]['ANSWER' + j]
)
}
}
//
measuresList[i].PROTECTIVE_MEASURES = PROTECTIVE_MEASURES.join('')
}
return measuresList
},
findCharIndex(str, char, num) {
let index = str.indexOf(char)
for (let i = 0; i < num - 1; i++) {
index = str.indexOf(char, index + 1)
}
return index
},
validStr(str) {
if (str != null && str != '' && typeof (str) != 'undefined' && str != 0) {
return true
}
return false
},
formatTime(date, column) {
if (date) {
return dateformat(date, 'YYYY年MM月DD日HH时mm分')
} else {
return ''
}
},
formatDate(date, column) {
if (date) {
return dateformat(date, 'YYYY-MM-DD')
} else {
return ''
}
},
getRowKey(row) {
return row.HOISTING_ID
},
getData() {
this.listLoading = true
requestFN(
'/dangerousWork/gfHoisting/goEdit',
{
HOISTING_ID: this.HOISTING_ID
}
).then((data) => {
this.listLoading = false
this.pd = data.pd // map
this.measuresList = this.handleStr(data.measuresList) // map
this.pd.LEADER_USER_MEASURES = this.pd.OTHER_PROTECTIVE_MEASURES.split(';_;')[0]
this.pd.CONFIRM_USER_MEASURES = this.pd.OTHER_PROTECTIVE_MEASURES.split(';_;')[1]
this.pd.AUDIT_USER_MEASURES = this.pd.OTHER_PROTECTIVE_MEASURES.split(';_;')[2]
this.pd.APPROVE_USER_MEASURES = this.pd.OTHER_PROTECTIVE_MEASURES.split(';_;')[3]
}).catch((e) => {
this.listLoading = false
})
},
goBack() {
this.$parent.activeName = 'hoisting_list'
}
}
}
</script>
<style lang="sass" scoped>
.print-approval-p10
padding: 20px 0
span
vertical-align: middle
.print-approval-img
width: 200px
height: 97px
display: inline-block
img
width: 100%
height: 100%
.app-container
margin-bottom: 50px
</style>

View File

@ -0,0 +1,350 @@
<template>
<div class="app-container">
<el-form label-width="50px">
<el-row>
<el-col :span="4">
<el-form-item label="编号">
<el-input v-model="KEYWORDS" placeholder="请输入编号"/>
</el-form-item>
</el-col>
<el-col :span="4">
<el-form-item label="状态">
<el-select v-model="STATUS" clearable placeholder="请选择" style="width: 100%;">
<el-option v-for="item in statusList" :key="item.ID" :label="item.NAME" :value="item.ID" />
</el-select>
</el-form-item>
</el-col>
<el-col :span="4">
<el-form-item label-width="10px">
<el-button v-waves class="filter-item" type="primary" icon="el-icon-search" @click="getQuery">
搜索
</el-button>
<el-button v-waves icon="el-icon-refresh" type="success" @click="goKeyReset">
重置
</el-button>
</el-form-item>
</el-col>
</el-row>
</el-form>
<el-table v-loading="listLoading" ref="multipleTable" :data="varList" :row-key="getRowKey" :header-cell-style="{'font-weight': 'bold','color': '#000'}" tooltip-effect="dark" border fit highlight-current-row>
<el-table-column :reserve-selection="true" type="selection" width="55" align="center" />
<el-table-column type="index" label="序号" width="50" align="center" />
<el-table-column prop="CHECK_NO" label="编号" show-overflow-tooltip />
<el-table-column prop="LEADER_DEPARTMENT_NAME" label="作业单位" />
<el-table-column prop="LEADER_USER_NAME" label="作业指挥负责人" show-overflow-tooltip />
<el-table-column prop="CONSTRUCTION_USER_NAME" label="所在单位负责人" show-overflow-tooltip>
<template slot-scope="{row}">
{{ row.CONSTRUCTION_USER_NAME || ' 已跳过' }}
</template>
</el-table-column>
<el-table-column prop="AUDIT_USER_NAME" label="审核部门负责人" show-overflow-tooltip>
<template slot-scope="{row}">
{{ row.AUDIT_USER_NAME || ' 已跳过' }}
</template>
</el-table-column>
<el-table-column prop="APPROVE_USER_NAME" label="审批部门负责人" show-overflow-toolti >
<template slot-scope="{row}">
{{ row.APPROVE_USER_NAME || ' 已跳过' }}
</template>
</el-table-column>
<el-table-column prop="ACCEPT_USER_NAME" label="验收部门负责人" show-overflow-tooltip />
<el-table-column prop="STATUS" label="审核状态">
<template slot-scope="{row}">
<span v-if="row.APPLY_STATUS==0"></span>
<span v-else-if="row.APPLY_STATUS==1">作业指挥待审核</span>
<span v-else-if="row.APPLY_STATUS==2">所在单位待审核</span>
<span v-else-if="row.APPLY_STATUS==3">审核部门待审核</span>
<span v-else-if="row.APPLY_STATUS==4">审批部门待审核</span>
<span v-else-if="row.APPLY_STATUS==5">待验收</span>
<span v-else-if="row.APPLY_STATUS==6">验收归档</span>
<span v-else-if="row.APPLY_STATUS==-2">作业指挥审核打回</span>
<span v-else-if="row.APPLY_STATUS==-3">所在单位审核打回</span>
<span v-else-if="row.APPLY_STATUS==-4">审核部门审核打回</span>
<span v-else-if="row.APPLY_STATUS==-5">审批部门审核打回</span>
<span v-else-if="row.APPLY_STATUS==-6">验收打回</span>
</template>
</el-table-column>
<el-table-column prop="ISDELETE" label="是否删除">
<template slot-scope="{row}">
<span v-if="row.ISDELETE==0"></span>
<span v-else-if="row.ISDELETE==1"></span>
</template>
</el-table-column>
<el-table-column label="操作" align="center" width="230">
<template slot-scope="{row}">
<el-button type="primary" icon="el-icon-plus" @click="goChart(row)"></el-button>
<el-button type="primary" icon="el-icon-document" size="mini" @click="goDetail(row.HOISTING_ID)"></el-button>
</template>
</el-table-column>
</el-table>
<div class="page-btn-group">
<div>
<!-- <el-button v-show="add" type="primary" icon="el-icon-plus" @click="handleAdd"></el-button>-->
<!-- <el-button v-show="del" type="danger" icon="el-icon-delete" plain @click="batchDel"></el-button>-->
</div>
<pagination :total="total" :page.sync="listQuery.page" :limit.sync="listQuery.limit" @pagination="getList" />
</div>
<el-dialog :visible.sync="dialogFormShow " :title="dialogType==='add'?'查看流程图':'新增'" width="1350px">
<el-steps :active="getStatus()" :process-status="getProcessStatus()" finish-status="success" align-center>
<el-step title="吊装作业提交">
<template slot="description">
<div>{{ getProcessMessage().title }}</div>
<div>{{ getProcessMessage().USER_NAME }}</div>
<div>{{ getProcessMessage().OPERATTIME }}</div>
</template>
</el-step>
<el-step title="作业指挥意见">
<template slot="description">
<div>{{ pd.LEADER_USER_NAME }}</div>
<div>{{ pd.LEADER_USER_SIGNER_TIME }}</div>
</template>
</el-step>
<el-step title="所在单位意见">
<template slot="description">
<div v-if="getIsPase('CONSTRUCTION_USER_NAME')">{{ '' }}</div>
<div v-else>{{ pd.CONSTRUCTION_USER_NAME }}</div>
<div>{{ pd.CONSTRUCTION_USER_SIGNER_TIME }}</div>
</template>
</el-step>
<el-step :description="getIsPase('AUDIT_USER_NAME')" title="审核部门意见" >
<template slot="description">
<div v-if="getIsPase('AUDIT_USER_NAME')">{{ '' }}</div>
<div v-else>{{ pd.AUDIT_USER_NAME }}</div>
<div>{{ pd.AUDIT_USER_SIGNER_TIME }}</div>
</template>
</el-step>
<el-step title="审批部门意见">
<template slot="description">
<div v-if="getIsPase('APPROVE_USER_NAME')">{{ '' }}</div>
<div v-else>{{ pd.APPROVE_USER_NAME }}</div>
<div>{{ pd.APPROVE_USER_SIGNER_TIME }}</div>
</template>
</el-step>
<el-step title="完成验收" description="">
<template slot="description">
<div>{{ pd.ACCEPT_USER_NAME }}</div>
<div>{{ pd.ACCEPT_USER_SIGNER_TIME }}</div>
</template>
</el-step>
<el-step title="验收归档" description="">
<template slot="description">
<div>{{ pd.ACCEPT_USER_NAME }}</div>
<div>{{ pd.ACCEPT_USER_SIGNER_TIME }}</div>
</template>
</el-step>
</el-steps>
<div slot="footer" class="dialog-footer">
<!-- <el-button @click="dialogFormShow = false"> </el-button>-->
<el-button type="primary" @click="dialogFormShow = false"> </el-button>
</div>
</el-dialog>
<div style="height: 60px;"></div>
<div class="ui-foot">
<el-button type="primary" @click="goBack"> </el-button>
</div>
</div>
</template>
<script>
import Pagination from '@/components/Pagination' // el-pagination
import { requestFN } from '@/utils/request'
import waves from '@/directive/waves' // waves directive
export default {
components: { Pagination },
directives: { waves },
data() {
return {
listLoading: true,
add: false,
del: false,
edit: false,
listQuery: {
page: 1,
limit: 20
},
total: 0,
KEYWORDS: '',
varList: [],
pd: [],
multipleSelectionAll: [], //
multipleSelection: [], //
dialogFormShow: false,
dialogFormEdit: false,
dialogType: 'add',
replyVarList: [], // REPLY
replyListQuery: {
page: 1,
limit: 20
},
replyTotal: 0,
dialogFormHuifuShow: false,
statusList: [
{ ID: '', NAME: '请选择' },
{ ID: '0', NAME: '吊装作业待提交' },
{ ID: '1', NAME: '作业指挥待审核' },
{ ID: '2', NAME: '所在单位待审核' },
{ ID: '3', NAME: '审核部门待审核' },
{ ID: '4', NAME: '审批部门待审核' },
{ ID: '5', NAME: '待验收' },
{ ID: '6', NAME: '验收归档' },
{ ID: '-2', NAME: '作业指挥审核打回' },
{ ID: '-3', NAME: '所在单位审核打回' },
{ ID: '-4', NAME: '审核部门审核打回' },
{ ID: '-5', NAME: '审批部门审核打回' },
{ ID: '-6', NAME: '验收打回' }
],
STATUS: '',
DEPTIDS: ''
}
},
created() {
this.getList()
},
methods: {
getRowKey(row) {
return row.HOISTING_ID
},
//
getQuery() {
this.$refs.multipleTable.clearSelection()
this.getList()
},
goKeyReset() {
this.KEYWORDS = ''
this.STATUS = ''
this.getQuery()
},
//
getList() {
this.listLoading = true
requestFN(
'/dangerousWork/gfHoisting/list?showCount=' + this.listQuery.limit + '&currentPage=' + this.listQuery.page,
{
KEYWORDS: this.KEYWORDS, APPLY_STATUS: this.STATUS,
DEPTIDS: this.DEPTIDS, tm: new Date().getTime(),
CORPINFO_ID: this.$parent.CORPINFO_ID,
ticketType: this.$parent.ticketType
}
).then((data) => {
this.listLoading = false
this.varList = data.varList
this.total = data.page.totalResult
this.hasButton()
}).catch((e) => {
this.listLoading = false
})
},
//
hasButton() {
var keys = 'hoisting:add,hoisting:del,hoisting:edit,toExcel'
requestFN(
'/head/hasButton',
{
keys: keys
}
).then((data) => {
this.add = data.hoistingfhadminadd //
this.del = data.hoistingfhadmindel //
this.edit = data.hoistingfhadminedit //
}).catch((e) => {
this.listLoading = false
})
},
goChart(row) {
this.pd = row
this.dialogFormShow = true
},
getStatus() {
if (this.pd.APPLY_STATUS <= '0') {
return 0
}
if (this.pd.APPLY_STATUS == '1') {
return 1
}
if (this.pd.APPLY_STATUS == '2') {
return 2
}
if (this.pd.APPLY_STATUS == '3') {
return 3
}
if (this.pd.APPLY_STATUS == '4') {
return 4
}
if (this.pd.APPLY_STATUS == '5') {
return 5
}
if (this.pd.APPLY_STATUS == '6') {
return 7
}
},
getProcessStatus() {
if (this.pd.APPLY_STATUS < '0') {
return 'error'
} else {
return 'process'
}
},
getProcessMessage() {
let obj = {}
if (this.pd.APPLY_STATUS >= '0') {
obj = {
title: '',
USER_NAME: this.pd.APPLY_USER,
OPERATTIME: this.pd.CREATTIME
}
}
if (this.pd.APPLY_STATUS == '-2') {
obj = {
title: '作业指挥审核打回',
USER_NAME: this.pd.LEADER_USER_NAME,
OPERATTIME: this.pd.OPERATTIME
}
}
if (this.pd.APPLY_STATUS == '-3') {
obj = {
title: '所在单位审核打回',
USER_NAME: this.pd.CONSTRUCTION_USER_NAME,
OPERATTIME: this.pd.OPERATTIME
}
}
if (this.pd.APPLY_STATUS == '-4') {
obj = {
title: '审核部门审核打回',
USER_NAME: this.pd.AUDIT_USER_NAME,
OPERATTIME: this.pd.OPERATTIME
}
}
if (this.pd.APPLY_STATUS == '-5') {
obj = {
title: '审批部门审核打回',
USER_NAME: this.pd.APPROVE_USER_NAME,
OPERATTIME: this.pd.OPERATTIME
}
}
if (this.pd.APPLY_STATUS == '-6') {
obj = {
title: '验收打回',
AUSER_NAME: this.pd.ACCEPT_USER_NAME,
OPERATTIME: this.pd.OPERATTIME
}
}
return obj
},
getIsPase(col) {
if (!this.pd[col]) {
return '已跳过'
}
},
goDetail(id) {
this.$parent.activeName = 'Detail'
this.$parent.HOISTING_ID = id
},
goBack(){
this.$parent.activeName = 'CorpInfo'
this.$parent.HOISTING_ID = ''
this.$parent.ticketType =''
}
}
}
</script>

View File

@ -0,0 +1,35 @@
<template>
<div>
<CorpInfo v-show="activeName=='CorpInfo'" ref="list" />
<List v-if="activeName=='hoisting_list'" />
<Detail v-if="activeName=='Detail'"/>
</div>
</template>
<script>
import CorpInfo from './components/corpInfo'
import List from './components/list'
import Detail from './components/detail'
export default {
components: { CorpInfo, List, Detail },
data() {
return {
activeName: 'CorpInfo',
HOISTING_ID: '',
ticketType : '',
CORPINFO_ID : ''
}
},
watch: {
activeName(val) {
if (val == 'List') {
this.$refs.list.getQuery()
}
}
}
}
</script>
<style scoped>
</style>

View File

@ -75,6 +75,22 @@
<td class="bbg">动火作业实施时间</td>
<td colspan="3">{{ pd.WORK_START_DATE }}{{ pd.WORK_END_DATE }}</td>
</tr>
<tr v-if="pd.FIRE_COMPLETED === '1' && pd.SITE_CLEANED === '1'">
<td class="bbg">动火是否完成</td>
<td>
<span>已完成</span>
</td>
<td class="bbg">动火是否完成</td>
<td>
<span>已清理</span>
</td>
</tr>
<tr v-if="pd.NO_REMAINING_EMBERS === '1'">
<td class="bbg">是否存在遗留火种</td>
<td>
<span>无遗留火种</span>
</td>
</tr>
<tr>
<td colspan="4">
<table class="table-ui">
@ -146,13 +162,25 @@
<tr>
<td class="bbg">接受交底人</td>
<td colspan="10">
<div v-for="item in imgList" :key="item.ACCEPT_CONFESS_ID" style="text-align: right">
<span>签字</span>
<img v-viewer :src="config.fileUrl + item.ACCEPT_CONFESS_USER_SIGNER_PATH" alt="" width="100" height="100">
<span>{{ item.ACCEPT_CONFESS_USER_SIGNER_TIME }}</span>
<div v-for="item in acceptConfessList" :key="item.USER_ID">
<div v-for="(signature, index) in item.APPROVAL_SIGNATURE" :key="index" style="text-align: right">
<span>签字</span>
<img v-viewer :src="config.fileUrl + signature.trim()" alt="" width="100" height="100">
<span>{{ item.APPROVAL_SIGNATURE_TIME.split(',')[0] }}</span>
</div>
</div>
</td>
</tr>
<!-- <tr>-->
<!-- <td class="bbg">接受交底人</td>-->
<!-- <td colspan="10">-->
<!-- <div v-for="item in imgList" :key="item.ACCEPT_CONFESS_ID" style="text-align: right">-->
<!-- <span>签字</span>-->
<!-- <img v-viewer :src="config.fileUrl + item.ACCEPT_CONFESS_USER_SIGNER_PATH" alt="" width="100" height="100">-->
<!-- <span>{{ item.ACCEPT_CONFESS_USER_SIGNER_TIME }}</span>-->
<!-- </div>-->
<!-- </td>-->
<!-- </tr>-->
<tr>
<td class="bbg">监护人</td>
<td colspan="3">
@ -175,7 +203,7 @@
</tr>
<tr v-if="pd.CONFIRM_USER_SIGNER_PATH">
<td colspan="6">
<div>作业负责人意见{{ pd.CONFIRM_CONTENT }}</div>
<div>作业负责人意见{{ pd.CONFIRM_CONTENT === '无' ? '同意' : pd.CONFIRM_CONTENT }}</div>
<div style="text-align: right">
<span>签字</span>
<img v-viewer :src="config.fileUrl + pd.CONFIRM_USER_SIGNER_PATH" alt="" width="100" height="100">
@ -185,7 +213,7 @@
</tr>
<tr v-if="pd.BELONGING_SIGNATURE">
<td colspan="6">
<div>项目主管部门负责人意见{{ pd.BELONGING_OPINIONS }}</div>
<div>项目主管部门负责人意见{{ pd.BELONGING_OPINIONS === '' ? '同意' : pd.BELONGING_OPINIONS }}</div>
<div style="text-align: right">
<span>签字</span>
<img v-viewer :src="config.fileUrl + pd.BELONGING_SIGNATURE" alt="" width="100" height="100">
@ -195,7 +223,7 @@
</tr>
<tr v-if="pd.LEADER_USER_SIGNER_PATH">
<td colspan="6">
<div>所在单位意见{{ pd.LEADER_CONTENT }}</div>
<div>属地监管单位意见{{ pd.LEADER_CONTENT === '无' ? '同意' : pd.LEADER_CONTENT }}</div>
<div style="text-align: right">
<span>签字</span>
<img v-viewer :src="config.fileUrl + pd.LEADER_USER_SIGNER_PATH" alt="" width="100" height="100">
@ -205,7 +233,7 @@
</tr>
<tr v-if="pd.AUDIT_USER_SIGNER_PATH">
<td colspan="6">
<div>安全管理部门意见{{ pd.AUDIT_CONTENT }}</div>
<div>安全管理部门意见{{ pd.AUDIT_CONTENT === '无' ? '同意' : pd.AUDIT_CONTENT }}</div>
<div style="text-align: right">
<span>签字</span>
<img v-viewer :src="config.fileUrl + pd.AUDIT_USER_SIGNER_PATH" alt="" width="100" height="100">
@ -215,7 +243,7 @@
</tr>
<tr v-if="pd.APPROVE_USER_SIGNER_PATH">
<td colspan="6">
<div>动火审批人意见{{ pd.APPROVE_CONTENT }}</div>
<div>动火审批人意见{{ pd.APPROVE_CONTENT === '无' ? '同意' : pd.APPROVE_CONTENT }}</div>
<div style="text-align: right">
<span>签字</span>
<img v-viewer :src="config.fileUrl + pd.APPROVE_USER_SIGNER_PATH" alt="" width="100" height="100">
@ -225,7 +253,7 @@
</tr>
<tr v-if="pd.MONITOR_USER_SIGNER_PATH">
<td colspan="6">
<div>动火前验票负责人{{ pd.MONITOR_CONTENT }}</div>
<div>动火前验票负责人{{ pd.MONITOR_CONTENT === '无' ? '同意' : pd.MONITOR_CONTENT }}</div>
<div style="text-align: right">
<span>签字</span>
<img v-viewer :src="config.fileUrl + pd.MONITOR_USER_SIGNER_PATH" alt="" width="100" height="100">
@ -235,7 +263,7 @@
</tr>
<tr v-if="imgList1.length>0">
<td colspan="10">
<div>完工验收{{ pd.ACCEPT_CONTENT }}</div>
<div>完工验收{{ pd.ACCEPT_CONTENT === '无' ? '同意' : pd.ACCEPT_CONTENT }}</div>
<div v-for="item in imgList1" :key="item.ACCEPT_CONFESS_ID" style="text-align: right">
<span>签字</span>
<img v-viewer :src="config.fileUrl + item.ACCEPT_USER_SIGNER_PATH" alt="" width="100" height="100">
@ -267,6 +295,7 @@ export default {
imgList: [],
imgList1: [],
otherProtectiveMeasures: [],
acceptConfessList: [],
confessList: []
}
},
@ -312,23 +341,37 @@ export default {
this.confessList.push(item)
}
})
for (let i = 0; i < data.measuresList.length; i++) {
//
const PROTECTIVE_MEASURES = data.measuresList[i].PROTECTIVE_MEASURES.split('')
for (let j = 1; j <= 3; j++) {
//
if (this.findCharIndex(PROTECTIVE_MEASURES, '', j) !== -1) {
//
PROTECTIVE_MEASURES.splice(
this.findCharIndex(PROTECTIVE_MEASURES, '', j) + 1,
0,
data.measuresList[i]['ANSWER' + j]
)
}
// data.pd.acceptConfessList.forEach(item => {
// if (item.APPROVAL_SIGNATURE_TIME !== undefined && item.APPROVAL_SIGNATURE_TIME.trim() !== '') {
// this.acceptConfessList.push(item)
// }
// })
data.pd.acceptConfessList.forEach(item => {
// APPROVAL_SIGNATURE
if (item.APPROVAL_SIGNATURE) {
item.APPROVAL_SIGNATURE = item.APPROVAL_SIGNATURE.split(';')
}
//
data.measuresList[i].PROTECTIVE_MEASURES = PROTECTIVE_MEASURES.join('')
}
if (item.APPROVAL_SIGNATURE_TIME !== undefined && item.APPROVAL_SIGNATURE_TIME.trim() !== '') {
this.acceptConfessList.push(item)
}
})
// for (let i = 0; i < data.measuresList.length; i++) {
// //
// const PROTECTIVE_MEASURES = data.measuresList[i].PROTECTIVE_MEASURES.split('')
// for (let j = 1; j <= 3; j++) {
// //
// if (this.findCharIndex(PROTECTIVE_MEASURES, '', j) !== -1) {
// //
// PROTECTIVE_MEASURES.splice(
// this.findCharIndex(PROTECTIVE_MEASURES, '', j) + 1,
// 0,
// data.measuresList[i]['ANSWER' + j]
// )
// }
// }
// //
// data.measuresList[i].PROTECTIVE_MEASURES = PROTECTIVE_MEASURES.join('')
// }
this.measuresList = data.measuresList // map
this.gasList = data.gasList // map
if (this.pd.WORK_LEVEL === '二级') {

View File

@ -52,14 +52,14 @@
<template slot-scope="{row}">
<span v-if="row.APPLY_STATUS==0"></span>
<span v-else-if="row.APPLY_STATUS==1">作业负责人待审核</span>
<span v-else-if="row.APPLY_STATUS==1.5">项目负责人待审核</span>
<span v-else-if="row.APPLY_STATUS==1.5">项目主管部门待审核</span>
<span v-else-if="row.APPLY_STATUS==2">属地监管单位待审核</span>
<span v-else-if="row.APPLY_STATUS==4">安全管理部门待审核</span>
<span v-else-if="row.APPLY_STATUS==5">动火审批人待审核</span>
<span v-else-if="row.APPLY_STATUS==6">班长待验票</span>
<span v-else-if="row.APPLY_STATUS==7">待验收</span>
<span v-else-if="row.APPLY_STATUS==8">验收归档</span>
<span v-else-if="row.APPLY_STATUS==-1.5">项目负责人审核打回</span>
<span v-else-if="row.APPLY_STATUS==-1.5">项目主管部门审核打回</span>
<span v-else-if="row.APPLY_STATUS==-2">作业负责人审核打回</span>
<span v-else-if="row.APPLY_STATUS==-4">所在单位审核打回</span>
<span v-else-if="row.APPLY_STATUS==-5">安全管理部门审核打回</span>
@ -93,6 +93,12 @@
</template>
</el-table-column>
<el-table-column prop="WORK_LEVEL" label="动火等级" align="center"/>
<el-table-column prop="ISDELETE" label="是否删除">
<template slot-scope="{row}">
<span v-if="row.ISDELETE==0"></span>
<span v-else-if="row.ISDELETE==1"></span>
</template>
</el-table-column>
<el-table-column label="操作" align="center" width="230">
<template slot-scope="{row}">
<el-button type="primary" icon="el-icon-document" size="mini" @click="goDetail(row.HOTWORK_ID)"></el-button>

View File

@ -0,0 +1,128 @@
<template>
<div class="app-container">
<div class="filter-container">
<div class="filter-group ">
<div class="filter-lable" style="width: 60px">
公司名称
</div>
<div class="filter-width">
<el-input v-model="KEYWORDS" placeholder="公司名称" class="filter-item" style="width: 150px;"/>
</div>
</div>
<el-button v-waves class="filter-item" type="primary" icon="el-icon-search" @click="getQuery">
搜索
</el-button>
<el-button v-waves class="filter-item" type="success" icon="el-icon-refresh" @click="goKeyReset">
重置
</el-button>
</div>
<el-table
v-loading="listLoading"
ref="multipleTable"
:data="varList"
:header-cell-style="{
'font-weight': 'bold',
'color': '#000'
}"
tooltip-effect="dark"
border
fit
highlight-current-row
>
<el-table-column type="index" label="序号" width="50" align="center" />
<el-table-column prop="CORP_NAME" label="公司名称" />
<el-table-column prop="checkedCount" label="申请总数" align="center" >
<template slot-scope="{row}">
<span :style="row.applications_num > 0 ? {color:'#0c60e1',cursor: 'pointer'} : {color: '#606266'}" @click="goList('LimitSpace',row.CORPINFO_ID,'1')">{{ row.applications_num }}</span>
</template>
</el-table-column>
<el-table-column prop="checkedItemCount" label="完成数" align="center" >
<template slot-scope="{row}">
<span :style="row.completions_num > 0 ? {color:'#0c60e1',cursor: 'pointer'} : {color: '#606266'}" @click="goList('LimitSpace',row.CORPINFO_ID,'2')">{{ row.completions_num }}</span>
</template>
</el-table-column>
<el-table-column prop="ybCount" label="废除数" align="center" >
<template slot-scope="{row}">
<span :style="row.abolishments_num > 0 ? {color:'#0c60e1',cursor: 'pointer'} : {color: '#606266'}" @click="goList('LimitSpace',row.CORPINFO_ID, '3')">{{ row.abolishments_num }}</span>
</template>
</el-table-column>
<el-table-column prop="zdCount" label="进行数" align="center" >
<template slot-scope="{row}">
<span :style="row.operations_num > 0 ? {color:'#0c60e1',cursor: 'pointer'} : {color: '#606266'}" @click="goList('LimitSpace',row.CORPINFO_ID, '4')">{{ row.operations_num }}</span>
</template>
</el-table-column>
</el-table>
<div class="page-btn-group">
<div/>
<pagination :total="total" :page.sync="listQuery.page" :limit.sync="listQuery.limit" @pagination="getList" />
</div>
</div>
</template>
<script>
import Pagination from '@/components/Pagination' // el-pagination
import { requestFN } from '@/utils/request'
import waves from '@/directive/waves' // waves directive
import SelectTree from '@/components/SelectTree'
export default {
components: { Pagination, SelectTree },
directives: { waves },
data() {
return {
USER_LEVEL: sessionStorage.getItem('user').LEVEL || -1,
config: config,
listLoading: true,
add: false,
del: false,
edit: false,
listQuery: {
page: 1,
limit: 20
},
total: 0,
KEYWORDS: '',
varList: [],
pd: []
}
},
async created() {
await this.getList()
},
methods: {
getQuery() {
this.getList()
},
goKeyReset() {
this.KEYWORDS = ''
this.getList()
},
// ,
goList(tableName, CORPINFO_ID, ticketType) {
this.$parent.activeName = tableName
this.$parent.CORPINFO_ID = CORPINFO_ID
this.$parent.ticketType = ticketType
this.$parent.CUTROAD_ID =''
},
getList() {
return new Promise((resolve) => {
this.listLoading = true
requestFN(
'/gfConfinedSpace/corpCountlist?showCount=' + this.listQuery.limit + '&currentPage=' + this.listQuery.page,
{
COPRINF_ID: sessionStorage.getItem('user').CORPINFO_ID || '',
KEYWORDS: this.KEYWORDS
}
).then((data) => {
this.listLoading = false
this.varList = data.varList
this.total = data.page.totalResult
resolve()
}).catch((e) => {
this.listLoading = false
})
})
}
}
}
</script>

View File

@ -0,0 +1,323 @@
<template>
<div>
<div id="printTest" class="app-container print-work">
<el-page-header content="审批表详情" class="no-print" @back="goBack"/>
<table class="table-ui">
<thead>
<tr>
<td colspan="10" style="border: none">
<div class="level-title mt-20">
<h1>受限空间安全作业票</h1>
<div class="level-code">编号:{{ pd.CHECK_NO }}</div>
</div>
</td>
</tr>
</thead>
<tr>
<td class="bbg">作业申请单位</td>
<td colspan="5">{{ pd.APPLY_DEPARTMENT_NAME }}</td>
<td class="bbg">作业申请时间</td>
<td colspan="3">{{ pd.CREATTIME }}</td>
</tr>
<tr>
<td class="bbg">受限空间名称</td>
<td colspan="5">{{ pd.LIMITSPACE_NAME }}</td>
<td class="bbg">受限空间内原有介质名称</td>
<td colspan="3">{{ pd.MEDIUM_NAME }}</td>
</tr>
<tr>
<td class="bbg">作业内容</td>
<td colspan="5">{{ pd.WORK_CONTENT }}</td>
<td class="bbg">受限空间所属单位</td>
<td colspan="3">{{ pd.BELONG_CORP }}</td>
</tr>
<tr>
<td class="bbg">作业单位</td>
<td colspan="5">{{ pd.CONFIRM_DEPARTMENT_NAME }}</td>
<td class="bbg">作业负责人</td>
<td colspan="3">{{ pd.CONFIRM_USER_NAME }}</td>
</tr>
<tr>
<td class="bbg">作业人</td>
<td colspan="5">{{ pd.WORK_USER }}</td>
<td class="bbg">监护人</td>
<td colspan="5">
<div v-if="pd.GUARDIAN_USER_SIGNER_PATH" style="text-align: right">
<span>签字</span>
<img v-viewer :src="config.fileUrl + pd.GUARDIAN_USER_SIGNER_PATH" alt="" width="100" height="100">
<span>{{ pd.GUARDIAN_USER_SIGNER_TIME }}</span>
</div>
</td>
<!-- <td colspan="3">{{ pd.GUARDIAN_USER }}</td>-->
<!-- <tr v-if="pd.CONFIRM_USER_SIGNER_PATH">-->
<!-- <td colspan="10">-->
<!-- <div>监护人{{ pd.CONFIRM_CONTENT }}</div>-->
<!-- <div style="text-align: right">-->
<!-- <span>签字</span>-->
<!-- <img v-viewer :src="config.fileUrl + pd.CONFIRM_USER_SIGNER_PATH" alt="" width="100" height="100">-->
<!-- <span>{{ pd.CONFIRM_USER_SIGNER_TIME }}</span>-->
<!-- </div>-->
<!-- </td>-->
<!-- </tr>-->
</tr>
<tr>
<td class="bbg">关联的其他特殊作业及安全作业票编号</td>
<td colspan="9">{{ pd.SPECIAL_WORK }}</td>
</tr>
<tr>
<td class="bbg">风险辨识结果</td>
<td colspan="9">{{ pd.RISK_IDENTIFICATION }}</td>
</tr>
<tr>
<td :rowspan="3 + gasList.length" class="bbg">气体分析</td>
<td class="bbg" rowspan="2">分析项目</td>
<td class="bbg" colspan="2">有毒有害气体名称</td>
<td class="bbg" colspan="2">可燃气体名称</td>
<td class="bbg" rowspan="2">氧气含量</td>
<td class="bbg" rowspan="3">取样分析时间</td>
<td class="bbg" rowspan="3">分析部位</td>
<td class="bbg" rowspan="3">分析人</td>
</tr>
<tr>
<td :style="{padding:gas.GAS_NAME1 ? '8px' : '16px'}">{{ gas.GAS_NAME1 }}</td>
<td :style="{padding:gas.GAS_NAME2 ? '8px' : '16px'}">{{ gas.GAS_NAME2 }}</td>
<td :style="{padding:gas.GAS_NAME3 ? '8px' : '16px'}">{{ gas.GAS_NAME3 }}</td>
<td :style="{padding:gas.GAS_NAME4 ? '8px' : '16px'}">{{ gas.GAS_NAME4 }}</td>
</tr>
<tr>
<td class="bbg">合格标准</td>
<td>{{ gas.GAS_STANDARD1 }}</td>
<td>{{ gas.GAS_STANDARD2 }}</td>
<td>{{ gas.GAS_STANDARD3 }}</td>
<td>{{ gas.GAS_STANDARD4 }}</td>
<td>19.5% 21%体积分数</td>
</tr>
<tr v-for="(item,index) in gasList" :key="index">
<td v-if="index === 0" :rowspan="gasList.length" class="bbg"></td>
<td><span v-if="gas.GAS_NAME1">{{ item.DATA1 }}</span></td>
<td><span v-if="gas.GAS_NAME2">{{ item.DATA2 }}</span></td>
<td><span v-if="gas.GAS_NAME3">{{ item.DATA3 }}</span></td>
<td><span v-if="gas.GAS_NAME4">{{ item.DATA4 }}</span></td>
<td>{{ item.OXYGEN_CONTENT }}</td>
<td>{{ item.ANALYZE_TIME }}</td>
<td>{{ item.ANALYZE_PLACE }}</td>
<td>{{ item.ANALYZE_USER }}</td>
</tr>
<tr>
<td class="bbg">作业实施时间</td>
<td colspan="9">{{ pd.WORK_START_DATE }}{{ pd.WORK_END_DATE }}</td>
</tr>
<tr>
<td colspan="10">
<table class="table-ui">
<tr>
<td>序号</td>
<td>安全措施</td>
<td>是否涉及</td>
<td>确认人</td>
</tr>
<tr v-for="(item,index) in measuresList" :key="index">
<td>{{ index + 1 }}</td>
<td>
{{ item.PROTECTIVE_MEASURES }}
<span v-if="item.QUESTION1">{{ item.QUESTION1 }}:{{ item.ANSWER1? item.ANSWER1 : 0 }}</span>
<span v-if="item.QUESTION2">{{ item.QUESTION2 }}:{{ item.ANSWER2? item.ANSWER2 : 0 }}</span>
<span v-if="item.QUESTION3">{{ item.QUESTION3 }}:{{ item.ANSWER3? item.ANSWER3 : 0 }}</span>
</td>
<td>
<span v-if="item.STATUS=='1'"><input type="radio" disabled checked>&nbsp;&nbsp;&nbsp;</span>
<span v-if="item.STATUS=='-1'"><input type="radio" disabled checked>不涉及</span>
</td>
<td>
{{ item.CONFIRM_NAME }}
</td>
</tr>
<tr v-if="pd.CONFIRM_USER_MEASURES || pd.APPROVE_USER_MEASURES" >
<td >{{ measuresList.length + 1 }}</td>
<td colspan="3">
<div v-if="pd.CONFIRM_USER_MEASURES" style="display: flex;justify-content: space-between;">
<span>其他安全措施{{ pd.CONFIRM_USER_MEASURES }}</span>
<span>编制人{{ pd.CONFIRM_USER_NAME }}</span>
</div>
<div v-if="pd.APPROVE_USER_MEASURES" style="display: flex;justify-content: space-between;">
<span>其他安全措施{{ pd.APPROVE_USER_MEASURES }}</span>
<span>编制人{{ pd.APPROVE_USER_NAME }}</span>
</div>
</td>
</tr>
</table>
</td>
</tr>
<tr>
<td class="bbg">安全交底人</td>
<td colspan="10">
<div v-if="pd.CONFESS_USER_SIGNER_PATH" style="text-align: right">
<span>签字</span>
<img v-viewer :src="config.fileUrl + pd.CONFESS_USER_SIGNER_PATH" alt="" width="100" height="100">
<span>{{ pd.CONFESS_USER_SIGNER_TIME }}</span>
</div>
</td>
</tr>
<tr>
<td class="bbg">接受交底人</td>
<td colspan="10">
<div v-for="item in imgList" :key="item.ACCEPT_CONFESS_ID" style="text-align: right">
<span>签字</span>
<img v-viewer :src="config.fileUrl + item.ACCEPT_CONFESS_USER_SIGNER_PATH" alt="" width="100" height="100">
<span>{{ item.ACCEPT_CONFESS_USER_SIGNER_TIME }}</span>
</div>
</td>
</tr>
<tr v-if="pd.CONFIRM_USER_SIGNER_PATH">
<td colspan="10">
<div>作业负责人意见{{ pd.CONFIRM_CONTENT }}</div>
<div style="text-align: right">
<span>签字</span>
<img v-viewer :src="config.fileUrl + pd.CONFIRM_USER_SIGNER_PATH" alt="" width="100" height="100">
<span>{{ pd.CONFIRM_USER_SIGNER_TIME }}</span>
</div>
</td>
</tr>
<tr v-if="pd.APPROVE_USER_SIGNER_PATH">
<td colspan="10">
<div>所在单位意见{{ pd.APPROVE_CONTENT }}</div>
<div style="text-align: right">
<span>签字</span>
<img v-viewer :src="config.fileUrl + pd.APPROVE_USER_SIGNER_PATH" alt="" width="100" height="100">
<span>{{ pd.APPROVE_USER_SIGNER_TIME }}</span>
</div>
</td>
</tr>
<tr v-if="imgList1.length>0">
<td colspan="10">
<div>完工验收{{ pd.ACCEPT_CONTENT }}</div>
<div v-for="item in imgList1" :key="item.ACCEPT_CONFESS_ID" style="text-align: right">
<span>签字</span>
<img v-viewer :src="config.fileUrl + item.ACCEPT_USER_SIGNER_PATH" alt="" width="100" height="100">
<span>{{ item.ACCEPT_USER_SIGNER_TIME }}</span>
</div>
</td>
</tr>
</table>
<div style="padding-top: 100px"/>
<div class="ui-foot">
<el-button icon="el-icon-arrow-left" @click="goBack"> </el-button>
</div>
</div>
</div>
</template>
<script>
import { requestFN } from '@/utils/request'
import dateformat from '@/utils/dateformat'
export default {
data() {
return {
config: config,
CONFINEDSPACE_ID: this.$parent.CONFINEDSPACE_ID, // ID
pd: [], //
measuresList: [],
gasList: [],
gas: {},
imgList: [],
imgList1: [],
otherProtectiveMeasures: []
}
},
created() {
this.getData()
},
methods: {
validStr(str) {
if (str != null && str != '' && typeof (str) != 'undefined' && str != 0) { return true }
return false
},
formatTime(date, column) {
if (date) {
return dateformat(date, 'YYYY年MM月DD日HH时mm分')
} else {
return ''
}
},
formatDate(date, column) {
if (date) {
return dateformat(date, 'YYYY-MM-DD')
} else {
return ''
}
},
getRowKey(row) {
return row.CONFINEDSPACE_ID
},
getData() {
this.listLoading = true
requestFN(
'/gfConfinedSpace/goEdit',
{
CONFINEDSPACE_ID: this.CONFINEDSPACE_ID
}
).then((data) => {
this.listLoading = false
this.pd = data.pd // map
for (let i = 0; i < data.measuresList.length; i++) {
//
const PROTECTIVE_MEASURES = data.measuresList[i].PROTECTIVE_MEASURES.split('')
for (let j = 1; j <= 3; j++) {
//
if (this.findCharIndex(PROTECTIVE_MEASURES, '', j) !== -1) {
//
PROTECTIVE_MEASURES.splice(
this.findCharIndex(PROTECTIVE_MEASURES, '', j) + 1,
0,
data.measuresList[i]['ANSWER' + j]
)
}
}
//
data.measuresList[i].PROTECTIVE_MEASURES = PROTECTIVE_MEASURES.join('')
}
this.imgList = data.imgList
this.imgList1 = data.imgList1
this.measuresList = data.measuresList // map
this.gasList = data.gasList // map
this.gas = data.gas || {} // map
this.pd.CONFIRM_USER_MEASURES = this.pd.OTHER_PROTECTIVE_MEASURES.split(';_;')[0]
this.pd.APPROVE_USER_MEASURES = this.pd.OTHER_PROTECTIVE_MEASURES.split(';_;')[1]
}).catch((e) => {
this.listLoading = false
})
},
//
findCharIndex(str, char, num) {
let index = str.indexOf(char)
for (let i = 0; i < num - 1; i++) {
index = str.indexOf(char, index + 1)
}
return index
},
goBack() {
this.$parent.activeName = 'LimitSpace'
}
}
}
</script>
<style lang="sass" scoped>
.print-approval-p10
padding: 20px 0
span
vertical-align: middle
.print-approval-img
width: 200px
height: 97px
display: inline-block
img
width: 100%
height: 100%
.level-code
margin-left: auto
</style>

View File

@ -0,0 +1,331 @@
<template>
<div class="app-container">
<el-form label-width="60px">
<el-row>
<el-col :span="4">
<el-form-item label="编号">
<el-input v-model="KEYWORDS" placeholder="请输入编号"/>
</el-form-item>
</el-col>
<el-col :span="4">
<el-form-item label="状态">
<el-select v-model="APPLYSTATUS" clearable placeholder="请选择" style="width: 100%;">
<el-option v-for="item in statusList" :key="item.ID" :label="item.NAME" :value="item.ID" />
</el-select>
</el-form-item>
</el-col>
<el-col :span="6">
<el-form-item label-width="10px">
<el-button v-waves type="primary" icon="el-icon-search" @click="getQuery">
搜索
</el-button>
<el-button v-waves type="success" icon="el-icon-refresh" @click="goKeyReset">
重置
</el-button>
</el-form-item>
</el-col>
</el-row>
</el-form>
<el-table v-loading="listLoading" ref="multipleTable" :data="varList" :row-key="getRowKey" :header-cell-style="{'font-weight': 'bold','color': '#000'}" tooltip-effect="dark" border fit highlight-current-row>
<el-table-column :reserve-selection="true" type="selection" width="55" align="center" />
<el-table-column type="index" label="序号" width="50" align="center" />
<el-table-column prop="CHECK_NO" label="编号" show-overflow-tooltip />
<el-table-column prop="APPLY_USER_NAME" label="申请人" />
<el-table-column prop="ANALYZE_USER_NAME" label="分析人" />
<el-table-column prop="CONFIRM_USER_NAME" label="作业负责人" />
<el-table-column prop="APPROVE_USER_NAME" label="所在单位负责人" />
<el-table-column prop="ACCEPT_USER_NAME" label="验收部门负责人" />
<el-table-column prop="STATUS" label="审核状态">
<template slot-scope="{row}">
<span v-if="row.APPLY_STATUS==0"></span>
<span v-else-if="row.APPLY_STATUS==1">作业负责人待审核</span>
<span v-else-if="row.APPLY_STATUS==4">所在单位待审核</span>
<span v-else-if="row.APPLY_STATUS==5">待验收</span>
<span v-else-if="row.APPLY_STATUS==6">验收归档</span>
<span v-else-if="row.APPLY_STATUS==-4">作业负责人审核打回</span>
<span v-else-if="row.APPLY_STATUS==-5">所在单位审核打回</span>
<span v-else-if="row.APPLY_STATUS==-6">验收打回</span>
<span v-else-if="row.APPLY_STATUS==-99">已作废(监护人未签字)</span>
<span v-else-if="row.APPLY_STATUS==-98">已作废(未进行气体检测)</span>
</template>
</el-table-column>
<el-table-column prop="ISDELETE" label="是否删除">
<template slot-scope="{row}">
<span v-if="row.ISDELETE==0"></span>
<span v-else-if="row.ISDELETE==1"></span>
</template>
</el-table-column>
<el-table-column label="操作" align="center" width="230">
<template slot-scope="{row}">
<el-button type="primary" icon="el-icon-plus" @click="goChart(row)"></el-button>
<el-button type="primary" icon="el-icon-document" size="mini" @click="goDetail(row.CONFINEDSPACE_ID)"></el-button>
</template>
</el-table-column>
</el-table>
<div class="page-btn-group">
<div>
<!-- <el-button v-show="add" type="primary" icon="el-icon-plus" @click="handleAdd"></el-button>-->
<!-- <el-button v-show="del" type="danger" icon="el-icon-delete" plain @click="batchDel"></el-button>-->
</div>
<pagination :total="total" :page.sync="listQuery.page" :limit.sync="listQuery.limit" @pagination="getList" />
</div>
<el-dialog :visible.sync="dialogFormShow " :title="dialogType==='add'?'查看流程图':'新增'" width="1000px">
<el-steps :active="getStatus()" :process-status="getProcessStatus()" align-center finish-status="success" >
<el-step title="受限空间作业提交">
<template slot="description">
<div>{{ getProcessMessage().title }}</div>
<div>{{ getProcessMessage().USER_NAME }}</div>
<div>{{ getProcessMessage().OPERATTIME }}</div>
</template>
</el-step>
<el-step title="作业负责人意见">
<template slot="description">
<div>{{ pd.CONFIRM_USER_NAME }}</div>
<div>{{ pd.CONFIRM_USER_SIGNER_TIME }}</div>
</template>
</el-step>
<el-step description="" title="所在单位意见">
<template slot="description">
<div>{{ pd.APPROVE_USER_NAME }}</div>
<div>{{ pd.APPROVE_USER_SIGNER_TIME }}</div>
</template>
</el-step>
<el-step title="完成验收">
<template slot="description">
<div>{{ pd.ACCEPT_USER_NAME }}</div>
<div>{{ pd.ACCEPT_USER_SIGNER_TIME }}</div>
</template>
</el-step>
<el-step title="验收归档">
<template slot="description">
<div>{{ pd.ACCEPT_USER_NAME }}</div>
<div>{{ pd.ACCEPT_USER_SIGNER_TIME }}</div>
</template>
</el-step>
</el-steps>
<div style="margin: 60px 60px 0 60px;display: flex;justify-content: space-between">
<div v-if="pd.GUARDIAN_USER_SIGNER_TIME">
<div style="color: #13ce66">
监护人{{ pd.GUARDIAN_USER_NAME }}已签字
</div>
</div>
<div v-if="!pd.GUARDIAN_USER_SIGNER_TIME">
<div style="color: red">
监护人{{ pd.GUARDIAN_USER_NAME }}未签字
</div>
</div>
<div v-if="pd.CONFESS_USER_SIGNER_TIME">
<div style="color: #13ce66">
安全交底人{{ pd.CONFESS_USER_NAME }}已签字
</div>
</div>
<div v-if="!pd.CONFESS_USER_SIGNER_TIME">
<div style="color: red">
安全交底人{{ pd.CONFESS_USER_NAME }}未签字
</div>
</div>
<div v-if="pd.ACCEPT_CONFESS_USER_SIGNER_TIME">
<div style="color: #13ce66">
接受交底人{{ pd.ACCEPT_CONFESS_USER_NAME }}已签字
</div>
</div>
<div v-if="!pd.ACCEPT_CONFESS_USER_SIGNER_TIME">
<div style="color: red">
接受交底人{{ pd.ACCEPT_CONFESS_USER_NAME }}未签字
</div>
</div>
</div>
<div slot="footer" class="dialog-footer">
<!-- <el-button @click="dialogFormShow = false"> </el-button>-->
<el-button type="primary" @click="dialogFormShow = false"> </el-button>
</div>
</el-dialog>
<div style="height: 60px;"></div>
<div class="ui-foot">
<el-button type="primary" @click="goBack"> </el-button>
</div>
</div>
</template>
<script>
import Pagination from '@/components/Pagination' // el-pagination
import { requestFN } from '@/utils/request'
import waves from '@/directive/waves' // waves directive
export default {
components: { Pagination },
directives: { waves },
data() {
return {
listLoading: true,
add: false,
del: false,
edit: false,
listQuery: {
page: 1,
limit: 20
},
total: 0,
KEYWORDS: '',
APPLYSTATUS: '',
varList: [],
pd: [],
multipleSelectionAll: [], //
multipleSelection: [], //
dialogFormShow: false,
dialogFormEdit: false,
dialogType: 'add',
replyVarList: [], // REPLY
replyListQuery: {
page: 1,
limit: 20
},
replyTotal: 0,
dialogFormHuifuShow: false,
statusList: [
{ ID: '', NAME: '请选择' },
{ ID: '0', NAME: '受限空间作业待提交' },
{ ID: '1', NAME: '作业负责人待审核' },
{ ID: '4', NAME: '所在单位待审核' },
{ ID: '5', NAME: '待验收' },
{ ID: '6', NAME: '验收归档' },
{ ID: '-4', NAME: '作业负责人审核打回' },
{ ID: '-5', NAME: '所在单位审核打回' },
{ ID: '-6', NAME: '验收打回' },
{ ID: '-99', NAME: '已作废(监护人未签字)' },
{ ID: '-98', NAME: '已作废(未进行气体检测)' }
],
STATUS: '',
DEPTIDS: ''
}
},
created() {
this.getList()
},
methods: {
getRowKey(row) {
return row.CONFINEDSPACE_ID
},
//
getQuery() {
this.$refs.multipleTable.clearSelection()
this.getList()
},
goKeyReset() {
this.KEYWORDS = ''
this.APPLYSTATUS = ''
this.getQuery()
},
//
getList() {
this.listLoading = true
requestFN(
'/gfConfinedSpace/list?showCount=' + this.listQuery.limit + '&currentPage=' + this.listQuery.page,
{
KEYWORDS: this.KEYWORDS, APPLY_STATUS: this.APPLYSTATUS,
DEPTIDS: this.DEPTIDS, tm: new Date().getTime(),
CORPINFO_ID: this.$parent.CORPINFO_ID,
ticketType : this.$parent.ticketType
}
).then((data) => {
this.listLoading = false
this.varList = data.varList
this.total = data.page.totalResult
}).catch((e) => {
this.listLoading = false
})
},
goChart(row) {
this.pd = row
this.dialogFormShow = true
},
getStatus() {
if (this.pd.APPLY_STATUS <= '0') {
return 0
}
if (this.pd.APPLY_STATUS == '1') {
return 1
}
if (this.pd.APPLY_STATUS == '4') {
return 2
}
if (this.pd.APPLY_STATUS == '5') {
return 3
}
if (this.pd.APPLY_STATUS == '6') {
return 5
}
},
getProcessStatus() {
if (this.pd.APPLY_STATUS < '0') {
return 'error'
} else {
return 'process'
}
},
getUserMessage(col) {
if (!this.pd[col]) {
return '已跳过'
}
},
getProcessMessage() {
let obj = {}
if (this.pd.APPLY_STATUS >= '0') {
obj = {
title: '',
USER_NAME: this.pd.APPLY_USER_NAME,
OPERATTIME: this.pd.CREATTIME
}
}
if (this.pd.APPLY_STATUS == '-4') {
obj = {
title: '作业负责人审核打回',
USER_NAME: this.pd.CONFIRM_USER_NAME,
OPERATTIME: this.pd.OPERATTIME
}
}
if (this.pd.APPLY_STATUS == '-5') {
obj = {
title: '所在单位审核打回',
USER_NAME: this.pd.APPROVE_USER_NAME,
OPERATTIME: this.pd.OPERATTIME
}
}
if (this.pd.APPLY_STATUS == '-6') {
obj = {
title: '验收打回',
AUSER_NAME: this.pd.ACCEPT_USER_NAME,
OPERATTIME: this.pd.OPERATTIME
}
}
if (this.pd.APPLY_STATUS == '-99') {
obj = {
title: '已作废(监护人未签字)',
AUSER_NAME: '',
OPERATTIME: this.pd.OPERATTIME
}
}
if (this.pd.APPLY_STATUS == '-98') {
obj = {
title: '已作废(未进行气体检测)',
AUSER_NAME: '',
OPERATTIME: this.pd.OPERATTIME
}
}
return obj
},
goDetail(id) {
this.$parent.activeName = 'Detail'
this.$parent.CONFINEDSPACE_ID = id
},
goBack(){
this.$parent.activeName = 'CorpInfo'
}
}
}
</script>

View File

@ -0,0 +1,23 @@
<template>
<div>
<CorpInfo v-show="activeName=='CorpInfo'" ref="list" />
<LimitSpace v-if="activeName=='LimitSpace'"/>
<Detail v-if="activeName=='Detail'"/>
</div>
</template>
<script>
import CorpInfo from './components/corpInfo'
import LimitSpace from './components/list'
import Detail from './components/detail'
export default {
components: { CorpInfo, LimitSpace,Detail },
data() {
return {
activeName: 'CorpInfo',
CORPINFO_ID: '',
ticketType: '',
CONFINEDSPACE_ID: ''
}
}
}
</script>

View File

@ -222,7 +222,7 @@
import Pagination from '@/components/Pagination' // el-pagination
import { requestFN } from '@/utils/request'
import waves from '@/directive/waves' // waves directive
import TiandiMap from '../../../../components/TianMap/TiandiMap'
import TiandiMap from '../../../../../components/TianMap/TiandiMap'
import SelectTree from '@/components/SelectTree'
export default {

View File

@ -191,7 +191,7 @@
import Pagination from '@/components/Pagination' // el-pagination
import { requestFN } from '@/utils/request'
import waves from '@/directive/waves' // waves directive
import TiandiMap from '../../../../components/TianMap/TiandiMap'
import TiandiMap from '../../../../../components/TianMap/TiandiMap'
import SelectTree from '@/components/SelectTree'
export default {

View File

@ -193,7 +193,7 @@
import Pagination from '@/components/Pagination' // el-pagination
import { requestFN } from '@/utils/request'
import waves from '@/directive/waves' // waves directive
import TiandiMap from '../../../../components/TianMap/TiandiMap'
import TiandiMap from '../../../../../components/TianMap/TiandiMap'
import SelectTree from '@/components/SelectTree'
export default {

View File

@ -130,7 +130,7 @@
import Pagination from '@/components/Pagination' // el-pagination
import { requestFN } from '@/utils/request'
import waves from '@/directive/waves' // waves directive
import TiandiMap from '../../../../components/TianMap/TiandiMap'
import TiandiMap from '../../../../../components/TianMap/TiandiMap'
import SelectTree from '@/components/SelectTree'
export default {

View File

@ -193,7 +193,7 @@
import Pagination from '@/components/Pagination' // el-pagination
import { requestFN } from '@/utils/request'
import waves from '@/directive/waves' // waves directive
import TiandiMap from '../../../../components/TianMap/TiandiMap'
import TiandiMap from '../../../../../components/TianMap/TiandiMap'
import SelectTree from '@/components/SelectTree'
export default {

View File

@ -0,0 +1,4 @@
<template>
<router-view/>
</template>

View File

@ -58,7 +58,7 @@ import Pagination from '@/components/Pagination'
import { requestFN } from '@/utils/request'
import waves from '@/directive/waves' // waves directive
import SelectTree from '@/components/SelectTree'
import TiandiMap from '../../../../components/TianMap/TiandiMap'
import TiandiMap from '../../../../../components/TianMap/TiandiMap'
export default {
components: { Pagination, SelectTree, TiandiMap },

View File

@ -58,7 +58,7 @@ import Pagination from '@/components/Pagination'
import { requestFN } from '@/utils/request'
import waves from '@/directive/waves' // waves directive
import SelectTree from '@/components/SelectTree'
import TiandiMap from '../../../../components/TianMap/TiandiMap'
import TiandiMap from '../../../../../components/TianMap/TiandiMap'
export default {
components: { Pagination, SelectTree, TiandiMap },

View File

@ -58,7 +58,7 @@ import Pagination from '@/components/Pagination'
import { requestFN } from '@/utils/request'
import waves from '@/directive/waves' // waves directive
import SelectTree from '@/components/SelectTree'
import TiandiMap from '../../../../components/TianMap/TiandiMap'
import TiandiMap from '../../../../../components/TianMap/TiandiMap'
export default {
components: { Pagination, SelectTree, TiandiMap },

View File

@ -257,7 +257,7 @@ import { requestFN } from '@/utils/request'
import { upload } from '@/utils/upload'
import waves from '@/directive/waves' // waves directive
import SelectTree from '@/components/SelectTree'
import TiandiMap from '../../../../components/TianMap/TiandiMap'
import TiandiMap from '../../../../../components/TianMap/TiandiMap'
export default {
components: { Pagination, SelectTree, TiandiMap },

View File

@ -168,7 +168,7 @@ import Pagination from '@/components/Pagination'
import { requestFN } from '@/utils/request'
import waves from '@/directive/waves' // waves directive
import SelectTree from '@/components/SelectTree'
import TiandiMap from '../../../../components/TianMap/TiandiMap'
import TiandiMap from '../../../../../components/TianMap/TiandiMap'
export default {
components: { Pagination, SelectTree, TiandiMap },

View File

@ -204,7 +204,7 @@ import Pagination from '@/components/Pagination'
import { requestFN } from '@/utils/request'
import waves from '@/directive/waves' // waves directive
import SelectTree from '@/components/SelectTree'
import TiandiMap from '../../../../components/TianMap/TiandiMap'
import TiandiMap from '../../../../../components/TianMap/TiandiMap'
export default {
components: { Pagination, SelectTree, TiandiMap },

View File

@ -176,7 +176,7 @@ import Pagination from '@/components/Pagination'
import { requestFN } from '@/utils/request'
import waves from '@/directive/waves' // waves directive
import SelectTree from '@/components/SelectTree'
import TiandiMap from '../../../../components/TianMap/TiandiMap'
import TiandiMap from '../../../../../components/TianMap/TiandiMap'
export default {
components: { Pagination, SelectTree, TiandiMap },

View File

@ -0,0 +1,4 @@
<template>
<router-view/>
</template>

View File

@ -46,7 +46,7 @@
<el-table-column label="通道类型">
<template slot-scope="{row}">
<span v-if="row.PASSAGE_TYPE==1"></span>
<span v-if="row.PASSAGE_TYPE==2"></span>
<span v-if="row.PASSAGE_TYPE==2"></span>
<span v-if="row.PASSAGE_TYPE==3"></span>
</template>
</el-table-column>
@ -178,7 +178,7 @@ export default {
],
passageTypeList: [
{ value: '1', label: '人行通道' },
{ value: '2', label: '车通道' },
{ value: '2', label: '车通道' },
{ value: '3', label: '综合通道' }
],
addDialog: {

View File

@ -54,7 +54,7 @@
<el-table-column label="口门类型">
<template slot-scope="{row}">
<span v-if="row.AREA_TYPE==1"></span>
<span v-if="row.AREA_TYPE==2"></span>
<span v-if="row.AREA_TYPE==2"></span>
<span v-if="row.AREA_TYPE==3"></span>
</template>
</el-table-column>
@ -212,7 +212,7 @@ export default {
],
areaTypeList: [
{ value: '1', label: '人行口门' },
{ value: '2', label: '车口门' },
{ value: '2', label: '车口门' },
{ value: '3', label: '综合口门' }
],
addDialog: {

View File

@ -21,7 +21,7 @@
<el-table-column label="口门类型" align="center">
<template slot-scope="{row}">
<span v-if="row.AREA_TYPE==1"></span>
<span v-if="row.AREA_TYPE==2"></span>
<span v-if="row.AREA_TYPE==2"></span>
<span v-if="row.AREA_TYPE==3"></span>
</template>
</el-table-column>

View File

@ -22,7 +22,7 @@
<el-table-column prop="PASSAGE_TYPE" label="通道类型" align="center">
<template slot-scope="{row}">
<span v-if="row.PASSAGE_TYPE==1"></span>
<span v-if="row.PASSAGE_TYPE==2"></span>
<span v-if="row.PASSAGE_TYPE==2"></span>
<span v-if="row.PASSAGE_TYPE==3"></span>
</template>
</el-table-column>

View File

@ -0,0 +1,386 @@
<template>
<div class="app-container">
<el-form label-width="100px">
<el-row>
<el-col :span="8">
<el-form-item label="时间">
<el-date-picker
v-model="dateTimeRange"
type="datetimerange"
value-format="yyyy-MM-dd HH:mm:ss"
range-separator="至"
start-placeholder="开始日期"
end-placeholder="结束日期">
</el-date-picker>
</el-form-item>
</el-col>
<el-col :span="4">
<el-form-item label-width="10px">
<el-button v-waves type="primary" icon="el-icon-search" @click="showAllHistory">
搜索
</el-button>
<el-button v-waves type="success" icon="el-icon-refresh" @click="goKeyReset">
重置
</el-button>
</el-form-item>
</el-col>
</el-row>
</el-form>
<div id="echarts1" style="height: 300px;width: 100%;"></div>
<div id="echarts2" style="height: 300px;width: 100%;"></div>
<div id="echarts3" style="height: 300px;width: 100%;"></div>
<el-table
v-loading="listLoading"
ref="multipleTable"
:data="varList"
:row-key="getRowKey"
:header-cell-style="{
'font-weight': 'bold',
'color': '#000'
}"
tooltip-effect="dark"
border
fit
highlight-current-row
>
<el-table-column
:reserve-selection="true"
type="selection"
width="55"
align="center"/>
<el-table-column type="index" label="序号" width="50" align="center" />
<el-table-column prop="OPERATTIME" label="上报时间" />
<el-table-column prop="WINDSPEED" label="风速" />
<el-table-column prop="WINDDIRECTION" label="风向" />
<el-table-column prop="TEMPERATURE" label="温度" />
</el-table>
<div class="page-btn-group" style="margin-bottom: 50px;">
<pagination :total="total" :page.sync="listQuery.page" :limit.sync="listQuery.limit" @pagination="showHistory" />
</div>
<div class="ui-foot">
<el-button plain type="info" @click="goBack"> </el-button>
</div>
</div>
</template>
<script>
import Pagination from '@/components/Pagination' // el-pagination
import { requestFN } from '@/utils/request'
import waves from '@/directive/waves'
import * as echarts from 'echarts';
let echarts1 = null;
let echarts2 = null;
let echarts3 = null;
export default {
components: { Pagination },
directives: { waves },
data() {
return {
msg: 'add',
config: config,
listLoading: false,
listQuery: {
page: 1,
limit: 10
},
total: 0,
KEYWORDS: '',
dateTimeRange: [],
dates: [],
varList: [],
temperature:[],
winddirection:[],
windspeed:[],
form: {
METEOROLOGICAL_ID: '',
EQUIPMENTNAME: '', //
EQUIPMENTTYPE: '',
PLATFORMMETEOROLOGICAL_ID: '',
LATITUDE: '',
LONGITUDE: '',
TYPE: 1
},
}
},
mounted() {
this.showHistory()
// this.initCharts()
},
methods: {
getRowKey(row) {
return row.METEOROLOGICALINFO_ID
},
initCharts1(temperature, winddirection, windspeed){
// let base = +new Date(1988, 9, 3);
// let oneDay = 24 * 3600 * 1000;
// let data = [[base, Math.random() * 300]];
// for (let i = 1; i < 20000; i++) {
// let now = new Date((base += oneDay));
// data.push([+now, Math.round((Math.random() - 0.5) * 20 + data[i - 1][1])]);
// }
console.log(temperature)
echarts1 = echarts.init(document.querySelector('#echarts1'))
const option = {
tooltip: {
trigger: 'axis',
position: function (pt) {
return [pt[0], '10%'];
}
},
title: {
left: 'center',
text: '气象设备数据图 - 温度'
},
xAxis: {
type: 'category',
boundaryGap: false,
minInterval: 1,
maxInterval: 3600 * 24 * 1000
},
yAxis: {
type: 'value',
boundaryGap: [0, '80%']
},
dataZoom: [
{
type: 'inside',
start: 0,
end: 20
},
{
start: 0,
end: 20
}
],
series: [
{
name: '温度',
type: 'line',
smooth: true,
symbol: 'none',
areaStyle: {color: "#42b983"},
data: temperature
}
]
}
echarts1.setOption(option)
},
initCharts2(temperature, winddirection, windspeed){
console.log(winddirection)
echarts2 = echarts.init(document.querySelector('#echarts2'))
const option = {
tooltip: {
trigger: 'axis',
position: function (pt) {
return [pt[0], '10%'];
}
},
title: {
left: 'center',
text: '气象设备数据图 - 风向'
},
xAxis: {
type: 'category',
boundaryGap: false,
minInterval: 1,
maxInterval: 3600 * 24 * 1000
},
yAxis: {
type: 'value',
boundaryGap: [0, '80%']
},
dataZoom: [
{
type: 'inside',
start: 0,
end: 20
},
{
start: 0,
end: 20
}
],
series: [
{
name: '风向',
type: 'line',
smooth: true,
symbol: 'none',
areaStyle: {color: "#6a87dc"},
data: winddirection
}
]
}
echarts2.setOption(option)
},
initCharts3(temperature, winddirection, windspeed){
console.log(windspeed)
echarts3 = echarts.init(document.querySelector('#echarts3'))
const option = {
tooltip: {
trigger: 'axis',
position: function (pt) {
return [pt[0], '10%'];
}
},
title: {
left: 'center',
text: '气象设备数据图 - 风速'
},
xAxis: {
type: 'category',
boundaryGap: false,
minInterval: 1,
maxInterval: 3600 * 24 * 1000
},
yAxis: {
type: 'value',
boundaryGap: [0, '80%']
},
dataZoom: [
{
type: 'inside',
start: 0,
end: 20
},
{
start: 0,
end: 20
}
],
series: [
{
name: '风速',
type: 'line',
smooth: true,
symbol: 'none',
areaStyle: {color: "#f033a0"},
data: windspeed
},
]
}
echarts3.setOption(option)
},
//
showHistory(){
this.listLoading = true
requestFN(
'/meteorologicalinfo/list?showCount=' + this.listQuery.limit + '&currentPage=' + this.listQuery.page,
{
CODE: this.$parent.CODE
}
).then((data) => {
this.listLoading = false
this.varList = data.varList
this.temperature = []
this.winddirection = []
this.windspeed = []
for (let i = 0 ; i < this.varList.length ; i ++){
this.temperature.push([this.varList[i].OPERATTIME, this.varList[i].TEMPERATURE])
this.winddirection.push([this.varList[i].OPERATTIME, this.varList[i].WINDDIRECTION])
this.windspeed.push([this.varList[i].OPERATTIME, this.varList[i].WINDSPEED])
}
this.temperature.reverse()
this.winddirection.reverse()
this.windspeed.reverse()
this.initCharts1(this.temperature, this.winddirection, this.windspeed)
this.initCharts2(this.temperature, this.winddirection, this.windspeed)
this.initCharts3(this.temperature, this.winddirection, this.windspeed)
this.total = data.page.totalResult
}).catch((e) => {
this.listLoading = false
})
},
showAllHistory(){
if (!this.dateTimeRange){
this.showHistory()
return
}
this.listLoading = true
requestFN(
'/meteorologicalinfo/listAll',
{
CODE: this.$parent.CODE,
START: this.dateTimeRange[0],
END: this.dateTimeRange[1]
}
).then(async (data) => {
this.listLoading = false
// data.varList
this.temperature = []
this.winddirection = []
this.windspeed = []
for (let i = 0 ; i < data.varList.length ; i ++){
this.temperature.push([data.varList[i].AGGREGATE_TIME, data.varList[i].AVG_TEMPERATURE])
this.winddirection.push([data.varList[i].AGGREGATE_TIME, data.varList[i].AVG_WINDDIRECTION])
this.windspeed.push([data.varList[i].AGGREGATE_TIME, data.varList[i].AVG_WINDSPEED])
}
this.initCharts1(this.temperature, this.winddirection, this.windspeed)
this.initCharts2(this.temperature, this.winddirection, this.windspeed)
this.initCharts3(this.temperature, this.winddirection, this.windspeed)
// this.total = data.page.totalResult
}).catch((e) => {
this.listLoading = false
})
},
dateToTimestamp(dateString) {
var date = new Date(dateString);
//
return Math.round(date.getTime() / 1000);
},
goKeyReset() {
this.dateTimeRange = []
this.showHistory()
},
resetForm() {
this.form = {
METEOROLOGICAL_ID: '',
TYPE: '1',
EQUIPMENTNAME: '', //
EQUIPMENTTYPE: '',
PLATFORMMETEOROLOGICAL_ID: '',
LATITUDE: '',
LONGITUDE: ''
}
},
goBack() {
this.$parent.activeName = 'meteorologicalList'
this.$parent.CODE = ''
}
}
}
</script>
<style>
.hide .el-upload--picture-card {
display: none;
}
#map{
width: 1000px;
height: 500px;
}
</style>

View File

@ -39,11 +39,11 @@
<span v-else></span>
</template>
</el-table-column>
<el-table-column label="操作" align="left" width="300">
<el-table-column label="操作" align="left" width="400">
<template slot-scope="{row}">
<!-- <el-button type="success" icon="el-icon-caret-right" size="mini" @click="showVideo(row)"></el-button>-->
<el-button type="info" icon="el-icon-location-information" size="mini" @click="handleMap(row)"></el-button>
<!-- <el-button v-show="!row.PLATFORMMETEOROLOGICAL_ID" type="warning" icon="el-icon-caret-right" size="mini" @click="showVideoBack(row.EQUIPMENTTYPE)"></el-button>-->
<el-button type="success" icon="el-icon-caret-right" size="mini" @click="showHistory(row.CODE)"></el-button>
<!-- <el-button v-show="row.PLATFORMMETEOROLOGICAL_ID" type="warning" size="mini" @click="getRTSP(row)">rtsp</el-button>-->
<el-button v-show="edit" type="primary" icon="el-icon-edit" size="mini" @click="handleEdit(row.METEOROLOGICAL_ID)"></el-button>
<el-button v-show="del" type="danger" icon="el-icon-delete" plain @click="handleDelete(row.METEOROLOGICAL_ID)"></el-button>
@ -367,7 +367,11 @@ export default {
this.EQUIPMENTTYPE = path.replace('play.html', 'playback.html')
this.dialogVideoBack = true
},
//
showHistory(id){
this.$parent.CODE = id
this.$parent.activeName = 'meteorologicalHistory'
},
showAll() {
const _selectData = this.$refs.multipleTable.selection
if (_selectData == null || _selectData.length == 0) {

View File

@ -7,16 +7,19 @@
<script>
import List from './components/list'
import meteorologicalList from './components/meteorological-list'
import meteorologicalHistory from './components/meteorological-history'
export default {
components: {
List: List,
meteorologicalList: meteorologicalList
meteorologicalList: meteorologicalList,
meteorologicalHistory: meteorologicalHistory,
},
data() {
return {
activeName: 'List',
CORPINFO_ID: ''
CORPINFO_ID: '',
CODE: ''
}
}
}

View File

@ -4,7 +4,7 @@
<el-row>
<el-col :span="6">
<el-form-item label="关键字搜索">
<el-input v-model="KEYWORDS" placeholder="搜索姓名、单位名称、特种作业证书编号"/>
<el-input v-model="KEYWORDS" placeholder="搜索姓名、手机号、单位名称、特种作业证书编号"/>
</el-form-item>
</el-col>
<!-- <el-col :span="6">-->

View File

@ -96,13 +96,13 @@
</el-select>
</el-form-item>
<el-form-item label="所属区域" prop="bianjiequyu">
<el-select v-model="form.SUOSHUQUYU" placeholder="请选择">
<el-option v-for="item in statusList" :key="item.id" :label="item.name" :value="item.id" />
<el-select v-model="form.SUOSHUQUYU" placeholder="请选择" @change="getSendDic">
<el-option v-for="item in statusList" :key="item.DICTIONARIES_ID" :label="item.name" :value="item.DICTIONARIES_ID" />
</el-select>
</el-form-item>
<el-form-item label="边界入侵区域" prop="bianjiequyu">
<el-select v-model="form.bianjiequyu" multiple placeholder="请选择监理单位" style="width: 100%;">
<el-option v-for="item in quyuList" :key="item.id" :label="item.name" :value="item.id" />
<el-select v-model="form.bianjiequyu" multiple placeholder="请选择边界入侵区域" style="width: 100%;">
<el-option v-for="item in quyuList" :key="item.DICTIONARIES_ID" :label="item.name" :value="item.DICTIONARIES_ID" />
</el-select>
</el-form-item>
<el-form-item v-if="form.VIDEO_TYPE===1" label="视频选择">
@ -126,7 +126,7 @@
</el-form>
<div slot="footer" class="dialog-footer">
<el-button @click="dialogForm =false"> </el-button>
<el-button @click="closeDia()"> </el-button>
<el-button type="primary" @click="upload"> </el-button>
</div>
</el-dialog>
@ -198,11 +198,7 @@ export default {
},
quyuList: [],
shexiangtouForm: {},
statusList: [
{ id: '0', name: '请选择' },
{ id: '1', name: '油管区' },
{ id: '2', name: '码头区' }
]
statusList: []
}
},
async created() {
@ -266,7 +262,7 @@ export default {
this.msg = 'add'
this.resetForm()
this.dialogForm = true
// this.$refs.platformvideo.init()
this.getDic()
},
resetForm() {
this.shexiangtouForm.LONGITUDE = ''
@ -312,6 +308,7 @@ export default {
).then(async(data) => {
await this.getAllList()
this.getList()
this.shexiangtouForm = {}
}).catch((e) => {
this.listLoading = false
})
@ -326,6 +323,7 @@ export default {
goEdit(row) {
this.dialogForm = true
this.listLoading = true
this.getDic()
return new Promise(resolve => {
requestFN(
'/platformelectronic/goEdit',
@ -334,15 +332,18 @@ export default {
}
).then((data) => {
this.shexiangtouForm = data.pd
this.form.bianjiequyu = data.pd.FANGQU_IDS.split(',')
this.form.SUOSHUQUYU = data.pd.SUOSHUQUYU
this.getSendDic()
this.form.bianjiequyu = data.pd.FANGQU_IDS?data.pd.FANGQU_IDS.split(','):[]
this.form.CORPINFO_ID = data.pd.CORPINFO_ID
this.form.VIDEONAME = data.pd.NAME
this.form.CODE = data.pd.INDEXCODE
this.form.SUOSHUQUYU = data.pd.SUOSHUQUYU
this.form.LONGITUDEANDLATITUDE = data.pd.LONGITUDE + ',' + data.pd.LATITUDE
this.listLoading = false
resolve()
}).catch((e) => {
console.log(e)
this.listLoading = false
})
})
@ -381,8 +382,8 @@ export default {
},
//
setPosition() {
// eslint-disable-next-line no-empty
if (this.shexiangtouForm.PLATFORMELECTRONIC_ID != null) {
}
this.shexiangtouForm.LONGITUDE = this.form.LONGITUDE
this.shexiangtouForm.LATITUDE = this.form.LATITUDE
@ -505,6 +506,58 @@ export default {
handleBack() {
this.player.dispose()
this.dialogVideoHLS = false
},
getDic() { //
const loading = this.$loading({
lock: true,
text: 'Loading',
spinner: 'el-icon-loading',
background: 'rgba(0, 0, 0, 0.7)'
})
requestFN('/dictionaries/listSelectTree', { DICTIONARIES_ID: 'f0bae7becdee4d779a2cb82037948ab4' }
).then((data) => {
this.statusList = JSON.parse(data.zTreeNodes)
loading.close()
}).catch((e) => {
loading.close()
})
},
getSendDic() {
const loading = this.$loading({
lock: true,
text: 'Loading',
spinner: 'el-icon-loading',
background: 'rgba(0, 0, 0, 0.7)'
})
this.form.bianjiequyu = []
this.form.quyuList = []
requestFN('/dictionaries/listSelectTree', { DICTIONARIES_ID: this.form.SUOSHUQUYU }
).then((data) => {
loading.close()
this.quyuList = JSON.parse(data.zTreeNodes)
}).catch((e) => {
loading.close()
})
},
closeDia() {
this.dialogForm = false
this.form = {
CORPINFO_ID: '',
bianjiequyu: [],
PLATFORMELECTRONIC_ID: '',
LONGITUDEANDLATITUDE: '',
VIDEOMANAGER_ID: '',
VIDEO_RESOURCES_ID: '',
VIDEO_TYPE: 1,
VIDEONAME: '', //
VIDEOURL: '',
CODE: '',
PLATFORMVIDEOMANAGEMENT_ID: '',
LATITUDE: '',
LONGITUDE: '',
SUOSHUQUYU: ''
}
}
}
}

View File

@ -154,8 +154,8 @@
<el-dialog v-if="dialogVideoAll" :visible.sync="dialogVideoAll" :before-close="handleBack" :show-close="false" title="视频" width="1200px">
<!-- <iframe src="http://192.168.192.121:10800/?menu=no/#/screen" width="100%" height="500px" allowfullscreen allow="autoplay; fullscreen" style="position: relative;border:none"/>-->
<div style="display: flex;flex-wrap: wrap;justify-content: space-between">
<div v-for="(video,index) in videoList" :key="index" style="margin-bottom: 10px;width: 45%">
<iframe v-if="video.GBSVIDEOURL" :src="video.GBSVIDEOURL" width="100%" height="380" allowfullscreen allow="autoplay; fullscreen;microphone" style="position: relative;border:none"/>
<div v-for="(video,index) in videoList" :key="index" style="margin-bottom: 10px;width: 30%">
<iframe v-if="video.GBSVIDEOURL" :src="video.GBSVIDEOURL" width="100%" height="280" allowfullscreen allow="autoplay; fullscreen;microphone" style="position: relative;border:none"/>
<div v-if="video.HLSVIDEOURL" :id="'aLiVideoPlayer'+index" class="prism-player"/>
</div>
</div>

View File

@ -4,38 +4,23 @@
<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">
<div class="img">
<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 v-if="item.label3" class="label">
{{ item.label3 }}
<count-to :start-val="0" :end-val="+item.count3" :duration="3600"/>
<div class="info">
<div>{{ item.label1 }}{{ item.count1 }}</div>
<div>{{ item.label2 }}{{ item.count2 }}</div>
<div>{{ item.label3 }}{{ item.count3 }}</div>
</div>
</div>
</div>
</div>
<!-- <div class="block2">
<layout-title title="口门区域"/>
<div class="block2">
<layout-title title="进入进出统计"/>
<div class="options">
<div class="bg"/>
<div v-for="(item,index) in block2OptionsList" :key="index" class="option">
<div class="label">{{ item.title }}</div>
<div class="info">
<span class="count"><count-to :start-val="0" :end-val="+item.count" :duration="3600"/></span>
<span class="company">{{ item.company }}</span>
</div>
</div>
<div id="main1"/>
</div>
</div> -->
</div>
<div class="block3">
<layout-title title="口门进出记录"/>
<div class="content">
@ -56,8 +41,6 @@
<div class="td">时间</div>
<div class="td">状态</div>
<div class="td">闸机名称</div>
<!--<div v-if="block3OptionsIndex == 0" class="td"></div>
<div v-if="block3OptionsIndex == 1" class="td"></div>-->
</div>
<div v-infinite-scroll="load" :infinite-scroll-disabled="disabled" class="scroll">
<div v-for="(item,index) in block3List" :key="index" class="tr">
@ -90,7 +73,9 @@
import layoutTitle from './title.vue'
import CountTo from 'vue-count-to'
import { requestFN } from '@/utils/request'
import * as echarts from 'echarts'
let Echarts1
export default {
components: {
layoutTitle,
@ -114,62 +99,22 @@ export default {
return {
block1OptionsList: [
{
title: '人员闸机',
img: require('../../../assets/map/menjin/ico1.png'),
label1: '今日进数',
img: require('../../../assets/map/menjin/img3.png'),
label1: '口门数',
count1: 0,
label2: '今日出数',
label2: '车闸机数',
count2: 0,
label3: '今日剩余人数',
label3: '闸机数',
count3: 0
},
{
title: '车辆闸机',
img: require('../../../assets/map/menjin/ico2.png'),
label1: '今日进数',
img: require('../../../assets/map/menjin/img4.png'),
label1: '口门数',
count1: 0,
label2: '今日出数',
label2: '车闸机数',
count2: 0,
label3: '今日剩余车数',
label3: '人闸机数',
count3: 0
},
{
title: '摄像头数',
img: require('../../../assets/map/menjin/ico3.png'),
label1: '摄像头数',
count1: 0
}
],
block2OptionsList: [
{
title: '临时人员',
count: '2365',
company: '条'
},
{
title: '超员警告',
count: '2365',
company: '条'
},
{
title: 'SOS求救',
count: '2365',
company: '条'
},
{
title: '离岗告警',
count: '2365',
company: '条'
},
{
title: '禁止超时',
count: '2365',
company: '条'
},
{
title: '车辆超速',
count: '2365',
company: '条'
}
],
block3OptionsList: ['人员闸机', '车辆闸机'],
@ -192,48 +137,188 @@ export default {
created() {
this.getDoorWayRecords(0)
this.getOnlineGateMachine()
this.getMachineTodayInOutCount()
this.getMkmjGateStatistics()
// this.getDoorManagement()
},
mounted() {
window.onresize = function() {
Echarts1 && Echarts1.resize()
}
this.initEcharts1()
},
beforeDestroy() {
Echarts1 = null
},
methods: {
initEcharts1(data) {
const XaxisData = []
const seriesData1 = []
const seriesData2 = []
data.forEach(e => {
XaxisData.push(e.AREA_NAME)
seriesData1.push(e.CAR_IN + 0 + e.PEOPLE_IN)
seriesData2.push(e.CAR_OUT + 0 + e.PEOPLE_OUT)
});
Echarts1 = echarts.init(document.querySelector('#main1'))
const option = {
tooltip: {
trigger: 'axis',
axisPointer: {
type: 'shadow'
}
},
grid: {
left: '2%',
right: '4%',
bottom: '5%',
top: '10%',
containLabel: true
},
legend: {
top: '0%',
right: '0%',
textStyle: {
color: '#fff',
fontSize: 14
},
itemWidth: 12,
itemHeight: 10
},
xAxis: {
type: 'category',
data: XaxisData,
axisLine: {
lineStyle: {
color: '#fff'
}
},
axisLabel: {
textStyle: {
fontSize: 14
}
}
},
yAxis: {
type: 'value',
// max: '150',
axisLine: {
show: false,
lineStyle: {
color: '#fff'
}
},
splitLine: {
show: true,
lineStyle: {
color: '#8c9493'
}
},
axisLabel: {
textStyle: {
fontSize: 14
}
}
},
series: [
{
name: '进',
type: 'bar',
barWidth: '30%',
itemStyle: {
normal: {
color: new echarts.graphic.LinearGradient(
0,
0,
0,
1,
[
{
offset: 0,
color: '#00f0ff'
},
{
offset: 1,
color: '#0066ff'
}
],
false
)
}
},
data: seriesData1
},
{
name: '出',
type: 'bar',
barWidth: '30%',
itemStyle: {
normal: {
color: new echarts.graphic.LinearGradient(
0,
0,
0,
1,
[
{
offset: 0,
color: '#003cff'
},
{
offset: 1,
color: '#00ff9c'
}
],
false
)
}
},
data: seriesData2
}
]
}
Echarts1.setOption(option)
},
load() {
this.loading = true
this.currentPage += 1
this.loadRecord(this.block3OptionsIndex)
},
getOnlineGateMachine() {
getMkmjGateStatistics() {
requestFN(
'/map/getOnlineGateEquipment', {
AREA: this.area,
CORP_INFO_ID: this.corpInfoId,
GANGKOU: this.gangkou
'/mkmjGateStatistics/page?showCount=100&currentPage=1', {
AREA: this.area
}
).then((data) => {
this.block1OptionsList[0].count1 = data.pd.PERSON_IN
this.block1OptionsList[0].count2 = data.pd.PERSON_OUT
this.block1OptionsList[0].count3 = data.pd.PERSON_IN - data.pd.PERSON_OUT
this.block1OptionsList[1].count1 = data.pd.CAR_IN
this.block1OptionsList[1].count2 = data.pd.CAR_OUT
this.block1OptionsList[1].count3 = data.pd.CAR_IN - data.pd.CAR_OUT
this.block1OptionsList[2].count1 = data.pd.CAMERA
}).catch((e) => {
console.log(e)
this.initEcharts1(data.varList)
})
},
getMachineTodayInOutCount() {
getOnlineGateMachine() {
requestFN(
'/map/getMachineTodayInOutCount', {
'/map/getOnlineGateMachine', {
AREA: this.area,
CORPINFO_ID: this.corpInfoId,
GANGKOU: this.gangkou,
id: '7'
}
).then((data) => {
if (this.gangkou === '00004') {
data.varList.forEach(e => {
if (e.AREA_PARENT_ID == '393705'){
//
this.block1OptionsList[0].count1 = e.AREA_COUNT
this.block1OptionsList[0].count2 = e.CAR
this.block1OptionsList[0].count3 = e.PEOPLE
}else if (e.AREA_PARENT_ID == '371709'){
// 西
this.block1OptionsList[1].count1 = e.AREA_COUNT
this.block1OptionsList[1].count2 = e.CAR
this.block1OptionsList[1].count3 = e.PEOPLE
}
});
} else {
this.block2OptionsList = data.varList
}
})
},
getDoorManagement() {
@ -356,30 +441,22 @@ export default {
.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;
.img{
width: 81px;
height: 93px;
img{
width: 100%;
height: 100%;
}
}
.label {
margin-top: 5px;
font-size: 12px;
.info{
margin-left: 10px;
font-size: 14px;
color: #fff;
div{
margin-top: 5px;
}
}
}
}
@ -395,49 +472,9 @@ export default {
border: 1px solid;
border-image: linear-gradient(to bottom, rgba(58, 122, 149, 0), rgba(58, 122, 149, 1)) 1;
border-top: none;
display: flex;
flex-wrap: wrap;
justify-content: space-between;
align-items: center;
position: relative;
height: 244px;
.bg {
background-image: url("../../../assets/map/menjin/img2.png");
background-size: 100% 100%;
background-repeat: no-repeat;
width: 310px;
height: 264px;
position: absolute;
left: 50%;
top: 50%;
transform: translate(-50%, -50%);
}
.option {
flex-basis: 35%;
text-align: center;
.label {
font-size: 14px;
color: #fff;
}
.info {
.count {
font-size: 24px;
background: linear-gradient(to top, #48bbf0, #ffffff);
-webkit-background-clip: text;
-webkit-text-fill-color: transparent;
font-weight: bold;
font-family: "PingFang SC", "Helvetica Neue", "Hiragino Sans GB", "Segoe UI", "Microsoft YaHei", "微软雅黑", sans-serif;
}
.company {
font-size: 14px;
color: #fff;
}
}
#main1{
width: 100%;
height: 300px;
}
}
}

View File

@ -0,0 +1,546 @@
<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 v-if="item.label3" class="label">
{{ item.label3 }}
<count-to :start-val="0" :end-val="+item.count3" :duration="3600"/>
</div>
</div>
</div>
</div>
<div class="block2">
<layout-title title="口门区域"/>
<div class="options">
<div class="bg"/>
<div v-for="(item,index) in block2OptionsList" :key="index" class="option">
<div class="label">{{ item.title }}</div>
<div class="info">
<span class="count"><count-to :start-val="0" :end-val="+item.count" :duration="3600"/></span>
<span class="company">{{ item.company }}</span>
</div>
</div>
</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 v-if="block3OptionsIndex == 0" class="td"></div>
<div v-if="block3OptionsIndex == 1" class="td"></div>
<div class="td">时间</div>
<div class="td">状态</div>
<div class="td">闸机名称</div>
<div v-if="block3OptionsIndex == 0" class="td"></div>
<div v-if="block3OptionsIndex == 1" class="td"></div>
</div>
<div v-infinite-scroll="load" :infinite-scroll-disabled="disabled" class="scroll">
<div v-for="(item,index) in block3List" :key="index" class="tr">
<div v-if="block3OptionsIndex == 0" class="td line1">{{ item.USERNAME }}</div>
<div v-if="block3OptionsIndex == 1" class="td">{{ item.LICENSE_PLATE }}</div>
<div class="td">{{ item.TIME }}</div>
<div v-if="block3OptionsIndex == 0" :class="['td',{green:item.STATE == '0'}]">
{{ item.STATE == '0' ? '进入' : '出港' }}
</div>
<div v-if="block3OptionsIndex == 0" :class="['td',{yellow:item.STATE == '0'}]">{{
item.EQUIPMENTNAME
}}
</div>
<div v-if="block3OptionsIndex == 1" :class="['td',{green:item.STATE == '4'}]">
{{ item.STATE == '0' ? '进场' : '出场' }}
</div>
<div v-if="block3OptionsIndex == 1" :class="['td',{yellow:item.STATE == '4'}]">{{
item.COMING_REASON
}}
</div>
</div>
</div>
</div>
</div>
</div>
</div>
</template>
<script>
import layoutTitle from './title.vue'
import CountTo from 'vue-count-to'
import { requestFN } from '@/utils/request'
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,
label3: '今日剩余人数',
count3: 0
},
{
title: '车辆闸机',
img: require('../../../assets/map/menjin/ico2.png'),
label1: '今日进数',
count1: 0,
label2: '今日出数',
count2: 0,
label3: '今日剩余车数',
count3: 0
},
{
title: '摄像头数',
img: require('../../../assets/map/menjin/ico3.png'),
label1: '摄像头数',
count1: 0
}
],
block2OptionsList: [
{
title: '临时人员',
count: '2365',
company: '条'
},
{
title: '超员警告',
count: '2365',
company: '条'
},
{
title: 'SOS求救',
count: '2365',
company: '条'
},
{
title: '离岗告警',
count: '2365',
company: '条'
},
{
title: '禁止超时',
count: '2365',
company: '条'
},
{
title: '车辆超速',
count: '2365',
company: '条'
}
],
block3OptionsList: ['人员闸机', '车辆闸机'],
block3OptionsIndex: 0,
loading: false,
currentPage: 1,
count: 0,
totalPage: 0,
block3List: []
}
},
computed: {
noMore() {
return this.currentPage >= this.totalPage
},
disabled() {
return this.loading || this.noMore
}
},
created() {
this.getDoorWayRecords(0)
this.getOnlineGateMachine()
this.getMachineTodayInOutCount()
// this.getDoorManagement()
},
methods: {
load() {
this.loading = true
this.currentPage += 1
this.loadRecord(this.block3OptionsIndex)
},
getOnlineGateMachine() {
requestFN(
'/map/getOnlineGateEquipment', {
AREA: this.area,
CORPINFO_ID: this.corpInfoId,
GANGKOU: this.gangkou
}
).then((data) => {
this.block1OptionsList[0].count1 = data.pd.PERSON_IN
this.block1OptionsList[0].count2 = data.pd.PERSON_OUT
this.block1OptionsList[0].count3 = data.pd.PERSON_IN - data.pd.PERSON_OUT
this.block1OptionsList[1].count1 = data.pd.CAR_IN
this.block1OptionsList[1].count2 = data.pd.CAR_OUT
this.block1OptionsList[1].count3 = data.pd.CAR_IN - data.pd.CAR_OUT
this.block1OptionsList[2].count1 = data.pd.CAMERA
}).catch((e) => {
console.log(e)
})
},
getMachineTodayInOutCount() {
requestFN(
'/map/getMachineTodayInOutCount', {
AREA: this.area,
CORPINFO_ID: this.corpInfoId,
GANGKOU: this.gangkou,
id: '7'
}
).then((data) => {
if (this.gangkou === '00004') {
} else {
this.block2OptionsList = data.varList
}
})
},
getDoorManagement() {
requestFN(
'/map/getDoorManagement', {
AREA: this.area,
CORPINFO_ID: this.corpInfoId,
GANGKOU: this.gangkou,
id: '7'
}
).then((data) => {
var carin = 0
var carout = 0
var peosonout = 0
var peosonin = 0
for (let i = 0; i < data.varList[1].list.length; i++) {
if (data.varList[1].list[i].TYPE == 'PERSON_OUT') {
// this.block2OptionsList[1].list[1].count = data.varList[1].list[i].count
peosonout = data.varList[1].list[i].count
}
if (data.varList[1].list[i].TYPE == 'PERSON_IN') {
// this.block2OptionsList[1].list[0].count = data.varList[1].list[i].count
peosonin = data.varList[1].list[i].count
}
if (data.varList[1].list[i].TYPE == 'CAR_OUT') {
// this.block2OptionsList[1].list[4].count = data.varList[1].list[i].count
carout = data.varList[1].list[i].count
}
if (data.varList[1].list[i].TYPE == 'CAR_IN') {
// this.block2OptionsList[1].list[3].count = data.varList[1].list[i].count
carin = data.varList[1].list[i].count
}
}
for (let i = 0; i < this.block2OptionsList.length; i++) {
this.block2OptionsList[i].list[0].count = peosonin
this.block2OptionsList[i].list[1].count = peosonout
this.block2OptionsList[i].list[2].count = peosonin - peosonout
this.block2OptionsList[i].list[3].count = carin
this.block2OptionsList[i].list[4].count = carout
this.block2OptionsList[i].list[5].count = carin - carout
}
this.$forceUpdate()
}).catch((e) => {
console.log(e)
})
},
loadRecord(index) {
this.getDoorWayRecords(index)
},
block3OptionsClick(index) {
this.block3List = []
this.block3OptionsIndex = index
this.getDoorWayRecords(index)
},
listPerpleCarGateMachine(type) {
requestFN(
'/map/getCfdDoorWayRecords',
{
id: '7',
TYPE: type
}
).then((data) => {
this.block3List = data.data
}).catch((e) => {
})
},
getDoorWayRecords(index) {
requestFN(
'/map/getDoorWayRecords?showCount=20&currentPage=' + this.currentPage, {
AREA: this.area,
CORPINFO_ID: this.corpInfoId,
GANGKOU: this.gangkou,
INDEX: index
}
).then((data) => {
this.block3List = this.block3List.concat(data.varList)
this.totalPage = data.page.totalPage
this.currentPage = data.page.currentPage
this.loading = false
this.$forceUpdate()
}).catch((e) => {
console.log(e)
this.loading = false
})
}
}
}
</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;
}
}
}
}
.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;
display: flex;
flex-wrap: wrap;
justify-content: space-between;
align-items: center;
position: relative;
height: 244px;
.bg {
background-image: url("../../../assets/map/menjin/img2.png");
background-size: 100% 100%;
background-repeat: no-repeat;
width: 310px;
height: 264px;
position: absolute;
left: 50%;
top: 50%;
transform: translate(-50%, -50%);
}
.option {
flex-basis: 35%;
text-align: center;
.label {
font-size: 14px;
color: #fff;
}
.info {
.count {
font-size: 24px;
background: linear-gradient(to top, #48bbf0, #ffffff);
-webkit-background-clip: text;
-webkit-text-fill-color: transparent;
font-weight: bold;
font-family: "PingFang SC", "Helvetica Neue", "Hiragino Sans GB", "Segoe UI", "Microsoft YaHei", "微软雅黑", sans-serif;
}
.company {
font-size: 14px;
color: #fff;
}
}
}
}
}
.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

@ -1,7 +1,7 @@
<template>
<div class="renyuan">
<div class="block1">
<layout-title title="重点工程统计"/>
<layout-title title="边界入侵统计"/>
<div class="options">
<div v-for="(item,index) in block1OptionsList" :key="index" class="option">
<div class="imger">
@ -10,39 +10,29 @@
<div class="info">
<div class="label">{{ item.title }}</div>
<div class="text">{{ item.count }}</div>
<!-- <div class="text"><count-to :start-val="0" :end-val="item.count" :duration="3600"/></div>-->
</div>
</div>
</div>
</div>
<div class="block2">
<layout-title title="区域报警数"/>
<layout-title title="区域摄像头数量"/>
<div class="options">
<div v-for="(item,index) in block2OptionsList" :key="index" class="option">
<div class="circular"><img :src="item.img" alt=""></div>
<div class="info">
<div class="title">{{ item.label }}</div>
<div class="count"> <count-to :start-val="0" :end-val="+item.count" :duration="3600"/></div>
</div>
</div>
<div id="main1"/>
</div>
</div>
<div class="block3">
<layout-title title="安全管理记录"/>
<div class="block4">
<layout-title title="报警列表"/>
<div class="content">
<div class="table">
<div class="tr">
<div class="td">公司名称</div>
<div class="td">创建数</div>
<div class="td">检查次数</div>
<div class="td">隐患数量</div>
<div class="td">区域名称</div>
<div class="td">报警设备编号</div>
<div class="td">状态告警</div>
</div>
<div v-for="(item,index) in block3List" :key="index" class="tr">
<div class="td">{{ item.CORP_NAME }}</div>
<div class="td">{{ item.OUTSOURCED_COUNT }}</div>
<div class="td">{{ item.CHECK_COUNT }}</div>
<div class="td">{{ item.HIDDEN_COUNT }}</div>
<div v-for="(item,index) in block4List" :key="index" class="tr">
<div class="td">{{ item.alarmName }}</div>
<div class="td">{{ item.equipmentName }}</div>
<div class="td">{{ item.statusName }}</div>
</div>
</div>
</div>
@ -54,7 +44,9 @@
import layoutTitle from './title.vue'
import CountTo from 'vue-count-to'
import { requestFN } from '@/utils/request'
import * as echarts from 'echarts'
let Echarts1
export default {
components: {
CountTo,
@ -78,26 +70,15 @@ export default {
return {
block1OptionsList: [
{
title: '开工数量',
title: '报警数量',
img: require('../../../assets/map/zhongdian/ico1.png'),
count: '-'
},
{
title: '视频数量',
title: '监控数量',
img: require('../../../assets/map/zhongdian/ico2.png'),
count: '-'
},
{
title: '检查次数',
img: require('../../../assets/map/zhongdian/ico3.png'),
count: '-'
},
{
title: '发现隐患数量',
img: require('../../../assets/map/zhongdian/ico4.png'),
count: '-'
}
],
block2OptionsList: [
{
@ -120,12 +101,19 @@ export default {
CHECK_COUNT: '-',
HIDDEN_COUNT: '-'
}
]
],
block4List: []
}
},
mounted() {
this.getCount()
this.initNum()
this.initgetTable()
window.onresize = function() {
Echarts1 && Echarts1.resize()
}
},
beforeDestroy() {
Echarts1 = null
},
methods: {
getCount() {
@ -147,6 +135,22 @@ export default {
this.block2OptionsList[1].count = data.pd.AMOUT_SUM
})
},
initNum() {
requestFN('/map/getAllDwMessage', { corpId: this.corpInfoId, source: '0' }
).then((data0) => {
this.block1OptionsList[0].count = data0.alarmList.page.total
requestFN('/map/mapPlatformelectronic/listAllLocation', { corpId: this.corpInfoId, TYPE: 'bianjieruqin' }
).then((data1) => {
this.block4List = data0.alarmList.list
this.block1OptionsList[1].count = data1.varList.length
this.initEcharts1(data1.iconData)
}).catch((e) => {
this.$message.error(e)
})
}).catch((e) => {
this.$message.error(e)
})
},
initgetTable() {
requestFN(
'/map/keyProject/list?showCount=10&currentPage=1',
@ -158,6 +162,112 @@ export default {
).then((data) => {
this.block3List = data.varList
})
},
initEcharts1(data) {
console.log(data)
const XaxisData = []
const seriesData1 = []
for (const optionKey in data) {
console.log(data[optionKey])
for (let i = 0; i < data[optionKey].length; i++) {
console.log(data[optionKey][i])
XaxisData.push(data[optionKey][i].NAME)
seriesData1.push(data[optionKey][i].num)
}
}
// eslint-disable-next-line no-undef
Echarts1 = echarts.init(document.querySelector('#main1'))
const option = {
tooltip: {
trigger: 'axis',
axisPointer: {
type: 'shadow'
}
},
grid: {
left: '2%',
right: '4%',
bottom: '5%',
top: '12%',
containLabel: true
},
legend: {
top: '0%',
right: '0%',
textStyle: {
color: '#fff',
fontSize: 14
},
itemWidth: 12,
itemHeight: 10
},
xAxis: {
type: 'category',
data: XaxisData,
axisLine: {
lineStyle: {
color: '#fff'
}
},
axisLabel: {
textStyle: {
fontSize: 12
}
}
},
yAxis: {
type: 'value',
max: '50',
axisLine: {
show: false,
lineStyle: {
color: '#fff'
}
},
splitLine: {
show: true,
lineStyle: {
color: '#8c9493'
}
},
axisLabel: {
textStyle: {
fontSize: 14
}
}
},
series: [
{
name: '摄像头',
type: 'bar',
barWidth: '10%',
itemStyle: {
normal: {
color: new echarts.graphic.LinearGradient(
0,
0,
0,
1,
[
{
offset: 0,
color: '#00f0ff'
},
{
offset: 1,
color: '#0066ff'
}
],
false
)
}
},
data: seriesData1
}
]
}
Echarts1.setOption(option)
}
}
}
@ -243,6 +353,7 @@ export default {
}
}
}
.block2 {
width: 410px;
background-image: linear-gradient(to bottom, rgba(0, 0, 0, 0), rgba(0, 0, 0, 0.8));
@ -253,66 +364,11 @@ export default {
border: 1px solid;
border-image: linear-gradient(to bottom, rgba(58, 122, 149, 0), rgba(58, 122, 149, 1)) 1;
border-top: none;
display: flex;
flex-wrap: wrap;
justify-content: space-between;
align-items: center;
position: relative;
height: 150px;
.option{
width: 50%;
display: flex;
align-items: center;
justify-content: space-around;
.circular {
margin-top: 5px;
background-image: url("../../../assets/map/anquan/icobg.png");
background-size: 100% 100%;
background-repeat: no-repeat;
width: 70px;
height: 70px;
text-align: center;
padding-top: 13px;
img {
width: 25px;
height: 26px;
animation: slideY 2s infinite;
}
}
.info{
flex: 1;
text-align: center;
.title{
background-image: url("../../../assets/map/anquan/label.png");
background-size: 100% 100%;
background-repeat: no-repeat;
width: 120px;
height: 24px;
margin-top: 5px;
font-size: 12px;
line-height: 25px;
text-align: center;
color: #fff;
}
.count{
margin-top: 10px;
font-size: 24px;
background: linear-gradient(to top, #48bbf0, #ffffff);
-webkit-background-clip: text;
-webkit-text-fill-color: transparent;
font-weight: bold;
font-family: "PingFang SC", "Helvetica Neue", "Hiragino Sans GB", "Segoe UI", "Microsoft YaHei", "微软雅黑", sans-serif;
}
}
#main1 {
width: 100%;
height: 250px;
}
}
}
@ -357,6 +413,48 @@ export default {
}
}
}
.block4 {
margin-top: 10px;
width: 410px;
background-image: linear-gradient(to bottom, rgba(0, 0, 0, 0), rgba(0, 0, 0, 0.8));
.content {
border: 1px solid;
border-image: linear-gradient(to bottom, rgba(58, 122, 149, 0), rgba(58, 122, 149, 1)) 1;
border-top: none;
padding: 10px;
.options {
display: flex;
justify-content: flex-end;
.title {
cursor: pointer;
}
}
.table {
margin-top: 5px;
.tr {
display: flex;
&:nth-child(odd) {
background-color: rgba(42, 86, 158, 0.53);
}
.td {
flex: 1;
text-align: center;
font-size: 12px;
color: #fff;
padding: 5px;
}
}
}
}
}
}
@keyframes scale {
@ -370,6 +468,7 @@ export default {
transform: scale(0.9);
}
}
@keyframes slideY {
0% {
transform: translateY(0);

View File

@ -73,27 +73,31 @@
<tr>
<td>序号</td>
<td>安全措施</td>
<td style="width: 80px; text-align: center">是否涉及</td>
<td style="width: 80px; text-align: center">确认人</td>
<td style="width: 80px; text-align: center;">是否涉及</td>
<td style="width: 80px; text-align: center;">确认人</td>
</tr>
<tr v-for="(item,index) in measuresList" :key="index">
<td>{{ index + 1 }}</td>
<tr v-for="(item, index) in measuresList" :key="index">
<td style="text-align: center;">{{ index + 1 }}</td>
<td>
{{ item.PROTECTIVE_MEASURES }}
<!-- <template v-if="item.QUESTION1">-->
<!-- {{ item.QUESTION1 }}({{ item.ANSWER1 }})-->
<!-- </template>-->
<!-- <template v-if="item.QUESTION2">-->
<!-- {{ item.QUESTION2 }}({{ item.ANSWER2 }}) {{ item.QUESTION3 }}({{ item.ANSWER3 }})-->
<!-- </template>-->
<!--
<template v-if="item.QUESTION1">
{{ item.QUESTION1 }}({{ item.ANSWER1 }})
</template>
<template v-if="item.QUESTION2">
{{ item.QUESTION2 }}({{ item.ANSWER2 }}) {{ item.QUESTION3 }}({{ item.ANSWER3 }})
</template>
-->
</td>
<td>
<span v-if="item.STATUS=='1'"><input type="radio" disabled checked>&nbsp;&nbsp;&nbsp;</span>
<span v-if="item.STATUS=='-1'"><input type="radio" disabled checked>不涉及</span>
</td>
<td>
{{ item.CONFIRM_NAME }}
<td style="text-align: center;">
<span v-if="item.STATUS == '1'">
<input type="radio" disabled checked>&nbsp;&nbsp;&nbsp;
</span>
<span v-if="item.STATUS == '-1'">
<input type="radio" disabled checked>不涉及
</span>
</td>
<td style="text-align: center;">{{ item.CONFIRM_NAME }}</td>
</tr>
<tr v-if="pd.SAFETY_USER_MEASURES || pd.CONFIRM_OTHER_CONTENT || pd.BELONGING_USER_MEASURES || pd.GUARDIAN_USER_MEASURES || pd.LEADER_USER_MEASURES
|| pd.AUDIT_USER_MEASURES || pd.APPROVE_USER_MEASURES || pd.MONITOR_USER_MEASURES">
@ -141,13 +145,25 @@
<tr>
<td class="bbg-transparent">接受交底人</td>
<td colspan="10">
<div v-for="item in imgList" :key="item.ACCEPT_CONFESS_ID" style="text-align: right">
<span>签字</span>
<img v-viewer :src="config.fileUrl + item.ACCEPT_CONFESS_USER_SIGNER_PATH" alt="" width="100" height="100">
<span>{{ item.ACCEPT_CONFESS_USER_SIGNER_TIME }}</span>
<div v-for="item in acceptConfessList" :key="item.USER_ID">
<div v-for="(signature, index) in item.APPROVAL_SIGNATURE" :key="index" style="text-align: right">
<span>签字</span>
<img v-viewer :src="config.fileUrl + signature.trim()" alt="" width="100" height="100">
<span>{{ item.APPROVAL_SIGNATURE_TIME.split(',')[0] }}</span>
</div>
</div>
</td>
</tr>
<!-- <tr>-->
<!-- <td class="bbg-transparent">接受交底人</td>-->
<!-- <td colspan="10">-->
<!-- <div v-for="item in imgList" :key="item.ACCEPT_CONFESS_ID" style="text-align: right">-->
<!-- <span>签字</span>-->
<!-- <img v-viewer :src="config.fileUrl + item.ACCEPT_CONFESS_USER_SIGNER_PATH" alt="" width="100" height="100">-->
<!-- <span>{{ item.ACCEPT_CONFESS_USER_SIGNER_TIME }}</span>-->
<!-- </div>-->
<!-- </td>-->
<!-- </tr>-->
<tr>
<td class="bbg-transparent">监护人</td>
<td colspan="3">
@ -170,7 +186,7 @@
</tr>
<tr v-if="pd.CONFIRM_USER_SIGNER_PATH">
<td colspan="6">
<div>作业负责人意见{{ pd.CONFIRM_CONTENT }}</div>
<div>作业负责人意见{{ pd.CONFIRM_CONTENT === '无' ? '同意' : pd.CONFIRM_CONTENT }}</div>
<div style="text-align: right">
<span>签字</span>
<img v-viewer :src="config.fileUrl + pd.CONFIRM_USER_SIGNER_PATH" alt="" width="100" height="100">
@ -180,7 +196,7 @@
</tr>
<tr v-if="pd.BELONGING_SIGNATURE">
<td colspan="6">
<div>项目主管部门负责人意见{{ pd.BELONGING_OPINIONS }}</div>
<div>项目主管部门负责人意见{{ pd.BELONGING_OPINIONS === '' ? '同意' : pd.BELONGING_OPINIONS }}</div>
<div style="text-align: right">
<span>签字</span>
<img v-viewer :src="config.fileUrl + pd.BELONGING_SIGNATURE" alt="" width="100" height="100">
@ -190,7 +206,7 @@
</tr>
<tr v-if="pd.LEADER_USER_SIGNER_PATH">
<td colspan="6">
<div>属地监管单位意见{{ pd.LEADER_CONTENT }}</div>
<div>属地监管单位意见{{ pd.LEADER_CONTENT === '无' ? '同意' : pd.LEADER_CONTENT }}</div>
<div style="text-align: right">
<span>签字</span>
<img v-viewer :src="config.fileUrl + pd.LEADER_USER_SIGNER_PATH" alt="" width="100" height="100">
@ -200,7 +216,7 @@
</tr>
<tr v-if="pd.AUDIT_USER_SIGNER_PATH">
<td colspan="6">
<div>安全管理部门意见{{ pd.AUDIT_CONTENT }}</div>
<div>安全管理部门意见{{ pd.AUDIT_CONTENT === '无' ? '同意' : pd.AUDIT_CONTENT}}</div>
<div style="text-align: right">
<span>签字</span>
<img v-viewer :src="config.fileUrl + pd.AUDIT_USER_SIGNER_PATH" alt="" width="100" height="100">
@ -210,7 +226,7 @@
</tr>
<tr v-if="pd.APPROVE_USER_SIGNER_PATH">
<td colspan="6">
<div>动火审批人意见{{ pd.APPROVE_CONTENT }}</div>
<div>动火审批人意见{{ pd.APPROVE_CONTENT === '无' ? '同意' : pd.APPROVE_CONTENT}}</div>
<div style="text-align: right">
<span>签字</span>
<img v-viewer :src="config.fileUrl + pd.APPROVE_USER_SIGNER_PATH" alt="" width="100" height="100">
@ -220,7 +236,7 @@
</tr>
<tr v-if="pd.MONITOR_USER_SIGNER_PATH">
<td colspan="6">
<div>动火前验票负责人{{ pd.MONITOR_CONTENT }}</div>
<div>动火前验票负责人{{ pd.MONITOR_CONTENT === '无' ? '同意' : pd.MONITOR_CONTENT}}</div>
<div style="text-align: right">
<span>签字</span>
<img v-viewer :src="config.fileUrl + pd.MONITOR_USER_SIGNER_PATH" alt="" width="100" height="100">
@ -230,7 +246,7 @@
</tr>
<tr v-if="imgList1.length>0">
<td colspan="10">
<div>完工验收{{ pd.ACCEPT_CONTENT }}</div>
<div>完工验收{{ pd.ACCEPT_CONTENT === '无' ? '同意' : pd.ACCEPT_CONTENT}}</div>
<div v-for="item in imgList1" :key="item.ACCEPT_CONFESS_ID" style="text-align: right">
<span>签字</span>
<img v-viewer :src="config.fileUrl + item.ACCEPT_USER_SIGNER_PATH" alt="" width="100" height="100">
@ -273,6 +289,7 @@ export default {
imgList: [],
imgList1: [],
otherProtectiveMeasures: [],
acceptConfessList: [],
confessList: []
}
},
@ -320,6 +337,20 @@ export default {
this.confessList.push(item)
}
})
// data.pd.acceptConfessList.forEach(item => {
// if (item.APPROVAL_SIGNATURE_TIME !== undefined && item.APPROVAL_SIGNATURE_TIME.trim() !== '') {
// this.acceptConfessList.push(item)
// }
// })
data.pd.acceptConfessList.forEach(item => {
// APPROVAL_SIGNATURE
if (item.APPROVAL_SIGNATURE) {
item.APPROVAL_SIGNATURE = item.APPROVAL_SIGNATURE.split(';')
}
if (item.APPROVAL_SIGNATURE_TIME !== undefined && item.APPROVAL_SIGNATURE_TIME.trim() !== '') {
this.acceptConfessList.push(item)
}
})
for (let i = 0; i < data.measuresList.length; i++) {
//
const PROTECTIVE_MEASURES = data.measuresList[i].PROTECTIVE_MEASURES.split('')

View File

@ -30,7 +30,7 @@
<td>状态</td>
</tr>
<tr v-for="(item,index) in recordAllList" :key="index">
<td>{{ item.CARDTYPE }}</td>
<td>{{ item.CARDTYPE }}</td>
<td>{{ item.USERNAME }}</td>
<td>{{ item.TIME }}</td>
<td>
@ -210,9 +210,11 @@ export default {
this.info.PERSON_OUT = 0
this.varList = data.pd.varList
for (let i = 0; i < data.pd.varList.length; i++) {
if (this.type == 'CAR') {
this.info.CAR_IN = data.pd.varList[i].CAR_IN
this.info.CAR_OUT = data.pd.varList[i].CAR_OUT
if (data.pd.varList[i].TYPE == 'CAR_IN') {
this.info.CAR_IN = data.pd.varList[i].COUNT
}
if (data.pd.varList[i].TYPE == 'CAR_OUT') {
this.info.CAR_OUT = data.pd.varList[i].COUNT
}
if (data.pd.varList[i].TYPE == 'PERSON_IN') {
this.info.PERSON_IN = data.pd.varList[i].COUNT

View File

@ -43,8 +43,13 @@
v-if="gangkouActive && gangkouActive === '00002' && (bottomOptionsIndex === '' || bottomOptionsIndex === 5) && CORP_INFO_ID"
:corp-info-id="CORP_INFO_ID"
:gangkou="gangkouActive"/>
<menjinOld
v-if="CORP_INFO_ID =='035958e685cf4850bc40151c5e0617a6' && gangkouActive && gangkouActive !== '00004' && gangkouActive !== '00005' && gangkouActive !== '00002' && bottomOptionsIndex === 0"
:corp-info-id="CORP_INFO_ID"
:area="area"
:gangkou="gangkouActive"/>
<menjin
v-if="gangkouActive && gangkouActive !== '00004' && gangkouActive !== '00005' && gangkouActive !== '00002' && bottomOptionsIndex === 0"
v-if="CORP_INFO_ID !='035958e685cf4850bc40151c5e0617a6' && gangkouActive && gangkouActive !== '00004' && gangkouActive !== '00005' && gangkouActive !== '00002' && bottomOptionsIndex === 0"
:corp-info-id="CORP_INFO_ID"
:area="area"
:gangkou="gangkouActive"/>
@ -217,6 +222,18 @@
</template>
</template>
</template>
<transition
enter-active-class="animate__animated animate__fadeInDown"
leave-active-class="animate__animated animate__fadeOutUp"
>
<div class="people_trajectory" v-if="isPeopleTrajectory">
<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>
</transition>
<div class="right_options">
@ -264,6 +281,7 @@ import menjinCzks from './components/menjinCzks.vue'
import renyuanCzks from './components/renyuanCzks.vue'
import renyuanCmt from './components/renyuanCmt.vue'
import menjin from './components/menjin.vue'
import menjinOld from './components/menjin_old.vue'
import menjinCfd from './components/menjinCfd.vue'
import menjinCmt from './components/menjinCmt.vue'
import xiaofang from './components/xiaofang.vue'
@ -320,6 +338,7 @@ export default {
fengongsiIndex,
caofeidianIndex,
layoutMenu,
menjinOld,
menjin,
menjinCfd,
menjinCmt,
@ -473,6 +492,26 @@ export default {
checkImg: require('../../assets/map/gangkou_index/buttom/ico1_on.png'),
type: 'CAR',
containAuthorization: [],
eliminateAuthorization: ['035958e685cf4850bc40151c5e0617a6']
},
{
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',
containAuthorization: ['035958e685cf4850bc40151c5e0617a6'],
eliminateAuthorization: []
},
{
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',
containAuthorization: ['035958e685cf4850bc40151c5e0617a6'],
eliminateAuthorization: []
},
{
@ -725,6 +764,16 @@ export default {
checkImg: require('../../assets/map/gangkou_index/buttom/ico21_on.png'),
containAuthorization: [],
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: '',
@ -1165,7 +1214,9 @@ export default {
linkPort: '8093',
VIIDPort: '8088'
},
trajectoryEntityCollection: {}
trajectoryEntityCollection: {},
isPeopleTrajectory:false,
peopleTrajectoryValue:''
}
},
mounted() {
@ -1464,35 +1515,36 @@ export default {
// var cartesian = this.getCatesian3FromPX(movement.position)
}, Cesium.ScreenSpaceEventType.LEFT_CLICK)
viewer.cesiumWidget.screenSpaceEventHandler.removeInputAction(Cesium.ScreenSpaceEventType.RIGHT_DOUBLE_CLICK)
viewer.cesiumWidget.screenSpaceEventHandler.removeInputAction(Cesium.ScreenSpaceEventType.RIGHT_CLICK)
// viewer.cesiumWidget.screenSpaceEventHandler.removeInputAction(Cesium.ScreenSpaceEventType.RIGHT_CLICK)
document.addEventListener('contextmenu', function(event) {
event.preventDefault()
})
this.handler.setInputAction(movement => {
const pick = viewer.scene.pick(movement.position)
if (Cesium.defined(pick) && (pick.id.id)) {
if (!pick.id._monitoItems) {
this.removeTrajectory()
return
}
const point_type = pick.id._monitoItems.data.point_type
const point_id = pick.id._monitoItems.data.id
const corpInfoId = pick.id._monitoItems.data.corpInfoId
if (point_type === '标记点peoplePositionOne') {
this.removeTrajectory()
this.addTrajectory(point_id, corpInfoId)
}
} else {
this.removeTrajectory()
}
}, Cesium.ScreenSpaceEventType.RIGHT_CLICK)
// this.handler.setInputAction(movement => {
// const pick = viewer.scene.pick(movement.position)
// if (Cesium.defined(pick) && (pick.id.id)) {
// if (!pick.id._monitoItems) {
// this.removeTrajectory()
// return
// }
// const point_type = pick.id._monitoItems.data.point_type
// const point_id = pick.id._monitoItems.data.id
// const corpInfoId = pick.id._monitoItems.data.corpInfoId
// if (point_type === 'peoplePositionOne') {
// this.removeTrajectory()
// this.addTrajectory(point_id, corpInfoId)
// }
// } else {
// this.removeTrajectory()
// }
// }, Cesium.ScreenSpaceEventType.RIGHT_CLICK)
},
addTrajectory(point_id, corpInfoId) {
addTrajectory() {
this.removeTrajectory()
requestFN(
'/map/getPersonTrace',
{
id: point_id,
corpId: corpInfoId
id: this.peopleTrajectoryValue,
corpId: this.CORP_INFO_ID
}
).then((data) => {
if (data.list) {
@ -1954,6 +2006,7 @@ export default {
this.bottomOptionsList[i].list[j].check = false
}
}
this.isPeopleTrajectory = false
}
},
clearAllBottomOptionsItemsEntityCollection() {
@ -2068,10 +2121,22 @@ export default {
}
this.carLocArr = []
}
if(urlType === 'peopleTrajectory'){
this.isPeopleTrajectory = false
}
if (this.gangkouActive === '00003' && this.CORP_INFO_ID === '035958e685cf4850bc40151c5e0617a6' && urlType === 'peoplePosition') {
this.doUnSubscribe()
this.clearMqttPoint('+/UwbBQ/')
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') {
this.clearRYDWPoint('+/UwbBQ/')
@ -2089,6 +2154,23 @@ export default {
}
})
} 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
if (this.gangkouActive === '00004') {
@ -3604,9 +3686,51 @@ export default {
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>
.cesium-viewer-toolbar, .cesium-viewer-fullscreenContainer, .cesium-infoBox-visible {
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>

View File

@ -53,6 +53,8 @@ const img8_0 = require('../../../assets/map/gangkou_index/point/ico23.png')
const img8_1 = require('../../../assets/map/gangkou_index/point/ico24.png')
const img8_2 = require('../../../assets/map/gangkou_index/point/ico25.png')
const img8_3 = require('../../../assets/map/gangkou_index/point/ico26.png')
const GGimg1 = require('../../../assets/map/gangkou_index/point/ico1.png')
const GGimg2 = require('../../../assets/map/gangkou_index/point/ico2.png')
const imgMap = {
img0_0, img0_1, img0_2,
@ -116,15 +118,61 @@ 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
console.info('====' )
console.info(value )
console.info('====' )
if (value.label == '人员' && value.corpInfoId == '035958e685cf4850bc40151c5e0617a6'){
billboard = {
image: GGimg1,
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 == '车辆' && value.corpInfoId == '035958e685cf4850bc40151c5e0617a6'){
billboard = {
image: GGimg2,
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 == '摄像头' && value.corpInfoId == '035958e685cf4850bc40151c5e0617a6'){
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 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
}
}
}
// 曹妃甸使用
if (value.gangkou === '00004') {

View File

@ -30,6 +30,16 @@ export default class DragEntity {
heightReference: Cesium.HeightReference.CLAMP_TO_GROUND,
disableDepthTestDistance: Number.POSITIVE_INFINITY
},
label: {
text: 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),
monitoItems: {

View File

@ -326,7 +326,7 @@ export default {
SPECIFICATION_TYPES: [''],
CATEGORY_LIST: [''],
STATUS: '',
ASSOCIATION: '0',
ASSOCIATION: '4',
types: [],
specification_types: [],
category_list: [],

View File

@ -288,7 +288,7 @@ export default {
STATUS: this.form.STATUS,
TYPE: this.form.TYPE_NAME,
DATE: this.form.DATE,
TEXT_NAME: this.TEXT_NAME,
TEXT_NAME: this.form.TEXT_NAME,
ASSOCIATION: '4',
CORPINFO_ID: '0',
MIGRATION_FLAG: '1'

View File

@ -0,0 +1,257 @@
<template>
<div class="app-container">
<el-form :model="ruleForm" :rules="rules" label-width="130px">
<el-row>
<el-col :span="6">
<el-form-item label="人员名称" prop="name" class="input-width">
<el-input v-model="ruleForm.name" placeholder="请输入人员名称"/>
</el-form-item>
</el-col>
<el-col :span="6">
<el-form-item label="身份证号" prop="cardId">
<el-input v-model="ruleForm.cardId" placeholder="请输入身份证号"/>
</el-form-item>
</el-col>
<el-col :span="6">
<el-form-item label-width="10px">
<el-button v-waves class="filter-item" type="primary" icon="el-icon-search" @click="getQuery">
搜索
</el-button>
<el-button v-waves class="filter-item" type="success" icon="el-icon-refresh" @click="goKeyReset">
重置
</el-button>
</el-form-item>
</el-col>
</el-row>
</el-form>
<el-table
ref="multipleTable"
:data="varList"
:header-cell-style="{'font-weight': 'bold','color': '#000'}"
tooltip-effect="dark"
border
fit
highlight-current-row>
<el-table-column :selectable="handleSelectWithDifferentStatus" type="selection" width="55" align="center"/>
<el-table-column type="index" label="序号" width="50" align="center"/>
<el-table-column prop="username" label="用户名" align="center"/>
<el-table-column prop="cardId" label="身份证号" align="center"/>
<el-table-column prop="name" label="人员名称" align="center"/>
<el-table-column prop="corpName" label="企业名称" align="center"/>
<el-table-column label="操作" align="center" width="250">
<template slot-scope="{row}">
<el-button type="primary" icon="el-icon-s-claim" size="mini" @click="dosubmit([row])"></el-button>
</template>
</el-table-column>
</el-table>
<el-dialog
:visible.sync="dialogVisible"
title="请选择入住企业"
width="30%">
<el-select
v-model="corpinfoId"
:remote-method="remoteMethod"
:loading="loading"
filterable
remote
reserve-keyword
placeholder="请选择入住企业">
<el-option
v-for="item in options"
:key="item.value"
:label="item.label"
:value="item.value"/>
</el-select>
<span slot="footer" class="dialog-footer">
<el-button @click="dialogVisible = false"> </el-button>
<el-button type="primary" @click="doCheckIn"> </el-button>
</span>
</el-dialog>
<div class="page-btn-group">
<div/>
<pagination :total="total" :page.sync="listQuery.page" :limit.sync="listQuery.limit" @pagination="getList"/>
</div>
</div>
</template>
<script>
import Pagination from '@/components/Pagination' // el-pagination
import { requestFN } from '@/utils/request'
import waves from '@/directive/waves' // waves directive
export default {
components: { Pagination },
directives: { waves },
data() {
return {
rules: {
name: [{ required: true, message: '姓名不能为空', trigger: 'blur' }],
cardId: [{ required: true, message: '身份证号不能为空', trigger: 'blur' }]
},
ruleForm: { name: '', cardId: '' },
config: config,
listQuery: {
page: 1,
limit: 10
},
total: 0,
varList: [],
dialogVisible: false,
rowuser: {},
corpinfoId: '',
loading: false,
options: []
}
},
created() {
// this.getDict()
// this.getList()
this.remoteMethod('河北')
},
methods: {
handleSelectWithDifferentStatus(row, rowIndex) {
return true
},
getQuery() {
if (this.ruleForm.name === '') {
this.$message.error('请填写人员名称')
return false
}
if (this.ruleForm.cardId === '') {
this.$message.error('请填写身份证号')
return false
}
if (this.$refs.multipleTable) {
this.$refs.multipleTable.clearSelection()
}
this.listQuery = {
page: 1,
limit: 10
}
this.getList()
},
goKeyReset() {
this.ruleForm.cardId = ''
this.ruleForm.name = ''
this.varList = []
},
getList() {
this.listLoading = true
requestFN(
'/xgf/coerce/getUserListByIdCardAndName?showCount=' + this.listQuery.limit + '&currentPage=' + this.listQuery.page,
{
cardId: this.ruleForm.cardId,
name: this.ruleForm.name,
UN_EMPLOY_FLAG: '0'
}
).then((data) => {
this.listLoading = false
this.varList = data.varList
if (this.varList.length === 0) {
this.$message.error('没有相关人员信息')
}
this.total = data.page.totalResult
})
.catch((e) => {
this.listLoading = false
})
},
remoteMethod(query) {
if (query !== '') {
// this.loading = true
/* setTimeout(() => {
this.loading = false
this.options = this.list.filter(item => {
return item.label.toLowerCase()
.indexOf(query.toLowerCase()) > -1
})
}, 200) */
requestFN(
'/xgf/coerce/findModuleList',
{
keyword: query
}
).then((data) => {
// this.loading = false
this.options = []
data.varList.forEach(v => {
const obj = {
value: v.CORPINFO_ID,
label: v.RELEVANT_UNIT_NAME
}
this.options.push(obj)
})
})
.catch((e) => {
// this.loading = false
})
} else {
this.options = []
this.remoteMethod('河北')
}
},
dosubmit(row) {
this.rowuser = {
name: row[0].name,
userId: row[0].userId
}
/* if (this.corpinfoId === '') {
this.dialogVisible = true
} else {
this.doCheckIn()
} */
this.dialogVisible = true
},
doCheckIn() {
if (this.corpinfoId === '') {
this.$message({
message: '请选择入住企业',
type: 'warning'
})
return
}
this.dialogVisible = false
this.$confirm('确定要将 ' + this.rowuser.name + ' 拉入企业吗?', {
confirmButtonText: '确定',
cancelButtonText: '取消',
type: 'warning'
}).then(() => {
this.listLoading = true
requestFN(
'/xgf/coerce/doCoerceCheckIn',
{
userId: this.rowuser.userId,
corpinfoId: this.corpinfoId
}
).then((e) => {
console.log(e)
if (e.msg === '1') {
this.$message({
message: '当前人员已经在企业中',
type: 'warning'
})
} else {
this.$message({
message: '拉入成功',
type: 'success'
})
this.getQuery()
}
this.listLoading = false
}).catch((e) => {
this.listLoading = false
})
}).catch(() => {})
}
}
}
</script>

View File

@ -0,0 +1,21 @@
<template>
<component :is="activeName" />
</template>
<script>
import List from './components/list'
export default {
components: {
List: List
},
data() {
return {
activeName: 'List',
SUPERVISE_CORPINFO_ID: ''
}
}
}
</script>
<style scoped>
</style>

View File

@ -0,0 +1,102 @@
<template>
<div class="app-container">
<el-form label-width="130px">
<el-row>
<el-col :span="6">
<el-form-item label="用户名">
<el-input v-model="NAME" placeholder="请输入用户名"/>
</el-form-item>
</el-col>
<el-col :span="6">
<el-form-item label-width="10px">
<el-button v-waves class="filter-item" type="primary" icon="el-icon-search" @click="getQuery">
搜索
</el-button>
<el-button v-waves class="filter-item" type="success" icon="el-icon-refresh" @click="goKeyReset">
重置
</el-button>
</el-form-item>
</el-col>
</el-row>
</el-form>
<el-table
ref="multipleTable"
:data="varList"
:header-cell-style="{'font-weight': 'bold','color': '#000'}"
tooltip-effect="dark"
border
fit
highlight-current-row>
<el-table-column type="index" label="序号" width="50" align="center"/>
<el-table-column prop="NAME" label="姓名" align="center"/>
<el-table-column prop="RELEVANT_UNIT_NAME_HIS" label="原企业" align="center"/>
<el-table-column prop="RELEVANT_UNIT_NAME_NOW" label="入住企业" align="center"/>
<el-table-column prop="OPERNAME" label="操作人" align="center"/>
<el-table-column prop="CREATETIME" label="入住时间" align="center"/>
</el-table>
<div class="page-btn-group">
<div/>
<pagination :total="total" :page.sync="listQuery.page" :limit.sync="listQuery.limit" @pagination="getList"/>
</div>
</div>
</template>
<script>
import Pagination from '@/components/Pagination' // el-pagination
import { requestFN } from '@/utils/request'
import waves from '@/directive/waves' // waves directive
export default {
components: { Pagination },
directives: { waves },
data() {
return {
config: config,
listQuery: {
page: 1,
limit: 10
},
total: 0,
varList: [],
NAME: ''
}
},
created() {
this.getList()
},
methods: {
getQuery() {
if (this.$refs.multipleTable) {
this.$refs.multipleTable.clearSelection()
}
this.listQuery = {
page: 1,
limit: 10
}
this.getList()
},
goKeyReset() {
this.NAME = ''
this.getQuery()
},
getList() {
this.listLoading = true
requestFN(
'/xgf/coerce/getCoerceIntakeLoglistPage?showCount=' + this.listQuery.limit + '&currentPage=' + this.listQuery.page,
{
NAME: this.NAME
}
).then((data) => {
this.listLoading = false
this.varList = data.varList
this.total = data.page.totalResult
})
.catch((e) => {
this.listLoading = false
})
}
}
}
</script>

View File

@ -0,0 +1,21 @@
<template>
<component :is="activeName" />
</template>
<script>
import List from './components/list'
export default {
components: {
List: List
},
data() {
return {
activeName: 'List',
SUPERVISE_CORPINFO_ID: ''
}
}
}
</script>
<style scoped>
</style>

View File

@ -1,6 +1,13 @@
<template>
<div>
<el-dialog v-loading = "loading" :visible.sync="visible" :append-to-body="appendToBody" :before-close="beforeClose" title="审批" width="1200px" destroy-on-close>
<el-dialog
v-loading="loading"
:visible.sync="visible"
:append-to-body="appendToBody"
:before-close="beforeClose"
title="审批"
width="1200px"
destroy-on-close>
<el-form ref="form" :model="form" :rules="rules" label-width="200px" label-position="right" type="flex">
<el-row :gutter="12">
<el-col :span="12">
@ -33,16 +40,86 @@
<el-input v-model="form.OPINION" :rows="2" type="textarea" placeholder="填写审批意见"/>
</el-form-item>
</el-col>
<el-col v-if="form.STATUS === '0' && showStepFlag" :span="24">
<el-form-item v-if="form.STATUS === '0'" prop="BACK_NAME" label="打回至:">
<div>{{ form.BACK_NAME }}</div>
</el-form-item>
</el-col>
<el-col v-if="form.STATUS === '0' && showStepFlag" :span="24">
<el-steps :space="200" :active="+step" finish-status="success">
<el-step>
<template slot="description">
<el-card
class="box-card"
style="margin-top: 10px"
@click.native="backPoint('-1',info.BELONG_TO_CORP_NAME)">
<div icon="el-icon-aim"/>
<div slot="header" class="clearfix">
<span>相关方端</span>
</div>
<div>
企业名称{{ info.BELONG_TO_CORP_NAME }}
</div>
</el-card>
</template>
</el-step>
<el-step v-for="item in list" :key="item.INDEX" :value="item.INDEX">
<template slot="description">
<el-card
class="box-card"
style="margin-top: 10px"
@click.native="backPoint(item.INDEX, item.APPOINT_USER_NAME)">
<div slot="header" class="clearfix">
<span>审批节点</span>
</div>
<div>
<el-row>
<el-col>
审批人{{ item.APPOINT_USER_NAME }}
</el-col>
<el-col v-if="item.INDEX !== step">
审批人公司{{ item.APPOINT_CORP_NAME }}
</el-col>
<el-col>
审批人部门{{ item.APPOINT_DEPARTMENT_NAME }}
</el-col>
<el-col v-if="item.INDEX !== step">
审批状态{{
item.APPOINT_STATUS === '1' ? '同意' : item.APPOINT_STATUS === '0' ? '不同意' : ''
}}
</el-col>
<el-col v-if="item.INDEX !== step">
审批时间{{ item.APPOINT_TIME }}
</el-col>
<el-col v-if="item.APPOINT_OPINION && item.INDEX !== step">
审批意见{{ item.APPOINT_OPINION }}
</el-col>
</el-row>
</div>
</el-card>
</template>
</el-step>
</el-steps>
</el-col>
<el-col v-if="form.STATUS === '1' && !form.STEP " :span="12">
<el-form-item v-if="form.STATUS === '1'" prop="APPOINT_USER_ID" label="指定监管部门审批人:">
<el-select v-model="form.user" style="width: 300px" placeholder="请选择" @change="chooseUser">
<el-option v-for="item in peopleList" :key="item.USER_ID" :value="JSON.stringify(item)" :label="item.NAME"/>
<el-option
v-for="item in peopleList"
:key="item.USER_ID"
:value="JSON.stringify(item)"
:label="item.NAME"/>
</el-select>
</el-form-item>
</el-col>
<el-col v-if="form.STATUS === '1' && !form.STEP " :span="12">
<el-form-item v-if="form.STATUS === '1'" prop="LIMIT_END_TIME" label="指定培训有效截至时间:">
<el-date-picker v-model="form.LIMIT_END_TIME" value-format="yyyy-MM-dd" type="date" placeholder="选择日期" style="width:300px "/>
<el-date-picker
v-model="form.LIMIT_END_TIME"
value-format="yyyy-MM-dd"
type="date"
placeholder="选择日期"
style="width:300px "/>
</el-form-item>
</el-col>
<el-col v-if="form.STATUS === '1' && form.TYPE === '2'" :span="12">
@ -103,7 +180,9 @@ export default {
list: [],
isShow: true,
info: {},
TYPE: null
TYPE: null,
BACK_NAME: '',
BACK_STEP: ''
},
rules: {
STATUS: [
@ -120,6 +199,9 @@ export default {
],
LIMIT_END_TIME: [
{ required: true, message: '请选择指定培训有效截至时间', trigger: 'change' }
],
BACK_NAME: [
{ required: true, message: '请填选择回节点', trigger: 'change' }
]
},
heirloom: {},
@ -133,7 +215,15 @@ export default {
},
departmentTree: [],
peopleList: []
peopleList: [],
info: {},
list: [
{
INDEX: '-1'
}
],
step: 0,
showStepFlag: false
}
},
methods: {
@ -142,6 +232,14 @@ export default {
this.visible = true
this.heirloom = JSON.stringify(e)
this.form.list = JSON.stringify(e)
const list = JSON.parse(this.heirloom)
if (list.length === 1) {
this.info = JSON.parse(this.heirloom)[0]
this.form.BACK_NAME = this.info.BELONG_TO_CORP_NAME
this.form.BACK_STEP = '-1'
this.showStepFlag = true
}
// turefalse
this.form.STEP = (e[0].FLOWS_STEP === 2) || (e[0].FLOWS_STEP === 1 && e[0].FLOWS_TYPE === '2')
this.form.TYEP = e[0].FLOWS_TYPE
@ -157,10 +255,15 @@ export default {
this.loading = true
requestFN('/xgf/user/approveMax', this.form)
.then((data) => {
this.$message.success('推送成功')
this.visible = false
this.$emit('refresh', '')
this.handleClose()
if (data.code === '0') {
this.$message.success('推送成功')
this.visible = false
this.$emit('refresh', '')
this.handleClose()
} else {
this.$message.error(data.errorMessage)
}
this.loading = false
})
.catch((e) => {
@ -250,6 +353,7 @@ export default {
tm: new Date().getTime()
}
this.visible = false
this.showStepFlag = false
},
beforeClose() {
this.visible = false
@ -272,6 +376,36 @@ export default {
this.form.APPOINT_USER_NAME = ''
this.form.OPINION = ''
this.form.user = ''
if (this.form.STATUS === '0') {
this.getInfo()
}
},
getInfo() {
const info = JSON.parse(this.heirloom)[0]
requestFN(
'/xgf/user/getApproveInfo', { XGF_USER_ID: info.XGF_USER_ID }
).then((data) => {
this.list = data.flow.info
this.step = data.flow.STEP
if (data.flow.endFlag === '1') {
this.title = '审批中'
}
if (data.flow.endFlag === '2') {
this.title = '审批结束'
}
if (data.flow.endFlag === '-2') {
this.title = '审批驳回'
}
this.visible = true
this.loading = false
}).catch((e) => {
console.log(e)
})
},
backPoint(num, name) {
this.form.BACK_STEP = num
this.form.BACK_NAME = name
this.$forceUpdate()
}
}
}

View File

@ -1,7 +1,7 @@
// eslint-disable-next-line no-unused-vars
const config = {
weburl: 'http://192.168.0.45:8082/', // 前台地址
httpurl: 'http://192.168.151.43:8092/', // 后台地址
weburl: 'http://192.168.0.49:8092/', // 前台地址
httpurl: 'http://192.168.0.49:8092/', // 后台地址
qyurl: 'http://192.168.0.45:8080/', // 企业前台
fileUrl: 'http://192.168.192.201:8991/file/', // 附件服务器地址
publicKey: 'MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQC2zCyUYSD0pNrbtaYdvGfHfWoRV+fo/2N9O2PLLz/jZvMkigkq4eAq4JO+Ek0wDHI9WxP6iTSLYCHhIOs9CQTPvyldJFm8riZtQZlBTD8Plkb3rjrgwTqbBi3w3+HKYdkSvGFXJIdSOPbpXnj5BzN8vlVaybs24R/vpUzG9178lwIDAQAB',