Initial commit

This commit is contained in:
danshihao
2024-06-11 15:39:01 +08:00
commit 00acf31aa3
1589 changed files with 520803 additions and 0 deletions
+222
View File
@@ -0,0 +1,222 @@
<template>
<a-card :bordered="false">
<div v-for="data in dataList" :key="data.uid">
<div class="title-wrapper"><span class="title-span">{{ data.text }}</span></div>
<div class="list-wrapper">
<template v-for="item in data.list">
<div :key="item.title" v-if="isHasPermission(item.permission)" class="list-cont" @click="processClick(item)">{{ item.title }}</div>
</template>
</div>
</div>
</a-card>
</template>
<script>
import { isHasPermission } from '@/utils/hasPermission'
export default {
name: 'NewProcess',
data () {
return {
dataList: [
{ // 外部标准管理流程
uid: 1,
text: this.$t('workCenter.newProcess.externalStandardsManagementProcess'),
list: [
{ // 标准法规入库/更正流程
title: this.$t('workCenter.newProcess.standardRegulationEntryCorrectionProcess'),
path: '/workCenter/StandardEntryOrChangeProcess',
permission: 'workCenter:newProcess:standardRegulationEntryCorrectionProcess'
},
{ // 标准征求意见流程
title: this.$t('workCenter.newProcess.annotateTheConsultationProcess'),
path: '/workCenter/StandardConsultationProcess',
permission: 'workCenter:newProcess:annotateTheConsultationProcess'
},
{ // 项目合规评估流程
title: this.$t('workCenter.newProcess.projectComplianceAssessmentProcess'),
path: '/workCenter/ProjectComplianceEvaluationProcess',
permission: 'workCenter:newProcess:projectComplianceAssessmentProcess'
},
{ // 未符合项跟踪流程
title: this.$t('workCenter.newProcess.noMatchTrackingProcess'),
path: '/workCenter/NoMatchTrackingProcess',
permission: 'workCenter:newProcess:noMatchTrackingProcess'
},
{ // 法规合规评估流程
title: this.$t('workCenter.newProcess.regulatoryComplianceAssessmentProcess'),
path: '/workCenter/StandardComplianceProcess',
permission: 'workCenter:newProcess:regulatoryComplianceAssessmentProcess'
},
{ // 法规采购流程
title: this.$t('workCenter.newProcess.regulatoryProcurementProcess'),
path: '/workCenter/StandardProcurementProcess',
permission: 'workCenter:newProcess:regulatoryProcurementProcess'
}
]
},
{ // 企标管理流程
uid: 2,
text: '企标管理流程',
list: [
{ // 企标立项/变更计划
title: this.$t('workCenter.newProcess.enterpriseProjectChangePlan'),
path: '/workCenter/enterpriseStandardInitChange/planApprovalChangeFlow',
permission: 'workCenter:newProcess:enterpriseProjectChangePlan'
},
{ // 年度制修订计划审批流程(各部门主动上报)
title: this.$t('workCenter.newProcess.annualRevisionPlanActivelyReport'),
path: '/workCenter/annualRevisionPlanActivelyReport/revisionPlanActivelyReportFlow',
permission: 'workCenter:newProcess:annualRevisionPlanActivelyReport'
},
{ // 年度制修订计划审批流程(标准化发起)
title: this.$t('workCenter.newProcess.annualRevisionPlanStandardizationInit'),
path: '/workCenter/annualRevisionPlanStandardizationInit/revisionPlanStandardizationInitFlow',
permission: 'workCenter:newProcess:annualRevisionPlanStandardizationInit'
},
{ // 企标制修订流程
title: this.$t('workCenter.newProcess.enterpriseStandardSystemRevisionProcess'),
path: '/workCenter/enterpriseStandardRevision/enterpriseStandardRevisionFlow',
permission: 'workCenter:newProcess:enterpriseStandardSystemRevisionProcess'
},
{ // 企标更改流程
title: this.$t('workCenter.newProcess.bidChangeProcess'),
path: '/workCenter/enterpriseStandardChange/enterpriseStandardChangeFlow',
permission: 'workCenter:newProcess:bidChangeProcess'
},
{ // 企标复审流程
title: this.$t('workCenter.newProcess.processOfEnterpriseBidReview'),
path: '/workCenter/enterpriseStandardRecheck/enterpriseStandardRecheckFlow',
permission: 'workCenter:newProcess:processOfEnterpriseBidReview'
},
{ // 企标废止流程
title: this.$t('workCenter.newProcess.processOfEnterpriseBidAnnulment'),
path: '/workCenter/enterpriseStandardAnnul/enterpriseStandardAnnulFlow',
permission: 'workCenter:newProcess:processOfEnterpriseBidAnnulment'
},
{ // 企标封存流程
title: this.$t('workCenter.newProcess.processOfSealingEnterpriseStandard'),
path: '/workCenter/enterpriseStandardSealSave/enterpriseStandardSealSaveFlow',
permission: 'workCenter:newProcess:processOfSealingEnterpriseStandard'
},
{ // 已封存企标启用流程
title: this.$t('workCenter.newProcess.theSealedEnterpriseBidHasBeenActivatedProcess'),
path: '/workCenter/enterpriseStandardStartUse/enterpriseStandardStartUseFlow',
permission: 'workCenter:newProcess:theSealedEnterpriseBidHasBeenActivatedProcess'
},
{ // 企标稽查计划
title: this.$t('workCenter.newProcess.enterpriseStandardAuditPlan'),
path: '/workCenter/EnterpriseStandardInspectionPlan',
permission: 'workCenter:newProcess:enterpriseStandardAuditPlan'
},
{ // 企标稽查流程
title: this.$t('workCenter.newProcess.processOfEnterpriseStandardAudit'),
path: '/workCenter/EnterpriseStandardInspectionProcess',
permission: 'workCenter:newProcess:processOfEnterpriseStandardAudit'
},
{ // 稽查延期申请流程
title: this.$t('workCenter.newProcess.auditExtensionApplicationProcess'),
path: '/workCenter/InspectionExtensionRequestProcess',
permission: 'workCenter:newProcess:auditExtensionApplicationProcess'
},
{ // 企标稽查整改
title: this.$t('workCenter.newProcess.enterpriseStandardInspectionAndRectification'),
path: '/workCenter/EnterpriseStandardInspectionRectification',
permission: 'workCenter:newProcess:enterpriseStandardInspectionAndRectification'
},
{ // 权限申请流程
title: this.$t('workCenter.newProcess.permissionApplicationProcess'),
path: '/workCenter/PermissionApplicationProcess',
permission: 'workCenter:newProcess:permissionApplicationProcess'
},
{ // 标准宣贯流程
title: this.$t('workCenter.newProcess.standardPromotionProcess'),
path: '/workCenter/StandardPromotionProcess',
permission: 'workCenter:newProcess:standardPromotionProcess'
}
]
},
{ // 工作组相关流程
uid: 3,
text: this.$t('workCenter.newProcess.workgroupProcess'),
list: [
{ // 会后管理流程
title: this.$t('workCenter.newProcess.postMeetingManagementProcess'),
path: '/workCenter/PostMeetingManageProcess',
permission: 'workCenter:newProcess:postMeetingManagementProcess'
}
]
}
]
}
},
methods: {
isHasPermission,
// 流程点击
processClick (item) {
this.$router.push({
path: item.path
})
}
}
}
</script>
<style scoped lang="less">
/deep/ .ant-card-body {
padding-top: 0;
}
.title-wrapper {
font-size: 16px;
font-family: PingFang SC-Medium, PingFang SC;
font-weight: 500;
color: #1D2129;
height: 22px;
line-height: 22px;
margin-top: 24px;
display: flex;
}
.title-wrapper::before {
content: '';
display: inline-block;
width: 4px;
height: 16px;
background: @primary-color;
border-radius: 4px 4px 4px 4px;
margin-right: 8px;
margin-top: 3px;
}
.list-wrapper {
display: flex;
flex-wrap: wrap;
}
.list-cont {
width: 210px;
height: 60px;
background: rgba(245,245,245,0.6);
border-radius: 4px 4px 4px 4px;
border: 1px solid #E5E6EB;
padding: 8px 28px;
display: flex;
justify-content: center;
align-items: center;
box-sizing: border-box;
font-size: 14px;
font-family: PingFang SC-Regular, PingFang SC;
font-weight: 400;
color: #4E5969;
line-height: 22px;
text-align: center;
margin: 24px 23px 0 0;
cursor: pointer;
}
@media screen and (min-device-width: 1920px) and (max-device-width: 1366px) {
.list-cont:nth-child(7n) {
margin: 24px 0 0 0;
}
}
@media screen and (min-device-width: 1366px) and (max-device-width: 768px) {
.list-cont:nth-child(4n) {
margin: 24px 0 0 0;
}
}
</style>
@@ -0,0 +1,127 @@
<template>
<a-card :bordered="false">
<a-tabs default-active-key="1" v-model="activeTab">
<template v-for="tab in tabList">
<a-tab-pane :key="tab.component" v-if="!tab.permission || isHasPermission(tab.permission)">
<template v-slot:tab>
<div>
{{ tab.label }}
</div>
</template>
</a-tab-pane>
</template>
</a-tabs>
<div class="tabs-table-box">
<keep-alive>
<component
:is="comp"
ref="compModel"
v-if="comp">
</component>
</keep-alive>
</div>
</a-card>
</template>
<script>
import { isHasPermission } from '@/utils/hasPermission'
export default {
name: 'ProcessCenter',
data () {
return {
comp: null,
activeTab: '',
tabList: [
{ // 待办流程
component: 'TodoList',
label: this.$t('workCenter.processCenter.todoProcess')
},
{ // 已办流程
component: 'DoneList',
label: this.$t('workCenter.processCenter.doneProcess')
},
{ // 已发流程
component: 'SentList',
label: this.$t('workCenter.processCenter.sentProcess')
},
{ // 监控流程
component: 'MonitorList',
label: this.$t('workCenter.processCenter.monitorProcess'),
permission: 'workCenter.processCenter.monitorProcess'
},
{ // 草稿
component: 'DraftList',
label: this.$t('workCenter.processCenter.draft')
}
]
}
},
watch: {
activeTab () {
this.comp = resolve => require([`@views/workCenter/processCenter/table/${this.activeTab}.vue`], resolve)
setTimeout(() => {
this.$refs.compModel.loadData()
}, 100)
},
// 消息弹框当前页跳转当前页,需要将参数带入查询条件
$route: {
deep: true,
handler (to, from) {
// 如果有消息跳转参数就带入参数查询
if (to.query.prcNum) {
// 如果有路由参数,则使用路由参数跳转对应页签
if (this.$route.query.activeTab) {
this.activeTab = to.query.activeTab
this.comp = resolve => require([`@views/workCenter/processCenter/table/${this.activeTab}.vue`], resolve)
}
setTimeout(() => {
if (this.$refs.compModel && this.$refs.compModel.loadData) {
this.$refs.compModel.initQueryParam && this.$refs.compModel.initQueryParam()
this.$refs.compModel.loadData()
}
}, 100)
}
}
}
},
methods: {
isHasPermission
},
created () {
// 获取第一个tab
this.activeTab = 'TodoList'
this.comp = resolve => require([`@views/workCenter/processCenter/table/${this.activeTab}.vue`], resolve)
},
// mounted () {
// window.reloadData = () => {
// if (this.$refs.compModel && this.$refs.compModel.loadData) {
// this.$refs.compModel.loadData()
// }
// }
// },
activated () {
console.log('---------activated')
// 如果有路由参数,则使用路由参数跳转对应页签
if (this.$route.query.activeTab) {
this.activeTab = this.$route.query.activeTab
this.comp = resolve => require([`@views/workCenter/processCenter/table/${this.activeTab}.vue`], resolve)
}
setTimeout(() => {
if (this.$refs.compModel && this.$refs.compModel.loadData) {
this.$refs.compModel.initQueryParam && this.$refs.compModel.initQueryParam()
this.$refs.compModel.loadData()
}
}, 100)
}
}
</script>
<style scoped lang="less">
@import '~@assets/less/common.less';
/deep/ .table-page-search-wrapper .ant-form-inline .ant-form-item > .ant-form-item-label {
min-width: 70px;
}
</style>
@@ -0,0 +1,69 @@
<template>
<internal-detail-page :title="pageTitle" :content-padding="0" :loading="loading">
<process-detail-list :processKey="processKey" show-urge-button>
<personnel-info slot="personnelInfo" ref="personnelInfo" :data="personnelInfoData"></personnel-info>
</process-detail-list>
</internal-detail-page>
</template>
<script>
import InternalDetailPage from '@/components/InternalDetailPage'
import ProcessDetailList from '@/components/ProcessDetailList'
import PersonnelInfo from '@/components/PersonnelInfo'
import { getProcessNodeList } from '@/api/workCenter'
export default {
name: 'ProcessDetail',
components: {
InternalDetailPage,
ProcessDetailList,
PersonnelInfo
},
data () {
return {
pageTitle: '流程详情',
processKey: '',
loading: false,
currentNodeName: '',
personnelInfoData: [],
/* 排序参数 */
isorter: {
column: 'createTime',
order: 'asc'
}
}
},
mounted () {
this.processKey = this.$route.query.processKey
this.getPersonInfoStructure()
},
methods: {
getPersonInfoStructure () {
const param = {}
if (this.$route.query.processDefinitionId) {
param.processDefinitionId = this.$route.query.processDefinitionId
}
if (this.$route.query.processInstanceId) {
param.processInstanceId = this.$route.query.processInstanceId
}
getProcessNodeList(param).then(res => {
if (res.success) {
console.log(res.result)
// 处理人员信息数据
this.personnelInfoData = res.result.map(item => {
return {
...item,
canChoose: false,
userList: item.linkUserIds_dictText
}
})
}
})
}
}
}
</script>
<style scoped>
</style>
@@ -0,0 +1,310 @@
<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="id"
: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="handleDetail(record)" class="table-ope-btn">{{ $t('view') }}</a>
</div>
</j-table>
</div>
</div>
</template>
<script>
import JTable from '@/components/jero/JTable'
import { JeroListMixin } from '@/mixins/JeroListMixin'
import { ProcessType, ProcessKey } from '../../../../enums/commonEnums'
import { getAction } from '../../../../api/manage'
export default {
name: 'DoneList',
components: { JTable },
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.currentProcessor'),
align: 'center',
width: 180,
dataIndex: 'handleUserId_dictText',
scopedSlots: { customRender: 'text' }
},
{ // 接收任务时间
title: this.$t('workCenter.processCenter.receivingTaskTime'),
align: 'center',
width: 180,
dataIndex: 'receivedTaskTime',
sorter: true,
scopedSlots: { customRender: 'text' }
},
{ // 完成时间
title: this.$t('workCenter.processCenter.finishTime'),
align: 'center',
width: 180,
dataIndex: 'endTime',
scopedSlots: { customRender: 'text' }
},
{ // 流程状态
title: this.$t('workCenter.processCenter.processState'),
align: 'center',
width: 180,
dataIndex: 'prcStatus_dictText',
scopedSlots: { customRender: 'text' }
},
{
title: this.$t('operation'),
scopedSlots: { customRender: 'action' },
align: 'center',
fixed: 'right',
width: 200
}
],
url: {
list: '/workCenter/getCompletedList'
}
}
},
methods: {
loadData (arg) {
if (!this.url.list) {
this.$message.warning('请设置url.list属性!')
return
}
// 加载数据 若传入参数1则加载第一页的内容
if (arg === 1) {
this.ipagination.current = 1
}
const params = this.getQueryParams()// 查询条件
this.loading = true
getAction(this.url.list, params).then((res) => {
if (res.success) {
if ((res.result.records || res.result).length === 0 && this.ipagination.current !== 1) {
this.ipagination.current--
this.loadData()
this.loading = false
return
}
// update-begin---author:zhangyafei Date:20201118 for:适配不分页的数据列表------------
this.dataSource = res.result.records || res.result
if (res.result.total) {
this.ipagination.total = res.result.total
} else {
this.ipagination.total = 0
}
// update-end---author:zhangyafei Date:20201118 for:适配不分页的数据列表------------
} else {
this.$message.warning(res.message)
}
}).finally(() => {
this.loading = false
})
},
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()
},
handleDetail (record) {
// 跳转到流程详情页
let processKey = ''
switch (record.prcType + '') {
// 1.标准法规入库/变更流程
case ProcessType.FB_ENTRY_CHANGE.value:
processKey = ProcessKey.FB_ENTRY_CHANGE.value
break
// 2.征求意见流程
case ProcessType.CONSULTATION.value:
processKey = ProcessKey.CONSULTATION.value
break
// 3.项目合规评估流程
case ProcessType.PROJECT_COMPLIANCE_EVALUATION.value:
processKey = ProcessKey.PROJECT_COMPLIANCE_EVALUATION.value
break
// 4.未符合项跟踪流程
case ProcessType.NO_MATCH_TRACKING.value:
processKey = ProcessKey.NO_MATCH_TRACKING.value
break
// 5.法规合规评估流程
case ProcessType.REGULATORY_COMPLIANCE_ASSESSMENT.value:
processKey = ProcessKey.REGULATORY_COMPLIANCE_ASSESSMENT.value
break
// 6.法规采购流程
case ProcessType.LEGAL_PROCUREMENT.value:
processKey = ProcessKey.LEGAL_PROCUREMENT.value
break
// 7.企标立项/变更计划
case ProcessType.ES_INIT_CHANGE.value:
processKey = ProcessKey.ES_INIT_CHANGE.value
break
// 8.年度制修订-各部门主动上报
case ProcessType.ES_ANNUAL_REPORT.value:
processKey = ProcessKey.ES_ANNUAL_REPORT.value
break
// 9.年度制修订-标准化部门主动发起
case ProcessType.ES_ANNUAL_INIT.value:
processKey = ProcessKey.ES_ANNUAL_INIT.value
break
// 10.企标制修订流程
case ProcessType.ES_EDIT.value:
processKey = ProcessKey.ES_EDIT.value
break
// 11.企标更改流程
case ProcessType.ES_CHANGE.value:
processKey = ProcessKey.ES_CHANGE.value
break
// 12.企标复审流程
case ProcessType.ES_RECHECK.value:
processKey = ProcessKey.ES_RECHECK.value
break
// 13.企标废止流程
case ProcessType.ES_ABOLISH.value:
processKey = ProcessKey.ES_ABOLISH.value
break
// 14.企标封存流程
case ProcessType.ES_ARCHIVE.value:
processKey = ProcessKey.ES_ARCHIVE.value
break
// 15.已封存企标启用流程
case ProcessType.ES_ENABLE.value:
processKey = ProcessKey.ES_ENABLE.value
break
// 16.企标稽查计划
case ProcessType.ES_INSPECTION_PLAN.value:
processKey = ProcessKey.ES_INSPECTION_PLAN.value
break
// 17.企标稽查流程
case ProcessType.ES_INSPECTION_PROCESS.value:
processKey = ProcessKey.ES_INSPECTION_PROCESS.value
break
// 18.稽查延期申请流程
case ProcessType.INSPECTION_EXTENSION_REQUEST_PROCESS.value:
processKey = ProcessKey.INSPECTION_EXTENSION_REQUEST_PROCESS.value
break
// 19.企标稽查整改
case ProcessType.ES_INSPECTION_RECTIFICATION.value:
processKey = ProcessKey.ES_INSPECTION_RECTIFICATION.value
break
// 20.权限申请流程
case ProcessType.PERMISSION_APPLY.value:
processKey = ProcessKey.PERMISSION_APPLY.value
break
// 21.标准宣贯流程
case ProcessType.STANDARD_PROMOTION.value:
processKey = ProcessKey.STANDARD_PROMOTION.value
break
// 22.会后管理流程
case ProcessType.POST_MEETING_MANAGE.value:
processKey = ProcessKey.POST_MEETING_MANAGE.value
break
}
this.$router.push({
path: '/workCenter/processCenter/detail/processDetail',
query: {
processKey: processKey,
processDefinitionId: record.processDefinitionId,
processInstanceId: record.processInstanceId
}
})
}
}
}
</script>
<style scoped>
</style>
@@ -0,0 +1,262 @@
<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('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="id"
: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>
</div>
</j-table>
</div>
</div>
</template>
<script>
import JTable from '@/components/jero/JTable'
import { JeroListMixin } from '@/mixins/JeroListMixin'
import { getAction } from '../../../../api/manage'
export default {
name: 'DraftList',
components: { JTable },
mixins: [JeroListMixin],
data () {
return {
labelCol: {
span: 4
},
wrapperCol: {
span: 14
},
columns: [
{ // 流程类型
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('createTime'),
align: 'center',
width: 180,
dataIndex: 'createTime',
sorter: true,
scopedSlots: { customRender: 'text' }
},
{
title: this.$t('operation'),
scopedSlots: { customRender: 'action' },
align: 'center',
fixed: 'right',
width: 200
}
],
url: {
list: '/workCenter/getDraftList'
}
}
},
methods: {
loadData (arg) {
if (!this.url.list) {
this.$message.warning('请设置url.list属性!')
return
}
// 加载数据 若传入参数1则加载第一页的内容
if (arg === 1) {
this.ipagination.current = 1
}
const params = this.getQueryParams()// 查询条件
this.loading = true
getAction(this.url.list, params).then((res) => {
if (res.success) {
if ((res.result.records || res.result).length === 0 && this.ipagination.current !== 1) {
this.ipagination.current--
this.loadData()
this.loading = false
return
}
// update-begin---author:zhangyafei Date:20201118 for:适配不分页的数据列表------------
this.dataSource = res.result.records || res.result
if (res.result.total) {
this.ipagination.total = res.result.total
} else {
this.ipagination.total = 0
}
// update-end---author:zhangyafei Date:20201118 for:适配不分页的数据列表------------
} else {
this.$message.warning(res.message)
}
}).finally(() => {
this.loading = false
})
},
// 办理
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
}
const query = {}
query.draftId = record.id // 草稿id
if (record.projectId) {
query.projectId = record.projectId
}
if (record.nodeName) {
query.taskName = record.nodeName
}
if (record.taskId) {
query.taskId = record.taskId // 任务id
}
if (record.processInstanceId) {
query.processInstanceId = record.processInstanceId // 流程实例id,必须传人员信息右侧表格查询需要用
}
if (record.nodeId) {
query.nodeId = record.nodeId // 节点的id
}
this.$router.push({
path: path,
query: query
})
}
}
}
</script>
<style scoped>
</style>
@@ -0,0 +1,314 @@
<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="id"
: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="handleDetail(record)" class="table-ope-btn">{{ $t('view') }}</a>
<a-divider v-if="record.prcStatus === 1 && (record.createUserId === userInfo.id || isAdmin)" type="vertical" />
<!-- 强制撤回 -->
<a v-if="record.prcStatus === 1 && (record.createUserId === userInfo.id || isAdmin)"
@click="handleWithdrawal(record)"
class="table-ope-btn">{{ $t('compulsoryWithdrawal') }}</a>
</div>
</j-table>
</div>
</div>
</template>
<script>
import JTable from '@/components/jero/JTable'
import { JeroListMixin } from '@/mixins/JeroListMixin'
import { compulsoryWithdrawal } from '@/api/workCenter'
import { ProcessType, ProcessKey } from '@/enums/commonEnums'
import { mapGetters } from 'vuex'
export default {
name: 'MonitorList',
components: { JTable },
mixins: [JeroListMixin],
computed: {
...mapGetters(['userInfo']),
// 当前用户是否管理员
isAdmin () {
const adminRoleList = window._CONFIG.adminRoleCode.split(',')
const userRoleList = this.userInfo.roleCode.split(',')
return userRoleList.some(tt => adminRoleList.includes(tt))
}
},
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.currentProcessor'),
align: 'center',
width: 180,
dataIndex: 'handleUserId_dictText',
scopedSlots: { customRender: 'text' }
},
{ // 接收任务时间
title: this.$t('workCenter.processCenter.receivingTaskTime'),
align: 'center',
width: 180,
dataIndex: 'receivedTaskTime',
scopedSlots: { customRender: 'text' }
},
{ // 完成时间
title: this.$t('workCenter.processCenter.finishTime'),
align: 'center',
width: 180,
dataIndex: 'endTime',
scopedSlots: { customRender: 'text' }
},
{ // 流程耗时(小时)
title: this.$t('workCenter.processCenter.processTime'),
align: 'center',
width: 180,
dataIndex: 'overTime',
scopedSlots: { customRender: 'text' }
},
{ // 流程状态
title: this.$t('workCenter.processCenter.processState'),
align: 'center',
width: 180,
dataIndex: 'prcStatus_dictText',
scopedSlots: { customRender: 'text' }
},
{
title: this.$t('operation'),
scopedSlots: { customRender: 'action' },
align: 'center',
fixed: 'right',
width: 200
}
],
url: {
list: '/workCenter/getAllList'
}
}
},
methods: {
// 查看
handleDetail (record) {
// 跳转到流程详情页
let processKey = ''
switch (record.prcType + '') {
// 1.标准法规入库/变更流程
case ProcessType.FB_ENTRY_CHANGE.value:
processKey = ProcessKey.FB_ENTRY_CHANGE.value
break
// 2.征求意见流程
case ProcessType.CONSULTATION.value:
processKey = ProcessKey.CONSULTATION.value
break
// 3.项目合规评估流程
case ProcessType.PROJECT_COMPLIANCE_EVALUATION.value:
processKey = ProcessKey.PROJECT_COMPLIANCE_EVALUATION.value
break
// 4.未符合项跟踪流程
case ProcessType.NO_MATCH_TRACKING.value:
processKey = ProcessKey.NO_MATCH_TRACKING.value
break
// 5.法规合规评估流程
case ProcessType.REGULATORY_COMPLIANCE_ASSESSMENT.value:
processKey = ProcessKey.REGULATORY_COMPLIANCE_ASSESSMENT.value
break
// 6.法规采购流程
case ProcessType.LEGAL_PROCUREMENT.value:
processKey = ProcessKey.LEGAL_PROCUREMENT.value
break
// 7.企标立项/变更计划
case ProcessType.ES_INIT_CHANGE.value:
processKey = ProcessKey.ES_INIT_CHANGE.value
break
// 8.年度制修订-各部门主动上报
case ProcessType.ES_ANNUAL_REPORT.value:
processKey = ProcessKey.ES_ANNUAL_REPORT.value
break
// 9.年度制修订-标准化部门主动发起
case ProcessType.ES_ANNUAL_INIT.value:
processKey = ProcessKey.ES_ANNUAL_INIT.value
break
// 10.企标制修订流程
case ProcessType.ES_EDIT.value:
processKey = ProcessKey.ES_EDIT.value
break
// 11.企标更改流程
case ProcessType.ES_CHANGE.value:
processKey = ProcessKey.ES_CHANGE.value
break
// 12.企标复审流程
case ProcessType.ES_RECHECK.value:
processKey = ProcessKey.ES_RECHECK.value
break
// 13.企标废止流程
case ProcessType.ES_ABOLISH.value:
processKey = ProcessKey.ES_ABOLISH.value
break
// 14.企标封存流程
case ProcessType.ES_ARCHIVE.value:
processKey = ProcessKey.ES_ARCHIVE.value
break
// 15.已封存企标启用流程
case ProcessType.ES_ENABLE.value:
processKey = ProcessKey.ES_ENABLE.value
break
// 16.企标稽查计划
case ProcessType.ES_INSPECTION_PLAN.value:
processKey = ProcessKey.ES_INSPECTION_PLAN.value
break
// 17.企标稽查流程
case ProcessType.ES_INSPECTION_PROCESS.value:
processKey = ProcessKey.ES_INSPECTION_PROCESS.value
break
// 18.稽查延期申请流程
case ProcessType.INSPECTION_EXTENSION_REQUEST_PROCESS.value:
processKey = ProcessKey.INSPECTION_EXTENSION_REQUEST_PROCESS.value
break
// 19.企标稽查整改
case ProcessType.ES_INSPECTION_RECTIFICATION.value:
processKey = ProcessKey.ES_INSPECTION_RECTIFICATION.value
break
// 20.权限申请流程
case ProcessType.PERMISSION_APPLY.value:
processKey = ProcessKey.PERMISSION_APPLY.value
break
// 21.标准宣贯流程
case ProcessType.STANDARD_PROMOTION.value:
processKey = ProcessKey.STANDARD_PROMOTION.value
break
// 22.会后管理流程
case ProcessType.POST_MEETING_MANAGE.value:
processKey = ProcessKey.POST_MEETING_MANAGE.value
break
}
this.$router.push({
path: '/workCenter/processCenter/detail/processDetail',
query: {
processKey: processKey,
processDefinitionId: record.processDefinitionId,
processInstanceId: record.processInstanceId,
// 流程监控并且是已撤回,详情不查进行中的
source: 'monitorList',
prcStatus: record.prcStatus
}
})
},
// 强制撤回
handleWithdrawal (record) {
this.$confirm({
title: this.$t('compulsoryWithdrawal'),
content: this.$t('sureCompulsoryWithdrawal'),
onOk: () => {
this.loading = true
const params = {}
params.processInstanceId = record.processInstanceId
params.projectId = record.projectId
params.taskId = record.taskId
compulsoryWithdrawal(params).then(res => {
if (res.success) {
this.$message.success(res.message)
this.loadData()
} else {
this.$message.warning(res.message)
}
})
}
})
}
}
}
</script>
<style scoped>
</style>
@@ -0,0 +1,322 @@
<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>
<template v-if="toggleSearchStatus">
<!-- 流程状态 -->
<a-col :span="6">
<a-form-item :label="$t('workCenter.processCenter.processState')" :labelCol="labelCol" :wrapperCol="wrapperCol">
<j-dict-select-tag
:placeholder="$t('pleaseSelect')+$t('workCenter.processCenter.processState')"
dict-code="prc_status"
v-model="queryParam.prcStatus">
</j-dict-select-tag>
</a-form-item>
</a-col>
</template>
<div style="float: right;overflow: hidden;" class="table-page-search-submitButtons">
<a @click="handleToggleSearch">
{{ toggleSearchStatus ? $t('putAway') : $t('open') }}
<a-icon :type="toggleSearchStatus ? 'up' : 'down'"/>
</a>
<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="id"
: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="handleDetail(record)" class="table-ope-btn">{{ $t('view') }}</a>
<a-divider v-if="record.prcStatus !== 2" type="vertical" />
<!-- 强制撤回 -->
<a v-if="record.prcStatus !== 2" @click="handleWithdrawal(record)" class="table-ope-btn">{{ $t('compulsoryWithdrawal') }}</a>
</div>
</j-table>
</div>
</div>
</template>
<script>
import JTable from '@/components/jero/JTable'
import { JeroListMixin } from '@/mixins/JeroListMixin'
import { compulsoryWithdrawal } from '@/api/workCenter'
import { ProcessType, ProcessKey } from '@/enums/commonEnums'
export default {
name: 'SentList',
components: { JTable },
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.currentProcessor'),
align: 'center',
width: 180,
dataIndex: 'handleUserId_dictText',
scopedSlots: { customRender: 'text' }
},
{ // 接收任务时间
title: this.$t('workCenter.processCenter.receivingTaskTime'),
align: 'center',
width: 180,
dataIndex: 'receivedTaskTime',
sorter: true,
scopedSlots: { customRender: 'text' }
},
{ // 完成时间
title: this.$t('workCenter.processCenter.finishTime'),
align: 'center',
width: 180,
dataIndex: 'endTime',
scopedSlots: { customRender: 'text' }
},
{ // 流程状态
title: this.$t('workCenter.processCenter.processState'),
align: 'center',
width: 180,
dataIndex: 'prcStatus_dictText',
scopedSlots: { customRender: 'text' }
},
{
title: this.$t('operation'),
scopedSlots: { customRender: 'action' },
align: 'center',
fixed: 'right',
width: 200
}
],
url: {
list: '/workCenter/getSentList'
}
}
},
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()
},
// 查看
handleDetail (record) {
// 跳转到流程详情页
let processKey = ''
switch (record.prcType + '') {
// 1.标准法规入库/变更流程
case ProcessType.FB_ENTRY_CHANGE.value:
processKey = ProcessKey.FB_ENTRY_CHANGE.value
break
// 2.征求意见流程
case ProcessType.CONSULTATION.value:
processKey = ProcessKey.CONSULTATION.value
break
// 3.项目合规评估流程
case ProcessType.PROJECT_COMPLIANCE_EVALUATION.value:
processKey = ProcessKey.PROJECT_COMPLIANCE_EVALUATION.value
break
// 4.未符合项跟踪流程
case ProcessType.NO_MATCH_TRACKING.value:
processKey = ProcessKey.NO_MATCH_TRACKING.value
break
// 5.法规合规评估流程
case ProcessType.REGULATORY_COMPLIANCE_ASSESSMENT.value:
processKey = ProcessKey.REGULATORY_COMPLIANCE_ASSESSMENT.value
break
// 6.法规采购流程
case ProcessType.LEGAL_PROCUREMENT.value:
processKey = ProcessKey.LEGAL_PROCUREMENT.value
break
// 7.企标立项/变更计划
case ProcessType.ES_INIT_CHANGE.value:
processKey = ProcessKey.ES_INIT_CHANGE.value
break
// 8.年度制修订-各部门主动上报
case ProcessType.ES_ANNUAL_REPORT.value:
processKey = ProcessKey.ES_ANNUAL_REPORT.value
break
// 9.年度制修订-标准化部门主动发起
case ProcessType.ES_ANNUAL_INIT.value:
processKey = ProcessKey.ES_ANNUAL_INIT.value
break
// 10.企标制修订流程
case ProcessType.ES_EDIT.value:
processKey = ProcessKey.ES_EDIT.value
break
// 11.企标更改流程
case ProcessType.ES_CHANGE.value:
processKey = ProcessKey.ES_CHANGE.value
break
// 12.企标复审流程
case ProcessType.ES_RECHECK.value:
processKey = ProcessKey.ES_RECHECK.value
break
// 13.企标废止流程
case ProcessType.ES_ABOLISH.value:
processKey = ProcessKey.ES_ABOLISH.value
break
// 14.企标封存流程
case ProcessType.ES_ARCHIVE.value:
processKey = ProcessKey.ES_ARCHIVE.value
break
// 15.已封存企标启用流程
case ProcessType.ES_ENABLE.value:
processKey = ProcessKey.ES_ENABLE.value
break
// 16.企标稽查计划
case ProcessType.ES_INSPECTION_PLAN.value:
processKey = ProcessKey.ES_INSPECTION_PLAN.value
break
// 17.企标稽查流程
case ProcessType.ES_INSPECTION_PROCESS.value:
processKey = ProcessKey.ES_INSPECTION_PROCESS.value
break
// 18.稽查延期申请流程
case ProcessType.INSPECTION_EXTENSION_REQUEST_PROCESS.value:
processKey = ProcessKey.INSPECTION_EXTENSION_REQUEST_PROCESS.value
break
// 19.企标稽查整改
case ProcessType.ES_INSPECTION_RECTIFICATION.value:
processKey = ProcessKey.ES_INSPECTION_RECTIFICATION.value
break
// 20.权限申请流程
case ProcessType.PERMISSION_APPLY.value:
processKey = ProcessKey.PERMISSION_APPLY.value
break
// 21.标准宣贯流程
case ProcessType.STANDARD_PROMOTION.value:
processKey = ProcessKey.STANDARD_PROMOTION.value
break
// 22.会后管理流程
case ProcessType.POST_MEETING_MANAGE.value:
processKey = ProcessKey.POST_MEETING_MANAGE.value
break
}
this.$router.push({
path: '/workCenter/processCenter/detail/processDetail',
query: {
processKey: processKey,
processDefinitionId: record.processDefinitionId,
processInstanceId: record.processInstanceId
}
})
},
// 强制撤回
handleWithdrawal (record) {
this.$confirm({
title: this.$t('compulsoryWithdrawal'),
content: this.$t('sureCompulsoryWithdrawal'),
onOk: () => {
this.loading = true
const params = {}
params.processInstanceId = record.processInstanceId
params.projectId = record.projectId
params.taskId = record.taskId
compulsoryWithdrawal(params).then(res => {
if (res.success) {
this.$message.success(res.message)
// 判断当前删除的数据是否是最后一页的最后一条数据,如果是的话页码减一
if (this.ipagination.current > 1 && ((this.ipagination.current - 1) * this.ipagination.pageSize) + 1 === that.ipagination.total) {
this.ipagination.current -= 1
}
this.loadData()
} else {
this.$message.warning(res.message)
}
})
}
})
}
}
}
</script>
<style scoped>
</style>
@@ -0,0 +1,558 @@
<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'
import { getAction } from '../../../../api/manage'
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.nodeName'),
align: 'center',
width: 180,
dataIndex: 'taskName',
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]
},
disableMixinCreated: true
}
},
methods: {
// 初始化查询参数
initQueryParam () {
const { prcName, prcNum, prcType } = this.$route.query
this.$set(this.queryParam, 'prcName', prcName)
this.$set(this.queryParam, 'prcNum', prcNum)
this.$set(this.queryParam, 'prcType', prcType)
},
loadData (arg) {
if (!this.url.list) {
this.$message.warning('请设置url.list属性!')
return
}
// 加载数据 若传入参数1则加载第一页的内容
if (arg === 1) {
this.ipagination.current = 1
}
const params = this.getQueryParams()// 查询条件
this.loading = true
getAction(this.url.list, params).then((res) => {
if (res.success) {
if ((res.result.records || res.result).length === 0 && this.ipagination.current !== 1) {
this.ipagination.current--
this.loadData()
this.loading = false
return
}
// update-begin---author:zhangyafei Date:20201118 for:适配不分页的数据列表------------
this.dataSource = res.result.records || res.result
if (res.result.total) {
this.ipagination.total = res.result.total
} else {
this.ipagination.total = 0
}
// update-end---author:zhangyafei Date:20201118 for:适配不分页的数据列表------------
} else {
this.$message.warning(res.message)
}
}).finally(() => {
this.loading = false
})
},
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
}
// 征求意见流程,超期后不能继续办理
if (record.prcType + '' === '2' && record.overDue === '1') {
this.$message.warning(this.$t('workCenter.standardConsultationProcess.processExpiration'))
return
}
const query = {}
if (record.projectId) {
query.projectId = record.projectId
}
query.taskName = record.taskName
query.taskId = record.taskId // 任务id
query.processInstanceId = record.processInstanceId // 流程实例id,必须传人员信息右侧表格查询需要用
query.nodeId = record.nodeId // 节点的id
this.$router.push({
path: path,
query: query
})
},
// 是否显示转办按钮
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>
@@ -0,0 +1,97 @@
<template>
<internal-detail-page :title="$route.meta.title" :content-padding="0" :loading="loading">
<div class="detail-page-scroll-content">
<!--流程图dom-->
<flow-chart dom-id="flowChart" :chart-data="chartData" @add="handleAdd" @delete="handleDelete" />
</div>
<div class="detail-page-bottom-operate-box">
<!--取消-->
<a-button type="primary" :loading="loading" ghost @click="handleCancel">{{ $t('cancel') }}</a-button>
<!--保存-->
<a-button type="primary" :loading="loading" @click="handleSubmit">{{ $t('preservation') }}</a-button>
</div>
<flow-node-modal ref="modalForm" @ok="modalFormOk" />
</internal-detail-page>
</template>
<script>
import InternalDetailPage from '../../../components/InternalDetailPage.vue'
import { getFlowNodeList, deleteFlowNode } from '../../../api/workCenter.js'
import FlowNodeModal from './modules/FlowNodeModal.vue'
import FlowChart from '../../../components/FlowChart.vue'
export default {
name: 'EditFlowNode',
components: { InternalDetailPage, FlowNodeModal, FlowChart },
data () {
return {
loading: false,
chartData: {},
graph: null
}
},
mounted () {
this.initProcessNode()
},
methods: {
/**
* 获取流程节点信息
*/
initProcessNode () {
this.loading = true
this.chartData = {}
getFlowNodeList({ modelId: this.$route.query.id }).then(res => {
if (res.success) {
this.chartData = Object.assign({}, res.result || {})
} else {
this.$message.warning(res.message)
}
}).finally(() => {
this.loading = false
})
},
handleAdd (item) {
this.$refs.modalForm.title = this.$t('newlyAdded')
this.$refs.modalForm.add({
modelId: this.$route.query.id,
xmlNodeId: item._cfg.id
})
},
handleDelete (item) {
this.$confirm({
title: this.$t('confirmDeletion'),
content: this.$t('areYouSure'),
onOk: function () {
deleteFlowNode({ xmlNodeId: item._cfg.id }).then((res) => {
if (res.success) {
this.$message.success(res.message)
this.initProcessNode()
} else {
this.$message.warning(res.message)
}
})
}
})
},
modalFormOk () {
this.initProcessNode()
},
handleCancel () {
this.$router.go(-1)
},
handleSubmit () {
}
}
}
</script>
<style scoped lang="less">
@import '~@assets/less/common.less';
#flowChart {
width: 100%;
height: 100%;
}
</style>
@@ -0,0 +1,131 @@
<template>
<a-card :bordered="false">
<div>
<j-table
:columns="columns"
:dataSource="dataSource"
:can-drag="true"
rowKey="id"
:pagination="false"
:scroll="{x: '100%'}"
:operation-list="operationList"
:loading="loading"
@change="handleTableChange"
@operationClick="operationClick">
</j-table>
</div>
</a-card>
</template>
<script>
import JTable from '../../../components/jero/JTable.vue'
import { JeroListMixin } from '../../../mixins/JeroListMixin.js'
import { deployWorkFlow } from '../../../api/workCenter.js'
export default {
name: 'ProcessConfig',
components: { JTable },
mixins: [JeroListMixin],
data () {
return {
columns: [
// 序号
{
title: this.$t('serialNumber'),
dataIndex: '',
key: 'rowIndex',
width: 60,
align: 'center',
customRender: function (t, r, index) {
return parseInt(index) + 1
}
},
// 流程名称
{
dataIndex: 'name',
title: this.$t('processName'),
width: 250
},
// 流程类型
{
dataIndex: 'category',
title: this.$t('workCenter.processConfig.processType'),
width: 250
},
// 创建时间
{
dataIndex: 'createTime',
title: this.$t('createTime'),
width: 250
},
// 操作
{
title: this.$t('operation'),
fixed: 'right',
width: 180,
scopedSlots: { customRender: 'action' }
}
],
url: {
list: '/activitiModel/modelList'
},
operationList: [
// 编辑流程图
{
text: this.$t('workCenter.processConfig.editFlowchart'),
clickEvent: 'handleEditFlowchart',
has: 'processConfig:editFlowchart'
},
// 编辑流程节点
{
text: this.$t('workCenter.processConfig.editFlowNode'),
clickEvent: 'handleEditFlowNode',
has: 'processConfig:editFlowNode'
},
// 部署
{
text: this.$t('workCenter.processConfig.deploy'),
clickEvent: 'handleDeploy',
has: 'processConfig:deploy'
}
]
}
},
methods: {
/**
* 编辑流程图
* @param id
*/
handleEditFlowchart ({ id }) {
window.open('/laws-chery/modeler.html?modelId=' + id, '_blank')
},
handleEditFlowNode ({ id }) {
this.$router.push({
path: '/workCenter/EditFlowNode',
query: { id }
})
},
/**
* 部署
* @param id
*/
handleDeploy ({ id }) {
this.loading = true
deployWorkFlow({ modelId: id }).then(res => {
if (res.success) {
this.$message.success(res.message)
this.modalFormOk()
} else {
this.$message.warning(res.message)
}
}).finally(() => {
this.loading = false
})
}
}
}
</script>
<style scoped lang="less">
</style>
@@ -0,0 +1,91 @@
<template>
<j-modal
:title="title"
:maskClosable="false"
:width="width"
:visible="visible"
:confirm-loading="confirmLoading"
switchFullscreen
@ok="handleOk"
@cancel="handleCancel">
<a-form :form="form">
<a-form-item :labelCol="labelCol" :wrapperCol="wrapperCol" :label="$t('standardRegulationLibrary.nodeName')">
<a-input :placeholder="$t('pleaseEnter') + $t('standardRegulationLibrary.nodeName')"
:maxLength="50"
v-decorator="['nodeName', validatorRules.nodeName]" />
</a-form-item>
</a-form>
</j-modal>
</template>
<script>
import { addFlowNode } from '../../../../api/workCenter.js'
export default {
name: 'FlowNodeModal',
data () {
return {
title: this.$t('operation'),
width: 800,
visible: false,
confirmLoading: false,
form: this.$form.createForm(this),
model: {},
labelCol: {
xs: { span: 24 },
sm: { span: 4 }
},
wrapperCol: {
xs: { span: 24 },
sm: { span: 20 }
},
validatorRules: {
// 节点名称
nodeName: {
rules: [{ required: true, message: this.$t('pleaseEnter') + this.$t('standardRegulationLibrary.nodeName') }],
validateTrigger: 'blur'
}
}
}
},
methods: {
add (record) {
this.visible = true
this.model = Object.assign({}, record)
},
handleOk () {
this.form.validateFields((errors, values) => {
if (!errors) {
const formData = Object.assign(this.model, values)
let submitFunc
if (!this.model.id) {
submitFunc = addFlowNode
}
this.confirmLoading = true
submitFunc(formData).then(res => {
if (res.success) {
this.$message.success(res.message)
this.$emit('ok')
this.handleCancel()
} else {
this.$message.warning(res.message)
}
}).finally(() => {
this.confirmLoading = false
})
}
})
},
handleCancel () {
this.visible = false
this.form.resetFields()
}
}
}
</script>
<style scoped lang="less">
</style>