Files
laws-sinotruk-client/src/views/workCenter/processCenter/table/TodoList.vue
T

502 lines
17 KiB
Vue

<template>
<div>
<!-- 搜索区域 -->
<div class="table-page-search-wrapper">
<a-form layout="inline" @keyup.enter.native="searchQuery">
<a-row :gutter="24">
<!-- 流程名称 -->
<a-col :span="6">
<a-form-item :label="$t('processName')" :labelCol="labelCol" :wrapperCol="wrapperCol">
<a-input :placeholder="$t('pleaseEnter')+$t('processName')" v-model="queryParam.prcName"></a-input>
</a-form-item>
</a-col>
<!-- 流程编号 -->
<a-col :span="6">
<a-form-item :label="$t('workCenter.processCenter.processNumber')" :labelCol="labelCol" :wrapperCol="wrapperCol">
<a-input :placeholder="$t('pleaseEnter')+$t('workCenter.processCenter.processNumber')" v-model="queryParam.prcNum"></a-input>
</a-form-item>
</a-col>
<!-- 流程类型 -->
<a-col :span="6">
<a-form-item :label="$t('workCenter.processCenter.processType')" :labelCol="labelCol" :wrapperCol="wrapperCol">
<j-dict-select-tag
:placeholder="$t('pleaseSelect')+$t('workCenter.processCenter.processType')"
dict-code="prc_type"
:dropdownMatchSelectWidth="false"
v-model="queryParam.prcType">
</j-dict-select-tag>
</a-form-item>
</a-col>
<div style="float: right;overflow: hidden;" class="table-page-search-submitButtons">
<a-button type="primary" @click="searchQuery" icon="search" style="margin-left: 8px">{{ $t('query') }}</a-button>
<a-button type="primary" ghost @click="searchReset" icon="reload" style="margin-left: 8px">{{ $t('reset') }}</a-button>
</div>
</a-row>
</a-form>
</div>
<div>
<j-table
:can-drag="true"
:scroll="{x: '100%'}"
ref="table"
rowKey="taskId"
:columns="columns"
:dataSource="dataSource"
:pagination="ipagination"
:loading="loading"
:rowSelection="{selectedRowKeys: selectedRowKeys, onChange: onSelectChange}"
@change="handleTableChange">
<!-- 操作栏 -->
<div slot="action" slot-scope="{record}" class="action-span-cell">
<!-- 办理 -->
<a @click="handleTransact(record)" class="table-ope-btn">{{ $t('transact') }}</a>
<a-divider v-if="isShowTurnTo(record)" type="vertical" />
<!-- 转办 -->
<a v-if="isShowTurnTo(record)" @click="handleTurnTo(record)" class="table-ope-btn">{{ $t('turnTo') }}</a>
</div>
</j-table>
</div>
<!-- 转办需要选人 -->
<user-select-modal ref="userSelectModal" type="radio" @change="userSelectChange"></user-select-modal>
</div>
</template>
<script>
import JTable from '@/components/jero/JTable'
import { JeroListMixin } from '@/mixins/JeroListMixin'
import UserSelectModal from '@/components/selection/UserSelectModal'
import {
activelyReportTurnTo,
enStandardAnnulTurnTo,
enStandardChangeTurnTo,
enStandardEditTurnTo,
enStandardRecheckTurnTo,
enStandardSealSaveTurnTo,
enStandardStartUseTurnTo,
enterprisePlanApprovalTurnTo,
processTransfer,
standardizationInitTurnTo,
transferConsultationProcess,
transferInspectExtension,
transferInspectPlan,
transferInspectProcess,
transferInspectRectify,
transferPermissionApply,
transferPostMeetingManage,
transferProcurementProcess,
turnToStandardECProcess
} from '../../../../api/workCenter'
import {
ProcessType,
EsAnnulNodes,
EsChangeNodes,
EsInitChangeNodes,
EsRecheckNodes,
EsRevisionNodes,
EsRevisionPlanActivityReportNodes,
EsRevisionPlanStandardizationInitNodes,
EsSealSaveNodes,
EsStartUseNodes,
EsInspectionPlan,
EsInspectionProcess,
InspectionExtensionRequestProcess,
PermissionApply,
PostMeetingManage,
FGEntryChangeProcessNode,
ConsultationProcess,
ProjectComplianceEvaluationProcessNode,
ProcurementProcessNodes,
StandardPromotion,
NoMatchTrackingNodes,
StandardComplianceNodes
} from '@/enums/commonEnums'
export default {
name: 'TodoList',
components: { JTable, UserSelectModal },
mixins: [JeroListMixin],
data () {
return {
labelCol: {
span: 4
},
wrapperCol: {
span: 14
},
/* 排序参数 */
isorter: {
column: 'receivedTaskTime',
order: 'desc'
},
columns: [
{ // 流程编号
title: this.$t('workCenter.processCenter.processNumber'),
align: 'center',
width: 180,
dataIndex: 'prcNum',
scopedSlots: { customRender: 'text' }
},
{ // 流程类型
title: this.$t('workCenter.processCenter.processType'),
align: 'center',
width: 180,
dataIndex: 'prcType_dictText',
scopedSlots: { customRender: 'text' }
},
{ // 流程名称
title: this.$t('processName'),
align: 'center',
width: 180,
dataIndex: 'prcName',
scopedSlots: { customRender: 'text' }
},
{ // 发起人
title: this.$t('workCenter.processCenter.initiator'),
align: 'center',
width: 180,
dataIndex: 'createUserId_dictText',
scopedSlots: { customRender: 'text' }
},
{ // 接收任务时间
title: this.$t('workCenter.processCenter.receivingTaskTime'),
align: 'center',
width: 180,
dataIndex: 'receivedTaskTime',
sorter: true,
scopedSlots: { customRender: 'text' }
},
{
title: this.$t('operation'),
scopedSlots: { customRender: 'action' },
align: 'center',
fixed: 'right',
width: 200
}
],
url: {
list: '/workCenter/getTodoList'
},
currentTurnTo: {}, // 当前转办
// 每个流程不显示待办按钮的节点nodeId
notTurnToBtn: {
// 标准法规入库/变更流程
[ProcessType.FB_ENTRY_CHANGE.value]: [FGEntryChangeProcessNode.initiate.value],
// 征求意见流程
[ProcessType.CONSULTATION.value]: [ConsultationProcess.initiate.value],
// 项目合规评估流程
[ProcessType.PROJECT_COMPLIANCE_EVALUATION.value]: [ProjectComplianceEvaluationProcessNode.initiate.value],
// 未符合项跟踪流程
[ProcessType.NO_MATCH_TRACKING.value]: [NoMatchTrackingNodes.initial.value],
// 法规合规评估流程
[ProcessType.REGULATORY_COMPLIANCE_ASSESSMENT.value]: [
StandardComplianceNodes.initial.value, StandardComplianceNodes.designEngineerWriteProject.value
],
// 法规采购流程
[ProcessType.LEGAL_PROCUREMENT.value]: [ProcurementProcessNodes.initiate.value, ProcurementProcessNodes.regulatoryEngineerConfirmation.value],
// 企标立项/变更计划
[ProcessType.ES_INIT_CHANGE.value]: [
EsInitChangeNodes.mainDrafterStart.value,
EsInitChangeNodes.mainDrafterCopy.value
],
// 年度制修订-各部门主动上报
[ProcessType.ES_ANNUAL_REPORT.value]: [
EsRevisionPlanActivityReportNodes.standardizationStart.value,
EsRevisionPlanActivityReportNodes.standardizationSumUp.value
],
// 年度制修订-标准化部门主动发起
[ProcessType.ES_ANNUAL_INIT.value]: [
EsRevisionPlanStandardizationInitNodes.standardizationStart.value,
EsRevisionPlanStandardizationInitNodes.standardizationUpdate.value,
EsRevisionPlanStandardizationInitNodes.mainDrafterEnterInfo.value,
EsRevisionPlanStandardizationInitNodes.standardizationSumUp.value,
EsRevisionPlanStandardizationInitNodes.standardizationTwoUpdate.value
],
// 企标制修订流程
[ProcessType.ES_EDIT.value]: [
EsRevisionNodes.mainDrafterSend.value,
EsRevisionNodes.mainDrafterPublish.value
],
// 企标更改流程
[ProcessType.ES_CHANGE.value]: [
EsChangeNodes.mainDrafterStart.value
],
// 企标复审流程
[ProcessType.ES_RECHECK.value]: [
EsRecheckNodes.standardizationSelectContact.value,
EsRecheckNodes.initiatorStart.value
],
// 企标废止流程
[ProcessType.ES_ABOLISH.value]: [
EsAnnulNodes.initiatorStart.value
],
// 企标封存流程
[ProcessType.ES_ARCHIVE.value]: [
EsSealSaveNodes.initiatorStart.value
],
// 已封存企标启用流程
[ProcessType.ES_ENABLE.value]: [
EsStartUseNodes.initiatorStart.value
],
// 企标稽查计划
[ProcessType.ES_INSPECTION_PLAN.value]: [
EsInspectionPlan.initiate.value,
EsInspectionPlan.fillInComments.value,
EsInspectionPlan.liaisonCollect.value
],
// 企标稽查流程
[ProcessType.ES_INSPECTION_PROCESS.value]: [EsInspectionProcess.initiate.value],
// 稽查延期申请流程
[ProcessType.INSPECTION_EXTENSION_REQUEST_PROCESS.value]: [InspectionExtensionRequestProcess.initiate.value],
// 企标稽查整改
[ProcessType.ES_INSPECTION_RECTIFICATION.value]: [],
// 权限申请流程
[ProcessType.PERMISSION_APPLY.value]: [PermissionApply.initiate.value],
// 标准宣贯流程
[ProcessType.STANDARD_PROMOTION.value]: [StandardPromotion.initiate.value],
// 会后管理流程
[ProcessType.POST_MEETING_MANAGE.value]: [PostMeetingManage.initiate.value]
}
}
},
methods: {
handleTableChange (pagination, filters, sorter) {
// 分页、排序、筛选变化时触发
if (Object.keys(sorter).length > 0) {
this.isorter.column = sorter.order ? sorter.field : 'receivedTaskTime'
this.isorter.order = sorter.order === 'ascend' ? 'asc' : 'desc'
}
this.ipagination = pagination
this.loadData()
},
// 办理
handleTransact (record) {
let path = ''
// 跳转到对应流程页面
switch (record.prcType + '') {
// 标准法规入库/变更流程
case '1':
path = '/workCenter/StandardEntryOrChangeProcess'
break
// 标准征求意见流程
case '2':
path = '/workCenter/StandardConsultationProcess'
break
// 项目合规评估流程
case '3':
path = '/workCenter/ProjectComplianceEvaluationProcess'
break
// 未符合项跟踪流程
case '4':
path = '/workCenter/NoMatchTrackingProcess'
break
// 法规合规评估流程
case '5':
path = '/workCenter/StandardComplianceProcess'
break
// 法规采购流程
case '6':
path = '/workCenter/StandardProcurementProcess'
break
// 企标立项、变更计划
case '7':
path = '/workCenter/enterpriseStandardInitChange/planApprovalChangeFlow'
break
// 年度制修订计划(各部门主动上报)
case '8':
path = '/workCenter/annualRevisionPlanActivelyReport/revisionPlanActivelyReportFlow'
break
// 年度制修订计划(标准化发起)
case '9':
path = '/workCenter/annualRevisionPlanStandardizationInit/revisionPlanStandardizationInitFlow'
break
// 企标制修订流程
case '10':
path = '/workCenter/enterpriseStandardRevision/enterpriseStandardRevisionFlow'
break
// 企标更改流程
case '11':
path = '/workCenter/enterpriseStandardChange/enterpriseStandardChangeFlow'
break
// 企标复审流程
case '12':
path = '/workCenter/enterpriseStandardRecheck/enterpriseStandardRecheckFlow'
break
// 企标废止流程
case '13':
path = '/workCenter/enterpriseStandardAnnul/enterpriseStandardAnnulFlow'
break
// 企标封存流程
case '14':
path = '/workCenter/enterpriseStandardSealSave/enterpriseStandardSealSaveFlow'
break
// 已封存企标启用流程
case '15':
path = '/workCenter/enterpriseStandardStartUse/enterpriseStandardStartUseFlow'
break
// 企标稽查计划
case '16':
path = '/workCenter/EnterpriseStandardInspectionPlan'
break
// 企标稽查流程
case '17':
path = '/workCenter/EnterpriseStandardInspectionProcess'
break
// 稽查延期申请流程
case '18':
path = '/workCenter/InspectionExtensionRequestProcess'
break
// 企标稽查整改
case '19':
path = '/workCenter/EnterpriseStandardInspectionRectification'
break
// 权限申请流程
case '20':
path = '/workCenter/PermissionApplicationProcess'
break
// 标准宣贯流程
case '21':
path = '/workCenter/StandardPromotionProcess'
break
// 会后管理流程
case '22':
path = '/workCenter/PostMeetingManageProcess'
break
}
this.$router.push({
path: path,
query: {
projectId: record.projectId,
taskName: record.taskName,
taskId: record.taskId, // 任务id
processInstanceId: record.processInstanceId, // 流程实例id,必须传人员信息右侧表格查询需要用
nodeId: record.nodeId // 节点的id
}
})
},
// 是否显示转办按钮
isShowTurnTo (record) {
if (record.prcType && record.nodeId) {
return !this.notTurnToBtn[record.prcType + ''].some(tt => record.nodeId.indexOf(tt) !== -1)
} else {
return false
}
},
// 转办
handleTurnTo (record) {
this.currentTurnTo = record
this.$refs.userSelectModal.open()
},
// 转办选完人的回调
userSelectChange (value) {
if (value) {
let func
const param = {}
switch (this.currentTurnTo.prcType + '') {
// 标准法规入库/变更流程
case '1':
func = turnToStandardECProcess
break
// 标准征求意见流程
case '2':
func = transferConsultationProcess
param.projectId = this.currentTurnTo.projectId
break
// 项目合规评估流程
case '3':
// 未符合项跟踪流程
case '4':
// 法规合规评估
case '5':
func = processTransfer
break
// 法规采购流程
case '6':
func = transferProcurementProcess
break
// 企标立项、变更计划
case '7':
func = enterprisePlanApprovalTurnTo
break
// 年度制修订计划(各部门主动上报)
case '8':
func = activelyReportTurnTo
break
// 年度制修订计划(标准化发起)
case '9':
func = standardizationInitTurnTo
break
// 企标制修订流程
case '10':
func = enStandardEditTurnTo
break
// 企标更改流程
case '11':
func = enStandardChangeTurnTo
break
// 企标复审流程
case '12':
func = enStandardRecheckTurnTo
break
// 企标废止流程
case '13':
func = enStandardAnnulTurnTo
break
// 企标封存流程
case '14':
func = enStandardSealSaveTurnTo
break
// 已封存企标启用流程
case '15':
func = enStandardStartUseTurnTo
break
// 企标稽查计划
case '16':
func = transferInspectPlan
break
// 企标稽查流程
case '17':
func = transferInspectProcess
break
// 稽查延期申请流程
case '18':
func = transferInspectExtension
break
// 企标稽查整改
case '19':
func = transferInspectRectify
break
// 权限申请流程
case '20':
func = transferPermissionApply
break
// 标准宣贯流程
// 会后管理流程
case '22':
func = transferPostMeetingManage
break
}
param.userId = value
param.taskId = this.currentTurnTo.taskId
func(param).then(res => {
if (res.success) {
this.$message.success(res.message)
this.loadData()
} else {
this.$message.warning(res.message)
}
})
}
}
}
}
</script>
<style scoped>
</style>