基于Flask + Vue的资产管理系统实现
前述
基于Flask 和Vue实现前后端分离的项目,Flask相对于django轻便很多,插件化的开发方式也很方便,可以基于此项目进行二开,已经做好了权限、token认证、数据库操作管理、与前端如何进行交互,代码结构性很好,基本的登录、注册、菜单展示、数据展示,分页等都可以直接拿来用,看一遍就可以知道整个交互流程,上手很简单。
介绍
【vuejs|基于Flask + Vue前后端分离的资产管理系统实现】本文所设计与实现的资产管理系统,是一个可实际应用于公司内部的管理系统,着力于实现资产管理自动化,从而提高公司生产效率。本系统能够管理部门、人员及各种资产,让资产的信息电子化,提供了资产数据统计功能,方便管理层和员工实时掌握资产使用情况,从而为资产采购提供决策。
本系统采用前后端分离架构,前端使用html语言、vuejs、element-ui框架。后端使用python语言,Flask框架实现服务端的业务逻辑;数据层使用Flask比较流行的第三方库SqlAlchmy,提供了数据表的增删查改接口。本文中将详细介绍系统应用的技术综述、需求、设计以及过程实现。
关键词:资产管理、Python语言、Flask框架、Html语言、Vuejs框架
目 录
- 引言 3
1.1. 项目背景 3
1.2. 国内外资产管理系统的发展概况 3
1.3. 本文主要工作 3
1.4. 本文的组织结构 4 - 相关技术综述 4
2.1. Flask框架 4
2.1.1. Flask 框架简介 5
2.1.2. Flask 框架应用 5
2.2. Vuejs框架 6
2.2.1. Vuejs 简介 6
2.2.2. Vuejs 应用 6
2.3. 前端与后端的交互 8
2.4. SQLAlchemy 数据库工具 9
2.5. 本章小结 10 - 资产管理系统的需求分析 10
3.1. 系统范围 10
3.2. 需求分析 10
3.3. 本章小结 13 - 资产管理系统的设计 13
4.1. 架构设计 13
4.2. 模块设计 15
4.3. 数据库设计 16
4.4. 本章小结 18 - 资产管理系统的实现 18
5.1. 开发环境与系统依赖 19
5.2. 基于Vuejs框架的前端实现 19
5.2.1. 组件模块实现 19
5.2.2. 接口模块实现 20
5.3. 基于Flask框架的后台实现 21
5.3.1. 启动模块的实现 21
5.3.2. 数据模型模块的实现 22
5.3.3. DAO模块的实现 22
5.3.4. 服务模块 23
5.3.5. 邮件通知的实现 25
5.4. 本章小结 26 - 总结与展望 26
6.1. 总结 27
6.2. 工作展望 27
致 谢 28 - 版权及论文原创性说明 29
参考文献 30
文章图片
文章图片
文章图片
文章图片
文章图片
文章图片
文章图片
项目结构
后端项目结构
文章图片
```python
from app import db
from lib.database import CRUDModel
from lib.database import Model
from lib.database import SoftDeleteMixinclass AssetClass(Model):
"""
资产类别表
"""
__tablename__ = 'asset'code = db.Column(db.String(125), unique=True, primary_key=True, comment="主键")
name = db.Column(db.String(125), nullable=True, unique=True, comment="资产类别")
terminals = db.relationship('TerminalInformation', backref='terminal_asset', lazy='dynamic')
servers = db.relationship('ServerInformation', backref='server_asset', lazy='dynamic')
domains = db.relationship('DomainNameInformation', backref='domain_asset', lazy='dynamic')class TerminalInformation(Model):
"""
终端信息资产表
"""
__tablename__ = 'terminal'code = db.Column(db.String(125), unique=True, primary_key=True, comment="主键")
modelname = db.Column(db.String(125), nullable=True, comment="机型名称")
brand = db.Column(db.String(125), nullable=True, comment="品牌")
user_id = db.Column(db.Integer, db.ForeignKey("user.id"))
asset_id = db.Column(db.Integer, db.ForeignKey("asset.id"))def get_info(self):
_info = {
'id': self.id,
'code': self.code,
'modelname': self.modelname,
'brand': self.brand,
'create_time': self.created_at.strftime('%Y-%m-%d %H:%M:%S'),
'user': self.terminal_user.username if self.terminal_user else '',
'asset': self.terminal_asset.name if self.terminal_asset else '',
}
return _infoclass ServerInformation(Model):
"""
服务器信息资产表
"""
__tablename__ = 'server'code = db.Column(db.String(125), unique=True, primary_key=True, comment="主键")
servername = db.Column(db.String(125), nullable=True, comment="系统名称")
brand = db.Column(db.String(125), nullable=True, comment="品牌")
user_id = db.Column(db.Integer, db.ForeignKey("user.id"))
asset_id = db.Column(db.Integer, db.ForeignKey("asset.id"))def get_info(self):
_info = {
'id': self.id,
'code': self.code,
'servername': self.servername,
'brand': self.brand,
'create_time': self.created_at.strftime('%Y-%m-%d %H:%M:%S'),
'user': self.server_user.username if self.server_user else '',
'asset': self.server_asset.name if self.server_asset else '',
}
return _infoclass DomainNameInformation(Model):
"""
域名信息资产表
"""
__tablename__ = 'domain'code = db.Column(db.String(125), unique=True, primary_key=True, comment="主键")
urlname = db.Column(db.String(125), nullable=True, comment="名称")
user_id = db.Column(db.Integer, db.ForeignKey("user.id"))
asset_id = db.Column(db.Integer, db.ForeignKey("asset.id"))def get_info(self):
_info = {
'id': self.id,
'code': self.code,
'urlname': self.urlname,
'create_time': self.created_at.strftime('%Y-%m-%d %H:%M:%S'),
'user': self.domain_user.username if self.domain_user else '',
'asset': self.domain_asset.name if self.domain_asset else '',
}
return _infoclass AssetUseRecord(Model):
"""
资产使用记录表
"""
__tablename__ = 'record'asset_type = db.Column(db.String(125), comment="资产类型")
asset_id = db.Column(db.Integer, comment="资产ID")
user_id = db.Column(db.Integer, db.ForeignKey("user.id"))
audit_status = db.Column(db.String(125), nullable=True, comment="审核状态 0-待审核,1-审核通过,2-审核不通过")
前端项目结构
![在这里插入图片描述](https://img-blog.csdnimg.cn/44f9723068644594967648d7c6d2dee4.png)
推荐阅读
- flask|(零八)Flask有手就行——数据库迁移Flask-Migrate
- python|Python序列以及切片操作
- flask框架快速入门|【flask高级】从源码深入理解flask的应用上下文和请求上下文
- CTF|Flask SSTI注入学习
- FDTD学习笔记|Lumerical官方案例、FDTD时域有限差分法仿真学习(十五)——y分支的逆向设计(Inverse design of y-branch)
- Vue|Vue学习
- python|LeetCode 括号生成
- 前端|瞎几把总结一波
- 笔记|解决ModularNotFoundError: No module named “cv2.aruco“