Chrome 浏览器插件用于采集试剂管理平台购物车数据,并把导入批次桥接到实验室库存管理系统的 /cart-import 页面。
- 只识别已提交订单 - 只同步已提交的订单,未提交的不识别
- 详情页获取完整信息 - 从产品详情页获取名称、规格、品牌、CAS号等
- 购物车获取数量 - 从购物车获取订购数量
- 先预览后导入 - 显示商品列表,用户可勾选确认
- 支持两种订单类型 - 耗材订单和试剂订单
manifest.json 和 shared/generated-config.js 是构建期生成文件,不提交到 Git。
首次加载或切换环境前,先复制本地 env 并生成配置:
cp browser-extension/.env.example browser-extension/.env
npm run build:extension生产环境请把 browser-extension/.env 中的 BROWSER_EXTENSION_SYSTEM_ORIGIN
改为真实系统域名后再运行构建命令。
在Chrome浏览器地址栏输入:
chrome://extensions/
点击右上角的「开发者模式」开关,使其变为开启状态。
- 点击左上角的「加载已解压的扩展程序」
- 选择项目中的
browser-extension文件夹 - 点击确定
插件图标将出现在Chrome右上角。
- 在Chrome中打开 试剂管理平台:https://reagent.bjmu.edu.cn
- 登录账号,进入 购物车页面
- 在Chrome新标签页中打开 实验室管理系统
- 点击Chrome右上角的插件图标
- 选择订单类型(耗材订单/试剂订单)
- 点击「获取购物车」按钮
- 预览界面 - 查看商品列表,勾选要导入的商品
- 点击「导入选中」完成同步
1. 购物车页面 → 提取已提交订单的产品ID和数量
↓
2. 详情页面(公开) → 获取完整产品信息
- 产品名称
- 英文名称
- 品牌
- 包装规格/纯度
- CAS号
- 单价
↓
3. 合并数据 → 数量从购物车获取,其他信息从详情页获取
- 只识别已提交的订单:购物车中显示"已提交"的订单才会被提取
- 未提交的订单不识别:仍在购物车中未提交的商品不会被同步
- 数量从购物车获取:使用购物车中设置的数量
- 其他信息从详情页获取:产品名称、规格、品牌等从公开的详情页获取
browser-extension/
├── manifest.json # 构建期生成的扩展配置文件
├── .env.example # 构建期域名配置模板
├── build-config.mjs # 从 env 生成 manifest 和运行配置
├── background/
│ └── service-worker.js # 后台服务脚本(获取详情页数据)
├── content/
│ └── script.js # 内容脚本(提取购物车产品ID和数量)
├── popup/
│ ├── popup.html # 弹出窗口
│ └── popup.js # 弹出窗口逻辑
├── shared/
│ ├── generated-config.js # 构建期生成的运行配置
│ └── site-config.js # 站点配置读取逻辑
└── icons/ # 图标文件
扩展负责采集和桥接,不直接写数据库。/cart-import 页面提交导入条目时调用标准订单接口。
| 接口 | 方法 | 说明 |
|---|---|---|
/api/cart-sync |
POST | 匹配分析购物车条目与现有订单 |
/api/reagent-orders |
POST | 创建试剂订单 |
/api/consumable-orders |
POST | 创建耗材订单 |
请求格式:
{
"items": [
{
"name": "产品名称",
"specification": "规格",
"quantity": 1,
"price": 100.0,
"brand": "品牌",
"cas_number": "CAS号",
"english_name": "英文名"
}
],
"order_type": "consumable" // 或 "reagent"
}同步时会自动匹配现有订单:
- 精确匹配 - 名称完全相同
- 模糊匹配 - 名称相似度 ≥ 50%
- CAS号匹配 - CAS号相同
- 无匹配 - 作为新品导入
- 保持购物车页面打开:同步时请确保购物车页面处于打开状态
- 登录状态:购物车页面需要已登录,系统页面也需要已登录
- 订单类型:请根据导入目标选择正确的订单类型
- 预览确认:获取数据后会显示预览,请勾选要导入的商品后再提交
- 只识别已提交:只有已提交的订单才会被识别,未提交的不会同步
请确保购物车页面(URL 包含 page=gwc)已在 Chrome 其他标签页中打开。
请确认购物车中有已提交的订单,未提交的订单不会被识别。
请检查:
- 购物车页面是否已登录
- 控制台是否有错误信息
如需修改或扩展功能:
- 修改
browser-extension/.env后运行npm run build:extension - 修改
content/script.js调整购物车数据提取逻辑 - 修改
background/service-worker.js调整详情页解析逻辑 - 修改
popup/popup.js和popup/popup.html调整界面 - 重新加载插件即可生效
- 复制
browser-extension/.env.example为browser-extension/.env。 - 设置
BROWSER_EXTENSION_SYSTEM_ORIGIN为实验室管理系统域名,例如https://inventory.example.com。 - 设置
BROWSER_EXTENSION_REAGENT_SITE_ORIGIN为试剂平台域名,例如https://reagent.bjmu.edu.cn。 - 运行
npm run build:extension生成manifest.json和shared/generated-config.js。 - 生产域名不会在插件弹窗里修改;Chrome 扩展权限必须由构建期 env 写入 manifest。
- 修改后需要在
chrome://extensions/重新加载扩展。