Skip to content

Commit 0ad954f

Browse files
committed
custom control opinionEditorVisible
1 parent cf5c143 commit 0ad954f

File tree

4 files changed

+60
-9
lines changed

4 files changed

+60
-9
lines changed

admin-ui/src/components/Flow/flow/FlowDetail.tsx

Lines changed: 22 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -1,10 +1,15 @@
11
import React from "react";
2-
import { Divider, Result } from "antd";
3-
import { ProForm, ProFormTextArea } from "@ant-design/pro-components";
2+
import {Divider, Result} from "antd";
3+
import {ProForm, ProFormTextArea} from "@ant-design/pro-components";
44
import {CustomButtonType, FlowFormView, FlowFormViewProps} from "@/components/Flow/flow/types";
5-
import { FlowData } from "@/components/Flow/flow/data";
5+
import {FlowData} from "@/components/Flow/flow/data";
66
import {useDispatch, useSelector} from "react-redux";
7-
import {clearTriggerClick, FlowReduxState} from "@/components/Flow/store/FlowSlice";
7+
import {
8+
clearTriggerClick,
9+
FlowReduxState,
10+
hideOpinionEditor,
11+
showOpinionEditor
12+
} from "@/components/Flow/store/FlowSlice";
813

914
interface FlowDetailProps {
1015
view: React.ComponentType<FlowFormViewProps> | FlowFormView;
@@ -28,14 +33,18 @@ const FlowDetail: React.FC<FlowDetailProps> = (props) => {
2833
// 触发点击事件
2934
const triggerClickVisible = useSelector((state: FlowReduxState) => state.flow.triggerClickVisible);
3035

36+
// 审批意见输入框
37+
const opinionEditorVisible = useSelector((state: FlowReduxState) => state.flow.opinionEditorVisible);
38+
3139
// flow store redux
3240
const dispatch = useDispatch();
3341

3442
return (
3543
<>
3644
<div className="flowApprovalViewBox">
3745
{FlowFormView && (
38-
<div className="flowViewDetail" style={{ height: !FlowFormView || flowData.isStartFlow() ? '85vh' : '68vh' }}>
46+
<div className="flowViewDetail"
47+
style={{height: !FlowFormView || flowData.isStartFlow() ? '85vh' : '68vh'}}>
3948
<FlowFormView
4049
handlerClick={props.handlerClick}
4150
data={flowData.getFlowData()}
@@ -45,6 +54,13 @@ const FlowDetail: React.FC<FlowDetailProps> = (props) => {
4554
editable={!flowData.isDone() && flowData.getFlowNodeEditable()}
4655
compare={!flowData.isStartFlow()}
4756
triggerClickVisible={triggerClickVisible}
57+
opinionEditorVisible={(visible) => {
58+
if (visible) {
59+
dispatch(showOpinionEditor());
60+
} else {
61+
dispatch(hideOpinionEditor());
62+
}
63+
}}
4864
clearTriggerClick={() => {
4965
dispatch(clearTriggerClick());
5066
}}
@@ -61,7 +77,7 @@ const FlowDetail: React.FC<FlowDetailProps> = (props) => {
6177
)}
6278

6379
{/*仅当非发起流程时再展示审批意见框*/}
64-
{FlowFormView && flowData.showOpinion() && (
80+
{FlowFormView && flowData.showOpinion() && opinionEditorVisible && (
6581
<div className="opinionForm">
6682
<div>
6783
<Divider>

admin-ui/src/components/Flow/flow/types.ts

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -32,6 +32,9 @@ export interface FlowFormViewProps {
3232

3333
// 关闭自定义前端点击事件触发
3434
clearTriggerClick?: () => void;
35+
36+
// 审批意见输入框
37+
opinionEditorVisible?: (visible: boolean) => void;
3538
}
3639

3740
// 表单视图

admin-ui/src/components/Flow/store/FlowSlice.ts

Lines changed: 19 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -27,6 +27,9 @@ export interface FlowStore {
2727

2828
// 自定义前端点击事件触发
2929
triggerClickVisible: boolean;
30+
31+
// 审批意见输入框
32+
opinionEditorVisible: boolean;
3033
}
3134

3235
export type FlowStoreAction = {
@@ -52,6 +55,9 @@ export type FlowStoreAction = {
5255

5356
triggerClick: (state: FlowStore) => void;
5457
clearTriggerClick: (state: FlowStore) => void;
58+
59+
showOpinionEditor: (state: FlowStore) => void;
60+
hideOpinionEditor: (state: FlowStore) => void;
5561
}
5662

5763
export const flowSlice = createSlice<FlowStore, FlowStoreAction, "flow", {}>({
@@ -67,7 +73,8 @@ export const flowSlice = createSlice<FlowStore, FlowStoreAction, "flow", {}>({
6773
resultCloseFlow: false,
6874
currentUsers: [],
6975
specifyUserIds: [],
70-
triggerClickVisible: false
76+
triggerClickVisible: false,
77+
opinionEditorVisible: true
7178
},
7279
reducers: {
7380
showPostponed: (state) => {
@@ -123,6 +130,14 @@ export const flowSlice = createSlice<FlowStore, FlowStoreAction, "flow", {}>({
123130

124131
clearTriggerClick: (state) => {
125132
state.triggerClickVisible = false;
133+
},
134+
135+
showOpinionEditor: (state) => {
136+
state.opinionEditorVisible = true;
137+
},
138+
139+
hideOpinionEditor: (state) => {
140+
state.opinionEditorVisible = false;
126141
}
127142
},
128143
});
@@ -139,7 +154,9 @@ export const {
139154
closeUserSelect,
140155
setSelectUsers,
141156
triggerClick,
142-
clearTriggerClick
157+
clearTriggerClick,
158+
hideOpinionEditor,
159+
showOpinionEditor
143160
} = flowSlice.actions;
144161
export const flowStore = configureStore({
145162
reducer: {

admin-ui/src/pages/flow/leave/LeaveForm.tsx

Lines changed: 16 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,17 +2,23 @@ import React, {useEffect} from "react";
22
import {ProForm, ProFormDigit, ProFormText, ProFormTextArea} from "@ant-design/pro-components";
33
import {FlowFormViewProps} from "@/components/Flow/flow/types";
44
import {Button} from "antd";
5+
import {useSelector} from "react-redux";
6+
import {FlowReduxState} from "@/components/Flow/store/FlowSlice";
57

68

79
const LeaveForm: React.FC<FlowFormViewProps> = (props) => {
810

11+
// 审批意见输入框展示状态
12+
const opinionEditorVisible = useSelector((state: FlowReduxState) => state.flow.opinionEditorVisible);
13+
914
useEffect(() => {
1015
props.form.setFieldsValue(props.data);
16+
// 关闭意见输入框
17+
props.opinionEditorVisible && props.opinionEditorVisible(false);
1118
}, []);
1219

1320
const triggerClickVisible = props.triggerClickVisible;
1421

15-
1622
return (
1723
<ProForm
1824
form={props.form}
@@ -54,6 +60,15 @@ const LeaveForm: React.FC<FlowFormViewProps> = (props) => {
5460
]}
5561
/>
5662

63+
<Button
64+
onClick={()=>{
65+
props.opinionEditorVisible && props.opinionEditorVisible(!opinionEditorVisible);
66+
}}
67+
>
68+
意见输入框
69+
</Button>
70+
71+
5772
{triggerClickVisible && (
5873
<Button
5974
onClick={()=>{

0 commit comments

Comments
 (0)