1174 lines
42 KiB
Vue
1174 lines
42 KiB
Vue
<template>
|
|
<view>
|
|
<Navbar :title="opt.title" />
|
|
<div class="tabs" v-if="!opt.isAdd && !opt.isRecord">
|
|
<u-tabs :list="tabList" @click="handleTab" lineWidth="40"></u-tabs>
|
|
</div>
|
|
<div class="content">
|
|
<div v-if="currentTab == 0">
|
|
<u-form :model="formData" :rules="rules" ref="uForm" labelWidth="auto" labelPosition="left">
|
|
<Title title="基本信息" />
|
|
<u-form-item label="隐患问题编号" prop="pitfallCode">
|
|
<u-input v-model="formData.pitfallCode" placeholder="隐患问题编号" border="bottom" disabled></u-input>
|
|
</u-form-item>
|
|
<u-form-item label="检查记录编号" prop="recordCode">
|
|
<u-input v-model="formData.recordCode" placeholder="检查记录编号" border="bottom" disabled></u-input>
|
|
</u-form-item>
|
|
<u-form-item label="对应检查级别" prop="checkLevelName">
|
|
<u-input v-model="formData.checkLevelName" placeholder="检查级别" border="bottom" disabled></u-input>
|
|
</u-form-item>
|
|
<u-form-item label="排查类型" prop="checkTypeName" :required="opt.isAdd">
|
|
<u-cell-group :border="false">
|
|
<u-cell
|
|
:title="formData.checkTypeName"
|
|
isLink
|
|
:label="formData.checkTypeName ? '' : '请选择排查类型'"
|
|
@click="handlePicker(8)"
|
|
:disabled="!opt.isAdd || opt.checkType ? true : false"
|
|
></u-cell>
|
|
</u-cell-group>
|
|
</u-form-item>
|
|
<u-form-item label="创建人" prop="createUserName">
|
|
<u-input v-model="formData.createUserName" placeholder="创建人" border="bottom" disabled></u-input>
|
|
</u-form-item>
|
|
<u-form-item label="创建时间" prop="createTime">
|
|
<u-input v-model="formData.createTime" placeholder="创建时间" border="bottom" disabled></u-input>
|
|
</u-form-item>
|
|
<u-form-item label="整改接收时间" prop="rectificationReceiveTime">
|
|
<u-input
|
|
v-model="formData.rectificationReceiveTime"
|
|
placeholder="整改接收时间"
|
|
border="bottom"
|
|
disabled
|
|
></u-input>
|
|
</u-form-item>
|
|
<u-form-item label="整改反馈时间" prop="rectificationFeedbackTime">
|
|
<u-input
|
|
v-model="formData.rectificationFeedbackTime"
|
|
placeholder="整改反馈时间"
|
|
border="bottom"
|
|
disabled
|
|
></u-input>
|
|
</u-form-item>
|
|
<u-form-item label="整改状态" prop="checkStatus">
|
|
<u-input v-model="formData.checkStatus" placeholder="整改状态" border="bottom" disabled></u-input>
|
|
</u-form-item>
|
|
<!-- 检查方填写 -->
|
|
<Title title="检查方填写" />
|
|
<u-form-item label="检查人" prop="checkUserName" :required="opt.isAdd">
|
|
<u-cell-group :border="false">
|
|
<u-cell
|
|
:title="formData.checkUserName"
|
|
isLink
|
|
:label="formData.checkUserName ? '' : '请选择检查人'"
|
|
@click="handlePicker(1)"
|
|
:disabled="!opt.isAdd"
|
|
></u-cell>
|
|
</u-cell-group>
|
|
</u-form-item>
|
|
<u-form-item label="发现日期" prop="findTime" :required="opt.isAdd">
|
|
<u-cell-group :border="false">
|
|
<u-cell
|
|
:title="formData.findTime"
|
|
isLink
|
|
:label="formData.findTime ? '' : '请选择发现日期'"
|
|
@click="handlePicker2(1)"
|
|
:disabled="!opt.isAdd"
|
|
></u-cell>
|
|
</u-cell-group>
|
|
</u-form-item>
|
|
<u-form-item label="隐患工程" prop="proName" :required="opt.isAdd">
|
|
<u-cell-group :border="false">
|
|
<u-cell
|
|
:title="formData.proName"
|
|
isLink
|
|
:label="formData.proName ? '' : '请选择隐患工程'"
|
|
@click="handlePicker(2)"
|
|
:disabled="!opt.isAdd"
|
|
></u-cell>
|
|
</u-cell-group>
|
|
</u-form-item>
|
|
<u-form-item label="整改责任承包商" prop="subName" :required="opt.isAdd">
|
|
<u-cell-group :border="false">
|
|
<u-cell
|
|
:title="formData.subName"
|
|
isLink
|
|
:label="formData.subName ? '' : '请选择整改责任承包商'"
|
|
@click="handlePicker(9)"
|
|
:disabled="!opt.isAdd ? true : formData.proId ? false : true"
|
|
></u-cell>
|
|
</u-cell-group>
|
|
</u-form-item>
|
|
<u-form-item label="隐患问题类别" prop="pitfallTypeName" :required="opt.isAdd">
|
|
<u-cell-group :border="false">
|
|
<u-cell
|
|
:title="formData.pitfallTypeName"
|
|
isLink
|
|
:label="formData.pitfallTypeName ? '' : '请选择隐患问题类别'"
|
|
@click="handlePicker(3)"
|
|
:disabled="!opt.isAdd"
|
|
></u-cell>
|
|
</u-cell-group>
|
|
</u-form-item>
|
|
<u-form-item label="隐患问题级别" prop="pitfallLevelName" :required="opt.isAdd">
|
|
<u-cell-group :border="false">
|
|
<u-cell
|
|
:title="formData.pitfallLevelName"
|
|
isLink
|
|
:label="formData.pitfallLevelName ? '' : '请选择隐患问题级别'"
|
|
@click="handlePicker(4)"
|
|
:disabled="!opt.isAdd"
|
|
></u-cell>
|
|
</u-cell-group>
|
|
</u-form-item>
|
|
<u-form-item label="期限整改时间" prop="correctionTime" :required="opt.isAdd">
|
|
<u-cell-group :border="false">
|
|
<u-cell
|
|
:title="formData.correctionTime"
|
|
isLink
|
|
:label="formData.correctionTime ? '' : '请选择期限整改时间'"
|
|
@click="handlePicker2(2)"
|
|
:disabled="!opt.isAdd"
|
|
></u-cell>
|
|
</u-cell-group>
|
|
</u-form-item>
|
|
<u-form-item label="承包商责任人" prop="subPersonName" :required="opt.isAdd">
|
|
<u-input v-model="formData.subPersonName" placeholder="承包商责任人" border="bottom" disabled></u-input>
|
|
</u-form-item>
|
|
<u-form-item label="上传图片" prop="checkPhotoList">
|
|
<uni-file-picker
|
|
v-model="formData.checkPhotoList"
|
|
:auto-upload="false"
|
|
ref="files"
|
|
limit="9"
|
|
@select="selectImg"
|
|
@delete="deleteImg"
|
|
:disabled="!opt.isAdd"
|
|
:readonly="!opt.isAdd ? true : false"
|
|
/>
|
|
</u-form-item>
|
|
<u-form-item label="隐患问题描述" prop="pitfallDescription" :required="opt.isAdd">
|
|
<u-textarea
|
|
v-model="formData.pitfallDescription"
|
|
placeholder="请输入隐患问题描述"
|
|
:rows="5"
|
|
:disabled="!opt.isAdd"
|
|
maxlength="2000"
|
|
count
|
|
></u-textarea>
|
|
</u-form-item>
|
|
<u-form-item label="整改措施建议" prop="suggestion">
|
|
<u-textarea
|
|
v-model="formData.suggestion"
|
|
placeholder="请输入整改措施建议"
|
|
:rows="5"
|
|
:disabled="!opt.isAdd"
|
|
maxlength="2000"
|
|
count
|
|
></u-textarea>
|
|
</u-form-item>
|
|
<!-- 整改方填写 -->
|
|
<Title title="整改方填写" />
|
|
<u-form-item label="责任人" prop="dutyUserName">
|
|
<u-input v-model="formData.dutyUserName" placeholder="责任人" border="bottom" disabled></u-input>
|
|
</u-form-item>
|
|
<u-form-item label="产生原因描述" prop="generateReason">
|
|
<u-input v-model="formData.generateReason" placeholder="产生原因" border="bottom" disabled></u-input>
|
|
</u-form-item>
|
|
<u-form-item label="整改情况" prop="correctionStatus">
|
|
<u-textarea
|
|
v-model="formData.correctionStatus"
|
|
placeholder="请输入整改情况"
|
|
:rows="5"
|
|
disabled
|
|
></u-textarea>
|
|
</u-form-item>
|
|
<u-form-item label="整改图片" prop="rectificationPhotoList">
|
|
<Preview :dataList="formData.rectificationPhotoList" />
|
|
</u-form-item>
|
|
<u-form-item label="附件" prop="attachmentList">
|
|
<Preview :dataList="formData.attachmentList" />
|
|
</u-form-item>
|
|
<!-- 验收方 -->
|
|
<Title title="验收方" />
|
|
<u-form-item label="验收部门" prop="deptName" :required="opt.isAdd">
|
|
<u-cell-group :border="false">
|
|
<u-cell
|
|
:title="formData.deptName"
|
|
isLink
|
|
:label="formData.deptName ? '' : '请选择验收部门'"
|
|
@click="handlePicker(5)"
|
|
:disabled="!opt.isAdd"
|
|
></u-cell>
|
|
</u-cell-group>
|
|
</u-form-item>
|
|
<u-form-item label="整改验收人" prop="userName" :required="opt.isAdd">
|
|
<u-cell-group :border="false">
|
|
<u-cell
|
|
:title="formData.userName"
|
|
isLink
|
|
:label="formData.userName ? '' : '请选择整改验收人'"
|
|
@click="handlePicker(6)"
|
|
:disabled="!opt.isAdd ? true : formData.deptId ? false : true"
|
|
></u-cell>
|
|
</u-cell-group>
|
|
</u-form-item>
|
|
<u-form-item label="是否进行流程审批" prop="isProcessLabel" :required="opt.isAdd">
|
|
<u-cell-group :border="false">
|
|
<u-cell
|
|
:title="formData.isProcessLabel"
|
|
isLink
|
|
:label="formData.isProcessLabel ? '' : '请选择是否进行流程审批'"
|
|
@click="handlePicker(7)"
|
|
:disabled="!opt.isAdd"
|
|
></u-cell>
|
|
</u-cell-group>
|
|
</u-form-item>
|
|
<u-form-item label="整改意见" prop="opinion" :required="opt.isReceive">
|
|
<u-textarea
|
|
v-model="formData.opinion"
|
|
placeholder="请输入整改意见"
|
|
:rows="5"
|
|
:disabled="!opt.isReceive"
|
|
maxlength="2000"
|
|
count
|
|
></u-textarea>
|
|
</u-form-item>
|
|
<u-form-item label="备注" prop="remarks">
|
|
<u-textarea
|
|
v-model="formData.remarks"
|
|
placeholder="请输入备注"
|
|
:rows="5"
|
|
:disabled="!opt.isReceive"
|
|
maxlength="2000"
|
|
count
|
|
></u-textarea>
|
|
</u-form-item>
|
|
<!-- 延期信息 -->
|
|
<Title title="延期信息" />
|
|
<u-form-item label="延期整改时间" prop="delayTime">
|
|
<u-input v-model="formData.delayTime" placeholder="请选择延期整改时间" border="bottom" disabled></u-input>
|
|
</u-form-item>
|
|
<u-form-item label="延期原因" prop="delayReason">
|
|
<u-textarea v-model="formData.delayReason" placeholder="请输入延期原因" :rows="5" disabled></u-textarea>
|
|
</u-form-item>
|
|
</u-form>
|
|
<div>
|
|
<u-button v-if="opt.isAdd" type="primary" shape="circle" @click="submitForm" style="margin: 30px 0">
|
|
下 发
|
|
</u-button>
|
|
<div v-if="opt.isReceive" class="btns">
|
|
<u-button type="primary" shape="circle" @click="submitForm2(1)" style="margin: 30px 0">验收通过</u-button>
|
|
<u-button type="error" shape="circle" @click="submitForm2(2)" style="margin: 30px 0 30px 10px">
|
|
驳 回
|
|
</u-button>
|
|
</div>
|
|
<div v-if="opt.isAcceptance" class="btns">
|
|
<u-button type="primary" shape="circle" @click="submitFormDelay(1)" style="margin: 30px 0">
|
|
验收通过
|
|
</u-button>
|
|
<u-button type="error" shape="circle" @click="submitFormDelay(2)" style="margin: 30px 0 30px 10px">
|
|
驳 回
|
|
</u-button>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
<div v-else-if="currentTab == 1">
|
|
<Title title="审批意见" />
|
|
<u-textarea
|
|
v-model="approvalOpinion"
|
|
placeholder="请输入内容"
|
|
count
|
|
height="105"
|
|
@blur="filter"
|
|
:disabled="!opt.isApprove"
|
|
/>
|
|
<Title title="审批记录" />
|
|
<Steps :data="approvalRecordList" />
|
|
<TabbarBtn
|
|
:showBtn="opt.finalCheck != 0 ? true : false"
|
|
@reject="appReject"
|
|
@handlePermit="handleAppPermit"
|
|
@handleEnd="handleAppEnd"
|
|
v-if="opt.isApprove"
|
|
/>
|
|
</div>
|
|
</div>
|
|
<u-picker
|
|
v-if="showPicker"
|
|
:show="showPicker"
|
|
:columns="columns"
|
|
keyName="label"
|
|
@cancel="showPicker = false"
|
|
@confirm="confirm"
|
|
></u-picker>
|
|
<ba-tree-picker
|
|
ref="treePicker"
|
|
:multiple="false"
|
|
@select-change="changeDept"
|
|
title="选择部门"
|
|
:localdata="deptOpts"
|
|
valueKey="id"
|
|
textKey="label"
|
|
childrenKey="children"
|
|
/>
|
|
<!-- 日期 -->
|
|
<u-datetime-picker
|
|
:show="showPicker2"
|
|
v-model="dataTime"
|
|
:minDate="minDate"
|
|
:maxDate="maxDate"
|
|
mode="date"
|
|
@cancel="showPicker2 = false"
|
|
@confirm="confirm2"
|
|
></u-datetime-picker>
|
|
|
|
<!-- 延期驳回弹框 -->
|
|
<u-modal :show="delayReason" title="驳回原因" showCancelButton @close="delayReason = false" @confirm="submitDelayReason">
|
|
<view class="slot-content" style="width: 100%">
|
|
<div class="delay">
|
|
<u-textarea
|
|
v-model="rejectionDelay"
|
|
placeholder="请输入驳回原因"
|
|
:rows="5"
|
|
maxlength="200"
|
|
count
|
|
></u-textarea>
|
|
</div>
|
|
</view>
|
|
</u-modal>
|
|
<u-loading-page :loading="isLoading" icon-size="39" style="z-index: 99999"></u-loading-page>
|
|
</view>
|
|
</template>
|
|
|
|
<script>
|
|
import { dictTableOption } from '@/api/tool/select'
|
|
import {
|
|
getOwnerSelect,
|
|
getProSelect,
|
|
getTypeOfViolationSelect,
|
|
getConsByProIdSelect,
|
|
deptTreeSelect,
|
|
getDeptUserSelect,
|
|
addHiddenDangerRectification,
|
|
uploadFileUrl,
|
|
getHiddenDangerRectificationForm,
|
|
updateHiddenDangerRectification,
|
|
updateSuggestionsForRectification,
|
|
submitApproval,
|
|
submitPersonApproval,
|
|
approvalHistory,
|
|
updateDeferredAcceptancePassed, // 延期验收通过
|
|
updateReasonForDelay // 延期驳回
|
|
} from '@/api/hiddenDangerViolation'
|
|
import { encryptCBC, decryptCBC } from '@/utils/aescbc'
|
|
import config from '@/config'
|
|
import { filterInput } from '@/utils/regular'
|
|
import Steps from 'pages/component/Steps'
|
|
import TabbarBtn from 'pages/projectApproval/component/TabbarBtn'
|
|
import baTreePicker from '@/components/ba-tree-picker/ba-tree-picker'
|
|
|
|
export default {
|
|
components: { Steps, TabbarBtn, baTreePicker },
|
|
data() {
|
|
return {
|
|
delayReason: false,
|
|
rejectionDelay: '',
|
|
token: '',
|
|
isLoading: false,
|
|
actionUrl: uploadFileUrl,
|
|
currentPicker: 1, // 1-检查人, 2-隐患工程, 3-隐患问题类别, 4-隐患问题级别, 5-整改验收部门, 6-整改验收人, 7-是否进行流程审批, 8-排查类型
|
|
showPicker: false,
|
|
columns: [],
|
|
currentTime: 1, // 1-发现日期, 2-期限整改时间
|
|
showPicker2: false,
|
|
dataTime: Number(new Date()),
|
|
minDate: 0,
|
|
maxDate: 0,
|
|
opt: {},
|
|
currentTab: 0,
|
|
tabList: [{ name: '隐患整改单' }, { name: '审批信息' }],
|
|
isFrom: '1', // 采集来源1日常检查2安全大检查;3随手拍
|
|
formData: {
|
|
// 基本信息
|
|
pitfallCode: '', // 隐患问题编号
|
|
recordCode: '', // 检查记录编号
|
|
checkLevel: '', // 对应检查级别id
|
|
checkLevelName: '', // 对应检查级别
|
|
checkType: '', // 排查类型
|
|
checkTypeName: '', // 排查类型
|
|
createUserName: uni.getStorageSync('userInfo').nickName, // 创建人
|
|
createTime: '', // 创建时间
|
|
rectificationReceiveTime: '', // 整改接收时间
|
|
rectificationFeedbackTime: '', // 整改反馈时间
|
|
checkStatus: '', // 整改状态
|
|
// 检查方填写
|
|
checkUserId: '', // 检查人id
|
|
checkUserName: '', // 检查人
|
|
findTime: '', // 发现日期
|
|
proId: '', // 隐患工程id
|
|
proName: '', // 隐患工程
|
|
subId: '', // 整改责任承包商id
|
|
subName: '', // 整改责任承包商
|
|
pitfallTypeId: '', // 隐患问题类别id
|
|
pitfallTypeName: '', // 隐患问题类别
|
|
pitfallLevelId: '', // 隐患问题级别id
|
|
pitfallLevelName: '', // 隐患问题级别
|
|
correctionTime: '', // 期限整改时间
|
|
subPersonId: '', // 承包商责任人id
|
|
subPersonName: '', // 承包商责任人
|
|
supUuid: '', // uuid
|
|
checkPhotoList: [], // 图片列表
|
|
handlePhotoList: [], // 处理后图片
|
|
pitfallDescription: '', // 隐患问题描述
|
|
suggestion: '', // 整改措施建议
|
|
dutyUserId: '', // 责任人id
|
|
dutyUserName: '', // 责任人
|
|
generateReason: '', // 产生原因
|
|
correctionStatus: '', // 整改情况
|
|
rectificationPhotoList: [], // 图片列表
|
|
attachmentList: [], // 文件列表
|
|
// 验收方
|
|
deptId: undefined, // 验收部门id
|
|
deptName: '', // 验收部门
|
|
userId: '', // 验收人id
|
|
userName: '', // 验收人
|
|
isProcess: '', // 是否进行流程审批
|
|
isProcessLabel: '', // 是否进行流程审批
|
|
opinion: '', // 整改意见
|
|
remarks: '', // 备注
|
|
// 延期信息
|
|
delayTime: '', // 延期整改时间
|
|
delayReason: '' // 延期原因
|
|
},
|
|
approvalOpinion: '', // 审批意见
|
|
approvalRecordList: [], // 审批记录
|
|
// 排查类型-下拉
|
|
checkTypeOpts: [],
|
|
// 检查人-下拉
|
|
checkUserOpts: [],
|
|
// 隐患工程-下拉
|
|
proOpts: [],
|
|
// 整改责任承包商-下拉
|
|
subOpts: [],
|
|
// 隐患问题类别-下拉
|
|
pitfallTypeOpts: [],
|
|
// 隐患问题级别-下拉
|
|
pitfallLevelOpts: [],
|
|
// 整改验收部门-下拉
|
|
deptOpts: [],
|
|
// 整改验收人-下拉
|
|
userOpts: [],
|
|
// 是否进行流程审批-下拉
|
|
isProcessOpts: [
|
|
{ label: '是', value: '1' },
|
|
{ label: '否', value: '0' }
|
|
],
|
|
rules: [],
|
|
// 校验基础信息,检查方填写,验收方
|
|
rules1: {
|
|
checkTypeName: [{ required: true, message: '请选择排查类型', trigger: 'blur' }],
|
|
checkUserName: [{ required: true, message: '请选择检查人', trigger: 'blur' }],
|
|
findTime: [{ required: true, message: '请选择发现日期', trigger: 'blur' }],
|
|
proName: [{ required: true, message: '请选择隐患工程', trigger: 'blur' }],
|
|
pitfallTypeName: [{ required: true, message: '请选择隐患问题类别', trigger: 'blur' }],
|
|
pitfallLevelName: [{ required: true, message: '请选择隐患问题级别', trigger: 'blur' }],
|
|
correctionTime: [{ required: true, message: '请选择期限整改时间', trigger: 'blur' }],
|
|
pitfallDescription: [{ required: true, message: '请输入隐患问题描述', trigger: 'blur' }],
|
|
deptName: [{ required: true, message: '请选择验收部门', trigger: 'blur' }],
|
|
userName: [{ required: true, message: '请选择整改验收人', trigger: 'blur' }],
|
|
isProcessLabel: [{ required: true, message: '请选择是否进行流程审批', trigger: 'blur' }],
|
|
subName: [{ required: true, message: '请选择整改责任承包商', trigger: 'blur' }],
|
|
subPersonName: [{ required: true, message: '请输入承包商责任人', trigger: 'blur' }]
|
|
},
|
|
// 验收
|
|
rules2: {
|
|
opinion: [{ required: true, message: '请输入整改意见', trigger: 'blur' }]
|
|
}
|
|
}
|
|
},
|
|
// 监听 this.formData.proId 的变化,获取整改责任承包商-下拉
|
|
watch: {
|
|
'formData.proId': {
|
|
handler: function (val) {
|
|
console.log('🚀 ~ 监听 val:', val)
|
|
// 清除整改责任承包商与承包商责任人
|
|
this.formData.subId = ''
|
|
this.formData.subName = ''
|
|
this.formData.subPersonName = ''
|
|
this.getConsByProIdSelect(val)
|
|
},
|
|
immediate: false
|
|
}
|
|
},
|
|
onLoad(opt) {
|
|
this.token = uni.getStorageSync('App-Token')
|
|
this.opt = JSON.parse(opt.params)
|
|
this.currentTab = this.opt.isRecord ? 1 : 0
|
|
this.formData.recordCode = this.opt.recordCode || ''
|
|
this.formData.checkLevel = this.opt.inspectLevel || ''
|
|
this.formData.checkLevelName = this.opt.inspectLevelName || ''
|
|
this.formData.checkType = this.opt.checkType || ''
|
|
this.formData.checkTypeName = this.opt.checkTypeName || ''
|
|
this.formData.rectificationReceiveTime = this.opt.rectificationReceiveTime || this.getTodayDate()
|
|
this.isFrom = this.opt.id ? '2' : '1'
|
|
if (this.opt.isAdd) {
|
|
this.rules = this.rules1
|
|
} else if (this.opt.isReceive) {
|
|
this.rules = this.rules2
|
|
} else {
|
|
this.rules = []
|
|
}
|
|
console.log('🚀 ~ onLoad ~ this.rules:', this.rules)
|
|
console.log('🚀 ~ onLoad ~ this.opt', this.opt)
|
|
this.getCheckLevelType()
|
|
this.getOwnerSelect()
|
|
this.getProSelect()
|
|
this.getTroubleType()
|
|
this.getTroubleLevel()
|
|
this.getDeptTreeSelect()
|
|
this.getApprovalHistory()
|
|
if (!this.opt.isAdd) {
|
|
this.getDetail()
|
|
}
|
|
},
|
|
methods: {
|
|
// 获取审批记录
|
|
async getApprovalHistory() {
|
|
try {
|
|
const params = { taskId: this.opt.taskId, checkType: this.opt.isRecord ? 2 : 1 }
|
|
console.log('🚀 ~ 审批记录 ~ params:', params)
|
|
const res = await approvalHistory(params)
|
|
console.log('🚀 ~ 审批记录 ~ res:', res)
|
|
this.approvalRecordList = res.data
|
|
} catch (error) {
|
|
console.log('获取审批记录失败', error)
|
|
}
|
|
},
|
|
// 查看详情
|
|
async getDetail() {
|
|
try {
|
|
const params = { id: this.opt.id }
|
|
const res = await getHiddenDangerRectificationForm(params)
|
|
console.log('🚀 ~ getDetail ~ res:', res)
|
|
this.formData = { ...res.data }
|
|
this.formData.isProcessLabel = this.formData.isProcess == '1' ? '是' : '否'
|
|
this.formData.checkPhotoList.forEach(item => {
|
|
item.filePath = config.fileUrl + item.filePath
|
|
item.url = item.filePath
|
|
})
|
|
this.formData.rectificationPhotoList.forEach(item => {
|
|
item.url = item.filePath
|
|
})
|
|
this.formData.attachmentList.forEach(item => {
|
|
item.url = item.filePath
|
|
})
|
|
this.$nextTick(() => {
|
|
this.formData.subId = res.data.subId
|
|
this.formData.subName = res.data.subName
|
|
this.formData.subPersonId = res.data.subPersonId
|
|
this.formData.subPersonName = res.data.subPersonName
|
|
})
|
|
} catch (error) {
|
|
console.log('获取详情失败', error)
|
|
}
|
|
},
|
|
getTodayDate() {
|
|
const today = new Date()
|
|
const year = today.getFullYear()
|
|
const month = String(today.getMonth() + 1).padStart(2, '0')
|
|
const day = String(today.getDate()).padStart(2, '0')
|
|
return `${year}-${month}-${day}`
|
|
},
|
|
// 检查人-下拉
|
|
async getOwnerSelect() {
|
|
try {
|
|
const res = await getOwnerSelect()
|
|
this.checkUserOpts = res.data
|
|
} catch (error) {
|
|
console.log('获取检查人-下拉失败', error)
|
|
}
|
|
},
|
|
// 隐患工程-下拉
|
|
async getProSelect() {
|
|
try {
|
|
const res = await getProSelect()
|
|
console.log('🚀 ~ 工程下拉 ~ res:', res)
|
|
this.proOpts = res.data
|
|
} catch (error) {
|
|
console.log('获取隐患工程-下拉失败', error)
|
|
}
|
|
},
|
|
// 隐患问题类别-下拉
|
|
async getTroubleType() {
|
|
try {
|
|
const res = await getTypeOfViolationSelect({ type: '1' })
|
|
this.pitfallTypeOpts = res.data
|
|
} catch (error) {
|
|
console.log('获取隐患问题类别-下拉失败', error)
|
|
}
|
|
},
|
|
// 隐患问题级别-yn_trouble_level
|
|
async getTroubleLevel() {
|
|
try {
|
|
const params = {
|
|
dictType: 'yn_trouble_level',
|
|
dictValue: ''
|
|
}
|
|
const res = await dictTableOption(params)
|
|
this.pitfallLevelOpts = res.data
|
|
} catch (error) {
|
|
console.log('获取隐患问题级别-下拉失败', error)
|
|
}
|
|
},
|
|
// 获取整改责任承包商-下拉
|
|
async getConsByProIdSelect(val) {
|
|
try {
|
|
// 清除 承包商责任人
|
|
this.formData.subPersonName = ''
|
|
const params = {
|
|
proId: val
|
|
}
|
|
const res = await getConsByProIdSelect(params)
|
|
console.log('🚀 ~ getConsByProIdSelect ~ res:', res)
|
|
this.subOpts = res.data
|
|
} catch (error) {
|
|
console.log('获取整改责任承包商-下拉失败', error)
|
|
}
|
|
},
|
|
// 整改验收部门-树形下拉
|
|
async getDeptTreeSelect() {
|
|
try {
|
|
const res = await deptTreeSelect()
|
|
this.deptOpts = res.data
|
|
console.log('🚀 ~ 树 ~ deptOpts:', this.deptOpts)
|
|
} catch (error) {
|
|
console.log('获取整改验收部门-树形下拉失败', error)
|
|
}
|
|
},
|
|
// 整改接收人-下拉
|
|
async getDeptUserSelect(val) {
|
|
try {
|
|
this.formData.userId = ''
|
|
this.formData.userName = ''
|
|
this.userOpts = []
|
|
const params = {
|
|
deptId: val
|
|
}
|
|
const res = await getDeptUserSelect(params)
|
|
this.userOpts = res.data
|
|
} catch (error) {
|
|
console.log('获取整改接收人-下拉失败', error)
|
|
}
|
|
},
|
|
handleTab(item) {
|
|
console.log('🚀 ~ handleTab ~ item', item)
|
|
this.currentTab = item.index
|
|
},
|
|
// 过滤输入特殊字符
|
|
filter() {
|
|
this.approvalOpinion = filterInput(this.approvalOpinion)
|
|
},
|
|
async getCheckLevelType() {
|
|
try {
|
|
const params = {
|
|
dictType: 'yh_inspect_level',
|
|
dictValue: ''
|
|
}
|
|
const params2 = {
|
|
dictType: 'yh_check_type',
|
|
dictValue: ''
|
|
}
|
|
const res2 = await dictTableOption(params2)
|
|
console.log('🚀 ~ 排查类型 ~ res2:', res2)
|
|
this.checkTypeOpts = res2.data
|
|
} catch (error) {
|
|
console.log('获取检查级别-下拉失败', error)
|
|
}
|
|
},
|
|
changeDept(ids, label) {
|
|
console.log('🚀 ~ changeDept ~ 树:', ids, label)
|
|
this.formData.deptId = ids[0]
|
|
this.formData.deptName = label
|
|
console.log('🚀 ~ changeDept ~ this.formData:', this.formData)
|
|
this.getDeptUserSelect(ids[0])
|
|
},
|
|
handlePicker(type) {
|
|
this.columns = []
|
|
this.currentPicker = type
|
|
if (type === 1) {
|
|
this.columns = [this.checkUserOpts]
|
|
} else if (type === 2) {
|
|
this.columns = [this.proOpts]
|
|
} else if (type === 3) {
|
|
this.columns = [this.pitfallTypeOpts]
|
|
} else if (type === 4) {
|
|
this.columns = [this.pitfallLevelOpts]
|
|
} else if (type === 5) {
|
|
this.$refs.treePicker._show()
|
|
} else if (type === 6) {
|
|
this.columns = [this.userOpts]
|
|
} else if (type === 7) {
|
|
this.columns = [this.isProcessOpts]
|
|
} else if (type === 8) {
|
|
this.columns = [this.checkTypeOpts]
|
|
} else if (type === 9) {
|
|
this.columns = [this.subOpts]
|
|
}
|
|
setTimeout(() => {
|
|
if (type === 5) return
|
|
this.showPicker = true
|
|
}, 200)
|
|
},
|
|
confirm(e) {
|
|
console.log('🚀 ~ 当前下拉', this.currentPicker)
|
|
console.log('🚀 ~ confirm ~ e', e)
|
|
if (this.currentPicker === 1) {
|
|
// 检查人
|
|
this.formData.checkUserId = e.value[0].value
|
|
this.formData.checkUserName = e.value[0].label
|
|
} else if (this.currentPicker === 2) {
|
|
// 隐患工程
|
|
this.formData.proId = e.value[0].value
|
|
this.formData.proName = e.value[0].label
|
|
} else if (this.currentPicker === 3) {
|
|
// 隐患问题类别
|
|
this.formData.pitfallTypeId = e.value[0].value
|
|
this.formData.pitfallTypeName = e.value[0].label
|
|
} else if (this.currentPicker === 4) {
|
|
// 隐患问题级别
|
|
this.formData.pitfallLevelId = e.value[0].value
|
|
this.formData.pitfallLevelName = e.value[0].label
|
|
} else if (this.currentPicker === 6) {
|
|
// 整改验收人
|
|
this.formData.userId = e.value[0].value
|
|
this.formData.userName = e.value[0].label
|
|
} else if (this.currentPicker === 7) {
|
|
// 是否进行流程审批
|
|
this.formData.isProcess = e.value[0].value
|
|
this.formData.isProcessLabel = e.value[0].label
|
|
} else if (this.currentPicker === 8) {
|
|
// 排查类型
|
|
this.formData.checkType = e.value[0].value
|
|
this.formData.checkTypeName = e.value[0].label
|
|
} else if (this.currentPicker === 9) {
|
|
// 整改责任承包商
|
|
this.formData.subId = e.value[0].valueUuid
|
|
this.formData.subName = e.value[0].label
|
|
this.formData.subPersonId = e.value[0].userId
|
|
this.formData.subPersonName = e.value[0].name
|
|
this.formData.supUuid = e.value[0].supUuid
|
|
}
|
|
this.showPicker = false
|
|
},
|
|
handlePicker2(type) {
|
|
this.currentTime = type
|
|
// 获取今天的日期
|
|
let today = new Date()
|
|
if (this.currentTime === 1) {
|
|
// minDate 今天往前10年, maxDate 为今天
|
|
// 获取10年前的日期
|
|
let tenYearsAgo = new Date()
|
|
tenYearsAgo.setFullYear(today.getFullYear() - 10)
|
|
// 获取今天和10年前日期的时间戳
|
|
this.maxDate = today.getTime() // 当前时间戳
|
|
this.minDate = tenYearsAgo.getTime() // 10年前的时间戳
|
|
} else if (this.currentTime === 2) {
|
|
// minDate 今天包括今天 maxDate 为今天往后10年
|
|
// 获取10年后的日期
|
|
let tenYearsLater = new Date()
|
|
tenYearsLater.setFullYear(today.getFullYear() + 10)
|
|
// 获取今天和10年后日期的时间戳
|
|
this.maxDate = tenYearsLater.getTime() // 10年后的时间戳
|
|
this.minDate = today.getTime() // 当前时间戳
|
|
}
|
|
this.showPicker2 = true
|
|
},
|
|
confirm2(e) {
|
|
console.log('🚀 ~ confirm3 ~ e:', e)
|
|
// this.formData.checkTime = this.formatTimestamp(e.value)
|
|
if (this.currentTime === 1) {
|
|
// minDate 今天往前10年, maxDate 为今天
|
|
// 获取今天的日期
|
|
let today = new Date()
|
|
|
|
// 获取10年前的日期
|
|
let tenYearsAgo = new Date()
|
|
tenYearsAgo.setFullYear(today.getFullYear() - 10)
|
|
|
|
// 获取今天和10年前日期的时间戳
|
|
this.maxDate = today.getTime() // 当前时间戳
|
|
this.minDate = tenYearsAgo.getTime() // 10年前的时间戳
|
|
this.formData.findTime = this.formatTimestamp(e.value)
|
|
} else if (this.currentTime === 2) {
|
|
this.formData.correctionTime = this.formatTimestamp(e.value)
|
|
}
|
|
setTimeout(() => {
|
|
this.showPicker2 = false
|
|
}, 200)
|
|
},
|
|
// 将时间戳转换为日期格式 yyyy-MM-dd
|
|
formatTimestamp(timestamp) {
|
|
const date = new Date(timestamp)
|
|
const year = date.getFullYear()
|
|
const month = String(date.getMonth() + 1).padStart(2, '0')
|
|
const day = String(date.getDate()).padStart(2, '0')
|
|
return `${year}-${month}-${day}`
|
|
},
|
|
selectImg(e) {
|
|
console.log('🚀 ~ selectImg ~ e:', e)
|
|
e.tempFiles.forEach(item => {
|
|
this.formData.checkPhotoList.push(item)
|
|
})
|
|
},
|
|
upload(path) {
|
|
uni.uploadFile({
|
|
url: this.actionUrl,
|
|
filePath: path,
|
|
name: 'photoType',
|
|
header: {
|
|
Authorization: this.token,
|
|
tokenType: 'APP'
|
|
},
|
|
success: res => {
|
|
console.log('🚀 ~ selectImg ~ res:', res)
|
|
console.log('🚀 ~ selectImg ~ res--data:', decryptCBC(JSON.parse(res.data).data))
|
|
this.formData.handlePhotoList.push(JSON.parse(res.data).data[0])
|
|
console.log('🚀 ~ upload ~ this.handlePhotoList:', this.formData.handlePhotoList)
|
|
},
|
|
fail: err => {
|
|
console.log('🚀 ~ selectImg ~ err:', err)
|
|
}
|
|
})
|
|
},
|
|
deleteImg(e) {
|
|
console.log('🚀 ~ deleteImg ~ e:', e)
|
|
this.formData.checkPhotoList.splice(e.index, 1)
|
|
console.log('🚀 ~ deleteImg ~ this.formData.checkPhotoList:', this.formData.checkPhotoList)
|
|
},
|
|
// 下发
|
|
async submitForm() {
|
|
console.log('🚀 ~ submitForm ~ 点击:')
|
|
// 校验
|
|
this.$refs.uForm
|
|
.validate()
|
|
.then(valid => {
|
|
this.isLoading = true
|
|
this.formData.handlePhotoList = []
|
|
console.log('校验成功')
|
|
const uploadPromises = this.formData.checkPhotoList.map(item => {
|
|
console.log('🚀 ~ uploadPromises ~ item:', item)
|
|
if (item.uuid) {
|
|
return this.upload(item.path)
|
|
}
|
|
return Promise.resolve()
|
|
})
|
|
|
|
Promise.all(uploadPromises)
|
|
.then(() => {
|
|
// 所有上传操作完成后再提交
|
|
setTimeout(async () => {
|
|
try {
|
|
console.log('🚀 ~ submitForm ~ 提交:', this.formData)
|
|
this.formData.checkPhotoList = this.formData.handlePhotoList
|
|
const params = { ...this.formData, isFrom: this.isFrom }
|
|
console.log('🚀 ~ 提交 ~ this.params:', params)
|
|
const res = await addHiddenDangerRectification(params)
|
|
console.log('🚀 ~ setTimeout ~ res:', res)
|
|
uni.showToast({
|
|
title: '下发成功',
|
|
icon: 'success',
|
|
duration: 1500
|
|
})
|
|
setTimeout(() => {
|
|
this.isLoading = false
|
|
uni.navigateBack()
|
|
}, 1500)
|
|
} catch (error) {
|
|
console.log('🚀 ~ submitForm ~ error:', error)
|
|
this.isLoading = false
|
|
}
|
|
}, 800)
|
|
})
|
|
.catch(error => {
|
|
// 处理上传失败的情况
|
|
console.error('上传失败', error)
|
|
this.isLoading = false
|
|
})
|
|
})
|
|
.catch(err => {
|
|
console.log('校验失败')
|
|
this.isLoading = false
|
|
})
|
|
},
|
|
// 验收/驳回
|
|
async submitForm2(type) {
|
|
console.log('🚀 ~ submitForm ~ 点击:')
|
|
// 校验
|
|
this.$refs.uForm
|
|
.validate()
|
|
.then(async valid => {
|
|
console.log('校验成功')
|
|
try {
|
|
const params = {
|
|
...this.formData,
|
|
id: this.opt.id,
|
|
isProcess: this.formData.isProcess,
|
|
opinion: this.formData.opinion,
|
|
remarks: this.formData.remarks
|
|
}
|
|
console.log('🚀 ~ 提交 ~ this.params:', params)
|
|
let res = {}
|
|
if (type === 1) {
|
|
this.isLoading = true
|
|
// 验收通过
|
|
res = await updateHiddenDangerRectification(params)
|
|
if (Number(this.formData.isProcess) == 1) {
|
|
// 有流程审批
|
|
this.submitApply(2)
|
|
} else {
|
|
uni.showToast({
|
|
title: '操作成功',
|
|
icon: 'success',
|
|
duration: 1500
|
|
})
|
|
setTimeout(() => {
|
|
this.isLoading = false
|
|
uni.navigateBack()
|
|
}, 1500)
|
|
}
|
|
} else if (type === 2) {
|
|
// 弹框确认
|
|
uni.showModal({
|
|
title: '提示',
|
|
content: '是否确认驳回?',
|
|
showCancel: true,
|
|
success: async res => {
|
|
if (res.confirm) {
|
|
console.log('用户点击确定')
|
|
this.isLoading = true
|
|
// 驳回
|
|
res = await updateSuggestionsForRectification(params)
|
|
uni.showToast({
|
|
title: '操作成功',
|
|
icon: 'success',
|
|
duration: 1500
|
|
})
|
|
setTimeout(() => {
|
|
this.isLoading = false
|
|
uni.navigateBack()
|
|
}, 1500)
|
|
} else if (res.cancel) {
|
|
console.log('用户点击取消')
|
|
}
|
|
}
|
|
})
|
|
}
|
|
console.log('🚀 ~ 提交结果 ~ res:', res)
|
|
} catch (error) {
|
|
console.log('🚀 ~ submitForm ~ error:', error)
|
|
this.isLoading = false
|
|
}
|
|
})
|
|
.catch(err => {
|
|
console.log('校验失败')
|
|
})
|
|
},
|
|
async submitFormDelay(type) {
|
|
console.log('🚀 ~ submitFormDelay ~ type:', type)
|
|
try {
|
|
const params = {
|
|
id: this.opt.id
|
|
}
|
|
console.log('🚀 ~ 提交 ~ this.params:', params)
|
|
let res = {}
|
|
if (type === 1) {
|
|
this.isLoading = true
|
|
// 验收通过
|
|
res = await updateDeferredAcceptancePassed(params)
|
|
if (Number(this.formData.isProcess) == 1) {
|
|
// 有流程审批
|
|
this.submitApply(1)
|
|
} else {
|
|
uni.showToast({
|
|
title: '操作成功',
|
|
icon: 'success',
|
|
duration: 1500
|
|
})
|
|
}
|
|
setTimeout(() => {
|
|
this.isLoading = false
|
|
uni.navigateBack()
|
|
}, 1500)
|
|
} else if (type === 2) {
|
|
// 弹框输入驳回原因
|
|
this.delayReason = true
|
|
this.rejectionDelay = ''
|
|
}
|
|
console.log('🚀 ~ 提交结果 ~ res:', res)
|
|
} catch (error) {
|
|
console.log('🚀 ~ submitForm ~ error:', error)
|
|
this.isLoading = false
|
|
}
|
|
},
|
|
async submitDelayReason() {
|
|
try {
|
|
if (!this.rejectionDelay) {
|
|
uni.showToast({
|
|
title: '请输入驳回原因',
|
|
icon: 'none',
|
|
duration: 1500
|
|
})
|
|
return
|
|
}
|
|
this.isLoading = true
|
|
const params = {
|
|
id: this.opt.id,
|
|
rejectionDelay: this.rejectionDelay
|
|
}
|
|
console.log('🚀 ~ 延期-驳回 ~ .params:', params)
|
|
const res = await updateReasonForDelay(params)
|
|
console.log('🚀 ~ 延期-驳回 ~ res:', res)
|
|
uni.showToast({
|
|
title: '操作成功',
|
|
icon: 'success',
|
|
duration: 1500
|
|
})
|
|
setTimeout(() => {
|
|
this.isLoading = false
|
|
uni.navigateBack()
|
|
}, 1000)
|
|
} catch (error) {
|
|
console.log('🚀 ~ submitDelayReason ~ error:', error)
|
|
}
|
|
},
|
|
submitApply(type) {
|
|
let taskType
|
|
let param
|
|
let code = '验收通过'
|
|
if (type === 2) {
|
|
if (Number(this.formData.pitfallLevelId) === 1) {
|
|
taskType = 14
|
|
} else if (Number(this.formData.pitfallLevelId) === 2) {
|
|
taskType = 15
|
|
} else if (Number(this.formData.pitfallLevelId) === 3) {
|
|
taskType = 16
|
|
}
|
|
param = {
|
|
proId: this.opt.proId,
|
|
taskType: taskType,
|
|
userType: '01',
|
|
taskId: this.opt.taskId,
|
|
uuid: this.opt.id
|
|
}
|
|
} else {
|
|
param = {
|
|
proId: this.opt.proId,
|
|
taskType: '17',
|
|
userType: '01',
|
|
taskId: this.opt.taskId,
|
|
uuid: this.opt.id
|
|
}
|
|
code = '延期申请成功'
|
|
}
|
|
console.log('param=' + JSON.stringify(param))
|
|
submitApproval(param).then(response => {
|
|
if (response.code === 200) {
|
|
if (response.msg === '此审核类型未配置相对应的审核流,请联系管理员配置后再次提交') {
|
|
uni.showToast({
|
|
title: response.msg,
|
|
icon: 'none',
|
|
duration: 1500
|
|
})
|
|
} else {
|
|
uni.showToast({
|
|
title: code + ',进入审核流程!',
|
|
icon: 'none',
|
|
duration: 1500
|
|
})
|
|
}
|
|
setTimeout(() => {
|
|
this.isLoading = false
|
|
uni.navigateBack()
|
|
}, 1500)
|
|
} else {
|
|
uni.showToast({
|
|
title: (type === 1 ? '验收' : '延期申请') + '失败,请联系管理员查询具体情况,再次进行验收操作!',
|
|
icon: 'none',
|
|
duration: 1500
|
|
})
|
|
this.isLoading = false
|
|
}
|
|
})
|
|
},
|
|
// 审批驳回
|
|
appReject(val) {
|
|
// rejectReason-驳回原因
|
|
console.log('审批驳回原因:', val)
|
|
const params = {
|
|
reason: this.approvalOpinion,
|
|
rejectReason: val,
|
|
agree: '2'
|
|
}
|
|
this.approval(params, '审批驳回')
|
|
},
|
|
// 审批通过 reason-审批意见
|
|
handleAppPermit() {
|
|
console.log('审批通过')
|
|
const params = {
|
|
reason: this.approvalOpinion,
|
|
agree: '1'
|
|
}
|
|
this.approval(params, '审批通过')
|
|
},
|
|
// 终审
|
|
handleAppEnd() {
|
|
console.log('终审')
|
|
const params = {
|
|
reason: this.approvalOpinion,
|
|
agree: '3'
|
|
}
|
|
this.approval(params, '审批通过')
|
|
},
|
|
async approval(param, text) {
|
|
try {
|
|
this.isLoading = true
|
|
const params = {
|
|
...param,
|
|
proId: this.opt.proId,
|
|
taskId: this.opt.taskId,
|
|
procInstId: this.opt.procInsId,
|
|
taskType: this.opt.checkLevelId == '1' ? 14 : this.opt.checkLevelId == '2' ? 15 : 16,
|
|
uuid: this.opt.id
|
|
}
|
|
console.log('🚀 ~ 审批 ~ params:', params)
|
|
const res = await submitPersonApproval(params)
|
|
console.log('🚀 ~ 审批 ~ res:', res)
|
|
uni.showToast({
|
|
title: text,
|
|
icon: 'success',
|
|
duration: 1500
|
|
})
|
|
setTimeout(() => {
|
|
this.isLoading = false
|
|
uni.navigateBack()
|
|
}, 200)
|
|
} catch (error) {
|
|
this.isLoading = false
|
|
console.log('🚀 ~ 审批 ~ error:', error)
|
|
}
|
|
}
|
|
}
|
|
}
|
|
</script>
|
|
|
|
<style lang="scss">
|
|
.content {
|
|
padding: 20px;
|
|
.btns {
|
|
display: flex;
|
|
justify-content: space-between;
|
|
}
|
|
}
|
|
</style>
|