应急人员模块逻辑修改

迎接接报逻辑修改
消防设备模块开发
liujun0703-新项目开发
WenShiJun 2024-07-17 18:01:17 +08:00
parent 8f9bf438ed
commit 6ec2cd3f6b
17 changed files with 2892 additions and 27 deletions
src/views
corpInfo/user/components
emergen_cyrescue
duty_management
duty_log
shift_registration
emergency_information
emergency_address_book/components
emergency_management_agency/emergency_personnel/components
emergency_report
incident_report/components
notification_log
resource_management/fireInfo_report

View File

@ -13,7 +13,8 @@
:props="defaultProps"
:filter-node-method="filterNode"
class="filter-tree"
@node-click="handleNodeClick"/>
@node-click="handleNodeClick"
/>
</el-aside>
<el-main>
<el-form label-width="60px">

View File

@ -0,0 +1,244 @@
<template>
<div>
<div class="app-container">
<div class="level-title">
<h1>救援队伍详情</h1>
</div>
<div class="mb-20">
<table class="table-ui">
<tr>
<td class="tbg">救援队名称</td>
<td>{{ form.RESCUE_TEAM_NAME }}</td>
<td class="tbg">地址</td>
<td>{{ form.RESCUE_TEAM_ADDRESS }}</td>
</tr>
<tr>
<td class="tbg">类型</td>
<td>{{ form.TYPE_NAME }}</td>
<td class="tbg">级别</td>
<td>{{ form.LEVEL }}</td>
</tr>
<tr>
<td class="tbg">密级</td>
<td>{{ form.SECURITY_LEVEL }}</td>
<td class="tbg">所属区域</td>
<td>{{ form.AREA_NAME }}</td>
</tr>
<tr>
<td class="tbg">值班电话</td>
<td>{{ form.DUTY_PHONE }}</td>
<td class="tbg">传真</td>
<td>{{ form.FAX }}</td>
</tr>
<tr>
<td class="tbg">邮编</td>
<td>{{ form.POSTAL_CODE }}</td>
<td class="tbg">成立时间</td>
<td>{{ form.ESTABLISHMENT_DATE }}</td>
</tr>
<tr>
<td class="tbg">经度</td>
<td>{{ form.LONGITUDE }}</td>
<td class="tbg">纬度</td>
<td>{{ form.LATITUDE }}</td>
</tr>
<tr>
<td class="tbg">负责人</td>
<td>{{ form.RESPONSIBLE_PERSON }}</td>
<td class="tbg">负责人办公电话</td>
<td>{{ form.RESPONSIBLE_OFFICE_PHONE }}</td>
</tr>
<tr>
<td class="tbg">负责人移动电话</td>
<td>{{ form.RESPONSIBLE_MOBILE_PHONE }}</td>
<td class="tbg">负责人住宅电话</td>
<td>{{ form.RESPONSIBLE_HOME_PHONE }}</td>
</tr>
<tr>
<td class="tbg">联系人</td>
<td>{{ form.CONTACT_PERSON }}</td>
<td class="tbg">联系人办公电话</td>
<td>{{ form.CONTACT_OFFICE_PHONE }}</td>
</tr>
<tr>
<td class="tbg">联系人移动电话</td>
<td>{{ form.CONTACT_MOBILE_PHONE }}</td>
<td class="tbg">联系人住宅电话</td>
<td>{{ form.CONTACT_HOME_PHONE }}</td>
</tr>
<tr>
<td class="tbg">联系人电子邮箱</td>
<td>{{ form.CONTACT_EMAIL }}</td>
</tr>
<tr>
<td class="tbg">主管单位名称</td>
<td>{{ form.SUPERVISING_UNIT_NAME }}</td>
<td class="tbg">主管单位地址</td>
<td>{{ form.SUPERVISING_UNIT_ADDRESS }}</td>
</tr>
<tr>
<td class="tbg">总人数</td>
<td>{{ form.TOTAL_PERSONNEL }}</td>
<td class="tbg">应急通信方式</td>
<td>{{ form.EMERGENCY_COMMUNICATION_MODE }}</td>
</tr>
<tr>
<td class="tbg">预计准备时间</td>
<td>{{ form.EXPECTED_PREPARATION_TIME }}</td>
<td class="tbg">集合出发地点</td>
<td>{{ form.ASSEMBLY_DEPARTURE_LOCATION }}</td>
</tr>
<tr>
<td class="tbg">主要职责</td>
<td colspan="3">{{ form.MAIN_DUTIES }}</td>
</tr>
<tr>
<td class="tbg">主要装备描述</td>
<td colspan="3">{{ form.MAIN_EQUIPMENT_DESCRIPTION }}</td>
</tr>
<tr>
<td class="tbg">专长描述</td>
<td colspan="3">{{ form.SPECIALTY_DESCRIPTION }}</td>
</tr>
<tr>
<td class="tbg">资质等级</td>
<td colspan="3">{{ form.QUALIFICATION_LEVEL }}</td>
</tr>
<tr>
<td class="tbg">应急救援经历</td>
<td colspan="3">{{ form.EMERGENCY_RESCUE_EXPERIENCE }}</td>
</tr>
<tr>
<td class="tbg">备注</td>
<td colspan="3">{{ form.REMARK }}</td>
</tr>
</table>
</div>
</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'
export default {
data() {
return {
form: {
RESCUE_TEAM_NAME: '',
RESCUE_TEAM_ADDRESS: '',
TYPE: '',
TYPE_NAME: '',
LEVEL: '',
LEVEL_NAME: '',
SECURITY_LEVEL: '',
SECURITY_LEVEL_NAME: '',
AREA: '',
AREA_NAME: '',
DUTY_PHONE: '',
FAX: '',
POSTAL_CODE: '',
LONGITUDE: '',
LATITUDE: '',
RESPONSIBLE_PERSON: '',
RESPONSIBLE_OFFICE_PHONE: '',
RESPONSIBLE_MOBILE_PHONE: '',
RESPONSIBLE_HOME_PHONE: '',
CONTACT_PERSON: '',
CONTACT_OFFICE_PHONE: '',
CONTACT_MOBILE_PHONE: '',
CONTACT_HOME_PHONE: '',
CONTACT_EMAIL: '',
TOTAL_PERSONNEL: '',
ESTABLISHMENT_DATE: '',
EMERGENCY_COMMUNICATION_MODE: '',
SUPERVISING_UNIT_NAME: '',
SUPERVISING_UNIT_ADDRESS: '',
MAIN_DUTIES: '',
MAIN_EQUIPMENT_DESCRIPTION: '',
SPECIALTY_DESCRIPTION: '',
QUALIFICATION_LEVEL: '',
EMERGENCY_RESCUE_EXPERIENCE: '',
EXPECTED_PREPARATION_TIME: '',
ASSEMBLY_DEPARTURE_LOCATION: '',
REMARK: ''
},
Id: ''
}
},
created() {
if (this.$parent.CASE_ID) {
this.Id = this.$parent.CASE_ID
this.getDetail(this.Id)
}
},
methods: {
goBack() {
this.$parent.activeName = 'list'
},
getDetail(Id) {
const params = { Id }
requestFN('/major/emergency/detail', params).then((response) => {
const data = response.msg
this.form = {
RESCUE_TEAM_NAME: data.RESCUE_TEAM_NAME,
RESCUE_TEAM_ADDRESS: data.RESCUE_TEAM_ADDRESS,
TYPE: data.TYPE,
TYPE_NAME: data.TYPE_NAME,
LEVEL: data.LEVEL,
LEVEL_NAME: data.LEVEL_NAME,
SECURITY_LEVEL: data.SECURITY_LEVEL,
SECURITY_LEVEL_NAME: data.SECURITY_LEVEL_NAME,
AREA: data.AREA,
AREA_NAME: data.AREA_NAME,
DUTY_PHONE: data.DUTY_PHONE,
FAX: data.FAX,
POSTAL_CODE: data.POSTAL_CODE,
LONGITUDE: data.LONGITUDE,
LATITUDE: data.LATITUDE,
RESPONSIBLE_PERSON: data.RESPONSIBLE_PERSON,
RESPONSIBLE_OFFICE_PHONE: data.RESPONSIBLE_OFFICE_PHONE,
RESPONSIBLE_MOBILE_PHONE: data.RESPONSIBLE_MOBILE_PHONE,
RESPONSIBLE_HOME_PHONE: data.RESPONSIBLE_HOME_PHONE,
CONTACT_PERSON: data.CONTACT_PERSON,
CONTACT_OFFICE_PHONE: data.CONTACT_OFFICE_PHONE,
CONTACT_MOBILE_PHONE: data.CONTACT_MOBILE_PHONE,
CONTACT_HOME_PHONE: data.CONTACT_HOME_PHONE,
CONTACT_EMAIL: data.CONTACT_EMAIL,
TOTAL_PERSONNEL: data.TOTAL_PERSONNEL,
ESTABLISHMENT_DATE: data.ESTABLISHMENT_DATE,
EMERGENCY_COMMUNICATION_MODE: data.EMERGENCY_COMMUNICATION_MODE,
SUPERVISING_UNIT_NAME: data.SUPERVISING_UNIT_NAME,
SUPERVISING_UNIT_ADDRESS: data.SUPERVISING_UNIT_ADDRESS,
MAIN_DUTIES: data.MAIN_DUTIES,
MAIN_EQUIPMENT_DESCRIPTION: data.MAIN_EQUIPMENT_DESCRIPTION,
SPECIALTY_DESCRIPTION: data.SPECIALTY_DESCRIPTION,
QUALIFICATION_LEVEL: data.QUALIFICATION_LEVEL,
EMERGENCY_RESCUE_EXPERIENCE: data.EMERGENCY_RESCUE_EXPERIENCE,
EXPECTED_PREPARATION_TIME: data.EXPECTED_PREPARATION_TIME,
ASSEMBLY_DEPARTURE_LOCATION: data.ASSEMBLY_DEPARTURE_LOCATION,
REMARK: data.REMARK,
Id: data.ID
}
}).catch((e) => {
console.error('获取详情数据失败', e)
})
}
}
}
</script>
<style lang="sass" scoped>
.table-ui
td
line-height: 34px
.tbg
width: 200px
.ui-foot
text-align: center
margin-top: 20px
</style>

View File

@ -0,0 +1,315 @@
<template>
<div class="app-container">
<div class="filter-container">
<el-form inline>
<el-form-item label="单位:" prop="UNIT">
<el-input v-model="UNIT" placeholder="单位" class="filter-item" style="width: 200px;" />
</el-form-item>
<el-form-item>
<el-button class="filter-item" type="primary" icon="el-icon-search" @click="getQuery"></el-button>
<el-button class="filter-item" type="default" icon="el-icon-refresh" @click="resetQuery"></el-button>
</el-form-item>
</el-form>
</div>
<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="selection" width="55" align="center" />
<el-table-column type="index" label="序号" width="50" align="center" />
<el-table-column prop="UNIT" label="单位" width="180" />
<el-table-column prop="START_TIME" label="开始时间" show-overflow-tooltip="true" />
<el-table-column prop="END_TIME" label="结束时间" show-overflow-tooltip="true" />
<el-table-column prop="DUTY_PERSONNEL" label="值班人员" show-overflow-tooltip="true" />
<el-table-column prop="SHIFT_PERSONNEL" label="接班人员" show-overflow-tooltip="true" />
<el-table-column prop="DUTY_RECORD" label="值班记录" show-overflow-tooltip="true" />
<el-table-column prop="HANDLING_SITUATION" label="处理情况" show-overflow-tooltip="true" />
<el-table-column prop="HANDOVER_ITEMS" label="交接事项" show-overflow-tooltip="true" />
<el-table-column prop="OPERATETIME" label="修改时间" show-overflow-tooltip="true" />
<el-table-column label="操作" align="center" width="300">
<template slot-scope="{ row }">
<el-button type="primary" icon="el-icon-download" size="mini" @click="confirmExport(row.ID)"></el-button>
<el-button type="primary" icon="el-icon-edit" size="mini" @click="handleEdit(row.ID)"></el-button>
<el-button type="danger" icon="el-icon-delete" size="mini" @click="handleDelete(row.ID, row.UNIT)">删除</el-button>
</template>
</el-table-column>
</el-table>
<div class="page-btn-group">
<div>
<template>
<el-button type="primary" icon="el-icon-plus" @click="handleAdd"></el-button>
<el-button type="danger" icon="el-icon-delete" plain @click="makeAll('0')"></el-button>
</template>
</div>
<pagination :total="total" :page.sync="listQuery.page" :limit.sync="listQuery.limit" @pagination="getList" />
</div>
<el-dialog :visible.sync="dialogFormEdit" :title="dialogType === 'editUser' ? '修改' : '新增'" width="1000px">
<el-form ref="form" :rules="rules" :model="form" label-width="250px">
<el-form-item label="单位" prop="UNIT">
<el-input v-model="form.UNIT" placeholder="请输入单位..." />
</el-form-item>
<el-form-item label="开始时间" prop="START_TIME">
<el-date-picker
v-model="form.START_TIME"
type="datetime"
placeholder="请选择接报时间"
format="yyyy-MM-dd HH:mm:ss"
value-format="yyyy-MM-dd HH:mm:ss"
style="width: 100%;"
/>
</el-form-item>
<el-form-item label="结束时间" prop="END_TIME">
<el-date-picker
v-model="form.END_TIME"
type="datetime"
placeholder="请选择发生时间"
format="yyyy-MM-dd HH:mm:ss"
value-format="yyyy-MM-dd HH:mm:ss"
style="width: 100%;"
/>
</el-form-item>
<el-form-item label="值班记录" prop="DUTY_RECORD">
<el-input v-model="form.DUTY_RECORD" type="textarea" placeholder="请输入值班记录..." />
</el-form-item>
<el-form-item label="处理情况" prop="HANDLING_SITUATION">
<el-input v-model="form.HANDLING_SITUATION" type="textarea" placeholder="请输入处理情况..." />
</el-form-item>
<el-form-item label="交接事项" prop="HANDOVER_ITEMS">
<el-input v-model="form.HANDOVER_ITEMS" type="textarea" placeholder="请输入交接事项..." />
</el-form-item>
<el-row :gutter="20">
<el-col :span="12">
<el-form-item label="值班人员" prop="DUTY_PERSONNEL">
<el-select v-model="form.DUTY_PERSONNEL" placeholder="请选择值班人员">
<el-option
v-for="item in addressOptions"
:key="item.ID"
:label="item.NAME"
:value="item.NAME"
/>
</el-select>
</el-form-item>
</el-col>
<el-col :span="12">
<el-form-item label="接班人员" prop="SHIFT_PERSONNEL">
<el-select v-model="form.SHIFT_PERSONNEL" placeholder="请选择接班人员">
<el-option
v-for="item in addressOptions"
:key="item.ID"
:label="item.NAME"
:value="item.NAME"
/>
</el-select>
</el-form-item>
</el-col>
</el-row>
</el-form>
<div slot="footer" class="dialog-footer">
<el-button @click="dialogFormEdit = false"> </el-button>
<el-button type="primary" @click="confirm"> </el-button>
</div>
</el-dialog>
</div>
</template>
<script>
import Pagination from '@/components/Pagination'
import { requestFN } from '@/utils/request'
import { MessageBox, Message } from 'element-ui'
export default {
components: { Pagination },
data() {
return {
listLoading: false,
dialogFormEdit: false,
dialogFormShow: false,
dialogType: 'add',
UNIT: '',
form: {
ID: '',
UNIT: '',
START_TIME: '',
END_TIME: '',
DUTY_PERSONNEL: '',
SHIFT_PERSONNEL: '',
DUTY_RECORD: '',
HANDLING_SITUATION: '',
HANDOVER_ITEMS: ''
},
total: 0,
varList: [],
addressOptions: [],
KEYWORDS_NAME: '',
listQuery: {
page: 1,
limit: 10
}
}
},
created() {
this.getList()
this.getAddressList()
},
methods: {
getQuery() {
this.$refs.multipleTable.clearSelection()
this.getList()
},
resetQuery() {
this.UNIT = ''
this.getQuery()
},
showDetails(row) {
this.form = { ...row }
this.dialogFormShow = true
},
handleEdit(id) {
this.dialogFormEdit = true
this.dialogType = 'editUser'
this.getDetail(id) //
},
confirmExport(id) {
MessageBox.confirm('确定要导出数据吗?', '提示', {
confirmButtonText: '确定',
cancelButtonText: '取消',
type: 'warning'
}).then(() => {
this.getExportExcel(id)
})
},
getExportExcel(id) {
const params = { Id: id }
requestFN('/major/dutylog/ExportExcel', params).then((response) => {
Message({
type: 'success',
message: '导出成功'
})
}).catch((e) => {
Message({
type: 'error',
message: '导出失败'
})
console.error('导出数据失败', e)
})
},
getDetail(id) {
const params = { Id: id }
requestFN('/major/dutylog/detail', params).then((response) => {
const data = response.msg
this.form = {
Id: data.ID,
UNIT: data.UNIT,
START_TIME: data.START_TIME,
END_TIME: data.END_TIME,
DUTY_PERSONNEL: data.DUTY_PERSONNEL,
SHIFT_PERSONNEL: data.SHIFT_PERSONNEL,
DUTY_RECORD: data.DUTY_RECORD,
HANDLING_SITUATION: data.HANDLING_SITUATION,
HANDOVER_ITEMS: data.HANDOVER_ITEMS
}
}).catch((e) => {
console.error('获取详情数据失败', e)
})
},
handleAdd() {
this.dialogFormEdit = true
this.form = {
ID: '',
UNIT: '',
START_TIME: '',
END_TIME: '',
DUTY_PERSONNEL: '',
SHIFT_PERSONNEL: '',
DUTY_RECORD: '',
HANDLING_SITUATION: '',
HANDOVER_ITEMS: ''
}
this.dialogType = 'saveUser'
},
confirm() {
this.dataSave()
},
dataSave() {
this.listLoading = true
requestFN('/major/dutylog/save', this.form).then((data) => {
this.listLoading = false
this.dialogFormEdit = false
this.getList()
}).catch((e) => {
this.listLoading = false
})
},
handleDelete(id, UNIT) {
this.$confirm('确定要删除[' + UNIT + ']吗?', {
confirmButtonText: '确定',
cancelButtonText: '取消',
type: 'warning'
}).then(() => {
this.listLoading = true
requestFN('/major/dutylog/delete', { id }).then((data) => {
if (data.result === 'success') {
this.listLoading = false
this.getList()
}
}).catch((e) => {
this.listLoading = false
})
}).catch(() => { })
},
makeAll() {
const _selectData = this.$refs.multipleTable.selection
if (!_selectData || _selectData.length === 0) {
this.$message({
message: '请选中要删除的项...',
type: 'error'
})
return false
}
const ids = _selectData.map(item => item.ID).join(',')
this.$confirm('确定要删除选中的数据吗?', {
confirmButtonText: '确定',
cancelButtonText: '取消',
type: 'warning'
}).then(() => {
this.listLoading = true
requestFN('/major/dutylog/deleteAll', { ids }).then(() => {
this.listLoading = false
this.getList()
}).catch((e) => {
this.listLoading = false
})
}).catch(() => { })
},
getList() {
this.listLoading = true
requestFN('/major/dutylog/list?showCount=' + this.listQuery.limit + '&currentPage=' + this.listQuery.page,
{
name: this.UNIT
}
).then((data) => {
this.listLoading = false
this.varList = data.varList
this.total = data.page.totalResult
}).catch((e) => {
this.listLoading = false
})
},
getAddressList() {
this.listLoading = true
requestFN(
'/yjcommunicate/listAddressBook?showCount=' + this.listQuery.limit + '&currentPage=' + this.listQuery.page,
).then((data) => {
this.listLoading = false
this.addressOptions = data.varList.map(item => ({
ID: item.ID,
NAME: item.NAME
}))
this.total = data.page.totalResult
})
.catch((e) => {
this.listLoading = false
})
}
}
}
</script>

View File

@ -0,0 +1,19 @@
<template>
<div>
<list v-show="activeName=='list'" ref="list" />
<detail v-if="activeName=='detail'"/>
</div>
</template>
<script>
import list from './components/list.vue'
import detail from './components/detail.vue'
export default {
components: { list, detail },
data() {
return {
activeName: 'list',
CASE_ID: ''
}
}
}
</script>

View File

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

View File

@ -0,0 +1,244 @@
<template>
<div>
<div class="app-container">
<div class="level-title">
<h1>救援队伍详情</h1>
</div>
<div class="mb-20">
<table class="table-ui">
<tr>
<td class="tbg">救援队名称</td>
<td>{{ form.RESCUE_TEAM_NAME }}</td>
<td class="tbg">地址</td>
<td>{{ form.RESCUE_TEAM_ADDRESS }}</td>
</tr>
<tr>
<td class="tbg">类型</td>
<td>{{ form.TYPE_NAME }}</td>
<td class="tbg">级别</td>
<td>{{ form.LEVEL }}</td>
</tr>
<tr>
<td class="tbg">密级</td>
<td>{{ form.SECURITY_LEVEL }}</td>
<td class="tbg">所属区域</td>
<td>{{ form.AREA_NAME }}</td>
</tr>
<tr>
<td class="tbg">值班电话</td>
<td>{{ form.DUTY_PHONE }}</td>
<td class="tbg">传真</td>
<td>{{ form.FAX }}</td>
</tr>
<tr>
<td class="tbg">邮编</td>
<td>{{ form.POSTAL_CODE }}</td>
<td class="tbg">成立时间</td>
<td>{{ form.ESTABLISHMENT_DATE }}</td>
</tr>
<tr>
<td class="tbg">经度</td>
<td>{{ form.LONGITUDE }}</td>
<td class="tbg">纬度</td>
<td>{{ form.LATITUDE }}</td>
</tr>
<tr>
<td class="tbg">负责人</td>
<td>{{ form.RESPONSIBLE_PERSON }}</td>
<td class="tbg">负责人办公电话</td>
<td>{{ form.RESPONSIBLE_OFFICE_PHONE }}</td>
</tr>
<tr>
<td class="tbg">负责人移动电话</td>
<td>{{ form.RESPONSIBLE_MOBILE_PHONE }}</td>
<td class="tbg">负责人住宅电话</td>
<td>{{ form.RESPONSIBLE_HOME_PHONE }}</td>
</tr>
<tr>
<td class="tbg">联系人</td>
<td>{{ form.CONTACT_PERSON }}</td>
<td class="tbg">联系人办公电话</td>
<td>{{ form.CONTACT_OFFICE_PHONE }}</td>
</tr>
<tr>
<td class="tbg">联系人移动电话</td>
<td>{{ form.CONTACT_MOBILE_PHONE }}</td>
<td class="tbg">联系人住宅电话</td>
<td>{{ form.CONTACT_HOME_PHONE }}</td>
</tr>
<tr>
<td class="tbg">联系人电子邮箱</td>
<td>{{ form.CONTACT_EMAIL }}</td>
</tr>
<tr>
<td class="tbg">主管单位名称</td>
<td>{{ form.SUPERVISING_UNIT_NAME }}</td>
<td class="tbg">主管单位地址</td>
<td>{{ form.SUPERVISING_UNIT_ADDRESS }}</td>
</tr>
<tr>
<td class="tbg">总人数</td>
<td>{{ form.TOTAL_PERSONNEL }}</td>
<td class="tbg">应急通信方式</td>
<td>{{ form.EMERGENCY_COMMUNICATION_MODE }}</td>
</tr>
<tr>
<td class="tbg">预计准备时间</td>
<td>{{ form.EXPECTED_PREPARATION_TIME }}</td>
<td class="tbg">集合出发地点</td>
<td>{{ form.ASSEMBLY_DEPARTURE_LOCATION }}</td>
</tr>
<tr>
<td class="tbg">主要职责</td>
<td colspan="3">{{ form.MAIN_DUTIES }}</td>
</tr>
<tr>
<td class="tbg">主要装备描述</td>
<td colspan="3">{{ form.MAIN_EQUIPMENT_DESCRIPTION }}</td>
</tr>
<tr>
<td class="tbg">专长描述</td>
<td colspan="3">{{ form.SPECIALTY_DESCRIPTION }}</td>
</tr>
<tr>
<td class="tbg">资质等级</td>
<td colspan="3">{{ form.QUALIFICATION_LEVEL }}</td>
</tr>
<tr>
<td class="tbg">应急救援经历</td>
<td colspan="3">{{ form.EMERGENCY_RESCUE_EXPERIENCE }}</td>
</tr>
<tr>
<td class="tbg">备注</td>
<td colspan="3">{{ form.REMARK }}</td>
</tr>
</table>
</div>
</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'
export default {
data() {
return {
form: {
RESCUE_TEAM_NAME: '',
RESCUE_TEAM_ADDRESS: '',
TYPE: '',
TYPE_NAME: '',
LEVEL: '',
LEVEL_NAME: '',
SECURITY_LEVEL: '',
SECURITY_LEVEL_NAME: '',
AREA: '',
AREA_NAME: '',
DUTY_PHONE: '',
FAX: '',
POSTAL_CODE: '',
LONGITUDE: '',
LATITUDE: '',
RESPONSIBLE_PERSON: '',
RESPONSIBLE_OFFICE_PHONE: '',
RESPONSIBLE_MOBILE_PHONE: '',
RESPONSIBLE_HOME_PHONE: '',
CONTACT_PERSON: '',
CONTACT_OFFICE_PHONE: '',
CONTACT_MOBILE_PHONE: '',
CONTACT_HOME_PHONE: '',
CONTACT_EMAIL: '',
TOTAL_PERSONNEL: '',
ESTABLISHMENT_DATE: '',
EMERGENCY_COMMUNICATION_MODE: '',
SUPERVISING_UNIT_NAME: '',
SUPERVISING_UNIT_ADDRESS: '',
MAIN_DUTIES: '',
MAIN_EQUIPMENT_DESCRIPTION: '',
SPECIALTY_DESCRIPTION: '',
QUALIFICATION_LEVEL: '',
EMERGENCY_RESCUE_EXPERIENCE: '',
EXPECTED_PREPARATION_TIME: '',
ASSEMBLY_DEPARTURE_LOCATION: '',
REMARK: ''
},
Id: ''
}
},
created() {
if (this.$parent.CASE_ID) {
this.Id = this.$parent.CASE_ID
this.getDetail(this.Id)
}
},
methods: {
goBack() {
this.$parent.activeName = 'list'
},
getDetail(Id) {
const params = { Id }
requestFN('/major/emergency/detail', params).then((response) => {
const data = response.msg
this.form = {
RESCUE_TEAM_NAME: data.RESCUE_TEAM_NAME,
RESCUE_TEAM_ADDRESS: data.RESCUE_TEAM_ADDRESS,
TYPE: data.TYPE,
TYPE_NAME: data.TYPE_NAME,
LEVEL: data.LEVEL,
LEVEL_NAME: data.LEVEL_NAME,
SECURITY_LEVEL: data.SECURITY_LEVEL,
SECURITY_LEVEL_NAME: data.SECURITY_LEVEL_NAME,
AREA: data.AREA,
AREA_NAME: data.AREA_NAME,
DUTY_PHONE: data.DUTY_PHONE,
FAX: data.FAX,
POSTAL_CODE: data.POSTAL_CODE,
LONGITUDE: data.LONGITUDE,
LATITUDE: data.LATITUDE,
RESPONSIBLE_PERSON: data.RESPONSIBLE_PERSON,
RESPONSIBLE_OFFICE_PHONE: data.RESPONSIBLE_OFFICE_PHONE,
RESPONSIBLE_MOBILE_PHONE: data.RESPONSIBLE_MOBILE_PHONE,
RESPONSIBLE_HOME_PHONE: data.RESPONSIBLE_HOME_PHONE,
CONTACT_PERSON: data.CONTACT_PERSON,
CONTACT_OFFICE_PHONE: data.CONTACT_OFFICE_PHONE,
CONTACT_MOBILE_PHONE: data.CONTACT_MOBILE_PHONE,
CONTACT_HOME_PHONE: data.CONTACT_HOME_PHONE,
CONTACT_EMAIL: data.CONTACT_EMAIL,
TOTAL_PERSONNEL: data.TOTAL_PERSONNEL,
ESTABLISHMENT_DATE: data.ESTABLISHMENT_DATE,
EMERGENCY_COMMUNICATION_MODE: data.EMERGENCY_COMMUNICATION_MODE,
SUPERVISING_UNIT_NAME: data.SUPERVISING_UNIT_NAME,
SUPERVISING_UNIT_ADDRESS: data.SUPERVISING_UNIT_ADDRESS,
MAIN_DUTIES: data.MAIN_DUTIES,
MAIN_EQUIPMENT_DESCRIPTION: data.MAIN_EQUIPMENT_DESCRIPTION,
SPECIALTY_DESCRIPTION: data.SPECIALTY_DESCRIPTION,
QUALIFICATION_LEVEL: data.QUALIFICATION_LEVEL,
EMERGENCY_RESCUE_EXPERIENCE: data.EMERGENCY_RESCUE_EXPERIENCE,
EXPECTED_PREPARATION_TIME: data.EXPECTED_PREPARATION_TIME,
ASSEMBLY_DEPARTURE_LOCATION: data.ASSEMBLY_DEPARTURE_LOCATION,
REMARK: data.REMARK,
Id: data.ID
}
}).catch((e) => {
console.error('获取详情数据失败', e)
})
}
}
}
</script>
<style lang="sass" scoped>
.table-ui
td
line-height: 34px
.tbg
width: 200px
.ui-foot
text-align: center
margin-top: 20px
</style>

View File

@ -0,0 +1,780 @@
<template>
<div class="app-container">
<div class="filter-container">
<el-form inline>
<el-form-item prop="ORGAN_ID" style="width: 250px;">
<Treeselect
:options="DepartmentData"
v-model="ORGAN_ID"
placeholder="请选择单位"
no-options-text="暂无数据"
no-children-text="暂无数据"
@input="handleDepartmentChange"
/>
</el-form-item>
<el-form-item label="月份:" prop="monthvalue">
<el-date-picker
v-model="monthvalue"
type="month"
format="yyyy-MM"
placeholder="选择月"/>
</el-form-item>
<el-form-item>
<el-button class="filter-item" type="primary" icon="el-icon-tickets" @click="tempdown"></el-button>
<el-button class="filter-item" type="primary" icon="el-icon-top" @click="tolead"></el-button>
<el-button class="filter-item" type="primary" icon="el-icon-refresh" @click="clearmonth"></el-button>
</el-form-item>
<el-form-item>
<el-button class="filter-item" type="primary" icon="el-icon-search" @click="getQuery"></el-button>
<el-button class="filter-item" type="default" icon="el-icon-refresh" @click="resetQuery"></el-button>
</el-form-item>
</el-form>
</div>
<el-table
:data="varList"
:header-cell-style="{'font-weight': 'bold','color': '#000'}"
height="700px"
tooltip-effect="dark"
border
fit
highlight-current-row
>
<el-table-column
prop="DUTY_DATE"
label="值班日期"
width="150"/>
<el-table-column label="早班">
<el-table-column
prop="name"
label="值班领导"
width="180">
<template v-slot="scope">
<div style="display: flex;justify-content: space-between">
<div >
<el-tag
v-for=" tag in scope.row.morningShiftForLeader"
:key="tag.ID"
closable
disable-transitions
style="cursor: pointer;"
@click="peopleDetail(tag.ID,tag.PEOPLE_NAME)"
@close="peopleClose(scope.row.morningShiftForLeader,tag,tag.ID)"> {{ tag.PEOPLE_NAME }}</el-tag>
</div>
<div>
<i class="el-icon-plus" style="cursor: pointer;" @click="addPeopleTz(scope.row.morningShiftForLeader,scope.row.ID,1,1)"/>
</div>
</div>
</template>
</el-table-column>
<el-table-column
prop="name"
label="值班员"
width="180">
<template v-slot="scope">
<div style="display: flex;justify-content: space-between">
<div >
<el-tag
v-for=" tag in scope.row.morningShiftForAttendant"
:key="tag.ID"
closable
style="cursor: pointer;"
disable-transitions
@click="peopleDetail(tag.ID,tag.PEOPLE_NAME)"
@close="peopleClose(scope.row.morningShiftForAttendant,tag,tag.ID)">
{{ tag.PEOPLE_NAME }}
</el-tag>
</div>
<div>
<i class="el-icon-plus" style="cursor: pointer;" @click="addPeopleTz(scope.row.morningShiftForAttendant,scope.row.ID,2,1)"/>
</div>
</div>
</template>
</el-table-column>
<el-table-column
prop="name"
label="值班司机"
width="180" >
<template v-slot="scope">
<div style="display: flex;justify-content: space-between">
<div >
<el-tag
v-for=" tag in scope.row.morningShiftForDrivers"
:key="tag.ID"
closable
style="cursor: pointer;"
disable-transitions
@click="peopleDetail(tag.ID,tag.PEOPLE_NAME)"
@close="peopleClose(scope.row.morningShiftForDrivers,tag,tag.ID)"> {{ tag.PEOPLE_NAME }}</el-tag>
</div>
<div>
<i class="el-icon-plus" style="cursor: pointer;" @click="addPeopleTz(scope.row.morningShiftForDrivers,scope.row.ID,3,1)"/>
</div>
</div>
</template>
</el-table-column>
</el-table-column>
<el-table-column label="晚班">
<el-table-column
prop="name"
label="值班领导"
width="180">
<template v-slot="scope">
<div style="display: flex;justify-content: space-between">
<div >
<el-tag
v-for=" tag in scope.row.morningShiftForLeaderForNight"
:key="tag.ID"
closable
disable-transitions
style="cursor: pointer;"
@click="peopleDetail(tag.ID,tag.PEOPLE_NAME)"
@close="peopleClose(scope.row.morningShiftForLeaderForNight,tag,tag.ID)"> {{ tag.PEOPLE_NAME }}</el-tag>
</div>
<div>
<i class="el-icon-plus" style="cursor: pointer;" @click="addPeopleTz(scope.row.morningShiftForLeaderForNight,scope.row.ID,1,2)"/>
</div>
</div>
</template>
</el-table-column>
<el-table-column
prop="name"
label="值班员"
width="180">
<template v-slot="scope">
<div style="display: flex;justify-content: space-between">
<div >
<el-tag
v-for=" tag in scope.row.morningShiftForAttendantForNight"
:key="tag.ID"
closable
disable-transitions
style="cursor: pointer;"
@click="peopleDetail(tag.ID,tag.PEOPLE_NAME)"
@close="peopleClose(scope.row.morningShiftForAttendantForNight,tag,tag.ID)"> {{ tag.PEOPLE_NAME }}</el-tag>
</div>
<div>
<i class="el-icon-plus" style="cursor: pointer;" @click="addPeopleTz(scope.row.morningShiftForAttendantForNight,scope.row.ID,2,2)"/>
</div>
</div>
</template>
</el-table-column>
<el-table-column
prop="name"
label="值班司机"
width="180">
<template v-slot="scope">
<div style="display: flex;justify-content: space-between">
<div >
<el-tag
v-for=" tag in scope.row.morningShiftForDriversForNight"
:key="tag.ID"
closable
disable-transitions
style="cursor: pointer;"
@click="peopleDetail(tag.ID,tag.PEOPLE_NAME)"
@close="peopleClose(scope.row.morningShiftForDriversForNight,tag,tag.ID)"> {{ tag.PEOPLE_NAME }}</el-tag>
</div>
<div>
<i class="el-icon-plus" style="cursor: pointer;" @click="addPeopleTz(scope.row.morningShiftForDriversForNight,scope.row.ID,3,2)"/>
</div>
</div>
</template>
</el-table-column>
</el-table-column>
<el-table-column
prop="REMARKS"
label="备注"
/>
<el-table-column label="操作" align="center" width="200">
<template slot-scope="{row}">
<el-button type="danger" icon="el-icon-delete" size="mini" @click="clearyjDityMain(row.ID)"></el-button>
<el-button type="primary" icon="el-icon-edit" size="mini" @click="updateMainDity(row.ID)"></el-button>
</template>
</el-table-column>
</el-table>
<el-dialog :visible.sync="dialogPeopleFormEdit" :title="formPeople.PEOPLE_TYPE==1?'值班领导':formPeople.PEOPLE_TYPE==2?'值班员':'值班司机' " width="400px">
<el-form ref="formPeople" :model="formPeople" label-width="110px" style="width: 300px;">
<el-form-item label="姓名" prop="PEOPLE_NAME">
<el-input v-model="formPeople.PEOPLE_NAME" placeholder="这里姓名..." />
</el-form-item>
<el-form-item label="电话" prop="PEOPLE_PHONE">
<el-input
v-model="formPeople.PEOPLE_PHONE"
placeholder="请输入电话..."/>
</el-form-item>
</el-form>
<div slot="footer" class="dialog-footer">
<el-button type="primary" @click="addSysChoice"></el-button>
<el-button @click="dialogPeopleFormEdit = false"> </el-button>
<el-button type="primary" @click="savePeople"> </el-button>
</div>
</el-dialog>
<el-dialog :visible.sync="dialogFormPeopleDetailShow" title="人员详情" width="400px">
<table class="table-ui">
<tr>
<td class="tbg">姓名</td>
<td>
<div v-html="formPeopleDetail.PEOPLE_NAME" />
</td>
</tr>
<tr>
<td class="tbg">电话</td>
<td>
<div v-html="formPeopleDetail.PEOPLE_PHONE" />
</td>
</tr>
</table>
<div slot="footer" class="dialog-footer">
<el-button @click="dialogFormPeopleDetailShow = false"> </el-button>
</div>
</el-dialog>
<el-dialog :visible.sync="dialogPeopleMainEdit" title="编辑" width="400px">
<el-form ref="formPeople" :model="formMainPeople" label-width="110px" style="width: 300px;">
<el-form-item label="排班登记名称" prop="PEOPLE_NAME">
<el-input v-model="formMainPeople.DUTY_NAME" placeholder="这里排班登记名称..." />
</el-form-item>
<el-form-item label="排班登记类型" prop="DUTY_REG_TYPE">
<el-input
v-model="formMainPeople.DUTY_REG_TYPE"
placeholder="请输入排班登记类型..."/>
</el-form-item>
<el-form-item label="备注" prop="REMARKS">
<el-input
v-model="formMainPeople.REMARKS"
type="textarea"
placeholder="请输入备注..."/>
</el-form-item>
</el-form>
<div slot="footer" class="dialog-footer">
<el-button @click="dialogPeopleMainEdit = false"> </el-button>
<el-button type="primary" @click="saveMainDity"> </el-button>
</div>
</el-dialog>
<el-dialog :visible.sync="exceltempFormAdd" title="模版导入" width="280px">
<el-form ref="formPeople" label-width="100px" >
<el-form-item label="请选择模版">
<el-upload
ref="upload"
:on-change="handleEditChange"
:on-remove="handleRemove"
:auto-upload="false"
:limit="1"
action="#" >
<el-button size="small" type="primary">点击上传</el-button>
</el-upload>
</el-form-item>
</el-form>
<div slot="footer" class="dialog-footer">
<el-button @click="exceltempFormAdd = false"> </el-button>
<el-button type="primary" @click="confirmExcel()"> </el-button>
</div>
</el-dialog>
<el-dialog :visible.sync="dialogFormAddSysChoiceShow" title="选择人员" width="850px">
<el-container>
<el-aside width="240px" style="background-color:#fff">
<el-tree
ref="tree"
:data="nodeData"
:props="defaultProps"
:filter-node-method="filterNode"
:load="getTreeNode"
lazy
class="filter-tree"
accordion
@node-click="handleNodeClick" />
</el-aside>
<el-main>
<div class="filter-btn-group">
<el-form label-width="100px">
<el-row>
<el-col :span="10">
<el-form-item label="姓名">
<el-input v-model="addressName" placeholder="搜索姓名"/>
</el-form-item>
</el-col>
<el-col :span="10">
<el-form-item label="性别">
<el-radio v-model="addressSex" label="0"></el-radio>
<el-radio v-model="addressSex" label="1"></el-radio>
</el-form-item>
</el-col>
<el-col >
<el-form-item label-width="10px">
<el-button class="filter-item" type="primary" icon="el-icon-search" @click="getAddressList">
搜索
</el-button>
<el-button class="filter-item" type="success" icon="el-icon-refresh" @click="goKeyReset">
重置
</el-button>
</el-form-item>
</el-col>
</el-row>
</el-form>
</div>
<el-table ref="multipleTable" :data="adressvarList" :header-cell-style="{'font-weight': 'bold','color': '#000'}" style="height:350px" tooltip-effect="dark" border fit highlight-current-row>
<el-table-column type="selection" width="55" align="center" />
<el-table-column prop="NAME" label="姓名" />
<el-table-column prop="SEX" width="180" align="center" label="性别" >
<template v-slot="{row}">
<span>{{ row.SEX==='0'?'男':'女' }}</span>
</template>
</el-table-column>
<el-table-column prop="OFFICE_PHONE" label="移动电话" />
<el-table-column prop="MOVE_PHONE" label="办公电话" />
</el-table>
<div class="page-btn-group">
<div />
<pagination :total="total" :page.sync="listQuery.page" :limit.sync="listQuery.limit" @pagination="getList" />
</div>
</el-main>
</el-container>
<div slot="footer" class="dialog-footer">
<el-button @click="dialogFormAddSysChoiceShow = false"> </el-button>
<el-button type="primary" @click="savePeople2"> </el-button>
</div>
</el-dialog>
</div>
</template>
<script>
import Pagination from '@/components/Pagination'
import { requestFN } from '@/utils/request'
import { Treeselect } from '@riophae/vue-treeselect'
import '@riophae/vue-treeselect/dist/vue-treeselect.css'
import moment from 'moment'
import { upload } from '@/utils/upload'
export default {
components: { Treeselect, Pagination },
data() {
return {
exceltempFormAdd: false,
FFILE: [],
dialogPeopleMainEdit: false,
formMainPeople: {
DUTY_NAME: '',
DUTY_REG_TYPE: '',
REMARKS: ''
},
monthvalue: moment().startOf('day').format('YYYY-MM'),
dialogPeopleFormEdit: false,
varList: [],
KEYWORDS: '',
formPeople: {
MAIN_ID: '',
PEOPLE_TYPE: '',
PEOPLE_NAME: '',
PEOPLE_PHONE: '',
DITY_TYPE: ''
},
dynamicTags: [],
//
formPeopleDetail: {
PEOPLE_NAME: '',
PEOPLE_PHONE: ''
},
dialogFormPeopleDetailShow: false,
dialogFormAddSysChoiceShow: false,
//* *******************
listQuery: {
page: 1,
limit: 10
},
total: 0,
adressvarList: [],
addressName: '',
addressSex: '',
nodeData: [],
addressgroupId: '',
defaultProps: {
value: 'DICTIONARIES_ID',
children: 'nodes',
label: 'NAME'
},
ORGAN_ID: null,
DepartmentData: [],
normalizer(node) {
return {
id: node.DICTIONARIES_ID,
label: node.name,
children: node.nodes
}
}
}
},
created() {
this.getDepartmentList(() => {
this.getList()
})
},
methods: {
//* **************************************
getDepartmentList(fun) {
requestFN('/department/listAll').then((data) => {
this.DepartmentData = data.list.map(item => ({
id: item.department_ID,
label: item.name
}))
this.ORGAN_ID = this.DepartmentData[0].id
fun()
console.log(this.DepartmentData)
}).catch((e) => {
console.error('获取主管单位数据失败', e)
})
},
handleDepartmentChange(value) {
const selectedDepartment = this.DepartmentData.find(department => department.id === value)
if (selectedDepartment) {
this.ORGAN_ID = selectedDepartment.id
}
},
//* ****************************************
clearmonth() {
requestFN(
'/workingSchedule/clearOrganMonth',
{
ORGAN_ID: this.ORGAN_ID,
date: this.monthvalue
}
).then((data) => {
this.$message({
message: '清空成功',
type: 'success'
})
this.getList()
})
.catch((e) => {
this.listLoading = false
})
},
handleNodeClick(node, data, value) {
this.addressgroupId = node.DICTIONARIES_ID
this.getAddressList()
},
getTreeNode(node, resolve) {
if (node.level === 0) {
requestFN(
'/yjcommunicate/getCommunicateGroupLevels',
{
regulationsId: ''
}
).then((data) => {
resolve(data.list)
}).catch((e) => {
})
} else {
requestFN(
'/yjcommunicate/getCommunicateGroupLevels',
{
regulationsId: node.data.DICTIONARIES_ID
}
).then((data) => {
resolve(data.list)
}).catch((e) => {
})
}
},
filterNode(value, data) {
if (!value) return true
return data.NAME.indexOf(value) !== -1
},
goKeyReset() {
this.addressName = ''
this.addressgroupId = ''
this.addressSex = ''
this.getAddressList()
},
getAddressList() {
this.listLoading = true
requestFN(
'/yjcommunicate/listAddressBook?showCount=' + this.listQuery.limit + '&currentPage=' + this.listQuery.page,
{
groupId: this.addressgroupId,
addressName: this.addressName,
addressSex: this.addressSex
}
).then((data) => {
this.listLoading = false
this.adressvarList = data.varList
this.total = data.page.totalResult
})
.catch((e) => {
this.listLoading = false
})
},
addSysChoice() {
this.dialogPeopleFormEdit = false
this.dialogFormAddSysChoiceShow = true
this.getAddressList()
},
// *******************************************
handleEditChange(file) {
file.MATERIALS_ID = Math.random()
const is5M = file.size / 1024 / 1024 < 5
if (is5M) this.FFILE.push(file)
},
handleRemove(file, fileList) {
this.FFILE = fileList
},
confirmExcel() {
if (this.FFILE.length > 0) {
this.upload((v) => {
this.$message({
message: '导入成功',
type: 'success'
})
this.exceltempFormAdd = false
this.$refs.upload.clearFiles()
this.getList()
})
}
},
upload(fun) {
const formData = new FormData()
for (let i = 0; i < this.FFILE.length; i++) {
if (this.FFILE[i].raw) {
formData.append('FFILE', this.FFILE[i].raw)
}
}
formData.append('date', this.monthvalue)
formData.append('ORGAN_ID', this.ORGAN_ID)
upload(
'/workingSchedule/upload',
formData
).then((data) => {
fun()
}).catch((e) => {
})
},
//* ****************Excel********************
tempdown() {
const url = config.httpurl + '/workingSchedule/download?date=' + this.monthvalue
setTimeout(function() {
window.open(url)
// _this.$refs.downloadUrl.dispatchEvent(new MouseEvent('click'))
}, 200)
},
tolead() {
this.exceltempFormAdd = true
this.FFILE = []
this.$refs.upload.clearFiles()
},
clearyjDityMain(id) {
this.$confirm('确定要清除排班数据吗?', {
confirmButtonText: '确定',
cancelButtonText: '取消',
type: 'warning'
}).then(() => {
this.listLoading = true
requestFN(
'/workingSchedule/clearyjDityMain',
{
id: id
}
).then((data) => {
if (data.result == 'success') {
this.listLoading = false
this.getList2()
}
}).catch((e) => {
this.listLoading = false
})
}).catch(() => {
})
},
//* ***********************************************************
updateMainDity(id) {
requestFN('/workingSchedule/getDityMainDetail', { id: id }).then((data) => {
this.listLoading = false
this.formMainPeople = {
ID: data.data.ID,
DUTY_REG_TYPE: data.data.DUTY_REG_TYPE,
REMARKS: data.data.REMARKS,
DUTY_NAME: data.data.DUTY_NAME
}
this.dialogPeopleMainEdit = true
}).catch((e) => {
this.listLoading = false
})
},
saveMainDity() {
requestFN('/workingSchedule/saveMian', this.formMainPeople).then((data) => {
this.dialogPeopleMainEdit = false
this.getList2()
}).catch((e) => {
// this.listLoading = false
})
},
//* *******************************************************
peopleDetail(id, name) {
this.listLoading = true
requestFN('/workingSchedule/getDityPeopleDetail', { id: id, name: name }).then((data) => {
this.listLoading = false
// this.varList = []
// this.getList()
this.formPeopleDetail = {
PEOPLE_NAME: data.data.PEOPLE_NAME,
PEOPLE_PHONE: data.data.PEOPLE_PHONE
}
}).catch((e) => {
this.listLoading = false
})
this.dialogFormPeopleDetailShow = true
},
peopleClose(dynamicTags, tag, id) {
dynamicTags.splice(dynamicTags.indexOf(tag), 1)
this.listLoading = true
requestFN('/workingSchedule/deletePeople', { id: id }).then((data) => {
this.listLoading = false
// this.varList = []
// this.getList()
}).catch((e) => {
this.listLoading = false
})
},
addPeopleTz(dynamicTags, id, type, dity_type) {
this.formPeople = {
MAIN_ID: id,
PEOPLE_TYPE: type,
PEOPLE_NAME: '',
DITY_TYPE: dity_type,
PEOPLE_SOURCE: '1'
}
this.dynamicTags = dynamicTags
this.dialogPeopleFormEdit = true
},
//
savePeople() {
this.dynamicTags.push(this.formPeople)
// this.listLoading = true
requestFN('/workingSchedule/savePeopleMian', this.formPeople).then((data) => {
// this.listLoading = false
this.dialogPeopleFormEdit = false
// this.varList = []
this.getList2()
}).catch((e) => {
// this.listLoading = false
})
},
savePeople2() {
const _selectData = this.$refs.multipleTable.selection
if (_selectData == null || _selectData.length == 0) {
this.$message({
message: '请选择人员...',
type: 'error'
})
return false
}
const ids = _selectData.map((item, index) => {
return item.ADDRESS_ID
}).join(',')
this.formPeople.ids = ids
this.formPeople.PEOPLE_SOURCE = 2
// this.listLoading = true
requestFN('/workingSchedule/savePeopleMian2', this.formPeople).then((data) => {
// this.listLoading = false
this.dialogFormAddSysChoiceShow = false
// this.varList = []
this.getList2()
}).catch((e) => {
// this.listLoading = false
})
},
//* *******************************************
resetQuery() {
this.monthvalue = moment().startOf('day').format('YYYY-MM')
this.ORGAN_ID = this.DepartmentData[0].id
this.getQuery()
},
//* *************************************************
getList() {
this.listLoading = true
requestFN(
'/workingSchedule/list',
{
date: this.monthvalue,
ORGAN_ID: this.ORGAN_ID
}
).then((data) => {
this.listLoading = false
this.varList = data.varList
})
.catch((e) => {
this.listLoading = false
})
},
getList2() {
requestFN(
'/workingSchedule/list',
{
ORGAN_ID: this.ORGAN_ID,
date: this.monthvalue
}
).then((data) => {
this.varList = data.varList
})
.catch((e) => {
})
},
getQuery() {
// this.$refs.multipleTable.clearSelection()
this.getList()
}
}
}
</script>
<style>
.el-dialog__body {
padding: 10px 20px !important;
}
</style>

View File

@ -0,0 +1,19 @@
<template>
<div>
<list v-show="activeName=='list'" ref="list" />
<detail v-if="activeName=='detail'"/>
</div>
</template>
<script>
import list from './components/list.vue'
import detail from './components/detail.vue'
export default {
components: { list, detail },
data() {
return {
activeName: 'list',
CASE_ID: ''
}
}
}
</script>

View File

@ -49,6 +49,8 @@
</el-table-column>
<el-table-column prop="OFFICE_PHONE" label="移动电话" />
<el-table-column prop="MOVE_PHONE" label="办公电话" />
<el-table-column prop="DEPARTMENT" label="所属部门" />
<el-table-column prop="POSITION" label="职务" />
<el-table-column label="操作" align="center" width="300">
<template v-slot="{row}">
<el-button type="primary" icon="el-icon-edit" size="mini" @click="handleEdit(row)"></el-button>
@ -97,6 +99,21 @@
placeholder="请输入移动电话"/>
</el-form-item>
<el-form-item label="部门" prop="DEPARTMENT">
<el-input
v-model="form.DEPARTMENT"
:rows="10"
placeholder="请输入部门"/>
</el-form-item>
<el-form-item label="职务" prop="POSITION">
<el-input
v-model="form.POSITION"
:rows="10"
placeholder="请输入职务"/>
</el-form-item>
</el-form>
<div slot="footer" class="dialog-footer">
<el-button @click="dialogFormEdit = false"> </el-button>
@ -129,6 +146,8 @@ export default {
NAME: '',
SEX: '0',
OFFICE_PHONE: '',
DEPARTMENT: '',
POSITION: '',
MOVE_PHONE: ''
},
rules: {
@ -150,6 +169,12 @@ export default {
],
NAME: [
{ required: true, message: '类型不能为空', trigger: 'blur' },
{ min: 2, max: 30, message: '长度在 2 到 30 个字符', trigger: 'blur' }],
DEPARTMENT: [
{ required: true, message: '部门不能为空', trigger: 'blur' },
{ min: 2, max: 30, message: '长度在 2 到 30 个字符', trigger: 'blur' }],
POSITION: [
{ required: true, message: '职务不能为空', trigger: 'blur' },
{ min: 2, max: 30, message: '长度在 2 到 30 个字符', trigger: 'blur' }]
},

View File

@ -14,7 +14,7 @@
<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="selection" width="55" align="center" />
<el-table-column type="index" label="序号" width="50" align="center" />
<el-table-column prop="NAME" label="姓名" width="180" />
<el-table-column prop="USER_NAME" label="姓名" width="180" />
<el-table-column label="性别" show-overflow-tooltip="true">
<template slot-scope="{ row }">
{{ row.GENDER === '0' ? '男' : row.GENDER === '1' ? '女' : '' }}
@ -29,7 +29,7 @@
<template slot-scope="{row}">
<el-button type="primary" icon="el-icon-document" size="mini" @click="showDetails(row)"></el-button>
<el-button type="primary" icon="el-icon-edit" size="mini" @click="handleEdit(row.ID)"></el-button>
<el-button type="danger" icon="el-icon-delete" size="mini" @click="handleDelete(row.ID,row.NAME)"></el-button>
<el-button type="danger" icon="el-icon-delete" size="mini" @click="handleDelete(row.ID,row.USER_NAME)"></el-button>
</template>
</el-table-column>
</el-table>
@ -46,8 +46,8 @@
<!-- 查看弹窗 -->
<el-dialog :visible.sync="dialogFormShow" title="详情" width="1000px">
<el-form :model="form" label-width="250px">
<el-form-item label="姓名" prop="NAME">
<el-input v-model="form.NAME" placeholder="请输入姓名..." disabled />
<el-form-item label="姓名" prop="USER_NAME">
<el-input v-model="form.USER_NAME" placeholder="请输入姓名..." disabled />
</el-form-item>
<el-row :gutter="20">
<el-col :span="12">
@ -92,6 +92,32 @@
</el-dialog>
<el-dialog :visible.sync="dialogFormEdit" :title="dialogType==='editUser'?'修改':'新增'" width="1000px">
<el-form ref="form" :rules="rules" :model="form" label-width="250px">
<el-row :gutter="20">
<el-col :span="12">
<el-form-item label="所属部门" prop="department">
<el-cascader
v-model="form.department"
:options="departmentOptions"
:props="{ checkStrictly: true }"
placeholder="请选择所属部门"
style="width: 100%;"
@change="handleNodeClick"
/>
</el-form-item>
</el-col>
<el-col :span="12">
<el-form-item label="用户" prop="USER_ID">
<el-select v-model="form.USER_ID" placeholder="请选择用户" style="width: 100%;" @change="handleUserChange">
<el-option
v-for="user in userList"
:key="user.USER_ID"
:label="user.NAME"
:value="user.USER_ID"
/>
</el-select>
</el-form-item>
</el-col>
</el-row>
<el-row :gutter="20">
<el-col :span="12">
<el-form-item label="所属机构" prop="ORG_ID">
@ -105,13 +131,6 @@
</el-select>
</el-form-item>
</el-col>
</el-row>
<el-row :gutter="20">
<el-col :span="12">
<el-form-item label="姓名" prop="NAME">
<el-input v-model="form.NAME" placeholder="请输入姓名..." />
</el-form-item>
</el-col>
<el-col :span="12">
<el-form-item label="性别" prop="GENDER">
<el-select v-model="form.GENDER" placeholder="请选择性别">
@ -174,8 +193,11 @@ export default {
dialogFormShow: false,
dialogType: 'add',
form: {
department: [],
DEPARTMENT_ID: '',
ORG_ID: '',
NAME: '',
USER_ID: '',
USER_NAME: '',
GENDER: '',
ADMINISTRATIVE_POSITION: '',
ADMINISTRATIVE_LEVEL: '',
@ -184,9 +206,11 @@ export default {
SORT_ORDER: '',
ISDELETE: ''
},
departmentOptions: [],
total: 0,
varList: [],
varTeamList: [],
userList: [],
KEYWORDS_NAME: '',
listQuery: {
page: 1,
@ -194,7 +218,7 @@ export default {
}
// ,
// rules: {
// NAME: [{ required: true, message: '', trigger: 'blur' }],
// USER_NAME: [{ required: true, message: '', trigger: 'blur' }],
// GENDER: [{ required: true, message: '', trigger: 'blur' }],
// ADMINISTRATIVE_POSITION: [{ required: true, message: '', trigger: 'blur' }],
// ADMINISTRATIVE_LEVEL: [{ required: true, message: '', trigger: 'blur' }],
@ -208,6 +232,7 @@ export default {
created() {
this.getList()
this.getTeamList()
this.getTreeList()
},
methods: {
resetQuery() {
@ -223,6 +248,56 @@ export default {
this.dialogType = 'editUser'
this.getDetail(id) //
},
handleUserChange(value) {
const selectedUser = this.userList.find(user => user.USER_ID === value)
if (selectedUser) {
this.form.USER_NAME = selectedUser.NAME
}
},
getTreeList() {
this.treeLoading = true
requestFN('/department/listTree', {})
.then((data) => {
this.treeLoading = false
const treeData = JSON.parse(data.zTreeNodes)
this.departmentOptions = this.convertTreeData(treeData)
})
.catch((e) => {
this.treeLoading = false
})
},
convertTreeData(treeData) {
return treeData.map(node => {
const newNode = {
value: node.id,
label: node.name
}
if (node.nodes && node.nodes.length > 0) {
newNode.children = this.convertTreeData(node.nodes)
}
return newNode
})
},
handleNodeClick(value) {
const selectedNodeId = value[value.length - 1]
this.form.DEPARTMENT_ID = selectedNodeId
this.getUserList(selectedNodeId)
},
getUserList(DEPARTMENT_ID) {
this.listLoading = true
requestFN(
'/user/list?showCount=' + this.listQuery.limit + '&currentPage=' + this.listQuery.page,
{
DEPARTMENT_ID: DEPARTMENT_ID
}
).then((data) => {
this.listLoading = false
this.userList = data.userList
this.total = data.page.totalResult
}).catch((e) => {
this.listLoading = false
})
},
getDetail(id) {
const params = { Id: id }
requestFN('/major/personnel/detail', params).then((response) => {
@ -230,15 +305,18 @@ export default {
this.form = {
Id: data.ID,
ORG_ID: data.ORG_ID,
NAME: data.NAME,
USER_NAME: data.USER_NAME,
GENDER: data.GENDER,
ADMINISTRATIVE_POSITION: data.ADMINISTRATIVE_POSITION,
ADMINISTRATIVE_LEVEL: data.ADMINISTRATIVE_LEVEL,
IDENTITY_NUMBER: data.IDENTITY_NUMBER,
CONTACT_PHONE: data.CONTACT_PHONE,
SORT_ORDER: data.SORT_ORDER,
ISDELETE: data.ISDELETE
ISDELETE: data.ISDELETE,
USER_ID: data.USER_ID,
department: this.getDepartmentPath(data.DEPARTMENT_ID) //
}
this.getUserList(data.DEPARTMENT_ID)
}).catch((e) => {
console.error('获取详情数据失败', e)
})
@ -248,13 +326,14 @@ export default {
this.form = {
ID: '',
ORG_ID: '',
NAME: '',
USER_NAME: '',
GENDER: '',
ADMINISTRATIVE_POSITION: '',
ADMINISTRATIVE_LEVEL: '',
IDENTITY_NUMBER: '',
CONTACT_PHONE: '',
SORT_ORDER: '',
department: [],
ISDELETE: ''
}
this.dialogType = 'saveUser'
@ -264,7 +343,11 @@ export default {
},
dataSave() {
this.listLoading = true
requestFN('/major/personnel/save', this.form).then((data) => {
const payload = {
...this.form,
USER_NAME: this.form.USER_NAME
}
requestFN('/major/personnel/save', payload).then((data) => {
this.listLoading = false
this.dialogFormEdit = false
this.getList()
@ -272,8 +355,8 @@ export default {
this.listLoading = false
})
},
handleDelete(id, NAME) {
this.$confirm('确定要删除[' + NAME + ']吗?', {
handleDelete(id, USER_NAME) {
this.$confirm('确定要删除[' + USER_NAME + ']吗?', {
confirmButtonText: '确定',
cancelButtonText: '取消',
type: 'warning'

View File

@ -36,8 +36,8 @@
<el-table-column prop="OCCURRENCE_TIME" label="发生时间" show-overflow-tooltip="true" />
<el-table-column label="操作" align="center" width="500">
<template slot-scope="{row}">
<el-button type="primary" size="mini" @click="handleRescue(row.ID)"></el-button>
<el-button type="primary" icon="el-icon-document" size="mini" @click="goList('detail', row.ID, '1')">查看</el-button>
<el-button type="info" icon="el-icon-location" size="mini" @click="viewMap(row.ID)"></el-button>
<el-button type="primary" icon="el-icon-edit" size="mini" @click="handleEdit(row.ID, true)">生成专报</el-button>
<el-button type="primary" icon="el-icon-edit" size="mini" @click="handleEdit(row.ID)"></el-button>
<el-button type="danger" icon="el-icon-delete" size="mini" @click="handleDelete(row.ID,row.EVENT_NAME)"></el-button>
@ -58,7 +58,10 @@
<el-row :gutter="20">
<el-col :span="12">
<el-form-item label="接入方式" prop="ACCESS_MODE">
<el-input v-model="form.ACCESS_MODE" placeholder="请输入接入方式..." />
<el-select v-model="form.ACCESS_MODE" placeholder="请选择接入方式...">
<el-option label="电话接报" value="电话接报" />
<el-option label="App接报" value="App接报" />
</el-select>
</el-form-item>
</el-col>
<el-col :span="12">
@ -122,12 +125,83 @@
</el-form-item>
</el-col>
</el-row>
<el-row :gutter="20">
<el-col :span="12">
<el-form-item label="是否救援" prop="ISRESCUE">
<el-radio-group v-model="form.ISRESCUE">
<el-radio :label="true"></el-radio>
<el-radio :label="false"></el-radio>
</el-radio-group>
</el-form-item>
</el-col>
</el-row>
<el-row v-if="form.ISRESCUE" :gutter="20">
<el-col :span="12">
<el-form-item label="应急预案" prop="FIRERESERVEPLAN_ID">
<el-select v-model="form.FIRERESERVEPLAN_ID" placeholder="请选择应急预案..." @change="handlePlanChange">
<el-option
v-for="plan in FirereServePlan"
:key="plan.id"
:label="plan.label"
:value="plan.id"
/>
</el-select>
</el-form-item>
</el-col>
<el-col :span="12">
<el-form-item label="响应级别" prop="HIERARCHICALRESPONSE_ID">
<el-select v-model="form.HIERARCHICALRESPONSE_ID" placeholder="请选择响应级别...">
<el-option
v-for="response in PlanFractional"
:key="response.id"
:label="response.label"
:value="response.id"
/>
</el-select>
</el-form-item>
</el-col>
</el-row>
</el-form>
<div slot="footer" class="dialog-footer">
<el-button @click="dialogFormEdit = false"> </el-button>
<el-button type="primary" @click="confirm('edit')"> </el-button>
</div>
</el-dialog>
<!-- 是否救援弹窗 -->
<el-dialog :visible.sync="dialogRescueVisible" title="是否救援">
<el-form ref="rescueForm" :model="rescueForm" label-width="120px">
<el-row :gutter="20">
<el-col :span="12">
<el-form-item label="应急预案" prop="FIRERESERVEPLAN_ID">
<el-select v-model="rescueForm.FIRERESERVEPLAN_ID" placeholder="请选择应急预案..." @change="handlePlanChange">
<el-option
v-for="plan in FirereServePlan"
:key="plan.id"
:label="plan.label"
:value="plan.id"
/>
</el-select>
</el-form-item>
</el-col>
<el-col :span="12">
<el-form-item label="响应级别" prop="HIERARCHICALRESPONSE_ID">
<el-select v-model="rescueForm.HIERARCHICALRESPONSE_ID" placeholder="请选择响应级别...">
<el-option
v-for="response in PlanFractional"
:key="response.id"
:label="response.label"
:value="response.id"
/>
</el-select>
</el-form-item>
</el-col>
</el-row>
</el-form>
<div slot="footer" class="dialog-footer">
<el-button @click="dialogRescueVisible = false">取消</el-button>
<el-button type="primary" @click="confirmRescue"></el-button>
</div>
</el-dialog>
<!-- 添加事故报告弹窗 -->
<el-dialog :visible.sync="dialogReportVisible" title="添加事故报告" width="1000px">
<el-form ref="reportForm" :model="reportForm" label-width="250px">
@ -418,6 +492,11 @@ export default {
page: 1,
limit: 10
},
dialogRescueVisible: false,
rescueForm: {
FIRERESERVEPLAN_ID: '',
HIERARCHICALRESPONSE_ID: ''
},
total: 0,
varList: [],
EVENT_NAME: '',
@ -466,7 +545,10 @@ export default {
OPERATOR: '',
OPERATETIME: '',
CREATETIME: '',
CREATOR: ''
CREATOR: '',
ISRESCUE: false,
FIRERESERVEPLAN_ID: '',
HIERARCHICALRESPONSE_ID: ''
},
reportForm: {
ID: '',
@ -612,6 +694,8 @@ export default {
FFILE: [],
caseSummaryList: [],
regionData: [],
FirereServePlan: [],
PlanFractional: [],
normalizer(node) {
return {
id: node.DICTIONARIES_ID,
@ -624,8 +708,29 @@ export default {
created() {
this.getRegionDataList()
this.getList()
this.getFirereServePlanDataList()
},
methods: {
handleRescue(id) {
this.dialogRescueVisible = true
this.rescueForm = {
FIRERESERVEPLAN_ID: '',
HIERARCHICALRESPONSE_ID: ''
}
},
confirmRescue() {
this.$refs.rescueForm.validate((valid) => {
if (valid) {
this.dialogRescueVisible = false
//
this.sendSMS(this.rescueForm.FIRERESERVEPLAN_ID, this.rescueForm.HIERARCHICALRESPONSE_ID)
}
})
},
sendSMS(planId, responseId) {
requestFN('/major/registration/sendSMS', { planId, responseId }).then((response) => {
})
},
handleRegionChange(value) {
const selectedRegion = this.regionData.find(region => region.DICTIONARIES_ID === value)
if (selectedRegion) {
@ -664,11 +769,29 @@ export default {
console.error('获取树形数据失败', e)
})
},
//* *******************************
//
viewMap(id) {
this.getDetail(id, 'map')
getFirereServePlanDataList() {
requestFN('/major/emergencyplan/getForEmergencyModule')
.then((response) => {
const data = response.data
this.FirereServePlan = data.map(item => ({
id: item.firereserveplan_ID,
label: item.planname
}))
})
},
handlePlanChange(planId) {
this.getPlanFractionalDataList(planId)
},
getPlanFractionalDataList(planId) {
requestFN('/plan/fractional/getForFractModule', { planId }).then((response) => {
const data = response.data
this.PlanFractional = data.map(item => ({
id: item.HIERARCHICALRESPONSE_ID,
label: item.HIERARCHICALNAME
}))
})
},
//* *******************************
//
mapOpen() {
this.top = this.getScrollTop()

View File

@ -0,0 +1,283 @@
<template>
<div>
<div class="app-container">
<div class="level-title">
<h1>事故详情</h1>
</div>
<div class="mb-20">
<table class="table-ui">
<tr>
<td class="tbg">事件标题</td>
<td>{{ form.EVENT_NAME }}</td>
<td class="tbg">呼入电话</td>
<td>{{ form.INCOMING_PHONE }}</td>
</tr>
<tr>
<td class="tbg">机主姓名</td>
<td>{{ form.OWNER_NAME }}</td>
<td class="tbg">主叫地址</td>
<td>{{ form.CALLER_ADDRESS }}</td>
</tr>
<tr>
<td class="tbg">接入方式</td>
<td>{{ form.ACCESS_MODE }}</td>
<td class="tbg">事件类型</td>
<td>{{ form.EVENT_TYPE }}</td>
</tr>
<tr>
<td class="tbg">姓名</td>
<td>{{ form.NAME }}</td>
<td class="tbg">联系电话</td>
<td>{{ form.CONTACT_PHONE }}</td>
</tr>
<tr>
<td class="tbg">单位名称</td>
<td>{{ form.UNIT_NAME }}</td>
<td class="tbg">所在区域</td>
<td>{{ form.REGION }}</td>
</tr>
<tr>
<td class="tbg">单位地址</td>
<td>{{ form.UNIT_ADDRESS }}</td>
<td class="tbg">行业类型</td>
<td>{{ form.INDUSTRY_TYPE }}</td>
</tr>
<tr>
<td class="tbg">经济类型</td>
<td>{{ form.ECONOMIC_TYPE }}</td>
<td class="tbg">重大危险源</td>
<td>{{ form.MAJOR_HAZARD }}</td>
</tr>
<tr>
<td class="tbg">接报时间</td>
<td>{{ form.REPORT_TIME }}</td>
<td class="tbg">发生时间</td>
<td>{{ form.OCCURRENCE_TIME }}</td>
</tr>
<tr>
<td class="tbg">所在地址</td>
<td>{{ form.LOCATION_ADDRESS }}</td>
<td class="tbg">经度</td>
<td>{{ form.LONGITUDE }}</td>
</tr>
<tr>
<td class="tbg">纬度</td>
<td>{{ form.LATITUDE }}</td>
<td class="tbg">接报类型</td>
<td>{{ form.REPORT_TYPE }}</td>
</tr>
<tr>
<td class="tbg">事故标题</td>
<td>{{ form.ACCIDENT_TITLE }}</td>
<td class="tbg">事故级别</td>
<td>{{ form.ACCIDENT_LEVEL }}</td>
</tr>
<tr>
<td class="tbg">伤害类型</td>
<td>{{ form.INJURY_TYPE }}</td>
<td class="tbg">事故类型</td>
<td>{{ form.ACCIDENT_TYPE }}</td>
</tr>
<tr>
<td class="tbg">被困人数</td>
<td>{{ form.TRAPPED_PEOPLE_COUNT }}</td>
<td class="tbg">失踪人数</td>
<td>{{ form.MISSING_PEOPLE_COUNT }}</td>
</tr>
<tr>
<td class="tbg">死亡人数</td>
<td>{{ form.DEATH_PEOPLE_COUNT }}</td>
<td class="tbg">重伤人数</td>
<td>{{ form.SERIOUS_INJURY_PEOPLE_COUNT }}</td>
</tr>
<tr>
<td class="tbg">轻伤人数</td>
<td>{{ form.MINOR_INJURY_PEOPLE_COUNT }}</td>
<td class="tbg">中毒人数</td>
<td>{{ form.POISONING_PEOPLE_COUNT }}</td>
</tr>
<tr>
<td class="tbg">直接经济损失万元</td>
<td>{{ form.DIRECT_ECONOMIC_LOSS }}</td>
</tr>
<tr>
<td class="tbg">简要经过</td>
<td colspan="3">{{ form.BRIEF_PROCESS }}</td>
</tr>
<tr>
<td class="tbg">处置情况</td>
<td colspan="3">{{ form.DISPOSAL_SITUATION }}</td>
</tr>
</table>
</div>
</div>
<div v-if="form.REPORT_UNIT !== null" class="app-container">
<div class="level-title">
<h1>专报详情</h1>
</div>
<div class="mb-20">
<table class="table-ui">
<tr>
<td class="tbg">报告单位</td>
<td>{{ form.REPORT_UNIT }}</td>
<td class="tbg">审核人</td>
<td>{{ form.AUDITOR }}</td>
</tr>
<tr>
<td class="tbg">报告人</td>
<td>{{ form.REPORTER }}</td>
<td class="tbg">报告时间</td>
<td>{{ form.REPORT_TIME }}</td>
</tr>
<tr>
<td class="tbg">责任人</td>
<td>{{ form.RESPONSIBLE_PERSON }}</td>
<td class="tbg">联系方式</td>
<td>{{ form.CONTACT_INFORMATION }}</td>
</tr>
<tr>
<td class="tbg">安全评价等级</td>
<td>{{ form.SAFETY_EVALUATION_LEVEL }}</td>
<td class="tbg">持证情况</td>
<td>{{ form.CERTIFICATE_STATUS }}</td>
</tr>
</table>
</div>
</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'
export default {
data() {
return {
form: {
EVENT_NAME: '',
INCOMING_PHONE: '',
OWNER_NAME: '',
CALLER_ADDRESS: '',
ACCESS_MODE: '',
EVENT_TYPE: '',
NAME: '',
CONTACT_PHONE: '',
UNIT_NAME: '',
REGION: '',
UNIT_ADDRESS: '',
INDUSTRY_TYPE: '',
ECONOMIC_TYPE: '',
MAJOR_HAZARD: '',
REPORT_TIME: '',
OCCURRENCE_TIME: '',
LOCATION_ADDRESS: '',
LONGITUDE: '',
LATITUDE: '',
REPORT_TYPE: '',
ACCIDENT_TITLE: '',
ACCIDENT_LEVEL: '',
INJURY_TYPE: '',
ACCIDENT_TYPE: '',
TRAPPED_PEOPLE_COUNT: '',
MISSING_PEOPLE_COUNT: '',
DEATH_PEOPLE_COUNT: '',
SERIOUS_INJURY_PEOPLE_COUNT: '',
MINOR_INJURY_PEOPLE_COUNT: '',
POISONING_PEOPLE_COUNT: '',
DIRECT_ECONOMIC_LOSS: '',
BRIEF_PROCESS: '',
DISPOSAL_SITUATION: '',
REPORT_UNIT: '',
AUDITOR: '',
REPORTER: '',
RESPONSIBLE_PERSON: '',
CONTACT_INFORMATION: '',
SAFETY_EVALUATION_LEVEL: '',
CERTIFICATE_STATUS: ''
},
Id: ''
}
},
created() {
if (this.$parent.CASE_ID) {
this.Id = this.$parent.CASE_ID
this.getDetail(this.Id)
}
},
methods: {
goBack() {
this.$parent.activeName = 'list'
},
getDetail(Id) {
const params = { Id }
requestFN('/major/registration/detail', params).then((response) => {
const data = response.msg
this.form = {
REPORT_UNIT: data.REPORT_UNIT,
AUDITOR: data.AUDITOR,
REPORTER: data.REPORTER,
RESPONSIBLE_PERSON: data.RESPONSIBLE_PERSON,
CONTACT_INFORMATION: data.CONTACT_INFORMATION,
SAFETY_EVALUATION_LEVEL: data.SAFETY_EVALUATION_LEVEL,
CERTIFICATE_STATUS: data.CERTIFICATE_STATUS,
EVENT_NAME: data.EVENT_NAME,
INCOMING_PHONE: data.INCOMING_PHONE,
OWNER_NAME: data.OWNER_NAME,
CALLER_ADDRESS: data.CALLER_ADDRESS,
ACCESS_MODE: data.ACCESS_MODE,
EVENT_TYPE: data.EVENT_TYPE,
NAME: data.NAME,
CONTACT_PHONE: data.CONTACT_PHONE,
UNIT_NAME: data.UNIT_NAME,
REGION: data.REGION,
UNIT_ADDRESS: data.UNIT_ADDRESS,
INDUSTRY_TYPE: data.INDUSTRY_TYPE,
ECONOMIC_TYPE: data.ECONOMIC_TYPE,
MAJOR_HAZARD: data.MAJOR_HAZARD,
REPORT_TIME: data.REPORT_TIME,
OCCURRENCE_TIME: data.OCCURRENCE_TIME,
LOCATION_ADDRESS: data.LOCATION_ADDRESS,
LONGITUDE: data.LONGITUDE,
LATITUDE: data.LATITUDE,
REPORT_TYPE: data.REPORT_TYPE,
ACCIDENT_TITLE: data.ACCIDENT_TITLE,
ACCIDENT_LEVEL: data.ACCIDENT_LEVEL,
INJURY_TYPE: data.INJURY_TYPE,
ACCIDENT_TYPE: data.ACCIDENT_TYPE,
TRAPPED_PEOPLE_COUNT: data.TRAPPED_PEOPLE_COUNT,
MISSING_PEOPLE_COUNT: data.MISSING_PEOPLE_COUNT,
DEATH_PEOPLE_COUNT: data.DEATH_PEOPLE_COUNT,
SERIOUS_INJURY_PEOPLE_COUNT: data.SERIOUS_INJURY_PEOPLE_COUNT,
MINOR_INJURY_PEOPLE_COUNT: data.MINOR_INJURY_PEOPLE_COUNT,
POISONING_PEOPLE_COUNT: data.POISONING_PEOPLE_COUNT,
DIRECT_ECONOMIC_LOSS: data.DIRECT_ECONOMIC_LOSS,
BRIEF_PROCESS: data.BRIEF_PROCESS,
DISPOSAL_SITUATION: data.DISPOSAL_SITUATION,
OPERATOR: data.OPERATOR,
OPERATETIME: data.OPERATETIME,
CREATETIME: data.CREATETIME,
CREATOR: data.CREATOR,
Id: data.ID
}
}).catch((e) => {
console.error('获取详情数据失败', e)
})
}
}
}
</script>
<style lang="sass" scoped>
.table-ui
td
line-height: 34px
.tbg
width: 200px
.ui-foot
text-align: center
margin-top: 20px
</style>

View File

@ -0,0 +1,182 @@
<template>
<div class="app-container">
<div class="filter-container">
<el-form inline>
<el-form-item label="姓名:" prop="NAME">
<el-input v-model="NAME" placeholder="姓名" class="filter-item" style="width: 200px;" />
</el-form-item>
<el-form-item>
<el-button class="filter-item" type="primary" icon="el-icon-search" @click="getQuery"></el-button>
<el-button class="filter-item" type="default" icon="el-icon-refresh" @click="resetQuery"></el-button>
</el-form-item>
</el-form>
</div>
<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="selection" width="55" align="center" />
<el-table-column type="index" label="序号" width="50" align="center" />
<el-table-column prop="NAME" label="姓名" width="180" />
<el-table-column prop="PHONE" label="电话" show-overflow-tooltip="true" />
<el-table-column prop="PLAN_NAME" label="预案名称" show-overflow-tooltip="true" />
<el-table-column prop="RESPONSE_NAME" label="响应级别名称" show-overflow-tooltip="true" />
<el-table-column prop="ORDER_CONTENT" label="指令内容" show-overflow-tooltip="true" />
<el-table-column prop="CREATETIME" label="通知时间" show-overflow-tooltip="true" />
<el-table-column label="操作" align="center" width="300">
<template slot-scope="{ row }">
<el-button type="primary" icon="el-icon-download" size="mini" @click="confirmExport(row.ID)"></el-button>
<el-button type="danger" icon="el-icon-delete" size="mini" @click="handleDelete(row.ID, row.NAME)">删除</el-button>
</template>
</el-table-column>
</el-table>
<div class="page-btn-group">
<div>
<template>
<el-button type="danger" icon="el-icon-delete" plain @click="makeAll('0')"></el-button>
</template>
</div>
<pagination :total="total" :page.sync="listQuery.page" :limit.sync="listQuery.limit" @pagination="getList" />
</div>
</div>
</template>
<script>
import Pagination from '@/components/Pagination'
import { requestFN } from '@/utils/request'
import { MessageBox, Message } from 'element-ui'
export default {
components: { Pagination },
data() {
return {
listLoading: false,
dialogFormShow: false,
dialogType: 'add',
NAME: '',
form: {
ID: '',
NAME: '',
ORDER_CONTENT: '',
PHONE: '',
PLAN_ID: '',
RESPONSE_ID: ''
},
total: 0,
varList: [],
KEYWORDS_NAME: '',
listQuery: {
page: 1,
limit: 10
}
}
},
created() {
this.getList()
},
methods: {
getQuery() {
this.$refs.multipleTable.clearSelection()
this.getList()
},
resetQuery() {
this.NAME = ''
this.getQuery()
},
confirmExport(id) {
MessageBox.confirm('确定要导出数据吗?', '提示', {
confirmButtonText: '确定',
cancelButtonText: '取消',
type: 'warning'
}).then(() => {
this.getExportExcel(id)
})
},
getExportExcel(id) {
const params = { Id: id }
requestFN('/major/dutylog/ExportExcel', params).then((response) => {
Message({
type: 'success',
message: '导出成功'
})
}).catch((e) => {
Message({
type: 'error',
message: '导出失败'
})
console.error('导出数据失败', e)
})
},
getDetail(id) {
const params = { Id: id }
requestFN('/major/dutylog/detail', params).then((response) => {
const data = response.msg
this.form = {
Id: data.ID,
NAME: data.NAME,
ORDER_CONTENT: data.ORDER_CONTENT,
PHONE: data.PHONE,
PLAN_ID: data.PLAN_ID,
RESPONSE_ID: data.RESPONSE_ID
}
}).catch((e) => {
console.error('获取详情数据失败', e)
})
},
handleDelete(id, NAME) {
this.$confirm('确定要删除[' + NAME + ']吗?', {
confirmButtonText: '确定',
cancelButtonText: '取消',
type: 'warning'
}).then(() => {
this.listLoading = true
requestFN('/major/dutylog/delete', { id }).then((data) => {
if (data.result === 'success') {
this.listLoading = false
this.getList()
}
}).catch((e) => {
this.listLoading = false
})
}).catch(() => { })
},
makeAll() {
const _selectData = this.$refs.multipleTable.selection
if (!_selectData || _selectData.length === 0) {
this.$message({
message: '请选中要删除的项...',
type: 'error'
})
return false
}
const ids = _selectData.map(item => item.ID).join(',')
this.$confirm('确定要删除选中的数据吗?', {
confirmButtonText: '确定',
cancelButtonText: '取消',
type: 'warning'
}).then(() => {
this.listLoading = true
requestFN('/major/dutylog/deleteAll', { ids }).then(() => {
this.listLoading = false
this.getList()
}).catch((e) => {
this.listLoading = false
})
}).catch(() => { })
},
getList() {
this.listLoading = true
requestFN('/major/notification/list?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,19 @@
<template>
<div>
<list v-show="activeName=='list'" ref="list" />
<detail v-if="activeName=='detail'"/>
</div>
</template>
<script>
import list from './components/list.vue'
import detail from './components/detail.vue'
export default {
components: { list, detail },
data() {
return {
activeName: 'list',
CASE_ID: ''
}
}
}
</script>

View File

@ -0,0 +1,182 @@
<template>
<div>
<div class="app-container">
<div class="level-title">
<h1>应急避难场所</h1>
</div>
<div class="mb-20">
<table class="table-ui">
<tr>
<td class="tbg">名称</td>
<td>{{ form.SHELTER_NAME }}</td>
<td class="tbg">设备类型</td>
<td>{{ form.TYPE_NAME }}</td>
</tr>
<tr>
<td class="tbg">详情地址</td>
<td colspan="3">{{ form.ADDRESS }}</td>
</tr>
<tr>
<td class="tbg">经度</td>
<td>{{ form.LONGITUDE }}</td>
<td class="tbg">纬度</td>
<td>{{ form.LATITUDE }}</td>
</tr>
<tr>
<td class="tbg">联系人</td>
<td>{{ form.CONTACT_PERSON }}</td>
<td class="tbg">联系人固定电话</td>
<td>{{ form.CONTACT_TELE_PHONE }}</td>
</tr>
<tr>
<td class="tbg">联系人移动电话</td>
<td>{{ form.CONTACT_MOBILE_PHONE }}</td>
<td class="tbg"/>
<td/>
</tr>
<tr>
<td class="tbg">企业名称</td>
<td>{{ form.COMPANY }}</td>
<td class="tbg">所属区域</td>
<td>{{ form.REGION_NAME }}</td>
</tr>
<tr>
<td class="tbg">所属单位</td>
<td>{{ form.AFFILIATEDUNIT_NAME }}</td>
<td class="tbg"/>
<td/>
</tr>
</table>
</div>
</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'
export default {
data() {
return {
form: {
//
SHELTER_NAME: '',
//
TYPE: '',
//
LONGITUDE: '',
//
LATITUDE: '',
//
CONTACT_PERSON: '',
//
CONTACT_TELE_PHONE: '',
//
CONTACT_MOBILE_PHONE: '',
//
ADDRESS: '',
//
COMPANY: '',
//
REGION: '',
//
AFFILIATEDUNIT: ''
},
Id: ''
}
},
created() {
if (this.$parent.CASE_ID) {
this.Id = this.$parent.CASE_ID
this.getDetail(this.Id)
}
},
methods: {
goBack() {
this.$parent.activeName = 'list'
},
//* **********************************************
download(obj) {
this.$confirm('确定要下载此文件吗?', {
confirmButtonText: '确定',
cancelButtonText: '取消',
type: 'warning'
}).then(() => {
this.downloadUrl = config.fileUrl + obj.FILE_URL
const _this = this
setTimeout(function() {
window.open(_this.downloadUrl)
}, 200)
}).catch(() => {
})
},
//* **************************************
getDetail(id) {
const params = {
id: id
}
requestFN('/shelterRefuge/detail', params).then((response) => {
const data = response.data
console.log(data)
this.form = {
//
SHELTER_NAME: data.SHELTER_NAME,
//
TYPE: data.TYPE,
//
LONGITUDE: data.LONGITUDE,
//
LATITUDE: data.LATITUDE,
//
CONTACT_PERSON: data.CONTACT_PERSON,
//
CONTACT_TELE_PHONE: data.CONTACT_TELE_PHONE,
//
CONTACT_MOBILE_PHONE: data.CONTACT_MOBILE_PHONE,
//
ADDRESS: data.ADDRESS,
//
COMPANY: data.COMPANY,
//
REGION: data.REGION,
//
AFFILIATEDUNIT: data.AFFILIATEDUNIT,
SHELTER_ID: data.SHELTER_ID,
REGION_NAME: data.REGION_NAME,
AFFILIATEDUNIT_NAME: data.AFFILIATEDUNIT_NAME,
TYPE_NAME: data.TYPE_NAME
}
}).catch((e) => {
console.error('获取详情数据失败', e)
})
}
}
}
</script>
<style lang="sass" scoped>
.table-ui
td
line-height: 34px
.tbg
width: 200px
.ui-foot
text-align: center
margin-top: 20px
</style>

View File

@ -0,0 +1,324 @@
<template>
<div class="app-container">
<div class="rightCont">
<el-form label-width="50px">
<el-col :span="4">
<el-form-item label="消防器材类型:" label-width="110px">
<el-select v-model="keySelect.FIRE_DEVICE_TYPE_ID" placeholder="请选择">
<el-option
v-for="item in typeData"
:key="item.NAME"
:label="item.NAME"
:value="item.BIANMA"/>
</el-select>
</el-form-item>
</el-col>
<el-col :span="4">
<el-form-item label="消防区域" label-width="110px">
<el-select v-model="keySelect.FIRE_REGION_ID" placeholder="请选择" class="filter-item">
<el-option
v-for="item in varRegionList"
:key="item.FIRE_REGION_ID"
:label="item.FIRE_REGION_NAME"
:value="item.FIRE_REGION_ID"/>
</el-select>
</el-form-item>
</el-col>
<el-col :span="4">
<el-form-item label="消防点位" label-width="110px">
<el-input v-model="keySelect.FIRE_POINT_NAME" placeholder="请输入关键字"/>
</el-form-item>
</el-col>
<el-col :span="4">
<el-form-item label="器材编号" label-width="110px">
<el-input v-model="keySelect.FIRE_DEVICE_CODE" placeholder="请输入关键字"/>
</el-form-item>
</el-col>
<el-col :span="8">
<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-form>
<div>
<el-table
v-loading="listLoading"
ref="multipleTable"
:data="varList"
:row-key="getRowKey"
border
tooltip-effect="dark"
style="width: 100%">
<el-table-column
type="selection"
width="55"
reserve-selection
align="center"/>
<el-table-column type="index" label="序号" width="55" align="center"/>
<el-table-column prop="FIRE_DEVICE_TYPE_NAME" label="器材类型"/>
<el-table-column prop="FIRE_DEVICE_CODE" label="器材编号"/>
<el-table-column prop="FIRE_REGION_NAME" label="消防区域名称"/>
<el-table-column prop="FIRE_POINT_NAME" label="消防点位名称"/>
<el-table-column prop="FIRE_REGION_CODE" label="消防区域编码"/>
<el-table-column prop="FIRE_POINT_CODE" label="消防点位编码"/>
<el-table-column prop="VALIDITY_START_TIME" label="有效期开始时间"/>
<el-table-column prop="VALIDITY_END_TIME" label="有效期结束时间"/>
<el-table-column prop="REMAKE" label="存放地点"/>
<el-table-column prop="DEPARTMENTNAME" width ="170" label="负责部门"/>
<el-table-column prop="USERNAME" label="点位负责人"/>
</el-table>
<div class="page-btn-group">
<div>
<el-button @click = "goBack()"> </el-button>
</div>
<pagination
:total="total"
:page.sync="listQuery.page"
:limit.sync="listQuery.limit"
@pagination="getList(FIRE_DEVICE_ID)"/>
</div>
</div>
</div>
</div>
</template>
<script>
import Pagination from '@/components/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 },
inject: ['setActiveName', 'setInfo'],
data() {
return {
addBtnType: true,
listLoading: true,
add: false,
del: false,
edit: false,
form: {
FIRE_DEVICE_TYPE_ID: '',
FIRE_REGION_ID: ''
},
keySelect: {
FIRE_DEVICE_TYPE_ID: '',
FIRE_REGION_ID: '',
FIRE_POINT_NAME: '',
FIRE_DEVICE_CODE: ''
},
treeData: [],
typeData: [],
varRegionList: [],
listQuery: {
page: 1,
limit: 20
},
ls: [],
dates: [],
total: 0,
KEYWORDS: '',
FIRE_POINT_NAME: '',
FIRE_POINT_CODE: '',
//
filterText: '',
varList: [],
pd: [],
defaultProps: {
value: 'id',
children: 'children',
label: 'name'
},
daoruFrom: {
FFILEName: '',
FFILE: ''
}
}
},
watch: {
filterText(val) {
console.log(val)
this.$refs.tree.filter(val)
}
},
created() {
this.getList()
this.hasButton()
this.getDict()
this.getTreeData()
this.getFireRegion()
},
methods: {
getTreeData() {
requestFN(
'/department/listTree',
{}
).then((data) => {
this.treeData = JSON.parse(data.zTreeNodes)
}).catch((e) => {
})
},
//
getFireRegion() {
requestFN(
'/fireregion/getAllRegionName',
{}
).then((data) => {
this.varRegionList = data.varList
}).catch((e) => {
})
},
goImportStand(FIRE_DEVICE_ID) {
this.$parent.FIRE_DEVICE_ID = FIRE_DEVICE_ID
this.$parent.activeName = 'Info'
},
getRowKey(row) {
return row.FIRE_DEVICE_ID
},
//
getQuery() {
this.getList()
},
//
getList(pid) {
this.listLoading = true
this.varList = []
this.FIRE_POINT_ID = pid
requestFN(
'/fireDevice/list?showCount=' + this.listQuery.limit + '&currentPage=' + this.listQuery.page,
{
FIRE_REGION_ID: this.keySelect.FIRE_REGION_ID,
FIRE_DEVICE_TYPE_ID: this.keySelect.FIRE_DEVICE_TYPE_ID,
FIRE_POINT_NAME: this.keySelect.FIRE_POINT_NAME,
FIRE_DEVICE_CODE: this.keySelect.FIRE_DEVICE_CODE
}
).then((data) => {
this.listLoading = false
this.varList = data.varList
this.total = data.page.totalResult
this.hasButton()
}).catch((e) => {
this.listLoading = false
})
},
goKeyReset() {
this.keySelect.FIRE_DEVICE_TYPE_ID = ''
this.keySelect.FIRE_REGION_ID = ''
this.keySelect.FIRE_DEVICE_CODE = ''
this.getList()
},
getDict() {
requestFN(
'dictionaries/getLevels',
{
DICTIONARIES_ID: '4a3d0d99b0ea4e268c11dd0b18866917'
}
).then((data) => {
this.typeList = data.list
})
.catch((e) => {
this.listLoading = false
})
requestFN(
'dictionaries/getLevels',
{
DICTIONARIES_ID: '249151f04fd64132a949fdd430a7b9c5'
}
).then((data) => {
this.typeData = data.list
console.log(this.typeData)
})
.catch((e) => {
this.listLoading = false
})
requestFN(
'dictionaries/getLevels',
{
DICTIONARIES_ID: 'f60cf0e8315b4993b6d6049dd29f2ba5'
}
).then((data) => {
this.periodList = data.list
})
.catch((e) => {
this.listLoading = false
})
requestFN(
'dictionaries/getLevels',
{
DICTIONARIES_ID: '4a661fa8aedc4d158c9cddaa9d2ec47e'
}
).then((data) => {
this.listingLevelList = this.listingLevelList.concat(data.list)
})
.catch((e) => {
this.listLoading = false
})
},
hasButton: function() {
var keys = 'listmanager:add,listmanager:del,listmanager:edit,toExcel'
requestFN(
'/head/hasButton',
{
keys: keys
}
).then((data) => {
this.add = data.listmanagerfhadminadd //
this.del = data.listmanagerfhadmindel //
this.edit = data.listmanagerfhadminedit //
this.toExcel = data.toExcel // excel
}).catch((e) => {
this.listLoading = false
})
},
goBack() {
this.setActiveName('List')
}
}
}
</script>
<style scoped>
.returnBtn {
float: right;
}
.app-container {
display: flex; /**/
align-items: baseline;
}
.rightCont {
width: 100%
}
</style>
<style lang="sass" scoped>
.table-qrcode
text-align: center
padding-top: 20px
width: 100%
.filter-container
position: relative
.filter-flot
position: absolute
right: 0
top: 0
.uploader
width: 570px
display: flex
align-items: center
.el-form-item__content
line-height: 1
.ud-flex
display: flex
</style>

View File

@ -0,0 +1,19 @@
<template>
<div>
<list v-show="activeName=='list'" ref="list" />
<detail v-if="activeName=='detail'"/>
</div>
</template>
<script>
import list from './components/list.vue'
import detail from './components/detail.vue'
export default {
components: { list, detail },
data() {
return {
activeName: 'list',
CASE_ID: ''
}
}
}
</script>