import React, { useEffect, useRef, useState } from 'react'; import { connect } from 'react-redux'; 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"; const Rest = (props) => { const { dispatch, actions, user, socket, pomsProjectBasicAll } = props const { workOrder } = actions const [query, setQuery] = useState({ limit: 10, offset: 0 }); //页码信息 const [limits, setLimits] = useState(0)//每页实际条数 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({}) useEffect(() => { backlogData() if (!pomsProjectBasicAll.length) { dispatch(workOrder.getPomsProjectBasicAll()) } }, []) let backlogData = (obj = { limit: 10, offset: 0 }) => { setLoading(true) EmisRequest.get(EmisApiTable.processInstancemMyApplyList, { userId: user?.id, businessType: '运维中台表单', ...obj, queryFormData: 'true' }) .then(res => { let nextTableData = (res?.data || []).map(r => { let pomsNeedData = {} if (r?.formData?.submitFormData && r?.formData?.workflowProcessVersion?.workflowProcessForm?.formSchema) { pomsNeedData = parseProcessData({ formSchema: r?.formData?.workflowProcessVersion?.workflowProcessForm?.formSchema, formData: r?.formData?.submitFormData }) } return { ...r, pomsNeedData } }) setTableData(nextTableData) setLimits(res.count || 0) setLoading(false) }, error => { Toast.error({ content: '由我发起的工单列表请求失败', duration: 1, }) setLoading(false) }); } let columns = [{ title: '序号', dataIndex: 'index', render: (text, record, index) => index + 1 }, { title: '标题', dataIndex: 'title', render: (text, record, index) => { return record?.pomsNeedData?.title?.value || '' } }, { title: '关联项目', dataIndex: 'pomsProject', render: (text, record, index) => { const pomsProjectId = record?.pomsNeedData?.pomsProjectId?.value if (pomsProjectId) { const corProject = pomsProjectBasicAll.find(p => p.value == pomsProjectId) return corProject?.label || '' } else { return '' } } }, { title: '申请人', dataIndex: 'applyerName', }, { title: '申请部门', dataIndex: 'applyDepartmentName', }, { title: '审批状态', dataIndex: 'status', render: (text, record) => { return judgmentProcessState(record, 'initiate') }, }, { title: '提交时间', dataIndex: 'submissionTime', render: (text, record, index) => text && moment(text).add(8, 'hours').format('YYYY-MM-DD HH:mm:ss') || '--' }, { title: '期望完成时间', dataIndex: 'expectTime', render: (text, record, index) => { return record?.pomsNeedData?.expectTime?.value || '' } }, { title: '操作', dataIndex: 'hadle', 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 ( <>
由我发起
LAUNCH WORKORDER
(form.current = formApi)} layout="horizontal" style={{ position: "relative", width: "100%", flex: 1 }} onSubmit={(values) => { if (values?.applyTimes?.length) { values.applyTimes = [moment(values?.applyTimes[0]).format('YYYY-MM-DD HH:mm:ss'), moment(values?.applyTimes[1]).endOf('day').format('YYYY-MM-DD HH:mm:ss')] } backlogData({ ...values, limit: 10, page: 0 }) setQuery({ limit: 10, offset: 0 }); setLimits(0) setParams({ ...values }) }} > {/* } field="keywordsUser" pure showClear style={{ width: 260, marginLeft: 12, marginRight: 12 }} placeholder="请输入申请人" /> */}
共{limits}条工单 { setQuery({ limit: pageSize, offset: currentPage - 1 }); backlogData({ ...params, limit: pageSize, offset: currentPage - 1 }) }} />
{ setWorkflowModalVisible(false) }} successCallBack={({ refresh }) => { if (refresh) { backlogData() } setWorkflowModalVisible(false) }} /> ) } function mapStateToProps (state) { const { auth, global, pomsProjectBasicAll } = state; return { user: auth.user, actions: global.actions, pomsProjectBasicAll: pomsProjectBasicAll.data || [] }; } export default connect(mapStateToProps)(Rest);