运营数据管理系统前端开发记录
2025-3-27
最近刚学习完后台管理结构,突然就安排了个独立的管理系统项目。这不巧了吗?
当然,后端也是我负责。因为只熟 Node,express,所以用了 Node 写后端。
sql 脚本都是现成的,但是比较乱。一些条件查询需要自己拼接 sql 语句。
顺便,后端管理架构文章:文档
1. 需求分析
需求很简单,就是运营经常需要查询一些学生和租户(各个学校)数据。之前都是安排个后端同事直接写 sql 查询,然后导出 excel。
领导嫌比较麻烦,就想做个管理系统。基本只需要查询功能,不需要增删改。还需要导出 excel 表格。
2. 技术选型
毫无疑问直接选了刚学完的管理系统模版:Vue3 + Ts + vite + pinia + element-plus。
后端 Node + express + mysql + exceljs
需要的页面增增删删,很快就能完成。
3. 开发过程简述
前端部分
这个没有太多好说的,主要就是把路由修改好,添加相应的页面,写好 api 接口。
excel 导出的地方,模板中有导出的方法,需要后端配合以 blob 格式传回 excel 文件。
后端部分
因为功能比较单一,所以只分了控制层,数据管理层。
控制层控制路由、数据返回的格式。
数据层主要负责拼接 sql 语句,执行查询。
以其中一个路由接口 getSystemRoles 为例:
// app.js
app.use("/api", dataRoutes);
// dataRoutes.js
router.get("/getSystemRoles", systemUserController.getSystemRoles);
// systemUserController.js
const getSystemRoles = async (req, res) => {
try {
const data = await dataService.getSystemRoles();
const result = {
code: 200,
data: data,
msg: "",
};
res.json(result);
} catch (error) {
res.status(500).json({ error: error.message });
}
};
// systemUserService.js
const getSystemRoles = async () => {
const sql = `SELECT NAME,CODE FROM xinwei_backstage.system_role WHERE deleted=0`;
const [rows] = await pool.query(sql);
return rows;
};
当然,比较通用的,比如不需要拼接 sql 语句的,或者大量只需要时间范围参数的接口,都可以封装函数减少代码重复率。