diff --git a/web/client/src/components/workflow/approval.jsx b/web/client/src/components/workflow/approval.jsx
index 62bc13f..e6e7eef 100644
--- a/web/client/src/components/workflow/approval.jsx
+++ b/web/client/src/components/workflow/approval.jsx
@@ -14,7 +14,8 @@ const WorkFlowApprovalModal = (props) => {
myApply: 'process/my-apply',
notice: 'process/my-apply',
hasDone: 'process/my-apply',
- draft: 'process/{processId}/draft'
+ draft: 'process/{processId}/draft',
+ submit: 'process/{processId}/apply'
})
const [loading, setLoading] = useState(true);
const [ifreamUrl, setIfreamUrl] = useState('');
@@ -28,7 +29,10 @@ const WorkFlowApprovalModal = (props) => {
if (msg) {
Notification.success({ title: msg })
}
- if (type == 'submitSuccess' && successCallBack) {
+ if (
+ (type == 'submitSuccess' || type == 'saveSuccess')
+ && successCallBack
+ ) {
successCallBack({ refresh: true });
setLoading(false);
}
@@ -42,14 +46,19 @@ const WorkFlowApprovalModal = (props) => {
}, [])
useEffect(() => {
- if (checkProcessInstanceId && processAuditList.length && iframeRef.current) {
- const corProcessData = type == 'draft' ?
- processAuditList.find(p => p.id == checkProcessInstanceId)
- : processAuditList.find(p => p.processInstanceId == checkProcessInstanceId)
- if (corProcessData) {
- iframeRef.current.contentWindow.postMessage(JSON.stringify({
- ...corProcessData
- }), '*');
+ if (iframeRef.current) {
+ if (checkProcessInstanceId && processAuditList.length) {
+ const corProcessData =
+ type == 'draft' ?// 草稿
+ processAuditList.find(p => p.id == checkProcessInstanceId)
+ : processAuditList.find(p => p.processInstanceId == checkProcessInstanceId)
+ if (corProcessData) {
+ iframeRef.current.contentWindow.postMessage(JSON.stringify(
+ {
+ ...corProcessData
+ }
+ ), '*');
+ }
}
}
}, [checkProcessInstanceId, iframeRef])
@@ -62,9 +71,16 @@ const WorkFlowApprovalModal = (props) => {
}${type == 'notice' ? `&type=notice` : ''
}${type == 'hasDone' ? `&type=done` : ''
}`
- if (type == 'draft') {
+ if (type == 'draft') {// 草稿
nextUrl = nextUrl.replace('{processId}', checkProcessInstanceId)
}
+ if (type == 'submit') {// 重新发起
+ const corProcessData = processAuditList.find(p => p.processInstanceId == checkProcessInstanceId)
+ nextUrl = nextUrl.replace('{processId}', corProcessData?.businessKey)
+ nextUrl += `&sourceType=again`
+ nextUrl += `&processId=${corProcessData?.businessKey}`
+ nextUrl += `&otherSyatem=true`
+ }
setIfreamUrl(nextUrl);
}, [user, checkProcessInstanceId, type, webEmis])
diff --git a/web/client/src/sections/means/nav-item.jsx b/web/client/src/sections/means/nav-item.jsx
index b14ccc1..d03a462 100644
--- a/web/client/src/sections/means/nav-item.jsx
+++ b/web/client/src/sections/means/nav-item.jsx
@@ -19,11 +19,11 @@ export function getNavItem (user, dispatch) {
}]
}, {
itemKey: 'repairFQA',
- text: '维修FQA',
+ text: '维修FAQ',
icon: ,
to: '/means/repairFQA/repairFQA1',
items: [{
- itemKey: 'repairFQA1', to: '/means/repairFQA/repairFQA1', text: '维修FQA'
+ itemKey: 'repairFQA1', to: '/means/repairFQA/repairFQA1', text: '维修FAQ'
}]
}, {
itemKey: 'faultInformation',
diff --git a/web/client/src/sections/means/routes.js b/web/client/src/sections/means/routes.js
index bd5d380..e17d047 100644
--- a/web/client/src/sections/means/routes.js
+++ b/web/client/src/sections/means/routes.js
@@ -20,12 +20,12 @@ export default [{
}, {
path: '/repairFQA',
key: 'repairFQA',
- breadcrumb: '维修FQA',
+ breadcrumb: '维修FAQ',
childRoutes: [{
path: '/repairFQA1',
key: 'repairFQA1',
component: RepairFQA,
- breadcrumb: '维修FQA',
+ breadcrumb: '维修FAQ',
}]
}, {
path: '/faultInformation',
diff --git a/web/client/src/sections/workOrder/containers/initiated.jsx b/web/client/src/sections/workOrder/containers/initiated.jsx
index d71ee57..ab58c67 100644
--- a/web/client/src/sections/workOrder/containers/initiated.jsx
+++ b/web/client/src/sections/workOrder/containers/initiated.jsx
@@ -1,7 +1,7 @@
import React, { useEffect, useRef, useState } from 'react';
import { connect } from 'react-redux';
-import { ApiTable, EmisApiTable, EmisRequest, parseProcessData, judgmentProcessState } from '$utils'
-import { Skeleton, Button, Pagination, Form, Popconfirm, Table, Toast } from '@douyinfe/semi-ui';
+import { ApiTable, EmisApiTable, EmisRequest, parseProcessData, processState, judgmentProcessState } from '$utils'
+import { Skeleton, Button, Pagination, Form, Popconfirm, Table, Toast, Space, Tooltip } from '@douyinfe/semi-ui';
import { SkeletonScreen, WorkflowApprovalModal, } from "$components";
import moment from "moment";
@@ -13,6 +13,7 @@ const Rest = (props) => {
const [tableData, setTableData] = useState([]);
const [loading, setLoading] = useState(true);
const [workflowModalVisible, setWorkflowModalVisible] = useState(false)
+ const [workflowModalType, setWorkflowModalType] = useState('')
const [checkProcessInstanceId, setCheckProcessInstanceId] = useState(null)
const [params, setParams] = useState({})
@@ -102,10 +103,73 @@ const Rest = (props) => {
}, {
title: '操作',
dataIndex: 'hadle',
- render: (text, record, index) =>
{
- setCheckProcessInstanceId(record.processInstanceId)
- setWorkflowModalVisible(true)
- }}>查看详情
+ render: (text, record, index) => {
+ let reviewTime = record.lastApproveTime ?
+ moment(record.lastApproveTime).format('YYYY-MM-DD HH:mm:ss')
+ :
+ record.variables.find(t => t.name == 'fsLastActionTime') ?
+ moment.unix(record.variables.find(t => t.name == 'fsLastActionTime').value).format('YYYY-MM-DD HH:mm:ss')
+ : '';
+ console.log(reviewTime);
+ let tooltipTitle = '';
+ if (record.processDeleted) {
+ tooltipTitle = '该表单流程已删除,不支持重新发起';
+ }
+ if (!record.processIsEnable) {
+ tooltipTitle = '该表单流程已停用,不支持重新发起';
+ }
+ if (!record.isCurrentVersion) {
+ tooltipTitle = '该表单流程已修改,不支持重新发起'
+ }
+ return (
+
+ {
+ setWorkflowModalType('myApply')
+ setCheckProcessInstanceId(record.processInstanceId)
+ setWorkflowModalVisible(true)
+ }}>查看详情
+ {
+ !reviewTime && processState.active == record.state ?
+ {
+ // setLoading(true)
+ EmisRequest.post(EmisApiTable.getApprovalActionUrl.replace('{type}', 'interrupt'),
+ {
+ procinstId: record.processInstanceId,
+ actionName: '撤销'
+ })
+ .then(res => {
+ setLoading(false)
+ backlogData()
+ Toast.success({ content: '撤销流程成功', duration: 1, })
+ }, error => {
+ Toast.error({ content: '撤销流程失败', duration: 1, })
+ setLoading(false)
+ });
+ }}>
+ 撤销
+
+ : ''
+ }{
+ (
+ record.state == processState.suspended // 已撤销
+ || record.state == processState.externally // 手动结束
+ ) ?
+ tooltipTitle
+ && false
+ ?
+
+ 重新发起
+
+ : {
+ setWorkflowModalType('submit')
+ setCheckProcessInstanceId(record.processInstanceId)
+ setWorkflowModalVisible(true)
+ }}>重新发起
+ : ''
+ }
+
+ )
+ }
}]
return (
@@ -199,7 +263,7 @@ const Rest = (props) => {
{
>
查看详情
-
} else {
return {
setCheckProcessInstanceId(record.id)
diff --git a/web/client/src/utils/webapi.js b/web/client/src/utils/webapi.js
index 01282bc..1d3ebc0 100644
--- a/web/client/src/utils/webapi.js
+++ b/web/client/src/utils/webapi.js
@@ -96,6 +96,7 @@ export const EmisApiTable = {
processInstancemMyNoticeCount: 'process-instance/my-notice-count/optimization', //抄送我 数量
processInstancemMyDraftList: 'process-instance/my-draft-list', //保存待发
+ getApprovalActionUrl: 'process-instance/audit/{type}', // 审批、撤销操作
//删除草稿
delDraftUrl: 'process/drafts/{draftId}',
}