# 进销存 **Repository Path**: legend0/inventory-management ## Basic Information - **Project Name**: 进销存 - **Description**: 一套面向零售/批发门店的移动端进销存管理系统(Android / iOS / Web),基于 Expo + React Native 构建。支持扫码开单、箱/散双单位换算、移动加权平均成本核算、往来赊销与账期管理、有效期追踪、四重经营预警、OCR 识别、语音播报、长辈模式,以及离线优先存储与 WebDAV 云备份同步。 - **Primary Language**: TypeScript - **License**: AGPL-3.0 - **Default Branch**: master - **Homepage**: https://gitee.com/legend0/inventory-management - **GVP Project**: No ## Statistics - **Stars**: 1 - **Forks**: 0 - **Created**: 2026-09-19 - **Last Updated**: 2026-10-09 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # 进销存 一套面向零售/批发门店的移动端进销存管理系统(Android / iOS / Web),基于 Expo + React Native 构建。支持扫码开单、箱/散双单位换算、移动加权平均成本核算、往来赊销与账期管理、有效期追踪、四重经营预警、OCR 识别、语音播报、长辈模式,以及离线优先存储与 WebDAV 云备份同步。

浅色模式首页      深色模式首页

应用首页:左为浅色模式,右为深色模式(跟随系统)

## 功能特性 ### 开单与库存 - **入库 / 出库开单**:摄像头扫码(条码 / 二维码)或手动输入快速定位商品,无匹配可直接新建商品档案 - **OCR 识别**:拍摄商品标签自动识别名称、规格、批号等信息,减少手工录入 - **箱 / 散双单位**:设置箱规换算(如 1 箱 = 12 瓶),整箱入库、散件出库自动折算 - **批次与有效期**:记录生产批号、生产日期与保质期,自动换算到期日并按临期 / 过期聚合提醒 - **移动加权平均成本**:进货后自动重算商品平均成本,出库毛利实时可见 - **库存管理**:分类 / 供货商多维筛选、双单位库存展示、预警角标、进价变动趋势与出入库台账 - **暂存箱**:开单中途可暂存,稍后继续编辑提交 ### 往来与财务 - **账单大厅**:现结(现金 / 微信 / 支付宝等)与赊销统一记账,支持结清与冲红 - **往来账期**:客户赊销应收、供货商欠款应付,自动计算到期日 - **四重预警**:库存不足、应付到期、应收到期、商品临期,首页聚合提醒 - **统计报表**:今日收支毛利、7 / 30 / 90 天经营看板趋势图、客户与供货商排行 ### 体验与安全 - **长辈模式**:全局大字号、大热区,适合门店中老年经营者 - **语音播报**:开单金额语音报读(可关闭) - **暗黑模式**:跟随系统自动切换 - **子账号管理**:为店员开通子账号,权限隔离 - **操作日志**:关键操作留痕可追溯 - **离线优先**:核心开单、查库存全部本地完成(SQLite),不依赖网络 - **WebDAV 备份**:自行配置 WebDAV 服务实现云备份与多设备同步,数据自主可控 - **自编条码**:为无条码商品配置自编条码规则,自动生成并可打印展示 ## 软件架构 **技术栈**:Expo ~55 · React Native 0.83 · React 19 · TypeScript · expo-router(文件路由)· NativeWind 4(Tailwind CSS)· expo-sqlite(本地存储)· expo-camera / expo-ocr-kit(扫码与 OCR)· expo-speech(语音)· react-native-svg(图表)· EAS Build(云打包) ```text ├── app.json # Expo 应用配置(版本号 / 图标 / 权限) ├── eas.json # EAS 打包配置 ├── docs/ # 需求文档、打包流程、版本声明等 ├── assets/ # 应用图标与界面截图 └── src/ ├── app/ # expo-router 页面路由 │ ├── (app)/(tabs)/ # 首页 / 账单 / 库存 / 我的(+ 入库 / 出库) │ └── (app)/ # 商品详情、财务、统计、设置等子页面 ├── components/ # UI 组件(shadcn 风格)、OCR、首页组件 ├── context/ # 主题 / Toast / 弹窗 / 全局业务状态 ├── services/ # 本地存储、WebDAV 同步、OCR 解析、语音等 ├── hooks/ # 长辈模式等自定义 Hook ├── lib/ # 常量、主题、工具函数 └── types/ # 业务类型定义 ``` ## 安装教程 1. 准备环境:Node.js 18+,包管理器使用 npm(本项目禁用 pnpm) 2. 安装依赖: ```bash npm install ``` 3. 启动开发服务器(任选其一): ```bash npm run dev # Metro 开发服务器 npm run android # Android 设备 / 模拟器 npm run ios # iOS 模拟器(需 macOS) npm run web # 浏览器 ``` ## 使用说明 1. **日常开发**:`npm run dev` 启动后用 Expo Dev Client 或浏览器访问;类型检查 `npx tsc --noEmit`,代码检查 `npm run lint` 2. **打包发布**:参见 [docs/build.md](docs/build.md) - Web 静态导出:`npx expo export --platform web`(产物 `dist/`,可部署至任意静态托管) - Android:`eas build --platform android --profile preview`(APK)或 `--profile production`(AAB) - iOS:`eas build --platform ios --profile production` 3. **数据备份**:进入「我的 → 云备份(WebDAV)」配置服务器地址与账号密码,支持手动备份 / 恢复 4. **版本号规则**:发布前在 `app.json` 同步递增 `version` / `ios.buildNumber` / `android.versionCode` ## 相关文档 - [需求文档(PRD)](docs/prd.md) - [打包发布流程](docs/build.md) - [版本声明与常见问题](docs/版本声明.md) ## 参与贡献 1. Fork 本仓库 2. 新建 Feat_xxx 分支 3. 提交代码 4. 新建 Pull Request