运维服务中台
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 
 

111 lines
4.8 KiB

import React, { useEffect, useState } from 'react';
import { connect } from 'react-redux';
import moment from 'moment';
import { WorkflowModal, WorkFlowViewModal, WorkflowApprovalModal } from "$components"
import { EmisRequest, EmisApiTable } from "$utils"
import { Card, Notification, Space, Button, Spin } from '@douyinfe/semi-ui';
import { IconArticle } from '@douyinfe/semi-icons';
import '../style.less'
const { Meta } = Card;
const JobOrder = (props) => {
const { dispatch, actions, user, workflowProcess, clientHeight } = props
const { workOrder } = actions
const [workflowModalVisible, setWorkflowModalVisible] = useState(false)
const [launchProcessId, setLaunchProcessId] = useState(null)
const [formStateRequestingIndex, setFormStateRequestingIndex] = useState(false)
useEffect(() => {
dispatch(workOrder.getEnabledWorkflowProcess())
}, [])
return (
<div>
<div className='work-order-container' style={{
display: 'grid', gridTemplateColumns: `repeat(auto-fit, minmax(340px, 1fr))`, gridAutoRows: `minmax(0, auto)`, gridGap: 12,
}}>
{
workflowProcess.map((p, index) => {
return (
<Card
key={p.id}
className='work-order-card'
style={{ gridColumn: `span 1`, cursor: 'pointer' }}
footerLine={true}
footerStyle={{ display: 'flex', justifyContent: 'flex-end' }}
footer={
`创建时间:${moment(p.createTime || p.updateTime).format('YYYY-MM-DD HH:mm:ss')}`
}
onClick={() => {
if (formStateRequestingIndex) return;
setFormStateRequestingIndex(index + 1)
EmisRequest.get(EmisApiTable.getProcessByName, {
name: decodeURIComponent(p.name),
resource: p.id
}).then(res => {
setFormStateRequestingIndex(false)
if (res) {
// if (res.deleted) {
// Notification.error({ title: '该表单流程已删除,请尝试退出账号重新登录或联系项企管理员' })
// } else if (res.isEdited) {
// Notification.error({ title: '该表单流程已修改,请尝试退出账号重新登录或联系项企管理员' })
// } else if (!res.isEnable) {
// Notification.error({ title: '该表单流程已停用,请尝试退出账号重新登录或联系项企管理员' })
// } else
if (res.id) {
setLaunchProcessId(res.id)
setWorkflowModalVisible(true)
}
} else {
Notification.error({ title: `获取指定流程失败` });
}
})
}}
>
<div>
<Meta
title={
<span>{p.name}<Spin style={{ position: 'relative', top: 6, left: 6, }} spinning={formStateRequestingIndex == index + 1} /></span>
}
avatar={
<IconArticle style={{ fontSize: 42 }} />
}
/>
</div>
</Card>
)
})
}
</div>
{/* <WorkflowModal
visible={workflowModalVisible}
title={''}
processId={launchProcessId}
onCancel={() => { setWorkflowModalVisible(false) }}
successCallBack={() => { setWorkflowModalVisible(false) }}
/> */}
{/* <WorkFlowViewModal
visible={workflowModalVisible}
processId={launchProcessId}
/> */}
{<WorkflowApprovalModal
visible={workflowModalVisible}
onCancel={() => { setWorkflowModalVisible(false) }}
/>}
</div>
)
}
function mapStateToProps (state) {
const { auth, global, workflowProcess } = state;
console.log(global);
return {
user: auth.user,
actions: global.actions,
workflowProcess: workflowProcess.data || [],
clientHeight: global.clientHeight
};
}
export default connect(mapStateToProps)(JobOrder);