基于Flask 和Vue实现前后端分离的项目,Flask相对于django轻便很多,插件化的开发方式也很方便,可以基于此项目进行二开,已经做好了权限、token认证、数据库操作管理、与前端如何进行交互,代码结构性很好,基本的登录、注册、菜单展示、数据展示,分页等都可以直接拿来用,看一遍就可以知道整个交互流程,上手很简单。
本文所设计与实现的资产管理系统,是一个可实际应用于公司内部的管理系统,着力于实现资产管理自动化,从而提高公司生产效率。本系统能够管理部门、人员及各种资产,让资产的信息电子化,提供了资产数据统计功能,方便管理层和员工实时掌握资产使用情况,从而为资产采购提供决策。
本系统采用前后端分离架构,前端使用html语言、vuejs、element-ui框架。后端使用python语言,Flask框架实现服务端的业务逻辑;数据层使用Flask比较流行的第三方库SqlAlchmy,提供了数据表的增删查改接口。本文中将详细介绍系统应用的技术综述、需求、设计以及过程实现。
关键词:资产管理、Python语言、Flask框架、Html语言、Vuejs框架
目 录
```python
from app import db
from lib.database import CRUDModel
from lib.database import Model
from lib.database import SoftDeleteMixin
class 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 _info
class 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 _info
class 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 _info
class 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)