<template>
|
<div class="app-container">
|
<div class="filter-container">
|
<div class="basic_search">
|
<span>开始时间:</span>
|
<el-date-picker value-format="yyyy-MM-dd HH:mm" placeholder="请选择开始时间" type="datetime" v-model="listQuery.starttime" style="width:200px">
|
</el-date-picker>
|
</div>
|
<div class="basic_search">
|
<span>结束时间:</span>
|
<el-date-picker value-format="yyyy-MM-dd HH:mm" placeholder="请选择结束时间" type="datetime" v-model="listQuery.endtime" style="width:200px">
|
</el-date-picker>
|
</div>
|
<div class="basic_search">
|
<span>部门:</span>
|
<el-input v-model="listQuery.department" style="width:200px">
|
</el-input>
|
</div>
|
<div class="basic_search">
|
<span>施工单位:</span>
|
<el-input v-model="listQuery.constructionunit" style="width:200px">
|
</el-input>
|
</div>
|
<div class="basic_search">
|
<span>作业类型:</span>
|
<el-select v-model="listQuery.level" clearable style="width:200px">
|
<el-option
|
v-for="item in taskTypeList"
|
:key="item.id"
|
:value="item.id"
|
:label="item.name"
|
></el-option>
|
</el-select>
|
</div>
|
<div class="basic_search">
|
<span>审批状态:</span>
|
<el-select v-model="listQuery.status" clearable style="width:200px">
|
<el-option
|
v-for="item in statusList"
|
:key="item.id"
|
:value="item.id"
|
:label="item.name"
|
></el-option>
|
</el-select>
|
</div>
|
<div class="basic_search">
|
<span>作业状态:</span>
|
<el-select v-model="listQuery.flag" clearable style="width:200px">
|
<el-option
|
v-for="item in flagList"
|
:key="item.id"
|
:value="item.id"
|
:label="item.name"
|
></el-option>
|
</el-select>
|
</div>
|
<el-button style="margin-left: 10px;" type="primary" icon="el-icon-refresh" @click="refreshHandle">搜索</el-button>
|
</div>
|
<div class="table_content">
|
<el-table
|
v-loading="listLoading"
|
:key="tableKey"
|
:data="taskData"
|
border
|
fit
|
highlight-current-row
|
style="width: 100%;"
|
@sort-change="sortChange"
|
>
|
<el-table-column label="单位名称" prop="unit" align="center" sortable="custom">
|
</el-table-column>
|
<el-table-column label="单位代码" prop="code" align="center" sortable="custom">
|
</el-table-column>
|
<el-table-column label="申请人" prop="applicant" align="center" sortable="custom">
|
</el-table-column>
|
<el-table-column label="施工单位" prop="constructionunit" align="center" sortable="custom">
|
</el-table-column>
|
<el-table-column label="作业内容" prop="area" align="center" sortable="custom">
|
</el-table-column>
|
<el-table-column label="开始时间" prop="starttime" align="center" sortable="custom">
|
</el-table-column>
|
<el-table-column label="结束时间" prop="endtime" align="center" sortable="custom">
|
</el-table-column>
|
<el-table-column label="作业级别" prop="level" align="center" sortable="custom">
|
<template slot-scope="scope">
|
<div v-for="item in levelList">
|
<div v-if="scope.row.level === item.id">
|
<span>{{item.name}}</span>
|
<!-- <el-tag v-if="scope.row.level ===2" type="success">{{item.name}}</el-tag>-->
|
<!-- <el-tag v-if="scope.row.level ===1" type="warning">{{item.name}}</el-tag>-->
|
<!-- <el-tag v-if="scope.row.level ===0" type="danger">{{item.name}}</el-tag>-->
|
</div>
|
</div>
|
</template>
|
</el-table-column>
|
<el-table-column label="任务审批状态" prop="status" align="center" sortable="custom">
|
<template slot-scope="scope">
|
<div v-for="item in statusList">
|
<div v-if="scope.row.status === item.id">
|
<span>{{item.name}}</span>
|
</div>
|
</div>
|
</template>
|
</el-table-column>
|
<el-table-column label="作业状态" prop="flag" align="center" sortable="custom">
|
<template slot-scope="scope">
|
<div v-for="item in flagList">
|
<div v-if="scope.row.flag === item.id">
|
<span>{{item.name}}</span>
|
</div>
|
</div>
|
</template>
|
</el-table-column>
|
<el-table-column label="创建时间" prop="createdat" align="center" sortable="custom">
|
</el-table-column>
|
<el-table-column label="最近修改时间" prop="modifiedat" align="center" sortable="custom">
|
</el-table-column>
|
<el-table-column label="操作" align="center" width="280" class-name="small-padding fixed-width">
|
<template slot-scope="scope">
|
<el-button type="text" @click="showReviewInfo(scope.row)" v-if="scope.row.taskReviews.length !== 0">查看审批</el-button>
|
<el-button type="text" @click="editWatch(scope.row,'监护人')" v-if="scope.row.approversupervisor !== '' && scope.row.approversupervisor !== null && applicant === scope.row.applicant">监护人</el-button>
|
<el-button type="text" @click="editWorker(scope.row,'作业人')" v-if="scope.row.taskWorkers.length !== 0 && applicant === scope.row.applicant">作业人</el-button>
|
<el-button type="text" @click="showTaskInfo(scope.row,'查看')">查看</el-button>
|
<el-button type="text" @click="downloadFile(scope.row)" v-if="scope.row.status === 7">下载</el-button>
|
<el-tooltip class="item" effect="dark" content="点击重新生成票证" placement="top-end">
|
<el-button type="text" @click="regenerateWorkCertHandler(scope.row)" icon="el-icon-refresh" v-if="scope.row.status === 7"></el-button>
|
</el-tooltip>
|
</template>
|
</el-table-column>
|
</el-table>
|
<br>
|
<el-pagination
|
v-show="recordTotal>0"
|
:current-page="currentPage"
|
:page-sizes="[10, 20, 30, 50]"
|
:page-size="pageSize"
|
:total="recordTotal"
|
layout="total, sizes, prev, pager, next, jumper"
|
background
|
style="float:right;"
|
@size-change="handleSizeChange"
|
@current-change="handleCurrentChange"
|
/>
|
<br>
|
</div>
|
<task-info ref="taskInfo" @getinfo="getTaskData"></task-info>
|
<el-dialog :visible.sync="watchDialog" :modal-append-to-body="false" :close-on-click-modal="false" width="25%">
|
<div align="center">
|
<span>原监护人:</span>
|
<el-input v-model="supervisor" style="width:200px" readonly>
|
</el-input>
|
</div>
|
<div align="center" style="padding-top: 20px">
|
<span>现监护人:</span>
|
<el-select v-model="supervisorForm.approversupervisor">
|
<el-option
|
v-for="item in workerList"
|
:key="item.id"
|
:value="item.realname"
|
:label="item.realname"
|
>
|
</el-option>
|
</el-select>
|
<div align="center" style="padding-top: 20px">
|
<el-button type="primary" @click="submitEditSupervisor()">确定</el-button>
|
</div>
|
</div>
|
</el-dialog>
|
<el-dialog :visible.sync="workerDialog" :modal-append-to-body="false" :close-on-click-modal="false" width="70%">
|
<div style="padding-bottom: 10px">
|
<el-button type="primary" @click="addTaskWorker">添加作业人</el-button>
|
</div>
|
<el-table :data="taskWorkers" border fit highlight-current-row style="width: 100%;" :header-cell-style="{'text-align':'center'}">
|
<el-table-column type="index" label="序号" align="center" width="60"/>
|
<el-table-column prop="taskcode" label="作业编号" align="left">
|
</el-table-column>
|
<el-table-column prop="unit" label="作业类型" align="left">
|
<template slot-scope="scope">
|
<el-select v-model="scope.row.tasktype">
|
<el-option
|
v-for="item in taskTypeList"
|
:key="item.id"
|
:label="item.name"
|
:value="item.name"
|
>
|
</el-option>
|
</el-select>
|
</template>
|
</el-table-column>
|
<el-table-column prop="unit" label="施工单位" align="left">
|
<template slot-scope="scope">
|
<el-input v-model="scope.row.unit"></el-input>
|
</template>
|
</el-table-column>
|
<el-table-column prop="worker" label="作业人姓名" align="left">
|
<template slot-scope="scope">
|
<el-select v-model="scope.row.worker">
|
<el-option
|
v-for="item in workerList"
|
:key="item.id"
|
:value="item.realname"
|
:label="item.realname"
|
>
|
</el-option>
|
</el-select>
|
</template>
|
</el-table-column>
|
<el-table-column prop="branch" label="特种作业工种" align="left">
|
<template slot-scope="scope">
|
<el-input v-model="scope.row.branch"></el-input>
|
</template>
|
</el-table-column>
|
<el-table-column prop="number" label="特种作业证号" align="left">
|
<template slot-scope="scope">
|
<el-input v-model="scope.row.number"></el-input>
|
</template>
|
</el-table-column>
|
<el-table-column label="操作" align="center">
|
<template slot-scope="scope">
|
<el-button type="text" @click="deleteWorker(scope.$index)">删除</el-button>
|
</template>
|
</el-table-column>
|
</el-table>
|
<div align="center" style="padding-top: 20px">
|
<el-button type="primary" @click="submitWorker">确定</el-button>
|
</div>
|
</el-dialog>
|
<review-info ref="reviewInfo"></review-info>
|
</div>
|
</template>
|
|
<script>
|
import taskInfo from './components/taskInfo'
|
import { mapGetters } from 'vuex'
|
import { computePageCount } from '../../../utils'
|
import { changeSupervisor, changeWorker, lookTaskList, submitTask ,regenerateWorkCert} from '../../../api/task'
|
import { getUnitList } from '../../../api/unitManage'
|
import { concreteUser, userList } from '@/api/user'
|
import { parseError } from '../../../utils/messageDialog'
|
import reviewInfo from './components/reviewInfo/index'
|
|
export default {
|
name: 'index',
|
filters: {
|
},
|
computed: {
|
...mapGetters([
|
'userType'
|
])
|
},
|
data() {
|
return {
|
tableKey: 0,
|
applicant:'',
|
taskData: [],
|
workerList:[],
|
companyList:[],
|
taskWorkers:[],
|
listLoading: false,
|
watchDialog:false,
|
workerDialog:false,
|
pageSize: 10,
|
recordTotal: 0,
|
currentPage: 1,
|
pageTotal: 0,
|
title:'',
|
supervisor:'',
|
code:'',
|
supervisorForm:{
|
taskcode:'',
|
approversupervisor:''
|
},
|
taskTypeList:[
|
{id:0,name:'受限空间作业'},
|
{id:1,name:'吊装作业'},
|
{id:2,name:'动土作业'},
|
{id:3,name:'断路作业'},
|
{id:4,name:'高处作业'},
|
{id:5,name:'临时用电作业'},
|
{id:6,name:'盲板抽堵作业'},
|
{id:7,name:'动火作业'},
|
],
|
levelList:[{id:2,name:'特级'},{id:1,name:'一级'},{id:0,name:'二级'},],
|
statusList:[
|
{id:0,name:'已驳回'},
|
{id:1,name:'未提交'},
|
{id:2,name:'已提交'},
|
{id:3,name:'施工单位已确认'},
|
{id:4,name:'动火部位负责人审批通过'},
|
{id:5,name:'相关部门审批通过'},
|
{id:6,name:'安全部门审批通过'},
|
{id:7,name:'审批通过'},
|
],
|
flagList:[
|
{id:0,name:'等待整改'},
|
{id:1,name:'作业中止'},
|
{id:2,name:'等待检查'},
|
{id:3,name:'等待开始'},
|
{id:4,name:'作业中'},
|
{id:5,name:'作业完成'},
|
],
|
listQuery:{
|
starttime:'',
|
endtime:'',
|
department:'',
|
constructionunit:'',
|
level:'',
|
status:'',
|
flag:'',
|
},
|
}
|
},
|
components:{
|
taskInfo,
|
reviewInfo
|
},
|
created() {
|
this.getTaskData()
|
this.getWorker()
|
},
|
methods: {
|
async getTaskData(){
|
this.applicant = sessionStorage.getItem('realname')
|
this.listLoading = true
|
let params = {}
|
params['pageIndex'] = this.currentPage
|
params['pageSize'] = this.pageSize
|
params['order'] = this.orderValue
|
params['sort'] = this.sortValue
|
for (const i in this.listQuery) {
|
console.log(i)
|
params[i] = this.listQuery[i]
|
}
|
let res = await lookTaskList(params)
|
if(res.data.code === '200'){
|
this.recordTotal = res.data.result.totalCount
|
this.pageSize = res.data.result.pageSize
|
this.pageTotal = computePageCount(res.data.result.totalCount, res.data.result.pageSize)
|
this.currentPage = res.data.result.pageIndex
|
this.taskData = res.data.result.result
|
}else{
|
this.$message({
|
message:res.data.message,
|
type:'warning'
|
})
|
}
|
this.listLoading = false
|
},
|
showReviewInfo(value){
|
this.$refs.reviewInfo.openReviewInfo(value)
|
},
|
editWatch(value){
|
this.watchDialog = true
|
this.supervisor = value.approversupervisor
|
this.supervisorForm.taskcode = value.code
|
this.supervisorForm.approversupervisor = ''
|
},
|
editWorker(value){
|
this.workerDialog = true
|
this.code = value.code
|
this.taskWorkers = value.taskWorkers
|
},
|
addTaskWorker(){
|
this.taskWorkers.push({
|
createdat: "",
|
createdby: "",
|
flag: 0,
|
id: 0,
|
modifiedat: "",
|
modifiedby: "",
|
taskcode: this.code,
|
unit: "",
|
worker: "",
|
branch: "",
|
number: "",
|
tasktype:'',
|
})
|
},
|
deleteWorker(val){
|
this.taskWorkers.splice(val,1)
|
},
|
submitWorker(){
|
this.$confirm('更换监护人,是否继续','提示',{
|
confirmButtonText:'确定',
|
cancelButtonText:'取消',
|
type:'warning',
|
}).then(()=> {
|
changeWorker(this.taskWorkers).then( (res)=>{
|
if(res.data.code === '200'){
|
this.workerDialog = false
|
this.getTaskData()
|
this.$notify({
|
title:'成功',
|
message:'提交成功',
|
type:'success',
|
duration:2000,
|
})
|
}else{
|
this.$message({
|
message:res.data.message,
|
type:'warning'
|
})
|
}
|
})
|
}).catch(error =>{
|
parseError({ error: error, vm: this })
|
})
|
},
|
|
submitEditSupervisor(){
|
this.$confirm('更换监护人,是否继续','提示',{
|
confirmButtonText:'确定',
|
cancelButtonText:'取消',
|
type:'warning',
|
}).then(()=> {
|
changeSupervisor(this.supervisorForm).then( (res)=>{
|
if(res.data.code === '200'){
|
this.watchDialog = false
|
this.getTaskData()
|
this.$notify({
|
title:'成功',
|
message:'提交成功',
|
type:'success',
|
duration:2000,
|
})
|
}else{
|
this.$message({
|
message:res.data.message,
|
type:'warning'
|
})
|
}
|
})
|
}).catch(error =>{
|
parseError({ error: error, vm: this })
|
})
|
},
|
showTaskInfo(value,title){
|
this.$refs.taskInfo.openTaskInfo(value,title)
|
},
|
submitTask(row){
|
this.$confirm('提交此条任务,是否继续','提示',{
|
confirmButtonText:'确定',
|
cancelButtonText:'取消',
|
type:'warning',
|
}).then(()=> {
|
submitTask({id:row.id}).then( ()=>{
|
this.getTaskData()
|
this.$notify({
|
title:'成功',
|
message:'提交成功',
|
type:'success',
|
duration:2000,
|
})
|
})
|
})
|
},
|
|
|
downloadFile(val){
|
if(val.path === null || val.path === ''){
|
this.$message({
|
type:'warning',
|
message:'文件未生成'
|
})
|
}else{
|
window.open(process.env.IMG_API + val.path,'_blank')
|
}
|
},
|
regenerateWorkCertHandler(row){
|
this.$confirm('是否确认重新生成票证','提示',{
|
confirmButtonText:'确认',
|
cancelButtonText:'取消',
|
type:'warning',
|
}).then(()=>{
|
regenerateWorkCert(row.code).then(res=>{
|
if (res.data.code === '200') {
|
this.$message({
|
type:'success',
|
message:'重新生成成功'
|
})
|
}else{
|
this.$message({
|
type:'warning',
|
message:res.data.message,
|
})
|
}
|
|
})
|
})
|
},
|
|
|
|
refreshHandle(){
|
this.getTaskData()
|
},
|
handleSizeChange(val){
|
this.pageSize = val
|
this.getTaskData()
|
},
|
handleCurrentChange(val){
|
this.currentPage = val
|
this.getTaskData()
|
},
|
async getWorker(){
|
let params = {}
|
params['company'] = sessionStorage.getItem('company')
|
params['department'] = sessionStorage.getItem('department')
|
let res = await concreteUser(params)
|
if(res.data.code === '200'){
|
this.workerList = res.data.result
|
}
|
},
|
sortChange(params){
|
this.sortValue = params.sort
|
this.orderValue = params.order
|
this.getTaskData()
|
}
|
|
}
|
}
|
</script>
|
<style scoped>
|
.basic_search{
|
display:inline-block;
|
padding-bottom: 10px;
|
}
|
</style>
|