ManagementQYTTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/controller/general/TCompanyController.java
@@ -243,7 +243,8 @@ //系统用户对象 User user = userService.selectOne(new EntityWrapper<User>().eq("roleType", 3).eq("objectId", tCompanyId)); model.addAttribute("user", user); // 传递当前用户角色类型,用于控制非平台账号禁用经营业务和经营区域编辑 model.addAttribute("roleType", shiroExtUtil.getUser().getRoleType()); return PREFIX + "tCompany_updateFranchisee.html"; } ManagementQYTTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/controller/general/TDriverController.java
@@ -66,6 +66,9 @@ private ITCompanyService tCompanyService; @Autowired private ITCompanyCityService tCompanyCityService; @Autowired private ITDriverServiceService tDriverServiceService; @Autowired @@ -172,7 +175,7 @@ public String tDriverAdd(Model model) { List<TCompany> companyList = tCompanyService.selectList(new EntityWrapper<TCompany>().eq("type", 2).eq("state", 0).ne("flag", 3)); model.addAttribute("companyList", companyList); Integer roleType = shiroExtUtil.getUser().getRoleType(); model.addAttribute("roleType", roleType); if (2 == roleType) { @@ -185,7 +188,13 @@ model.addAttribute("franchiseeList", null); } //查询当前用户所属分公司/加盟商 model.addAttribute("objectName", tCompanyService.selectById(shiroExtUtil.getUser().getObjectId()).getName()); TCompany currentCompany = tCompanyService.selectById(shiroExtUtil.getUser().getObjectId()); model.addAttribute("objectName", currentCompany.getName()); // 分公司/加盟商账号传入公司经营业务信息和经营区域 if (2 == roleType || 3 == roleType) { model.addAttribute("companyData", currentCompany); model.addAttribute("companyId", currentCompany.getId()); } //查询线路列表 if(1 != roleType){ @@ -276,6 +285,12 @@ } else if (2 == roleType) { List<TCompany> franchiseeList = tCompanyService.selectList(new EntityWrapper<TCompany>().eq("type", 3).eq("state", 0).ne("flag", 3).eq("superiorId", shiroExtUtil.getUser().getObjectId())); model.addAttribute("franchiseeList", franchiseeList); // 分公司账号传入公司ID用于加载经营区域 model.addAttribute("currentCompanyId", shiroExtUtil.getUser().getObjectId()); } else if (3 == roleType) { // 加盟商账号传入上级分公司ID用于加载经营区域 TCompany franchisee = tCompanyService.selectById(shiroExtUtil.getUser().getObjectId()); model.addAttribute("currentCompanyId", franchisee.getSuperiorId()); } //查询平台ID @@ -641,7 +656,42 @@ map.put("list", list); TCompany company = tCompanyService.selectById(oneId); map.put("company", company); // 获取公司经营区域 List<TCompanyCity> companyCityList = tCompanyCityService.selectList( new EntityWrapper<TCompanyCity>().eq("companyId", oneId).eq("state", 1)); map.put("companyCityList", companyCityList); return map; } /** * 根据公司ID获取经营区域列表(省市区联动) */ @RequestMapping(value = "/getCompanyCityList") @ResponseBody public Object getCompanyCityList(@RequestParam Integer companyId) { List<TCompanyCity> list = tCompanyCityService.selectList( new EntityWrapper<TCompanyCity>().eq("companyId", companyId).eq("state", 1)); // 获取区域详细信息 List<Map<String, Object>> result = new ArrayList<>(); for (TCompanyCity city : list) { Map<String, Object> item = new HashMap<>(); item.put("id", city.getId()); item.put("provinceCode", city.getProvinceCode()); item.put("cityCode", city.getCityCode()); item.put("areaCode", city.getAreaCode()); // 获取省市区名称 TRegion province = tRegionService.selectOne(new EntityWrapper<TRegion>().eq("code", city.getProvinceCode())); TRegion cityRegion = tRegionService.selectOne(new EntityWrapper<TRegion>().eq("code", city.getCityCode())); TRegion area = tRegionService.selectOne(new EntityWrapper<TRegion>().eq("code", city.getAreaCode())); item.put("provinceName", province != null ? province.getName() : ""); item.put("cityName", cityRegion != null ? cityRegion.getName() : ""); item.put("areaName", area != null ? area.getName() : ""); item.put("provinceId", province != null ? province.getId() : ""); item.put("cityId", cityRegion != null ? cityRegion.getId() : ""); item.put("areaId", area != null ? area.getId() : ""); result.add(item); } return result; } @@ -2038,6 +2088,19 @@ } } // 校验经营业务是否在公司经营范围内 TCompany company = itCompanyService.selectById(companyId); String serviceError = validateDriverService(company, "是".equals(nine), "是".equals(ten), "是".equals(eleven)); if (serviceError != null) { return new ErrorTip(500, serviceError); } // 校验从业地是否在公司经营区域内 String placeError = validatePlaceOfEmployment(companyId, cell1701); if (placeError != null) { return new ErrorTip(500, placeError); } TDriver driver = new TDriver(); driver.setAccount(fifteen); driver.setJobNumber(eight); @@ -2350,7 +2413,20 @@ if (companyId == 0 && franchiseeId == 0) { return new ErrorTip(500, "当前登录账户上级分公司不能为空"); } // 校验经营业务是否在公司经营范围内 TCompany company = itCompanyService.selectById(companyId); String serviceError = validateDriverService(company, "是".equals(eight), "是".equals(nine), "是".equals(ten)); if (serviceError != null) { return new ErrorTip(500, serviceError); } // 校验从业地是否在公司经营区域内 String placeError = validatePlaceOfEmployment(companyId, cell1701); if (placeError != null) { return new ErrorTip(500, placeError); } TDriver driver = new TDriver(); driver.setAccount(fourteen); driver.setJobNumber(seven); @@ -2463,6 +2539,77 @@ } /** * 校验经营业务是否在公司经营范围内 * @param company 公司 * @param isSpe 是否快车 * @param isTaxi 是否出租车 * @param isCross 是否跨城 * @return 错误信息,null表示校验通过 */ private String validateDriverService(TCompany company, boolean isSpe, boolean isTaxi, boolean isCross) { if (company == null) { return null; } if (isSpe && (company.getIsSpe() == null || company.getIsSpe() != 1)) { return "公司未开通快车业务"; } if (isTaxi && (company.getIsTaxi() == null || company.getIsTaxi() != 1)) { return "公司未开通出租车业务"; } if (isCross && (company.getIsCross() == null || company.getIsCross() != 1)) { return "公司未开通跨城出行业务"; } return null; } /** * 校验从业地是否在公司经营区域内 * @param companyId 公司ID * @param placeOfEmployment 从业地行政编号 * @return 错误信息,null表示校验通过 */ private String validatePlaceOfEmployment(Integer companyId, String placeOfEmployment) { if (companyId == null || SinataUtil.isEmpty(placeOfEmployment)) { return null; } List<TCompanyCity> companyCityList = tCompanyCityService.selectList( new EntityWrapper<TCompanyCity>().eq("companyId", companyId).eq("state", 1)); if (companyCityList == null || companyCityList.isEmpty()) { return null; // 公司没有设置经营区域,不做限制 } // 检查从业地是否在公司经营区域内 for (TCompanyCity city : companyCityList) { if (city.getAreaCode() != null && placeOfEmployment.equals(String.valueOf(city.getAreaCode()))) { return null; // 匹配区级 } if (city.getCityCode() != null && placeOfEmployment.startsWith(String.valueOf(city.getCityCode()).substring(0, 4))) { return null; // 匹配市级 } } return "从业地不在公司经营区域内"; } /** * 获取公司经营区域的默认从业地 * @param companyId 公司ID * @return 默认从业地行政编号 */ private String getDefaultPlaceOfEmployment(Integer companyId) { if (companyId == null) { return null; } List<TCompanyCity> companyCityList = tCompanyCityService.selectList( new EntityWrapper<TCompanyCity>().eq("companyId", companyId).eq("state", 1).last(" limit 1")); if (companyCityList != null && !companyCityList.isEmpty()) { TCompanyCity city = companyCityList.get(0); if (city.getAreaCode() != null) { return String.valueOf(city.getAreaCode()); } } return null; } /** * 导出司机信息 */ @RequestMapping(value = "/outDriver") ManagementQYTTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/controller/system/LoginController.java
@@ -16,9 +16,11 @@ import com.stylefeng.guns.core.util.KaptchaUtil; import com.stylefeng.guns.core.util.ToolUtil; import com.stylefeng.guns.modular.system.dao.UserMapper; import com.stylefeng.guns.modular.system.dao.TCompanyMapper; import com.stylefeng.guns.modular.system.model.Menu; import com.stylefeng.guns.modular.system.model.Relation; import com.stylefeng.guns.modular.system.model.User; import com.stylefeng.guns.modular.system.model.TCompany; import com.stylefeng.guns.modular.system.service.IMenuService; import com.stylefeng.guns.modular.system.service.IRelationService; import com.stylefeng.guns.modular.system.service.IUserService; @@ -42,6 +44,8 @@ import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpSession; import java.io.UnsupportedEncodingException; import java.util.ArrayList; import java.util.Arrays; import java.util.HashMap; import java.util.List; import java.util.Map; @@ -60,7 +64,25 @@ @Slf4j @Controller public class LoginController extends BaseController { // 快车相关菜单(isSpe=2时过滤) private static final List<String> SPE_MENUS = Arrays.asList( "快车订单", "快车改派管理", "快车车型设置" ); // 出租车相关菜单(isTaxi=2时过滤) private static final List<String> TAXI_MENUS = Arrays.asList( "出租车订单", "出租车改派管理" ); // 跨城相关菜单(isCross=2时过滤) private static final List<String> CROSS_MENUS = Arrays.asList( "跨城出行订单", "跨城改派管理", "跨城线路管理", "开通城市管理" ); // 顺风车相关菜单(isHitchRide=2时过滤) private static final List<String> HITCH_RIDE_MENUS = Arrays.asList( "顺风车订单", "顺风车设置", "顺风车司机审核列表", "顺风车司机", "顺风车投诉", "顺风车评价" ); @Autowired private IMenuService menuService; @@ -75,8 +97,11 @@ @Autowired private UserMapper userMapper; @Resource private TCompanyMapper companyMapper; private Map<String, Long> loginTime = new HashMap<>(); private Map<String, Integer> loginFailures = new HashMap<>(); @@ -111,6 +136,11 @@ Set<Long> collect = relations.stream().map(Relation::getMenuid).collect(Collectors.toSet()); List<Menu> menuList = menuService.selectBatchIds(collect); List<MenuNode> menus = menuService.getMenusByRoleIds(roleList); // 根据企业经营范围过滤菜单(在构建树之前过滤) TCompany tCompany = companyMapper.selectById(shiroUser.getObjectId()); if (tCompany != null && (tCompany.getType() == 2 || tCompany.getType() == 3)) { menus = filterMenusByBusinessScope(menus, tCompany); } List<MenuNode> titles = MenuNode.buildTitle(menus); titles = ApiMenuFilter.build(titles); shiroUser.setMenuIds(menuList.stream().map(Menu::getUrl).collect(Collectors.toList())); @@ -246,6 +276,30 @@ } return ResultUtil.error(jsonObject.getString("msg")); } /** * 根据企业经营范围过滤菜单 */ private List<MenuNode> filterMenusByBusinessScope(List<MenuNode> menuList, TCompany company) { List<String> excludeMenuNames = new ArrayList<>(); if (company.getIsSpe() != null && company.getIsSpe() == 2) { excludeMenuNames.addAll(SPE_MENUS); } if (company.getIsTaxi() != null && company.getIsTaxi() == 2) { excludeMenuNames.addAll(TAXI_MENUS); } if (company.getIsCross() != null && company.getIsCross() == 2) { excludeMenuNames.addAll(CROSS_MENUS); } if (company.getIsHitchRide() != null && company.getIsHitchRide() == 2) { excludeMenuNames.addAll(HITCH_RIDE_MENUS); } if (excludeMenuNames.isEmpty()) { return menuList; } menuList.removeIf(node -> excludeMenuNames.contains(node.getName())); return menuList; } } ManagementQYTTravel/guns-admin/src/main/webapp/WEB-INF/view/system/tCompany/tCompany_edit.html
@@ -52,8 +52,8 @@ <fieldset> <div class="checkbox checkbox-success"> <input name="checkbox" id="checkbox1" type="checkbox" value="1" ${1== item.isSpe ? 'checked=checked' : ''} onclick="TCompanyInfoDlg.checkbox1()" ${roleType != 1 ? 'disabled' : ''}> <label for="checkbox1" ${roleType != 1 ? 'style="color:#999"' : ''}> 'checked=checked' : ''} onclick="TCompanyInfoDlg.checkbox1()"> <label for="checkbox1"> 快车 </label> <fieldset> @@ -67,8 +67,8 @@ </div> <div class="checkbox checkbox-primary"> <input name="checkbox" id="checkbox2" type="checkbox" value="2" ${1== item.isTaxi ? 'checked=checked' : ''} onclick="TCompanyInfoDlg.checkbox2()" ${roleType != 1 ? 'disabled' : ''}> <label for="checkbox2" ${roleType != 1 ? 'style="color:#999"' : ''}> 'checked=checked' : ''} onclick="TCompanyInfoDlg.checkbox2()"> <label for="checkbox2"> 出租车 </label> <fieldset> @@ -81,8 +81,8 @@ </div> <div class="checkbox checkbox-success"> <input name="checkbox" id="checkbox3" type="checkbox" value="3" ${1== item.isCross ? 'checked=checked' : ''} onclick="TCompanyInfoDlg.checkbox3()" ${roleType != 1 ? 'disabled' : ''}> <label for="checkbox3" ${roleType != 1 ? 'style="color:#999"' : ''}> 'checked=checked' : ''} onclick="TCompanyInfoDlg.checkbox3()"> <label for="checkbox3"> 跨城出行 </label> </div> @@ -128,15 +128,15 @@ <!-- </div>--> <div class="checkbox checkbox-success"> <input id="checkbox8" name="checkbox" onclick="TCompanyInfoDlg.checkbox8()" type="checkbox" value="8" ${1 == item.isHitchRide ? 'checked=checked' : ''} ${roleType != 1 ? 'disabled' : ''}> <label for="checkbox8" ${roleType != 1 ? 'style="color:#999"' : ''}> type="checkbox" value="8" ${1 == item.isHitchRide ? 'checked=checked' : ''}> <label for="checkbox8"> 顺风车 </label> </div> <div class="checkbox checkbox-success"> <input id="checkbox9" name="checkbox" onclick="TCompanyInfoDlg.checkbox9()" type="checkbox" value="9" ${1 == item.isSubstituteDriving ? 'checked=checked' : ''} ${roleType != 1 ? 'disabled' : ''}> <label for="checkbox9" ${roleType != 1 ? 'style="color:#999"' : ''}> type="checkbox" value="9" ${1 == item.isSubstituteDriving ? 'checked=checked' : ''}> <label for="checkbox9"> 代驾 </label> </div> ManagementQYTTravel/guns-admin/src/main/webapp/WEB-INF/view/system/tDriver/tDriver_add.html
@@ -3,6 +3,12 @@ <div class="ibox-content"> <div class="form-horizontal" id="yesDriverInfoForm"> <input type="hidden" id="roleType" name="roleType" value="${roleType}"> @if(roleType == 2 || roleType == 3){ <input type="hidden" id="check1_" value="${companyData.isSpe}"> <input type="hidden" id="check2_" value="${companyData.isTaxi}"> <input type="hidden" id="check3_" value="${companyData.isCross}"> <input type="hidden" id="currentCompanyId" value="${companyId}"> @} <div class="row"> <div class="col-sm-10"> <#input id="name" name="司机姓名" /> @@ -282,5 +288,29 @@ laydate.render({ elem: '#registerDate' }); // 分公司/加盟商账号初始化经营业务显示 $(function() { var roleType = $('#roleType').val(); if (roleType == 2 || roleType == 3) { if ($('#check1_').val() != 1) { $("#check1").hide(); $("#serverBox1").val(''); } if ($('#check2_').val() != 1) { $("#check2").hide(); $("#serverBox2").val(''); } if ($('#check3_').val() != 1) { $("#check3").hide(); $("#serverBox3").val(''); } // 加载公司经营区域作为从业地选项 var companyId = $('#currentCompanyId').val(); if (companyId) { YesDriverInfoDlg.loadCompanyCityForAdd(companyId); } } }); </script> @} ManagementQYTTravel/guns-admin/src/main/webapp/WEB-INF/view/system/tDriver/tDriver_edit.html
@@ -7,6 +7,9 @@ <input type="hidden" id="check1_" name="roleType" value="${companyData.isSpe}"> <input type="hidden" id="check2_" name="roleType" value="${companyData.isTaxi}"> <input type="hidden" id="check3_" name="roleType" value="${companyData.isCross}"> @if(roleType == 2 || roleType == 3){ <input type="hidden" id="currentCompanyId" value="${currentCompanyId}"> @} <div class="row"> <div class="col-sm-11"> <#input id="name" name="司机姓名" value="${item.name}"/> @@ -336,6 +339,13 @@ YesDriverInfoDlg.listLine() // 分公司/加盟商账号加载公司经营区域 var roleType = $('#roleType').val(); var companyId = $('#currentCompanyId').val(); if ((roleType == 2 || roleType == 3) && companyId) { YesDriverInfoDlg.loadCompanyCityForEdit(companyId); } }); </script> @} ManagementQYTTravel/guns-admin/src/main/webapp/static/modular/system/tDriver/yesDriver_info.js
@@ -628,6 +628,11 @@ * 省改变时执行 */ YesDriverInfoDlg.provinceChange = function () { // 如果有公司经营区域限制,使用限制版 if (window.companyCityDetailList && window.companyCityDetailList.length > 0) { YesDriverInfoDlg.provinceChangeByCompany(); return; } var provinceId = $("#provinceId").val(); var ajax = new $ax(Feng.ctxPath + "/tOpenCity/change", function(data){ if(data!=null){ @@ -646,6 +651,11 @@ * 市改变时执行 */ YesDriverInfoDlg.cityChange = function () { // 如果有公司经营区域限制,使用限制版 if (window.companyCityDetailList && window.companyCityDetailList.length > 0) { YesDriverInfoDlg.cityChangeByCompany(); return; } var cityId = $("#cityId").val(); var ajax = new $ax(Feng.ctxPath + "/tOpenCity/change", function(data){ if(data!=null){ @@ -825,10 +835,144 @@ YesDriverInfoDlg.listLine() // 更新从业地选择(限制为公司经营区域) YesDriverInfoDlg.updatePlaceOfEmployment(data1.companyCityList) } }); ajax.set("oneId",oneId); ajax.start(); } /** * 更新从业地选择(限制为公司经营区域) */ YesDriverInfoDlg.updatePlaceOfEmployment = function(companyCityList) { // 清空现有选项 $("#provinceId").empty().append('<option value="">选择省</option>'); $("#cityId").empty().append('<option value="">选择市</option>'); $("#areaId").empty().append('<option value="">选择区</option>'); if (!companyCityList || companyCityList.length == 0) { return; } // 存储公司经营区域数据供后续使用 window.companyCityList = companyCityList; // 获取公司经营区域的详细信息 var companyId = $("#oneId").val(); if (!companyId || companyId == '') { return; } var ajax = new $ax(Feng.ctxPath + "/tDriver/getCompanyCityList", function(data) { if (data && data.length > 0) { window.companyCityDetailList = data; // 提取唯一的省份 var provinces = {}; $.each(data, function(k, v) { if (v.provinceCode && !provinces[v.provinceCode]) { provinces[v.provinceCode] = { id: v.provinceId, code: v.provinceCode, name: v.provinceName }; } }); // 填充省份下拉框 var content = '<option value="">选择省</option>'; $.each(provinces, function(k, v) { content += "<option value='" + v.id + "' tag='" + v.code + "'>" + v.name + "</option>"; }); $("#provinceId").empty().append(content); // 如果只有一个经营区域,自动选中并设为默认值 if (data.length == 1) { $("#provinceId").val(data[0].provinceId); YesDriverInfoDlg.provinceChangeByCompany(); } } }); ajax.set("companyId", companyId); ajax.start(); } /** * 省改变时执行(公司经营区域限制版) */ YesDriverInfoDlg.provinceChangeByCompany = function() { var provinceId = $("#provinceId").val(); var provinceCode = $("#provinceId option:selected").attr("tag"); $("#cityId").empty().append('<option value="">选择市</option>'); $("#areaId").empty().append('<option value="">选择区</option>'); if (!provinceId || !window.companyCityDetailList) { return; } // 从公司经营区域中筛选该省份下的市 var cities = {}; $.each(window.companyCityDetailList, function(k, v) { if (v.provinceCode == provinceCode && v.cityCode && !cities[v.cityCode]) { cities[v.cityCode] = { id: v.cityId, code: v.cityCode, name: v.cityName }; } }); var content = '<option value="">选择市</option>'; $.each(cities, function(k, v) { content += "<option value='" + v.id + "' tag='" + v.code + "'>" + v.name + "</option>"; }); $("#cityId").empty().append(content); // 如果只有一个市,自动选中 var cityKeys = Object.keys(cities); if (cityKeys.length == 1) { $("#cityId").val(cities[cityKeys[0]].id); YesDriverInfoDlg.cityChangeByCompany(); } } /** * 市改变时执行(公司经营区域限制版) */ YesDriverInfoDlg.cityChangeByCompany = function() { var cityId = $("#cityId").val(); var cityCode = $("#cityId option:selected").attr("tag"); $("#areaId").empty().append('<option value="">选择区</option>'); if (!cityId || !window.companyCityDetailList) { return; } // 从公司经营区域中筛选该市下的区 var areas = {}; $.each(window.companyCityDetailList, function(k, v) { if (v.cityCode == cityCode && v.areaCode && !areas[v.areaCode]) { areas[v.areaCode] = { id: v.areaId, code: v.areaCode, name: v.areaName }; } }); var content = '<option value="">选择区</option>'; $.each(areas, function(k, v) { content += "<option value='" + v.id + "' tag='" + v.code + "'>" + v.name + "</option>"; }); $("#areaId").empty().append(content); // 如果只有一个区,自动选中 var areaKeys = Object.keys(areas); if (areaKeys.length == 1) { $("#areaId").val(areas[areaKeys[0]].id); } } /** @@ -869,6 +1013,10 @@ $("#check1").show() $("#check2").show() $("#check3").show() // 平台司机:清除公司经营区域限制,恢复全国选择 window.companyCityDetailList = null; window.companyCityList = null; YesDriverInfoDlg.loadAllProvinces(); } else if (2 == e){ $(".companyDiv").show(); if($("#oneId").val() !=null && $("#oneId").val() !=''){ @@ -899,6 +1047,8 @@ $("#serverBox3").val("") } // 更新从业地选择(限制为公司经营区域) YesDriverInfoDlg.updatePlaceOfEmployment(data1.companyCityList) } YesDriverInfoDlg.listLine() @@ -913,3 +1063,217 @@ } } /** * 加载全国所有省份(平台司机使用) */ YesDriverInfoDlg.loadAllProvinces = function() { var ajax = new $ax(Feng.ctxPath + "/tOpenCity/change", function(data){ if(data!=null){ var content='<option value="">选择省</option>'; $.each(data, function(k,v) { content += "<option value='"+v.id+"' tag='" + v.code + "'>"+v.name+"</option>"; }); $("#provinceId").empty().append(content); $("#cityId").empty().append('<option value="">选择市</option>'); $("#areaId").empty().append('<option value="">选择区</option>'); } }); ajax.set("id", 0); ajax.start(); } /** * 分公司/加盟商新增司机时加载公司经营区域(默认选中第一个) */ YesDriverInfoDlg.loadCompanyCityForAdd = function(companyId) { var ajax = new $ax(Feng.ctxPath + "/tDriver/getCompanyCityList", function(data) { if (data && data.length > 0) { window.companyCityDetailList = data; // 提取唯一的省份 var provinces = {}; $.each(data, function(k, v) { if (v.provinceCode && !provinces[v.provinceCode]) { provinces[v.provinceCode] = { id: v.provinceId, code: v.provinceCode, name: v.provinceName }; } }); // 填充省份下拉框 var content = '<option value="">选择省</option>'; var firstProvinceId = null; $.each(provinces, function(k, v) { if (!firstProvinceId) firstProvinceId = v.id; content += "<option value='" + v.id + "' tag='" + v.code + "'>" + v.name + "</option>"; }); $("#provinceId").empty().append(content); // 默认选中第一个省份并联动 if (firstProvinceId) { $("#provinceId").val(firstProvinceId); YesDriverInfoDlg.provinceChangeByCompanyWithDefault(); } } }); ajax.set("companyId", companyId); ajax.start(); } /** * 省改变时执行(公司经营区域限制版,带默认选中) */ YesDriverInfoDlg.provinceChangeByCompanyWithDefault = function() { var provinceId = $("#provinceId").val(); var provinceCode = $("#provinceId option:selected").attr("tag"); $("#cityId").empty().append('<option value="">选择市</option>'); $("#areaId").empty().append('<option value="">选择区</option>'); if (!provinceId || !window.companyCityDetailList) { return; } var cities = {}; $.each(window.companyCityDetailList, function(k, v) { if (v.provinceCode == provinceCode && v.cityCode && !cities[v.cityCode]) { cities[v.cityCode] = { id: v.cityId, code: v.cityCode, name: v.cityName }; } }); var content = '<option value="">选择市</option>'; var firstCityId = null; $.each(cities, function(k, v) { if (!firstCityId) firstCityId = v.id; content += "<option value='" + v.id + "' tag='" + v.code + "'>" + v.name + "</option>"; }); $("#cityId").empty().append(content); if (firstCityId) { $("#cityId").val(firstCityId); YesDriverInfoDlg.cityChangeByCompanyWithDefault(); } } /** * 市改变时执行(公司经营区域限制版,带默认选中) */ YesDriverInfoDlg.cityChangeByCompanyWithDefault = function() { var cityId = $("#cityId").val(); var cityCode = $("#cityId option:selected").attr("tag"); $("#areaId").empty().append('<option value="">选择区</option>'); if (!cityId || !window.companyCityDetailList) { return; } var areas = {}; $.each(window.companyCityDetailList, function(k, v) { if (v.cityCode == cityCode && v.areaCode && !areas[v.areaCode]) { areas[v.areaCode] = { id: v.areaId, code: v.areaCode, name: v.areaName }; } }); var content = '<option value="">选择区</option>'; var firstAreaId = null; $.each(areas, function(k, v) { if (!firstAreaId) firstAreaId = v.id; content += "<option value='" + v.id + "' tag='" + v.code + "'>" + v.name + "</option>"; }); $("#areaId").empty().append(content); if (firstAreaId) { $("#areaId").val(firstAreaId); } } /** * 分公司/加盟商编辑司机时加载公司经营区域(保留当前选中值) */ YesDriverInfoDlg.loadCompanyCityForEdit = function(companyId) { var currentProvinceId = $("#provinceId").val(); var currentCityId = $("#cityId").val(); var currentAreaId = $("#areaId").val(); var ajax = new $ax(Feng.ctxPath + "/tDriver/getCompanyCityList", function(data) { if (data && data.length > 0) { window.companyCityDetailList = data; // 提取唯一的省份 var provinces = {}; $.each(data, function(k, v) { if (v.provinceCode && !provinces[v.provinceCode]) { provinces[v.provinceCode] = { id: v.provinceId, code: v.provinceCode, name: v.provinceName }; } }); // 填充省份下拉框 var content = '<option value="">选择省</option>'; $.each(provinces, function(k, v) { var selected = (v.id == currentProvinceId) ? ' selected' : ''; content += "<option value='" + v.id + "' tag='" + v.code + "'" + selected + ">" + v.name + "</option>"; }); $("#provinceId").empty().append(content); // 如果有当前选中的省份,联动加载市 if (currentProvinceId) { YesDriverInfoDlg.loadCityForEdit(currentProvinceId, currentCityId, currentAreaId); } } }); ajax.set("companyId", companyId); ajax.start(); } /** * 编辑时加载市(保留当前选中值) */ YesDriverInfoDlg.loadCityForEdit = function(provinceId, currentCityId, currentAreaId) { var provinceCode = $("#provinceId option:selected").attr("tag"); if (!provinceCode || !window.companyCityDetailList) return; var cities = {}; $.each(window.companyCityDetailList, function(k, v) { if (v.provinceCode == provinceCode && v.cityCode && !cities[v.cityCode]) { cities[v.cityCode] = { id: v.cityId, code: v.cityCode, name: v.cityName }; } }); var content = '<option value="">选择市</option>'; $.each(cities, function(k, v) { var selected = (v.id == currentCityId) ? ' selected' : ''; content += "<option value='" + v.id + "' tag='" + v.code + "'" + selected + ">" + v.name + "</option>"; }); $("#cityId").empty().append(content); // 如果有当前选中的市,联动加载区 if (currentCityId) { YesDriverInfoDlg.loadAreaForEdit(currentCityId, currentAreaId); } } /** * 编辑时加载区(保留当前选中值) */ YesDriverInfoDlg.loadAreaForEdit = function(cityId, currentAreaId) { var cityCode = $("#cityId option:selected").attr("tag"); if (!cityCode || !window.companyCityDetailList) return; var areas = {}; $.each(window.companyCityDetailList, function(k, v) { if (v.cityCode == cityCode && v.areaCode && !areas[v.areaCode]) { areas[v.areaCode] = { id: v.areaId, code: v.areaCode, name: v.areaName }; } }); var content = '<option value="">选择区</option>'; $.each(areas, function(k, v) { var selected = (v.id == currentAreaId) ? ' selected' : ''; content += "<option value='" + v.id + "' tag='" + v.code + "'" + selected + ">" + v.name + "</option>"; }); $("#areaId").empty().append(content); }