Skip to content

Commit 97e73e4

Browse files
committed
refactor:整合部门管理、岗位管理模块新增和编辑弹窗,重构回调逻辑
1 parent 1c2f812 commit 97e73e4

File tree

8 files changed

+390
-696
lines changed

8 files changed

+390
-696
lines changed

dash-fastapi-frontend/callbacks/system_c/dept_c.py

Lines changed: 128 additions & 172 deletions
Original file line numberDiff line numberDiff line change
@@ -95,205 +95,161 @@ def reset_dept_query_params(reset_click):
9595

9696

9797
@app.callback(
98-
[Output('dept-add-modal', 'visible', allow_duplicate=True),
99-
Output('dept-add-parent_id', 'treeData'),
100-
Output('dept-add-parent_id', 'value'),
98+
[Output('dept-modal', 'visible', allow_duplicate=True),
99+
Output('dept-modal', 'title'),
100+
Output('dept-parent_id', 'treeData'),
101+
Output('dept-parent_id', 'value'),
102+
Output('dept-dept_name', 'value'),
103+
Output('dept-order_num', 'value'),
104+
Output('dept-leader', 'value'),
105+
Output('dept-phone', 'value'),
106+
Output('dept-email', 'value'),
107+
Output('dept-status', 'value'),
101108
Output('api-check-token', 'data', allow_duplicate=True),
102-
Output('dept-add', 'nClicks')],
109+
Output('dept-add', 'nClicks'),
110+
Output('dept-edit-id-store', 'data'),
111+
Output('dept-operations-store-bk', 'data')],
103112
[Input('dept-add', 'nClicks'),
104113
Input('dept-list-table', 'nClicksButton')],
105114
[State('dept-list-table', 'clickedContent'),
106115
State('dept-list-table', 'recentlyButtonClickedRow')],
107116
prevent_initial_call=True
108117
)
109-
def add_user_modal(add_click, button_click, clicked_content, recently_button_clicked_row):
110-
if add_click or (button_click and clicked_content == '新增'):
118+
def add_edit_dept_modal(add_click, button_click, clicked_content, recently_button_clicked_row):
119+
if add_click or (button_click and clicked_content != '删除'):
111120
dept_params = dict(dept_name='')
112-
tree_info = get_dept_tree_api(dept_params)
121+
if clicked_content == '修改':
122+
tree_info = get_dept_tree_for_edit_option_api(dept_params)
123+
else:
124+
tree_info = get_dept_tree_api(dept_params)
113125
if tree_info['code'] == 200:
114126
tree_data = tree_info['data']
115127

116-
return [
117-
True,
118-
tree_data,
119-
int(recently_button_clicked_row['key']) if recently_button_clicked_row else dash.no_update,
120-
{'timestamp': time.time()},
121-
None
122-
]
123-
124-
return [dash.no_update] * 3 + [{'timestamp': time.time()}, None]
125-
126-
return [dash.no_update] * 4 + [None]
127-
128-
129-
@app.callback(
130-
[Output('dept-add-parent_id-form-item', 'validateStatus'),
131-
Output('dept-add-dept_name-form-item', 'validateStatus'),
132-
Output('dept-add-order_num-form-item', 'validateStatus'),
133-
Output('dept-add-parent_id-form-item', 'help'),
134-
Output('dept-add-dept_name-form-item', 'help'),
135-
Output('dept-add-order_num-form-item', 'help'),
136-
Output('dept-add-modal', 'visible', allow_duplicate=True),
137-
Output('dept-operations-store', 'data', allow_duplicate=True),
138-
Output('api-check-token', 'data', allow_duplicate=True),
139-
Output('global-message-container', 'children', allow_duplicate=True)],
140-
Input('dept-add-modal', 'okCounts'),
141-
[State('dept-add-parent_id', 'value'),
142-
State('dept-add-dept_name', 'value'),
143-
State('dept-add-order_num', 'value'),
144-
State('dept-add-leader', 'value'),
145-
State('dept-add-phone', 'value'),
146-
State('dept-add-email', 'value'),
147-
State('dept-add-status', 'value')],
148-
prevent_initial_call=True
149-
)
150-
def dept_add_confirm(add_confirm, parent_id, dept_name, order_num, leader, phone, email, status):
151-
if add_confirm:
152-
153-
if all([parent_id, dept_name, order_num]):
154-
params = dict(parent_id=parent_id, dept_name=dept_name, order_num=order_num,
155-
leader=leader, phone=phone, email=email, status=status)
156-
add_button_result = add_dept_api(params)
157-
158-
if add_button_result['code'] == 200:
128+
if add_click:
159129
return [
130+
True,
131+
'新增部门',
132+
tree_data,
160133
None,
161134
None,
162135
None,
163136
None,
164137
None,
165138
None,
166-
False,
167-
{'type': 'add'},
139+
'0',
168140
{'timestamp': time.time()},
169-
fuc.FefferyFancyMessage('新增成功', type='success')
141+
None,
142+
None,
143+
{'type': 'add'}
170144
]
145+
elif button_click and clicked_content == '新增':
146+
return [
147+
True,
148+
'新增部门',
149+
tree_data,
150+
str(recently_button_clicked_row['key']),
151+
None,
152+
None,
153+
None,
154+
None,
155+
None,
156+
'0',
157+
{'timestamp': time.time()},
158+
None,
159+
None,
160+
{'type': 'add'}
161+
]
162+
elif button_click and clicked_content == '修改':
163+
dept_id = int(recently_button_clicked_row['key'])
164+
dept_info_res = get_dept_detail_api(dept_id=dept_id)
165+
if dept_info_res['code'] == 200:
166+
dept_info = dept_info_res['data']
167+
return [
168+
True,
169+
'编辑部门',
170+
tree_data,
171+
str(dept_info.get('parent_id')),
172+
dept_info.get('dept_name'),
173+
dept_info.get('order_num'),
174+
dept_info.get('leader'),
175+
dept_info.get('phone'),
176+
dept_info.get('email'),
177+
dept_info.get('status'),
178+
{'timestamp': time.time()},
179+
None,
180+
dept_info,
181+
{'type': 'edit'}
182+
]
171183

172-
return [
173-
None,
174-
None,
175-
None,
176-
None,
177-
None,
178-
None,
179-
dash.no_update,
180-
dash.no_update,
181-
{'timestamp': time.time()},
182-
fuc.FefferyFancyMessage('新增失败', type='error')
183-
]
184-
185-
return [
186-
None if parent_id else 'error',
187-
None if dept_name else 'error',
188-
None if order_num else 'error',
189-
None if parent_id else '请选择上级部门!',
190-
None if dept_name else '请输入部门名称!',
191-
None if order_num else '请输入显示排序!',
192-
dash.no_update,
193-
dash.no_update,
194-
{'timestamp': time.time()},
195-
fuc.FefferyFancyMessage('新增失败', type='error')
196-
]
197-
198-
return [dash.no_update] * 10
199-
200-
201-
@app.callback(
202-
[Output('dept-edit-modal', 'visible', allow_duplicate=True),
203-
Output('dept-edit-parent_id', 'treeData'),
204-
Output('dept-edit-parent_id', 'value'),
205-
Output('dept-edit-dept_name', 'value'),
206-
Output('dept-edit-order_num', 'value'),
207-
Output('dept-edit-leader', 'value'),
208-
Output('dept-edit-phone', 'value'),
209-
Output('dept-edit-email', 'value'),
210-
Output('dept-edit-status', 'value'),
211-
Output('dept-edit-id-store', 'data'),
212-
Output('api-check-token', 'data', allow_duplicate=True)],
213-
[Input('dept-list-table', 'nClicksButton')],
214-
[State('dept-list-table', 'clickedContent'),
215-
State('dept-list-table', 'recentlyButtonClickedRow')],
216-
prevent_initial_call=True
217-
)
218-
def dept_edit_modal(button_click, clicked_content, recently_button_clicked_row):
219-
if button_click:
220-
221-
if clicked_content == '修改':
222-
dept_id = int(recently_button_clicked_row['key'])
223-
else:
224-
return dash.no_update
225-
226-
dept_params = dict(dept_id=dept_id)
227-
tree_info = get_dept_tree_for_edit_option_api(dept_params)
228-
edit_button_info = get_dept_detail_api(dept_id)
229-
if edit_button_info['code'] == 200 and tree_info['code'] == 200:
230-
edit_button_result = edit_button_info['data']
231-
tree_data = tree_info['data']
232-
233-
return [
234-
True,
235-
tree_data,
236-
edit_button_result['parent_id'],
237-
edit_button_result['dept_name'],
238-
edit_button_result['order_num'],
239-
edit_button_result['leader'],
240-
edit_button_result['phone'],
241-
edit_button_result['email'],
242-
edit_button_result['status'],
243-
{'dept_id': dept_id},
244-
{'timestamp': time.time()}
245-
]
246-
247-
return [dash.no_update] * 10 + [{'timestamp': time.time()}]
184+
return [dash.no_update] * 10 + [{'timestamp': time.time()}, None, None, None]
248185

249-
return [dash.no_update] * 11
186+
return [dash.no_update] * 11 + [None, None, None]
250187

251188

252189
@app.callback(
253-
[Output('dept-edit-parent_id-form-item', 'validateStatus'),
254-
Output('dept-edit-dept_name-form-item', 'validateStatus'),
255-
Output('dept-edit-order_num-form-item', 'validateStatus'),
256-
Output('dept-edit-parent_id-form-item', 'help'),
257-
Output('dept-edit-dept_name-form-item', 'help'),
258-
Output('dept-edit-order_num-form-item', 'help'),
259-
Output('dept-edit-modal', 'visible', allow_duplicate=True),
190+
[Output('dept-parent_id-form-item', 'validateStatus'),
191+
Output('dept-dept_name-form-item', 'validateStatus'),
192+
Output('dept-order_num-form-item', 'validateStatus'),
193+
Output('dept-parent_id-form-item', 'help'),
194+
Output('dept-dept_name-form-item', 'help'),
195+
Output('dept-order_num-form-item', 'help'),
196+
Output('dept-modal', 'visible'),
260197
Output('dept-operations-store', 'data', allow_duplicate=True),
261198
Output('api-check-token', 'data', allow_duplicate=True),
262199
Output('global-message-container', 'children', allow_duplicate=True)],
263-
Input('dept-edit-modal', 'okCounts'),
264-
[State('dept-edit-parent_id', 'value'),
265-
State('dept-edit-dept_name', 'value'),
266-
State('dept-edit-order_num', 'value'),
267-
State('dept-edit-leader', 'value'),
268-
State('dept-edit-phone', 'value'),
269-
State('dept-edit-email', 'value'),
270-
State('dept-edit-status', 'value'),
271-
State('dept-edit-id-store', 'data')],
200+
Input('dept-modal', 'okCounts'),
201+
[State('dept-operations-store-bk', 'data'),
202+
State('dept-edit-id-store', 'data'),
203+
State('dept-parent_id', 'value'),
204+
State('dept-dept_name', 'value'),
205+
State('dept-order_num', 'value'),
206+
State('dept-leader', 'value'),
207+
State('dept-phone', 'value'),
208+
State('dept-email', 'value'),
209+
State('dept-status', 'value')],
272210
prevent_initial_call=True
273211
)
274-
def dept_edit_confirm(edit_confirm, parent_id, dept_name, order_num, leader, phone, email, status, dept_id):
275-
if edit_confirm:
276-
212+
def dept_confirm(confirm_trigger, operation_type, cur_dept_info, parent_id, dept_name, order_num, leader, phone, email, status):
213+
if confirm_trigger:
277214
if all([parent_id, dept_name, order_num]):
278-
params = dict(dept_id=dept_id['dept_id'], parent_id=parent_id, dept_name=dept_name,
279-
order_num=order_num, leader=leader, phone=phone, email=email,
280-
status=status)
281-
edit_button_result = edit_dept_api(params)
282-
283-
if edit_button_result['code'] == 200:
284-
return [
285-
None,
286-
None,
287-
None,
288-
None,
289-
None,
290-
None,
291-
False,
292-
{'type': 'edit'},
293-
{'timestamp': time.time()},
294-
fuc.FefferyFancyMessage('编辑成功', type='success')
295-
]
296-
215+
params_add = dict(parent_id=parent_id, dept_name=dept_name, order_num=order_num, leader=leader, phone=phone,
216+
email=email, status=status)
217+
params_edit = dict(dept_id=cur_dept_info.get('dept_id') if cur_dept_info else None, parent_id=parent_id, dept_name=dept_name,
218+
order_num=order_num, leader=leader, phone=phone, email=email, status=status)
219+
api_res = {}
220+
operation_type = operation_type.get('type')
221+
if operation_type == 'add':
222+
api_res = add_dept_api(params_add)
223+
if operation_type == 'edit':
224+
api_res = edit_dept_api(params_edit)
225+
if api_res.get('code') == 200:
226+
if operation_type == 'add':
227+
return [
228+
None,
229+
None,
230+
None,
231+
None,
232+
None,
233+
None,
234+
False,
235+
{'type': 'add'},
236+
{'timestamp': time.time()},
237+
fuc.FefferyFancyMessage('新增成功', type='success')
238+
]
239+
if operation_type == 'edit':
240+
return [
241+
None,
242+
None,
243+
None,
244+
None,
245+
None,
246+
None,
247+
False,
248+
{'type': 'edit'},
249+
{'timestamp': time.time()},
250+
fuc.FefferyFancyMessage('编辑成功', type='success')
251+
]
252+
297253
return [
298254
None,
299255
None,
@@ -304,9 +260,9 @@ def dept_edit_confirm(edit_confirm, parent_id, dept_name, order_num, leader, pho
304260
dash.no_update,
305261
dash.no_update,
306262
{'timestamp': time.time()},
307-
fuc.FefferyFancyMessage('编辑失败', type='error')
263+
fuc.FefferyFancyMessage('处理失败', type='error')
308264
]
309-
265+
310266
return [
311267
None if parent_id else 'error',
312268
None if dept_name else 'error',
@@ -317,8 +273,8 @@ def dept_edit_confirm(edit_confirm, parent_id, dept_name, order_num, leader, pho
317273
dash.no_update,
318274
dash.no_update,
319275
{'timestamp': time.time()},
320-
fuc.FefferyFancyMessage('编辑失败', type='error')
321-
]
276+
fuc.FefferyFancyMessage('处理失败', type='error')
277+
]
322278

323279
return [dash.no_update] * 10
324280

dash-fastapi-frontend/callbacks/system_c/menu_c/menu_c.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -139,7 +139,7 @@ def get_select_icon(icon):
139139
prevent_initial_call=True
140140
)
141141
def add_edit_menu_modal(add_click, button_click, clicked_content, recently_button_clicked_row):
142-
if add_click or button_click:
142+
if add_click or (button_click and clicked_content != '删除'):
143143
menu_params = dict(menu_name='')
144144
if clicked_content == '修改':
145145
tree_info = get_menu_tree_for_edit_option_api(menu_params)

0 commit comments

Comments
 (0)