|
@@ -2,7 +2,7 @@
|
|
|
<div class="monthly-report-add">
|
|
<div class="monthly-report-add">
|
|
|
<el-form
|
|
<el-form
|
|
|
ref="formRef"
|
|
ref="formRef"
|
|
|
- :model="formData"
|
|
|
|
|
|
|
+ :model="reportInfo"
|
|
|
:rules="formRules"
|
|
:rules="formRules"
|
|
|
label-width="auto"
|
|
label-width="auto"
|
|
|
class="report-form">
|
|
class="report-form">
|
|
@@ -17,28 +17,28 @@
|
|
|
<el-row :gutter="16">
|
|
<el-row :gutter="16">
|
|
|
<el-col :xs="24" :sm="12" :md="12" :lg="12" :xl="12">
|
|
<el-col :xs="24" :sm="12" :md="12" :lg="12" :xl="12">
|
|
|
<el-form-item label="部门名称" prop="deptId">
|
|
<el-form-item label="部门名称" prop="deptId">
|
|
|
- <el-input
|
|
|
|
|
- v-model="deptName"
|
|
|
|
|
- placeholder="请选择部门"
|
|
|
|
|
- readonly
|
|
|
|
|
- @click="openDeptSelect">
|
|
|
|
|
- <template #suffix>
|
|
|
|
|
- <Icon icon="ep:search" class="cursor-pointer" />
|
|
|
|
|
- </template>
|
|
|
|
|
- </el-input>
|
|
|
|
|
|
|
+ <el-tree-select
|
|
|
|
|
+ clearable
|
|
|
|
|
+ v-model="reportInfo.deptId"
|
|
|
|
|
+ :data="deptList2"
|
|
|
|
|
+ :props="defaultProps"
|
|
|
|
|
+ :check-strictly="false"
|
|
|
|
|
+ node-key="id"
|
|
|
|
|
+ filterable
|
|
|
|
|
+ placeholder="请选择所属队伍" />
|
|
|
</el-form-item>
|
|
</el-form-item>
|
|
|
</el-col>
|
|
</el-col>
|
|
|
<el-col :xs="24" :sm="12" :md="12" :lg="12" :xl="12">
|
|
<el-col :xs="24" :sm="12" :md="12" :lg="12" :xl="12">
|
|
|
<el-form-item label="月报标题" prop="title">
|
|
<el-form-item label="月报标题" prop="title">
|
|
|
- <el-input v-model="formData.title" placeholder="请输入月报标题" />
|
|
|
|
|
|
|
+ <el-input v-model="reportInfo.title" placeholder="请输入月报标题" />
|
|
|
</el-form-item>
|
|
</el-form-item>
|
|
|
</el-col>
|
|
</el-col>
|
|
|
</el-row>
|
|
</el-row>
|
|
|
<el-row :gutter="16">
|
|
<el-row :gutter="16">
|
|
|
<el-col :xs="24" :sm="12" :md="12" :lg="12" :xl="12">
|
|
<el-col :xs="24" :sm="12" :md="12" :lg="12" :xl="12">
|
|
|
- <el-form-item label="年月" prop="yearMonth">
|
|
|
|
|
|
|
+ <el-form-item label="年月" prop="yearMonths">
|
|
|
<el-date-picker
|
|
<el-date-picker
|
|
|
- v-model="formData.yearMonth"
|
|
|
|
|
|
|
+ v-model="reportInfo.yearMonths"
|
|
|
type="month"
|
|
type="month"
|
|
|
placeholder="选择年月"
|
|
placeholder="选择年月"
|
|
|
format="YYYY-MM"
|
|
format="YYYY-MM"
|
|
@@ -61,7 +61,7 @@
|
|
|
<el-col :xs="24" :sm="12" :md="6" :lg="6" :xl="6">
|
|
<el-col :xs="24" :sm="12" :md="6" :lg="6" :xl="6">
|
|
|
<el-form-item label="员工人数" prop="employee">
|
|
<el-form-item label="员工人数" prop="employee">
|
|
|
<el-input-number
|
|
<el-input-number
|
|
|
- v-model="formData.employee"
|
|
|
|
|
|
|
+ v-model="reportInfo.employee"
|
|
|
:min="0"
|
|
:min="0"
|
|
|
:precision="0"
|
|
:precision="0"
|
|
|
controls-position="right"
|
|
controls-position="right"
|
|
@@ -71,7 +71,7 @@
|
|
|
<el-col :xs="24" :sm="12" :md="6" :lg="6" :xl="6">
|
|
<el-col :xs="24" :sm="12" :md="6" :lg="6" :xl="6">
|
|
|
<el-form-item label="分包商人数" prop="subcontractors">
|
|
<el-form-item label="分包商人数" prop="subcontractors">
|
|
|
<el-input-number
|
|
<el-input-number
|
|
|
- v-model="formData.subcontractors"
|
|
|
|
|
|
|
+ v-model="reportInfo.subcontractors"
|
|
|
:min="0"
|
|
:min="0"
|
|
|
:precision="0"
|
|
:precision="0"
|
|
|
controls-position="right"
|
|
controls-position="right"
|
|
@@ -81,7 +81,7 @@
|
|
|
<el-col :xs="24" :sm="12" :md="6" :lg="6" :xl="6">
|
|
<el-col :xs="24" :sm="12" :md="6" :lg="6" :xl="6">
|
|
|
<el-form-item label="安全行驶里程数(公里)" prop="drivingMileage">
|
|
<el-form-item label="安全行驶里程数(公里)" prop="drivingMileage">
|
|
|
<el-input-number
|
|
<el-input-number
|
|
|
- v-model="formData.drivingMileage"
|
|
|
|
|
|
|
+ v-model="reportInfo.drivingMileage"
|
|
|
:min="0"
|
|
:min="0"
|
|
|
:precision="2"
|
|
:precision="2"
|
|
|
controls-position="right"
|
|
controls-position="right"
|
|
@@ -91,7 +91,7 @@
|
|
|
<el-col :xs="24" :sm="12" :md="6" :lg="6" :xl="6">
|
|
<el-col :xs="24" :sm="12" :md="6" :lg="6" :xl="6">
|
|
|
<el-form-item label="总人工时数(小时)" prop="totalManHours">
|
|
<el-form-item label="总人工时数(小时)" prop="totalManHours">
|
|
|
<el-input-number
|
|
<el-input-number
|
|
|
- v-model="formData.totalManHours"
|
|
|
|
|
|
|
+ v-model="reportInfo.totalManHours"
|
|
|
:min="0"
|
|
:min="0"
|
|
|
:precision="2"
|
|
:precision="2"
|
|
|
controls-position="right"
|
|
controls-position="right"
|
|
@@ -113,7 +113,7 @@
|
|
|
<el-col :xs="24" :sm="12" :md="6" :lg="6" :xl="6">
|
|
<el-col :xs="24" :sm="12" :md="6" :lg="6" :xl="6">
|
|
|
<el-form-item label="无事故累计天数" prop="withoutAccident">
|
|
<el-form-item label="无事故累计天数" prop="withoutAccident">
|
|
|
<el-input-number
|
|
<el-input-number
|
|
|
- v-model="formData.withoutAccident"
|
|
|
|
|
|
|
+ v-model="reportInfo.withoutAccident"
|
|
|
:min="0"
|
|
:min="0"
|
|
|
:precision="0"
|
|
:precision="0"
|
|
|
controls-position="right"
|
|
controls-position="right"
|
|
@@ -123,7 +123,7 @@
|
|
|
<el-col :xs="24" :sm="12" :md="6" :lg="6" :xl="6">
|
|
<el-col :xs="24" :sm="12" :md="6" :lg="6" :xl="6">
|
|
|
<el-form-item label="死亡事故(起)" prop="fatality">
|
|
<el-form-item label="死亡事故(起)" prop="fatality">
|
|
|
<el-input-number
|
|
<el-input-number
|
|
|
- v-model="formData.fatality"
|
|
|
|
|
|
|
+ v-model="reportInfo.fatality"
|
|
|
:min="0"
|
|
:min="0"
|
|
|
:precision="0"
|
|
:precision="0"
|
|
|
controls-position="right"
|
|
controls-position="right"
|
|
@@ -133,7 +133,7 @@
|
|
|
<el-col :xs="24" :sm="12" :md="6" :lg="6" :xl="6">
|
|
<el-col :xs="24" :sm="12" :md="6" :lg="6" :xl="6">
|
|
|
<el-form-item label="损失工时事故(起)" prop="injury">
|
|
<el-form-item label="损失工时事故(起)" prop="injury">
|
|
|
<el-input-number
|
|
<el-input-number
|
|
|
- v-model="formData.injury"
|
|
|
|
|
|
|
+ v-model="reportInfo.injury"
|
|
|
:min="0"
|
|
:min="0"
|
|
|
:precision="0"
|
|
:precision="0"
|
|
|
controls-position="right"
|
|
controls-position="right"
|
|
@@ -143,7 +143,7 @@
|
|
|
<el-col :xs="24" :sm="12" :md="6" :lg="6" :xl="6">
|
|
<el-col :xs="24" :sm="12" :md="6" :lg="6" :xl="6">
|
|
|
<el-form-item label="工作受限事件(起)" prop="restrictedCase">
|
|
<el-form-item label="工作受限事件(起)" prop="restrictedCase">
|
|
|
<el-input-number
|
|
<el-input-number
|
|
|
- v-model="formData.restrictedCase"
|
|
|
|
|
|
|
+ v-model="reportInfo.restrictedCase"
|
|
|
:min="0"
|
|
:min="0"
|
|
|
:precision="0"
|
|
:precision="0"
|
|
|
controls-position="right"
|
|
controls-position="right"
|
|
@@ -155,7 +155,7 @@
|
|
|
<el-col :xs="24" :sm="12" :md="6" :lg="6" :xl="6">
|
|
<el-col :xs="24" :sm="12" :md="6" :lg="6" :xl="6">
|
|
|
<el-form-item label="医疗处理事件(起)" prop="medicalCase">
|
|
<el-form-item label="医疗处理事件(起)" prop="medicalCase">
|
|
|
<el-input-number
|
|
<el-input-number
|
|
|
- v-model="formData.medicalCase"
|
|
|
|
|
|
|
+ v-model="reportInfo.medicalCase"
|
|
|
:min="0"
|
|
:min="0"
|
|
|
:precision="0"
|
|
:precision="0"
|
|
|
controls-position="right"
|
|
controls-position="right"
|
|
@@ -165,7 +165,7 @@
|
|
|
<el-col :xs="24" :sm="12" :md="6" :lg="6" :xl="6">
|
|
<el-col :xs="24" :sm="12" :md="6" :lg="6" :xl="6">
|
|
|
<el-form-item label="急救箱事件(起)" prop="firstAidCase">
|
|
<el-form-item label="急救箱事件(起)" prop="firstAidCase">
|
|
|
<el-input-number
|
|
<el-input-number
|
|
|
- v-model="formData.firstAidCase"
|
|
|
|
|
|
|
+ v-model="reportInfo.firstAidCase"
|
|
|
:min="0"
|
|
:min="0"
|
|
|
:precision="0"
|
|
:precision="0"
|
|
|
controls-position="right"
|
|
controls-position="right"
|
|
@@ -175,7 +175,7 @@
|
|
|
<el-col :xs="24" :sm="12" :md="6" :lg="6" :xl="6">
|
|
<el-col :xs="24" :sm="12" :md="6" :lg="6" :xl="6">
|
|
|
<el-form-item label="交通事故(起)" prop="vehicleAccident">
|
|
<el-form-item label="交通事故(起)" prop="vehicleAccident">
|
|
|
<el-input-number
|
|
<el-input-number
|
|
|
- v-model="formData.vehicleAccident"
|
|
|
|
|
|
|
+ v-model="reportInfo.vehicleAccident"
|
|
|
:min="0"
|
|
:min="0"
|
|
|
:precision="0"
|
|
:precision="0"
|
|
|
controls-position="right"
|
|
controls-position="right"
|
|
@@ -185,7 +185,7 @@
|
|
|
<el-col :xs="24" :sm="12" :md="6" :lg="6" :xl="6">
|
|
<el-col :xs="24" :sm="12" :md="6" :lg="6" :xl="6">
|
|
|
<el-form-item label="未遂事件(起)" prop="nearMiss">
|
|
<el-form-item label="未遂事件(起)" prop="nearMiss">
|
|
|
<el-input-number
|
|
<el-input-number
|
|
|
- v-model="formData.nearMiss"
|
|
|
|
|
|
|
+ v-model="reportInfo.nearMiss"
|
|
|
:min="0"
|
|
:min="0"
|
|
|
:precision="0"
|
|
:precision="0"
|
|
|
controls-position="right"
|
|
controls-position="right"
|
|
@@ -197,7 +197,7 @@
|
|
|
<el-col :xs="24" :sm="12" :md="6" :lg="6" :xl="6">
|
|
<el-col :xs="24" :sm="12" :md="6" :lg="6" :xl="6">
|
|
|
<el-form-item label="泄漏事件(起)" prop="spill">
|
|
<el-form-item label="泄漏事件(起)" prop="spill">
|
|
|
<el-input-number
|
|
<el-input-number
|
|
|
- v-model="formData.spill"
|
|
|
|
|
|
|
+ v-model="reportInfo.spill"
|
|
|
:min="0"
|
|
:min="0"
|
|
|
:precision="0"
|
|
:precision="0"
|
|
|
controls-position="right"
|
|
controls-position="right"
|
|
@@ -207,7 +207,7 @@
|
|
|
<el-col :xs="24" :sm="12" :md="6" :lg="6" :xl="6">
|
|
<el-col :xs="24" :sm="12" :md="6" :lg="6" :xl="6">
|
|
|
<el-form-item label="违反保命规则的次数(次)" prop="lifeSavingRules">
|
|
<el-form-item label="违反保命规则的次数(次)" prop="lifeSavingRules">
|
|
|
<el-input-number
|
|
<el-input-number
|
|
|
- v-model="formData.lifeSavingRules"
|
|
|
|
|
|
|
+ v-model="reportInfo.lifeSavingRules"
|
|
|
:min="0"
|
|
:min="0"
|
|
|
:precision="0"
|
|
:precision="0"
|
|
|
controls-position="right"
|
|
controls-position="right"
|
|
@@ -229,7 +229,7 @@
|
|
|
<el-col :xs="24" :sm="12" :md="6" :lg="6" :xl="6">
|
|
<el-col :xs="24" :sm="12" :md="6" :lg="6" :xl="6">
|
|
|
<el-form-item label="班前会(次)" prop="toolboxTalk">
|
|
<el-form-item label="班前会(次)" prop="toolboxTalk">
|
|
|
<el-input-number
|
|
<el-input-number
|
|
|
- v-model="formData.toolboxTalk"
|
|
|
|
|
|
|
+ v-model="reportInfo.toolboxTalk"
|
|
|
:min="0"
|
|
:min="0"
|
|
|
:precision="0"
|
|
:precision="0"
|
|
|
controls-position="right"
|
|
controls-position="right"
|
|
@@ -239,7 +239,7 @@
|
|
|
<el-col :xs="24" :sm="12" :md="6" :lg="6" :xl="6">
|
|
<el-col :xs="24" :sm="12" :md="6" :lg="6" :xl="6">
|
|
|
<el-form-item label="QHSE管理委员会会议(次)" prop="committeeMeeting">
|
|
<el-form-item label="QHSE管理委员会会议(次)" prop="committeeMeeting">
|
|
|
<el-input-number
|
|
<el-input-number
|
|
|
- v-model="formData.committeeMeeting"
|
|
|
|
|
|
|
+ v-model="reportInfo.committeeMeeting"
|
|
|
:min="0"
|
|
:min="0"
|
|
|
:precision="0"
|
|
:precision="0"
|
|
|
controls-position="right"
|
|
controls-position="right"
|
|
@@ -249,7 +249,7 @@
|
|
|
<el-col :xs="24" :sm="12" :md="6" :lg="6" :xl="6">
|
|
<el-col :xs="24" :sm="12" :md="6" :lg="6" :xl="6">
|
|
|
<el-form-item label="QHSE月度例会(次)" prop="monthlyMeeting">
|
|
<el-form-item label="QHSE月度例会(次)" prop="monthlyMeeting">
|
|
|
<el-input-number
|
|
<el-input-number
|
|
|
- v-model="formData.monthlyMeeting"
|
|
|
|
|
|
|
+ v-model="reportInfo.monthlyMeeting"
|
|
|
:min="0"
|
|
:min="0"
|
|
|
:precision="0"
|
|
:precision="0"
|
|
|
controls-position="right"
|
|
controls-position="right"
|
|
@@ -259,7 +259,7 @@
|
|
|
<el-col :xs="24" :sm="12" :md="6" :lg="6" :xl="6">
|
|
<el-col :xs="24" :sm="12" :md="6" :lg="6" :xl="6">
|
|
|
<el-form-item label="公司级隐患排查(次)" prop="companyHazard">
|
|
<el-form-item label="公司级隐患排查(次)" prop="companyHazard">
|
|
|
<el-input-number
|
|
<el-input-number
|
|
|
- v-model="formData.companyHazard"
|
|
|
|
|
|
|
+ v-model="reportInfo.companyHazard"
|
|
|
:min="0"
|
|
:min="0"
|
|
|
:precision="0"
|
|
:precision="0"
|
|
|
controls-position="right"
|
|
controls-position="right"
|
|
@@ -271,7 +271,7 @@
|
|
|
<el-col :xs="24" :sm="12" :md="6" :lg="6" :xl="6">
|
|
<el-col :xs="24" :sm="12" :md="6" :lg="6" :xl="6">
|
|
|
<el-form-item label="QHSE检查(次)" prop="qhseInspection">
|
|
<el-form-item label="QHSE检查(次)" prop="qhseInspection">
|
|
|
<el-input-number
|
|
<el-input-number
|
|
|
- v-model="formData.qhseInspection"
|
|
|
|
|
|
|
+ v-model="reportInfo.qhseInspection"
|
|
|
:min="0"
|
|
:min="0"
|
|
|
:precision="0"
|
|
:precision="0"
|
|
|
controls-position="right"
|
|
controls-position="right"
|
|
@@ -281,19 +281,21 @@
|
|
|
<el-col :xs="24" :sm="12" :md="6" :lg="6" :xl="6">
|
|
<el-col :xs="24" :sm="12" :md="6" :lg="6" :xl="6">
|
|
|
<el-form-item label="安全观察卡(张)" prop="socCards">
|
|
<el-form-item label="安全观察卡(张)" prop="socCards">
|
|
|
<el-input-number
|
|
<el-input-number
|
|
|
- v-model="formData.socCards"
|
|
|
|
|
|
|
+ v-model="reportInfo.socCards"
|
|
|
:min="0"
|
|
:min="0"
|
|
|
:precision="0"
|
|
:precision="0"
|
|
|
controls-position="right"
|
|
controls-position="right"
|
|
|
|
|
+ disabled
|
|
|
style="width: 100%" />
|
|
style="width: 100%" />
|
|
|
</el-form-item>
|
|
</el-form-item>
|
|
|
</el-col>
|
|
</el-col>
|
|
|
<el-col :xs="24" :sm="12" :md="6" :lg="6" :xl="6">
|
|
<el-col :xs="24" :sm="12" :md="6" :lg="6" :xl="6">
|
|
|
<el-form-item label="工作许可审核(份)" prop="ptwAudit">
|
|
<el-form-item label="工作许可审核(份)" prop="ptwAudit">
|
|
|
<el-input-number
|
|
<el-input-number
|
|
|
- v-model="formData.ptwAudit"
|
|
|
|
|
|
|
+ v-model="reportInfo.ptwAudit"
|
|
|
:min="0"
|
|
:min="0"
|
|
|
:precision="0"
|
|
:precision="0"
|
|
|
|
|
+ disabled
|
|
|
controls-position="right"
|
|
controls-position="right"
|
|
|
style="width: 100%" />
|
|
style="width: 100%" />
|
|
|
</el-form-item>
|
|
</el-form-item>
|
|
@@ -301,9 +303,10 @@
|
|
|
<el-col :xs="24" :sm="12" :md="6" :lg="6" :xl="6">
|
|
<el-col :xs="24" :sm="12" :md="6" :lg="6" :xl="6">
|
|
|
<el-form-item label="工作安全分析(次)" prop="jsa">
|
|
<el-form-item label="工作安全分析(次)" prop="jsa">
|
|
|
<el-input-number
|
|
<el-input-number
|
|
|
- v-model="formData.jsa"
|
|
|
|
|
|
|
+ v-model="reportInfo.jsa"
|
|
|
:min="0"
|
|
:min="0"
|
|
|
:precision="0"
|
|
:precision="0"
|
|
|
|
|
+ disabled
|
|
|
controls-position="right"
|
|
controls-position="right"
|
|
|
style="width: 100%" />
|
|
style="width: 100%" />
|
|
|
</el-form-item>
|
|
</el-form-item>
|
|
@@ -313,7 +316,7 @@
|
|
|
<el-col :xs="24" :sm="12" :md="6" :lg="6" :xl="6">
|
|
<el-col :xs="24" :sm="12" :md="6" :lg="6" :xl="6">
|
|
|
<el-form-item label="演练次数" prop="drills">
|
|
<el-form-item label="演练次数" prop="drills">
|
|
|
<el-input-number
|
|
<el-input-number
|
|
|
- v-model="formData.drills"
|
|
|
|
|
|
|
+ v-model="reportInfo.drills"
|
|
|
:min="0"
|
|
:min="0"
|
|
|
:precision="0"
|
|
:precision="0"
|
|
|
controls-position="right"
|
|
controls-position="right"
|
|
@@ -323,7 +326,7 @@
|
|
|
<el-col :xs="24" :sm="12" :md="6" :lg="6" :xl="6">
|
|
<el-col :xs="24" :sm="12" :md="6" :lg="6" :xl="6">
|
|
|
<el-form-item label="QHSE培训次数" prop="training">
|
|
<el-form-item label="QHSE培训次数" prop="training">
|
|
|
<el-input-number
|
|
<el-input-number
|
|
|
- v-model="formData.training"
|
|
|
|
|
|
|
+ v-model="reportInfo.training"
|
|
|
:min="0"
|
|
:min="0"
|
|
|
:precision="0"
|
|
:precision="0"
|
|
|
controls-position="right"
|
|
controls-position="right"
|
|
@@ -333,7 +336,7 @@
|
|
|
<el-col :xs="24" :sm="12" :md="6" :lg="6" :xl="6">
|
|
<el-col :xs="24" :sm="12" :md="6" :lg="6" :xl="6">
|
|
|
<el-form-item label="QHSE培训人次" prop="participantsTraining">
|
|
<el-form-item label="QHSE培训人次" prop="participantsTraining">
|
|
|
<el-input-number
|
|
<el-input-number
|
|
|
- v-model="formData.participantsTraining"
|
|
|
|
|
|
|
+ v-model="reportInfo.participantsTraining"
|
|
|
:min="0"
|
|
:min="0"
|
|
|
:precision="0"
|
|
:precision="0"
|
|
|
controls-position="right"
|
|
controls-position="right"
|
|
@@ -343,7 +346,7 @@
|
|
|
<el-col :xs="24" :sm="12" :md="6" :lg="6" :xl="6">
|
|
<el-col :xs="24" :sm="12" :md="6" :lg="6" :xl="6">
|
|
|
<el-form-item label="QHSE培训学时数(小时)" prop="trainingsHours">
|
|
<el-form-item label="QHSE培训学时数(小时)" prop="trainingsHours">
|
|
|
<el-input-number
|
|
<el-input-number
|
|
|
- v-model="formData.trainingsHours"
|
|
|
|
|
|
|
+ v-model="reportInfo.trainingsHours"
|
|
|
:min="0"
|
|
:min="0"
|
|
|
:precision="2"
|
|
:precision="2"
|
|
|
controls-position="right"
|
|
controls-position="right"
|
|
@@ -365,7 +368,7 @@
|
|
|
<el-col :xs="24" :sm="12" :md="6" :lg="6" :xl="6">
|
|
<el-col :xs="24" :sm="12" :md="6" :lg="6" :xl="6">
|
|
|
<el-form-item label="水消耗(吨)" prop="waterConsumption">
|
|
<el-form-item label="水消耗(吨)" prop="waterConsumption">
|
|
|
<el-input-number
|
|
<el-input-number
|
|
|
- v-model="formData.waterConsumption"
|
|
|
|
|
|
|
+ v-model="reportInfo.waterConsumption"
|
|
|
:min="0"
|
|
:min="0"
|
|
|
:precision="2"
|
|
:precision="2"
|
|
|
controls-position="right"
|
|
controls-position="right"
|
|
@@ -375,7 +378,7 @@
|
|
|
<el-col :xs="24" :sm="12" :md="6" :lg="6" :xl="6">
|
|
<el-col :xs="24" :sm="12" :md="6" :lg="6" :xl="6">
|
|
|
<el-form-item label="柴油消耗(升)" prop="dieselConsumption">
|
|
<el-form-item label="柴油消耗(升)" prop="dieselConsumption">
|
|
|
<el-input-number
|
|
<el-input-number
|
|
|
- v-model="formData.dieselConsumption"
|
|
|
|
|
|
|
+ v-model="reportInfo.dieselConsumption"
|
|
|
:min="0"
|
|
:min="0"
|
|
|
:precision="2"
|
|
:precision="2"
|
|
|
controls-position="right"
|
|
controls-position="right"
|
|
@@ -385,7 +388,7 @@
|
|
|
<el-col :xs="24" :sm="12" :md="6" :lg="6" :xl="6">
|
|
<el-col :xs="24" :sm="12" :md="6" :lg="6" :xl="6">
|
|
|
<el-form-item label="用电量(千瓦·小时)" prop="electricityConsumption">
|
|
<el-form-item label="用电量(千瓦·小时)" prop="electricityConsumption">
|
|
|
<el-input-number
|
|
<el-input-number
|
|
|
- v-model="formData.electricityConsumption"
|
|
|
|
|
|
|
+ v-model="reportInfo.electricityConsumption"
|
|
|
:min="0"
|
|
:min="0"
|
|
|
:precision="2"
|
|
:precision="2"
|
|
|
controls-position="right"
|
|
controls-position="right"
|
|
@@ -395,7 +398,7 @@
|
|
|
<el-col :xs="24" :sm="12" :md="6" :lg="6" :xl="6">
|
|
<el-col :xs="24" :sm="12" :md="6" :lg="6" :xl="6">
|
|
|
<el-form-item label="天然气消耗量(立方米)" prop="naturalGasConsumption">
|
|
<el-form-item label="天然气消耗量(立方米)" prop="naturalGasConsumption">
|
|
|
<el-input-number
|
|
<el-input-number
|
|
|
- v-model="formData.naturalGasConsumption"
|
|
|
|
|
|
|
+ v-model="reportInfo.naturalGasConsumption"
|
|
|
:min="0"
|
|
:min="0"
|
|
|
:precision="2"
|
|
:precision="2"
|
|
|
controls-position="right"
|
|
controls-position="right"
|
|
@@ -416,15 +419,18 @@
|
|
|
<el-row :gutter="16">
|
|
<el-row :gutter="16">
|
|
|
<el-col :xs="24" :sm="12" :md="12" :lg="12" :xl="12">
|
|
<el-col :xs="24" :sm="12" :md="12" :lg="12" :xl="12">
|
|
|
<el-form-item label="工单填报人" prop="dutyPerson">
|
|
<el-form-item label="工单填报人" prop="dutyPerson">
|
|
|
- <el-input
|
|
|
|
|
- v-model="dutyPersonName"
|
|
|
|
|
|
|
+ <el-select
|
|
|
|
|
+ v-model="reportInfo.dutyPerson"
|
|
|
|
|
+ filterable
|
|
|
|
|
+ clearable
|
|
|
placeholder="请选择填报人"
|
|
placeholder="请选择填报人"
|
|
|
- readonly
|
|
|
|
|
- @click="openUserSelect">
|
|
|
|
|
- <template #suffix>
|
|
|
|
|
- <Icon icon="ep:search" class="cursor-pointer" />
|
|
|
|
|
- </template>
|
|
|
|
|
- </el-input>
|
|
|
|
|
|
|
+ style="width: 100%">
|
|
|
|
|
+ <el-option
|
|
|
|
|
+ v-for="item in userList"
|
|
|
|
|
+ :key="item.id"
|
|
|
|
|
+ :label="item.nickname"
|
|
|
|
|
+ :value="item.id" />
|
|
|
|
|
+ </el-select>
|
|
|
</el-form-item>
|
|
</el-form-item>
|
|
|
</el-col>
|
|
</el-col>
|
|
|
</el-row>
|
|
</el-row>
|
|
@@ -432,7 +438,7 @@
|
|
|
<el-col :xs="24" :sm="24" :md="24" :lg="24" :xl="24">
|
|
<el-col :xs="24" :sm="24" :md="24" :lg="24" :xl="24">
|
|
|
<el-form-item label="备注" prop="remark">
|
|
<el-form-item label="备注" prop="remark">
|
|
|
<el-input
|
|
<el-input
|
|
|
- v-model="formData.remark"
|
|
|
|
|
|
|
+ v-model="reportInfo.remark"
|
|
|
type="textarea"
|
|
type="textarea"
|
|
|
:rows="4"
|
|
:rows="4"
|
|
|
placeholder="请输入备注信息" />
|
|
placeholder="请输入备注信息" />
|
|
@@ -447,39 +453,37 @@
|
|
|
<el-button type="primary" @click="handleSubmit" :loading="submitLoading"> 提交 </el-button>
|
|
<el-button type="primary" @click="handleSubmit" :loading="submitLoading"> 提交 </el-button>
|
|
|
</div>
|
|
</div>
|
|
|
</el-form>
|
|
</el-form>
|
|
|
-
|
|
|
|
|
- <!-- 部门选择弹窗 -->
|
|
|
|
|
- <DeptSelectForm ref="deptSelectFormRef" :multiple="false" @confirm="handleDeptConfirm" />
|
|
|
|
|
-
|
|
|
|
|
- <!-- 用户选择弹窗 -->
|
|
|
|
|
- <UserSelectForm ref="userSelectFormRef" @confirm="handleUserConfirm" />
|
|
|
|
|
</div>
|
|
</div>
|
|
|
</template>
|
|
</template>
|
|
|
|
|
|
|
|
<script setup lang="ts">
|
|
<script setup lang="ts">
|
|
|
import { reactive, ref } from 'vue'
|
|
import { reactive, ref } from 'vue'
|
|
|
-import { useRouter } from 'vue-router'
|
|
|
|
|
|
|
+import { useRouter, useRoute } from 'vue-router'
|
|
|
import { FormInstance, FormRules } from 'element-plus'
|
|
import { FormInstance, FormRules } from 'element-plus'
|
|
|
import { QhseMonthReportApi } from '@/api/pms/qhse'
|
|
import { QhseMonthReportApi } from '@/api/pms/qhse'
|
|
|
-// import DeptSelectForm from '@/components/DeptSelectForm/qhseDept.vue'
|
|
|
|
|
-import UserSelectForm from '@/components/UserSelectForm/index.vue'
|
|
|
|
|
import { handleTree, defaultProps } from '@/utils/tree'
|
|
import { handleTree, defaultProps } from '@/utils/tree'
|
|
|
import * as DeptApi from '@/api/system/dept'
|
|
import * as DeptApi from '@/api/system/dept'
|
|
|
-const deptList2 = ref<Tree[]>([]) // 树形结构
|
|
|
|
|
|
|
+import * as UserApi from '@/api/system/user'
|
|
|
|
|
+import { getUserProfile } from '@/api/system/user/profile'
|
|
|
|
|
+import { useTagsViewStore } from '@/store/modules/tagsView'
|
|
|
|
|
+const { delView } = useTagsViewStore()
|
|
|
|
|
|
|
|
defineOptions({ name: 'MonthlyReportAdd' })
|
|
defineOptions({ name: 'MonthlyReportAdd' })
|
|
|
|
|
|
|
|
const router = useRouter()
|
|
const router = useRouter()
|
|
|
|
|
+const route = useRoute()
|
|
|
const message = useMessage()
|
|
const message = useMessage()
|
|
|
|
|
+const deptList2 = ref<Tree[]>([]) // 树形结构
|
|
|
|
|
+const userList = ref<any[]>([])
|
|
|
|
|
|
|
|
// 表单引用
|
|
// 表单引用
|
|
|
const formRef = ref<FormInstance>()
|
|
const formRef = ref<FormInstance>()
|
|
|
const submitLoading = ref(false)
|
|
const submitLoading = ref(false)
|
|
|
|
|
|
|
|
// 表单数据
|
|
// 表单数据
|
|
|
-const formData = reactive({
|
|
|
|
|
|
|
+let reportInfo = reactive({
|
|
|
title: '',
|
|
title: '',
|
|
|
- yearMonth: '',
|
|
|
|
|
|
|
+ yearMonths: '',
|
|
|
deptId: 0,
|
|
deptId: 0,
|
|
|
employee: '0',
|
|
employee: '0',
|
|
|
subcontractors: '0',
|
|
subcontractors: '0',
|
|
@@ -520,49 +524,43 @@ const formRules = reactive<FormRules>({
|
|
|
title: [{ required: true, message: '月报标题不能为空', trigger: 'blur' }],
|
|
title: [{ required: true, message: '月报标题不能为空', trigger: 'blur' }],
|
|
|
yearMonth: [{ required: true, message: '年月不能为空', trigger: 'change' }],
|
|
yearMonth: [{ required: true, message: '年月不能为空', trigger: 'change' }],
|
|
|
deptId: [{ required: true, message: '部门不能为空', trigger: 'change' }],
|
|
deptId: [{ required: true, message: '部门不能为空', trigger: 'change' }],
|
|
|
- dutyPerson: [{ required: true, message: '工单填报人不能为空', trigger: 'change' }]
|
|
|
|
|
|
|
+ dutyPerson: [{ required: true, message: '工单填报人不能为空', trigger: 'change' }],
|
|
|
|
|
+ employee: [{ required: true, message: '员工数不能为空', trigger: 'blur' }],
|
|
|
|
|
+ subcontractors: [{ required: true, message: '分包商人数不能为空', trigger: 'blur' }],
|
|
|
|
|
+ drivingMileage: [{ required: true, message: '行驶里程不能为空', trigger: 'blur' }],
|
|
|
|
|
+ totalManHours: [{ required: true, message: '总工时不能为空', trigger: 'blur' }],
|
|
|
|
|
+ withoutAccident: [{ required: true, message: '无事故累计天数不能为空', trigger: 'blur' }],
|
|
|
|
|
+ fatality: [{ required: true, message: '死亡不能为空', trigger: 'blur' }],
|
|
|
|
|
+ injury: [{ required: true, message: '损失工时事故不能为空', trigger: 'blur' }],
|
|
|
|
|
+ restrictedCase: [{ required: true, message: '受限事件不能为空', trigger: 'blur' }],
|
|
|
|
|
+ medicalCase: [{ required: true, message: '医疗事件不能为空', trigger: 'blur' }],
|
|
|
|
|
+ firstAidCase: [{ required: true, message: '急救事件不能为空', trigger: 'blur' }],
|
|
|
|
|
+ vehicleAccident: [{ required: true, message: '车辆事故不能为空', trigger: 'blur' }],
|
|
|
|
|
+ nearMiss: [{ required: true, message: '未遂事件次数不能为空', trigger: 'blur' }],
|
|
|
|
|
+ spill: [{ required: true, message: '泄漏事件次数不能为空', trigger: 'blur' }],
|
|
|
|
|
+ lifeSavingRules: [{ required: true, message: '违反保命规则的次数不能为空', trigger: 'blur' }],
|
|
|
|
|
+ toolboxTalk: [{ required: true, message: '班前会次不能为空', trigger: 'blur' }],
|
|
|
|
|
+ committeeMeeting: [{ required: true, message: '委员会会议不能为空', trigger: 'blur' }],
|
|
|
|
|
+ monthlyMeeting: [{ required: true, message: '月度会议不能为空', trigger: 'blur' }],
|
|
|
|
|
+ companyHazard: [{ required: true, message: '隐患排查次数不能为空', trigger: 'blur' }],
|
|
|
|
|
+ qhseInspection: [{ required: true, message: '请填写QHSE检查次数', trigger: 'blur' }],
|
|
|
|
|
+ socCards: [{ required: true, message: 'SOC 卡片不能为空', trigger: 'blur' }],
|
|
|
|
|
+ ptwAudit: [{ required: true, message: 'PTW 审核不能为空', trigger: 'blur' }],
|
|
|
|
|
+ jsa: [{ required: true, message: 'JSA 不能为空', trigger: 'blur' }],
|
|
|
|
|
+ drills: [{ required: true, message: '演练次数不能为空', trigger: 'blur' }],
|
|
|
|
|
+ training: [{ required: true, message: '培训次数不能为空', trigger: 'blur' }],
|
|
|
|
|
+ participantsTraining: [{ required: true, message: 'QHSE培训人次不能为空', trigger: 'blur' }],
|
|
|
|
|
+ waterConsumption: [{ required: true, message: '水耗不能为空', trigger: 'blur' }],
|
|
|
|
|
+ dieselConsumption: [{ required: true, message: '柴油耗能不能为空', trigger: 'blur' }],
|
|
|
|
|
+ electricityConsumption: [{ required: true, message: '电耗不能为空', trigger: 'blur' }],
|
|
|
|
|
+ naturalGasConsumption: [{ required: true, message: '天然气耗不能为空', trigger: 'blur' }],
|
|
|
|
|
+ trainingsHours: [{ required: true, message: '培训课时不能为空', trigger: 'blur' }],
|
|
|
|
|
+ yearMonths: [{ required: true, message: '年月不能为空', trigger: 'change' }]
|
|
|
})
|
|
})
|
|
|
|
|
|
|
|
// 部门名称显示
|
|
// 部门名称显示
|
|
|
const deptName = ref('')
|
|
const deptName = ref('')
|
|
|
|
|
|
|
|
-// 填报人名称显示
|
|
|
|
|
-const dutyPersonName = ref('')
|
|
|
|
|
-
|
|
|
|
|
-// 部门选择弹窗引用
|
|
|
|
|
-const deptSelectFormRef = ref()
|
|
|
|
|
-
|
|
|
|
|
-// 用户选择弹窗引用
|
|
|
|
|
-const userSelectFormRef = ref()
|
|
|
|
|
-
|
|
|
|
|
-/** 打开部门选择 */
|
|
|
|
|
-const openDeptSelect = () => {
|
|
|
|
|
- deptSelectFormRef.value?.open()
|
|
|
|
|
-}
|
|
|
|
|
-
|
|
|
|
|
-/** 部门选择确认 */
|
|
|
|
|
-const handleDeptConfirm = async (deptList: any[]) => {
|
|
|
|
|
- if (deptList && deptList.length > 0) {
|
|
|
|
|
- const dept = deptList[0]
|
|
|
|
|
- formData.deptId = dept.id
|
|
|
|
|
- deptName.value = dept.name
|
|
|
|
|
- }
|
|
|
|
|
-}
|
|
|
|
|
-
|
|
|
|
|
-/** 打开用户选择 */
|
|
|
|
|
-const openUserSelect = () => {
|
|
|
|
|
- userSelectFormRef.value?.open()
|
|
|
|
|
-}
|
|
|
|
|
-
|
|
|
|
|
-/** 用户选择确认 */
|
|
|
|
|
-const handleUserConfirm = (userId: any, userList: any[]) => {
|
|
|
|
|
- if (userList && userList.length > 0) {
|
|
|
|
|
- const user = userList[0]
|
|
|
|
|
- formData.dutyPerson = user.id
|
|
|
|
|
- dutyPersonName.value = user.nickname
|
|
|
|
|
- }
|
|
|
|
|
-}
|
|
|
|
|
-
|
|
|
|
|
/** 提交表单 */
|
|
/** 提交表单 */
|
|
|
const handleSubmit = async () => {
|
|
const handleSubmit = async () => {
|
|
|
if (!formRef.value) return
|
|
if (!formRef.value) return
|
|
@@ -573,7 +571,7 @@ const handleSubmit = async () => {
|
|
|
|
|
|
|
|
submitLoading.value = true
|
|
submitLoading.value = true
|
|
|
try {
|
|
try {
|
|
|
- await QhseMonthReportApi.createQhseMonthReport(formData)
|
|
|
|
|
|
|
+ await QhseMonthReportApi.updateQhseMonthReport(reportInfo)
|
|
|
message.success('新增成功')
|
|
message.success('新增成功')
|
|
|
// 返回列表页或上一页
|
|
// 返回列表页或上一页
|
|
|
router.back()
|
|
router.back()
|
|
@@ -586,11 +584,22 @@ const handleSubmit = async () => {
|
|
|
|
|
|
|
|
/** 取消 */
|
|
/** 取消 */
|
|
|
const handleCancel = () => {
|
|
const handleCancel = () => {
|
|
|
- router.back()
|
|
|
|
|
|
|
+ delView(unref(router.currentRoute))
|
|
|
|
|
+ router.push({ name: 'QhseMonthlyReport', params: {} })
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
|
|
+const userInfo = ref<any>({})
|
|
|
onMounted(async () => {
|
|
onMounted(async () => {
|
|
|
|
|
+ const users = await getUserProfile()
|
|
|
|
|
+ userInfo.value = users
|
|
|
deptList2.value = handleTree(await DeptApi.getSimpleDeptList())
|
|
deptList2.value = handleTree(await DeptApi.getSimpleDeptList())
|
|
|
|
|
+ userList.value = await UserApi.selectedDeptsEmployee({
|
|
|
|
|
+ deptIds: userInfo.value.dept.id
|
|
|
|
|
+ })
|
|
|
|
|
+ const res = await QhseMonthReportApi.getQhseMonthReport(route.params.id)
|
|
|
|
|
+ const data = (res as any)?.data ?? res ?? {}
|
|
|
|
|
+
|
|
|
|
|
+ Object.assign(reportInfo, data)
|
|
|
})
|
|
})
|
|
|
</script>
|
|
</script>
|
|
|
<style scoped lang="scss">
|
|
<style scoped lang="scss">
|