档案管理系统按上门次数收费标准的实操配置及落地指南

本文提供从零搭建可实现“档案管理系统按上门次数收费”的实操指南,全程零门槛,所有代码可直接复制运行,无需额外部署数据库服务。

1. 环境搭建(零依赖部署)

所需工具仅为Python 3.8及以上版本,按以下步骤操作:

1.1 安装Python

从官网(https://www.python.org/downloads/)下载对应操作系统的安装包,安装时必须勾选Add Python to PATH,否则pip命令无法使用。完成后在终端输入python --version,出现版本号即安装成功。

1.2 创建虚拟环境(推荐)

虚拟环境可隔离项目依赖,避免与全局环境冲突,执行以下命令:

python -m venv venv

激活虚拟环境:

  • Windows:venv\Scripts\activate
  • Mac/Linux:source venv/bin/activate

1.3 安装项目依赖

执行以下命令安装轻量Web框架Flask及数据库插件:

pip install flask flask-sqlalchemy

2. 数据库模型设计(对应上门收费场景)

采用SQLite数据库,无需额外安装服务,直接通过文件存储数据。项目根目录创建app.py,写入以下完整代码的数据库部分:

档案管理系统按上门次数收费标准的实操配置及落地指南

from flask_sqlalchemy import SQLAlchemy
from datetime import datetime
db = SQLAlchemy()
上门收费记录模型
class VisitRecord(db.Model):
id = db.Column(db.Integer, primary_key=True)
customer_name = db.Column(db.String(50), nullable=False)   客户名称
visit_date = db.Column(db.DateTime, nullable=False)         上门日期
visit_fee = db.Column(db.Float, nullable=False)             单次上门费用
total_fee = db.Column(db.Float, nullable=False, default=0.0)   累计收费
create_time = db.Column(db.DateTime, default=datetime.now)  记录创建时间

3. 核心功能实现(按上门次数自动计费)

继续在app.py中写入Web服务及核心路由,实现上门记录录入与自动计费逻辑,所有代码可直接复制:

from flask import Flask, request, render_template_string
app = Flask(__name__)
app.config['SQLALCHEMY_DATABASE_URI'] = 'sqlite:///archive_fee.db'
app.config['SQLALCHEMY_TRACK_MODIFICATIONS'] = False
db.init_app(app)
上门记录录入路由
@app.route('/visit', methods=['GET', 'POST'])
def add_visit():
if request.method == 'POST':
获取表单数据
customer = request.form['customer_name']
visit_date = datetime.strptime(request.form['visit_date'], '%Y-%m-%d')
fee = float(request.form['visit_fee'])
计算该客户累计收费
last_record = VisitRecord.query.filter_by(customer_name=customer).order_by(VisitRecord.id.desc()).first()
current_total = (last_record.total_fee if last_record else 0.0) + fee
保存记录
new_visit = VisitRecord(
customer_name=customer,
visit_date=visit_date,
visit_fee=fee,
total_fee=current_total
)
db.session.add(new_visit)
db.session.commit()
return f"记录提交成功!{customer}累计收费:{current_total:.2f}元"
简易录入表单
return render_template_string('''
客户名称:
上门日期(YYYY-MM-DD):
单次上门费用(元):
''') if __name__ == '__main__': 初始化数据库表 with app.app_context(): db.create_all() 启动服务 app.run(debug=True)

核心逻辑说明:每次录入上门记录时,自动查询该客户最近一次的累计收费,加上本次单次费用生成新的累计值,完全匹配按上门次数收费的需求。

4. 实操验证与日常使用

4.1 启动系统

确保虚拟环境已激活,在终端执行:

python app.py

终端出现Running on http://127.0.0.1:5000/即启动成功。

4.2 录入测试数据

打开浏览器访问http://127.0.0.1:5000/visit,填写表单:

  • 客户名称:张三
  • 上门日期:2024-05-20
  • 单次上门费用:150

提交后页面会显示“记录提交成功!张三累计收费:150.00元”,重复提交同客户同费用150,累计收费变为300.00元,务必核对total_fee的自动计算是否正确,确保收费数据无差错。

5. 收费数据导出与月度统计

如需导出月度收费数据,可在app.py中添加以下路由,实现月度统计:

from flask import Response
import csv
from datetime import datetime
@app.route('/stat/monthly', methods=['GET'])
def monthly_stat():
获取当前年月
current_year = datetime.now().year
current_month = datetime.now().month
按月分组统计
stats = db.session.query(
VisitRecord.customer_name,
db.func.count(VisitRecord.id).label('visit_count'),
db.func.sum(VisitRecord.visit_fee).label('total_income')
).filter(
db.extract('year', VisitRecord.visit_date) == current_year,
db.extract('month', VisitRecord.visit_date) == current_month
).group_by(VisitRecord.customer_name).all()
生成CSV文件
def generate():
data = [['客户名称', '上门次数', '当月总收费']]
for s in stats:
data.append([s.customer_name, s.visit_count, f"{s.total_income:.2f}"])
for row in data:
yield ','.join(row) + '\n'
return Response(generate(), mimetype='text/csv', headers={'Content-Disposition': 'attachment; filename="月度档案收费统计.csv"'})

重启服务后,访问http://127.0.0.1:5000/stat/monthly即可下载当月按上门次数统计的收费CSV文件,可直接用于财务对账。

AI咨询
热线电话

028-85154420

15388110056

全国售前咨询电话

扫码咨询
安答联动微信公众号二维码

微信扫码关注安答联动

申请试用
热线电话
申请试用

安答联动档案管理系统