大家好,我是java1234_小锋老师,看到一个不错的基于Python的Flask+Vue物业管理系统【论文+源码+SQL脚本】,分享下哈。
项目视频演示
https://www.bilibili.com/video/BV1AEqpBFExf/
项目介绍
本文首先实现了基于Python的Flask+Vue物业管理系统技术的发展随后依照传统的软件开发流程,最先为系统挑选适用的言语和软件开发平台,依据需求分析开展控制模块制做和数据库查询构造设计,随后依据系统整体功能模块的设计,制作系统的功能模块图、E-R图。随后,设计框架,依据设计的框架撰写编码,完成系统的每个功能模块。最终,对基本系统开展了检测,包含软件性能测试、单元测试和性能指标。测试结果表明,该系统能够实现所需的功能,运行状况尚可并无明显缺点。
系统展示








部分代码
import logging
from flask import Blueprint, request
from extensions import db
from util.make_menu_tree import build_menu_tree
from menu.model import SysMenu
from util.security import permission_required
from util.status_code import response, SUCCESS_CODE, ERROR_CODE
menu_print = Blueprint('menu_print',__name__,url_prefix='/api/menu')
logging.basicConfig(level=logging.INFO, format='%(asctime)s - %(levelname)s - %(message)s')
def to_list_(menu):
dict_users = {
"menu_id": menu.get("menuId"),
"parent_id": menu.get("parentId"),
"menu_label": menu.get("menuLabel"),
"menu_code": menu.get("menuCode"),
"name": menu.get("name"),
"path": menu.get("path"),
"url": menu.get("url"),
"type": menu.get("type"),
"icon": menu.get("icon"),
"order_num": menu.get("orderNum"),
"remark": menu.get("remark"),
"parent_name": menu.get("parentName")
}
return dict_users
@menu_print.route('/list',methods=['GET'])
@permission_required('sys:sysMenuList')
def get_menu_list():
"""
查询所有菜单,并构造树形结构返回
"""
menu_list = SysMenu.query.order_by(SysMenu.menu_id).all()
menu_list=[x.to_list() for x in menu_list]
res_menu_list = build_menu_tree(menu_list)
return response("成功", SUCCESS_CODE, data=res_menu_list)
@menu_print.route('',methods=['PUT'])
@permission_required('sys:menu:edit')
def update_menu():
"""
修改菜单
"""
new_menu = request.get_json()
try:
old_menu=SysMenu.query.filter_by(menu_id=new_menu['menuId']).first()
if old_menu:
# 更新这条
SysMenu.query.filter_by(menu_id=new_menu['menuId']).update(to_list_(new_menu))
db.session.commit()
else:
return response("菜单不存在", ERROR_CODE)
except:
db.session.rollback()
return response("修改失败", ERROR_CODE)
return response("修改成功", SUCCESS_CODE)
@menu_print.route('<int:menu_id>',methods=['DELETE'])
@permission_required('sys:menu:delete')
def delete_menu(menu_id):
"""
删除菜单
"""
try:
menu = SysMenu.query.filter_by(menu_id=menu_id).first()
if menu:
SysMenu.query.filter_by(menu_id=menu_id).delete()
SysMenu.query.filter_by(parent_id=menu_id).delete()
db.session.commit()
else:
return response("菜单不存在", ERROR_CODE)
except:
db.session.rollback()
return response("删除失败", ERROR_CODE)
return response("删除成功", SUCCESS_CODE)
def make_menu_tree( menus, parent_id):
"""
递归构造树形菜单
"""
result = []
for menu in menus:
if menu['parentId'] == parent_id:
children = make_menu_tree(menus, menu['menuId'])
if children:
menu['children'] = children
result.append(menu)
return result
@menu_print.route('/parent',methods=['GET'])
@permission_required('sys:sysMenuList')
def get_parent_list():
"""
查询上级菜单,并构造树形结构返回
"""
# 查询符合条件的菜单,并按 order_num 升序排序
menus = SysMenu.query.order_by(SysMenu.order_num.asc()).all()
menus = [menu.to_list() for menu in menus]
# 添加顶级菜单节点
top_menu = {
"menuId": 0,
"parentId": -1,
"menuLabel":"顶级菜单"
}
menus.append(top_menu)
# 构造树形数据
menu_tree = make_menu_tree(menus, -1)
return response("成功", SUCCESS_CODE, data=menu_tree)
@menu_print.route('',methods=['POST'])
@permission_required('sys:menu:add')
def add_menu():
"""
添加菜单
"""
mjson = request.get_json()
new_menu = SysMenu(
parent_id=mjson['parentId'],
menu_label=mjson['menuLabel'],
menu_code=mjson['menuCode'],
name=mjson['name'],
path=mjson['path'],
url=mjson['url'],
type=mjson['type'],
icon=mjson['icon'],
remark=mjson['remark'],
parent_name=mjson['parentName'],
)
try:
db.session.add(new_menu)
db.session.commit()
return response("添加成功", SUCCESS_CODE, data=new_menu.to_list())
except Exception as e:
print(e)
db.session.rollback()
return response("添加失败", ERROR_CODE)
源码下载
链接:https://pan.baidu.com/s/1UtYnwCBwky5iOIOLUp6FYA?pwd=1234
提取码:1234

43万+






