Commit 73bb096159f39d6e3b5eed7804f0a816da848a20
Merge branch 'PSM-5' into qingpu
Showing
21 changed files
with
1012 additions
and
134 deletions
src/main/java/com/bsth/controller/BaseController.java
| @@ -3,6 +3,7 @@ package com.bsth.controller; | @@ -3,6 +3,7 @@ package com.bsth.controller; | ||
| 3 | import com.bsth.common.ResponseCode; | 3 | import com.bsth.common.ResponseCode; |
| 4 | import com.bsth.service.BaseService; | 4 | import com.bsth.service.BaseService; |
| 5 | import com.bsth.service.schedule.utils.DataImportExportService; | 5 | import com.bsth.service.schedule.utils.DataImportExportService; |
| 6 | +import com.google.common.base.Splitter; | ||
| 6 | import org.springframework.beans.factory.annotation.Autowired; | 7 | import org.springframework.beans.factory.annotation.Autowired; |
| 7 | import org.springframework.data.domain.Page; | 8 | import org.springframework.data.domain.Page; |
| 8 | import org.springframework.data.domain.PageRequest; | 9 | import org.springframework.data.domain.PageRequest; |
| @@ -17,6 +18,7 @@ import org.springframework.web.multipart.MultipartFile; | @@ -17,6 +18,7 @@ import org.springframework.web.multipart.MultipartFile; | ||
| 17 | import javax.servlet.http.HttpServletResponse; | 18 | import javax.servlet.http.HttpServletResponse; |
| 18 | import java.io.*; | 19 | import java.io.*; |
| 19 | import java.util.HashMap; | 20 | import java.util.HashMap; |
| 21 | +import java.util.List; | ||
| 20 | import java.util.Map; | 22 | import java.util.Map; |
| 21 | 23 | ||
| 22 | /** | 24 | /** |
| @@ -58,8 +60,12 @@ public class BaseController<T, ID extends Serializable> { | @@ -58,8 +60,12 @@ public class BaseController<T, ID extends Serializable> { | ||
| 58 | d = Direction.ASC; | 60 | d = Direction.ASC; |
| 59 | else | 61 | else |
| 60 | d = Direction.DESC; | 62 | d = Direction.DESC; |
| 61 | - | ||
| 62 | - return baseService.list(map, new PageRequest(page, size, new Sort(d, order))); | 63 | + |
| 64 | + // 允许多个字段排序,order可以写单个字段,也可以写多个字段 | ||
| 65 | + // 多个字段格式:{col1},{col2},{col3},....,{coln} | ||
| 66 | + // 每个字段的排序方向都是一致,这个以后再看要不要改 | ||
| 67 | + List<String> list = Splitter.on(",").trimResults().splitToList(order); | ||
| 68 | + return baseService.list(map, new PageRequest(page, size, new Sort(d, list))); | ||
| 63 | } | 69 | } |
| 64 | 70 | ||
| 65 | /** | 71 | /** |
src/main/java/com/bsth/controller/schedule/SchedulePlanInfoController.java
| @@ -2,18 +2,9 @@ package com.bsth.controller.schedule; | @@ -2,18 +2,9 @@ package com.bsth.controller.schedule; | ||
| 2 | 2 | ||
| 3 | import com.bsth.controller.BaseController; | 3 | import com.bsth.controller.BaseController; |
| 4 | import com.bsth.entity.schedule.SchedulePlanInfo; | 4 | import com.bsth.entity.schedule.SchedulePlanInfo; |
| 5 | -import com.google.common.base.Splitter; | ||
| 6 | -import org.springframework.data.domain.Page; | ||
| 7 | -import org.springframework.data.domain.PageRequest; | ||
| 8 | -import org.springframework.data.domain.Sort; | ||
| 9 | import org.springframework.web.bind.annotation.RequestMapping; | 5 | import org.springframework.web.bind.annotation.RequestMapping; |
| 10 | -import org.springframework.web.bind.annotation.RequestMethod; | ||
| 11 | -import org.springframework.web.bind.annotation.RequestParam; | ||
| 12 | import org.springframework.web.bind.annotation.RestController; | 6 | import org.springframework.web.bind.annotation.RestController; |
| 13 | 7 | ||
| 14 | -import java.util.List; | ||
| 15 | -import java.util.Map; | ||
| 16 | - | ||
| 17 | /** | 8 | /** |
| 18 | * Created by xu on 16/6/16. | 9 | * Created by xu on 16/6/16. |
| 19 | */ | 10 | */ |
| @@ -21,32 +12,4 @@ import java.util.Map; | @@ -21,32 +12,4 @@ import java.util.Map; | ||
| 21 | @RequestMapping("spic") | 12 | @RequestMapping("spic") |
| 22 | public class SchedulePlanInfoController extends BaseController<SchedulePlanInfo, Long> { | 13 | public class SchedulePlanInfoController extends BaseController<SchedulePlanInfo, Long> { |
| 23 | 14 | ||
| 24 | - /** | ||
| 25 | - * | ||
| 26 | - * @Title: list | ||
| 27 | - * @Description: TODO(多条件分页查询) | ||
| 28 | - * @param @param map 查询条件 | ||
| 29 | - * @param @param page 页码 | ||
| 30 | - * @param @param size 每页显示数量 | ||
| 31 | - * @throws | ||
| 32 | - */ | ||
| 33 | - @RequestMapping(method = RequestMethod.GET) | ||
| 34 | - public Page<SchedulePlanInfo> list(@RequestParam Map<String, Object> map, | ||
| 35 | - @RequestParam(defaultValue = "0") int page, | ||
| 36 | - @RequestParam(defaultValue = "10") int size, | ||
| 37 | - @RequestParam(defaultValue = "id") String order, | ||
| 38 | - @RequestParam(defaultValue = "DESC") String direction){ | ||
| 39 | - | ||
| 40 | - Sort.Direction d; | ||
| 41 | - | ||
| 42 | - if(null != direction && direction.equals("ASC")) | ||
| 43 | - d = Sort.Direction.ASC; | ||
| 44 | - else | ||
| 45 | - d = Sort.Direction.DESC; | ||
| 46 | - | ||
| 47 | - // order由 col1,col2,col3 这样传入 | ||
| 48 | - List<String> list = Splitter.on(",").trimResults().splitToList(order); | ||
| 49 | - return baseService.list(map, new PageRequest(page, size, new Sort(d, list))); | ||
| 50 | - } | ||
| 51 | - | ||
| 52 | } | 15 | } |
src/main/java/com/bsth/controller/sys/UserLineController.java
0 → 100644
| 1 | +package com.bsth.controller.sys; | ||
| 2 | + | ||
| 3 | +import java.util.List; | ||
| 4 | +import java.util.Map; | ||
| 5 | + | ||
| 6 | +import org.springframework.beans.factory.annotation.Autowired; | ||
| 7 | +import org.springframework.web.bind.annotation.RequestMapping; | ||
| 8 | +import org.springframework.web.bind.annotation.RequestMethod; | ||
| 9 | +import org.springframework.web.bind.annotation.RequestParam; | ||
| 10 | +import org.springframework.web.bind.annotation.RestController; | ||
| 11 | + | ||
| 12 | +import com.bsth.controller.BaseController; | ||
| 13 | +import com.bsth.entity.sys.UserLine; | ||
| 14 | +import com.bsth.service.sys.UserLineService; | ||
| 15 | + | ||
| 16 | +@RestController | ||
| 17 | +@RequestMapping("userline") | ||
| 18 | +public class UserLineController extends BaseController<UserLine, Integer> { | ||
| 19 | + | ||
| 20 | + | ||
| 21 | + @Autowired | ||
| 22 | + private UserLineService service; | ||
| 23 | + | ||
| 24 | + @RequestMapping(value = "/userRoleTree", method = RequestMethod.GET) | ||
| 25 | + public List<Map<String, Object>> userRoleTree(@RequestParam Map<String, Object> map){ | ||
| 26 | + | ||
| 27 | + return service.userRoleTree(map); | ||
| 28 | + | ||
| 29 | + } | ||
| 30 | + | ||
| 31 | + /** | ||
| 32 | + * | ||
| 33 | + * @Title: setLineCasts | ||
| 34 | + * | ||
| 35 | + * @Description: TODO(为角色设置模块,全量覆盖) | ||
| 36 | + * | ||
| 37 | + * @param @param userId 用户ID | ||
| 38 | + * | ||
| 39 | + * @param @param mIds 线路ID字符串(1,2,3,4) | ||
| 40 | + * | ||
| 41 | + * @throws | ||
| 42 | + */ | ||
| 43 | + @RequestMapping(value = "/setLineCasts", method = RequestMethod.POST) | ||
| 44 | + public Map<String, Object> setLineCasts(@RequestParam Integer userId,@RequestParam String mIds){ | ||
| 45 | + return service.setLineCasts(userId, mIds); | ||
| 46 | + } | ||
| 47 | +} |
src/main/java/com/bsth/entity/sys/UserLine.java
0 → 100644
| 1 | +package com.bsth.entity.sys; | ||
| 2 | + | ||
| 3 | +import javax.persistence.Entity; | ||
| 4 | +import javax.persistence.GeneratedValue; | ||
| 5 | +import javax.persistence.GenerationType; | ||
| 6 | +import javax.persistence.Id; | ||
| 7 | +import javax.persistence.ManyToOne; | ||
| 8 | +import javax.persistence.Table; | ||
| 9 | + | ||
| 10 | +import com.bsth.entity.Line; | ||
| 11 | + | ||
| 12 | +/** | ||
| 13 | + * | ||
| 14 | + * @ClassName: Line(用户线路分配实体类) | ||
| 15 | + * | ||
| 16 | + * @Description: TODO(用户线路分配实体类) | ||
| 17 | + * | ||
| 18 | + * @Author bsth@lq | ||
| 19 | + * | ||
| 20 | + * @Date 2016年8月26日 09:03:33 | ||
| 21 | + * | ||
| 22 | + * @Version 公交调度系统BS版 0.1 | ||
| 23 | + * | ||
| 24 | + */ | ||
| 25 | + | ||
| 26 | +@Entity | ||
| 27 | +@Table(name = "bsth_c_user_line") | ||
| 28 | +public class UserLine { | ||
| 29 | + | ||
| 30 | + @Id | ||
| 31 | + @GeneratedValue(strategy = GenerationType.IDENTITY) | ||
| 32 | + private Integer id; | ||
| 33 | + | ||
| 34 | + @ManyToOne | ||
| 35 | + private Line line; | ||
| 36 | + | ||
| 37 | + @ManyToOne | ||
| 38 | + private SysUser user; | ||
| 39 | + | ||
| 40 | + public Line getLine() { | ||
| 41 | + return line; | ||
| 42 | + } | ||
| 43 | + | ||
| 44 | + public Integer getId() { | ||
| 45 | + return id; | ||
| 46 | + } | ||
| 47 | + | ||
| 48 | + public void setId(Integer id) { | ||
| 49 | + this.id = id; | ||
| 50 | + } | ||
| 51 | + | ||
| 52 | + public void setLine(Line line) { | ||
| 53 | + this.line = line; | ||
| 54 | + } | ||
| 55 | + | ||
| 56 | + public SysUser getUser() { | ||
| 57 | + return user; | ||
| 58 | + } | ||
| 59 | + | ||
| 60 | + public void setUser(SysUser user) { | ||
| 61 | + this.user = user; | ||
| 62 | + } | ||
| 63 | +} |
src/main/java/com/bsth/repository/StationRouteRepository.java
| @@ -108,7 +108,7 @@ public interface StationRouteRepository extends BaseRepository<StationRoute, Int | @@ -108,7 +108,7 @@ public interface StationRouteRepository extends BaseRepository<StationRoute, Int | ||
| 108 | * | 108 | * |
| 109 | * @return List<Object[]> | 109 | * @return List<Object[]> |
| 110 | */ | 110 | */ |
| 111 | - @Query(value = "SELECT s.b_jwpoints FROM (" + | 111 | + @Query(value = "SELECT s.b_jwpoints,s.station_name FROM (" + |
| 112 | "SELECT b.station FROM bsth_c_stationroute b where b.line =?1 and b.directions = ?2 and b.destroy=0) r " + | 112 | "SELECT b.station FROM bsth_c_stationroute b where b.line =?1 and b.directions = ?2 and b.destroy=0) r " + |
| 113 | "LEFT JOIN bsth_c_station s on r.station = s.id", nativeQuery=true) | 113 | "LEFT JOIN bsth_c_station s on r.station = s.id", nativeQuery=true) |
| 114 | List<Object[]> getSelectStationRouteCenterPoints(Integer lineId,Integer direction); | 114 | List<Object[]> getSelectStationRouteCenterPoints(Integer lineId,Integer direction); |
src/main/java/com/bsth/repository/sys/UserLineRepository.java
0 → 100644
| 1 | +package com.bsth.repository.sys; | ||
| 2 | + | ||
| 3 | +import org.springframework.data.jpa.repository.Modifying; | ||
| 4 | +import org.springframework.data.jpa.repository.Query; | ||
| 5 | +import org.springframework.stereotype.Repository; | ||
| 6 | +import org.springframework.transaction.annotation.Transactional; | ||
| 7 | + | ||
| 8 | +import com.bsth.entity.sys.UserLine; | ||
| 9 | +import com.bsth.repository.BaseRepository; | ||
| 10 | + | ||
| 11 | + | ||
| 12 | +@Repository | ||
| 13 | +public interface UserLineRepository extends BaseRepository<UserLine, Integer>{ | ||
| 14 | + | ||
| 15 | + @Modifying | ||
| 16 | + @Query(value="DELETE FROM bsth_c_user_line WHERE user = ?1", nativeQuery=true) | ||
| 17 | + public void del(int userId); | ||
| 18 | + | ||
| 19 | +} |
src/main/java/com/bsth/service/impl/StationRouteServiceImpl.java
| @@ -457,7 +457,9 @@ public class StationRouteServiceImpl extends BaseServiceImpl<StationRoute, Integ | @@ -457,7 +457,9 @@ public class StationRouteServiceImpl extends BaseServiceImpl<StationRoute, Integ | ||
| 457 | 457 | ||
| 458 | Map<String, Object> tempM = new HashMap<String,Object>(); | 458 | Map<String, Object> tempM = new HashMap<String,Object>(); |
| 459 | 459 | ||
| 460 | - tempM.put("bJwpoints", list.get(i)); | 460 | + tempM.put("bJwpoints", list.get(i)[0]); |
| 461 | + | ||
| 462 | + tempM.put("stationName", list.get(i)[1]); | ||
| 461 | 463 | ||
| 462 | resultList.add(tempM); | 464 | resultList.add(tempM); |
| 463 | 465 |
src/main/java/com/bsth/service/sys/UserLineService.java
0 → 100644
| 1 | +package com.bsth.service.sys; | ||
| 2 | +import java.util.List; | ||
| 3 | +import java.util.Map; | ||
| 4 | + | ||
| 5 | +import com.bsth.entity.sys.UserLine; | ||
| 6 | +import com.bsth.service.BaseService; | ||
| 7 | + | ||
| 8 | + | ||
| 9 | + | ||
| 10 | +/** | ||
| 11 | + * | ||
| 12 | + * @Interface: LineService(线路service业务层实现接口) | ||
| 13 | + * | ||
| 14 | + * @extends : BaseService | ||
| 15 | + * | ||
| 16 | + * @Description: TODO(线路service业务层实现接口) | ||
| 17 | + * | ||
| 18 | + * @Author bsth@lq | ||
| 19 | + * | ||
| 20 | + * @Date 2016年4月28日 上午9:21:17 | ||
| 21 | + * | ||
| 22 | + * @Version 公交调度系统BS版 0.1 | ||
| 23 | + * | ||
| 24 | + */ | ||
| 25 | +public interface UserLineService extends BaseService<UserLine, Integer> { | ||
| 26 | + | ||
| 27 | + List<Map<String, Object>> userRoleTree(Map<String, Object> map); | ||
| 28 | + | ||
| 29 | + Map<String, Object> setLineCasts(Integer userId, String mIds); | ||
| 30 | + | ||
| 31 | +} |
src/main/java/com/bsth/service/sys/impl/UserLineServiceImpl.java
0 → 100644
| 1 | +package com.bsth.service.sys.impl; | ||
| 2 | + | ||
| 3 | +import java.util.ArrayList; | ||
| 4 | +import java.util.HashMap; | ||
| 5 | +import java.util.HashSet; | ||
| 6 | +import java.util.Iterator; | ||
| 7 | +import java.util.List; | ||
| 8 | +import java.util.Map; | ||
| 9 | +import java.util.Set; | ||
| 10 | + | ||
| 11 | +import org.apache.catalina.User; | ||
| 12 | +import org.slf4j.Logger; | ||
| 13 | +import org.slf4j.LoggerFactory; | ||
| 14 | +import org.springframework.beans.factory.annotation.Autowired; | ||
| 15 | +import org.springframework.stereotype.Service; | ||
| 16 | +import org.springframework.transaction.annotation.Transactional; | ||
| 17 | + | ||
| 18 | +import com.bsth.common.ResponseCode; | ||
| 19 | +import com.bsth.entity.Line; | ||
| 20 | +import com.bsth.entity.search.CustomerSpecs; | ||
| 21 | +import com.bsth.entity.sys.Role; | ||
| 22 | +import com.bsth.entity.sys.SysUser; | ||
| 23 | +import com.bsth.entity.sys.UserLine; | ||
| 24 | +import com.bsth.repository.LineRepository; | ||
| 25 | +import com.bsth.repository.sys.RoleRepository; | ||
| 26 | +import com.bsth.repository.sys.SysUserRepository; | ||
| 27 | +import com.bsth.repository.sys.UserLineRepository; | ||
| 28 | +import com.bsth.service.impl.BaseServiceImpl; | ||
| 29 | +import com.bsth.service.sys.UserLineService; | ||
| 30 | + | ||
| 31 | + | ||
| 32 | +/** | ||
| 33 | + * Created by xu on 16/5/31. | ||
| 34 | + */ | ||
| 35 | +@Service | ||
| 36 | +public class UserLineServiceImpl extends BaseServiceImpl<UserLine, Integer> implements UserLineService { | ||
| 37 | + | ||
| 38 | + @Autowired | ||
| 39 | + private UserLineRepository repository; | ||
| 40 | + | ||
| 41 | + @Autowired | ||
| 42 | + private SysUserRepository userRepository; | ||
| 43 | + | ||
| 44 | + @Autowired | ||
| 45 | + private RoleRepository roleRepository; | ||
| 46 | + | ||
| 47 | + @Autowired | ||
| 48 | + private LineRepository lineRepository; | ||
| 49 | + | ||
| 50 | + Logger logger = LoggerFactory.getLogger(this.getClass()); | ||
| 51 | + | ||
| 52 | + @Override | ||
| 53 | + public List<Map<String, Object>> userRoleTree(Map<String, Object> map) { | ||
| 54 | + | ||
| 55 | + CustomerSpecs spec = new CustomerSpecs<Role>(map); | ||
| 56 | + | ||
| 57 | + List<Role> roleLine = roleRepository.findAll(spec); | ||
| 58 | + | ||
| 59 | + int size = roleLine.size(); | ||
| 60 | + | ||
| 61 | + List<Map<String, Object>> list = new ArrayList<>(); | ||
| 62 | + | ||
| 63 | + if(size>0){ | ||
| 64 | + | ||
| 65 | + for(int i = 0; i <size;i++) { | ||
| 66 | + | ||
| 67 | + Map<String, Object> tempM = new HashMap<String, Object>(); | ||
| 68 | + int roleId = roleLine.get(i).getId(); | ||
| 69 | + String roleName = roleLine.get(i).getRoleName(); | ||
| 70 | + tempM.put("name", roleName); | ||
| 71 | + tempM.put("text", roleName); | ||
| 72 | + tempM.put("icon", "fa fa-database"); | ||
| 73 | + tempM.put("pId",null); | ||
| 74 | + tempM.put("id", 100+roleId); | ||
| 75 | + tempM.put("groupType", "1"); | ||
| 76 | + tempM.put("enable", true); | ||
| 77 | + Set<SysUser> user = roleLine.get(i).getUsers(); | ||
| 78 | + Iterator<SysUser> it = user.iterator(); | ||
| 79 | + List<Map<String, Object>> roleChildren = new ArrayList<>(); | ||
| 80 | + while(it.hasNext()) { | ||
| 81 | + Map<String, Object> userMap = new HashMap<String, Object>(); | ||
| 82 | + SysUser tempU = it.next(); | ||
| 83 | + String userName = tempU.getUserName(); | ||
| 84 | + int userId = tempU.getId(); | ||
| 85 | + userMap.put("name", userName); | ||
| 86 | + userMap.put("text", userName); | ||
| 87 | + userMap.put("icon", "fa fa-user"); | ||
| 88 | + userMap.put("pId",100+roleId); | ||
| 89 | + userMap.put("id", 1000+userId); | ||
| 90 | + userMap.put("userId", userId); | ||
| 91 | + userMap.put("groupType", "2"); | ||
| 92 | + userMap.put("enable", true); | ||
| 93 | + roleChildren.add(userMap); | ||
| 94 | + | ||
| 95 | + } | ||
| 96 | + tempM.put("children", roleChildren); | ||
| 97 | + list.add(tempM); | ||
| 98 | + } | ||
| 99 | + | ||
| 100 | + } | ||
| 101 | + | ||
| 102 | + return list; | ||
| 103 | + } | ||
| 104 | + | ||
| 105 | + @Override | ||
| 106 | + @Transactional | ||
| 107 | + public Map<String, Object> setLineCasts(Integer userId, String mIds) { | ||
| 108 | + Map<String, Object> map = new HashMap<>(); | ||
| 109 | + | ||
| 110 | + try { | ||
| 111 | + | ||
| 112 | + repository.del(userId); | ||
| 113 | + | ||
| 114 | + SysUser user = userRepository.findOne(userId); | ||
| 115 | + | ||
| 116 | + List<Integer> idList = new ArrayList<>(); | ||
| 117 | + String[] array = mIds.split(","); | ||
| 118 | + for (String id : array) { | ||
| 119 | + if (null == id || id.trim().equals("")) | ||
| 120 | + continue; | ||
| 121 | + idList.add(Integer.parseInt(id)); | ||
| 122 | + } | ||
| 123 | + | ||
| 124 | + int size = idList.size(); | ||
| 125 | + | ||
| 126 | + if(size>0) { | ||
| 127 | + | ||
| 128 | + for(int i = 0 ; i<size;i++) { | ||
| 129 | + | ||
| 130 | + UserLine entity = new UserLine(); | ||
| 131 | + | ||
| 132 | + int lineId = idList.get(i); | ||
| 133 | + | ||
| 134 | + Line line = lineRepository.findOne(lineId); | ||
| 135 | + | ||
| 136 | + entity.setUser(user); | ||
| 137 | + | ||
| 138 | + entity.setLine(line); | ||
| 139 | + | ||
| 140 | + repository.save(entity); | ||
| 141 | + } | ||
| 142 | + | ||
| 143 | + } | ||
| 144 | + | ||
| 145 | + map.put("status", ResponseCode.SUCCESS); | ||
| 146 | + | ||
| 147 | + } catch (Exception e) { | ||
| 148 | + | ||
| 149 | + logger.error("", e); | ||
| 150 | + map.put("status", ResponseCode.ERROR); | ||
| 151 | + } | ||
| 152 | + | ||
| 153 | + return map; | ||
| 154 | + } | ||
| 155 | +} |
src/main/resources/static/pages/base/line/add.html
| @@ -189,6 +189,24 @@ | @@ -189,6 +189,24 @@ | ||
| 189 | </div> | 189 | </div> |
| 190 | </div> | 190 | </div> |
| 191 | 191 | ||
| 192 | + <!-- 起始站名称 --> | ||
| 193 | + <div class="form-group"> | ||
| 194 | + <label class="control-label col-md-3"> 起始站名称: </label> | ||
| 195 | + <div class="col-md-4"> | ||
| 196 | + <input type="text" class="form-control" name="startStationName" id="startStationNameInput" placeholder="起始站名称"> | ||
| 197 | + <span class="help-block"> 说明 :上行起始站名称 </span> | ||
| 198 | + </div> | ||
| 199 | + </div> | ||
| 200 | + | ||
| 201 | + <!-- 终点站名称 --> | ||
| 202 | + <div class="form-group"> | ||
| 203 | + <label class="control-label col-md-3"> 终点站名称: </label> | ||
| 204 | + <div class="col-md-4"> | ||
| 205 | + <input type="text" class="form-control" name="endStationName" id="endStationNameInput" placeholder="终点站名称"> | ||
| 206 | + <span class="help-block"> 说明 :上行终点站名称 </span> | ||
| 207 | + </div> | ||
| 208 | + </div> | ||
| 209 | + | ||
| 192 | <!-- 设备线路编码 --> | 210 | <!-- 设备线路编码 --> |
| 193 | <div class="form-group"> | 211 | <div class="form-group"> |
| 194 | <label class="control-label col-md-3"> 设备线路编码: </label> | 212 | <label class="control-label col-md-3"> 设备线路编码: </label> |
| @@ -221,27 +239,12 @@ | @@ -221,27 +239,12 @@ | ||
| 221 | </div> | 239 | </div> |
| 222 | </div> | 240 | </div> |
| 223 | 241 | ||
| 224 | - <!-- 起始站名称 --> | ||
| 225 | - <div class="form-group"> | ||
| 226 | - <label class="control-label col-md-3"> 起始站名称: </label> | ||
| 227 | - <div class="col-md-4"> | ||
| 228 | - <input type="text" class="form-control" name="startStationName" id="startStationNameInput" placeholder="起始站名称"> | ||
| 229 | - </div> | ||
| 230 | - </div> | ||
| 231 | - | ||
| 232 | - <!-- 终点站名称 --> | ||
| 233 | - <div class="form-group"> | ||
| 234 | - <label class="control-label col-md-3"> 终点站名称: </label> | ||
| 235 | - <div class="col-md-4"> | ||
| 236 | - <input type="text" class="form-control" name="endStationName" id="endStationNameInput" placeholder="终点站名称"> | ||
| 237 | - </div> | ||
| 238 | - </div> | ||
| 239 | - | ||
| 240 | <!-- 起始站首班车时间 --> | 242 | <!-- 起始站首班车时间 --> |
| 241 | <div class="form-group"> | 243 | <div class="form-group"> |
| 242 | <label class="control-label col-md-3"> 起始站首班车时间: </label> | 244 | <label class="control-label col-md-3"> 起始站首班车时间: </label> |
| 243 | <div class="col-md-4"> | 245 | <div class="col-md-4"> |
| 244 | <input type="text" class="form-control" name="startStationFirstTime" id="startStationFirstTimeInput" placeholder="起始站首班车时间"> | 246 | <input type="text" class="form-control" name="startStationFirstTime" id="startStationFirstTimeInput" placeholder="起始站首班车时间"> |
| 247 | + <span class="help-block"> 例如 :06:00 </span> | ||
| 245 | </div> | 248 | </div> |
| 246 | </div> | 249 | </div> |
| 247 | 250 | ||
| @@ -250,6 +253,7 @@ | @@ -250,6 +253,7 @@ | ||
| 250 | <label class="control-label col-md-3"> 起始站末班车时间: </label> | 253 | <label class="control-label col-md-3"> 起始站末班车时间: </label> |
| 251 | <div class="col-md-4"> | 254 | <div class="col-md-4"> |
| 252 | <input type="text" class="form-control" name="StartStationEndTime" id="StartStationEndTimeInput" placeholder="起始站末班车时间 "> | 255 | <input type="text" class="form-control" name="StartStationEndTime" id="StartStationEndTimeInput" placeholder="起始站末班车时间 "> |
| 256 | + <span class="help-block"> 例如 :17:00 </span> | ||
| 253 | </div> | 257 | </div> |
| 254 | </div> | 258 | </div> |
| 255 | 259 | ||
| @@ -259,6 +263,7 @@ | @@ -259,6 +263,7 @@ | ||
| 259 | <label class="control-label col-md-3"> 终点站首班车时间: </label> | 263 | <label class="control-label col-md-3"> 终点站首班车时间: </label> |
| 260 | <div class="col-md-4"> | 264 | <div class="col-md-4"> |
| 261 | <input type="text" class="form-control" name="endStationFirstTime" id="endStationFirstTimeInput" placeholder="终点站首班车时间"> | 265 | <input type="text" class="form-control" name="endStationFirstTime" id="endStationFirstTimeInput" placeholder="终点站首班车时间"> |
| 266 | + <span class="help-block"> 例如 :05:00 </span> | ||
| 262 | </div> | 267 | </div> |
| 263 | </div> | 268 | </div> |
| 264 | 269 | ||
| @@ -267,6 +272,7 @@ | @@ -267,6 +272,7 @@ | ||
| 267 | <label class="control-label col-md-3"> 终点站末班车时间: </label> | 272 | <label class="control-label col-md-3"> 终点站末班车时间: </label> |
| 268 | <div class="col-md-4"> | 273 | <div class="col-md-4"> |
| 269 | <input type="text" class="form-control" name="endStationEndTime" id="endStationEndTimeInput" placeholder="终点站末班车时间 "> | 274 | <input type="text" class="form-control" name="endStationEndTime" id="endStationEndTimeInput" placeholder="终点站末班车时间 "> |
| 275 | + <span class="help-block"> 例如 :18:00 </span> | ||
| 270 | </div> | 276 | </div> |
| 271 | </div> | 277 | </div> |
| 272 | 278 |
src/main/resources/static/pages/base/line/js/line-add-form.js
| @@ -162,7 +162,23 @@ $(function(){ | @@ -162,7 +162,23 @@ $(function(){ | ||
| 162 | required : true, | 162 | required : true, |
| 163 | 163 | ||
| 164 | // 最大长度 | 164 | // 最大长度 |
| 165 | - maxlength: 20 | 165 | + maxlength: 30 |
| 166 | + }, | ||
| 167 | + | ||
| 168 | + // 英文名称 | ||
| 169 | + 'es' : { | ||
| 170 | + | ||
| 171 | + // 最大长度 | ||
| 172 | + maxlength: 30 | ||
| 173 | + | ||
| 174 | + }, | ||
| 175 | + | ||
| 176 | + // 线路简称 | ||
| 177 | + 'shortName' : { | ||
| 178 | + | ||
| 179 | + // 最大长度 | ||
| 180 | + maxlength: 30 | ||
| 181 | + | ||
| 166 | }, | 182 | }, |
| 167 | 183 | ||
| 168 | // 线路编码 | 184 | // 线路编码 |
| @@ -172,9 +188,49 @@ $(function(){ | @@ -172,9 +188,49 @@ $(function(){ | ||
| 172 | required : true, | 188 | required : true, |
| 173 | 189 | ||
| 174 | // 最大长度 | 190 | // 最大长度 |
| 175 | - maxlength: 20 | 191 | + maxlength: 30 |
| 192 | + }, | ||
| 193 | + | ||
| 194 | + // 所属公司 | ||
| 195 | + 'company' : { | ||
| 196 | + | ||
| 197 | + // 最大长度 | ||
| 198 | + maxlength: 30 | ||
| 176 | }, | 199 | }, |
| 177 | 200 | ||
| 201 | + // 线路性质 | ||
| 202 | + 'nature' : { | ||
| 203 | + | ||
| 204 | + // 最大长度 | ||
| 205 | + maxlength: 30 | ||
| 206 | + | ||
| 207 | + }, | ||
| 208 | + | ||
| 209 | + // 线路等级 | ||
| 210 | + 'level' : { | ||
| 211 | + | ||
| 212 | + // 最大长度 | ||
| 213 | + maxlength: 30 | ||
| 214 | + | ||
| 215 | + }, | ||
| 216 | + | ||
| 217 | + // 起始站名称 | ||
| 218 | + 'startStationName' : { | ||
| 219 | + | ||
| 220 | + // 最大长度 | ||
| 221 | + maxlength: 30 | ||
| 222 | + | ||
| 223 | + }, | ||
| 224 | + | ||
| 225 | + // 终点站名称 | ||
| 226 | + 'endStationName' : { | ||
| 227 | + | ||
| 228 | + // 最大长度 | ||
| 229 | + maxlength: 30 | ||
| 230 | + | ||
| 231 | + }, | ||
| 232 | + | ||
| 233 | + | ||
| 178 | // 起始站调度电话 | 234 | // 起始站调度电话 |
| 179 | 'startPhone' : { | 235 | 'startPhone' : { |
| 180 | 236 | ||
| @@ -185,7 +241,10 @@ $(function(){ | @@ -185,7 +241,10 @@ $(function(){ | ||
| 185 | digits : true, | 241 | digits : true, |
| 186 | 242 | ||
| 187 | // 电话号码格式 | 243 | // 电话号码格式 |
| 188 | - isPhone : true | 244 | + isPhone : true, |
| 245 | + | ||
| 246 | + // 最大长度 | ||
| 247 | + maxlength: 30 | ||
| 189 | }, | 248 | }, |
| 190 | 249 | ||
| 191 | // 终点站调度电话 | 250 | // 终点站调度电话 |
| @@ -198,7 +257,10 @@ $(function(){ | @@ -198,7 +257,10 @@ $(function(){ | ||
| 198 | digits : true, | 257 | digits : true, |
| 199 | 258 | ||
| 200 | // 电话号码格式 | 259 | // 电话号码格式 |
| 201 | - isPhone : true | 260 | + isPhone : true, |
| 261 | + | ||
| 262 | + // 最大长度 | ||
| 263 | + maxlength: 30 | ||
| 202 | }, | 264 | }, |
| 203 | 265 | ||
| 204 | // 开辟日期 | 266 | // 开辟日期 |
| @@ -221,21 +283,27 @@ $(function(){ | @@ -221,21 +283,27 @@ $(function(){ | ||
| 221 | // 上海市线路编码 | 283 | // 上海市线路编码 |
| 222 | 'shanghaiLinecode' : { | 284 | 'shanghaiLinecode' : { |
| 223 | 285 | ||
| 224 | - // 必须输入合法的数字(负数,小数)。 | 286 | + /*// 必须输入合法的数字(负数,小数)。 |
| 225 | number : true, | 287 | number : true, |
| 226 | 288 | ||
| 227 | // 必须输入整数。 | 289 | // 必须输入整数。 |
| 228 | - digits : true | 290 | + digits : true,*/ |
| 291 | + | ||
| 292 | + // 最大长度 | ||
| 293 | + maxlength: 30 | ||
| 229 | }, | 294 | }, |
| 230 | 295 | ||
| 231 | // 设备线路编码 | 296 | // 设备线路编码 |
| 232 | 'eqLinecode' : { | 297 | 'eqLinecode' : { |
| 233 | 298 | ||
| 234 | - // 必须输入合法的数字(负数,小数)。 | 299 | + /*// 必须输入合法的数字(负数,小数)。 |
| 235 | number : true, | 300 | number : true, |
| 236 | 301 | ||
| 237 | // 必须输入整数。 | 302 | // 必须输入整数。 |
| 238 | - digits : true | 303 | + digits : true,*/ |
| 304 | + | ||
| 305 | + // 最大长度 | ||
| 306 | + maxlength: 30 | ||
| 239 | }, | 307 | }, |
| 240 | 308 | ||
| 241 | // 车辆总数 | 309 | // 车辆总数 |
| @@ -245,7 +313,10 @@ $(function(){ | @@ -245,7 +313,10 @@ $(function(){ | ||
| 245 | number : true, | 313 | number : true, |
| 246 | 314 | ||
| 247 | // 必须输入整数。 | 315 | // 必须输入整数。 |
| 248 | - digits : true | 316 | + digits : true, |
| 317 | + | ||
| 318 | + // 最大长度 | ||
| 319 | + maxlength: 8 | ||
| 249 | }, | 320 | }, |
| 250 | 321 | ||
| 251 | // 空调车辆数 | 322 | // 空调车辆数 |
| @@ -255,7 +326,10 @@ $(function(){ | @@ -255,7 +326,10 @@ $(function(){ | ||
| 255 | number : true, | 326 | number : true, |
| 256 | 327 | ||
| 257 | // 必须输入整数。 | 328 | // 必须输入整数。 |
| 258 | - digits : true | 329 | + digits : true, |
| 330 | + | ||
| 331 | + // 最大长度 | ||
| 332 | + maxlength: 8 | ||
| 259 | }, | 333 | }, |
| 260 | 334 | ||
| 261 | // 普通车辆数 | 335 | // 普通车辆数 |
| @@ -265,7 +339,10 @@ $(function(){ | @@ -265,7 +339,10 @@ $(function(){ | ||
| 265 | number : true, | 339 | number : true, |
| 266 | 340 | ||
| 267 | // 必须输入整数。 | 341 | // 必须输入整数。 |
| 268 | - digits : true | 342 | + digits : true, |
| 343 | + | ||
| 344 | + // 最大长度 | ||
| 345 | + maxlength: 8 | ||
| 269 | }, | 346 | }, |
| 270 | 347 | ||
| 271 | // 描述/说明 | 348 | // 描述/说明 |
src/main/resources/static/pages/base/line/js/line-list-table.js
| @@ -14,71 +14,16 @@ | @@ -14,71 +14,16 @@ | ||
| 14 | 14 | ||
| 15 | (function(){ | 15 | (function(){ |
| 16 | 16 | ||
| 17 | - /** 填充公司下拉框选择值 */ | ||
| 18 | - $get('/business/all', {upCode_eq: '77'}, function(array){ | ||
| 19 | - | ||
| 20 | - // 公司下拉options属性值 | ||
| 21 | - var options = '<option value="">请选择...</option>'; | ||
| 22 | - | ||
| 23 | - // 遍历array | ||
| 24 | - $.each(array, function(i,d){ | ||
| 25 | - | ||
| 26 | - options += '<option value="'+d.businessCode+'">'+d.businessName+'</option>'; | ||
| 27 | - | ||
| 28 | - }); | ||
| 29 | - | ||
| 30 | - // 填充公司下拉框options | ||
| 31 | - $('#companySelect').html(options) | ||
| 32 | - | ||
| 33 | - /** 闵行没下属公司,这里暂时注释公司值改变事件 */ | ||
| 34 | - //$('#companySelect').html(options).on('change', setbrancheCompanySelectOptions); | ||
| 35 | - | ||
| 36 | - }); | ||
| 37 | - | ||
| 38 | - /** 填充分公司下拉框。--- 闵行没下属公司,这里暂时注释*/ | ||
| 39 | - /* setbrancheCompanySelectOptions();*/ | ||
| 40 | - | ||
| 41 | - /** 填充分公司下拉框选择值 */ | ||
| 42 | - function setbrancheCompanySelectOptions(){ | ||
| 43 | - | ||
| 44 | - // 获取公司下拉框选择值 | ||
| 45 | - var businessCode = $('#companySelect').val(); | ||
| 46 | - | ||
| 47 | - // 分公司下拉框options属性值 | ||
| 48 | - var options = '<option value="">请选择...</option>'; | ||
| 49 | - | ||
| 50 | - // 如果公司选择为空则分公司为空 ; 否则查询出所属公司下的分公司名称和相应分公司代码 | ||
| 51 | - if(businessCode == null || businessCode ==''){ | ||
| 52 | - | ||
| 53 | - // 填充分公司下拉框options | ||
| 54 | - $('#brancheCompanySelect').html(options); | ||
| 55 | - | ||
| 56 | - } else { | ||
| 57 | - | ||
| 58 | - /** 查询出所属公司下的分公司名称和相应分公司代码 @param:<upCode_eq:公司代码> */ | ||
| 59 | - $get('/business/all', {upCode_eq: businessCode}, function(array){ | ||
| 60 | - | ||
| 61 | - // 遍历array | ||
| 62 | - $.each(array, function(i,d){ | ||
| 63 | - | ||
| 64 | - options += '<option value="'+d.businessCode+'">'+d.businessName+'</option>'; | ||
| 65 | - | ||
| 66 | - // 填充分公司下拉框options | ||
| 67 | - $('#brancheCompanySelect').html(options); | ||
| 68 | - | ||
| 69 | - }); | ||
| 70 | - }); | ||
| 71 | - } | ||
| 72 | - } | ||
| 73 | - | ||
| 74 | /** page : 当前页;initPag : */ | 17 | /** page : 当前页;initPag : */ |
| 75 | var page = 0,initPag; | 18 | var page = 0,initPag; |
| 76 | 19 | ||
| 77 | // 选择框 | 20 | // 选择框 |
| 78 | var icheckOptions = {checkboxClass: 'icheckbox_flat-blue',increaseArea: '20%'}; | 21 | var icheckOptions = {checkboxClass: 'icheckbox_flat-blue',increaseArea: '20%'}; |
| 79 | 22 | ||
| 23 | + $('#destroy').val(0); | ||
| 24 | + | ||
| 80 | /** 表格数据分页加载 @param:<null:搜索参数;true:是否重新分页> */ | 25 | /** 表格数据分页加载 @param:<null:搜索参数;true:是否重新分页> */ |
| 81 | - loadTableDate(null,true); | 26 | + loadTableDate({'destroy_eq':0},true); |
| 82 | 27 | ||
| 83 | /** 重置按钮事件 */ | 28 | /** 重置按钮事件 */ |
| 84 | $('tr.filter .filter-cancel').on('click',function() { | 29 | $('tr.filter .filter-cancel').on('click',function() { |
| @@ -161,8 +106,6 @@ | @@ -161,8 +106,6 @@ | ||
| 161 | // 异步请求获取表格数据 | 106 | // 异步请求获取表格数据 |
| 162 | $.get('/line',params,function(result){ | 107 | $.get('/line',params,function(result){ |
| 163 | 108 | ||
| 164 | - debugger; | ||
| 165 | - | ||
| 166 | // 添加序号 | 109 | // 添加序号 |
| 167 | result.content.page = page; | 110 | result.content.page = page; |
| 168 | 111 | ||
| @@ -258,6 +201,64 @@ | @@ -258,6 +201,64 @@ | ||
| 258 | }); | 201 | }); |
| 259 | } | 202 | } |
| 260 | 203 | ||
| 204 | + /** 填充公司下拉框选择值 */ | ||
| 205 | + $get('/business/all', {upCode_eq: '77'}, function(array){ | ||
| 206 | + | ||
| 207 | + // 公司下拉options属性值 | ||
| 208 | + var options = '<option value="">请选择...</option>'; | ||
| 209 | + | ||
| 210 | + // 遍历array | ||
| 211 | + $.each(array, function(i,d){ | ||
| 212 | + | ||
| 213 | + options += '<option value="'+d.businessCode+'">'+d.businessName+'</option>'; | ||
| 214 | + | ||
| 215 | + }); | ||
| 216 | + | ||
| 217 | + // 填充公司下拉框options | ||
| 218 | + $('#companySelect').html(options) | ||
| 219 | + | ||
| 220 | + /** 闵行没下属公司,这里暂时注释公司值改变事件 */ | ||
| 221 | + //$('#companySelect').html(options).on('change', setbrancheCompanySelectOptions); | ||
| 222 | + | ||
| 223 | + }); | ||
| 224 | + | ||
| 225 | + /** 填充分公司下拉框。--- 闵行没下属公司,这里暂时注释*/ | ||
| 226 | + /* setbrancheCompanySelectOptions();*/ | ||
| 227 | + | ||
| 228 | + /** 填充分公司下拉框选择值 */ | ||
| 229 | + function setbrancheCompanySelectOptions(){ | ||
| 230 | + | ||
| 231 | + // 获取公司下拉框选择值 | ||
| 232 | + var businessCode = $('#companySelect').val(); | ||
| 233 | + | ||
| 234 | + // 分公司下拉框options属性值 | ||
| 235 | + var options = '<option value="">请选择...</option>'; | ||
| 236 | + | ||
| 237 | + // 如果公司选择为空则分公司为空 ; 否则查询出所属公司下的分公司名称和相应分公司代码 | ||
| 238 | + if(businessCode == null || businessCode ==''){ | ||
| 239 | + | ||
| 240 | + // 填充分公司下拉框options | ||
| 241 | + $('#brancheCompanySelect').html(options); | ||
| 242 | + | ||
| 243 | + } else { | ||
| 244 | + | ||
| 245 | + /** 查询出所属公司下的分公司名称和相应分公司代码 @param:<upCode_eq:公司代码> */ | ||
| 246 | + $get('/business/all', {upCode_eq: businessCode}, function(array){ | ||
| 247 | + | ||
| 248 | + // 遍历array | ||
| 249 | + $.each(array, function(i,d){ | ||
| 250 | + | ||
| 251 | + options += '<option value="'+d.businessCode+'">'+d.businessName+'</option>'; | ||
| 252 | + | ||
| 253 | + // 填充分公司下拉框options | ||
| 254 | + $('#brancheCompanySelect').html(options); | ||
| 255 | + | ||
| 256 | + }); | ||
| 257 | + }); | ||
| 258 | + } | ||
| 259 | + } | ||
| 260 | + | ||
| 261 | + | ||
| 261 | /** 生成行单,这里暂时只做了单选生成。 */ | 262 | /** 生成行单,这里暂时只做了单选生成。 */ |
| 262 | $('#datatable_ajax_tools #createUsingSingle').on('click', function() { | 263 | $('#datatable_ajax_tools #createUsingSingle').on('click', function() { |
| 263 | 264 |
src/main/resources/static/pages/base/line/list.html
| @@ -110,7 +110,7 @@ | @@ -110,7 +110,7 @@ | ||
| 110 | </td> | 110 | </td> |
| 111 | <td> | 111 | <td> |
| 112 | <!-- 这里没使用字典表,暂时写在页面上 --> | 112 | <!-- 这里没使用字典表,暂时写在页面上 --> |
| 113 | - <select class="form-control form-filter " name="destroy_eq"> | 113 | + <select class="form-control form-filter " id='destroy' name="destroy_eq"> |
| 114 | <option value="">请选择...</option> | 114 | <option value="">请选择...</option> |
| 115 | <option value="0">运营</option> | 115 | <option value="0">运营</option> |
| 116 | <option value="1">撤销</option> | 116 | <option value="1">撤销</option> |
| @@ -291,4 +291,5 @@ | @@ -291,4 +291,5 @@ | ||
| 291 | </tr> | 291 | </tr> |
| 292 | {{/if}} | 292 | {{/if}} |
| 293 | </script> | 293 | </script> |
| 294 | -<script src="/pages/base/line/js/line-list-table.js"></script> | ||
| 295 | \ No newline at end of file | 294 | \ No newline at end of file |
| 295 | +<script src="/pages/base/line/js/line-list-table.js"></script> | ||
| 296 | +<!-- <a href="/pages/base/stationroute/list.html?no={{obj.id}}" class="btn default blue-stripe btn-sm" data-pjax> 查看 </a> --> | ||
| 296 | \ No newline at end of file | 297 | \ No newline at end of file |
src/main/resources/static/pages/base/linecast/cast.html
0 → 100644
| 1 | +<link href="/pages/base/linecast/css/cast.css" rel="stylesheet" type="text/css" /> | ||
| 2 | + | ||
| 3 | +<script type="text/javascript" src="/pages/base/linecast/js/jquery.quicksearch.js"></script> | ||
| 4 | + | ||
| 5 | +<div class="page-head"> | ||
| 6 | + <div class="page-title"> | ||
| 7 | + <h1>线路分配</h1> | ||
| 8 | + </div> | ||
| 9 | +</div> | ||
| 10 | +<ul class="page-breadcrumb breadcrumb"> | ||
| 11 | + <li><a href="/pages/home.html" data-pjax>首页</a> <i class="fa fa-circle"></i></li> | ||
| 12 | + <li><span class="active">权限管理</span> <i class="fa fa-circle"></i></li> | ||
| 13 | + <li><span class="active">线路分配</span></li> | ||
| 14 | +</ul> | ||
| 15 | + | ||
| 16 | +<div class="row"> | ||
| 17 | + <div class="col-md-4" style="padding-right: 0px;"> | ||
| 18 | + <div class="portlet light bordered" style="min-height: 520px;"> | ||
| 19 | + <div class="portlet-title"> | ||
| 20 | + <div class="caption"> | ||
| 21 | + <i class="fa fa-users font-dark"></i> | ||
| 22 | + <span class="caption-subject font-dark sbold uppercase">用户菜单</span> | ||
| 23 | + </div> | ||
| 24 | + </div> | ||
| 25 | + <div class="portlet-body"> | ||
| 26 | + <div id="modules_tree" ></div> | ||
| 27 | + </div> | ||
| 28 | + </div> | ||
| 29 | + </div> | ||
| 30 | + <div class="col-md-6" style="padding-left: 0px;"> | ||
| 31 | + <div class="portlet light bordered" style="height: 520px;"> | ||
| 32 | + <div class="portlet-body" style="min-height: 200px;" id="init-text"> | ||
| 33 | + <div class="text-info" style="text-align: center;line-height: 200px;"> | ||
| 34 | + <i class="fa fa-info"></i> 单击节点查看详细 | ||
| 35 | + </div> | ||
| 36 | + </div> | ||
| 37 | + | ||
| 38 | + <div style="display:none" id="line-cast"> | ||
| 39 | + <!-- BEGIN PORTLET--> | ||
| 40 | + <div class="portlet light bordered"> | ||
| 41 | + <div class="portlet-title"> | ||
| 42 | + <div class="caption"> | ||
| 43 | + <i class="icon-bar-chart font-green"></i> | ||
| 44 | + <span class="caption-subject font-green bold uppercase">线路配置</span> | ||
| 45 | + </div> | ||
| 46 | + <div class="actions"> | ||
| 47 | + <button class="btn green btn-circle btn-sm" disabled="disabled" id="saveModuleSett"><i class="fa fa-check"></i> 保存修改</button> | ||
| 48 | + </div> | ||
| 49 | + </div> | ||
| 50 | + <div class="portlet-body"> | ||
| 51 | + <div class="form-group last" > | ||
| 52 | + <div> | ||
| 53 | + <select multiple="multiple" class="multi-select" id="moduleSettSelect" ></select> | ||
| 54 | + </div> | ||
| 55 | + </div> | ||
| 56 | + </div> | ||
| 57 | + </div> | ||
| 58 | + </div> | ||
| 59 | + </div> | ||
| 60 | + </div> | ||
| 61 | +</div> | ||
| 62 | + | ||
| 63 | +<script type="text/html" id="left_line_cast"> | ||
| 64 | + | ||
| 65 | +</script> | ||
| 66 | + | ||
| 67 | +<script> | ||
| 68 | + | ||
| 69 | +$(function(){ | ||
| 70 | + | ||
| 71 | + getTreeData(function(treeData){ | ||
| 72 | + | ||
| 73 | + //初始化树 | ||
| 74 | + $('#modules_tree').on('loaded.jstree', function(e, data){close_all();}).jstree({ | ||
| 75 | + 'core' : { | ||
| 76 | + 'themes' : { | ||
| 77 | + 'responsive': false | ||
| 78 | + }, | ||
| 79 | + 'data': treeData, | ||
| 80 | + 'multiple':false | ||
| 81 | + }, | ||
| 82 | + 'types' : { | ||
| 83 | + "default" : { | ||
| 84 | + "icon" : false | ||
| 85 | + }, | ||
| 86 | + 'enable_true' : { | ||
| 87 | + "icon" : 'fa fa-check icon-lg' | ||
| 88 | + }, | ||
| 89 | + 'enable_false' : { | ||
| 90 | + 'icon' : 'fa fa-close icon-lg' | ||
| 91 | + }, | ||
| 92 | + 'group':{ | ||
| 93 | + 'icon' : 'fa fa-object-group icon-lg' | ||
| 94 | + } | ||
| 95 | + }, | ||
| 96 | + 'plugins': ['types'] | ||
| 97 | + }).on('select_node.jstree', jstreeClick); | ||
| 98 | + }); | ||
| 99 | + | ||
| 100 | + $('.tooltips').tooltip(); | ||
| 101 | + | ||
| 102 | +}); | ||
| 103 | + | ||
| 104 | +function jstreeClick(){ | ||
| 105 | + | ||
| 106 | + var selected = getCurrSelNode(); | ||
| 107 | + | ||
| 108 | + var obj = selected[0].original; | ||
| 109 | + | ||
| 110 | + $('#saveModuleSett').attr('disabled', 'disabled'); | ||
| 111 | + | ||
| 112 | + if(obj.pId==null) { | ||
| 113 | + | ||
| 114 | + $('#line-cast').hide(); | ||
| 115 | + | ||
| 116 | + $('#init-text').show(); | ||
| 117 | + }else { | ||
| 118 | + | ||
| 119 | + $('#line-cast').show(); | ||
| 120 | + | ||
| 121 | + $('#init-text').hide(); | ||
| 122 | + | ||
| 123 | + var userId = obj.userId; | ||
| 124 | + | ||
| 125 | + getModuleTreeData(userId); | ||
| 126 | + | ||
| 127 | + } | ||
| 128 | + | ||
| 129 | +} | ||
| 130 | + | ||
| 131 | +function getCurrSelNode(){ | ||
| 132 | + | ||
| 133 | + var array = []; | ||
| 134 | + | ||
| 135 | + try { | ||
| 136 | + | ||
| 137 | + array = $.jstree.reference("#modules_tree").get_selected(true); | ||
| 138 | + | ||
| 139 | + } catch (e) { | ||
| 140 | + | ||
| 141 | + console.log(e); | ||
| 142 | + | ||
| 143 | + } | ||
| 144 | + | ||
| 145 | + return array; | ||
| 146 | +} | ||
| 147 | + | ||
| 148 | +function close_all(){ | ||
| 149 | + | ||
| 150 | + $.jstree.reference("#modules_tree").close_all(); | ||
| 151 | + | ||
| 152 | +} | ||
| 153 | + | ||
| 154 | + | ||
| 155 | + | ||
| 156 | +function getTreeData(cb){ | ||
| 157 | + | ||
| 158 | + var treeData = []; | ||
| 159 | + | ||
| 160 | + $get('/userline/userRoleTree',null, function(arr){ | ||
| 161 | + | ||
| 162 | + //转换为jsTree想要的数据格式 | ||
| 163 | + treeData = createTreeData(arr); | ||
| 164 | + | ||
| 165 | + cb && cb(treeData) | ||
| 166 | + }); | ||
| 167 | +} | ||
| 168 | + | ||
| 169 | +function getModuleTreeData(userId){ | ||
| 170 | + | ||
| 171 | + | ||
| 172 | + $get('/line/all',null, function(linedata){ | ||
| 173 | + | ||
| 174 | + $get('/userline/all',{'user.id_eq':userId}, function(userlinedata){ | ||
| 175 | + | ||
| 176 | + var options = ''; | ||
| 177 | + | ||
| 178 | + var len = userlinedata.length; | ||
| 179 | + | ||
| 180 | + $.each(linedata, function(i, g){ | ||
| 181 | + | ||
| 182 | + //是否被当前用户持有 | ||
| 183 | + var selected = ''; | ||
| 184 | + | ||
| 185 | + if(len>0) { | ||
| 186 | + | ||
| 187 | + for(var j = 0;j<userlinedata.length;j++ ) { | ||
| 188 | + | ||
| 189 | + if(userlinedata[j].line.id==g.id){ | ||
| 190 | + | ||
| 191 | + selected = 'selected'; | ||
| 192 | + | ||
| 193 | + break; | ||
| 194 | + | ||
| 195 | + } | ||
| 196 | + | ||
| 197 | + } | ||
| 198 | + | ||
| 199 | + } | ||
| 200 | + | ||
| 201 | + options += '<option value="'+g.id+'" ' + selected +'>'+g.name+'</option>' | ||
| 202 | + | ||
| 203 | + }); | ||
| 204 | + | ||
| 205 | + //初始化multiSelect | ||
| 206 | + $('#moduleSettSelect').html(options).multiSelect({ | ||
| 207 | + selectableOptgroup: true, | ||
| 208 | + | ||
| 209 | + selectableFooter: "<div class='multi-custom-header-left'>未分配</div>", | ||
| 210 | + selectionFooter: "<div class='multi-custom-header-right'>已分配</div>", | ||
| 211 | + | ||
| 212 | + selectableHeader: "<input type='text' class='search-input' style='width: 221px;' autocomplete='off' placeholder='搜索线路'>", | ||
| 213 | + selectionHeader: "<input type='text' class='search-input' style='width: 221px;' autocomplete='off' placeholder='搜索线路'>", | ||
| 214 | + afterInit: function(ms){ | ||
| 215 | + var that = this, | ||
| 216 | + $selectableSearch = that.$selectableUl.prev(), | ||
| 217 | + $selectionSearch = that.$selectionUl.prev(), | ||
| 218 | + selectableSearchString = '#'+that.$container.attr('id')+' .ms-elem-selectable:not(.ms-selected)', | ||
| 219 | + selectionSearchString = '#'+that.$container.attr('id')+' .ms-elem-selection.ms-selected'; | ||
| 220 | + | ||
| 221 | + that.qs1 = $selectableSearch.quicksearch(selectableSearchString) | ||
| 222 | + .on('keydown', function(e){ | ||
| 223 | + if (e.which === 40){ | ||
| 224 | + that.$selectableUl.focus(); | ||
| 225 | + return false; | ||
| 226 | + } | ||
| 227 | + }); | ||
| 228 | + | ||
| 229 | + that.qs2 = $selectionSearch.quicksearch(selectionSearchString) | ||
| 230 | + .on('keydown', function(e){ | ||
| 231 | + if (e.which == 40){ | ||
| 232 | + that.$selectionUl.focus(); | ||
| 233 | + return false; | ||
| 234 | + } | ||
| 235 | + }); | ||
| 236 | + }, | ||
| 237 | + afterSelect: function(){ | ||
| 238 | + this.qs1.cache(); | ||
| 239 | + this.qs2.cache(); | ||
| 240 | + }, | ||
| 241 | + afterDeselect: function(){ | ||
| 242 | + this.qs1.cache(); | ||
| 243 | + this.qs2.cache(); | ||
| 244 | + } | ||
| 245 | + }).on('change',function(){ | ||
| 246 | + | ||
| 247 | + if( $(this).val() ==null || $(this).val().length > 0) | ||
| 248 | + $('#saveModuleSett').removeAttr('disabled'); | ||
| 249 | + else | ||
| 250 | + $('#saveModuleSett').attr('disabled', 'disabled'); | ||
| 251 | + }); | ||
| 252 | + | ||
| 253 | + $('#moduleSettSelect').multiSelect('refresh'); | ||
| 254 | + | ||
| 255 | + }); | ||
| 256 | + | ||
| 257 | + }); | ||
| 258 | +} | ||
| 259 | + | ||
| 260 | + | ||
| 261 | +$('#saveModuleSett').on('click', function(){ | ||
| 262 | + if($(this).attr('disabled')) | ||
| 263 | + return; | ||
| 264 | + | ||
| 265 | + var ids = ''; | ||
| 266 | + | ||
| 267 | + if($('#moduleSettSelect').val() !=null) { | ||
| 268 | + | ||
| 269 | + $.each($('#moduleSettSelect').val(), function(i, mId){ | ||
| 270 | + ids += mId + ','; | ||
| 271 | + }); | ||
| 272 | + | ||
| 273 | + } | ||
| 274 | + | ||
| 275 | + var selected = getCurrSelNode(); | ||
| 276 | + | ||
| 277 | + var obj = selected[0].original; | ||
| 278 | + | ||
| 279 | + if(obj) { | ||
| 280 | + | ||
| 281 | + $post('/userline/setLineCasts', {'userId': obj.userId,mIds: ids}, function(){ | ||
| 282 | + $('#saveModuleSett').attr('disabled', 'disabled'); | ||
| 283 | + layer.msg('修改成功!'); | ||
| 284 | + }); | ||
| 285 | + | ||
| 286 | + } | ||
| 287 | + | ||
| 288 | +}); | ||
| 289 | +</script> | ||
| 0 | \ No newline at end of file | 290 | \ No newline at end of file |
src/main/resources/static/pages/base/linecast/css/cast.css
0 → 100644
| 1 | +.jstree-default .jstree-hovered{ | ||
| 2 | + background-color: rgba(101, 155, 224, 0.19); | ||
| 3 | +} | ||
| 4 | + | ||
| 5 | +.jstree-default .jstree-clicked { | ||
| 6 | + background-color: #659BE0; | ||
| 7 | + color: white; | ||
| 8 | +} | ||
| 9 | +.layui-layer-cfm-delete .layui-layer-btn0{ | ||
| 10 | + background-color: #e73d4a; | ||
| 11 | + border-color: #CE3643; | ||
| 12 | +} | ||
| 0 | \ No newline at end of file | 13 | \ No newline at end of file |
src/main/resources/static/pages/base/linecast/js/jquery.quicksearch.js
0 → 100644
| 1 | +(function($, window, document, undefined) { | ||
| 2 | + $.fn.quicksearch = function (target, opt) { | ||
| 3 | + | ||
| 4 | + var timeout, cache, rowcache, jq_results, val = '', e = this, options = $.extend({ | ||
| 5 | + delay: 100, | ||
| 6 | + selector: null, | ||
| 7 | + stripeRows: null, | ||
| 8 | + loader: null, | ||
| 9 | + noResults: '', | ||
| 10 | + matchedResultsCount: 0, | ||
| 11 | + bind: 'keyup', | ||
| 12 | + onBefore: function () { | ||
| 13 | + return; | ||
| 14 | + }, | ||
| 15 | + onAfter: function () { | ||
| 16 | + return; | ||
| 17 | + }, | ||
| 18 | + show: function () { | ||
| 19 | + this.style.display = ""; | ||
| 20 | + }, | ||
| 21 | + hide: function () { | ||
| 22 | + this.style.display = "none"; | ||
| 23 | + }, | ||
| 24 | + prepareQuery: function (val) { | ||
| 25 | + return val.toLowerCase().split(' '); | ||
| 26 | + }, | ||
| 27 | + testQuery: function (query, txt, _row) { | ||
| 28 | + for (var i = 0; i < query.length; i += 1) { | ||
| 29 | + if (txt.indexOf(query[i]) === -1) { | ||
| 30 | + return false; | ||
| 31 | + } | ||
| 32 | + } | ||
| 33 | + return true; | ||
| 34 | + } | ||
| 35 | + }, opt); | ||
| 36 | + | ||
| 37 | + this.go = function () { | ||
| 38 | + | ||
| 39 | + var i = 0, | ||
| 40 | + numMatchedRows = 0, | ||
| 41 | + noresults = true, | ||
| 42 | + query = options.prepareQuery(val), | ||
| 43 | + val_empty = (val.replace(' ', '').length === 0); | ||
| 44 | + | ||
| 45 | + for (var i = 0, len = rowcache.length; i < len; i++) { | ||
| 46 | + if (val_empty || options.testQuery(query, cache[i], rowcache[i])) { | ||
| 47 | + options.show.apply(rowcache[i]); | ||
| 48 | + noresults = false; | ||
| 49 | + numMatchedRows++; | ||
| 50 | + } else { | ||
| 51 | + options.hide.apply(rowcache[i]); | ||
| 52 | + } | ||
| 53 | + } | ||
| 54 | + | ||
| 55 | + if (noresults) { | ||
| 56 | + this.results(false); | ||
| 57 | + } else { | ||
| 58 | + this.results(true); | ||
| 59 | + this.stripe(); | ||
| 60 | + } | ||
| 61 | + | ||
| 62 | + this.matchedResultsCount = numMatchedRows; | ||
| 63 | + this.loader(false); | ||
| 64 | + options.onAfter(); | ||
| 65 | + | ||
| 66 | + return this; | ||
| 67 | + }; | ||
| 68 | + | ||
| 69 | + /* | ||
| 70 | + * External API so that users can perform search programatically. | ||
| 71 | + * */ | ||
| 72 | + this.search = function (submittedVal) { | ||
| 73 | + val = submittedVal; | ||
| 74 | + e.trigger(); | ||
| 75 | + }; | ||
| 76 | + | ||
| 77 | + /* | ||
| 78 | + * External API to get the number of matched results as seen in | ||
| 79 | + * https://github.com/ruiz107/quicksearch/commit/f78dc440b42d95ce9caed1d087174dd4359982d6 | ||
| 80 | + * */ | ||
| 81 | + this.currentMatchedResults = function() { | ||
| 82 | + return this.matchedResultsCount; | ||
| 83 | + }; | ||
| 84 | + | ||
| 85 | + this.stripe = function () { | ||
| 86 | + | ||
| 87 | + if (typeof options.stripeRows === "object" && options.stripeRows !== null) | ||
| 88 | + { | ||
| 89 | + var joined = options.stripeRows.join(' '); | ||
| 90 | + var stripeRows_length = options.stripeRows.length; | ||
| 91 | + | ||
| 92 | + jq_results.not(':hidden').each(function (i) { | ||
| 93 | + $(this).removeClass(joined).addClass(options.stripeRows[i % stripeRows_length]); | ||
| 94 | + }); | ||
| 95 | + } | ||
| 96 | + | ||
| 97 | + return this; | ||
| 98 | + }; | ||
| 99 | + | ||
| 100 | + this.strip_html = function (input) { | ||
| 101 | + var output = input.replace(new RegExp('<[^<]+\>', 'g'), ""); | ||
| 102 | + output = $.trim(output.toLowerCase()); | ||
| 103 | + return output; | ||
| 104 | + }; | ||
| 105 | + | ||
| 106 | + this.results = function (bool) { | ||
| 107 | + if (typeof options.noResults === "string" && options.noResults !== "") { | ||
| 108 | + if (bool) { | ||
| 109 | + $(options.noResults).hide(); | ||
| 110 | + } else { | ||
| 111 | + $(options.noResults).show(); | ||
| 112 | + } | ||
| 113 | + } | ||
| 114 | + return this; | ||
| 115 | + }; | ||
| 116 | + | ||
| 117 | + this.loader = function (bool) { | ||
| 118 | + if (typeof options.loader === "string" && options.loader !== "") { | ||
| 119 | + (bool) ? $(options.loader).show() : $(options.loader).hide(); | ||
| 120 | + } | ||
| 121 | + return this; | ||
| 122 | + }; | ||
| 123 | + | ||
| 124 | + this.cache = function () { | ||
| 125 | + | ||
| 126 | + jq_results = $(target); | ||
| 127 | + | ||
| 128 | + if (typeof options.noResults === "string" && options.noResults !== "") { | ||
| 129 | + jq_results = jq_results.not(options.noResults); | ||
| 130 | + } | ||
| 131 | + | ||
| 132 | + var t = (typeof options.selector === "string") ? jq_results.find(options.selector) : $(target).not(options.noResults); | ||
| 133 | + cache = t.map(function () { | ||
| 134 | + return e.strip_html(this.innerHTML); | ||
| 135 | + }); | ||
| 136 | + | ||
| 137 | + rowcache = jq_results.map(function () { | ||
| 138 | + return this; | ||
| 139 | + }); | ||
| 140 | + | ||
| 141 | + /* | ||
| 142 | + * Modified fix for sync-ing "val". | ||
| 143 | + * Original fix https://github.com/michaellwest/quicksearch/commit/4ace4008d079298a01f97f885ba8fa956a9703d1 | ||
| 144 | + * */ | ||
| 145 | + val = val || this.val() || ""; | ||
| 146 | + | ||
| 147 | + return this.go(); | ||
| 148 | + }; | ||
| 149 | + | ||
| 150 | + this.trigger = function () { | ||
| 151 | + this.loader(true); | ||
| 152 | + options.onBefore(); | ||
| 153 | + | ||
| 154 | + window.clearTimeout(timeout); | ||
| 155 | + timeout = window.setTimeout(function () { | ||
| 156 | + e.go(); | ||
| 157 | + }, options.delay); | ||
| 158 | + | ||
| 159 | + return this; | ||
| 160 | + }; | ||
| 161 | + | ||
| 162 | + this.cache(); | ||
| 163 | + this.results(true); | ||
| 164 | + this.stripe(); | ||
| 165 | + this.loader(false); | ||
| 166 | + | ||
| 167 | + return this.each(function () { | ||
| 168 | + | ||
| 169 | + /* | ||
| 170 | + * Changed from .bind to .on. | ||
| 171 | + * */ | ||
| 172 | + $(this).on(options.bind, function () { | ||
| 173 | + | ||
| 174 | + val = $(this).val(); | ||
| 175 | + e.trigger(); | ||
| 176 | + }); | ||
| 177 | + }); | ||
| 178 | + | ||
| 179 | + }; | ||
| 180 | + | ||
| 181 | +}(jQuery, this, document)); | ||
| 0 | \ No newline at end of file | 182 | \ No newline at end of file |
src/main/resources/static/pages/base/stationroute/css/bmap_base.css
src/main/resources/static/pages/base/stationroute/css/img/back160.png
0 → 100644
3.28 KB
src/main/resources/static/pages/base/stationroute/edit.html
| @@ -443,6 +443,8 @@ $('#edit_station_mobal').on('editSelectMobal_show', function(e, map_,ajaxd,stati | @@ -443,6 +443,8 @@ $('#edit_station_mobal').on('editSelectMobal_show', function(e, map_,ajaxd,stati | ||
| 443 | // 弹出添加成功提示消息 | 443 | // 弹出添加成功提示消息 |
| 444 | layer.msg('修改成功...'); | 444 | layer.msg('修改成功...'); |
| 445 | 445 | ||
| 446 | + /** 通知更新缓存区 */ | ||
| 447 | + $.post('http://192.168.168.171:8800/transport_server/basic/refresh',function(rs){console.log(rs)}) | ||
| 446 | 448 | ||
| 447 | }else { | 449 | }else { |
| 448 | 450 |
src/main/resources/static/pages/base/stationroute/js/stationroute-list-function.js
| @@ -650,6 +650,8 @@ var PublicFunctions = function () { | @@ -650,6 +650,8 @@ var PublicFunctions = function () { | ||
| 650 | // 中心点坐标字符串 | 650 | // 中心点坐标字符串 |
| 651 | var bJwpointsStr = resultdata[s].bJwpoints; | 651 | var bJwpointsStr = resultdata[s].bJwpoints; |
| 652 | 652 | ||
| 653 | + var stationName = resultdata[s].stationName; | ||
| 654 | + | ||
| 653 | // 起个中心点坐标字符串 | 655 | // 起个中心点坐标字符串 |
| 654 | var bJwpointsArray = bJwpointsStr.split(' '); | 656 | var bJwpointsArray = bJwpointsStr.split(' '); |
| 655 | 657 | ||
| @@ -657,7 +659,7 @@ var PublicFunctions = function () { | @@ -657,7 +659,7 @@ var PublicFunctions = function () { | ||
| 657 | var point_center = new BMap.Point(bJwpointsArray[0],bJwpointsArray[1]); | 659 | var point_center = new BMap.Point(bJwpointsArray[0],bJwpointsArray[1]); |
| 658 | 660 | ||
| 659 | /** 在地图上画点 @param:<point_center:中心坐标点> */ | 661 | /** 在地图上画点 @param:<point_center:中心坐标点> */ |
| 660 | - WorldsBMap.drawingUpStationPoint(point_center); | 662 | + WorldsBMap.drawingUpStationPoint(point_center,stationName,s+1); |
| 661 | 663 | ||
| 662 | } | 664 | } |
| 663 | 665 |
src/main/resources/static/pages/base/stationroute/js/stationroute-list-map.js
| @@ -684,11 +684,26 @@ var WorldsBMap = function () { | @@ -684,11 +684,26 @@ var WorldsBMap = function () { | ||
| 684 | }, | 684 | }, |
| 685 | 685 | ||
| 686 | /** 在地图上画点 @param:<point_center:中心坐标点> */ | 686 | /** 在地图上画点 @param:<point_center:中心坐标点> */ |
| 687 | - drawingUpStationPoint : function(point_center) { | 687 | + drawingUpStationPoint : function(point_center,stationName,s) { |
| 688 | 688 | ||
| 689 | // 自定义标注物图片 | 689 | // 自定义标注物图片 |
| 690 | - var icon_target = new BMap.Icon('/pages/base/stationroute/css/img/cz.png',new BMap.Size(20, 20)); | ||
| 691 | - | 690 | + var icon_target = new BMap.Icon('/pages/base/stationroute/css/img/gjzd.png',new BMap.Size(10, 10)); |
| 691 | + | ||
| 692 | + var html2 = '<div style="position: absolute; margin: 0pt; padding: 0pt; width: 160px; height: 26px; left: -10px; top: -35px; overflow: hidden;">' | ||
| 693 | + + '<img class="rm3_image" style="border:none;left:0px; top:0px; position:absolute;" src="/pages/base/stationroute/css/img/back160.png">' | ||
| 694 | + + '</div>' | ||
| 695 | + + '<label class=" BMapLabel" unselectable="on" style="position: absolute; -moz-user-select: none; display: inline; cursor: inherit; border: 0px none; padding: 2px 1px 1px; white-space: nowrap; font: 12px arial,simsun; z-index: 80; color: rgb(255, 102, 0); left: 15px; top: -35px;"><span style="float: left; color: #fdfdfd; margin-left: -22px; font-size: 6px;">'+ s+'</span>'+ stationName+'</label>'; | ||
| 696 | + | ||
| 697 | + | ||
| 698 | + var myRichMarker1 = new BMapLib.RichMarker(html2, point_center,{ | ||
| 699 | + "anchor" : new BMap.Size(-10,8), | ||
| 700 | + "enableDragging" : true}); | ||
| 701 | + | ||
| 702 | + | ||
| 703 | + myRichMarker1.disableDragging(); | ||
| 704 | + mapBValue.addOverlay(myRichMarker1); | ||
| 705 | + | ||
| 706 | + | ||
| 692 | // 创建标注物 | 707 | // 创建标注物 |
| 693 | marker = new BMap.Marker(point_center,{icon : icon_target}); | 708 | marker = new BMap.Marker(point_center,{icon : icon_target}); |
| 694 | 709 |