| | |
| | | </div> |
| | | <div class="search-warp"> |
| | | <div @click="changeTab(1, 'all')" :class="{'item-warm': true, 'all-color': true, 'active': 1 === selectTabId}">全部事项<span v-if="detailData && detailData.statistics">({{detailData.statistics.totalTaskNum}})</span></div> |
| | | <div @click="changeTab(2, 'todo')" :class="{'item-warm': true, 'all-color': true, 'active': 2 === selectTabId}">待办事项<span v-if="detailData && detailData.statistics">({{detailData.statistics.todoTaskNum}})</span></div> |
| | | <div @click="changeTab(3, 'todo')" :class="{'item-warm': true, 'current-color': true, 'active': 3 === selectTabId}">当前环节</div> |
| | | <div @click="changeTab(2, 'todo')" :class="{'item-warm': true, 'todo-color': true, 'active': 2 === selectTabId}">待办事项<span v-if="detailData && detailData.statistics">({{detailData.statistics.todoTaskNum}})</span></div> |
| | | <div @click="changeTab(4, 'remaining')" :class="{'item-warm': true, 'remaining-color': true, 'active': 4 === selectTabId}">剩余事项<span v-if="detailData && detailData.statistics">({{detailData.statistics.remainingTaskNum}})</span></div> |
| | | <div @click="changeTab(5, 'timely')" :class="{'item-warm': true, 'timely-color': true, 'active': 5 === selectTabId}">按时完成<span v-if="detailData && detailData.statistics">({{detailData.statistics.timelyFinishedTaskNum}})</span></div> |
| | | <div @click="changeTab(6, 'overtime')" :class="{'item-warm': true, 'overtime-color': true, 'active': 6 === selectTabId}">超时事项(0)</div> |
| | | <div @click="changeTab(7, 'willOvertime')" :class="{'item-warm': true, 'willOvertime-color': true, 'active': 7 === selectTabId}">临期事项(0)</div> |
| | | <div @click="changeTab(6, 'overtime')" :class="{'item-warm': true, 'overtime-color': true, 'active': 6 === selectTabId}">超时事项<span v-if="detailData && detailData.statistics">({{detailData.statistics.overtimeTaskNum}})</span></div> |
| | | <div @click="changeTab(3, 'wait')" :class="{'item-warm': true, 'wait-color': true, 'active': 3 === selectTabId}">容缺事项<span v-if="detailData && detailData.statistics">({{detailData.statistics.waitTaskNum}})</span></div> |
| | | <div @click="changeTab(7, 'jump')" :class="{'item-warm': true, 'willOvertime-color': true, 'active': 7 === selectTabId}">跳过事项<span v-if="detailData && detailData.statistics">({{detailData.statistics.jumpTaskNum}})</span></div> |
| | | <div @click="changeTab(8, 'urge')" :class="{'item-warm': true, 'urge-color': true, 'active': 8 === selectTabId}">督办事项(0)</div> |
| | | </div> |
| | | <div style="display: flex;justify-content: center;align-items: center;margin-top: 20px; position: relative"> |
| | | <el-form :inline="true" :model="queryParams" class="demo-form-inline"> |
| | | <el-form-item label="任务名称"> |
| | | <el-input v-model="queryParams.taskName" placeholder="任务名称"></el-input> |
| | | <el-input v-model="queryParams.taskName" clearable @clear="search" placeholder="任务名称"></el-input> |
| | | </el-form-item> |
| | | <el-form-item> |
| | | <el-button type="primary" @click="search">查询</el-button> |
| | |
| | | :formatter="candidateFormatter" |
| | | > |
| | | </el-table-column> |
| | | <!-- <el-table-column--> |
| | | <!-- prop="promoterUnitName"--> |
| | | <!-- label="发起单位"--> |
| | | <!-- >--> |
| | | <!-- </el-table-column>--> |
| | | <!-- <el-table-column--> |
| | | <!-- prop="promoterName"--> |
| | | <!-- label="发起人"--> |
| | | <!-- >--> |
| | | <!-- </el-table-column>--> |
| | | <!-- <el-table-column--> |
| | | <!-- align="center"--> |
| | | <!-- prop="handlerType"--> |
| | | <!-- label="处理方类型"--> |
| | | <!-- >--> |
| | | <!-- <template slot-scope="scope">--> |
| | | <!-- <el-tag v-if="scope.row.handlerType === 'USER'">人员账号</el-tag>--> |
| | | <!-- <el-tag type="success" v-else-if="scope.row.handlerType === 'DEPT'">单位</el-tag>--> |
| | | <!-- <el-tag type="info" v-else-if="scope.row.handlerType === 'ROLE'">角色</el-tag>--> |
| | | <!-- </template>--> |
| | | <!-- </el-table-column>--> |
| | | <!-- <el-table-column--> |
| | | <!-- prop="handlerUnitName"--> |
| | | <!-- label="处理单位"--> |
| | | <!-- :formatter="unitFormatter"--> |
| | | <!-- >--> |
| | | <!-- </el-table-column>--> |
| | | <!-- <el-table-column--> |
| | | <!-- prop="handlerName"--> |
| | | <!-- label="候选处理人"--> |
| | | <!-- :formatter="candidateFormatter"--> |
| | | <!-- >--> |
| | | <!-- </el-table-column>--> |
| | | <!-- <el-table-column--> |
| | | <!-- prop="handlerName"--> |
| | | <!-- label="实际处理人"--> |
| | | <!-- :formatter="finalFinishedFormatter"--> |
| | | <!-- >--> |
| | | <!-- </el-table-column>--> |
| | | <el-table-column |
| | | align="center" |
| | | prop="taskStatus" |
| | |
| | | this.queryParams.processInsId = this.$route.query.processInsId |
| | | this.queryParams.deployId = this.$route.query.deployId |
| | | this.queryParams.processName = this.$route.query.processName |
| | | if (this.$route.query.selectTabId) { |
| | | this.selectTabId = parseInt(this.$route.query.selectTabId) |
| | | } |
| | | sessionStorage.setItem("projectProDetail", JSON.stringify(this.queryParams)) |
| | | } else { |
| | | this.queryParams = params |
| | | } |
| | | this.loading = true |
| | | this.changeTab(this.selectTabId, this.transEventType(this.selectTabId)) |
| | | this.getProjectProcessInfo() |
| | | }, |
| | | methods: { |
| | | transEventType(selectTabId) { |
| | | if (selectTabId == 1) { |
| | | return "all" |
| | | } else if (selectTabId == 2) { |
| | | return "todo" |
| | | } else if (selectTabId == 3) { |
| | | return "wait" |
| | | } else if (selectTabId == 4) { |
| | | return "remaining" |
| | | } else if (selectTabId == 5) { |
| | | return "timely" |
| | | } else if (selectTabId == 6) { |
| | | return "overtime" |
| | | } else if (selectTabId == 7) { |
| | | return "jump" |
| | | } else if (selectTabId == 8) { |
| | | return "urge" |
| | | } |
| | | }, |
| | | submitSupervise() { |
| | | this.$refs["superviseForm"].validate(valid => { |
| | | if (valid) { |
| | |
| | | this.superviseForm.content =''; |
| | | this.superviseForm.taskId = row.taskId; |
| | | this.superviseForm.projectId = this.$route.query.projectId; |
| | | this.superviseForm.processInsId = row.taskId; |
| | | this.superviseForm.processInsId = row.processInsId; |
| | | this.superviseForm.superviseType = "SUPERVISE"; |
| | | this.superviseForm.receiverType = row.handlerType; |
| | | if (row.handlerType === 'USER') { |
| | |
| | | }) |
| | | }, |
| | | unitFormatter(row) { |
| | | if (row.taskStatus != '已完成') { |
| | | if (row.taskStatus != '已完成' && row.taskStatus != '跳过' && row.taskStatus != '超时已完成') { |
| | | return null |
| | | } |
| | | if (row.handlerType === 'USER') { |
| | | return null; |
| | | } else if (row.handlerType === 'DEPT') { |
| | | return row.handlerUnitName.join("、") |
| | | } else if (row.handlerType === 'ROLE') { |
| | | return row.handlerUnitName.join('、') |
| | | } |
| | | return row.handlerUnitName.join("、") |
| | | }, |
| | | candidateFormatter(row) { |
| | | if (row.taskStatus != '已完成') { |
| | | if (row.taskStatus != '已完成' && row.taskStatus != '跳过' && row.taskStatus != '超时已完成') { |
| | | return null |
| | | } |
| | | return row.handlerName.join('、') |
| | | return row.handlerName.join("、") |
| | | // if (row.handlerType === 'USER') { |
| | | // return row.handlerName.join('、') |
| | | // } else if (row.handlerType === 'DEPT') { |
| | |
| | | } |
| | | }, |
| | | showHandle(row) { |
| | | if (row.taskStatus === '待办' || row.taskStatus === '挂起') { |
| | | if (row.taskStatus === '待办' || row.taskStatus === '挂起' || row.taskStatus === '容缺' || row.taskStatus === '超时未完成') { |
| | | if (row.handlerType === "USER") { |
| | | console.log(row.handlerId.indexOf(this.$store.state.user.id) !== -1, "我是不是") |
| | | return row.handlerId.indexOf(this.$store.state.user.id) !== -1 |
| | | } else if (row.handlerType === "DEPT") { |
| | | console.log(this.$store.state.user.deptId, "部门id", row.handlerUnitId) |
| | | return row.handlerUnitId.indexOf(this.$store.state.user.deptId) !== -1 |
| | | // return this.$store.state.user.name === '市发展改革委' || this.$store.state.user.name === '市住建局' |
| | | return row.handlerUnitId.indexOf(this.$store.state.user.deptId) !== -1 || row.handlerUnitId.some(id => this.$store.state.user.childDeptIds.indexOf(id) !== -1) |
| | | } else if (row.handlerType === "ROLE") { |
| | | return row.handlerUnitId.some(roleId => this.$store.state.user.roleIds.indexOf(roleId) !== -1) |
| | | } |
| | |
| | | } |
| | | }, |
| | | goToDo(row) { |
| | | // 查询该任务是否配置了需要审批 |
| | | let params = { |
| | | processDefId: row.processDefId, |
| | | taskId: row.taskId |
| | | } |
| | | getTaskIsAuditing(params).then(res => { |
| | | console.log("row",row) |
| | | if (row.taskStatus === '容缺') { |
| | | this.$router.push({ |
| | | path: '/flowable/task/myProcess/send/index', |
| | | query: { |
| | |
| | | flowName: this.queryParams.processName, |
| | | projectName: this.detailData.projectName, |
| | | taskId: row.taskId, |
| | | showAuditing: res.data, |
| | | showAuditing: false, |
| | | projectId: this.queryParams.projectId, |
| | | isWait: true, |
| | | goBackParams: this.queryParams |
| | | } |
| | | }) |
| | | }) |
| | | } else { |
| | | // 查询该任务是否配置了需要审批 |
| | | let params = { |
| | | processDefId: row.processDefId, |
| | | taskId: row.taskId |
| | | } |
| | | getTaskIsAuditing(params).then(res => { |
| | | console.log("row",row) |
| | | this.$router.push({ |
| | | path: '/flowable/task/myProcess/send/index', |
| | | query: { |
| | | deployId: row.deployId, |
| | | procDefId: row.processDefId, |
| | | procInsId: row.processInsId, |
| | | processName: row.taskName, |
| | | flowName: this.queryParams.processName, |
| | | projectName: this.detailData.projectName, |
| | | taskId: row.taskId, |
| | | showAuditing: res.data, |
| | | projectId: this.queryParams.projectId, |
| | | isWait: false, |
| | | goBackParams: this.queryParams |
| | | } |
| | | }) |
| | | }) |
| | | } |
| | | }, |
| | | goToProcessDetail(row) { |
| | | this.$router.push({ path: '/flowable/task/myProcess/detail/index', |
| | |
| | | this.total = res.total |
| | | }) |
| | | }, |
| | | isProject(id) { |
| | | const numericPattern = /^\d+(\.\d+)?$/; |
| | | return numericPattern.test(id) |
| | | }, |
| | | // 查询详情 |
| | | getProjectProcessInfo() { |
| | | getProjectProcessDetail(this.queryParams.projectId, this.queryParams.processDefId).then(res => { |
| | | const projectType = this.isProject(this.queryParams.projectId) ? "PROJECT" : "ENGINEERING" |
| | | const param = { |
| | | projectId: this.queryParams.projectId, |
| | | processDefId: this.queryParams.processDefId, |
| | | projectType: projectType |
| | | } |
| | | getProjectProcessDetail(param).then(res => { |
| | | this.detailData = res.data |
| | | this.taskList = res.taskList |
| | | this.total = res.total |
| | | this.loading = false |
| | | }) |
| | | }, |
| | | changeTab(id, event) { |
| | | let beforeId = this.selectTabId |
| | | this.selectTabId = id |
| | | this.queryParams.taskType = event |
| | | this.queryParams.currentPage = 1; |
| | | if (beforeId !== id) { |
| | | this.getList() |
| | | } |
| | | this.getList() |
| | | } |
| | | } |
| | | } |
| | |
| | | .all-color { |
| | | background-color: rgb(180, 253, 255); |
| | | } |
| | | .todo-color { |
| | | background-color: rgb(66, 174, 243); |
| | | } |
| | | |
| | | .current-color { |
| | | background-color: rgb(127, 131, 247); |
| | |
| | | color: white; |
| | | } |
| | | .timely-color { |
| | | background-color: rgb(204, 247, 131); |
| | | background-color: rgb(85, 248, 106); |
| | | } |
| | | .overtime-color { |
| | | background-color: rgb(129, 179, 55); |
| | | color: white; |
| | | background-color: #e8e866; |
| | | } |
| | | |
| | | .wait-color { |
| | | background-color: orange; |
| | | } |
| | | |
| | | .willOvertime-color { |
| | | background-color: rgb(255, 248, 29); |
| | | background-color: rgb(204, 247, 131); |
| | | } |
| | | .urge-color { |
| | | background-color: rgb(0, 0, 0); |
| | | background-color: red; |
| | | color: white; |
| | | } |
| | | .active { |