Featured image of post 狼的小卖部 - 基于 Flask + Jinja2 的进销存与销售管理系统

狼的小卖部 - 基于 Flask + Jinja2 的进销存与销售管理系统

阅读次数:

[TOC]

简介

我就是感觉这样一个东西应该会有,但是一直找不到,所以干脆自己写个…一个使用Python的简约销售管理系统,支持商品、分类、库存、销售流水、用户权限、批量导入、统计报表、仪表盘等功能。适合小规模使用,数据支持sqlite或mysql存储,可能会在某些情况下有用处。 项目地址:https://github.com/tamakyi/simple-sales-system

一些截图

  • 仪表盘 image
  • 商品管理 image
  • 商品导入 image
  • 进销存 image
  • 移动端进销存 image
  • 商品分类 image
  • 用户管理 image
  • 操作记录 image

功能特色

  • 商品管理(增删改查,支持图片、批量导入)
  • 分类管理
  • 进销存:商品表格展示,直接在行内录入进货/销售(针对移动端单独做优化)
  • 销售流水、历史/今日销售、库存统计
  • 销售排行榜、分类饼图、销售数据卡片
  • 用户权限(管理员/普通用户/审核)
  • 操作日志
  • 导出销售报表(Excel)
  • 支持分页、搜索、图片外链或本地上传
  • 可选使用sql轻量化存储数据或使用mysql存储
  • 网页公告
  • 背景图片
  • 网页跟踪脚本

快速开始

1. 安装依赖

pip install -r requirements.txt

2.复制.env.sample为.env并编辑

UPLOAD_FOLDER = 'static/uploads' #图片上传路径
SECRET_KEY = mysecretkey #安全密钥,建议替换
SQLALCHEMY_DATABASE_URI = 'sqlite:///sales.db' # 使用SQLITE作为数据库时使用
SQLALCHEMY_DATABASE_URI = mysql+pymysql://root:password@localhost:3306/test_sale # 使用MYSQL作为数据库时使用
MAX_CONTENT_LENGTH = 2097152 #最大上传大小,默认2M,即2*1024*1024
PER_PAGE = 10 # 商品页面每页体现的商品数量
BACKGROUND_IMAGE_URL=https://xxx.com/xxx.png # 默认背景图片地址
BACKGROUND_OPACITY=0.1 # 背景图片不透明度,范围0-1,越接近0越透明。
BACKGROUND_SIZE=cover #背景图片尺寸,默认cover即可,详情查看web css中关于background_size的参数说明。
DASHBOARD_ANNOUNCEMENT="请注意:系统将于本周五晚进行维护,届时可能无法访问。"
ANNOUNCEMENT_ENABLED=True  # 控制公告是否显示
ANALYZE_SCRIPT="" #分析脚本,建议使用umami
ANALYZE_ENABLE=True #开启分析脚本功能

2. 启动项目

python app-mysql.py #使用mysql存储数据
python app-sqlite.py #使用sqlite存储数据

3. 访问地址

浏览器打开 http://localhost:5000/

4. 初始管理员

  • 用户名:admin
  • 密码:admin

批量导入商品

支持 CSV 批量导入,需包含下列列名:

  • 商品名、单价、库存、分类

示例见 sample_products.csv。 网页内支持直接导出模板文件,修改好导入即可实现批量导入。

测试

  • 当前已在Debian12 + conda python 3.11 下测试通过。
本博客已稳定运行
使用 Hugo 构建