将急救转运任务的"任务类型"字段从硬编码改为从SQL Server数据库动态加载,提升系统的灵活性和可维护性。
// 硬编码的任务类型列表
emergencyTaskTypes: ['急救转运', '航空转运']
// 从SQL Server动态加载
emergencyTaskTypes: [] // 运行时从数据库加载
emergencyTaskTypeOptions: [] // 转换为picker组件所需格式
// 数据源SQL
SELECT vID, vtext
FROM dictionary
WHERE vtitle='ServiceOrderType' AND vType>=1
ORDER BY vOrder
Service层: IOrderClassDataService.javajava /** * 从 SQL Server 查询服务订单类型列表(ServiceOrderType) * * SQL: SELECT vID, vtext FROM dictionary WHERE vtitle='ServiceOrderType' AND vType>=1 ORDER BY vOrder * * @return 服务订单类型列表 */ List<OrderClassDTO> getServiceOrderTypes();
Mapper层: OrderClassMapper.xmlxml <!-- 查询服务订单类型列表(ServiceOrderType) --> <select id="selectServiceOrderTypes" resultMap="OrderClassResult"> SELECT vID, vtext FROM dictionary WHERE vtitle = 'ServiceOrderType' AND vType >= 1 ORDER BY vOrder </select>
Controller层: SqlServerDictionaryController.javajava @GetMapping("/serviceOrderTypes") public AjaxResult getServiceOrderTypes() { List<OrderClassDTO> list = orderClassDataService.getServiceOrderTypes(); return AjaxResult.success("查询成功", list); }
API接口: app/api/dictionary.jsjavascript export function getServiceOrderTypes() { return request({ url: '/sqlserver/dictionary/serviceOrderTypes', method: 'get' }) }
页面实现: create-emergency.vue
```javascript
import { getServiceOrderTypes } from "@/api/dictionary"
// 加载任务类型数据(从 SQL Server)
loadEmergencyTaskTypes() {
getServiceOrderTypes().then(response => {
const list = response.data || []
this.emergencyTaskTypes = list
this.emergencyTaskTypeOptions = list.map(item => ({
id: item.vID,
text: item.vtext
}))
}).catch(error => {
console.error('加载任务类型失败:', error)
this.emergencyTaskTypes = []
this.emergencyTaskTypeOptions = []
})
}
// 任务类型选择
onEmergencyTaskTypeChange(e) {
const index = e.detail.value
const selected = this.emergencyTaskTypeOptions[index]
this.selectedEmergencyTaskType = selected.text
this.selectedEmergencyTaskTypeId = selected.id
}
```
UI组件:vue <view class="form-item"> <view class="form-label">任务类型</view> <picker mode="selector" :range="emergencyTaskTypeOptions" range-key="text" @change="onEmergencyTaskTypeChange"> <view class="form-input picker-input"> {{ selectedEmergencyTaskType || '请选择任务类型' }} <uni-icons type="arrowright" size="16" color="#999"></uni-icons> </view> </picker> </view>
实体类: SysTaskEmergency.javajava /** 任务类型ID(对应SQL Server的dictionary表vID) */ private String taskTypeId;
数据库表: sys_task_emergency
```sql
ALTER TABLE sys_task_emergency
ADD COLUMN task_type_id VARCHAR(50) COMMENT '任务类型ID(对应SQL Server的dictionary表vID,vtitle=ServiceOrderType)';
CREATE INDEX idx_task_type_id ON sys_task_emergency(task_type_id);
```
Service保存: SysTaskServiceImpl.saveEmergencyInfo()java // 设置任务类型ID emergencyInfo.setTaskTypeId(createVO.getTaskTypeId());
ServiceOrderType (任务类型):
- 查询条件:vtitle='ServiceOrderType' AND vType>=1
- 说明:vType >= 1 表示获取所有类型值大于等于1的记录,范围匹配
ServiceOrdAreaType (单据类型):
- 查询条件:vtitle='ServiceOrdAreaType' AND vType=1
- 说明:vType = 1 表示精确匹配类型值为1的记录
SQL Server dictionary表 (ServiceOrderType)
↓ (通过OrderClassMapper查询)
OrderClassDataService
↓ (返回List<OrderClassDTO>)
SqlServerDictionaryController
↓ (API接口 /sqlserver/dictionary/serviceOrderTypes)
前端 getServiceOrderTypes()
↓ (转换为picker组件格式)
emergencyTaskTypeOptions: [{id: vID, text: vtext}]
↓ (用户选择)
selectedEmergencyTaskTypeId
↓ (提交到后端)
TaskCreateVO.taskTypeId
↓ (保存到数据库)
sys_task_emergency.task_type_id
GET /sqlserver/dictionary/serviceOrderTypes[{vID: "1", vtext: "急救转运"}, ...]ruoyi-system/src/main/java/com/ruoyi/system/domain/SysTaskEmergency.javaruoyi-system/src/main/java/com/ruoyi/system/domain/vo/TaskCreateVO.javaruoyi-system/src/main/java/com/ruoyi/system/mapper/OrderClassMapper.javaruoyi-system/src/main/java/com/ruoyi/system/service/IOrderClassDataService.javaruoyi-system/src/main/java/com/ruoyi/system/service/impl/OrderClassDataServiceImpl.javaruoyi-system/src/main/java/com/ruoyi/system/service/impl/SysTaskServiceImpl.javaruoyi-system/src/main/resources/mapper/system/OrderClassMapper.xmlruoyi-system/src/main/resources/mapper/system/SysTaskEmergencyMapper.xmlruoyi-admin/src/main/java/com/ruoyi/web/controller/sqlserver/SqlServerDictionaryController.javaapp/api/dictionary.jsapp/pages/task/create-emergency.vuesql/add_document_type_to_emergency.sql