工程安全分析模块初步完善
This commit is contained in:
parent
971a7b9050
commit
cd86cdae33
|
|
@ -1,7 +1,8 @@
|
|||
import request from '@/utils/request'
|
||||
import requestFormData from '@/utils/request_formdata'
|
||||
|
||||
// 获取工程安全分析一本账列表
|
||||
|
||||
// 获取工程安全分析列表
|
||||
export function getProjectSafetyAnalysisListAPI(data) {
|
||||
return request({
|
||||
url: '/background/sj/safety/list',
|
||||
|
|
@ -10,7 +11,7 @@ export function getProjectSafetyAnalysisListAPI(data) {
|
|||
})
|
||||
}
|
||||
|
||||
// 新增工程安全分析一本账列表
|
||||
// 新增工程安全分析
|
||||
export function addProjectSafetyAnalysisAPI(data) {
|
||||
return request({
|
||||
url: '/background/sj/safety/addData',
|
||||
|
|
@ -19,74 +20,46 @@ export function addProjectSafetyAnalysisAPI(data) {
|
|||
})
|
||||
}
|
||||
|
||||
// 编辑工工程安全分析一本账列表
|
||||
// 编辑工程安全分析
|
||||
export function editProjectSafetyAnalysisAPI(data) {
|
||||
return request({
|
||||
url: '/background/sj/safety/updateData',
|
||||
url: '/background/sj/safety/editData',
|
||||
method: 'post',
|
||||
data,
|
||||
})
|
||||
}
|
||||
|
||||
// 删除工工程安全分析一本账列表
|
||||
// 删除工程安全分析
|
||||
export function deleteProjectSafetyAnalysisAPI(data) {
|
||||
return request({
|
||||
url: '/background/sj/safety/delete',
|
||||
url: '/background/sj/safety/deleteData',
|
||||
method: 'post',
|
||||
data,
|
||||
})
|
||||
}
|
||||
|
||||
// 获取视频风险分析列表
|
||||
export function getVideoSafetyAnalysisListAPI(data) {
|
||||
// 获取工程安全分析阈值列表
|
||||
export function getProjectSafetyThresholdListAPI(data) {
|
||||
return request({
|
||||
url: '/background/sj/safety/getVideoList',
|
||||
url: '/background/sj/safety/threshold/list',
|
||||
method: 'get',
|
||||
params: data,
|
||||
})
|
||||
}
|
||||
|
||||
// 新增视频风险分析列表
|
||||
export function addVideoSafetyAnalysisAPI(data) {
|
||||
return requestFormData({
|
||||
url: '/background/sj/safety/addVideoFile',
|
||||
method: 'post',
|
||||
data,
|
||||
})
|
||||
}
|
||||
|
||||
// 编辑工视频风险分析列表
|
||||
export function editVideoSafetyAnalysisAPI(data) {
|
||||
return requestFormData({
|
||||
url: '/background/sj/safety/updateVideoFile',
|
||||
method: 'post',
|
||||
data,
|
||||
})
|
||||
}
|
||||
|
||||
// 删除工视频风险分析列表
|
||||
export function deleteVideoSafetyAnalysisAPI(data) {
|
||||
// 新增工程安全分析阈值
|
||||
export function addProjectSafetyThresholdAPI(data) {
|
||||
return request({
|
||||
url: '/background/sj/safety/deleteVideo',
|
||||
url: '/background/sj/safety/threshold/add',
|
||||
method: 'post',
|
||||
data,
|
||||
})
|
||||
}
|
||||
|
||||
// 下载模板
|
||||
export function downloadProjectTemplateAPI(data = {}) {
|
||||
// 编辑工程安全分析阈值
|
||||
export function editProjectSafetyThresholdAPI(data) {
|
||||
return request({
|
||||
url: '/background/sj/safety/downloadFile',
|
||||
method: 'get',
|
||||
responseType: 'blob',
|
||||
params: data,
|
||||
})
|
||||
}
|
||||
|
||||
// 导入工程安全分析一本账列表
|
||||
export function importProjectSafetyAnalysisAPI(data) {
|
||||
return requestFormData({
|
||||
url: '/background/sj/safety/importFileData',
|
||||
url: '/background/sj/safety/threshold/edit',
|
||||
method: 'post',
|
||||
data,
|
||||
})
|
||||
|
|
|
|||
|
|
@ -1,31 +1,42 @@
|
|||
<template>
|
||||
<!-- 数据分析 项目质量 -->
|
||||
<!-- 数据管理 项目质量 -->
|
||||
<div class="app-container">
|
||||
<el-form label-width="auto" inline :model="queryParams">
|
||||
<el-form-item >
|
||||
<el-form-item>
|
||||
<el-input
|
||||
clearable
|
||||
v-model="queryParams.keyWord"
|
||||
placeholder="请输入关键字"
|
||||
/>
|
||||
</el-form-item>
|
||||
<el-form-item >
|
||||
<el-date-picker
|
||||
v-model="queryParams.dateTime"
|
||||
value-format="yyyy-MM-dd"
|
||||
clearable
|
||||
type="daterange"
|
||||
range-separator=" - "
|
||||
start-placeholder="开始日期"
|
||||
end-placeholder="结束日期"
|
||||
style="width: 240px"
|
||||
/>
|
||||
<el-form-item>
|
||||
<el-date-picker
|
||||
v-model="queryParams.dateTime"
|
||||
value-format="yyyy-MM-dd"
|
||||
clearable
|
||||
type="daterange"
|
||||
range-separator=" - "
|
||||
start-placeholder="开始日期"
|
||||
end-placeholder="结束日期"
|
||||
style="width: 240px"
|
||||
/>
|
||||
</el-form-item>
|
||||
<el-form-item>
|
||||
<el-button size="mini" icon="el-icon-search" type="primary" @click="onHandleQuery">
|
||||
<el-button
|
||||
size="mini"
|
||||
icon="el-icon-search"
|
||||
type="primary"
|
||||
@click="onHandleQuery"
|
||||
>
|
||||
查询
|
||||
</el-button>
|
||||
<el-button size="mini" icon="el-icon-refresh" type="warning" plain @click="onHandleReset">
|
||||
<el-button
|
||||
size="mini"
|
||||
icon="el-icon-refresh"
|
||||
type="warning"
|
||||
plain
|
||||
@click="onHandleReset"
|
||||
>
|
||||
重置
|
||||
</el-button>
|
||||
<el-button
|
||||
|
|
@ -144,7 +155,6 @@ export default {
|
|||
label: '质量检测报告',
|
||||
prop: 'acceptTable',
|
||||
},
|
||||
|
||||
],
|
||||
queryParams: {
|
||||
pageNum: 1,
|
||||
|
|
|
|||
|
|
@ -0,0 +1,305 @@
|
|||
<template>
|
||||
<div>
|
||||
<el-form
|
||||
:model="addAndEditForm"
|
||||
label-width="auto"
|
||||
ref="addAndEditFormRef"
|
||||
:rules="addAndEditFormRules"
|
||||
>
|
||||
<el-row>
|
||||
<el-col :span="12">
|
||||
<el-form-item label="工程名称" prop="projectName">
|
||||
<el-input
|
||||
clearable
|
||||
maxlength="100"
|
||||
show-word-limit
|
||||
placeholder="请输入工程名称"
|
||||
v-model.trim="addAndEditForm.projectName"
|
||||
/>
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
<el-col :span="12">
|
||||
<el-form-item label="作业计划编号" prop="jobPlanCode">
|
||||
<el-input
|
||||
clearable
|
||||
maxlength="100"
|
||||
show-word-limit
|
||||
placeholder="请输入作业计划编号"
|
||||
v-model.trim="addAndEditForm.jobPlanCode"
|
||||
/>
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
</el-row>
|
||||
<el-row>
|
||||
<el-col :span="12">
|
||||
<el-form-item label="作业地点" prop="jobSite">
|
||||
<el-input
|
||||
clearable
|
||||
maxlength="100"
|
||||
show-word-limit
|
||||
placeholder="请输入作业地点"
|
||||
v-model.trim="addAndEditForm.jobSite"
|
||||
/>
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
<el-col :span="12">
|
||||
<el-form-item label="监测点编号" prop="monitorPointCode">
|
||||
<el-input
|
||||
clearable
|
||||
maxlength="100"
|
||||
show-word-limit
|
||||
placeholder="请输入监测点编号"
|
||||
v-model.trim="addAndEditForm.monitorPointCode"
|
||||
/>
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
</el-row>
|
||||
<el-row>
|
||||
<el-col :span="12">
|
||||
<el-form-item label="监测点名称" prop="monitorPointName">
|
||||
<el-input
|
||||
clearable
|
||||
maxlength="100"
|
||||
show-word-limit
|
||||
placeholder="请输入监测点名称"
|
||||
v-model.trim="addAndEditForm.monitorPointName"
|
||||
/>
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
<el-col :span="12">
|
||||
<el-form-item label="温度" prop="temperature">
|
||||
<el-input
|
||||
clearable
|
||||
maxlength="20"
|
||||
placeholder="请输入温度"
|
||||
v-model.trim="addAndEditForm.temperature"
|
||||
/>
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
</el-row>
|
||||
<el-row>
|
||||
<el-col :span="12">
|
||||
<el-form-item label="湿度" prop="humidity">
|
||||
<el-input
|
||||
clearable
|
||||
maxlength="20"
|
||||
placeholder="请输入湿度"
|
||||
v-model.trim="addAndEditForm.humidity"
|
||||
/>
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
<el-col :span="12">
|
||||
<el-form-item label="风速" prop="windSpeed">
|
||||
<el-input
|
||||
clearable
|
||||
maxlength="20"
|
||||
placeholder="请输入风速"
|
||||
v-model.trim="addAndEditForm.windSpeed"
|
||||
/>
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
</el-row>
|
||||
<el-row>
|
||||
<el-col :span="12">
|
||||
<el-form-item label="空气质量" prop="airQuality">
|
||||
<el-input
|
||||
clearable
|
||||
maxlength="20"
|
||||
placeholder="请输入空气质量"
|
||||
v-model.trim="addAndEditForm.airQuality"
|
||||
/>
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
<el-col :span="12">
|
||||
<el-form-item label="是否存在隐患" prop="hiddenDanger">
|
||||
<el-input
|
||||
clearable
|
||||
maxlength="100"
|
||||
placeholder="请输入是否存在隐患"
|
||||
v-model.trim="addAndEditForm.hiddenDanger"
|
||||
/>
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
</el-row>
|
||||
<el-row>
|
||||
<el-col :span="24">
|
||||
<el-form-item label="分析与改进" prop="analyzeImprove">
|
||||
<el-input
|
||||
clearable
|
||||
type="textarea"
|
||||
:rows="3"
|
||||
maxlength="200"
|
||||
show-word-limit
|
||||
placeholder="请输入分析与改进"
|
||||
v-model.trim="addAndEditForm.analyzeImprove"
|
||||
/>
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
</el-row>
|
||||
</el-form>
|
||||
</div>
|
||||
</template>
|
||||
|
||||
<script>
|
||||
import {
|
||||
addProjectSafetyAnalysisAPI,
|
||||
editProjectSafetyAnalysisAPI,
|
||||
} from '@/api/dataManage/projectSafety'
|
||||
export default {
|
||||
name: 'AddAndEditForm',
|
||||
props: {
|
||||
detailsId: {
|
||||
type: [Number, String],
|
||||
default: '',
|
||||
},
|
||||
editRow: {
|
||||
type: Object,
|
||||
default: () => {},
|
||||
},
|
||||
},
|
||||
data() {
|
||||
return {
|
||||
addAndEditForm: {
|
||||
projectName: '',
|
||||
jobPlanCode: '',
|
||||
jobSite: '',
|
||||
monitorPointCode: '',
|
||||
monitorPointName: '',
|
||||
temperature: '',
|
||||
humidity: '',
|
||||
windSpeed: '',
|
||||
airQuality: '',
|
||||
hiddenDanger: '',
|
||||
analyzeImprove: '',
|
||||
},
|
||||
addAndEditFormRules: {
|
||||
projectName: [
|
||||
{
|
||||
required: true,
|
||||
message: '请输入工程名称',
|
||||
trigger: 'blur',
|
||||
},
|
||||
],
|
||||
jobPlanCode: [
|
||||
{
|
||||
required: true,
|
||||
message: '请输入作业计划编号',
|
||||
trigger: 'blur',
|
||||
},
|
||||
],
|
||||
jobSite: [
|
||||
{
|
||||
required: true,
|
||||
message: '请输入作业地点',
|
||||
trigger: 'blur',
|
||||
},
|
||||
],
|
||||
monitorPointCode: [
|
||||
{
|
||||
required: true,
|
||||
message: '请输入监测点编号',
|
||||
trigger: 'blur',
|
||||
},
|
||||
],
|
||||
monitorPointName: [
|
||||
{
|
||||
required: true,
|
||||
message: '请输入监测点名称',
|
||||
trigger: 'blur',
|
||||
},
|
||||
],
|
||||
temperature: [
|
||||
{
|
||||
required: true,
|
||||
message: '请输入温度',
|
||||
trigger: 'blur',
|
||||
},
|
||||
],
|
||||
humidity: [
|
||||
{
|
||||
required: true,
|
||||
message: '请输入湿度',
|
||||
trigger: 'blur',
|
||||
},
|
||||
],
|
||||
windSpeed: [
|
||||
{
|
||||
required: true,
|
||||
message: '请输入风速',
|
||||
trigger: 'blur',
|
||||
},
|
||||
],
|
||||
airQuality: [
|
||||
{
|
||||
required: true,
|
||||
message: '请输入空气质量',
|
||||
trigger: 'blur',
|
||||
},
|
||||
],
|
||||
},
|
||||
}
|
||||
},
|
||||
|
||||
methods: {
|
||||
submitForm() {
|
||||
return new Promise((resolve, reject) => {
|
||||
this.$refs.addAndEditFormRef.validate(async (valid) => {
|
||||
if (valid) {
|
||||
const params = this.addAndEditForm
|
||||
if (this.detailsId) {
|
||||
params.id = this.detailsId
|
||||
}
|
||||
const API = this.detailsId
|
||||
? editProjectSafetyAnalysisAPI
|
||||
: addProjectSafetyAnalysisAPI
|
||||
const res = await API(params)
|
||||
if (res.code === 200) {
|
||||
resolve(true)
|
||||
} else {
|
||||
reject(false)
|
||||
}
|
||||
} else {
|
||||
reject(false)
|
||||
}
|
||||
})
|
||||
})
|
||||
},
|
||||
},
|
||||
|
||||
watch: {
|
||||
editRow: {
|
||||
handler(newVal) {
|
||||
if (Object.keys(newVal).length > 0) {
|
||||
const {
|
||||
projectName,
|
||||
jobPlanCode,
|
||||
jobSite,
|
||||
monitorPointCode,
|
||||
monitorPointName,
|
||||
temperature,
|
||||
humidity,
|
||||
windSpeed,
|
||||
airQuality,
|
||||
hiddenDanger,
|
||||
analyzeImprove,
|
||||
} = newVal
|
||||
this.addAndEditForm.projectName = projectName
|
||||
this.addAndEditForm.jobPlanCode = jobPlanCode
|
||||
this.addAndEditForm.jobSite = jobSite
|
||||
this.addAndEditForm.monitorPointCode = monitorPointCode
|
||||
this.addAndEditForm.monitorPointName = monitorPointName
|
||||
this.addAndEditForm.temperature = temperature
|
||||
this.addAndEditForm.humidity = humidity
|
||||
this.addAndEditForm.windSpeed = windSpeed
|
||||
this.addAndEditForm.airQuality = airQuality
|
||||
this.addAndEditForm.hiddenDanger = hiddenDanger
|
||||
this.addAndEditForm.analyzeImprove = analyzeImprove
|
||||
}
|
||||
},
|
||||
immediate: true,
|
||||
},
|
||||
},
|
||||
}
|
||||
</script>
|
||||
|
||||
<style></style>
|
||||
|
|
@ -1,249 +0,0 @@
|
|||
<template>
|
||||
<div>
|
||||
<el-form
|
||||
:model="addAndEditForm"
|
||||
label-width="auto"
|
||||
ref="addAndEditFormRef"
|
||||
:rules="addAndEditFormRules"
|
||||
>
|
||||
<el-row>
|
||||
<el-col :span="12">
|
||||
<el-form-item label="风险编号" prop="riskCode">
|
||||
<el-input
|
||||
clearable
|
||||
maxlength="50"
|
||||
show-word-limit
|
||||
placeholder="请输入风险编号"
|
||||
v-model.trim="addAndEditForm.riskCode"
|
||||
/>
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
<el-col :span="12">
|
||||
<el-form-item label="作业部位" prop="riskSite">
|
||||
<el-input
|
||||
clearable
|
||||
maxlength="50"
|
||||
show-word-limit
|
||||
placeholder="请输入作业部位"
|
||||
v-model.trim="addAndEditForm.riskSite"
|
||||
/>
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
</el-row>
|
||||
<el-row>
|
||||
<el-col :span="12">
|
||||
<el-form-item label="风险等级" prop="riskLevel">
|
||||
<!-- <el-input
|
||||
clearable
|
||||
maxlength="50"
|
||||
show-word-limit
|
||||
placeholder="请输入风险等级"
|
||||
v-model.trim="addAndEditForm.riskLevel"
|
||||
/> -->
|
||||
<el-select
|
||||
v-model="addAndEditForm.riskLevel"
|
||||
placeholder="请选择风险等级"
|
||||
clearable
|
||||
style="width: 100%"
|
||||
filterable
|
||||
>
|
||||
<el-option label="一级风险" value="1" />
|
||||
<el-option label="二级风险" value="2" />
|
||||
<el-option label="三级风险" value="3" />
|
||||
<el-option label="四级风险" value="4" />
|
||||
<el-option label="五级风险" value="5" />
|
||||
</el-select>
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
<el-col :span="12">
|
||||
<el-form-item label="预控措施" prop="controller">
|
||||
<el-input
|
||||
clearable
|
||||
maxlength="50"
|
||||
show-word-limit
|
||||
placeholder="请输入预控措施"
|
||||
v-model.trim="addAndEditForm.controller"
|
||||
/>
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
</el-row>
|
||||
<el-row>
|
||||
<el-col :span="12">
|
||||
<el-form-item
|
||||
label="风险控制关键因素"
|
||||
prop="riskController"
|
||||
>
|
||||
<el-input
|
||||
clearable
|
||||
maxlength="50"
|
||||
show-word-limit
|
||||
placeholder="请输入风险控制关键因素"
|
||||
v-model.trim="addAndEditForm.riskController"
|
||||
/>
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
|
||||
<el-col :span="12">
|
||||
<el-form-item label="开始日期" prop="startTime">
|
||||
<el-date-picker
|
||||
type="date"
|
||||
style="width: 100%"
|
||||
value-format="yyyy-MM-dd"
|
||||
placeholder="请选择开始日期"
|
||||
v-model="addAndEditForm.startTime"
|
||||
/>
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
</el-row>
|
||||
<el-row>
|
||||
<el-col :span="12">
|
||||
<el-form-item label="是否销号" prop="isXh">
|
||||
<el-radio-group v-model="addAndEditForm.isXh">
|
||||
<el-radio label="1">是</el-radio>
|
||||
<el-radio label="0">否</el-radio>
|
||||
</el-radio-group>
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
<el-col :span="12"> </el-col>
|
||||
</el-row>
|
||||
</el-form>
|
||||
</div>
|
||||
</template>
|
||||
|
||||
<script>
|
||||
import {
|
||||
addProjectSafetyAnalysisAPI,
|
||||
editProjectSafetyAnalysisAPI,
|
||||
} from '@/api/dataAnalysis/projectSafety'
|
||||
export default {
|
||||
name: 'AddAndEditFormOne',
|
||||
props: {
|
||||
detailsId: {
|
||||
type: [Number, String],
|
||||
default: '',
|
||||
},
|
||||
editRow: {
|
||||
type: Object,
|
||||
default: () => {},
|
||||
},
|
||||
},
|
||||
data() {
|
||||
return {
|
||||
addAndEditForm: {
|
||||
riskCode: '',
|
||||
riskSite: '',
|
||||
riskLevel: '',
|
||||
controller: '',
|
||||
riskController: '',
|
||||
startTime: '',
|
||||
isXh: '',
|
||||
},
|
||||
addAndEditFormRules: {
|
||||
riskCode: [
|
||||
{
|
||||
required: true,
|
||||
message: '请输入风险编号',
|
||||
trigger: 'blur',
|
||||
},
|
||||
],
|
||||
riskSite: [
|
||||
{
|
||||
required: true,
|
||||
message: '请输入作业部位',
|
||||
trigger: 'blur',
|
||||
},
|
||||
],
|
||||
riskLevel: [
|
||||
{
|
||||
required: true,
|
||||
message: '请输入风险等级',
|
||||
trigger: 'blur',
|
||||
},
|
||||
],
|
||||
controller: [
|
||||
{
|
||||
required: true,
|
||||
message: '请输入预控措施',
|
||||
trigger: 'blur',
|
||||
},
|
||||
],
|
||||
riskController: [
|
||||
{
|
||||
required: true,
|
||||
message: '请输入风险控制关键因素',
|
||||
trigger: 'blur',
|
||||
},
|
||||
],
|
||||
startTime: [
|
||||
{
|
||||
required: true,
|
||||
message: '请选择开始日期',
|
||||
trigger: 'blur',
|
||||
},
|
||||
],
|
||||
isXh: [
|
||||
{
|
||||
required: true,
|
||||
message: '请选择是否销号',
|
||||
trigger: 'blur',
|
||||
},
|
||||
],
|
||||
},
|
||||
}
|
||||
},
|
||||
|
||||
methods: {
|
||||
submitForm() {
|
||||
return new Promise((resolve, reject) => {
|
||||
this.$refs.addAndEditFormRef.validate(async (valid) => {
|
||||
if (valid) {
|
||||
const params = this.addAndEditForm
|
||||
if (this.detailsId) {
|
||||
params.id = this.detailsId
|
||||
}
|
||||
const API = this.detailsId
|
||||
? editProjectSafetyAnalysisAPI
|
||||
: addProjectSafetyAnalysisAPI
|
||||
const res = await API(params)
|
||||
if (res.code === 200) {
|
||||
resolve(true)
|
||||
} else {
|
||||
reject(false)
|
||||
}
|
||||
} else {
|
||||
reject(false)
|
||||
}
|
||||
})
|
||||
})
|
||||
},
|
||||
},
|
||||
|
||||
watch: {
|
||||
editRow: {
|
||||
handler(newVal) {
|
||||
if (Object.keys(newVal).length > 0) {
|
||||
const {
|
||||
riskCode,
|
||||
riskSite,
|
||||
riskLevel,
|
||||
controller,
|
||||
riskController,
|
||||
startTime,
|
||||
isXh,
|
||||
} = newVal
|
||||
this.addAndEditForm.riskCode = riskCode
|
||||
this.addAndEditForm.riskSite = riskSite
|
||||
this.addAndEditForm.riskLevel = riskLevel
|
||||
this.addAndEditForm.controller = controller
|
||||
this.addAndEditForm.riskController = riskController
|
||||
this.addAndEditForm.startTime = startTime
|
||||
this.addAndEditForm.isXh = isXh
|
||||
}
|
||||
},
|
||||
immediate: true,
|
||||
},
|
||||
},
|
||||
}
|
||||
</script>
|
||||
|
||||
<style></style>
|
||||
|
|
@ -1,239 +0,0 @@
|
|||
<template>
|
||||
<div>
|
||||
<el-form
|
||||
:model="addAndEditForm"
|
||||
label-width="120px"
|
||||
ref="addAndEditFormRef"
|
||||
:rules="addAndEditFormRules"
|
||||
>
|
||||
<el-row>
|
||||
<el-col :span="12">
|
||||
<el-form-item label="球机名称" prop="ballName">
|
||||
<el-input
|
||||
clearable
|
||||
maxlength="50"
|
||||
show-word-limit
|
||||
placeholder="请输入球机名称"
|
||||
v-model.trim="addAndEditForm.ballName"
|
||||
/>
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
<el-col :span="12">
|
||||
<el-form-item label="创建时间" prop="createTime">
|
||||
<el-date-picker
|
||||
type="date"
|
||||
style="width: 100%"
|
||||
value-format="yyyy-MM-dd"
|
||||
placeholder="请选择创建时间"
|
||||
v-model="addAndEditForm.createTime"
|
||||
/>
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
</el-row>
|
||||
<el-row>
|
||||
<el-col :span="12">
|
||||
<el-form-item label="名称" prop="name">
|
||||
<el-input
|
||||
clearable
|
||||
maxlength="50"
|
||||
show-word-limit
|
||||
placeholder="请输入名称"
|
||||
v-model.trim="addAndEditForm.name"
|
||||
/>
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
<el-col :span="12">
|
||||
<el-form-item label="图片" prop="fileList">
|
||||
<UploadImgFormData
|
||||
:limit="1"
|
||||
:file-size="10"
|
||||
:multiple="true"
|
||||
ref="faceImgRef"
|
||||
v-if="!Base64PhotoUrl"
|
||||
:file-type="['jpg', 'png', 'jpeg']"
|
||||
:file-list.sync="addAndEditForm.fileList"
|
||||
:is-uploaded="addAndEditForm.fileList.length >= 1"
|
||||
/>
|
||||
|
||||
<div class="id-card-face-img" v-else>
|
||||
<img
|
||||
:src="
|
||||
'data:image/jpeg;base64,' + Base64PhotoUrl
|
||||
"
|
||||
/>
|
||||
<i
|
||||
class="el-icon-delete"
|
||||
@click="onDeleteFaceImg"
|
||||
/>
|
||||
</div>
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
</el-row>
|
||||
</el-form>
|
||||
</div>
|
||||
</template>
|
||||
|
||||
<script>
|
||||
import UploadImgFormData from '@/components/UploadImgFormData/index.vue'
|
||||
import {
|
||||
addVideoSafetyAnalysisAPI,
|
||||
editVideoSafetyAnalysisAPI,
|
||||
} from '@/api/dataAnalysis/projectSafety'
|
||||
export default {
|
||||
name: 'AddAndEditFormOne',
|
||||
components: {
|
||||
UploadImgFormData,
|
||||
},
|
||||
props: {
|
||||
detailsId: {
|
||||
type: [Number, String],
|
||||
default: '',
|
||||
},
|
||||
editRow: {
|
||||
type: Object,
|
||||
default: () => {},
|
||||
},
|
||||
},
|
||||
data() {
|
||||
return {
|
||||
Base64PhotoUrl: null,
|
||||
addAndEditForm: {
|
||||
ballName: '',
|
||||
createTime: '',
|
||||
name: '',
|
||||
fileList: [],
|
||||
},
|
||||
addAndEditFormRules: {
|
||||
ballName: [
|
||||
{
|
||||
required: true,
|
||||
message: '请输入球机名称',
|
||||
trigger: 'blur',
|
||||
},
|
||||
],
|
||||
createTime: [
|
||||
{
|
||||
required: true,
|
||||
message: '请选择创建时间',
|
||||
trigger: 'blur',
|
||||
},
|
||||
],
|
||||
name: [
|
||||
{
|
||||
required: true,
|
||||
message: '请输入名称',
|
||||
trigger: 'blur',
|
||||
},
|
||||
],
|
||||
fileList: [
|
||||
{
|
||||
required: true,
|
||||
message: '请上传图片',
|
||||
trigger: 'blur',
|
||||
},
|
||||
],
|
||||
},
|
||||
}
|
||||
},
|
||||
|
||||
methods: {
|
||||
submitForm() {
|
||||
return new Promise((resolve, reject) => {
|
||||
this.$refs.addAndEditFormRef.validate(async (valid) => {
|
||||
if (valid) {
|
||||
const { ballName, createTime, name, fileList } =
|
||||
this.addAndEditForm
|
||||
|
||||
const params = {
|
||||
ballName,
|
||||
createTime,
|
||||
name,
|
||||
}
|
||||
if (this.detailsId) {
|
||||
params.id = this.detailsId
|
||||
}
|
||||
|
||||
const formData = new FormData()
|
||||
|
||||
if (fileList.length > 0) {
|
||||
fileList.forEach((item) => {
|
||||
if (!item.id) {
|
||||
formData.append('file', item.raw)
|
||||
}
|
||||
})
|
||||
}
|
||||
|
||||
for (const key in params) {
|
||||
formData.append(key, params[key])
|
||||
}
|
||||
|
||||
const API = this.detailsId
|
||||
? editVideoSafetyAnalysisAPI
|
||||
: addVideoSafetyAnalysisAPI
|
||||
const res = await API(formData)
|
||||
if (res.code === 200) {
|
||||
resolve(true)
|
||||
} else {
|
||||
reject(false)
|
||||
}
|
||||
} else {
|
||||
reject(false)
|
||||
}
|
||||
})
|
||||
})
|
||||
},
|
||||
|
||||
// 删除人脸照片
|
||||
onDeleteFaceImg() {
|
||||
this.Base64PhotoUrl = null
|
||||
this.addAndEditForm.fileList = []
|
||||
},
|
||||
},
|
||||
|
||||
watch: {
|
||||
editRow: {
|
||||
handler(newVal) {
|
||||
if (Object.keys(newVal).length > 0) {
|
||||
const { ballName, createTime, name, bast64 } = newVal
|
||||
this.addAndEditForm.ballName = ballName
|
||||
this.addAndEditForm.createTime = createTime
|
||||
this.addAndEditForm.name = name
|
||||
this.addAndEditForm.fileList = [
|
||||
{
|
||||
raw: bast64,
|
||||
name: '图片',
|
||||
url: bast64,
|
||||
id: newVal.id,
|
||||
},
|
||||
]
|
||||
this.Base64PhotoUrl = bast64
|
||||
}
|
||||
},
|
||||
immediate: true,
|
||||
},
|
||||
},
|
||||
}
|
||||
</script>
|
||||
|
||||
<style lang="scss" scoped>
|
||||
.id-card-face-img {
|
||||
width: 148px;
|
||||
height: 148px;
|
||||
border: 1px dashed #dcdfe6;
|
||||
border-radius: 4px;
|
||||
position: relative;
|
||||
& img {
|
||||
width: 100%;
|
||||
height: 100%;
|
||||
}
|
||||
|
||||
.el-icon-delete {
|
||||
position: absolute;
|
||||
top: 4px;
|
||||
right: 4px;
|
||||
cursor: pointer;
|
||||
color: #ff4949;
|
||||
font-size: 20px;
|
||||
}
|
||||
}
|
||||
</style>
|
||||
|
|
@ -1,259 +1,115 @@
|
|||
<template>
|
||||
<!-- 数据分析 项目质量 -->
|
||||
<!-- 数据管理 工程安全分析 -->
|
||||
<div class="app-container">
|
||||
<el-radio-group v-model="safetyType" style="margin-bottom: 20px">
|
||||
<el-radio-button label="风险一本账"></el-radio-button>
|
||||
<el-radio-button label="视频风险分析"></el-radio-button>
|
||||
</el-radio-group>
|
||||
<el-form label-width="auto" inline :model="queryParams">
|
||||
<el-form-item label="作业地点">
|
||||
<el-input
|
||||
v-model="queryParams.jobSite"
|
||||
clearable
|
||||
placeholder="请输入作业地点"
|
||||
/>
|
||||
</el-form-item>
|
||||
<el-form-item label="监测点编号">
|
||||
<el-input
|
||||
v-model="queryParams.monitorPointCode"
|
||||
clearable
|
||||
placeholder="请输入监测点编号"
|
||||
/>
|
||||
</el-form-item>
|
||||
|
||||
<template v-if="safetyType === '风险一本账'">
|
||||
<el-form label-width="auto" inline :model="queryParams_1">
|
||||
<el-form-item label="风险编号">
|
||||
<el-input
|
||||
v-model="queryParams_1.riskCode"
|
||||
clearable
|
||||
placeholder="请输入风险编号"
|
||||
/>
|
||||
</el-form-item>
|
||||
<el-form-item label="作业部位">
|
||||
<el-input
|
||||
v-model="queryParams_1.riskSite"
|
||||
clearable
|
||||
placeholder="请输入作业部位"
|
||||
/>
|
||||
</el-form-item>
|
||||
<el-form-item label="风险等级">
|
||||
<!-- <el-input
|
||||
v-model="queryParams_1.riskLevel"
|
||||
clearable
|
||||
placeholder="请输入风险等级"
|
||||
/> -->
|
||||
|
||||
<el-select
|
||||
v-model="queryParams_1.riskLevel"
|
||||
placeholder="请选择风险等级"
|
||||
clearable
|
||||
style="width: 100%"
|
||||
filterable
|
||||
>
|
||||
<el-option label="一级风险" value="1" />
|
||||
<el-option label="二级风险" value="2" />
|
||||
<el-option label="三级风险" value="3" />
|
||||
<el-option label="四级风险" value="4" />
|
||||
<el-option label="五级风险" value="5" />
|
||||
</el-select>
|
||||
</el-form-item>
|
||||
<el-form-item>
|
||||
<el-button
|
||||
size="mini"
|
||||
type="primary"
|
||||
@click="onHandleQuery"
|
||||
>
|
||||
查询
|
||||
</el-button>
|
||||
|
||||
<el-button
|
||||
size="mini"
|
||||
type="primary"
|
||||
@click="onHandleReset"
|
||||
>
|
||||
重置
|
||||
</el-button>
|
||||
<el-button
|
||||
size="mini"
|
||||
type="primary"
|
||||
@click="onHandleAddProject"
|
||||
>
|
||||
新增
|
||||
</el-button>
|
||||
|
||||
<el-button
|
||||
size="mini"
|
||||
type="primary"
|
||||
@click="onHandleImport"
|
||||
>
|
||||
导入
|
||||
</el-button>
|
||||
|
||||
<el-button
|
||||
size="mini"
|
||||
type="primary"
|
||||
@click="onHandleDownloadTemplate"
|
||||
>
|
||||
下载模板
|
||||
</el-button>
|
||||
</el-form-item>
|
||||
</el-form>
|
||||
|
||||
<el-table border :data="projectList">
|
||||
<el-table-column
|
||||
align="center"
|
||||
:key="column.prop"
|
||||
:prop="column.prop"
|
||||
:label="column.label"
|
||||
show-overflow-tooltip
|
||||
v-for="column in tableColumns"
|
||||
<el-form-item>
|
||||
<el-button
|
||||
size="mini"
|
||||
type="primary"
|
||||
icon="el-icon-search"
|
||||
@click="onHandleQuery"
|
||||
>
|
||||
<template slot-scope="scope">
|
||||
<template v-if="column.prop === 'isXh'">
|
||||
<el-tag
|
||||
v-if="scope.row.isXh === '1'"
|
||||
type="warning"
|
||||
size="mini"
|
||||
>
|
||||
是
|
||||
</el-tag>
|
||||
<el-tag v-else type="primary" size="mini">
|
||||
否
|
||||
</el-tag>
|
||||
</template>
|
||||
查询
|
||||
</el-button>
|
||||
|
||||
<template v-else-if="column.prop === 'riskLevel'">
|
||||
{{ indexToRiskLevel(scope.row.riskLevel) }}
|
||||
</template>
|
||||
|
||||
<template v-else>
|
||||
{{ scope.row[column.prop] }}
|
||||
</template>
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column label="操作" align="center" width="140">
|
||||
<template slot-scope="scope">
|
||||
<el-button
|
||||
type="primary"
|
||||
size="mini"
|
||||
style="padding: 6px 6px"
|
||||
@click="onHandleEditProject_1(scope.row)"
|
||||
>
|
||||
编辑
|
||||
</el-button>
|
||||
<el-button
|
||||
type="danger"
|
||||
size="mini"
|
||||
style="padding: 6px 6px"
|
||||
@click="onHandleDeleteProject_1(scope.row)"
|
||||
>
|
||||
删除
|
||||
</el-button>
|
||||
</template>
|
||||
</el-table-column>
|
||||
</el-table>
|
||||
|
||||
<pagination
|
||||
:total="total_1"
|
||||
@pagination="getProjectSafetyAnalysisList"
|
||||
:page.sync="queryParams_1.pageNum"
|
||||
:limit.sync="queryParams_1.pageSize"
|
||||
/>
|
||||
</template>
|
||||
|
||||
<template v-if="safetyType === '视频风险分析'">
|
||||
<el-form label-width="auto" inline :model="queryParams_2">
|
||||
<el-form-item label="球机名称">
|
||||
<el-input
|
||||
v-model="queryParams_2.ballName"
|
||||
placeholder="请输入球机名称"
|
||||
clearable
|
||||
/>
|
||||
</el-form-item>
|
||||
<el-form-item label="名称">
|
||||
<el-input
|
||||
v-model="queryParams_2.name"
|
||||
placeholder="请输入名称"
|
||||
clearable
|
||||
/>
|
||||
</el-form-item>
|
||||
<el-form-item>
|
||||
<el-button
|
||||
size="mini"
|
||||
type="primary"
|
||||
@click="onHandleQuery_2"
|
||||
>
|
||||
查询
|
||||
</el-button>
|
||||
<el-button
|
||||
size="mini"
|
||||
type="primary"
|
||||
@click="onHandleReset_2"
|
||||
>
|
||||
重置
|
||||
</el-button>
|
||||
<el-button
|
||||
size="mini"
|
||||
type="primary"
|
||||
@click="onHandleAddProject"
|
||||
>
|
||||
新增
|
||||
</el-button>
|
||||
</el-form-item>
|
||||
</el-form>
|
||||
|
||||
<el-table border :data="projectList_1">
|
||||
<el-table-column
|
||||
align="center"
|
||||
:key="column.prop"
|
||||
:prop="column.prop"
|
||||
:label="column.label"
|
||||
show-overflow-tooltip
|
||||
v-for="column in tableColumns_1"
|
||||
<el-button
|
||||
size="mini"
|
||||
type="warning"
|
||||
icon="el-icon-refresh"
|
||||
plain
|
||||
@click="onHandleReset"
|
||||
>
|
||||
<template slot-scope="scope">
|
||||
<!-- <img :src="scope.row.bast64" alt="" style="width: 100px; height: 100px;"> -->
|
||||
重置
|
||||
</el-button>
|
||||
<el-button
|
||||
size="mini"
|
||||
type="primary"
|
||||
icon="el-icon-plus"
|
||||
@click="onHandleAddProjectSafety"
|
||||
>
|
||||
新增
|
||||
</el-button>
|
||||
|
||||
<template v-if="column.prop === 'bast64'">
|
||||
<img
|
||||
alt=""
|
||||
style="width: 48px; height: 48px"
|
||||
:src="`data:image/jpeg;base64,${scope.row.bast64}`"
|
||||
/>
|
||||
</template>
|
||||
<template v-else>
|
||||
{{ scope.row[column.prop] }}
|
||||
</template>
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column label="操作" align="center" width="140">
|
||||
<template slot-scope="scope">
|
||||
<el-button
|
||||
type="primary"
|
||||
size="mini"
|
||||
style="padding: 6px 6px"
|
||||
@click="onHandleEditProject(scope.row)"
|
||||
>
|
||||
编辑
|
||||
</el-button>
|
||||
<el-button
|
||||
type="danger"
|
||||
size="mini"
|
||||
style="padding: 6px 6px"
|
||||
@click="onHandleDeleteProject(scope.row)"
|
||||
>
|
||||
删除
|
||||
</el-button>
|
||||
</template>
|
||||
</el-table-column>
|
||||
</el-table>
|
||||
</template>
|
||||
<el-button
|
||||
size="mini"
|
||||
type="warning"
|
||||
icon="el-icon-setting"
|
||||
@click="onHandleThresholdConfig"
|
||||
>
|
||||
阈值配置
|
||||
</el-button>
|
||||
</el-form-item>
|
||||
</el-form>
|
||||
|
||||
<el-table border :data="projectList">
|
||||
<el-table-column
|
||||
align="center"
|
||||
:key="column.prop"
|
||||
:prop="column.prop"
|
||||
:label="column.label"
|
||||
show-overflow-tooltip
|
||||
v-for="column in tableColumns"
|
||||
>
|
||||
<template slot-scope="scope">
|
||||
{{ scope.row[column.prop] }}
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column label="操作" align="center" width="160">
|
||||
<template slot-scope="scope">
|
||||
<el-button
|
||||
type="primary"
|
||||
size="mini"
|
||||
style="padding: 6px 6px"
|
||||
@click="onHandleEditProject_1(scope.row)"
|
||||
>
|
||||
编辑
|
||||
</el-button>
|
||||
<el-button
|
||||
type="danger"
|
||||
size="mini"
|
||||
style="padding: 6px 6px"
|
||||
@click="onHandleDeleteProject_1(scope.row)"
|
||||
>
|
||||
删除
|
||||
</el-button>
|
||||
</template>
|
||||
</el-table-column>
|
||||
</el-table>
|
||||
|
||||
<pagination
|
||||
:total="total"
|
||||
:page.sync="queryParams.pageNum"
|
||||
:limit.sync="queryParams.pageSize"
|
||||
@pagination="onHandleQuery"
|
||||
/>
|
||||
<el-dialog
|
||||
append-to-body
|
||||
width="80%"
|
||||
v-if="addAndEditDialogVisible"
|
||||
:visible.sync="addAndEditDialogVisible"
|
||||
:title="`${addAndEditDialogTitle}${safetyType}`"
|
||||
:title="addAndEditDialogTitle"
|
||||
>
|
||||
<AddAndEditFormOne
|
||||
v-if="safetyType === '风险一本账'"
|
||||
ref="addAndEditFormOneRef"
|
||||
:detailsId="detailsOneId"
|
||||
:editRow="editRow_1"
|
||||
/>
|
||||
<AddAndEditFormTwo
|
||||
v-if="safetyType === '视频风险分析'"
|
||||
ref="addAndEditFormTwoRef"
|
||||
:detailsId="detailsTwoId"
|
||||
:editRow="editRow_2"
|
||||
<AddAndEditForm
|
||||
ref="AddAndEditFormRef"
|
||||
:details-id="detailsOneId"
|
||||
:edit-row="editRow_1"
|
||||
/>
|
||||
|
||||
<div slot="footer" class="dialog-footer">
|
||||
<el-button @click="addAndEditDialogVisible = false">
|
||||
关闭
|
||||
|
|
@ -266,33 +122,99 @@
|
|||
|
||||
<el-dialog
|
||||
append-to-body
|
||||
width="40%"
|
||||
v-if="importDialogVisible"
|
||||
:visible.sync="importDialogVisible"
|
||||
title="数据导入"
|
||||
width="420px"
|
||||
v-if="thresholdDialogVisible"
|
||||
:visible.sync="thresholdDialogVisible"
|
||||
title="阈值配置"
|
||||
>
|
||||
<UploadFileFormData
|
||||
:limit="1"
|
||||
:file-size="50"
|
||||
:multiple="false"
|
||||
:file-type="['xls', 'xlsx']"
|
||||
uploadTip="请导入xls、xlsx格式文件"
|
||||
:file-list.sync="importFileList"
|
||||
/>
|
||||
<el-form
|
||||
:model="thresholdForm"
|
||||
:rules="thresholdRules"
|
||||
ref="thresholdFormRef"
|
||||
label-width="110px"
|
||||
>
|
||||
<el-form-item label="温度阈值" prop="temperatureRange">
|
||||
<div class="range-box">
|
||||
<el-input
|
||||
v-model="thresholdForm.temperatureMin"
|
||||
clearable
|
||||
placeholder="最低值"
|
||||
type="number"
|
||||
/>
|
||||
<span class="range-split">-</span>
|
||||
<el-input
|
||||
v-model="thresholdForm.temperatureMax"
|
||||
clearable
|
||||
placeholder="最高值"
|
||||
type="number"
|
||||
/>
|
||||
</div>
|
||||
</el-form-item>
|
||||
<el-form-item label="湿度阈值" prop="humidityRange">
|
||||
<div class="range-box">
|
||||
<el-input
|
||||
v-model="thresholdForm.humidityMin"
|
||||
clearable
|
||||
placeholder="最低值"
|
||||
type="number"
|
||||
/>
|
||||
<span class="range-split">-</span>
|
||||
<el-input
|
||||
v-model="thresholdForm.humidityMax"
|
||||
clearable
|
||||
placeholder="最高值"
|
||||
type="number"
|
||||
/>
|
||||
</div>
|
||||
</el-form-item>
|
||||
<el-form-item label="风速阈值" prop="windSpeedRange">
|
||||
<div class="range-box">
|
||||
<el-input
|
||||
v-model="thresholdForm.windSpeedMin"
|
||||
clearable
|
||||
placeholder="最低值"
|
||||
type="number"
|
||||
/>
|
||||
<span class="range-split">-</span>
|
||||
<el-input
|
||||
v-model="thresholdForm.windSpeedMax"
|
||||
clearable
|
||||
placeholder="最高值"
|
||||
type="number"
|
||||
/>
|
||||
</div>
|
||||
</el-form-item>
|
||||
<el-form-item label="空气质量阈值" prop="airQualityRange">
|
||||
<div class="range-box">
|
||||
<el-input
|
||||
v-model="thresholdForm.airQualityMin"
|
||||
clearable
|
||||
placeholder="最低值"
|
||||
type="number"
|
||||
/>
|
||||
<span class="range-split">-</span>
|
||||
<el-input
|
||||
v-model="thresholdForm.airQualityMax"
|
||||
clearable
|
||||
placeholder="最高值"
|
||||
type="number"
|
||||
/>
|
||||
</div>
|
||||
</el-form-item>
|
||||
</el-form>
|
||||
|
||||
<el-row class="dialog-footer-btn">
|
||||
<el-button size="mini" @click="onHandleCancelImport">
|
||||
<div slot="footer" class="dialog-footer">
|
||||
<el-button @click="thresholdDialogVisible = false">
|
||||
取消
|
||||
</el-button>
|
||||
<el-button
|
||||
size="mini"
|
||||
type="primary"
|
||||
v-loading.fullscreen.lock="loading"
|
||||
@click="onHandleConfirmImport"
|
||||
:loading="thresholdSubmitLoading"
|
||||
@click="onHandleThresholdSubmit"
|
||||
>
|
||||
确定
|
||||
</el-button>
|
||||
</el-row>
|
||||
</div>
|
||||
</el-dialog>
|
||||
</div>
|
||||
</template>
|
||||
|
|
@ -301,186 +223,163 @@
|
|||
import {
|
||||
getProjectSafetyAnalysisListAPI,
|
||||
deleteProjectSafetyAnalysisAPI,
|
||||
getVideoSafetyAnalysisListAPI,
|
||||
deleteVideoSafetyAnalysisAPI,
|
||||
downloadProjectTemplateAPI,
|
||||
importProjectSafetyAnalysisAPI,
|
||||
} from '@/api/dataAnalysis/projectSafety'
|
||||
getProjectSafetyThresholdListAPI,
|
||||
addProjectSafetyThresholdAPI,
|
||||
editProjectSafetyThresholdAPI,
|
||||
} from '@/api/dataManage/projectSafety'
|
||||
|
||||
import { downloadFile } from '@/utils/download'
|
||||
|
||||
import AddAndEditFormOne from './components/addAndEditFormOne.vue'
|
||||
import AddAndEditFormTwo from './components/addAndEditFormTwo.vue'
|
||||
import UploadFileFormData from '@/components/UploadFileFormData'
|
||||
import AddAndEditForm from './components/addAndEditForm.vue'
|
||||
|
||||
export default {
|
||||
name: 'ProjectQuality',
|
||||
components: {
|
||||
AddAndEditFormOne,
|
||||
AddAndEditFormTwo,
|
||||
UploadFileFormData,
|
||||
AddAndEditForm,
|
||||
},
|
||||
data() {
|
||||
return {
|
||||
total_1: 0,
|
||||
total_2: 0,
|
||||
total: 0,
|
||||
detailsOneId: '',
|
||||
detailsTwoId: '',
|
||||
editRow_1: {}, // 编辑风险一本账行
|
||||
editRow_2: {}, // 编辑视频风险分析行
|
||||
safetyType: '风险一本账',
|
||||
projectList: [], // 风险一本账列表
|
||||
projectList_1: [], // 视频风险分析列表
|
||||
importFileList: [], // 导入文件列表
|
||||
addAndEditDialogVisible: false,
|
||||
importDialogVisible: false,
|
||||
loading: false,
|
||||
addAndEditDialogTitle: '',
|
||||
tableColumns: [
|
||||
{
|
||||
label: '风险编号',
|
||||
prop: 'riskCode',
|
||||
},
|
||||
{
|
||||
label: '作业部位',
|
||||
prop: 'riskSite',
|
||||
},
|
||||
{
|
||||
label: '风险等级',
|
||||
prop: 'riskLevel',
|
||||
},
|
||||
{
|
||||
label: '预控措施',
|
||||
prop: 'controller',
|
||||
},
|
||||
{
|
||||
label: '风险控制关键因素',
|
||||
prop: 'riskController',
|
||||
},
|
||||
{
|
||||
label: '开始日期',
|
||||
prop: 'startTime',
|
||||
},
|
||||
{
|
||||
label: '是否销号',
|
||||
prop: 'isXh',
|
||||
},
|
||||
{ label: '工程名称', prop: 'projectName' },
|
||||
{ label: '作业计划编号', prop: 'jobPlanCode' },
|
||||
{ label: '作业地点', prop: 'jobSite' },
|
||||
{ label: '监测点编号', prop: 'monitorPointCode' },
|
||||
{ label: '监测点名称', prop: 'monitorPointName' },
|
||||
{ label: '温度', prop: 'temperature' },
|
||||
{ label: '湿度', prop: 'humidity' },
|
||||
{ label: '风速', prop: 'windSpeed' },
|
||||
{ label: '空气质量', prop: 'airQuality' },
|
||||
{ label: '是否存在隐患', prop: 'hiddenDanger' },
|
||||
{ label: '分析与改进', prop: 'analyzeImprove' },
|
||||
],
|
||||
tableColumns_1: [
|
||||
{
|
||||
label: '球机名称',
|
||||
prop: 'ballName',
|
||||
},
|
||||
{
|
||||
label: '创建时间',
|
||||
prop: 'createTime',
|
||||
},
|
||||
{
|
||||
label: '图片',
|
||||
prop: 'bast64',
|
||||
},
|
||||
{
|
||||
label: '名称',
|
||||
prop: 'name',
|
||||
},
|
||||
],
|
||||
queryParams_1: {
|
||||
|
||||
queryParams: {
|
||||
pageNum: 1,
|
||||
pageSize: 10,
|
||||
riskCode: '',
|
||||
riskSite: '',
|
||||
riskLevel: '',
|
||||
jobSite: '',
|
||||
monitorPointCode: '',
|
||||
},
|
||||
queryParams_2: {
|
||||
pageNum: 1,
|
||||
pageSize: 10,
|
||||
ballName: '',
|
||||
name: '',
|
||||
|
||||
// 阈值配置
|
||||
thresholdDialogVisible: false,
|
||||
thresholdSubmitLoading: false,
|
||||
thresholdId: '',
|
||||
thresholdForm: {
|
||||
temperatureMin: '',
|
||||
temperatureMax: '',
|
||||
humidityMin: '',
|
||||
humidityMax: '',
|
||||
windSpeedMin: '',
|
||||
windSpeedMax: '',
|
||||
airQualityMin: '',
|
||||
airQualityMax: '',
|
||||
},
|
||||
thresholdRules: {
|
||||
temperatureRange: [
|
||||
{
|
||||
validator: this.validateRange(
|
||||
'temperatureMin',
|
||||
'temperatureMax',
|
||||
'温度阈值',
|
||||
),
|
||||
trigger: 'blur',
|
||||
},
|
||||
],
|
||||
humidityRange: [
|
||||
{
|
||||
validator: this.validateRange(
|
||||
'humidityMin',
|
||||
'humidityMax',
|
||||
'湿度阈值',
|
||||
),
|
||||
trigger: 'blur',
|
||||
},
|
||||
],
|
||||
windSpeedRange: [
|
||||
{
|
||||
validator: this.validateRange(
|
||||
'windSpeedMin',
|
||||
'windSpeedMax',
|
||||
'风速阈值',
|
||||
),
|
||||
trigger: 'blur',
|
||||
},
|
||||
],
|
||||
airQualityRange: [
|
||||
{
|
||||
validator: this.validateRange(
|
||||
'airQualityMin',
|
||||
'airQualityMax',
|
||||
'空气质量阈值',
|
||||
),
|
||||
trigger: 'blur',
|
||||
},
|
||||
],
|
||||
},
|
||||
}
|
||||
},
|
||||
|
||||
created() {
|
||||
this.getProjectSafetyAnalysisList()
|
||||
this.getVideoSafetyAnalysisList()
|
||||
},
|
||||
|
||||
methods: {
|
||||
validateRange(minKey, maxKey, label) {
|
||||
return (rule, value, callback) => {
|
||||
const min = this.thresholdForm[minKey]
|
||||
const max = this.thresholdForm[maxKey]
|
||||
if (min === '' || max === '') {
|
||||
callback(new Error(`${label}的最小值和最大值不能为空`))
|
||||
return
|
||||
}
|
||||
const minNum = Number(min)
|
||||
const maxNum = Number(max)
|
||||
if (Number.isNaN(minNum) || Number.isNaN(maxNum)) {
|
||||
callback(new Error(`${label}仅支持数字`))
|
||||
return
|
||||
}
|
||||
if (minNum > maxNum) {
|
||||
callback(new Error(`${label}的最小值不能大于最大值`))
|
||||
return
|
||||
}
|
||||
callback()
|
||||
}
|
||||
},
|
||||
|
||||
onHandleQuery() {
|
||||
this.getProjectSafetyAnalysisList()
|
||||
},
|
||||
onHandleQuery_2() {
|
||||
this.getVideoSafetyAnalysisList()
|
||||
},
|
||||
onHandleReset_2() {
|
||||
this.queryParams_2 = {
|
||||
pageNum: 1,
|
||||
pageSize: 10,
|
||||
ballName: '',
|
||||
name: '',
|
||||
}
|
||||
this.getVideoSafetyAnalysisList()
|
||||
},
|
||||
onHandleAddProject() {
|
||||
onHandleAddProjectSafety() {
|
||||
this.addAndEditDialogVisible = true
|
||||
this.addAndEditDialogTitle = '新增'
|
||||
this.detailsOneId = ''
|
||||
this.editRow_1 = {}
|
||||
},
|
||||
|
||||
onHandleReset() {
|
||||
this.queryParams_1 = {
|
||||
this.queryParams = {
|
||||
pageNum: 1,
|
||||
pageSize: 10,
|
||||
riskCode: '',
|
||||
riskSite: '',
|
||||
riskLevel: '',
|
||||
jobSite: '',
|
||||
monitorPointCode: '',
|
||||
}
|
||||
this.getProjectSafetyAnalysisList()
|
||||
// this.getProjectSafetyAnalysisList()
|
||||
},
|
||||
// 获取风险一本账列表
|
||||
async getProjectSafetyAnalysisList() {
|
||||
const res = await getProjectSafetyAnalysisListAPI(
|
||||
this.queryParams_1,
|
||||
)
|
||||
const res = await getProjectSafetyAnalysisListAPI(this.queryParams)
|
||||
|
||||
this.projectList = res.rows
|
||||
this.total_1 = res.total
|
||||
this.total = res.total
|
||||
},
|
||||
|
||||
// 获取视频风险分析列表
|
||||
async getVideoSafetyAnalysisList() {
|
||||
const res = await getVideoSafetyAnalysisListAPI(this.queryParams_2)
|
||||
this.projectList_1 = res.rows
|
||||
this.total_2 = res.total
|
||||
},
|
||||
|
||||
// 新增工程质量
|
||||
addProjectQuality() {},
|
||||
|
||||
// 编辑视频风险分析行
|
||||
onHandleEditProject(row) {
|
||||
this.editRow_2 = row
|
||||
this.detailsTwoId = row.id
|
||||
this.addAndEditDialogVisible = true
|
||||
this.addAndEditDialogTitle = '编辑'
|
||||
},
|
||||
|
||||
// 删除视频风险分析行
|
||||
onHandleDeleteProject(row) {
|
||||
this.$confirm('确定删除该视频风险分析行吗?', '提示', {
|
||||
confirmButtonText: '确定',
|
||||
cancelButtonText: '取消',
|
||||
}).then(async () => {
|
||||
const res = await deleteVideoSafetyAnalysisAPI({ id: row.id })
|
||||
if (res.code === 200) {
|
||||
this.$message.success('删除成功')
|
||||
this.getVideoSafetyAnalysisList()
|
||||
} else {
|
||||
this.$message.error('删除失败')
|
||||
}
|
||||
})
|
||||
},
|
||||
|
||||
// 编辑风险一本账行
|
||||
// 编辑风险
|
||||
onHandleEditProject_1(row) {
|
||||
this.editRow_1 = row
|
||||
this.detailsOneId = row.id
|
||||
|
|
@ -488,9 +387,9 @@ export default {
|
|||
this.addAndEditDialogTitle = '编辑'
|
||||
},
|
||||
|
||||
// 删除风险一本账行
|
||||
// 删除风险
|
||||
onHandleDeleteProject_1(row) {
|
||||
this.$confirm('确定删除该风险一本账行吗?', '提示', {
|
||||
this.$confirm('确定删除该项目安全吗?', '提示', {
|
||||
confirmButtonText: '确定',
|
||||
cancelButtonText: '取消',
|
||||
}).then(async () => {
|
||||
|
|
@ -504,115 +403,71 @@ export default {
|
|||
})
|
||||
},
|
||||
|
||||
indexToRiskLevel(index) {
|
||||
switch (index) {
|
||||
case '1':
|
||||
return '一级风险'
|
||||
case '2':
|
||||
return '二级风险'
|
||||
case '3':
|
||||
return '三级风险'
|
||||
case '4':
|
||||
return '四级风险'
|
||||
case '5':
|
||||
return '五级风险'
|
||||
default:
|
||||
return ''
|
||||
}
|
||||
},
|
||||
|
||||
// 提交工程质量
|
||||
async onHandleSubmit() {
|
||||
if (this.safetyType === '风险一本账') {
|
||||
const res = await this.$refs.addAndEditFormOneRef.submitForm()
|
||||
if (res) {
|
||||
this.$message.success(
|
||||
this.addAndEditDialogTitle === '新增'
|
||||
? '新增成功'
|
||||
: '编辑成功',
|
||||
)
|
||||
this.getProjectSafetyAnalysisList()
|
||||
this.addAndEditDialogVisible = false
|
||||
} else {
|
||||
this.$message.error('提交失败')
|
||||
}
|
||||
} else {
|
||||
const res = await this.$refs.addAndEditFormTwoRef.submitForm()
|
||||
if (res) {
|
||||
this.$message.success(
|
||||
this.addAndEditDialogTitle === '新增'
|
||||
? '新增成功'
|
||||
: '编辑成功',
|
||||
)
|
||||
this.getVideoSafetyAnalysisList()
|
||||
this.addAndEditDialogVisible = false
|
||||
} else {
|
||||
this.$message.error('提交失败')
|
||||
}
|
||||
}
|
||||
},
|
||||
|
||||
// 导入
|
||||
onHandleImport() {
|
||||
this.importDialogVisible = true
|
||||
this.importFileList = []
|
||||
},
|
||||
|
||||
// 下载模板
|
||||
onHandleDownloadTemplate() {
|
||||
downloadProjectTemplateAPI().then((res) => {
|
||||
downloadFile({
|
||||
fileName: '模板.xlsx',
|
||||
fileData: res,
|
||||
fileType: 'application/vnd.ms-excel;charset=utf-8',
|
||||
})
|
||||
})
|
||||
},
|
||||
|
||||
// 取消上传
|
||||
onHandleCancelImport() {
|
||||
this.importFileList = []
|
||||
this.dialogConfig.outerVisible = false
|
||||
},
|
||||
|
||||
// 确定上传
|
||||
async onHandleConfirmImport() {
|
||||
if (this.importFileList.length > 0) {
|
||||
const formData = new FormData()
|
||||
// 增加全局loading
|
||||
this.loading = true
|
||||
formData.append('file', this.importFileList[0].raw)
|
||||
const res = await importProjectSafetyAnalysisAPI(formData)
|
||||
|
||||
this.loading = false
|
||||
|
||||
if (res.code === 200) {
|
||||
this.$message.success('导入成功')
|
||||
this.importFileList = []
|
||||
this.importDialogVisible = false
|
||||
this.getProjectSafetyAnalysisList()
|
||||
} else {
|
||||
this.$message.error(res.msg)
|
||||
}
|
||||
} else {
|
||||
this.$confirm(
|
||||
'当前未选择文件,确定后将关闭上传页面?',
|
||||
'温馨提示',
|
||||
{
|
||||
confirmButtonText: '确定',
|
||||
cancelButtonText: '取消',
|
||||
type: 'warning',
|
||||
},
|
||||
const res = await this.$refs.AddAndEditFormRef.submitForm()
|
||||
if (res) {
|
||||
this.$message.success(
|
||||
this.addAndEditDialogTitle === '新增'
|
||||
? '新增成功'
|
||||
: '编辑成功',
|
||||
)
|
||||
.then(async () => {
|
||||
this.importFileList = []
|
||||
this.importDialogVisible = false
|
||||
})
|
||||
.catch(() => {
|
||||
// console.log('取消')
|
||||
})
|
||||
this.getProjectSafetyAnalysisList()
|
||||
this.addAndEditDialogVisible = false
|
||||
} else {
|
||||
this.$message.error('提交失败')
|
||||
}
|
||||
},
|
||||
|
||||
// 阈值配置:打开弹窗并加载数据
|
||||
async onHandleThresholdConfig() {
|
||||
this.thresholdDialogVisible = true
|
||||
await this.loadThreshold()
|
||||
},
|
||||
|
||||
async loadThreshold() {
|
||||
const res = await getProjectSafetyThresholdListAPI({
|
||||
pageNum: 1,
|
||||
pageSize: 1,
|
||||
})
|
||||
const record =
|
||||
res?.data?.[0] ||
|
||||
res?.rows?.[0] ||
|
||||
(Array.isArray(res) ? res[0] : null)
|
||||
if (record) {
|
||||
this.thresholdId = record.id || ''
|
||||
this.thresholdForm.temperatureMin = record.temperatureMin || ''
|
||||
this.thresholdForm.temperatureMax = record.temperatureMax || ''
|
||||
this.thresholdForm.humidityMin = record.humidityMin || ''
|
||||
this.thresholdForm.humidityMax = record.humidityMax || ''
|
||||
this.thresholdForm.windSpeedMin = record.windSpeedMin || ''
|
||||
this.thresholdForm.windSpeedMax = record.windSpeedMax || ''
|
||||
this.thresholdForm.airQualityMin = record.airQualityMin || ''
|
||||
this.thresholdForm.airQualityMax = record.airQualityMax || ''
|
||||
}
|
||||
},
|
||||
|
||||
async onHandleThresholdSubmit() {
|
||||
this.$refs.thresholdFormRef.validate(async (valid) => {
|
||||
if (!valid) return
|
||||
this.thresholdSubmitLoading = true
|
||||
const payload = { ...this.thresholdForm }
|
||||
if (this.thresholdId) {
|
||||
payload.id = this.thresholdId
|
||||
}
|
||||
const API = this.thresholdId
|
||||
? editProjectSafetyThresholdAPI
|
||||
: addProjectSafetyThresholdAPI
|
||||
const res = await API(payload)
|
||||
this.thresholdSubmitLoading = false
|
||||
if (res.code === 200) {
|
||||
this.$message.success('阈值配置保存成功')
|
||||
this.thresholdDialogVisible = false
|
||||
} else {
|
||||
this.$message.error(res.msg || '保存失败')
|
||||
}
|
||||
})
|
||||
},
|
||||
},
|
||||
}
|
||||
</script>
|
||||
|
|
@ -641,4 +496,16 @@ export default {
|
|||
text-align: right;
|
||||
margin-top: 20px;
|
||||
}
|
||||
|
||||
.range-box {
|
||||
display: flex;
|
||||
align-items: center;
|
||||
gap: 8px;
|
||||
}
|
||||
|
||||
.range-split {
|
||||
width: 12px;
|
||||
text-align: center;
|
||||
color: #666;
|
||||
}
|
||||
</style>
|
||||
|
|
|
|||
Loading…
Reference in New Issue