1040 lines
36 KiB
Vue
1040 lines
36 KiB
Vue
<template>
|
|
<el-tabs v-model="activeName" @tab-click="handleClick"
|
|
:style="{padding:'20px'}"
|
|
>
|
|
<!-- 承包商item -->
|
|
<el-tab-pane label="承包商单位信息" name="first">
|
|
<bns-cons-info-tabs
|
|
:items="consUnitInformationItems"
|
|
>
|
|
</bns-cons-info-tabs>
|
|
</el-tab-pane>
|
|
<el-tab-pane label="企业资质" name="second">
|
|
<bns-file-list-tabs
|
|
:items="enterpriseQualificationItems"
|
|
></bns-file-list-tabs>
|
|
<bns-timeline-tabs :is-examine="false" :btn-show="false" :show-type="paramsData.showType"
|
|
:items="approvalItems[0]" :audit-type="'企业资质'"
|
|
v-on:reason="getReason"
|
|
/>
|
|
</el-tab-pane>
|
|
<el-tab-pane label="安全协议书" name="third">
|
|
<bns-file-list-tabs
|
|
:items="securityAgreementFileItems"
|
|
></bns-file-list-tabs>
|
|
<bns-timeline-tabs :is-examine="false" :btn-show="false" :show-type="paramsData.showType"
|
|
:items="approvalItems[1]" :audit-type="'安全协议书'"
|
|
v-on:reason="getReason"
|
|
/>
|
|
</el-tab-pane>
|
|
<el-tab-pane label="四措两案" name="fourth">
|
|
<bns-file-list-tabs
|
|
:items="fourMeasuresAndTwoMeasuresFileItems"
|
|
></bns-file-list-tabs>
|
|
<bns-timeline-tabs :is-examine="false" :btn-show="false" :show-type="paramsData.showType"
|
|
:items="approvalItems[2]" :audit-type="'四措两案'"
|
|
v-on:reason="getReason"
|
|
/>
|
|
</el-tab-pane>
|
|
<el-tab-pane label="施工人员信息" name="five">
|
|
<div class="app-container">
|
|
<el-form :model="personQueryParams" ref="personQueryForm" size="small" :inline="true" label-width="68px">
|
|
<el-form-item label="施工人员姓名" label-width="140px" prop="supervisorName">
|
|
<el-input
|
|
v-model="personQueryParams.name"
|
|
placeholder="请输入施工人员姓名"
|
|
maxlength="20" show-word-limit
|
|
clearable v-no-whitespace
|
|
@keyup.enter.native="handleQueryPerson"
|
|
/>
|
|
</el-form-item>
|
|
<el-form-item label="状态" prop="status">
|
|
<el-select v-model="personQueryParams.status" placeholder="请选择状态" clearable>
|
|
<el-option label="在场" value="1" />
|
|
<el-option label="离场" value="2" />
|
|
</el-select>
|
|
</el-form-item>
|
|
<el-form-item label="人员进场时间范围" label-width="150px">
|
|
<el-date-picker
|
|
v-model="timeRange"
|
|
type="daterange"
|
|
align="right"
|
|
:editable="false"
|
|
unlink-panels
|
|
range-separator="至"
|
|
start-placeholder="开始日期"
|
|
end-placeholder="结束日期"
|
|
:picker-options="pickerOptions"
|
|
>
|
|
</el-date-picker>
|
|
</el-form-item>
|
|
<el-form-item>
|
|
<el-button type="primary" icon="el-icon-search" size="mini" @click="handleQueryPerson">搜索</el-button>
|
|
<el-button icon="el-icon-refresh" size="mini" @click="resetQueryPerson">重置</el-button>
|
|
<el-button
|
|
type="primary"
|
|
plain
|
|
icon="el-icon-download"
|
|
size="mini"
|
|
@click="handleExportPerosn"
|
|
>导出
|
|
</el-button>
|
|
</el-form-item>
|
|
</el-form>
|
|
<el-table v-loading="loading" :data="personList">
|
|
<el-table-column
|
|
type="index"
|
|
width="55"
|
|
label="序号"
|
|
align="center"
|
|
:index="indexContinuous(personQueryParams.pageNum, personQueryParams.pageSize)"
|
|
/>
|
|
<el-table-column label="姓名" width="70" align="center" prop="name" />
|
|
<el-table-column label="岗位" width="100" align="center" prop="postName" />
|
|
<el-table-column label="特殊工种种类" width="100" align="center" prop="specialJobType" />
|
|
<el-table-column label="体检文件" width="100" align="center">
|
|
<template slot-scope="scope">
|
|
<el-button size="mini" @click="handleShow(scope.row,1)">查看</el-button>
|
|
</template>
|
|
</el-table-column>
|
|
<el-table-column label="保险文件" width="100" align="center">
|
|
<template slot-scope="scope">
|
|
<el-button size="mini" @click="handleShow(scope.row,2)">查看</el-button>
|
|
</template>
|
|
</el-table-column>
|
|
<el-table-column label="特殊工种文件" width="100" align="center">
|
|
<template slot-scope="scope">
|
|
<el-button size="mini" @click="handleShow(scope.row,3)">查看</el-button>
|
|
</template>
|
|
</el-table-column>
|
|
<el-table-column label="其他文件" width="100" align="center">
|
|
<template slot-scope="scope">
|
|
<el-button size="mini" @click="handleShow(scope.row,4)">查看</el-button>
|
|
</template>
|
|
</el-table-column>
|
|
<el-table-column label="性别" width="50" align="center" prop="sex" />
|
|
<el-table-column label="年龄" width="50" align="center" prop="age" />
|
|
<el-table-column label="联系方式" width="120" align="center">
|
|
<template slot-scope="scope">
|
|
<!-- 检查是否存在身份证号 -->
|
|
<span v-if="scope.row.phone">{{ hideSensitiveInfo(scope.row.phone) }}</span>
|
|
<span v-else>-</span>
|
|
</template>
|
|
</el-table-column>
|
|
<el-table-column label="籍贯" width="70" align="center" prop="nativePlace" />
|
|
<el-table-column label="身份证号码" width="160" align="center">
|
|
<template slot-scope="scope">
|
|
<!-- 检查是否存在身份证号 -->
|
|
<span v-if="scope.row.idCard">{{ hideSensitiveInfo(scope.row.idCard) }}</span>
|
|
<span v-else>-</span>
|
|
</template>
|
|
</el-table-column>
|
|
<el-table-column label="民族" width="70" align="center" prop="nation" />
|
|
<el-table-column label="家庭地址" width="200" align="center" prop="homeAddress" />
|
|
<el-table-column label="现地址" width="200" align="center" prop="currentAddress" />
|
|
<el-table-column label="进场日期" width="100" align="center" prop="admissionDate" />
|
|
<el-table-column label="离场日期" width="100" align="center" prop="departureDate" />
|
|
<el-table-column label="人脸照片" align="center" prop="faceUrl">
|
|
<template slot-scope="scope">
|
|
<el-popover placement="right" title="" trigger="hover">
|
|
<img :src="`${scope.row.faceUrl ? lookFaceFile+scope.row.faceUrl : ''}`" :min-width="300" :height="300"
|
|
alt="照片"
|
|
/>
|
|
<img slot="reference" :src="`${scope.row.faceUrl ? lookFaceFile+scope.row.faceUrl : ''}`"
|
|
style="max-height: 50px; max-width: 50px"
|
|
:alt="`${scope.row.faceUrl ? lookFaceFile+scope.row.faceUrl : ''}`"
|
|
/>
|
|
</el-popover>
|
|
</template>
|
|
</el-table-column>
|
|
<el-table-column label="批阅状态" align="center" prop="annotation">
|
|
<template slot-scope="scope">
|
|
<!-- 检查是否存在身份证号 -->
|
|
<span v-if="scope.row.annotation == '0'">未批阅</span>
|
|
<span v-else>已批阅</span>
|
|
</template>
|
|
</el-table-column>
|
|
<el-table-column label="操作" fixed="right" width="150" align="center"
|
|
class-name="small-padding fixed-width"
|
|
>
|
|
<template slot-scope="scope">
|
|
<el-button
|
|
size="mini"
|
|
type="text"
|
|
@click="handleView(scope.row)"
|
|
>查看
|
|
</el-button>
|
|
<el-button
|
|
size="mini"
|
|
type="text"
|
|
v-if="scope.row.annotation == '0'"
|
|
@click="addAnnotations(scope.row,'1')"
|
|
>批阅
|
|
</el-button>
|
|
</template>
|
|
</el-table-column>
|
|
</el-table>
|
|
|
|
<pagination
|
|
v-show="personTotal>0"
|
|
:total="personTotal"
|
|
:page.sync="personQueryParams.pageNum"
|
|
:limit.sync="personQueryParams.pageSize"
|
|
@pagination="getConsPersonList"
|
|
/>
|
|
<!--施工人员基本信息查看-->
|
|
<el-dialog title="查看详情" :visible.sync="constructionPersonnelOpen" width="60%">
|
|
<bns-cons-person-details-tabs
|
|
:items="formData"
|
|
></bns-cons-person-details-tabs>
|
|
<div class="footer" v-if="paramsData.btnShow && formData.annotation == '0'"
|
|
style="position: absolute;top: 95%;left: 90%"
|
|
>
|
|
<el-button type="danger" @click="addAnnotations(null,'1')">完成批阅</el-button>
|
|
</div>
|
|
</el-dialog>
|
|
|
|
<!--生成工作证-->
|
|
<el-dialog title="生成工作证" :visible.sync="workCardOpen" width="30%">
|
|
<el-form ref="elForm" :model="formData" size="medium" label-width="100px">
|
|
<bns-generate-work-card-tabs
|
|
:items="workCardItems"
|
|
></bns-generate-work-card-tabs>
|
|
</el-form>
|
|
</el-dialog>
|
|
<el-dialog title="文件查看" :visible.sync="document" width="80%" top="5vh" append-to-body>
|
|
<div style="width: 100%;height:720px">
|
|
<bns-file-list-tabs :items="fileList" />
|
|
</div>
|
|
</el-dialog>
|
|
<el-dialog title="文件查看" :visible.sync="documentPreview" width="80%" top="5vh" append-to-body>
|
|
<div style="width: 100%;height:720px">
|
|
<bns-kkFile-preview :items="kkFilePreview"></bns-kkFile-preview>
|
|
</div>
|
|
</el-dialog>
|
|
</div>
|
|
</el-tab-pane>
|
|
<el-tab-pane label="工器具信息" name="six">
|
|
<div class="app-container">
|
|
<el-form :model="equipQueryParams" ref="equipQueryForm" size="small" :inline="true" label-width="68px">
|
|
<el-form-item label="工器具名称" label-width="140px">
|
|
<el-input
|
|
v-model="equipQueryParams.equipName"
|
|
maxlength="20" show-word-limit
|
|
placeholder="请输入工器具名称"
|
|
clearable v-no-whitespace
|
|
@keyup.enter.native="equipHandleQuery"
|
|
/>
|
|
</el-form-item>
|
|
<el-form-item>
|
|
<el-button type="primary" icon="el-icon-search" size="mini" @click="equipHandleQuery">搜索</el-button>
|
|
<el-button icon="el-icon-refresh" size="mini" @click="equipResetQuery">重置</el-button>
|
|
<el-button
|
|
type="primary"
|
|
plain
|
|
icon="el-icon-download"
|
|
size="mini"
|
|
@click="equipHandleExport"
|
|
>导出
|
|
</el-button>
|
|
</el-form-item>
|
|
</el-form>
|
|
<el-table v-loading="loading" :data="equipList">
|
|
<el-table-column
|
|
type="index"
|
|
width="55"
|
|
label="序号"
|
|
align="center"
|
|
:index="indexContinuous(equipQueryParams.pageNum, equipQueryParams.pageSize)"
|
|
/>
|
|
<el-table-column label="工器具名称" align="center" prop="equipName" />
|
|
<el-table-column label="型号" align="center" prop="model" />
|
|
<el-table-column label="单位" align="center" prop="unit" />
|
|
<el-table-column label="数量" align="center" prop="num" />
|
|
<el-table-column label="设备类型" align="center" prop="equipType" />
|
|
<el-table-column label="检测时间" align="center" prop="detectionTime" />
|
|
<el-table-column label="进场日期" align="center" prop="approachDate" />
|
|
<el-table-column label="批阅状态" align="center" prop="annotation">
|
|
<template slot-scope="scope">
|
|
<!-- 检查是否存在身份证号 -->
|
|
<span v-if="scope.row.annotation == '0'">未批阅</span>
|
|
<span v-else>已批阅</span>
|
|
</template>
|
|
</el-table-column>
|
|
<el-table-column label="操作" align="center" fixed="right" class-name="small-padding fixed-width">
|
|
<template slot-scope="scope">
|
|
<el-button
|
|
size="mini"
|
|
type="text"
|
|
@click="equipHandleView(scope.row)"
|
|
>查看
|
|
</el-button>
|
|
<el-button
|
|
size="mini"
|
|
type="text"
|
|
@click="addAnnotations(scope.row,'2')"
|
|
>批阅
|
|
</el-button>
|
|
</template>
|
|
</el-table-column>
|
|
</el-table>
|
|
<pagination
|
|
v-show="equipTotal>0"
|
|
:total="equipTotal"
|
|
:page.sync="equipQueryParams.pageNum"
|
|
:limit.sync="equipQueryParams.pageSize"
|
|
@pagination="getConsEquipList"
|
|
/>
|
|
|
|
<el-dialog title="查看详情" :visible.sync="equipOpen" width="40%">
|
|
<div>
|
|
<el-form ref="elForm" size="medium" label-width="100px">
|
|
<el-form-item label-width="140px" label="工器具名称">
|
|
<el-input v-model="equipItem.equipName" :disabled="true" clearable
|
|
:style="{width: '100%'}" v-no-whitespace
|
|
></el-input>
|
|
</el-form-item>
|
|
<el-form-item label-width="140px" label="型号">
|
|
<el-input v-model="equipItem.model" :disabled="true" clearable
|
|
:style="{width: '100%'}" v-no-whitespace
|
|
></el-input>
|
|
</el-form-item>
|
|
<el-form-item label-width="140px" label="单位">
|
|
<el-input v-model="equipItem.unit" :disabled="true" clearable
|
|
:style="{width: '100%'}" v-no-whitespace
|
|
></el-input>
|
|
</el-form-item>
|
|
<el-form-item label-width="140px" label="数量">
|
|
<el-input v-model="equipItem.num" :disabled="true" clearable
|
|
:style="{width: '100%'}" v-no-whitespace
|
|
></el-input>
|
|
</el-form-item>
|
|
<el-form-item label-width="140px" label="设备类型">
|
|
<el-select v-model="equipItem.equipType" :disabled="true" clearable
|
|
:style="{width: '100%'}" v-no-whitespace
|
|
>
|
|
<el-option v-for="item in equipTypeOptions" :key="item.value" :label="item.label"
|
|
:value="item.value" v-no-whitespace
|
|
/>
|
|
</el-select>
|
|
</el-form-item>
|
|
<el-form-item label-width="140px" label="检测时间">
|
|
<el-input v-model="equipItem.detectionTime" :disabled="true" clearable
|
|
:style="{width: '100%'}" v-no-whitespace
|
|
></el-input>
|
|
</el-form-item>
|
|
<el-form-item label-width="140px" label="是否强制检测检验">
|
|
<el-select v-model="equipItem.isForceDetection" :disabled="true" clearable
|
|
:style="{width: '100%'}"
|
|
>
|
|
<el-option label="是" value="1" />
|
|
<el-option label="否" value="0" />
|
|
</el-select>
|
|
</el-form-item>
|
|
<el-form-item label-width="140px" label="下次检测时间">
|
|
<el-input v-model="equipItem.nextDetectionTime" :disabled="true" clearable
|
|
:style="{width: '100%'}" v-no-whitespace
|
|
></el-input>
|
|
</el-form-item>
|
|
<el-form-item label-width="140px" label="进场时间">
|
|
<el-input v-model="equipItem.approachDate" :disabled="true" clearable
|
|
:style="{width: '100%'}" v-no-whitespace
|
|
></el-input>
|
|
</el-form-item>
|
|
<el-form-item label-width="140px" label="工器具文件">
|
|
</el-form-item>
|
|
<img v-if="equipItem.fileList.length === 0" src="@/assets/file/no_file.png" alt="暂无数据"
|
|
style="width: 100px;height: 100px;margin-left: 45px;"
|
|
/>
|
|
<bns-file-list-tabs
|
|
v-else
|
|
:items="equipItem.fileList"
|
|
:style="{marginLeft:'45px'}"
|
|
></bns-file-list-tabs>
|
|
</el-form>
|
|
</div>
|
|
<div class="footer" v-if="paramsData.btnShow && equipItem.annotation == '0'"
|
|
style="position: absolute;top: 95%;left: 85%"
|
|
>
|
|
<el-button type="danger" @click="addAnnotations(null,'2')">完成批阅</el-button>
|
|
</div>
|
|
</el-dialog>
|
|
</div>
|
|
</el-tab-pane>
|
|
<el-tab-pane label="其他材料" name="seven">
|
|
<bns-file-list-tabs
|
|
:items="otherItems"
|
|
></bns-file-list-tabs>
|
|
<bns-timeline-tabs :is-examine="false" :btn-show="false" :show-type="paramsData.showType"
|
|
:items="approvalItems[3]" :audit-type="'其他材料'"
|
|
v-on:reason="getReason"
|
|
/>
|
|
</el-tab-pane>
|
|
<el-tab-pane label="审批信息" name="eight">
|
|
<div style="">
|
|
<bns-timeline-tabs :is-examine="paramsData.isExamine" :btn-show="paramsData.btnShow"
|
|
:show-type="paramsData.showType" :final-check="paramsData.finalCheck"
|
|
:items="approvalItems[4]" :audit-type="'审批信息'"
|
|
:audit-reason="reasonObj"
|
|
v-on:reason="getReason"
|
|
v-on:pass="approvalPass"
|
|
v-on:turnDown="approvalTurnDown"
|
|
v-on:finalInstance="approvalFinalInstance"
|
|
/>
|
|
</div>
|
|
</el-tab-pane>
|
|
</el-tabs>
|
|
|
|
</template>
|
|
<script>
|
|
import { getMyToDoNum, hideSensitiveInfo, indexContinuous, lookFaceFile, parseTime } from '@/utils/bonus'
|
|
import bnsSubInfoTabs from '@/components/pro-tabs/bns-sub-info-tabs.vue'
|
|
import bnsConsInfoTabs from '@/components/pro-tabs/bns-cons-info-tabs.vue'
|
|
import bnsFileListTabs from '@/components/pro-tabs/bns-file-list-tabs.vue'
|
|
import bnsGenerateWorkCardTabs from '@/components/pro-tabs/bns-generate-work-card-tabs.vue'
|
|
import bnsConsPersonDetailsTabs from '@/components/pro-tabs/bns-cons-person-details-tabs.vue'
|
|
import bnsKkFilePreview from '@/components/pro-tabs/bns-kkFile-preview.vue'
|
|
import {
|
|
addAnnotations,
|
|
getConsDetailsInfo,
|
|
getSubList,
|
|
getConsPersonList,
|
|
getConsEquipList,
|
|
getConsMaterialsList,
|
|
getConstructionPersonnelDetails,
|
|
getEquipDetails
|
|
} from '@/api/pro/outsourcingPro'
|
|
import { selectFile, downloadFile, dictTableOption } from '@/api/tool/select'
|
|
import BnsTimelineTabs from '@/components/pro-tabs/bns-timeline-tabs.vue'
|
|
|
|
import { approvalHistory } from '@/api/terminalEquipment/deviceInformation'
|
|
import { submitPersonApproval } from '@/api/pro/subManagement/subList'
|
|
import { decryptCBC } from '@/utils/aescbc'
|
|
|
|
export default {
|
|
components: {
|
|
BnsTimelineTabs,
|
|
bnsConsInfoTabs,
|
|
bnsSubInfoTabs,
|
|
bnsFileListTabs,
|
|
bnsGenerateWorkCardTabs,
|
|
bnsConsPersonDetailsTabs,
|
|
bnsKkFilePreview
|
|
},
|
|
data() {
|
|
return {
|
|
paramsData: {},
|
|
timeRange: [],
|
|
materialsTimeRange: [],
|
|
equipItem: {
|
|
fileList: []
|
|
},
|
|
filePreview: {},
|
|
viewOpen: false,
|
|
equipOpen: false,
|
|
proId: undefined,
|
|
consId: undefined,
|
|
equipTypeOptions: [],
|
|
//当前激活的标签页
|
|
activeName: 'first',
|
|
//施工人员详情弹出层
|
|
constructionPersonnelOpen: false,
|
|
//生成工作证弹出层
|
|
workCardOpen: false,
|
|
document: false,
|
|
documentPreview: false,
|
|
fileList: [],
|
|
kkFilePreview: {
|
|
filePreviewUrl: '',
|
|
fileName: '',
|
|
showDownloadButton: false
|
|
},
|
|
//时间范围选择器
|
|
pickerOptions: {
|
|
shortcuts: [{
|
|
text: '最近一周',
|
|
onClick(picker) {
|
|
const end = new Date()
|
|
const start = new Date()
|
|
start.setTime(start.getTime() - 3600 * 1000 * 24 * 7)
|
|
picker.$emit('pick', [start, end])
|
|
}
|
|
}, {
|
|
text: '最近一个月',
|
|
onClick(picker) {
|
|
const end = new Date()
|
|
const start = new Date()
|
|
start.setTime(start.getTime() - 3600 * 1000 * 24 * 30)
|
|
picker.$emit('pick', [start, end])
|
|
}
|
|
}, {
|
|
text: '最近三个月',
|
|
onClick(picker) {
|
|
const end = new Date()
|
|
const start = new Date()
|
|
start.setTime(start.getTime() - 3600 * 1000 * 24 * 90)
|
|
picker.$emit('pick', [start, end])
|
|
}
|
|
}]
|
|
},
|
|
gutterValue: parseInt('21', 10),
|
|
// 遮罩层
|
|
loading: false,
|
|
// 总条数
|
|
total: 0,
|
|
personTotal: 0,
|
|
equipTotal: 0,
|
|
materialsTotal: 0,
|
|
//承包商单位信息
|
|
consUnitInformationItems: {},
|
|
// 分包商信息查询参数
|
|
queryParams: {
|
|
pageNum: 1,
|
|
pageSize: 10,
|
|
subName: undefined
|
|
},
|
|
// 施工人员基本信息查询参数
|
|
personQueryParams: {
|
|
pageNum: 1,
|
|
pageSize: 10,
|
|
name: undefined,
|
|
status: undefined,
|
|
admissionDate: undefined,
|
|
departureDate: undefined
|
|
},
|
|
// 工器具信息查询参数
|
|
equipQueryParams: {
|
|
pageNum: 1,
|
|
pageSize: 10,
|
|
equipName: undefined
|
|
},
|
|
// 施工材料文件信息查询参数
|
|
materialsQueryParams: {
|
|
pageNum: 1,
|
|
pageSize: 10,
|
|
fileName: undefined,
|
|
name: undefined,
|
|
startDate: undefined,
|
|
endDate: undefined
|
|
},
|
|
//企业资质
|
|
enterpriseQualificationItems: [],
|
|
//安全协议书
|
|
securityAgreementFileItems: [],
|
|
//四措两案
|
|
fourMeasuresAndTwoMeasuresFileItems: [],
|
|
//其他材料
|
|
otherItems: [],
|
|
// 分包商基本信息表格数据
|
|
subList: [],
|
|
// 施工人员基本信息表格数据
|
|
personList: [],
|
|
// 工器具信息表格数据
|
|
equipList: [],
|
|
// 施工材料文件表格数据
|
|
materialsList: [],
|
|
//工作证信息
|
|
workCardItems: {},
|
|
// 人员详情 表单参数
|
|
formData: {
|
|
facePhoto: [],
|
|
physicalExaminationFile: [],
|
|
insuranceFile: [],
|
|
otherFile: [],
|
|
annotation: '0'
|
|
},
|
|
//审批意见集合
|
|
reasonObj: [
|
|
{
|
|
auditType: '企业资质',
|
|
reason: ''
|
|
},
|
|
{
|
|
auditType: '安全协议书',
|
|
reason: ''
|
|
},
|
|
{
|
|
auditType: '四措两案',
|
|
reason: ''
|
|
},
|
|
{
|
|
auditType: '其他材料',
|
|
reason: ''
|
|
},
|
|
{
|
|
auditType: '审批信息',
|
|
reason: ''
|
|
}
|
|
],
|
|
reason: '',
|
|
approvalItems: [],
|
|
lookFaceFile: ''
|
|
}
|
|
},
|
|
created() {
|
|
this.lookFaceFile = lookFaceFile()
|
|
const params = this.$route.params && this.$route.params.data
|
|
this.paramsData = JSON.parse(decryptCBC(params))
|
|
this.proId = this.paramsData.proId
|
|
this.consUuid = this.paramsData.consUuid
|
|
this.init()
|
|
console.log('this.paramsData:' + JSON.stringify(this.paramsData))
|
|
}
|
|
,
|
|
methods: {
|
|
indexContinuous,
|
|
lookFaceFile,
|
|
hideSensitiveInfo,
|
|
/** 文件查看按钮操作 */
|
|
handleShow(row, informationType) {
|
|
this.loading = true
|
|
const arr = {
|
|
1: '体检文件',
|
|
2: '保险文件',
|
|
3: '特殊工种文件',
|
|
4: '其他文件'
|
|
}
|
|
selectFile({
|
|
classification: 9,
|
|
uuid: row.uuid,
|
|
informationType: informationType,
|
|
fromType: 2
|
|
}).then(response => {
|
|
console.log(response)
|
|
if (response.data.length === 0) {
|
|
this.fileList = []
|
|
this.$message.warning(arr[informationType] + '暂无')
|
|
} else if (response.data.length === 1) {
|
|
this.kkFilePreview = {
|
|
filePreviewUrl: response.data[0].filePath,
|
|
fileName: response.data[0].fileName,
|
|
showDownloadButton: false
|
|
}
|
|
this.documentPreview = true
|
|
} else {
|
|
this.fileList = response.data
|
|
this.document = true
|
|
}
|
|
this.loading = false
|
|
})
|
|
},
|
|
getReason(e) {
|
|
const index = this.reasonObj.findIndex(item => item.auditType === e.auditType)
|
|
if (index !== -1) {
|
|
this.reasonObj.splice(index, 1, e)
|
|
} else {
|
|
this.reasonObj.push(e)
|
|
}
|
|
let reason = ''
|
|
for (let i = 0; i < this.reasonObj.length; i++) {
|
|
reason += this.reasonObj[i].reason + '@@'
|
|
}
|
|
this.reason = reason.substring(0, reason.length - 2)
|
|
}
|
|
,
|
|
changTime() {
|
|
this.personQueryParams.admissionDate = this.timeRange[0]
|
|
this.personQueryParams.departureDate = this.timeRange[1]
|
|
}
|
|
,
|
|
changMaterialsTime() {
|
|
this.materialsQueryParams.startDate = this.materialsTimeRange[0]
|
|
this.materialsQueryParams.endDate = this.materialsTimeRange[1]
|
|
}
|
|
,
|
|
/**初始化数据*/
|
|
init() {
|
|
this.approvalHistory()
|
|
this.getConsDetailsInfo()
|
|
this.getEnterpriseQualification()
|
|
this.getSecurityAgreement()
|
|
this.getFourMeasuresAndTwoMeasures()
|
|
this.getOtherFileList()
|
|
this.getConsPersonList()
|
|
this.getConsEquipList()
|
|
},
|
|
approvalHistory() {
|
|
console.log('this.paramsData.taskId:' + this.paramsData.taskId)
|
|
approvalHistory({ taskId: this.paramsData.taskId }).then(res => {
|
|
console.log(res)
|
|
for (let i = 0; i < 5; i++) {
|
|
const arr = res.data.map(item => ({
|
|
...item,
|
|
reason: item.reason && item.reason.length > 0 ? item.reason.split('@@')[i] : ''
|
|
}))
|
|
this.approvalItems.push(arr)
|
|
}
|
|
console.log(this.approvalItems)
|
|
})
|
|
},
|
|
/**获取承包商基本信息*/
|
|
getConsDetailsInfo() {
|
|
const params = {
|
|
consUuid: this.consUuid,
|
|
proId: this.proId
|
|
}
|
|
this.loading = true
|
|
getConsDetailsInfo(params).then(response => {
|
|
this.consUnitInformationItems = response
|
|
this.consUnitInformationItems.corporatePhone = hideSensitiveInfo(response.corporatePhone)
|
|
this.loading = false
|
|
})
|
|
},
|
|
addAnnotations(row, type) {
|
|
let params
|
|
if (type === '1') {
|
|
params = {
|
|
uuid: row ? row.uuid : this.formData.uuid,
|
|
taskId: this.paramsData.taskId,
|
|
type: type
|
|
}
|
|
} else {
|
|
params = {
|
|
uuid: this.equipItem.uuid || row.uuid,
|
|
taskId: this.paramsData.taskId,
|
|
type: type
|
|
}
|
|
}
|
|
addAnnotations(params).then(response => {
|
|
this.$modal.msgSuccess('批阅成功')
|
|
this.constructionPersonnelOpen = false
|
|
this.equipOpen = false
|
|
if (type === '1') {
|
|
this.getConsPersonList()
|
|
} else {
|
|
this.getConsEquipList()
|
|
}
|
|
})
|
|
},
|
|
/**获取企业资质*/
|
|
getEnterpriseQualification() {
|
|
const params = {
|
|
proId: this.proId,
|
|
consUuid: this.consUuid,
|
|
classification: '2',
|
|
fromType: '1',
|
|
informationType: '1'
|
|
}
|
|
selectFile(params).then(response => {
|
|
this.enterpriseQualificationItems = []
|
|
this.enterpriseQualificationItems = response.data
|
|
})
|
|
}
|
|
,
|
|
/**获取安全协议书*/
|
|
getSecurityAgreement() {
|
|
const params = {
|
|
proId: this.proId,
|
|
consUuid: this.consUuid,
|
|
classification: '2',
|
|
fromType: '1',
|
|
informationType: '2'
|
|
}
|
|
selectFile(params).then(response => {
|
|
this.securityAgreementFileItems = []
|
|
this.securityAgreementFileItems = response.data
|
|
})
|
|
}
|
|
,
|
|
/**获取四措两案*/
|
|
getFourMeasuresAndTwoMeasures() {
|
|
const params = {
|
|
proId: this.proId,
|
|
consUuid: this.consUuid,
|
|
classification: '2',
|
|
fromType: '1',
|
|
informationType: '3'
|
|
}
|
|
selectFile(params).then(response => {
|
|
this.fourMeasuresAndTwoMeasuresFileItems = []
|
|
this.fourMeasuresAndTwoMeasuresFileItems = response.data
|
|
})
|
|
},
|
|
/**获取四措两案*/
|
|
getOtherFileList() {
|
|
const params = {
|
|
proId: this.proId,
|
|
consUuid: this.consUuid,
|
|
classification: '2',
|
|
fromType: '1',
|
|
informationType: '5'
|
|
}
|
|
selectFile(params).then(response => {
|
|
this.otherItems = []
|
|
this.otherItems = response.data
|
|
})
|
|
}
|
|
,
|
|
/**分包商信息查询*/
|
|
getSubList() {
|
|
this.loading = true
|
|
this.queryParams.consId = this.consId
|
|
this.queryParams.proId = this.proId
|
|
this.queryParams.consUuid = this.$store.state.user.thisIds.consUuid
|
|
getSubList(this.queryParams).then(response => {
|
|
this.subList = response.rows
|
|
this.total = response.total
|
|
this.loading = false
|
|
})
|
|
}
|
|
,
|
|
/**分包商信息查询*/
|
|
getConsPersonList() {
|
|
this.loading = true
|
|
this.personQueryParams.consUuid = this.paramsData.consUuid
|
|
this.personQueryParams.proId = this.proId
|
|
this.personQueryParams.taskId = this.paramsData.taskId
|
|
this.changTime()
|
|
getConsPersonList(this.personQueryParams).then(response => {
|
|
this.personList = response.rows
|
|
this.personTotal = response.total
|
|
this.loading = false
|
|
})
|
|
}
|
|
,
|
|
/**工器具信息查询*/
|
|
getConsEquipList() {
|
|
this.loading = true
|
|
this.equipQueryParams.consUuid = this.paramsData.consUuid
|
|
this.equipQueryParams.uuid = this.paramsData.consUuid
|
|
this.equipQueryParams.taskId = this.paramsData.taskId
|
|
this.equipQueryParams.proId = this.proId
|
|
this.equipQueryParams.type = '2'
|
|
getConsEquipList(this.equipQueryParams).then(response => {
|
|
this.equipList = response.rows
|
|
this.equipTotal = response.total
|
|
this.loading = false
|
|
})
|
|
}
|
|
,
|
|
/**施工材料信息查询*/
|
|
getConsMaterialsList() {
|
|
this.loading = true
|
|
this.materialsQueryParams.consId = this.consId
|
|
this.materialsQueryParams.proId = this.proId
|
|
this.changMaterialsTime()
|
|
getConsMaterialsList(this.materialsQueryParams).then(response => {
|
|
this.materialsList = response.rows
|
|
this.materialsTotal = response.total
|
|
this.loading = false
|
|
})
|
|
}
|
|
,
|
|
/** 搜索按钮操作 */
|
|
handleQuery() {
|
|
this.queryParams.pageNum = 1
|
|
this.getSubList()
|
|
}
|
|
,
|
|
handleQueryPerson() {
|
|
this.queryParams.pageNum = 1
|
|
this.getConsPersonList()
|
|
}
|
|
,
|
|
equipHandleQuery() {
|
|
this.queryParams.pageNum = 1
|
|
this.getConsEquipList()
|
|
}
|
|
,
|
|
materialsHandleQuery() {
|
|
this.queryParams.pageNum = 1
|
|
this.getConsMaterialsList()
|
|
}
|
|
,
|
|
/** 重置按钮操作 */
|
|
resetQuery() {
|
|
this.queryParams.subName = undefined
|
|
this.handleQuery()
|
|
}
|
|
,
|
|
/** 重置按钮操作 */
|
|
resetQueryPerson() {
|
|
this.personQueryParams.name = undefined
|
|
this.personQueryParams.status = undefined
|
|
this.personQueryParams.admissionDate = undefined
|
|
this.personQueryParams.departureDate = undefined
|
|
this.timeRange = []
|
|
this.handleQueryPerson()
|
|
}
|
|
,
|
|
/** 重置按钮操作 */
|
|
equipResetQuery() {
|
|
this.equipQueryParams.equipName = undefined
|
|
this.equipHandleQuery()
|
|
}
|
|
,
|
|
/** 重置按钮操作 */
|
|
materialsResetQuery() {
|
|
this.materialsQueryParams.startDate = undefined
|
|
this.materialsQueryParams.endDate = undefined
|
|
this.materialsTimeRange = []
|
|
this.materialsQueryParams.fileName = undefined
|
|
this.materialsQueryParams.name = undefined
|
|
this.materialsHandleQuery()
|
|
}
|
|
,
|
|
/** 导出按钮操作 */
|
|
handleExport() {
|
|
this.derive('system/post/export', {
|
|
...this.queryParams
|
|
}, `post_${new Date().getTime()}.xlsx`)
|
|
}
|
|
,
|
|
/** 导出按钮操作 */
|
|
handleExportPerosn() {
|
|
this.derive('system/post/export', {
|
|
...this.queryParams
|
|
}, `post_${new Date().getTime()}.xlsx`)
|
|
}
|
|
,
|
|
/** 导出按钮操作 */
|
|
equipHandleExport() {
|
|
this.derive('system/post/export', {
|
|
...this.queryParams
|
|
}, `post_${new Date().getTime()}.xlsx`)
|
|
}
|
|
,
|
|
/** 导出按钮操作 */
|
|
materialsHandleExport() {
|
|
this.derive('system/post/export', {
|
|
...this.queryParams
|
|
}, `post_${new Date().getTime()}.xlsx`)
|
|
},
|
|
// 点击tab事件 切换tab
|
|
handleClick(tab, event) {
|
|
//切换tab 重获加载数据
|
|
},
|
|
/**人员基本信息查看*/
|
|
handleView(row) {
|
|
this.supervisorOpen = false
|
|
this.workCardOpen = false
|
|
this.constructionPersonnelOpen = true
|
|
const params = {
|
|
id: row.id,
|
|
uuid: row.uuid,
|
|
consUuid: this.paramsData.consUuid,
|
|
proId: this.paramsData.proId
|
|
}
|
|
getConstructionPersonnelDetails(params).then(response => {
|
|
console.log(response)
|
|
this.formData = response.data
|
|
this.formData.annotation = row.annotation
|
|
this.loading = false
|
|
})
|
|
}
|
|
,
|
|
close() {
|
|
this.supervisorOpen = false
|
|
this.workCardOpen = false
|
|
}
|
|
,
|
|
/**弹出工作证页面按钮*/
|
|
handleGenerate(row) {
|
|
this.workCardOpen = true
|
|
this.workCardItems = {
|
|
proName: row.proName,
|
|
faceUrl: row.faceUrl,
|
|
name: row.name,
|
|
phone: row.phone,
|
|
postName: row.postName
|
|
}
|
|
}
|
|
,
|
|
/**工器具详情*/
|
|
equipHandleView(row) {
|
|
this.equipOpen = true
|
|
const params = {
|
|
id: row.id,
|
|
uuid: row.uuid,
|
|
consUuid: this.paramsData.consUuid,
|
|
proId: this.paramsData.proId
|
|
}
|
|
this.getEquipType()
|
|
getEquipDetails(params).then(response => {
|
|
this.equipItem = response.data
|
|
this.equipItem.annotation = row.annotation
|
|
this.loading = false
|
|
})
|
|
},
|
|
// 获取设备类型
|
|
getEquipType() {
|
|
const params = {
|
|
dictType: 'sys_tools_type',
|
|
dictValue: ''
|
|
}
|
|
dictTableOption(params).then(response => {
|
|
this.equipTypeOptions = response.data
|
|
})
|
|
},
|
|
/**预览文件*/
|
|
materialsHandlePreview(row) {
|
|
this.viewOpen = true
|
|
this.filePreview = {
|
|
filePreviewUrl: row.filePath,
|
|
fileName: row.fileName
|
|
}
|
|
}
|
|
,
|
|
/**下载文件*/
|
|
materialsHandleDownload(row) {
|
|
downloadFile(row.filePath, row.fileName)
|
|
},
|
|
/** 审核通过*/
|
|
approvalPass() {
|
|
const param = {
|
|
reason: this.reason === '' ? '@@@@@@@@' : this.reason,
|
|
...this.paramsData,
|
|
agree: '1'
|
|
}
|
|
this.approval(param, '审批通过')
|
|
},
|
|
/**审核驳回*/
|
|
approvalTurnDown(e) {
|
|
const param = {
|
|
reason: this.reason === '' ? '@@@@@@@@' : this.reason,
|
|
rejectReason: e.rejectReason,
|
|
...this.paramsData,
|
|
agree: '2'
|
|
}
|
|
this.approval(param, '退回成功')
|
|
},
|
|
/**终审*/
|
|
approvalFinalInstance() {
|
|
const param = {
|
|
reason: this.reason === '' ? '@@@@@@@@' : this.reason,
|
|
...this.paramsData,
|
|
agree: '3'
|
|
}
|
|
this.approval(param, '终审成功')
|
|
},
|
|
/**
|
|
* 审批方法+
|
|
* @param param
|
|
* @param text
|
|
*/
|
|
getMyToDoNum,
|
|
approval(param, text) {
|
|
submitPersonApproval(param).then(response => {
|
|
this.getMyToDoNum()
|
|
console.log('responseresponseresponse', JSON.stringify(response))
|
|
if (response.code === 200) {
|
|
this.$message({
|
|
message: text,
|
|
type: 'success'
|
|
})
|
|
this.$tab.closePage()
|
|
} else {
|
|
this.$message({
|
|
message: response.msg,
|
|
type: 'error'
|
|
})
|
|
}
|
|
})
|
|
}
|
|
}
|
|
|
|
}
|
|
</script>
|
|
<style scoped>
|
|
</style>
|