zhgdyun/src/views/projectFront/safeManage/v2/checkStandingBook.vue
2024-03-05 17:40:50 +08:00

1895 lines
62 KiB
Vue
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

<template>
<!-- 检查台账 -->
<div class="fullHeight">
<el-page-header
v-if="searchForm.itemId"
class="backText"
@back="goBack"
content="整改单"
></el-page-header>
<div class="statictisBox" v-else>
<p>
<!-- 检查总数 -->
<span class="label">{{
$t('message.safeMangeCheck.checked') +
$t('message.safeMangeCheck.total') +
''
}}</span>
<span class="value">{{ statictisData.totalNum }}</span>
</p>
<p>
<!-- 已闭合数 -->
<span class="label">{{
$t('message.safeMangeCheck.alreadyClose') +
$t('message.safeMangeCheck.num') +
''
}}</span>
<span class="value">{{ statictisData.closeNum }}</span>
</p>
<p>
<!-- 待整改数 -->
<span class="label">{{
$t('message.safeMangeCheck.awaitChange') +
$t('message.safeMangeCheck.num') +
''
}}</span>
<span class="value">{{ statictisData.rectificationNum }}</span>
</p>
<p>
<!-- 待复查数 -->
<span class="label">{{
$t('message.safeMangeCheck.awaitExamine') +
$t('message.safeMangeCheck.num') +
''
}}</span>
<span class="value">{{ statictisData.reviewNum }}</span>
</p>
<p>
<!-- 超期未闭合数 -->
<span class="label">{{
$t('message.safeMangeCheck.deleyNotClose') +
$t('message.safeMangeCheck.num') +
''
}}</span>
<span class="value">{{ statictisData.overdueNotCloseNum }}</span>
</p>
<p>
<!-- 整改率 -->
<span class="label">{{
$t('message.safeMangeCheck.changeRate') + ''
}}</span>
<span class="value">{{ statictisData.completeRatio }}%</span>
</p>
<p>
<!-- 闭合率 -->
<span class="label">{{
$t('message.safeMangeCheck.closeRate') + ''
}}</span>
<span class="value">{{ statictisData.closeRatio }}%</span>
</p>
</div>
<div class="filterBox">
<!-- 请选择检查结果 -->
<el-select
v-model="searchForm.status"
:placeholder="
$t('message.safeMangeCheck.pleaseChoose') +
$t('message.safeMangeCheck.checked') +
$t('message.safeMangeCheck.result')
"
size="medium"
>
<!-- 全部 -->
<el-option :label="$t('message.safeMangeCheck.all')" value="">
</el-option>
<el-option
v-for="(item, index) in statusArr"
:key="item"
:label="item"
:value="index + 1"
>
</el-option>
</el-select>
<!-- 开始和结束时间 -->
<el-date-picker
size="medium"
style="margin: 0 15px; width: 250px"
v-model="daterange"
type="daterange"
range-separator="-"
value-format="yyyy-MM-dd"
:start-placeholder="$t('message.safeManage.safeRocordList.start')"
:end-placeholder="$t('message.safeManage.safeRocordList.end')"
@change="changeDate2"
>
</el-date-picker>
<!-- 查询 新增 导出 刷新 -->
<el-button type="primary" size="medium" @click="loadList(1)">{{
$t('message.safeMangeCheck.query')
}}</el-button>
<el-button type="primary" size="medium" @click="addData">{{
$t('message.safeMangeCheck.add')
}}</el-button>
<el-button type="primary" size="medium" @click="exportData">{{
$t('message.safeMangeCheck.out')
}}</el-button>
<el-button type="warning" plain size="medium" @click="refreshFn">{{
$t('message.safeMangeCheck.fresh')
}}</el-button>
</div>
<div class="table_wrap whiteBlock">
<el-table
class="tables"
:data="recordList"
@row-click="showDetailFn"
height="680px"
>
<!-- 检查结果 -->
<el-table-column
width="120"
prop="id"
:label="
$t('message.safeMangeCheck.checked') +
$t('message.safeMangeCheck.result')
"
>
<!-- 超期 -->
<template slot-scope="scope">
<div class="tableBtns">
<span class="mr10">{{
scope.row.status ? statusArr[scope.row.status - 1] : ''
}}</span>
<el-tag
type="danger"
effect="dark"
size="mini"
v-if="
scope.row.overdueType &&
scope.row.status != 1 &&
!(scope.row.status == 4 && scope.row.overdueCloseType == 0)
"
>{{ $t('message.safeMangeCheck.delay') }}</el-tag
>
</div>
</template>
</el-table-column>
<!-- 检查人 -->
<el-table-column
width="300"
align="center"
:label="
$t('message.safeMangeCheck.checked') +
$t('message.safeMangeCheck.people')
"
>
<template slot-scope="scope">
<p>{{ scope.row.createUserName }}</p>
<!-- <p>{{ scope.row.createEnterpriseName }}</p> -->
<p class="table_bottom_txt">{{ scope.row.inspectTime }}</p>
</template>
</el-table-column>
<!-- 隐患信息 -->
<el-table-column
width="400"
align="center"
:label="
$t('message.safeMangeCheck.hiddenDanger') +
$t('message.safeMangeCheck.info')
"
>
<!-- 该区域排查无隐患 -->
<template slot-scope="scope">
<p v-if="scope.row.status != 1">
<el-tag
class="mr10"
:type="scope.row.faultLevel == 1 ? 'primary' : 'danger'"
effect="dark"
size="mini"
>{{
scope.row.faultLevel == 1
? $t('message.safeMangeCheck.common')
: $t('message.safeMangeCheck.great')
}}</el-tag
>{{ scope.row.checkContent }}
</p>
<p v-else>{{ $t('message.safeMangeCheck.areaHiddenDanger') }}</p>
<p class="table_bottom_txt">
<span
><i class="el-icon-picture"></i
>{{ parseImage2(scope.row.imageUrl).length }}</span
>
<span
><i class="el-icon-location-information"></i
>{{ scope.row.dutyRegion }}</span
>
<el-tag
class="hiddenDangerLevel"
type="info"
effect="dark"
size="mini"
v-if="scope.row.status != 1"
>{{ scope.row.hiddenDangerLevel }}</el-tag
>
</p>
</template>
</el-table-column>
<!-- 整改单位 -->
<el-table-column
prop="enterpriseName"
align="center"
:label="$t('message.safeMangeCheck.changeCompany')"
></el-table-column>
<!-- 整改人 -->
<el-table-column
width="200"
prop="changeUserName"
align="center"
:label="$t('message.safeMangeCheck.changePeople')"
></el-table-column>
<!-- 复查人 -->
<el-table-column
width="200"
prop="reviewUserName"
align="center"
:label="$t('message.safeMangeCheck.examinePeople')"
></el-table-column>
<!-- 检查类型 -->
<el-table-column
width="200"
prop="inspectTypeName"
align="center"
:label="
$t('message.safeMangeCheck.checked') +
$t('message.safeMangeCheck.type')
"
></el-table-column>
<!-- 操作 -->
<el-table-column
width="80"
prop="id"
align="center"
:label="$t('message.safeMangeCheck.operate')"
v-if="COMPANY != 'nanchang'"
>
<!-- 删除 -->
<template slot-scope="scope">
<div class="tableBtns">
<!-- <div @click="detailsPoint(scope.row)" class="operationText last">
<i
class="el-icon-tickets"
style="color: #8dacfa; font-size: 16px; margin-right: 2px"
></i>
<span>详情</span>
</div> -->
<div
@click.stop="deleteTaskFn(scope.row)"
class="operationText redText last"
>
<i
class="el-icon-delete"
style="font-size: 16px; margin-right: 2px"
></i>
<span>{{ $t('message.safeMangeCheck.delete') }}</span>
</div>
</div>
</template>
</el-table-column>
</el-table>
<el-pagination
class="pagerBox"
background
@size-change="handleSizeChange"
@current-change="handleCurrentChange"
:current-page="searchForm.pageNo"
:page-sizes="$store.state.PAGESIZRS"
:page-size="searchForm.pageSize"
layout="total, sizes, prev, pager, next"
:total="Number(pageTotal)"
></el-pagination>
</div>
<!-- 新增任务弹窗 -->
<!-- 查看详情 -->
<el-dialog
:modal-append-to-body="false"
:title="
$t('message.safeMangeCheck.dialog.look') +
$t('message.safeMangeCheck.dialog.detail')
"
:visible.sync="dialogVisible"
width="867px"
:close-on-click-modal="false"
>
<div style="height: 600px">
<vue-scroll>
<div style="width: 800px">
<!-- 隐患记录 超期整改 -->
<el-divider content-position="left">{{
$t('message.safeMangeCheck.hiddenDanger') +
$t('message.safeMangeCheck.dialog.records')
}}</el-divider>
<el-tag
type="danger"
effect="dark"
size="mini"
v-if="
detailData.overdueType &&
detailData.status != 1 &&
!(detailData.status == 4 && detailData.overdueCloseType == 0)
"
style="
float: right;
margin-top: -35px;
z-index: 2;
position: relative;
"
>{{
$t('message.safeMangeCheck.delay') +
$t('message.safeMangeCheck.dialog.change')
}}</el-tag
>
<!-- <div class="topDataBox">
<p><span>检查结果:{{detailData.status?statusArr[detailData.status-1]:''}}</span><span>责任区域222</span></p>
<p><span>检查人:{{detailData.createUserName}}</span><span>检查时间:{{detailData.createTime}}</span></p>
<el-tag type="danger" effect="dark" size="mini" v-if="detailData.overdueType">超期整改</el-tag>
</div> -->
<div class="detailBox">
<el-row :gutter="20">
<el-col :span="12">
<!-- 检查结果 -->
<div class="grid-content">
<span class="label">{{
$t('message.safeMangeCheck.checked') +
$t('message.safeMangeCheck.result') +
''
}}</span>
<span class="value">{{
detailData.status ? statusArr[detailData.status - 1] : ''
}}</span>
</div>
</el-col>
<el-col :span="12">
<div class="grid-content">
<!-- 详细位置 -->
<span class="label">详细位置:</span>
<span class="value">{{ detailData.dutyRegion }}</span>
</div>
</el-col>
</el-row>
<el-row :gutter="20">
<el-col :span="12">
<div class="grid-content">
<span class="label">{{
$t('message.safeMangeCheck.checked') +
$t('message.safeMangeCheck.people') +
''
}}</span>
<span class="value">{{ detailData.createUserName }}</span>
</div>
</el-col>
<el-col :span="12">
<div class="grid-content">
<span class="label">{{
$t('message.safeMangeCheck.checked') +
$t('message.safeMangeCheck.time') +
''
}}</span>
<span class="value">{{ detailData.inspectTime }}</span>
</div>
</el-col>
</el-row>
<div>
<el-row v-if="detailData.status != 1" :gutter="20">
<el-col :span="12">
<!-- 隐患类别 -->
<div class="grid-content">
<span class="label">{{
$t('message.safeMangeCheck.hiddenDanger') +
$t('message.safeMangeCheck.level') +
''
}}</span>
<span class="value"
>{{ detailData.checkItem }}/{{
detailData.checkSubitem
}}</span
>
</div>
</el-col>
<el-col :span="12">
<!-- 隐患明细 -->
<div class="grid-content">
<span class="label">{{
$t('message.safeMangeCheck.hiddenDanger') +
$t('message.safeMangeCheck.list') +
''
}}</span>
<span class="value">{{ detailData.checkContent }}</span>
</div>
</el-col>
</el-row>
<el-row :gutter="20">
<!-- 隐患级别 -->
<el-col v-if="detailData.status != 1" :span="12">
<div class="grid-content">
<span class="label">{{
$t('message.safeMangeCheck.hiddenDanger') +
$t('message.safeMangeCheck.level2') +
''
}}</span>
<span class="value">{{
detailData.hiddenDangerLevel
}}</span>
</div>
</el-col>
<el-col :span="12">
<!-- 补充说明 -->
<div class="grid-content">
<span class="label">{{
$t('message.safeMangeCheck.dialog.allInstruction') +
''
}}</span>
<span class="value">{{ detailData.dangerDesc }}</span>
</div>
</el-col>
</el-row>
<el-row v-if="detailData.status != 1" :gutter="20">
<el-col :span="12">
<!-- 整改单位 -->
<div class="grid-content">
<span class="label">{{
$t('message.safeMangeCheck.changeCompany') + ''
}}</span>
<span class="value">{{ detailData.enterpriseName }}</span>
</div>
</el-col>
<el-col :span="12">
<!-- 整改人 -->
<div class="grid-content">
<span class="label">{{
$t('message.safeMangeCheck.changePeople') + ''
}}</span>
<span class="value">{{ detailData.changeUserName }}</span>
</div>
</el-col>
</el-row>
<el-row v-if="detailData.status != 1" :gutter="20">
<el-col :span="12">
<!-- 整改时限 -->
<div class="grid-content">
<span class="label">{{
$t('message.safeMangeCheck.dialog.change') +
$t('message.safeMangeCheck.dialog.timeLimit') +
''
}}</span>
<span class="value">{{
detailData.changeLimitTime
}}</span>
</div>
</el-col>
<el-col :span="12">
<!-- 事故隐患 -->
<div class="grid-content">
<span class="label">{{
$t('message.safeMangeCheck.dialog.event') +
$t('message.safeMangeCheck.hiddenDanger') +
''
}}</span>
<span class="value">{{
detailData.faultLevel == 1
? $t('message.safeMangeCheck.common')
: $t('message.safeMangeCheck.great')
}}</span>
</div>
</el-col>
</el-row>
<el-row v-if="detailData.status != 1" :gutter="20">
<el-col :span="12">
<!-- 整改要求 -->
<div class="grid-content">
<span class="label">{{
$t('message.safeMangeCheck.dialog.change') +
$t('message.safeMangeCheck.dialog.ask') +
''
}}</span>
<span class="value">{{ detailData.rectifyRequire }}</span>
</div>
</el-col>
<el-col :span="12">
<!-- 事故隐患 -->
<div class="grid-content">
<span class="label">责任区域:</span>
<span class="value">{{ detailData.hiddenDangerInspectRegionName }}</span>
</div>
</el-col>
</el-row>
</div>
<el-row :gutter="20">
<el-col :span="24">
<div class="grid-content">
<!-- 相关照片 -->
<span class="label">{{
$t('message.safeMangeCheck.dialog.about') +
$t('message.safeMangeCheck.dialog.photo') +
''
}}</span>
<span class="value">
<el-image
v-for="(item, index) in parseImage2(
detailData.imageUrl
)"
:key="index"
style="width: 100px; height: 100px; margin-right: 10px"
:src="item"
:preview-src-list="parseImage2(detailData.imageUrl)"
>
</el-image>
</span>
</div>
</el-col>
</el-row>
</div>
<!-- 整改&复查记录 -->
<el-divider
content-position="left"
v-if="rectifyRecordList.length > 0"
>{{
$t('message.safeMangeCheck.dialog.change') +
'&' +
$t('message.safeMangeCheck.dialog.examin') +
$t('message.safeMangeCheck.dialog.records')
}}</el-divider
>
<el-timeline class="detailBox" :reverse="true">
<el-timeline-item
:timestamp="item.createTime"
placement="top"
v-for="(item, index) in rectifyRecordList"
:key="index"
>
<el-card>
<!-- 整改人 复查人 -->
<p class="grid-content">
<span class="label"
>{{
item.type == 1
? $t('message.safeMangeCheck.changePeople')
: $t('message.safeMangeCheck.examinePeople')
}}</span
><span class="value">{{ item.createUserName }}</span>
</p>
<!-- 整改状态 -->
<p class="grid-content" v-if="item.type == 1">
<span class="label">{{
$t('message.safeMangeCheck.dialog.change') +
$t('message.safeMangeCheck.status') +
''
}}</span
><span class="value">{{
item.status == 2
? $t('message.safeMangeCheck.alreadyChange')
: $t('message.safeMangeCheck.unChange')
}}</span>
</p>
<!-- 复查状态 -->
<p class="grid-content" v-else>
<span class="label">{{
$t('message.safeMangeCheck.dialog.examin') +
$t('message.safeMangeCheck.status') +
''
}}</span
><span class="value">{{
item.status == 2
? $t('message.safeMangeCheck.upToStandard')
: $t('message.safeMangeCheck.not') +
$t('message.safeMangeCheck.upToStandard')
}}</span>
</p>
<!-- 相关说明 -->
<p class="grid-content">
<span class="label">{{
$t('message.safeMangeCheck.dialog.about') +
$t('message.safeMangeCheck.dialog.explain') +
''
}}</span
><span class="value">{{ item.additionalRemarks }}</span>
</p>
<!-- 相关照片 -->
<div class="grid-content" v-if="item.type == 1">
<span class="label">{{
$t('message.safeMangeCheck.dialog.about') +
$t('message.safeMangeCheck.dialog.photo') +
''
}}</span>
<span class="value">
<el-image
v-for="(url, index) in parseImage2(item.fileUrl)"
:key="index"
style="width: 50px; height: 50px; margin-right: 10px"
:src="url"
:preview-src-list="parseImage2(item.fileUrl)"
>
</el-image>
</span>
</div>
</el-card>
</el-timeline-item>
</el-timeline>
<!-- 整改回复 -->
<el-divider
content-position="left"
v-if="
detailData.changeUser == $store.state.userInfo.userId &&
detailData.status == 2
"
>{{
$t('message.safeMangeCheck.dialog.change') +
$t('message.safeMangeCheck.dialog.anser') +
''
}}</el-divider
>
<!-- 复查回复 -->
<el-divider
content-position="left"
v-if="
detailData.reviewId == $store.state.userInfo.userId &&
detailData.status == 3
"
>{{
$t('message.safeMangeCheck.dialog.examin') +
$t('message.safeMangeCheck.dialog.anser') +
''
}}</el-divider
>
<!-- 整改内容 -->
<el-form
:model="replyData"
ref="formData"
label-width="120px"
v-if="detailData.status == 2 || detailData.status == 3"
>
<el-form-item
:label="
$t('message.safeMangeCheck.dialog.change') +
$t('message.safeMangeCheck.dialog.content')
"
v-if="
detailData.changeUser == $store.state.userInfo.userId &&
detailData.status == 2
"
prop="inspectTypeId"
>
<!-- 请输入整改内容 -->
<el-input
type="textarea"
:rows="3"
:placeholder="
$t('message.safeManage.placeholder') +
$t('message.safeMangeCheck.dialog.change') +
$t('message.safeMangeCheck.dialog.content')
"
v-model="replyData.additionalRemarks"
>
</el-input>
</el-form-item>
<!-- 复查情况 -->
<el-form-item
:label="
$t('message.safeMangeCheck.dialog.examin') +
$t('message.safeMangeCheck.dialog.condition')
"
v-if="
detailData.reviewId == $store.state.userInfo.userId &&
detailData.status == 3
"
prop="inspectTypeId"
>
<!-- 请输入整改内容 -->
<el-input
type="textarea"
:rows="3"
:placeholder="
$t('message.safeManage.placeholder') +
$t('message.safeMangeCheck.dialog.change') +
$t('message.safeMangeCheck.dialog.content')
"
v-model="replyData.additionalRemarks"
>
</el-input>
</el-form-item>
<!-- 照片 -->
<el-form-item
:label="$t('message.safeMangeCheck.dialog.photo')"
v-if="
detailData.changeUser == $store.state.userInfo.userId &&
detailData.status == 2
"
>
<el-upload
:action="uploadUrl"
list-type="picture-card"
name="files"
:on-remove="
(file, fileList) => handleRemove(file, fileList, 1)
"
:on-success="handleSuccess2"
:on-preview="(file) => handlePreview(file)"
:limit="5"
:file-list="replyData.fileList"
ref="upload"
>
<i class="el-icon-plus"></i>
</el-upload>
</el-form-item>
</el-form>
</div>
</vue-scroll>
</div>
<div class="btn-box">
<el-button type="primary" @click="submitForm2">
{{
detailData.reviewId == $store.state.userInfo.userId &&
detailData.status == 3
? $t('message.safeMangeCheck.dialog.pass')
: $t('message.safeMangeCheck.dialog.confirm')
}}</el-button
>
<el-button
v-if="
detailData.reviewId == $store.state.userInfo.userId &&
detailData.status == 3
"
type="danger"
@click="closeDialog2"
>{{ $t('message.safeMangeCheck.dialog.back') }}</el-button
>
<el-button v-else @click="closeDialog2">{{
$t('message.safeMangeCheck.dialog.cancel')
}}</el-button>
</div>
<!-- <el-divider content-position="left">复查记录</el-divider> -->
</el-dialog>
<!-- 新增检查记录弹窗 -->
<el-dialog
:modal-append-to-body="false"
:title="$t('message.safeMangeCheck.add')"
:visible.sync="dialogVisible2"
width="867px"
@close="close"
:close-on-click-modal="false"
>
<vue-scroll style="height: 640px">
<div class="dialog-content">
<el-form
:model="formData"
:rules="rules"
ref="formData"
label-width="120px"
>
<!-- 检查类型 -->
<el-form-item
:label="
$t('message.safeMangeCheck.checked') +
$t('message.safeMangeCheck.type')
"
prop="inspectTypeId"
required
>
<el-select
v-model="formData.inspectTypeId"
:placeholder="$t('message.safeMangeCheck.pleaseChoose')"
>
<el-option
v-for="item in inspectOptions"
:key="item.id"
:label="item.inspectTypeName"
:value="item.id"
>
</el-option>
</el-select>
</el-form-item>
<!-- 是否需要整改 -->
<el-form-item
:label="$t('message.safeMangeCheck.dialog.yesOrNoNeedChange')"
prop="status"
required
>
<el-radio-group v-model="formData.status">
<!-- 无需整改 -->
<el-radio :label="2">是</el-radio>
<!-- 待整改 -->
<el-radio :label="1">无需整改</el-radio>
</el-radio-group>
</el-form-item>
<!-- 隐患类型 -->
<el-form-item
v-if="formData.status == 2"
:label="
$t('message.safeMangeCheck.hiddenDanger') +
$t('message.safeMangeCheck.type')
"
prop="checkItem"
required
>
<el-select
v-model="formData.checkItem"
@change="checkOptions"
:placeholder="$t('message.safeMangeCheck.pleaseChoose')"
>
<el-option
v-for="item in inspectOptions2"
:key="item.id"
:label="item.hiddenDangerName"
:value="item.id"
>
</el-option>
</el-select>
</el-form-item>
<!-- 检查项目 -->
<el-form-item
v-if="formData.status == 2"
:label="
$t('message.safeMangeCheck.checked') +
$t('message.safeMangeCheck.project')
"
prop="checkSubitem"
required
>
<!-- <el-select v-model="formData.checkSubitem" placeholder="请选择">
<el-option
v-for="item in inspectOptions3"
:key="item.id"
:label="item.hiddenDangerName"
:value="item.id">
</el-option>
</el-select> -->
<el-cascader
:options="inspectOptions3"
v-model="formData.checkSubitem"
style="width: 100%"
:props="opts"
@change="handleChange"
ref="cascaderAddr"
></el-cascader>
<!-- @expand-change="showSecondTree" -->
</el-form-item>
<!-- 检查时间 -->
<el-form-item
prop="inspectTime"
:label="$t('message.safeMangeCheck.dialog.inspectTime')"
>
<el-date-picker
v-model="formData.inspectTime"
type="datetime"
value-format="yyyy-MM-dd HH:mm:ss"
:placeholder="$t('message.safeMangeCheck.dialog.chooseDate')"
>
</el-date-picker>
</el-form-item>
<!-- 责任区域 -->
<el-form-item
label="责任区域"
prop="hiddenDangerInspectRegionId"
>
<el-cascader
v-model="formData.hiddenDangerInspectRegionId"
style="width: 100%"
clearable
ref="formRegion1"
:options="checkPointList"
:props="checkPointProps"
@change="changeRegion"
></el-cascader>
</el-form-item>
<!-- 隐患内容 -->
<el-form-item
v-if="formData.status == 2"
:label="
$t('message.safeMangeCheck.hiddenDanger') +
$t('message.safeMangeCheck.dialog.content')
"
>
<el-input
type="textarea"
:rows="2"
:placeholder="
$t('message.safeManage.placeholder') +
$t('message.safeMangeCheck.dialog.content')
"
v-model="formData.checkContent"
>
</el-input>
</el-form-item>
<!-- 事故隐患等级 -->
<el-form-item
v-if="formData.status == 2"
:label="
$t('message.safeMangeCheck.dialog.event') +
$t('message.safeMangeCheck.hiddenDanger') +
$t('message.safeMangeCheck.dialog.content')
"
prop="faultLevel"
required
>
<el-select
v-model="formData.faultLevel"
:placeholder="$t('message.safeMangeCheck.pleaseChoose')"
>
<el-option
:label="$t('message.safeMangeCheck.common')"
:value="1"
>
</el-option>
<el-option
:label="$t('message.safeMangeCheck.great')"
:value="2"
>
</el-option>
</el-select>
</el-form-item>
<!-- 整改要求 -->
<el-form-item
v-if="formData.status == 2"
:label="
$t('message.safeMangeCheck.dialog.change') +
$t('message.safeMangeCheck.dialog.ask')
"
>
<el-input
type="textarea"
:rows="2"
:placeholder="
$t('message.safeManage.placeholder') +
$t('message.safeMangeCheck.dialog.content')
"
v-model="formData.rectifyRequire"
>
</el-input>
</el-form-item>
<!-- 详细位置 -->
<el-form-item
:label="
$t('message.safeMangeCheck.dialog.detail2') +
$t('message.safeMangeCheck.dialog.location')
"
>
<el-input
:placeholder="
$t('message.safeManage.placeholder') +
$t('message.safeMangeCheck.dialog.content')
"
v-model="formData.dutyRegion"
>
</el-input>
</el-form-item>
<!-- 整改责任人 -->
<el-form-item
v-if="formData.status == 2"
:label="
$t('message.safeMangeCheck.dialog.change') +
$t('message.safeMangeCheck.dialog.duty') +
$t('message.safeMangeCheck.people')
"
prop="changeUser"
required
>
<el-select
v-model="formData.changeUser"
filterable
:placeholder="$t('message.safeMangeCheck.pleaseChoose')"
>
<el-option
v-for="item in crewList"
:key="item.userId"
:label="item.workerName"
:value="item.userId"
>
</el-option>
</el-select>
</el-form-item>
<!-- 整改单位 -->
<el-form-item
v-if="formData.status == 2"
:label="$t('message.safeMangeCheck.changeCompany')"
>
<el-select
v-model="formData.enterpriseSn"
:placeholder="$t('message.safeMangeCheck.pleaseChoose')"
>
<el-option
v-for="(item, index) in subcontractList"
:key="index"
:label="item.enterpriseName"
:value="item.enterpriseSn"
>
</el-option>
</el-select>
</el-form-item>
<!-- 要求完成时间 -->
<el-form-item
v-if="formData.status == 2"
:label="$t('message.safeMangeCheck.dialog.askFinshTime')"
>
<el-date-picker
v-model="formData.changeLimitTime"
type="datetime"
value-format="yyyy-MM-dd HH:mm:ss"
:placeholder="$t('message.safeMangeCheck.dialog.chooseDate')"
>
</el-date-picker>
</el-form-item>
<!-- 补充说明 -->
<el-form-item
:label="$t('message.safeMangeCheck.dialog.allInstruction')"
>
<el-input
type="textarea"
:rows="2"
:placeholder="
$t('message.safeManage.placeholder') +
$t('message.safeMangeCheck.dialog.content')
"
v-model="formData.dangerDesc"
>
</el-input>
</el-form-item>
<!-- 图片 -->
<el-form-item :label="$t('message.safeMangeCheck.dialog.photo')">
<el-upload
:action="uploadUrl"
list-type="picture-card"
name="files"
:on-remove="(file, fileList) => handleRemove(file, fileList)"
:on-success="handleSuccess"
:on-preview="(file) => handlePreview(file)"
:limit="5"
:file-list="fileList1"
ref="upload"
>
<i class="el-icon-plus"></i>
</el-upload>
</el-form-item>
</el-form>
</div>
</vue-scroll>
<div class="btn-box">
<!-- 确认 取消 -->
<el-button type="primary" @click="submitForm">{{
$t('message.safeMangeCheck.dialog.confirm')
}}</el-button>
<el-button @click="closeDialog">{{
$t('message.safeMangeCheck.dialog.cancel')
}}</el-button>
</div>
</el-dialog>
</div>
</template>
<script>
// function getNowWithLine() {
// var date = new Date();
// var seperator1 = "-";
// var seperator2 = ":";
// var month = date.getMonth() + 1;
// var strDate = date.getDate();
// if (month >= 1 && month <= 9) {
// month = "0" + month;
// }
// if (strDate >= 0 && strDate <= 9) {
// strDate = "0" + strDate;
// }
// var currentdate = date.getFullYear() + seperator1 + month + seperator1 + strDate;
// return currentdate;
// }
// let currentdate = getNowWithLine()
import {
gethiddenDangerInspectRecordApi,
getselectHiddenDangerRectifyRecordListApi,
deletehiddenDangerInspectRecordApi,
getProjectInspectRecordCountApi,
getInspectTypeListApi,
getinspectHiddenDangerLibraryListApi,
getinspectHiddenDangerItemRecordListApi,
addHiddenDangerInspectRecordApi,
addHiddenDangerRectifyRecordApi,
getSafeRegionListApi
} from '@/assets/js/api/safeManage.js'
import { getSubcontractListApi } from '@/assets/js/api/quality.js'
import { getProjectChilderSystemUserListApi } from '@/assets/js/api/configManage.js'
export default {
data() {
let that = this
return {
hiddenDangerInspectRegionName: "",
checkPointList: [],
checkPointProps: {
value: 'id',
label: 'regionName',
children: 'children',
checkStrictly: true
},
replyData: {
additionalRemarks: '',
fileList: []
},
fileList1: [],
COMPANY: '',
inspectOptions: [],
inspectOptions2: [],
inspectOptions3: [],
uploadUrl: '',
formData: {
hiddenDangerInspectRegionId: '',
inspectTypeId: '',
status: 2,
checkSubitem: '',
checkSubitem2: '',
hiddenDangerLevel: '',
checkContent: '',
faultLevel: '',
rectifyRequire: '',
rectifyRequire2: '',
dutyRegion: '',
checkItem: '',
checkItem2: '',
changeUser: '',
enterpriseSn: '',
changeLimitTime: '',
inspectTime: ''
},
opts: {
value: 'id',
label: 'hiddenDangerName',
// children: 'children',
checkStrictly: true,
lazy: true,
lazyLoad(node, resolve) {
console.log(node, that)
if (node.level == 0) {
resolve(that.inspectOptions3)
}
if (node.level == 1) {
getinspectHiddenDangerItemRecordListApi({
libraryId: node.data.id
}).then((res) => {
console.log(res)
if (res.code == 200) {
let arr = []
res.result.forEach((item) => {
arr.push({
id: item.id,
hiddenDangerName:
item.rectifyRequire.split('').length > 50
? item.rectifyRequire.substring(0, 50) + '...'
: item.rectifyRequire,
checkSubitem: item.hiddenDangerName,
checkContent: item.checkContent,
val: item.rectifyRequire,
hiddenDangerLevel: item.hiddenDangerLevel,
leaf: node.level >= 2
})
})
resolve(arr)
}
})
} else if (node.level == 2) {
resolve([])
}
}
},
dialogVisible2: false,
searchForm: {
status: '',
inspectStartTime: '',
inspectEndTime: '',
pageNo: 1,
pageSize: 10,
projectSn: this.$store.state.projectSn,
itemId: ''
},
daterange: [],
// checkType:[],
recordList: [],
pageTotal: 0,
statusArr: [
this.$t('message.safeMangeCheck.notChange'),
this.$t('message.safeMangeCheck.awaitChange'),
this.$t('message.safeMangeCheck.awaitExamine'),
this.$t('message.safeMangeCheck.upToStandard'),
this.$t('message.safeMangeCheck.not') +
this.$t('message.safeMangeCheck.upToStandard')
],
dialogVisible: false,
detailData: {},
rectifyRecordList: [],
statictisData: {
closeNum: 0,
closeRatio: 0,
completeRatio: 0,
inspectNum: 0,
investigateNum: 0,
notCloseNum: 0,
overdueNotCloseNum: 0,
overdueRectificationNum: 0,
rectificationNum: 0,
rectifyCompleteNum: 0,
reviewNum: 0,
totalNum: 0
},
projectSn: '',
userInfo: '',
fileUrl: '',
crewList: '', //整改负责人
subcontractList: '', //整改单位
rules: {
hiddenDangerInspectRegionId: [
{
// 请选择责任区域
required: true,
message:"请选择责任区域",
trigger: 'change'
}
],
inspectTime: [
{
// 请选择检查时间
required: true,
message:"请选择检查时间",
trigger: 'change'
}
],
inspectTypeId: [
{
// 请选择检查类型
required: true,
message:
this.$t('message.safeMangeCheck.pleaseChoose') +
this.$t('message.safeMangeCheck.checked') +
this.$t('message.safeMangeCheck.type'),
trigger: 'change'
}
],
checkItem: [
{
// 请选择隐患类型
required: true,
message:
this.$t('message.safeMangeCheck.pleaseChoose') +
this.$t('message.safeMangeCheck.hiddenDanger') +
this.$t('message.safeMangeCheck.type'),
trigger: 'change'
}
],
checkSubitem: [
{
// 请选择检查项目
required: true,
message:
this.$t('message.safeMangeCheck.pleaseChoose') +
this.$t('message.safeMangeCheck.checked') +
this.$t('message.safeMangeCheck.project'),
trigger: 'change'
}
],
faultLevel: [
{
// 请选择事故隐患等级
required: true,
message:
this.$t('message.safeMangeCheck.pleaseChoose') +
this.$t('message.safeMangeCheck.dialog.event') +
this.$t('message.safeMangeCheck.hiddenDanger') +
this.$t('message.safeMangeCheck.level3'),
trigger: 'change'
}
],
changeUser: [
{
// 请选择整改责任人
required: true,
message:
this.$t('message.safeMangeCheck.pleaseChoose') +
this.$t('message.safeMangeCheck.dialog.change') +
this.$t('message.safeMangeCheck.dialog.duty') +
this.$t('message.safeMangeCheck.people'),
trigger: 'change'
}
]
}
}
},
created() {
// console.log(this.statusArr)
this.COMPANY = COMPANY
this.projectSn = this.$store.state.projectSn
this.userInfo = this.$store.state.userInfo
this.uploadUrl = this.$store.state.UPLOADURL
this.fileUrl = this.$store.state.FILEURL
this.getInspectTypeList()
this.getinspectHiddenDangerLibraryList()
this.getEnterprise()
this.getPeopleList()
this.getPositionList()
},
mounted() {
if (this.$route.query.id) {
this.searchForm.itemId = this.$route.query.id
} else {
this.getStatictisData()
}
this.loadList()
},
watch: {
$route(to, from) {
// console.log('watch')
// console.log(from.path); //从哪来
if (this.$route.query.id) {
this.searchForm.itemId = this.$route.query.id
} else {
this.searchForm.itemId = ''
this.getStatictisData()
}
this.loadList()
}
},
methods: {
//获取新增弹窗-- 检查部位下拉
getPositionList() {
let data = {
projectSn: this.projectSn
}
getSafeRegionListApi(data).then((res) => {
console.log('责任区域级联选择器', res);
if (res.code == 200) {
this.checkPointList = res.result
}
})
},
//导出
exportData() {
window.location.href =
this.$http.defaults.baseURL +
'xmgl/download/exporExcelHiddenDangerInspectRecord?projectSn=' +
this.$store.state.projectSn +
'&status=' +
this.searchForm.status +
'&inspectStartTime=' +
this.searchForm.inspectStartTime +
'&inspectEndTime=' +
this.searchForm.inspectEndTime +
'&pageNo=' +
this.searchForm.pageNo +
'&pageSize=' +
this.searchForm.pageSize +
'&itemId=' +
this.searchForm.itemId
},
//提交
submitForm() {
this.$refs['formData'].validate((valid) => {
// console.log(this.formData.status);
if (!valid) {
return
} else {
this.addHiddenDangerInspectRecord()
}
})
// this.dialogVisible2 = false
},
submitForm2() {
let data = {}
if (
this.detailData.changeUser == this.$store.state.userInfo.userId &&
this.detailData.status == 2
) {
let arr = []
this.replyData.fileList.forEach((item) => {
arr.push(item.name)
})
data = {
additionalRemarks: this.replyData.additionalRemarks,
fileUrl: arr.join(','),
createUser: this.$store.state.userInfo.userId,
inspectId: this.detailData.id,
type: 1,
status: 2
}
addHiddenDangerRectifyRecordApi(data).then((res) => {
if (res.code == 200) {
// 回复成功
this.$message.success(
this.$t('message.safeMangeCheck.dialog.answerSuccess') + ''
)
this.getRectifyRecordList(this.detailData.id)
this.loadList()
}
})
} else if (
this.detailData.reviewId == this.$store.state.userInfo.userId &&
this.detailData.status == 3
) {
data = {
additionalRemarks: this.replyData.additionalRemarks,
createUser: this.$store.state.userInfo.userId,
inspectId: this.detailData.id,
type: 2,
status: 2
}
addHiddenDangerRectifyRecordApi(data).then((res) => {
if (res.code == 200) {
this.$message.success(
this.$t('message.safeMangeCheck.dialog.answerSuccess') + ''
)
this.getRectifyRecordList(this.detailData.id)
this.loadList()
}
})
}
console.log(data)
this.dialogVisible = false
},
addHiddenDangerInspectRecord() {
console.log(this.fileList1)
let imgList = []
this.fileList1.forEach((item) => {
imgList.push(item.name)
})
let data = {
changeLimitTime: this.formData.changeLimitTime,
changeUser: this.formData.changeUser,
checkContent: this.formData.checkContent,
checkItem: this.formData.checkItem2,
checkSubitem: this.formData.checkSubitem2,
createUser: this.$store.state.userInfo.userId,
dangerDesc: this.formData.dangerDesc,
dutyRegion: this.formData.dutyRegion,
enterpriseSn: this.formData.enterpriseSn,
faultLevel: this.formData.faultLevel,
hiddenDangerLevel: this.formData.hiddenDangerLevel,
imageUrl: imgList.join(','),
inspectTypeId: this.formData.inspectTypeId,
projectSn: this.projectSn,
recordType: 1,
rectifyRequire: this.formData.rectifyRequire,
reviewId: this.$store.state.userInfo.userId,
status: this.formData.status,
hiddenDangerInspectRegionId: this.formData.hiddenDangerInspectRegionId[0],
hiddenDangerInspectRegionName: this.hiddenDangerInspectRegionName,
inspectTime: this.formData.inspectTime
}
console.log(data)
addHiddenDangerInspectRecordApi(data).then((res) => {
if (res.code == 200) {
console.log(res)
this.dialogVisible2 = false
this.loadList()
}
})
},
closeDialog() {
this.dialogVisible2 = false
},
closeDialog2() {
if (
this.detailData.reviewId == this.$store.state.userInfo.userId &&
this.detailData.status == 3
) {
let data = {
additionalRemarks: this.replyData.additionalRemarks,
createUser: this.$store.state.userInfo.userId,
inspectId: this.detailData.id,
type: 2,
status: 1
}
addHiddenDangerRectifyRecordApi(data).then((res) => {
if (res.code == 200) {
this.$message.success(
this.$t('message.safeMangeCheck.dialog.answerSuccess') + ''
)
this.getRectifyRecordList(this.detailData.id)
this.loadList()
}
})
}
this.dialogVisible = false
},
close() {
this.formData = {
inspectTypeId: '',
status: 2,
checkSubitem: '',
checkContent: '',
faultLevel: '',
rectifyRequire: '',
dutyRegion: '',
changeUser: '',
enterpriseSn: '',
changeLimitTime: new Date()
}
this.fileList1 = []
},
//整改单位
getEnterprise() {
let data = {
enterpriseTypeId: this.subcontractType,
pageNo: 1,
pageSize: 999,
projectSn: this.projectSn
}
getSubcontractListApi(data).then((res) => {
if (res.code == 200) {
this.subcontractList = res.result.records
console.log(res.result.records)
}
})
},
//获取去整改人 通知人 检查人 核查人下拉
getPeopleList() {
let data = {
projectSn: this.projectSn
}
getProjectChilderSystemUserListApi(data).then((res) => {
if (res.code == 200) {
this.crewList = res.result
}
})
},
showSecondTree(val) {
console.log(val)
getinspectHiddenDangerItemRecordListApi({ libraryId: val[0] }).then(
(res) => {
console.log(res)
if (res.code == 200) {
let arr = []
res.result.forEach((item) => {
arr.push({
id: item.id,
hiddenDangerName: item.rectifyRequire.substring(0, 20)
})
})
// console.log(this.inspectOptions3)
let arr3 = [...this.inspectOptions3]
arr3.forEach((item) => {
if (item.id == val[0]) {
if (item.children.length == 0) {
item.children = arr
}
}
})
this.inspectOptions3 = arr3
// this.$forceUpdate()
console.log(this.inspectOptions3)
}
}
)
},
handleChange(val) {
console.log(val)
console.log(this.$refs['cascaderAddr'].getCheckedNodes()[0])
if (this.$refs['cascaderAddr'].getCheckedNodes()[0].data.checkContent) {
this.formData.checkContent =
this.$refs['cascaderAddr'].getCheckedNodes()[0].data.checkContent
}
if (this.$refs['cascaderAddr'].getCheckedNodes()[0].data.val) {
this.formData.rectifyRequire =
this.$refs['cascaderAddr'].getCheckedNodes()[0].data.val
}
if (this.$refs['cascaderAddr'].getCheckedNodes()[0].data.checkSubitem) {
this.formData.checkSubitem2 =
this.$refs['cascaderAddr'].getCheckedNodes()[0].data.checkSubitem
}
if (
this.$refs['cascaderAddr'].getCheckedNodes()[0].data.hiddenDangerLevel
) {
this.formData.hiddenDangerLevel =
this.$refs['cascaderAddr'].getCheckedNodes()[0].data.hiddenDangerLevel
}
// getinspectHiddenDangerItemRecordListApi({libraryId: val[0]}).then(res=>{
// console.log(res)
// if(res.code == 200){
// let arr = []
// res.result.forEach(item=>{
// arr.push({
// id: item.id,
// hiddenDangerName: item.rectifyRequire.substring(0,20),
// })
// })
// this.inspectOptions3.map(item=>{
// if(item.id == val[0]){
// item.children = arr
// }
// })
// console.log(this.inspectOptions3)
// // this.$forceUpdate()
// }
// })
},
checkOptions(val) {
console.log(val)
this.inspectOptions2.forEach((item) => {
if (item.id == val) {
this.formData.checkItem2 = item.hiddenDangerName
// console.log(item.hiddenDangerName);
item.children.forEach((item) => {
item.children = []
})
this.inspectOptions3 = item.children
}
})
},
getinspectHiddenDangerLibraryList() {
getinspectHiddenDangerLibraryListApi({
sn: this.userInfo.headquartersSn
}).then((res) => {
console.log(res.result)
this.inspectOptions2 = res.result
})
},
getInspectTypeList() {
getInspectTypeListApi({ sn: this.userInfo.headquartersSn }).then(
(res) => {
this.inspectOptions = res.result
}
)
},
handleRemove(file, fileList, type) {
if (type == 1) {
this.replyData.fileList = fileList
} else {
this.fileList1 = fileList
}
},
handleSuccess(file) {
console.log(file)
let data = {
name: file.data[0].filename,
url: this.fileUrl + file.data[0].imageUrl
}
this.fileList1.push(data)
},
handleSuccess2(file) {
console.log(file)
let data = {
name: file.data[0].filename,
url: this.fileUrl + file.data[0].imageUrl
}
this.replyData.fileList.push(data)
},
//查看图片
handlePreview(file) {
this.dialogImageUrl = file.url
window.open(file.url)
var filename = file.name
var index1 = filename.lastIndexOf('.')
var index2 = filename.length
var type = filename.substring(index1, index2)
console.log(type)
// if (type == '.mp4' || type == '.mp3'){
//
// }else {
// this.dialogVisible = true;
// }
},
// 添加检查记录
addData() {
this.dialogVisible2 = true
},
//获取检查统计
getStatictisData() {
getProjectInspectRecordCountApi({
projectSn: this.searchForm.projectSn
}).then((res) => {
this.statictisData = res.result
})
},
refreshFn() {
this.searchForm.status = ''
this.daterange = []
this.searchForm.inspectStartTime = ''
this.searchForm.inspectEndTime = ''
this.searchForm.pageNo = 1
this.searchForm.pageSize = 10
this.loadList()
if (this.$route.query.id) {
this.searchForm.itemId = this.$route.query.id
} else {
this.getStatictisData()
}
},
//获取整改和复查记录
getRectifyRecordList(inspectId) {
getselectHiddenDangerRectifyRecordListApi({ inspectId: inspectId }).then(
(res) => {
console.log(res.result)
this.rectifyRecordList = res.result
}
)
},
//显示检查详细弹框
showDetailFn(row) {
console.log(row)
this.getRectifyRecordList(row.id)
this.replyData = {
additionalRemarks: '',
fileList: []
}
this.detailData = row
this.dialogVisible = true
},
changeDate2() {
if (this.daterange) {
this.searchForm.inspectStartTime = this.daterange[0]
this.searchForm.inspectEndTime = this.daterange[1]
} else {
this.searchForm.inspectStartTime = ''
this.searchForm.inspectEndTime = ''
}
},
detailsPoint(item) {},
loadList(val) {
if (val && val == 1) {
this.searchForm.pageNo = 1
}
gethiddenDangerInspectRecordApi(this.searchForm).then((result) => {
console.log('表格数据', result)
this.recordList = result.result.records
this.pageTotal = result.result.total
})
},
goBack() {
this.$router.back()
},
handleSizeChange(val) {
this.searchForm.pageSize = val
this.loadList()
},
handleCurrentChange(val) {
this.searchForm.pageNo = val
this.loadList()
},
parseImage2(urls) {
let arr = []
if (urls) {
arr = urls.split(',')
}
arr.forEach((element, index) => {
arr[index] = this.$store.state.FILEURL + element
})
return arr
},
deleteTaskFn(item) {
this.$confirm(
this.$t('message.safeMangeCheck.dialog.confirmDeleteRecords'),
this.$t('message.safeMangeCheck.dialog.tip'),
{
confirmButtonText: this.$t('message.safeMangeCheck.dialog.confirm'),
cancelButtonText: this.$t('message.safeMangeCheck.dialog.cancel'),
type: 'warning'
}
)
.then(() => {
let data = {
id: item.id
}
deletehiddenDangerInspectRecordApi(data).then((res) => {
if (res.code == 200) {
this.loadList()
this.$message({
type: 'success',
message:
this.$t('message.safeMangeCheck.dialog.deleteSuccess') + '!'
})
this.getStatictisData()
} else {
this.$message.error(res.message)
}
})
})
.catch(() => {
this.$message({
type: 'info',
message:
this.$t('message.safeMangeCheck.dialog.cancelDeleteSuccess') + '!'
})
})
},
changeRegion(val) {
// console.log(val)
// console.log(this.checkPointList)
let currentNode = this.$refs['formRegion1'].getCheckedNodes()[0].data
console.log(this.$refs['formRegion1'].getCheckedNodes()[0].data)
this.formData.changeUser = currentNode.dutyId
this.hiddenDangerInspectRegionName = currentNode.regionName
},
}
}
</script>
<style lang="less" scoped>
.statictisBox {
font-size: 15px;
margin: 15px;
p {
display: inline-block;
margin-right: 50px;
}
.value {
color: #88e7f0;
}
}
.filterBox {
margin: 15px;
}
.table_bottom_txt {
font-size: 12px;
opacity: 0.8;
// margin-top: 12px;
}
.el-icon-picture {
margin-right: 7px;
}
.el-icon-location-information {
margin: 0 7px 0 18px;
}
.mr10 {
margin-right: 10px;
}
.backText {
font-size: 16px;
}
.jyjzPage .backText {
margin: -10px 0 14px 0;
padding: 15px 15px 0;
/deep/.el-page-header__content {
color: white;
font-size: 16px;
}
/deep/.el-page-header__title {
font-size: 16px;
}
/deep/.el-page-header__left::after {
background-color: #7cd3de;
}
}
.topDataBox {
}
.detailBox {
.grid-content {
overflow: hidden;
margin-bottom: 10px;
.label {
float: left;
width: 80px;
text-align: right;
}
.value {
float: left;
width: calc(100% - 80px);
}
}
}
.hiddenDangerLevel {
margin-left: 7px;
}
.dialog-content {
padding: 0 80px;
/deep/.el-select {
width: 100%;
}
/deep/.el-date-editor {
width: 100%;
}
}
.btn-box {
height: 50px;
margin-top: 30px;
display: flex;
justify-content: space-around;
align-items: center;
}
/deep/.el-cascader-menu {
width: 300px;
box-sizing: border-box;
}
</style>