92 lines
2.9 KiB
Markdown
92 lines
2.9 KiB
Markdown
# 检查处方用量字段是否已添加到数据库
|
|
|
|
## 问题描述
|
|
处方的用量相关字段(`dosage_amount`、`dosage_unit`、`need_decoction`)没有保存到数据库。
|
|
|
|
## 检查步骤
|
|
|
|
### 1. 检查数据库表结构
|
|
|
|
执行以下SQL查询,检查字段是否存在:
|
|
|
|
```sql
|
|
SELECT COLUMN_NAME, DATA_TYPE, COLUMN_DEFAULT, COLUMN_COMMENT
|
|
FROM information_schema.COLUMNS
|
|
WHERE TABLE_SCHEMA = DATABASE()
|
|
AND TABLE_NAME = 'zyt_tcm_prescription'
|
|
AND COLUMN_NAME IN ('dosage_amount', 'dosage_unit', 'need_decoction')
|
|
ORDER BY ORDINAL_POSITION;
|
|
```
|
|
|
|
### 2. 如果字段不存在,执行迁移
|
|
|
|
如果上述查询返回空结果,说明字段还未添加,需要执行迁移文件:
|
|
|
|
```bash
|
|
mysql -u用户名 -p数据库名 < add_prescription_dosage_fields.sql
|
|
```
|
|
|
|
或者直接在数据库中执行:
|
|
|
|
```sql
|
|
ALTER TABLE `zyt_tcm_prescription`
|
|
ADD COLUMN `dosage_amount` decimal(10,2) DEFAULT NULL COMMENT '用量数值' AFTER `prescription_type`,
|
|
ADD COLUMN `dosage_unit` varchar(10) NOT NULL DEFAULT '' COMMENT '用量单位(g/ml)' AFTER `dosage_amount`,
|
|
ADD COLUMN `need_decoction` tinyint(1) NOT NULL DEFAULT 0 COMMENT '是否代煎(0否1是,仅饮片)' AFTER `dosage_unit`;
|
|
```
|
|
|
|
### 3. 验证字段已添加
|
|
|
|
再次执行步骤1的查询,应该看到3个字段:
|
|
|
|
| COLUMN_NAME | DATA_TYPE | COLUMN_DEFAULT | COLUMN_COMMENT |
|
|
|-------------|-----------|----------------|----------------|
|
|
| dosage_amount | decimal | NULL | 用量数值 |
|
|
| dosage_unit | varchar | '' | 用量单位(g/ml) |
|
|
| need_decoction | tinyint | 0 | 是否代煎(0否1是,仅饮片) |
|
|
|
|
## 代码检查
|
|
|
|
### 前端代码 ✅
|
|
- `admin/src/components/tcm-prescription/index.vue` 已正确实现
|
|
- 包含 `dosage_amount`、`dosage_unit`、`need_decoction` 字段
|
|
- 有 `watch` 监听处方类型变化,自动设置单位
|
|
|
|
### 后端代码 ✅
|
|
- `server/app/adminapi/logic/tcm/PrescriptionLogic.php` 的 `add()` 方法已包含这些字段
|
|
- `server/app/adminapi/logic/tcm/PrescriptionLogic.php` 的 `edit()` 方法已包含这些字段
|
|
|
|
### 数据库模型 ✅
|
|
- `server/app/common/model/tcm/Prescription.php` 已配置类型转换:
|
|
```php
|
|
protected $type = [
|
|
'dosage_amount' => 'float',
|
|
'need_decoction' => 'integer',
|
|
];
|
|
```
|
|
|
|
## 结论
|
|
|
|
代码层面一切正常,问题很可能是**数据库迁移未执行**。
|
|
|
|
请执行上述步骤1检查数据库表结构,如果字段不存在,执行步骤2的迁移SQL。
|
|
|
|
## 测试步骤
|
|
|
|
迁移完成后,测试以下场景:
|
|
|
|
1. **创建新处方**
|
|
- 选择"浓缩水丸",用量应为 1-10g 下拉选择
|
|
- 选择"饮片",用量应为 50-250ml 下拉选择,并显示代煎选项
|
|
- 选择其他类型,用量应为自由输入
|
|
- 保存后检查数据库,确认字段已保存
|
|
|
|
2. **编辑已有处方**
|
|
- 打开已有处方
|
|
- 修改用量和代煎选项
|
|
- 保存后检查数据库,确认字段已更新
|
|
|
|
3. **查看处方详情**
|
|
- 在订单详情中查看处方
|
|
- 确认用量和代煎信息正确显示
|