基于Flask + Vue前后端分离的资产管理系统实现

基于Flask + Vue的资产管理系统实现

前述

基于Flask 和Vue实现前后端分离的项目,Flask相对于django轻便很多,插件化的开发方式也很方便,可以基于此项目进行二开,已经做好了权限、token认证、数据库操作管理、与前端如何进行交互,代码结构性很好,基本的登录、注册、菜单展示、数据展示,分页等都可以直接拿来用,看一遍就可以知道整个交互流程,上手很简单。

介绍

本文所设计与实现的资产管理系统,是一个可实际应用于公司内部的管理系统,着力于实现资产管理自动化,从而提高公司生产效率。本系统能够管理部门、人员及各种资产,让资产的信息电子化,提供了资产数据统计功能,方便管理层和员工实时掌握资产使用情况,从而为资产采购提供决策。
本系统采用前后端分离架构,前端使用html语言、vuejs、element-ui框架。后端使用python语言,Flask框架实现服务端的业务逻辑;数据层使用Flask比较流行的第三方库SqlAlchmy,提供了数据表的增删查改接口。本文中将详细介绍系统应用的技术综述、需求、设计以及过程实现。

关键词:资产管理、Python语言、Flask框架、Html语言、Vuejs框架

目 录

  1. 引言 3
    1.1. 项目背景 3
    1.2. 国内外资产管理系统的发展概况 3
    1.3. 本文主要工作 3
    1.4. 本文的组织结构 4
  2. 相关技术综述 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
  3. 资产管理系统的需求分析 10
    3.1. 系统范围 10
    3.2. 需求分析 10
    3.3. 本章小结 13
  4. 资产管理系统的设计 13
    4.1. 架构设计 13
    4.2. 模块设计 15
    4.3. 数据库设计 16
    4.4. 本章小结 18
  5. 资产管理系统的实现 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
  6. 总结与展望 26
    6.1. 总结 27
    6.2. 工作展望 27
    致 谢 28
  7. 版权及论文原创性说明 29
    参考文献 30

项目功能截图

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

项目结构

后端项目结构
在这里插入图片描述


```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)


  • 2
    点赞
  • 18
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 4
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

lbxoqy

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值