diff --git a/README.md b/README.md index b96177e2dce80fc346313c5ea90bd7dd2a3b9ed5..3e2227f4bd8a71868626e6591f41271e1341c052 100644 --- a/README.md +++ b/README.md @@ -1,12 +1,12 @@
-
+
@@ -85,6 +85,11 @@ Dash-FastAPI-Admin是一套全部开源的快速开发平台,毫无保留给
+## 在线体验
+- *账号:admin*
+- *密码:admin123*
+- 演示地址:dfadmin管理系统
+
## 项目运行相关
```bash
diff --git a/dash-fastapi-backend/module_admin/annotation/log_annotation.py b/dash-fastapi-backend/module_admin/annotation/log_annotation.py
index 37dc894045c9df84b5c67c316e09b4b767565879..c2d88a69e65078857c812a2b9bf87d63554085f1 100644
--- a/dash-fastapi-backend/module_admin/annotation/log_annotation.py
+++ b/dash-fastapi-backend/module_admin/annotation/log_annotation.py
@@ -136,7 +136,7 @@ def log_decorator(title: str, business_type: int, log_type: Optional[str] = 'ope
else:
current_user = await get_current_user(request, token, query_db)
oper_name = current_user.user.user_name
- dept_name = current_user.dept.dept_name
+ dept_name = current_user.dept.dept_name if current_user.dept else None
operation_log = dict(
title=title,
business_type=business_type,
diff --git a/dash-fastapi-backend/module_admin/controller/login_controller.py b/dash-fastapi-backend/module_admin/controller/login_controller.py
index e9a000bf25e400ded96d2329a489a6fe737fff11..19ff188ef2e5f3a1d807503bd3b60330be2f387d 100644
--- a/dash-fastapi-backend/module_admin/controller/login_controller.py
+++ b/dash-fastapi-backend/module_admin/controller/login_controller.py
@@ -38,7 +38,7 @@ async def login(request: Request, form_data: CustomOAuth2PasswordRequestForm = D
data={
"user_id": str(result[0].user_id),
"user_name": result[0].user_name,
- "dept_name": result[1].dept_name,
+ "dept_name": result[1].dept_name if result[1] else None,
"session_id": session_id,
"login_info": user.login_info
},
diff --git a/dash-fastapi-backend/module_admin/controller/user_controller.py b/dash-fastapi-backend/module_admin/controller/user_controller.py
index 88433ffb216c214b906a8544e7da3e3567f85a50..27bc11b0ccb802a045ed191c6f947c7053cc043d 100644
--- a/dash-fastapi-backend/module_admin/controller/user_controller.py
+++ b/dash-fastapi-backend/module_admin/controller/user_controller.py
@@ -201,10 +201,10 @@ async def export_system_user_template(request: Request, query_db: Session = Depe
@userController.post("/user/export", dependencies=[Depends(CheckUserInterfaceAuth('system:user:export'))])
@log_decorator(title='用户管理', business_type=5)
-async def export_system_user_list(request: Request, user_query: UserQueryModel, query_db: Session = Depends(get_db)):
+async def export_system_user_list(request: Request, user_query: UserQueryModel, query_db: Session = Depends(get_db), data_scope_sql: str = Depends(GetDataScope('SysUser'))):
try:
# 获取全量数据
- user_query_result = UserService.get_user_list_services(query_db, user_query)
+ user_query_result = UserService.get_user_list_services(query_db, user_query, data_scope_sql)
user_export_result = UserService.export_user_list_services(user_query_result)
logger.info('导出成功')
return streaming_response_200(data=bytes2file_response(user_export_result))
diff --git a/dash-fastapi-backend/module_admin/dao/user_dao.py b/dash-fastapi-backend/module_admin/dao/user_dao.py
index d7a0a505e59ca812f01462153c267228cc4254e8..c68b5dba0026100d242f88a3e9cd82639599c994 100644
--- a/dash-fastapi-backend/module_admin/dao/user_dao.py
+++ b/dash-fastapi-backend/module_admin/dao/user_dao.py
@@ -6,7 +6,7 @@ from module_admin.entity.do.dept_do import SysDept
from module_admin.entity.do.post_do import SysPost
from module_admin.entity.do.menu_do import SysMenu
from module_admin.entity.vo.user_vo import UserModel, UserRoleModel, UserPostModel, CurrentUserInfo, UserQueryModel, UserRoleQueryModel
-from utils.time_format_util import list_format_datetime, format_datetime_dict_list
+from utils.time_format_util import object_format_datetime, list_format_datetime, format_datetime_dict_list
from datetime import datetime, time
from typing import Union, List
@@ -55,11 +55,11 @@ class UserDao:
"""
query_user_basic_info = db.query(SysUser) \
.filter(SysUser.status == 0, SysUser.del_flag == 0, SysUser.user_id == user_id) \
- .distinct().all()
+ .distinct().first()
query_user_dept_info = db.query(SysDept).select_from(SysUser) \
.filter(SysUser.status == 0, SysUser.del_flag == 0, SysUser.user_id == user_id) \
.join(SysDept, and_(SysUser.dept_id == SysDept.dept_id, SysDept.status == 0, SysDept.del_flag == 0)) \
- .distinct().all()
+ .distinct().first()
query_user_role_info = db.query(SysRole).select_from(SysUser) \
.filter(SysUser.status == 0, SysUser.del_flag == 0, SysUser.user_id == user_id) \
.outerjoin(SysUserRole, SysUser.user_id == SysUserRole.user_id) \
@@ -85,8 +85,8 @@ class UserDao:
.order_by(SysMenu.order_num) \
.distinct().all()
results = dict(
- user_basic_info=list_format_datetime(query_user_basic_info),
- user_dept_info=list_format_datetime(query_user_dept_info),
+ user_basic_info=object_format_datetime(query_user_basic_info),
+ user_dept_info=object_format_datetime(query_user_dept_info),
user_role_info=list_format_datetime(query_user_role_info),
user_post_info=list_format_datetime(query_user_post_info),
user_menu_info=list_format_datetime(query_user_menu_info)
@@ -104,11 +104,11 @@ class UserDao:
"""
query_user_basic_info = db.query(SysUser) \
.filter(SysUser.del_flag == 0, SysUser.user_id == user_id) \
- .distinct().all()
+ .distinct().first()
query_user_dept_info = db.query(SysDept).select_from(SysUser) \
.filter(SysUser.del_flag == 0, SysUser.user_id == user_id) \
.join(SysDept, and_(SysUser.dept_id == SysDept.dept_id, SysDept.status == 0, SysDept.del_flag == 0)) \
- .distinct().all()
+ .distinct().first()
query_user_role_info = db.query(SysRole).select_from(SysUser) \
.filter(SysUser.del_flag == 0, SysUser.user_id == user_id) \
.outerjoin(SysUserRole, SysUser.user_id == SysUserRole.user_id) \
@@ -127,8 +127,8 @@ class UserDao:
.join(SysMenu, and_(SysRoleMenu.menu_id == SysMenu.menu_id, SysMenu.status == 0)) \
.distinct().all()
results = dict(
- user_basic_info=list_format_datetime(query_user_basic_info),
- user_dept_info=list_format_datetime(query_user_dept_info),
+ user_basic_info=object_format_datetime(query_user_basic_info),
+ user_dept_info=object_format_datetime(query_user_dept_info),
user_role_info=list_format_datetime(query_user_role_info),
user_post_info=list_format_datetime(query_user_post_info),
user_menu_info=list_format_datetime(query_user_menu_info)
diff --git a/dash-fastapi-backend/module_admin/entity/vo/user_vo.py b/dash-fastapi-backend/module_admin/entity/vo/user_vo.py
index 21310f766e2ae4ea4f9c65a434094726f4b18d65..ba79c0d54c732a4024968804fac5bfb599ce8472 100644
--- a/dash-fastapi-backend/module_admin/entity/vo/user_vo.py
+++ b/dash-fastapi-backend/module_admin/entity/vo/user_vo.py
@@ -128,8 +128,8 @@ class CurrentUserInfo(BaseModel):
"""
数据库返回当前用户信息
"""
- user_basic_info: List[Union[UserModel, None]]
- user_dept_info: List[Union[DeptModel, None]]
+ user_basic_info: Union[UserModel, None]
+ user_dept_info: Union[DeptModel, None]
user_role_info: List[Union[RoleModel, None]]
user_post_info: List[Union[PostModel, None]]
user_menu_info: Union[List, None]
diff --git a/dash-fastapi-backend/module_admin/service/login_service.py b/dash-fastapi-backend/module_admin/service/login_service.py
index 7a2f71b2e791b7de04f3b49e459027560ba261e0..ca6f8db254b8059e409691656c3ad7dab6668639 100644
--- a/dash-fastapi-backend/module_admin/service/login_service.py
+++ b/dash-fastapi-backend/module_admin/service/login_service.py
@@ -75,16 +75,16 @@ async def get_current_user(request: Request = Request, token: str = Depends(oaut
raise AuthException(data="", message="用户token不合法")
redis_token = await request.app.state.redis.get(f"{RedisInitKeyConfig.ACCESS_TOKEN.get('key')}:{session_id}")
# 此方法可实现同一账号同一时间只能登录一次
- # redis_token = await request.app.state.redis.get(f"{RedisInitKeyConfig.ACCESS_TOKEN.get('key')}:{user.user_basic_info[0].user_id}")
+ # redis_token = await request.app.state.redis.get(f"{RedisInitKeyConfig.ACCESS_TOKEN.get('key')}:{user.user_basic_info.user_id}")
if token == redis_token:
await request.app.state.redis.set(f"{RedisInitKeyConfig.ACCESS_TOKEN.get('key')}:{session_id}", redis_token,
ex=timedelta(minutes=JwtConfig.REDIS_TOKEN_EXPIRE_MINUTES))
- # await request.app.state.redis.set(f"{RedisInitKeyConfig.ACCESS_TOKEN.get('key')}:{user.user_basic_info[0].user_id}", redis_token,
+ # await request.app.state.redis.set(f"{RedisInitKeyConfig.ACCESS_TOKEN.get('key')}:{user.user_basic_info.user_id}", redis_token,
# ex=timedelta(minutes=JwtConfig.REDIS_TOKEN_EXPIRE_MINUTES))
return CurrentUserInfoServiceResponse(
- user=user.user_basic_info[0],
- dept=user.user_dept_info[0],
+ user=user.user_basic_info,
+ dept=user.user_dept_info,
role=user.user_role_info,
post=user.user_post_info,
menu=user.user_menu_info
diff --git a/dash-fastapi-backend/module_admin/service/user_service.py b/dash-fastapi-backend/module_admin/service/user_service.py
index 1d8260efbce5502c6350df3b411dc360f81962a4..eef7ed46f17bfdb47209261f9fc4545b693325f7 100644
--- a/dash-fastapi-backend/module_admin/service/user_service.py
+++ b/dash-fastapi-backend/module_admin/service/user_service.py
@@ -139,8 +139,8 @@ class UserService:
user = UserDao.get_user_detail_by_id(result_db, user_id=user_id)
return UserDetailModel(
- user=user.user_basic_info[0],
- dept=user.user_dept_info[0],
+ user=user.user_basic_info,
+ dept=user.user_dept_info,
role=user.user_role_info,
post=user.user_post_info
)
@@ -155,7 +155,7 @@ class UserService:
"""
reset_user = page_object.dict(exclude_unset=True)
if page_object.old_password:
- user = UserDao.get_user_detail_by_id(result_db, user_id=page_object.user_id).user_basic_info[0]
+ user = UserDao.get_user_detail_by_id(result_db, user_id=page_object.user_id).user_basic_info
if not PwdUtil.verify_password(page_object.old_password, user.password):
result = dict(is_success=False, message='旧密码不正确')
return CrudUserResponse(**result)
diff --git a/dash-fastapi-frontend/callbacks/app_c.py b/dash-fastapi-frontend/callbacks/app_c.py
index 0210e4328131ced648253e9eb0a4d104099bd07f..be94265f0957fa09d6374df9e389405cef43509f 100644
--- a/dash-fastapi-frontend/callbacks/app_c.py
+++ b/dash-fastapi-frontend/callbacks/app_c.py
@@ -28,7 +28,8 @@ def check_api_response(data):
# api拦截器——退出登录二次确认
@app.callback(
- Output('redirect-container', 'children', allow_duplicate=True),
+ [Output('redirect-container', 'children', allow_duplicate=True),
+ Output('token-container', 'data', allow_duplicate=True)],
Input('token-invalid-modal', 'okCounts'),
prevent_initial_call=True
)
@@ -41,10 +42,11 @@ def redirect_page(okCounts):
dcc.Location(
pathname='/login',
id='index-redirect'
- )
+ ),
+ None
]
- return dash.no_update
+ return [dash.no_update] * 2
# 应用初始化主题颜色
diff --git a/dash-fastapi-frontend/callbacks/layout_c/head_c.py b/dash-fastapi-frontend/callbacks/layout_c/head_c.py
index f462f7ce42653c603d025c5e33a816520454cfc7..a64910c398245d734ca71088cf97f08c1b6133f3 100644
--- a/dash-fastapi-frontend/callbacks/layout_c/head_c.py
+++ b/dash-fastapi-frontend/callbacks/layout_c/head_c.py
@@ -45,7 +45,8 @@ app.clientside_callback(
# 退出登录回调
@app.callback(
- Output('redirect-container', 'children', allow_duplicate=True),
+ [Output('redirect-container', 'children', allow_duplicate=True),
+ Output('token-container', 'data', allow_duplicate=True)],
Input('logout-modal', 'okCounts'),
prevent_initial_call=True
)
@@ -60,9 +61,10 @@ def logout_confirm(okCounts):
pathname='/login',
id='index-redirect'
),
+ None
]
- return dash.no_update
+ return [dash.no_update] * 2
# 全局页面重载回调
diff --git a/dash-fastapi-frontend/callbacks/monitor_c/job_c/job_c.py b/dash-fastapi-frontend/callbacks/monitor_c/job_c/job_c.py
index d0eb60a8b0b65cfd8b93a78d6756769dc4ffda4d..a7aa458f3e8234311b893b157f77d2ade209d03e 100644
--- a/dash-fastapi-frontend/callbacks/monitor_c/job_c/job_c.py
+++ b/dash-fastapi-frontend/callbacks/monitor_c/job_c/job_c.py
@@ -378,7 +378,7 @@ def job_confirm(confirm_trigger, modal_type, edit_row_info, form_value, form_lab
form_label_validate_info=[None if form_value_state.get(k) else f'{form_label_state.get(k)}不能为空!' for k in form_label_output_list],
modal_visible=dash.no_update,
operations=dash.no_update,
- api_check_token_trigger={'timestamp': time.time()},
+ api_check_token_trigger=dash.no_update,
global_message_container=fuc.FefferyFancyMessage('处理失败', type='error')
)
diff --git a/dash-fastapi-frontend/callbacks/system_c/config_c.py b/dash-fastapi-frontend/callbacks/system_c/config_c.py
index 47bf411f393be4afa1ad31e4d68422f8e95e725d..b13305931af0ee7a8cddc196c20ee5576707e772 100644
--- a/dash-fastapi-frontend/callbacks/system_c/config_c.py
+++ b/dash-fastapi-frontend/callbacks/system_c/config_c.py
@@ -351,7 +351,7 @@ def dict_type_confirm(confirm_trigger, modal_type, edit_row_info, form_value, fo
form_label_validate_info=[None if form_value_state.get(k) else f'{form_label_state.get(k)}不能为空!' for k in form_label_output_list],
modal_visible=dash.no_update,
operations=dash.no_update,
- api_check_token_trigger={'timestamp': time.time()},
+ api_check_token_trigger=dash.no_update,
global_message_container=fuc.FefferyFancyMessage('处理失败', type='error')
)
diff --git a/dash-fastapi-frontend/callbacks/system_c/dept_c.py b/dash-fastapi-frontend/callbacks/system_c/dept_c.py
index 41645cd2a5f92ac35f3b15628c5b36ac852d0946..57eb7873353df20ad3712db31041a0b03659a6ef 100644
--- a/dash-fastapi-frontend/callbacks/system_c/dept_c.py
+++ b/dash-fastapi-frontend/callbacks/system_c/dept_c.py
@@ -348,7 +348,7 @@ def dept_confirm(confirm_trigger, modal_type, edit_row_info, form_value, form_la
form_label_validate_info=[None if form_value_state.get(k) else f'{form_label_state.get(k)}不能为空!' for k in form_label_output_list],
modal_visible=dash.no_update,
operations=dash.no_update,
- api_check_token_trigger={'timestamp': time.time()},
+ api_check_token_trigger=dash.no_update,
global_message_container=fuc.FefferyFancyMessage('处理失败', type='error')
)
diff --git a/dash-fastapi-frontend/callbacks/system_c/dict_c/dict_c.py b/dash-fastapi-frontend/callbacks/system_c/dict_c/dict_c.py
index a2b87cc66a58361a2a2e5fcf4b494f38e989b60a..b557febb2de27c7cae0f35ab6167d656397b6b7e 100644
--- a/dash-fastapi-frontend/callbacks/system_c/dict_c/dict_c.py
+++ b/dash-fastapi-frontend/callbacks/system_c/dict_c/dict_c.py
@@ -355,7 +355,7 @@ def dict_type_confirm(confirm_trigger, modal_type, edit_row_info, form_value, fo
form_label_validate_info=[None if form_value_state.get(k) else f'{form_label_state.get(k)}不能为空!' for k in form_label_output_list],
modal_visible=dash.no_update,
operations=dash.no_update,
- api_check_token_trigger={'timestamp': time.time()},
+ api_check_token_trigger=dash.no_update,
global_message_container=fuc.FefferyFancyMessage('处理失败', type='error')
)
diff --git a/dash-fastapi-frontend/callbacks/system_c/dict_c/dict_data_c.py b/dash-fastapi-frontend/callbacks/system_c/dict_c/dict_data_c.py
index f5c98bc29a8717b594822dd9cdd92561408df2be..795cf07d95fdd7964353f0c2c6047f68258f7607 100644
--- a/dash-fastapi-frontend/callbacks/system_c/dict_c/dict_data_c.py
+++ b/dash-fastapi-frontend/callbacks/system_c/dict_c/dict_data_c.py
@@ -350,7 +350,7 @@ def dict_data_confirm(confirm_trigger, modal_type, edit_row_info, form_value, fo
form_label_validate_info=[None if form_value_state.get(k) else f'{form_label_state.get(k)}不能为空!' for k in form_label_output_list],
modal_visible=dash.no_update,
operations=dash.no_update,
- api_check_token_trigger={'timestamp': time.time()},
+ api_check_token_trigger=dash.no_update,
global_message_container=fuc.FefferyFancyMessage('处理失败', type='error')
)
diff --git a/dash-fastapi-frontend/callbacks/system_c/menu_c/components_c/button_type_c.py b/dash-fastapi-frontend/callbacks/system_c/menu_c/components_c/button_type_c.py
index 53da181b9c4b5e6a0845201ea350138062f59f27..7116953826d51579f7bd1df13efad100a2f4f2b7 100644
--- a/dash-fastapi-frontend/callbacks/system_c/menu_c/components_c/button_type_c.py
+++ b/dash-fastapi-frontend/callbacks/system_c/menu_c/components_c/button_type_c.py
@@ -90,7 +90,7 @@ def menu_confirm_button(confirm_trigger, modal_type, edit_row_info, parent_id, m
],
modal_visible=dash.no_update,
operations=dash.no_update,
- api_check_token_trigger={'timestamp': time.time()},
+ api_check_token_trigger=dash.no_update,
global_message_container=fuc.FefferyFancyMessage('处理失败', type='error')
)
diff --git a/dash-fastapi-frontend/callbacks/system_c/menu_c/components_c/content_type_c.py b/dash-fastapi-frontend/callbacks/system_c/menu_c/components_c/content_type_c.py
index d18c71630026c0293bc6514de8879b13b652c9d6..967ba75388d7605812963cffa9aaeb5985b10a39 100644
--- a/dash-fastapi-frontend/callbacks/system_c/menu_c/components_c/content_type_c.py
+++ b/dash-fastapi-frontend/callbacks/system_c/menu_c/components_c/content_type_c.py
@@ -98,7 +98,7 @@ def menu_confirm_content(confirm_trigger, modal_type, edit_row_info, parent_id,
],
modal_visible=dash.no_update,
operations=dash.no_update,
- api_check_token_trigger={'timestamp': time.time()},
+ api_check_token_trigger=dash.no_update,
global_message_container=fuc.FefferyFancyMessage('处理失败', type='error')
)
diff --git a/dash-fastapi-frontend/callbacks/system_c/menu_c/components_c/menu_type_c.py b/dash-fastapi-frontend/callbacks/system_c/menu_c/components_c/menu_type_c.py
index f37b79231973b06560bdb14fdd2e761dbd836edb..8242bb2014aa310a461f2183f111c5dc1b83eef6 100644
--- a/dash-fastapi-frontend/callbacks/system_c/menu_c/components_c/menu_type_c.py
+++ b/dash-fastapi-frontend/callbacks/system_c/menu_c/components_c/menu_type_c.py
@@ -104,7 +104,7 @@ def menu_confirm_menu(confirm_trigger, modal_type, edit_row_info, parent_id, men
],
modal_visible=dash.no_update,
operations=dash.no_update,
- api_check_token_trigger={'timestamp': time.time()},
+ api_check_token_trigger=dash.no_update,
global_message_container=fuc.FefferyFancyMessage('处理失败', type='error')
)
diff --git a/dash-fastapi-frontend/callbacks/system_c/notice_c.py b/dash-fastapi-frontend/callbacks/system_c/notice_c.py
index 310fb8028550105b27340645f0c5b5ca5bbd814f..a0910f42464865a7b11c3b5b0cdff2e1e422484b 100644
--- a/dash-fastapi-frontend/callbacks/system_c/notice_c.py
+++ b/dash-fastapi-frontend/callbacks/system_c/notice_c.py
@@ -500,7 +500,7 @@ def notice_confirm(confirm_trigger, modal_type, edit_row_info, notice_title, not
notice_type_form_help=None if notice_type else '请输入公告类型!',
modal_visible=dash.no_update,
operations=dash.no_update,
- api_check_token_trigger={'timestamp': time.time()},
+ api_check_token_trigger=dash.no_update,
global_message_container=fuc.FefferyFancyMessage('处理失败', type='error')
)
diff --git a/dash-fastapi-frontend/callbacks/system_c/post_c.py b/dash-fastapi-frontend/callbacks/system_c/post_c.py
index 1f8985a4710a2765ff8878dbfe4aa4f78363a100..07712ab632ff930d6a26502cede7398732f08cd5 100644
--- a/dash-fastapi-frontend/callbacks/system_c/post_c.py
+++ b/dash-fastapi-frontend/callbacks/system_c/post_c.py
@@ -339,7 +339,7 @@ def post_confirm(confirm_trigger, modal_type, edit_row_info, form_value, form_la
form_label_validate_info=[None if form_value_state.get(k) else f'{form_label_state.get(k)}不能为空!' for k in form_label_output_list],
modal_visible=dash.no_update,
operations=dash.no_update,
- api_check_token_trigger={'timestamp': time.time()},
+ api_check_token_trigger=dash.no_update,
global_message_container=fuc.FefferyFancyMessage('处理失败', type='error')
)
diff --git a/dash-fastapi-frontend/callbacks/system_c/role_c/role_c.py b/dash-fastapi-frontend/callbacks/system_c/role_c/role_c.py
index e382657eb3fbd10a96e48fdb7fc45bafebc483af..1d751463e11f76f356bdb3fb1bb4b9dd4427719e 100644
--- a/dash-fastapi-frontend/callbacks/system_c/role_c/role_c.py
+++ b/dash-fastapi-frontend/callbacks/system_c/role_c/role_c.py
@@ -554,7 +554,7 @@ def role_confirm(confirm_trigger, modal_type, edit_row_info, form_value, form_la
form_label_validate_info=[None if form_value_state.get(k) else form_label_state.get(k) for k in form_label_output_list],
modal_visible=dash.no_update,
operations=dash.no_update,
- api_check_token_trigger={'timestamp': time.time()},
+ api_check_token_trigger=dash.no_update,
global_message_container=fuc.FefferyFancyMessage('处理失败', type='error')
)
diff --git a/dash-fastapi-frontend/callbacks/system_c/user_c/profile_c/reset_pwd_c.py b/dash-fastapi-frontend/callbacks/system_c/user_c/profile_c/reset_pwd_c.py
index a33a8123895c354855455e29aa49aa838b9c3e30..7fe72373ffa566e039cd43bda47b6a47fb1305d9 100644
--- a/dash-fastapi-frontend/callbacks/system_c/user_c/profile_c/reset_pwd_c.py
+++ b/dash-fastapi-frontend/callbacks/system_c/user_c/profile_c/reset_pwd_c.py
@@ -76,7 +76,7 @@ def reset_submit_user_info(reset_click, old_password, new_password, confirm_pass
None if old_password else '请输入旧密码!',
None if new_password else '请输入新密码!',
None if confirm_password else '请输入确认密码!',
- {'timestamp': time.time()},
+ dash.no_update,
fuc.FefferyFancyMessage('修改失败', type='error'),
]
diff --git a/dash-fastapi-frontend/callbacks/system_c/user_c/profile_c/user_info_c.py b/dash-fastapi-frontend/callbacks/system_c/user_c/profile_c/user_info_c.py
index 14a882bfd109ec6b7b66014f990db036429b25bb..087434d9e950a4992dee78dc933ae761b5b52570 100644
--- a/dash-fastapi-frontend/callbacks/system_c/user_c/profile_c/user_info_c.py
+++ b/dash-fastapi-frontend/callbacks/system_c/user_c/profile_c/user_info_c.py
@@ -64,7 +64,7 @@ def reset_submit_user_info(reset_click, nick_name, phonenumber, email, sex):
None if nick_name else '请输入用户昵称!',
None if phonenumber else '请输入手机号码!',
None if email else '请输入邮箱!',
- {'timestamp': time.time()},
+ dash.no_update,
fuc.FefferyFancyMessage('修改失败', type='error'),
]
diff --git a/dash-fastapi-frontend/callbacks/system_c/user_c/user_c.py b/dash-fastapi-frontend/callbacks/system_c/user_c/user_c.py
index b5c03cc00c685ca4931f429714bb064a3a57c6b0..d521334a268fe90abe93159dea9562bb44a4f776 100644
--- a/dash-fastapi-frontend/callbacks/system_c/user_c/user_c.py
+++ b/dash-fastapi-frontend/callbacks/system_c/user_c/user_c.py
@@ -358,7 +358,7 @@ def usr_add_confirm(add_confirm, post, role, form_value, form_label):
form_label_validate_info=[None if form_value_state.get(k) else f'{form_label_state.get(k)}不能为空!' for k in form_label_output_list],
modal_visible=dash.no_update,
operations=dash.no_update,
- api_check_token_trigger={'timestamp': time.time()},
+ api_check_token_trigger=dash.no_update,
global_message_container=fuc.FefferyFancyMessage('新增失败', type='error')
)
@@ -513,7 +513,7 @@ def usr_edit_confirm(edit_confirm, edit_row_info, post, role, form_value, form_l
form_label_validate_info=[None if form_value_state.get(k) else f'{form_label_state.get(k)}不能为空!' for k in form_label_output_list],
modal_visible=dash.no_update,
operations=dash.no_update,
- api_check_token_trigger={'timestamp': time.time()},
+ api_check_token_trigger=dash.no_update,
global_message_container=fuc.FefferyFancyMessage('编辑失败', type='error')
)
diff --git a/dash-fastapi-frontend/views/layout/components/head.py b/dash-fastapi-frontend/views/layout/components/head.py
index 95efcf85bada766ed40de518c6a4f3a5f48e2977..5f1e7fde23c89728dcd369f5519c616df620defc 100644
--- a/dash-fastapi-frontend/views/layout/components/head.py
+++ b/dash-fastapi-frontend/views/layout/components/head.py
@@ -50,7 +50,7 @@ def render_head_content():
'display': 'flex',
'alignItems': 'center'
},
- flex='24'
+ flex='21'
),
# 页首中部搜索区域
@@ -87,6 +87,23 @@ def render_head_content():
flex='6'
),
+ # 页首开源项目地址
+ fac.AntdCol(
+ html.A(
+ html.Img(
+ src='https://gitee.com/insistence2022/dash-fastapi-admin/badge/star.svg?theme=dark'
+ ),
+ href='https://gitee.com/insistence2022/dash-fastapi-admin',
+ target='_blank'
+ ),
+ style={
+ 'height': '100%',
+ 'display': 'flex',
+ 'alignItems': 'center'
+ },
+ flex='3'
+ ),
+
# 页首右侧用户信息区域
fac.AntdCol(
fac.AntdSpace(
diff --git a/dash-fastapi-frontend/views/system/user/profile/__init__.py b/dash-fastapi-frontend/views/system/user/profile/__init__.py
index b6fca1ddb368bfd118dd8264879210509d019371..74eafbf4f9b356137a0e60f79b4ca392e6a834c5 100644
--- a/dash-fastapi-frontend/views/system/user/profile/__init__.py
+++ b/dash-fastapi-frontend/views/system/user/profile/__init__.py
@@ -65,7 +65,8 @@ def render(button_perms):
fac.AntdIcon(icon='antd-cluster'),
fac.AntdText('所属部门'),
html.Div(
- session.get('dept_info').get('dept_name') + "/" + ','.join(
+ session.get('dept_info').get('dept_name') if session.get(
+ 'dept_info') else "" + "/" + ','.join(
[item.get('post_name') for item in
session.get('post_info')]),
id='profile_c-dept',