Browse Source

维修FQA

dev
巴林闲侠 2 years ago
parent
commit
f385d3031f
  1. 38
      web/client/src/components/workflow/approval.jsx
  2. 4
      web/client/src/sections/means/nav-item.jsx
  3. 4
      web/client/src/sections/means/routes.js
  4. 78
      web/client/src/sections/workOrder/containers/initiated.jsx
  5. 1
      web/client/src/sections/workOrder/containers/preserve.jsx
  6. 1
      web/client/src/utils/webapi.js

38
web/client/src/components/workflow/approval.jsx

@ -14,7 +14,8 @@ const WorkFlowApprovalModal = (props) => {
myApply: 'process/my-apply', myApply: 'process/my-apply',
notice: 'process/my-apply', notice: 'process/my-apply',
hasDone: '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 [loading, setLoading] = useState(true);
const [ifreamUrl, setIfreamUrl] = useState(''); const [ifreamUrl, setIfreamUrl] = useState('');
@ -28,7 +29,10 @@ const WorkFlowApprovalModal = (props) => {
if (msg) { if (msg) {
Notification.success({ title: msg }) Notification.success({ title: msg })
} }
if (type == 'submitSuccess' && successCallBack) { if (
(type == 'submitSuccess' || type == 'saveSuccess')
&& successCallBack
) {
successCallBack({ refresh: true }); successCallBack({ refresh: true });
setLoading(false); setLoading(false);
} }
@ -42,14 +46,19 @@ const WorkFlowApprovalModal = (props) => {
}, []) }, [])
useEffect(() => { useEffect(() => {
if (checkProcessInstanceId && processAuditList.length && iframeRef.current) { if (iframeRef.current) {
const corProcessData = type == 'draft' ? if (checkProcessInstanceId && processAuditList.length) {
processAuditList.find(p => p.id == checkProcessInstanceId) const corProcessData =
: processAuditList.find(p => p.processInstanceId == checkProcessInstanceId) type == 'draft' ?// 稿
if (corProcessData) { processAuditList.find(p => p.id == checkProcessInstanceId)
iframeRef.current.contentWindow.postMessage(JSON.stringify({ : processAuditList.find(p => p.processInstanceId == checkProcessInstanceId)
...corProcessData if (corProcessData) {
}), '*'); iframeRef.current.contentWindow.postMessage(JSON.stringify(
{
...corProcessData
}
), '*');
}
} }
} }
}, [checkProcessInstanceId, iframeRef]) }, [checkProcessInstanceId, iframeRef])
@ -62,9 +71,16 @@ const WorkFlowApprovalModal = (props) => {
}${type == 'notice' ? `&type=notice` : '' }${type == 'notice' ? `&type=notice` : ''
}${type == 'hasDone' ? `&type=done` : '' }${type == 'hasDone' ? `&type=done` : ''
}` }`
if (type == 'draft') { if (type == 'draft') {// 稿
nextUrl = nextUrl.replace('{processId}', checkProcessInstanceId) 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); setIfreamUrl(nextUrl);
}, [user, checkProcessInstanceId, type, webEmis]) }, [user, checkProcessInstanceId, type, webEmis])

4
web/client/src/sections/means/nav-item.jsx

@ -19,11 +19,11 @@ export function getNavItem (user, dispatch) {
}] }]
}, { }, {
itemKey: 'repairFQA', itemKey: 'repairFQA',
text: '维修FQA', text: '维修FAQ',
icon: <iconpark-icon style={{ width: 20, height: 20 }} name="iconjianshezhong"></iconpark-icon>, icon: <iconpark-icon style={{ width: 20, height: 20 }} name="iconjianshezhong"></iconpark-icon>,
to: '/means/repairFQA/repairFQA1', to: '/means/repairFQA/repairFQA1',
items: [{ items: [{
itemKey: 'repairFQA1', to: '/means/repairFQA/repairFQA1', text: '维修FQA' itemKey: 'repairFQA1', to: '/means/repairFQA/repairFQA1', text: '维修FAQ'
}] }]
}, { }, {
itemKey: 'faultInformation', itemKey: 'faultInformation',

4
web/client/src/sections/means/routes.js

@ -20,12 +20,12 @@ export default [{
}, { }, {
path: '/repairFQA', path: '/repairFQA',
key: 'repairFQA', key: 'repairFQA',
breadcrumb: '维修FQA', breadcrumb: '维修FAQ',
childRoutes: [{ childRoutes: [{
path: '/repairFQA1', path: '/repairFQA1',
key: 'repairFQA1', key: 'repairFQA1',
component: RepairFQA, component: RepairFQA,
breadcrumb: '维修FQA', breadcrumb: '维修FAQ',
}] }]
}, { }, {
path: '/faultInformation', path: '/faultInformation',

78
web/client/src/sections/workOrder/containers/initiated.jsx

@ -1,7 +1,7 @@
import React, { useEffect, useRef, useState } from 'react'; import React, { useEffect, useRef, useState } from 'react';
import { connect } from 'react-redux'; import { connect } from 'react-redux';
import { ApiTable, EmisApiTable, EmisRequest, parseProcessData, judgmentProcessState } from '$utils' import { ApiTable, EmisApiTable, EmisRequest, parseProcessData, processState, judgmentProcessState } from '$utils'
import { Skeleton, Button, Pagination, Form, Popconfirm, Table, Toast } from '@douyinfe/semi-ui'; import { Skeleton, Button, Pagination, Form, Popconfirm, Table, Toast, Space, Tooltip } from '@douyinfe/semi-ui';
import { SkeletonScreen, WorkflowApprovalModal, } from "$components"; import { SkeletonScreen, WorkflowApprovalModal, } from "$components";
import moment from "moment"; import moment from "moment";
@ -13,6 +13,7 @@ const Rest = (props) => {
const [tableData, setTableData] = useState([]); const [tableData, setTableData] = useState([]);
const [loading, setLoading] = useState(true); const [loading, setLoading] = useState(true);
const [workflowModalVisible, setWorkflowModalVisible] = useState(false) const [workflowModalVisible, setWorkflowModalVisible] = useState(false)
const [workflowModalType, setWorkflowModalType] = useState('')
const [checkProcessInstanceId, setCheckProcessInstanceId] = useState(null) const [checkProcessInstanceId, setCheckProcessInstanceId] = useState(null)
const [params, setParams] = useState({}) const [params, setParams] = useState({})
@ -102,10 +103,73 @@ const Rest = (props) => {
}, { }, {
title: '操作', title: '操作',
dataIndex: 'hadle', dataIndex: 'hadle',
render: (text, record, index) => <div style={{ width: 60, color: "#1890ff", cursor: "pointer" }} onClick={() => { render: (text, record, index) => {
setCheckProcessInstanceId(record.processInstanceId) let reviewTime = record.lastApproveTime ?
setWorkflowModalVisible(true) moment(record.lastApproveTime).format('YYYY-MM-DD HH:mm:ss')
}}>查看详情</div> :
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 (
<Space>
<a style={{ width: 60, color: "#1890ff", cursor: "pointer" }} onClick={() => {
setWorkflowModalType('myApply')
setCheckProcessInstanceId(record.processInstanceId)
setWorkflowModalVisible(true)
}}>查看详情</a>
{
!reviewTime && processState.active == record.state ?
<Popconfirm title='确认撤销申请?' onConfirm={() => {
// 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)
});
}}>
<a style={{ color: "#1890ff", cursor: "pointer" }}>撤销</a>
</Popconfirm>
: ''
}{
(
record.state == processState.suspended //
|| record.state == processState.externally //
) ?
tooltipTitle
&& false
?
<Tooltip content={tooltipTitle} position={'leftBottom'}>
重新发起
</Tooltip>
: <a style={{ color: "#1890ff", cursor: "pointer" }} onClick={() => {
setWorkflowModalType('submit')
setCheckProcessInstanceId(record.processInstanceId)
setWorkflowModalVisible(true)
}}>重新发起</a>
: ''
}
</Space >
)
}
}] }]
return ( return (
@ -199,7 +263,7 @@ const Rest = (props) => {
</div> </div>
</div> </div>
<WorkflowApprovalModal <WorkflowApprovalModal
type='myApply' type={workflowModalType}
visible={workflowModalVisible} visible={workflowModalVisible}
processAuditList={tableData} processAuditList={tableData}
checkProcessInstanceId={checkProcessInstanceId} checkProcessInstanceId={checkProcessInstanceId}

1
web/client/src/sections/workOrder/containers/preserve.jsx

@ -122,7 +122,6 @@ const Rest = (props) => {
> >
<div style={{ width: 60, color: "##F2F3F5", }} >查看详情</div> <div style={{ width: 60, color: "##F2F3F5", }} >查看详情</div>
</Tooltip> </Tooltip>
} else { } else {
return <div style={{ width: 60, color: "#1890ff", cursor: "pointer" }} onClick={() => { return <div style={{ width: 60, color: "#1890ff", cursor: "pointer" }} onClick={() => {
setCheckProcessInstanceId(record.id) setCheckProcessInstanceId(record.id)

1
web/client/src/utils/webapi.js

@ -96,6 +96,7 @@ export const EmisApiTable = {
processInstancemMyNoticeCount: 'process-instance/my-notice-count/optimization', //抄送我 数量 processInstancemMyNoticeCount: 'process-instance/my-notice-count/optimization', //抄送我 数量
processInstancemMyDraftList: 'process-instance/my-draft-list', //保存待发 processInstancemMyDraftList: 'process-instance/my-draft-list', //保存待发
getApprovalActionUrl: 'process-instance/audit/{type}', // 审批、撤销操作
//删除草稿 //删除草稿
delDraftUrl: 'process/drafts/{draftId}', delDraftUrl: 'process/drafts/{draftId}',
} }

Loading…
Cancel
Save