# 分公司默认出发地配置功能说明 ## 功能概述 为创建转运任务页面增加了出发地输入功能,支持从分公司配置中自动加载默认出发地,用户也可以手动修改。 ## 数据库变更 ### sys_dept 表新增字段 在 `sys_dept` 表中新增了3个字段用于存储分公司的默认出车地址: | 字段名 | 类型 | 说明 | |--------|------|------| | `departure_address` | VARCHAR(500) | 默认出车地址 | | `departure_longitude` | DECIMAL(10, 6) | 出车地址经度 | | `departure_latitude` | DECIMAL(10, 6) | 出车地址纬度 | **SQL脚本位置**: `sql/sys_dept_add_departure_fields.sql` ## 后端修改 ### 1. SysDept 实体类 (SysDept.java) 新增属性: ```java private String departureAddress; private java.math.BigDecimal departureLongitude; private java.math.BigDecimal departureLatitude; ``` ### 2. SysDeptMapper.xml - 更新 `resultMap`,增加新字段映射 - 更新 `selectDeptVo`,查询时包含新字段 - 更新 `insertDept`,插入时支持新字段 - 更新 `updateDept`,更新时支持新字段 ## 前端修改 ### 1. OrganizationSelector 组件 修改 `emitChange` 方法,在选择归属机构时返回出发地信息: ```javascript this.$emit('change', { deptId: organization.deptId, deptName: organization.deptName, serviceOrderClass: organization.serviceOrderClass || '', region: region, // 出发地信息 departureAddress: organization.departureAddress || '', departureLongitude: organization.departureLongitude || null, departureLatitude: organization.departureLatitude || null }) ``` ### 2. create-emergency.vue 页面 #### 新增数据字段 ```javascript data() { return { departureAddress: '', // 出发地地址 departureLongitude: null, // 出发地经度 departureLatitude: null, // 出发地纬度 // ... 其他字段 } } ``` #### 归属机构变化处理 在 `onOrganizationChange` 方法中自动填充出发地: ```javascript onOrganizationChange(orgData) { this.selectedOrganizationId = orgData.deptId this.selectedOrganizationServiceOrderClass = orgData.serviceOrderClass this.selectedRegion = orgData.region // 自动填充出发地信息 this.departureAddress = orgData.departureAddress || '' this.departureLongitude = orgData.departureLongitude || null this.departureLatitude = orgData.departureLatitude || null } ``` #### 界面新增出发地输入框 在归属机构选择器之后增加: ```vue 出发地 提示:可修改默认出发地地址 ``` #### 提交数据处理 在 `buildSubmitData` 方法中: ```javascript const submitData = { // 优先使用自定义的出发地,如果为空则使用转出医院地址 departureAddress: this.departureAddress || this.taskForm.hospitalOut.address || '', // ... 其他字段 } // 出发地GPS坐标(优先使用自定义的出发地坐标) if (this.departureLongitude && this.departureLatitude) { submitData.departureLongitude = this.departureLongitude submitData.departureLatitude = this.departureLatitude } else if (this.addressCoordinates.hospitalOutAddress) { // 兜底:使用转出医院的坐标 submitData.departureLongitude = this.addressCoordinates.hospitalOutAddress.lng submitData.departureLatitude = this.addressCoordinates.hospitalOutAddress.lat } ``` ## 使用流程 ### 1. 配置分公司默认出发地 在后台管理系统的部门管理中,为各分公司配置默认出车地址及GPS坐标: 1. 进入"系统管理" -> "部门管理" 2. 选择需要配置的分公司(parent_id=100的部门) 3. 点击"修改" 4. 填写以下信息: - **默认出车地址**: 如"广州市天河区XXX路XXX号" - **出车地址经度**: 如 113.123456 - **出车地址纬度**: 如 23.123456 ### 2. 创建转运任务时使用 1. 在APP端打开"创建转运任务"页面 2. 选择"归属机构"(分公司) 3. 系统自动填充该分公司配置的默认出发地 4. 用户可以手动修改出发地地址 5. 提交时,优先使用自定义的出发地,如为空则使用转出医院地址 ## 优先级规则 出发地的优先级从高到低为: 1. **用户手动修改的出发地** - 最高优先级 2. **分公司配置的默认出发地** - 选择归属机构时自动填充 3. **转出医院地址** - 如果前两者都为空,使用转出医院地址 GPS坐标的优先级: 1. **分公司配置的出发地坐标** - 如果有配置 2. **转出医院地址的坐标** - 兜底方案 ## 注意事项 1. **数据库升级**: 首次部署需要执行 `sql/sys_dept_add_departure_fields.sql` 脚本 2. **权限配置**: 确保部门管理的编辑权限包含新增的字段 3. **兼容性**: 未配置出发地的分公司,系统会自动使用转出医院地址,不影响现有功能 4. **数据校验**: 经纬度字段支持NULL,可以只填写地址不填写坐标 ## 相关文件 ### 数据库脚本 - `sql/sys_dept_add_departure_fields.sql` ### 后端文件 - `ruoyi-common/src/main/java/com/ruoyi/common/core/domain/entity/SysDept.java` - `ruoyi-system/src/main/resources/mapper/system/SysDeptMapper.xml` ### 前端文件 - `app/components/OrganizationSelector.vue` - `app/pages/task/create-emergency.vue` ## 后续优化建议 1. 可在后台管理系统的部门编辑页面增加地图选点功能,方便配置经纬度 2. 可增加出发地的地址建议功能,类似医院地址输入 3. 可考虑为每个分公司配置多个常用出发地,供用户快速选择