diff --git a/web/client/src/components/workflow/approval.jsx b/web/client/src/components/workflow/approval.jsx
index 191ce1d..a2255a1 100644
--- a/web/client/src/components/workflow/approval.jsx
+++ b/web/client/src/components/workflow/approval.jsx
@@ -3,16 +3,21 @@
import React from 'react';
import { connect } from 'react-redux';
import { Modal, Spin, Notification, Row, Space, Button } from '@douyinfe/semi-ui';
-import { EmisRequest, EmisApiTable } from '$utils';
-import { useState } from 'react';
-import { useEffect } from 'react';
+import { useState, useRef, useEffect } from 'react';
import { IconClose } from '@douyinfe/semi-icons';
import './index.less'
const WorkFlowApprovalModal = (props) => {
- const { visible, onCancel, webEmis, user, processAuditList, checkProcessInstanceId, successCallBack } = props;
+ const { visible, onCancel, webEmis, user, processAuditList, checkProcessInstanceId, successCallBack, type } = props;
+ const ifreamUrlMap = useRef({
+ approval: 'approval/info',
+ myApply: 'process/my-apply',
+ notice: 'process/my-apply',
+ hasDone: 'process/my-apply',
+ draft: 'process/{processId}/draft'
+ })
const [loading, setLoading] = useState(true);
- const [processData, setProcessData] = useState({});
+ const [ifreamUrl, setIfreamUrl] = useState('');
const iframeRef = React.createRef();
useEffect(() => {
@@ -21,11 +26,10 @@ const WorkFlowApprovalModal = (props) => {
let data = JSON.parse(event.data);
const { type, msg } = data;
if (msg) {
- console.log(msg);
Notification.success({ title: msg })
}
if (type == 'submitSuccess' && successCallBack) {
- successCallBack();
+ successCallBack({ refresh: true });
setLoading(false);
}
}
@@ -40,7 +44,9 @@ const WorkFlowApprovalModal = (props) => {
useEffect(() => {
console.log('iframeRef.current', iframeRef.current);
if (checkProcessInstanceId && processAuditList.length && iframeRef.current) {
- const corProcessData = processAuditList.find(p => p.processInstanceId == checkProcessInstanceId)
+ 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
@@ -49,7 +55,20 @@ const WorkFlowApprovalModal = (props) => {
}
}, [checkProcessInstanceId, iframeRef])
- console.log(iframeRef);
+ useEffect(() => {
+ let nextUrl = `${webEmis
+ }/${ifreamUrlMap.current[type]
+ }?token=${user.token
+ }&processInstanceId=${checkProcessInstanceId
+ }${type == 'notice' ? `&type=notice` : ''
+ }${type == 'hasDone' ? `&type=done` : ''
+ }`
+ if (type == 'draft') {
+ nextUrl = nextUrl.replace('{processId}', checkProcessInstanceId)
+ }
+ setIfreamUrl(nextUrl);
+ }, [user, checkProcessInstanceId, type, webEmis])
+
return (
{
spinning={loading}
>
{
- // webEmis && processId ||
- 1 ?
+ ifreamUrl ?
+ >
+
+
: ''
}
diff --git a/web/client/src/sections/workOrder/containers/aboutMe.jsx b/web/client/src/sections/workOrder/containers/aboutMe.jsx
index ebfaa96..1dddd58 100644
--- a/web/client/src/sections/workOrder/containers/aboutMe.jsx
+++ b/web/client/src/sections/workOrder/containers/aboutMe.jsx
@@ -3,13 +3,9 @@ import { connect } from 'react-redux';
import { ApiTable, EmisApiTable, EmisRequest } from '$utils'
import { Skeleton, Button, Pagination, Form, Popconfirm, Table, Toast } from '@douyinfe/semi-ui';
import { IconSearch } from '@douyinfe/semi-icons';
-import { SkeletonScreen, WorkflowModal } from "$components";
+import { SkeletonScreen, WorkflowApprovalModal } from "$components";
import moment from "moment";
-
-
-
-
const Rest = (props) => {
const { dispatch, actions, user, socket } = props
@@ -18,7 +14,7 @@ const Rest = (props) => {
const [tableData, setTableData] = useState([]);
const [loading, setLoading] = useState(true);
const [workflowModalVisible, setWorkflowModalVisible] = useState(false)
- const [processInstanceId, setProcessInstanceId] = useState(null)
+ const [checkProcessInstanceId, setCheckProcessInstanceId] = useState(null)
const [params, setParams] = useState({})
@@ -78,9 +74,8 @@ const Rest = (props) => {
title: '操作',
dataIndex: 'hadle',
render: (text, record, index) => {
- setProcessInstanceId(record.processInstanceId)
+ setCheckProcessInstanceId(record.proc_inst_id_)
setWorkflowModalVisible(true)
-
}}>查看详情
}]
@@ -174,12 +169,18 @@ const Rest = (props) => {
- { setWorkflowModalVisible(false) }}
- successCallBack={() => { setWorkflowModalVisible(false) }}
+ successCallBack={({ refresh }) => {
+ if (refresh) {
+ backlogData()
+ }
+ setWorkflowModalVisible(false)
+ }}
/>
>
)
diff --git a/web/client/src/sections/workOrder/containers/initiated.jsx b/web/client/src/sections/workOrder/containers/initiated.jsx
index b517480..6e383f8 100644
--- a/web/client/src/sections/workOrder/containers/initiated.jsx
+++ b/web/client/src/sections/workOrder/containers/initiated.jsx
@@ -2,14 +2,9 @@ import React, { useEffect, useRef, useState } from 'react';
import { connect } from 'react-redux';
import { ApiTable, EmisApiTable, EmisRequest } from '$utils'
import { Skeleton, Button, Pagination, Form, Popconfirm, Table, Toast } from '@douyinfe/semi-ui';
-import { IconSearch } from '@douyinfe/semi-icons';
-import { SkeletonScreen, WorkflowModal } from "$components";
+import { SkeletonScreen, WorkflowApprovalModal, } from "$components";
import moment from "moment";
-
-
-
-
const Rest = (props) => {
const { dispatch, actions, user, socket } = props
@@ -18,16 +13,14 @@ const Rest = (props) => {
const [tableData, setTableData] = useState([]);
const [loading, setLoading] = useState(true);
const [workflowModalVisible, setWorkflowModalVisible] = useState(false)
- const [processInstanceId, setProcessInstanceId] = useState(null)
+ const [checkProcessInstanceId, setCheckProcessInstanceId] = useState(null)
const [params, setParams] = useState({})
-
useEffect(() => {
backlogData()
}, [])
let backlogData = (obj = { limit: 10, offset: 0 }) => {
-
setLoading(true)
EmisRequest.get(EmisApiTable.processInstancemMyApplyList,
{ userId: user?.id, businessType: '', ...obj })
@@ -72,9 +65,8 @@ const Rest = (props) => {
title: '操作',
dataIndex: 'hadle',
render: (text, record, index) => {
- setProcessInstanceId(record.processInstanceId)
+ setCheckProcessInstanceId(record.processInstanceId)
setWorkflowModalVisible(true)
-
}}>查看详情
}]
@@ -168,12 +160,18 @@ const Rest = (props) => {
- { setWorkflowModalVisible(false) }}
- successCallBack={() => { setWorkflowModalVisible(false) }}
+ successCallBack={({ refresh }) => {
+ if (refresh) {
+ backlogData()
+ }
+ setWorkflowModalVisible(false)
+ }}
/>
>
)
diff --git a/web/client/src/sections/workOrder/containers/preserve.jsx b/web/client/src/sections/workOrder/containers/preserve.jsx
index 7bc9659..b818e05 100644
--- a/web/client/src/sections/workOrder/containers/preserve.jsx
+++ b/web/client/src/sections/workOrder/containers/preserve.jsx
@@ -1,15 +1,11 @@
import React, { useEffect, useRef, useState } from 'react';
import { connect } from 'react-redux';
import { ApiTable, EmisApiTable, EmisRequest } from '$utils'
-import { Skeleton, Button, Pagination, Form, Popconfirm, Table, Toast } from '@douyinfe/semi-ui';
+import { Skeleton, Button, Pagination, Form, Popconfirm, Table, Toast, Tooltip } from '@douyinfe/semi-ui';
import { IconSearch } from '@douyinfe/semi-icons';
-import { SkeletonScreen, WorkflowModal } from "$components";
+import { SkeletonScreen, WorkflowApprovalModal } from "$components";
import moment from "moment";
-
-
-
-
const Rest = (props) => {
const { dispatch, actions, user, socket } = props
@@ -18,16 +14,14 @@ const Rest = (props) => {
const [tableData, setTableData] = useState([]);
const [loading, setLoading] = useState(true);
const [workflowModalVisible, setWorkflowModalVisible] = useState(false)
- const [processInstanceId, setProcessInstanceId] = useState(null)
+ const [checkProcessInstanceId, setCheckProcessInstanceId] = useState(null)
const [params, setParams] = useState({})
-
useEffect(() => {
backlogData()
}, [])
let backlogData = (obj = { limit: 10, offset: 0 }) => {
-
setLoading(true)
EmisRequest.get(EmisApiTable.processInstancemMyDraftList,
{ userId: user?.id, businessType: '', ...obj })
@@ -38,7 +32,6 @@ const Rest = (props) => {
}, error => {
Toast.error({ content: '保存待发列表请求失败', duration: 1, })
setLoading(false)
-
});
}
@@ -55,11 +48,11 @@ const Rest = (props) => {
}, {
title: '申请人',
dataIndex: 'applyerName',
- render: (text, record, index) =>user?.name
+ render: (text, record, index) => user?.name
}, {
title: '申请部门',
dataIndex: 'applyDepartmentName',
- render: (text, record, index) =>user?.department[0]?.name
+ render: (text, record, index) => user?.department[0]?.name
}, {
title: '审批状态',
dataIndex: 'apName',
@@ -73,11 +66,32 @@ const Rest = (props) => {
}, {
title: '操作',
dataIndex: 'hadle',
- render: (text, record, index) => {
- setProcessInstanceId(record.processInstanceId)
- setWorkflowModalVisible(true)
-
- }}>查看详情
+ render: (text, record, index) => {
+ let tooltipTitle = '';
+ if (record.processDeleted) {
+ tooltipTitle = '该表单流程已删除,不支持重新发起';
+ } else if (!record.processIsEnable) {
+ tooltipTitle = '该表单流程已停用,不支持重新发起';
+ } else if (!record.isCurrentVersion) {
+ tooltipTitle = '该表单流程已修改,不支持重新发起'
+ }
+
+ if (tooltipTitle) {
+ return
+ 查看详情
+
+
+ } else {
+ return {
+ setCheckProcessInstanceId(record.id)
+ setWorkflowModalVisible(true)
+ }}>查看详情
+ }
+ }
}]
return (
@@ -121,8 +135,6 @@ const Rest = (props) => {
/> */}
-
-
@@ -170,12 +182,18 @@ const Rest = (props) => {
- { setWorkflowModalVisible(false) }}
- successCallBack={() => { setWorkflowModalVisible(false) }}
+ successCallBack={({ refresh }) => {
+ if (refresh) {
+ backlogData()
+ }
+ setWorkflowModalVisible(false)
+ }}
/>
>
)
diff --git a/web/client/src/sections/workOrder/containers/receipt.jsx b/web/client/src/sections/workOrder/containers/receipt.jsx
index 91f3510..7e06d57 100644
--- a/web/client/src/sections/workOrder/containers/receipt.jsx
+++ b/web/client/src/sections/workOrder/containers/receipt.jsx
@@ -3,13 +3,9 @@ import { connect } from 'react-redux';
import { ApiTable, EmisApiTable, EmisRequest } from '$utils'
import { Skeleton, Button, Pagination, Form, Popconfirm, Table, Toast } from '@douyinfe/semi-ui';
import { IconSearch } from '@douyinfe/semi-icons';
-import { SkeletonScreen, WorkflowModal } from "$components";
+import { SkeletonScreen, WorkflowApprovalModal } from "$components";
import moment from "moment";
-
-
-
-
const Rest = (props) => {
const { dispatch, actions, user, socket } = props
@@ -18,7 +14,7 @@ const Rest = (props) => {
const [tableData, setTableData] = useState([]);
const [loading, setLoading] = useState(true);
const [workflowModalVisible, setWorkflowModalVisible] = useState(false)
- const [processInstanceId, setProcessInstanceId] = useState(null)
+ const [checkProcessInstanceId, setCheckProcessInstanceId] = useState(null)
const [params, setParams] = useState({})
@@ -37,7 +33,6 @@ const Rest = (props) => {
}, error => {
Toast.error({ content: '已办工单列表请求失败', duration: 1, })
setLoading(false)
-
});
EmisRequest.get(EmisApiTable.processInstancemMyDoneCount,
{ userId: user?.id, businessType: '', ...obj, limit: "", offset: "" })
@@ -78,9 +73,8 @@ const Rest = (props) => {
title: '操作',
dataIndex: 'hadle',
render: (text, record, index) => {
- setProcessInstanceId(record.processInstanceId)
+ setCheckProcessInstanceId(record.proc_inst_id_)
setWorkflowModalVisible(true)
-
}}>查看详情
}]
@@ -174,25 +168,27 @@ const Rest = (props) => {
- { setWorkflowModalVisible(false) }}
- successCallBack={() => { setWorkflowModalVisible(false) }}
+ successCallBack={({ refresh }) => {
+ if (refresh) {
+ backlogData()
+ }
+ setWorkflowModalVisible(false)
+ }}
/>
>
)
}
function mapStateToProps (state) {
- const { auth, global, members, webSocket } = state;
+ const { auth, } = state;
return {
- // loading: members.isRequesting,
user: auth.user,
- // actions: global.actions,
- // members: members.data,
- // socket: webSocket.socket
};
}
diff --git a/web/client/src/sections/workOrder/containers/stayDoWorkOrder.jsx b/web/client/src/sections/workOrder/containers/stayDoWorkOrder.jsx
index 246858d..9fd0ef7 100644
--- a/web/client/src/sections/workOrder/containers/stayDoWorkOrder.jsx
+++ b/web/client/src/sections/workOrder/containers/stayDoWorkOrder.jsx
@@ -6,10 +6,6 @@ import { IconSearch } from '@douyinfe/semi-icons';
import { SkeletonScreen, WorkflowModal, WorkflowApprovalModal } from "$components";
import moment from "moment";
-
-
-
-
const Rest = (props) => {
const { dispatch, actions, user, socket } = props
@@ -19,15 +15,12 @@ const Rest = (props) => {
const [loading, setLoading] = useState(true); //获取项目状态列表
const [workflowModalVisible, setWorkflowModalVisible] = useState(false)
const [checkProcessInstanceId, setCheckProcessInstanceId] = useState(null)
- const [processData, setProcessData] = useState([])
-
useEffect(() => {
backlogData()
}, [])
let backlogData = (obj = {}) => {
-
setLoading(true)
EmisRequest.get(EmisApiTable.processInstancemMyAuditList,
{ userId: user?.id, businessType: '', ...obj })
@@ -38,7 +31,6 @@ const Rest = (props) => {
}, error => {
Toast.error({ content: '待办工单请求失败', duration: 1, })
setLoading(false)
-
});
}
@@ -163,24 +155,26 @@ const Rest = (props) => {
{ setWorkflowModalVisible(false) }}
- successCallBack={() => { setWorkflowModalVisible(false) }}
+ successCallBack={({ refresh }) => {
+ if (refresh) {
+ backlogData()
+ }
+ setWorkflowModalVisible(false)
+ }}
/>
>
)
}
function mapStateToProps (state) {
- const { auth, global, members, webSocket } = state;
+ const { auth, global, } = state;
return {
- // loading: members.isRequesting,
- user: auth.user,
- // actions: global.actions,
- // members: members.data,
- // socket: webSocket.socket
+ user: auth.user,
};
}