新增功能
This commit is contained in:
@@ -0,0 +1,179 @@
|
||||
# 医助列表接口优化
|
||||
|
||||
## 问题描述
|
||||
|
||||
在诊单管理页面中,获取医助列表时调用了 `adminapi/auth.admin/lists` 接口,该接口需要管理员权限,可能导致权限不足的问题。
|
||||
|
||||
## 解决方案
|
||||
|
||||
创建一个专门的接口 `adminapi/tcm.diagnosis/getAssistants` 用于获取医助列表,不需要额外的权限验证。
|
||||
|
||||
## 实现细节
|
||||
|
||||
### 1. 后端实现
|
||||
|
||||
#### 控制器方法
|
||||
**文件:** `server/app/adminapi/controller/tcm/DiagnosisController.php`
|
||||
|
||||
```php
|
||||
/**
|
||||
* @notes 获取医助列表
|
||||
* @return \think\response\Json
|
||||
*/
|
||||
public function getAssistants()
|
||||
{
|
||||
$result = DiagnosisLogic::getAssistants();
|
||||
return $this->data($result);
|
||||
}
|
||||
```
|
||||
|
||||
#### 逻辑层方法
|
||||
**文件:** `server/app/adminapi/logic/tcm/DiagnosisLogic.php`
|
||||
|
||||
```php
|
||||
/**
|
||||
* @notes 获取医助列表
|
||||
* @return array
|
||||
*/
|
||||
public static function getAssistants()
|
||||
{
|
||||
try {
|
||||
// 查询角色ID为2的管理员(医助)
|
||||
$assistants = \app\common\model\auth\Admin::where('role_id', 2)
|
||||
->where('disable', 0)
|
||||
->field(['id', 'name', 'account'])
|
||||
->order('id', 'asc')
|
||||
->select()
|
||||
->toArray();
|
||||
|
||||
return $assistants;
|
||||
} catch (\Exception $e) {
|
||||
\think\facade\Log::error('获取医助列表失败: ' . $e->getMessage());
|
||||
return [];
|
||||
}
|
||||
}
|
||||
```
|
||||
|
||||
### 2. 前端实现
|
||||
|
||||
#### API 方法
|
||||
**文件:** `admin/src/api/tcm.ts`
|
||||
|
||||
```typescript
|
||||
// 获取医助列表
|
||||
export function getAssistants() {
|
||||
return request.get({ url: '/tcm.diagnosis/getAssistants' })
|
||||
}
|
||||
```
|
||||
|
||||
#### 组件更新
|
||||
**文件:** `admin/src/views/tcm/diagnosis/index.vue`
|
||||
|
||||
```typescript
|
||||
// 导入新的 API
|
||||
import { tcmDiagnosisLists, tcmDiagnosisDelete, tcmDiagnosisAssign, getAssistants } from '@/api/tcm'
|
||||
|
||||
// 移除旧的导入
|
||||
// import { adminLists } from '@/api/perms/admin'
|
||||
|
||||
// 更新获取医助列表的方法
|
||||
const getDictOptions = async () => {
|
||||
try {
|
||||
const [diagnosisType, syndromeType, assistants] = await Promise.all([
|
||||
getDictData({ type: 'diagnosis_type' }),
|
||||
getDictData({ type: 'syndrome_type' }),
|
||||
getAssistants() // 使用新的 API
|
||||
])
|
||||
diagnosisTypeOptions.value = diagnosisType?.diagnosis_type || []
|
||||
syndromeTypeOptions.value = syndromeType?.syndrome_type || []
|
||||
assistantOptions.value = assistants || [] // 直接使用返回的数组
|
||||
} catch (error) {
|
||||
console.error('获取字典数据失败:', error)
|
||||
}
|
||||
}
|
||||
```
|
||||
|
||||
## 接口说明
|
||||
|
||||
### 请求
|
||||
|
||||
```
|
||||
GET /adminapi/tcm.diagnosis/getAssistants
|
||||
```
|
||||
|
||||
### 响应
|
||||
|
||||
```json
|
||||
{
|
||||
"code": 1,
|
||||
"msg": "success",
|
||||
"data": [
|
||||
{
|
||||
"id": 1,
|
||||
"name": "医助张三",
|
||||
"account": "assistant1"
|
||||
},
|
||||
{
|
||||
"id": 2,
|
||||
"name": "医助李四",
|
||||
"account": "assistant2"
|
||||
}
|
||||
]
|
||||
}
|
||||
```
|
||||
|
||||
### 返回字段说明
|
||||
|
||||
| 字段 | 类型 | 说明 |
|
||||
|------|------|------|
|
||||
| id | int | 医助ID |
|
||||
| name | string | 医助姓名 |
|
||||
| account | string | 医助账号 |
|
||||
|
||||
## 优势
|
||||
|
||||
1. **权限独立**:不依赖管理员列表接口的权限
|
||||
2. **数据精简**:只返回必要的字段(id、name、account)
|
||||
3. **性能优化**:直接查询医助角色,不需要额外的权限判断
|
||||
4. **易于维护**:专门的接口更容易理解和维护
|
||||
|
||||
## 查询条件
|
||||
|
||||
- `role_id = 2`:只查询医助角色
|
||||
- `disable = 0`:只查询启用状态的医助
|
||||
- 按 `id` 升序排列
|
||||
|
||||
## 测试
|
||||
|
||||
### 测试步骤
|
||||
|
||||
1. 登录管理后台
|
||||
2. 访问诊单管理页面
|
||||
3. 查看医助下拉列表是否正常显示
|
||||
4. 尝试筛选和指派医助
|
||||
|
||||
### 预期结果
|
||||
|
||||
- ✅ 医助列表正常加载
|
||||
- ✅ 下拉框显示所有启用的医助
|
||||
- ✅ 不会出现权限不足的错误
|
||||
- ✅ 可以正常筛选和指派医助
|
||||
|
||||
## 已修改的文件
|
||||
|
||||
- ✅ `server/app/adminapi/controller/tcm/DiagnosisController.php`
|
||||
- ✅ `server/app/adminapi/logic/tcm/DiagnosisLogic.php`
|
||||
- ✅ `admin/src/api/tcm.ts`
|
||||
- ✅ `admin/src/views/tcm/diagnosis/index.vue`
|
||||
|
||||
## 注意事项
|
||||
|
||||
1. **角色ID**:确保医助的 `role_id` 为 2
|
||||
2. **状态检查**:只返回 `disable = 0` 的医助
|
||||
3. **字段精简**:只返回必要的字段,减少数据传输
|
||||
4. **错误处理**:捕获异常并记录日志,返回空数组而不是抛出错误
|
||||
|
||||
---
|
||||
|
||||
**修复日期:** 2024-03-04
|
||||
**状态:** ✅ 完成
|
||||
Reference in New Issue
Block a user