Commit fb141b4f41bafe64bb97ab9f4d53edf8a781c138
Merge branch 'pudong_jdk8' of http://101.95.0.106:8888/panzhaov5/bsth_control into pudong_jdk8
Showing
15 changed files
with
1157 additions
and
932 deletions
src/main/java/com/bsth/controller/realcontrol/AdminUtilsController.java
| ... | ... | @@ -6,6 +6,7 @@ import java.text.SimpleDateFormat; |
| 6 | 6 | import java.util.*; |
| 7 | 7 | |
| 8 | 8 | import com.bsth.service.schedule.utils.SpringUtils; |
| 9 | +import com.bsth.util.MailUtils; | |
| 9 | 10 | import com.fasterxml.jackson.core.JsonProcessingException; |
| 10 | 11 | import com.fasterxml.jackson.databind.MapperFeature; |
| 11 | 12 | import com.fasterxml.jackson.databind.ObjectMapper; |
| ... | ... | @@ -44,6 +45,9 @@ public class AdminUtilsController { |
| 44 | 45 | Logger logger = LoggerFactory.getLogger(this.getClass()); |
| 45 | 46 | |
| 46 | 47 | @Autowired |
| 48 | + private ObjectMapper objectMapper; | |
| 49 | + | |
| 50 | + @Autowired | |
| 47 | 51 | DayOfSchedule dayOfSchedule; |
| 48 | 52 | |
| 49 | 53 | @Autowired |
| ... | ... | @@ -58,6 +62,9 @@ public class AdminUtilsController { |
| 58 | 62 | @Autowired |
| 59 | 63 | PilotReport pilotReport; |
| 60 | 64 | |
| 65 | + @Autowired | |
| 66 | + MailUtils mailUtils; | |
| 67 | + | |
| 61 | 68 | /** |
| 62 | 69 | * 出现重复班次的车辆 |
| 63 | 70 | * |
| ... | ... | @@ -258,4 +265,31 @@ public class AdminUtilsController { |
| 258 | 265 | |
| 259 | 266 | return "error"; |
| 260 | 267 | } |
| 268 | + | |
| 269 | + | |
| 270 | + | |
| 271 | + @RequestMapping("/changeEmail") | |
| 272 | + public String changeEmail(@RequestParam String email) { | |
| 273 | + Map<String, Object> result = new HashMap<>(); | |
| 274 | + try { | |
| 275 | + mailUtils.setEmailSendToAddress(email); | |
| 276 | + return "success"; | |
| 277 | + } catch (Exception e) { | |
| 278 | + e.printStackTrace(); | |
| 279 | + } | |
| 280 | + | |
| 281 | + return "error"; | |
| 282 | + } | |
| 283 | + | |
| 284 | + @RequestMapping("/viewEmail") | |
| 285 | + public String viewEmail() { | |
| 286 | + Map<String, Object> result = new HashMap<>(); | |
| 287 | + try { | |
| 288 | + return mailUtils.getEmailSendToAddress(); | |
| 289 | + } catch (Exception e) { | |
| 290 | + e.printStackTrace(); | |
| 291 | + } | |
| 292 | + | |
| 293 | + return "error"; | |
| 294 | + } | |
| 261 | 295 | } |
| 262 | 296 | \ No newline at end of file | ... | ... |
src/main/java/com/bsth/service/impl/StationServiceImpl.java
| ... | ... | @@ -1607,9 +1607,9 @@ public class StationServiceImpl extends BaseServiceImpl<Station, Integer> implem |
| 1607 | 1607 | // 在60m内认为是同一个站点 |
| 1608 | 1608 | Circle circle = new Circle(center, 60); |
| 1609 | 1609 | // 匹配到了用数据库中的点替换 |
| 1610 | - if (GeoUtils.isPointInCircle(point, circle)) { | |
| 1610 | + if (GeoUtils.isPointInCircle(point, circle) && !"stop".equals(s.getStationName().toLowerCase())) { | |
| 1611 | 1611 | map.put("name", s.getStationName().toString()); |
| 1612 | - // 匹配到站点后用这个站点的名字,但是使用gps点作为中心点 | |
| 1612 | +// 匹配到站点后用这个站点的名字,但是使用gps点作为中心点 | |
| 1613 | 1613 | // map.put("potion_lng", points[0]); |
| 1614 | 1614 | // map.put("potion_lat", points[1]); |
| 1615 | 1615 | map.put("potion_lng", lon); | ... | ... |
src/main/java/com/bsth/service/sys/impl/PwdGenerator.java
0 → 100644
| 1 | +package com.bsth.service.sys.impl; | |
| 2 | + | |
| 3 | +import java.util.Random; | |
| 4 | + | |
| 5 | +public class PwdGenerator { | |
| 6 | + private static final String SPECIAL_CHARS = "!@#$%^&*_=+-/"; | |
| 7 | + | |
| 8 | + /** | |
| 9 | + * 查找一个char数组中还没有填充字符的位置 | |
| 10 | + */ | |
| 11 | + private static int nextIndex(char[] chars, Random rnd) { | |
| 12 | + int index = rnd.nextInt(chars.length); | |
| 13 | + while (chars[index] != 0) { | |
| 14 | + index = rnd.nextInt(chars.length); | |
| 15 | + } | |
| 16 | + return index; | |
| 17 | + } | |
| 18 | + | |
| 19 | + /** | |
| 20 | + * 返回一个随机的特殊字符 | |
| 21 | + */ | |
| 22 | + private static char nextSpecialChar(Random rnd) { | |
| 23 | + return SPECIAL_CHARS.charAt(rnd.nextInt(SPECIAL_CHARS.length())); | |
| 24 | + } | |
| 25 | + | |
| 26 | + /** | |
| 27 | + * 返回一个随机的大写字母 | |
| 28 | + */ | |
| 29 | + private static char nextUpperLetter(Random rnd) { | |
| 30 | + return (char) ('A' + rnd.nextInt(26)); | |
| 31 | + } | |
| 32 | + | |
| 33 | + /** | |
| 34 | + * 返回一个随机的小写字母 | |
| 35 | + */ | |
| 36 | + private static char nextLowerLetter(Random rnd) { | |
| 37 | + return (char) ('a' + rnd.nextInt(26)); | |
| 38 | + } | |
| 39 | + | |
| 40 | + /** | |
| 41 | + * 返回一个随机的数字 | |
| 42 | + */ | |
| 43 | + private static char nextNumLetter(Random rnd) { | |
| 44 | + return (char) ('0' + rnd.nextInt(10)); | |
| 45 | + } | |
| 46 | + | |
| 47 | + /** | |
| 48 | + * 返回一个随机的字符 | |
| 49 | + */ | |
| 50 | + private static char nextChar(Random rnd) { | |
| 51 | + switch (rnd.nextInt(4)) { | |
| 52 | + case 0: | |
| 53 | + return (char) ('a' + rnd.nextInt(26)); | |
| 54 | + case 1: | |
| 55 | + return (char) ('A' + rnd.nextInt(26)); | |
| 56 | + case 2: | |
| 57 | + return (char) ('0' + rnd.nextInt(10)); | |
| 58 | + default: | |
| 59 | + return SPECIAL_CHARS.charAt(rnd.nextInt(SPECIAL_CHARS.length())); | |
| 60 | + } | |
| 61 | + } | |
| 62 | + | |
| 63 | + /** | |
| 64 | + * 生成指定位数的随机数 | |
| 65 | + */ | |
| 66 | + public static String randomPassword(int length) { | |
| 67 | + if(length < 3){ | |
| 68 | + return ""; | |
| 69 | + } | |
| 70 | + char[] chars = new char[length]; | |
| 71 | + Random rnd = new Random(); | |
| 72 | + | |
| 73 | + //1. 至少生成一个大写字母、小写字母、特殊字符、数字 | |
| 74 | + chars[nextIndex(chars, rnd)] = nextUpperLetter(rnd); | |
| 75 | + chars[nextIndex(chars, rnd)] = nextLowerLetter(rnd); | |
| 76 | + chars[nextIndex(chars, rnd)] = nextNumLetter(rnd); | |
| 77 | + | |
| 78 | + //2. 填补其他位置的字符 | |
| 79 | + for (int i = 0; i < length; i++) { | |
| 80 | + if (chars[i] == 0) { | |
| 81 | + chars[i] = nextChar(rnd); | |
| 82 | + } | |
| 83 | + } | |
| 84 | + | |
| 85 | + //3. 返回结果 | |
| 86 | + return new String(chars); | |
| 87 | + } | |
| 88 | + | |
| 89 | + | |
| 90 | + /** | |
| 91 | + * 测试代码 | |
| 92 | + */ | |
| 93 | + public static void main(String[] args) { | |
| 94 | + for (int i = 0; i < 10; i++) { | |
| 95 | + System.out.println(randomPassword(16)); | |
| 96 | + } | |
| 97 | + | |
| 98 | + } | |
| 99 | + | |
| 100 | +} | ... | ... |
src/main/java/com/bsth/service/sys/impl/SysUserServiceImpl.java
| ... | ... | @@ -2,6 +2,8 @@ package com.bsth.service.sys.impl; |
| 2 | 2 | |
| 3 | 3 | import com.bsth.common.ResponseCode; |
| 4 | 4 | import com.bsth.controller.sys.util.RSAUtils; |
| 5 | +import com.bsth.email.SendEmailController; | |
| 6 | +import com.bsth.email.entity.EmailBean; | |
| 5 | 7 | import com.bsth.entity.sys.Role; |
| 6 | 8 | import com.bsth.entity.sys.SysUser; |
| 7 | 9 | import com.bsth.repository.sys.SysUserRepository; |
| ... | ... | @@ -9,6 +11,8 @@ import com.bsth.security.util.SecurityUtils; |
| 9 | 11 | import com.bsth.service.impl.BaseServiceImpl; |
| 10 | 12 | import com.bsth.service.sys.RoleService; |
| 11 | 13 | import com.bsth.service.sys.SysUserService; |
| 14 | +import com.bsth.util.IpUtils; | |
| 15 | +import com.bsth.util.MailUtils; | |
| 12 | 16 | import com.google.gson.Gson; |
| 13 | 17 | import com.google.gson.reflect.TypeToken; |
| 14 | 18 | import org.slf4j.Logger; |
| ... | ... | @@ -33,6 +37,10 @@ public class SysUserServiceImpl extends BaseServiceImpl<SysUser, Integer> implem |
| 33 | 37 | @Autowired |
| 34 | 38 | RoleService roleService; |
| 35 | 39 | |
| 40 | + // 发送邮件 | |
| 41 | + @Autowired | |
| 42 | + private MailUtils mailUtils; | |
| 43 | + | |
| 36 | 44 | Logger logger = LoggerFactory.getLogger(this.getClass()); |
| 37 | 45 | |
| 38 | 46 | @Override |
| ... | ... | @@ -166,7 +174,14 @@ public class SysUserServiceImpl extends BaseServiceImpl<SysUser, Integer> implem |
| 166 | 174 | Legality = true; |
| 167 | 175 | } |
| 168 | 176 | if(Legality){ |
| 169 | - sysUserRepository.changePWD(id,new BCryptPasswordEncoder(4).encode("123456")); | |
| 177 | + String pwd = PwdGenerator.randomPassword(16); | |
| 178 | + sysUserRepository.changePWD(id,new BCryptPasswordEncoder(4).encode(pwd)); | |
| 179 | + //发送邮件 | |
| 180 | + EmailBean mail = new EmailBean(); | |
| 181 | + mail.setSubject(IpUtils.getLocalIpAddress() +":密码重置"); | |
| 182 | + mail.setContent(pwd); | |
| 183 | + mailUtils.sendMail(mail); | |
| 184 | + logger.info("setLD-sendMail:邮件发送成功!"); | |
| 170 | 185 | rs.put("status", ResponseCode.SUCCESS); |
| 171 | 186 | rs.put("msg", "密码重置成功!"); |
| 172 | 187 | }else { | ... | ... |
src/main/java/com/bsth/util/MailUtils.java
0 → 100644
| 1 | +package com.bsth.util; | |
| 2 | + | |
| 3 | +import com.bsth.email.SimpleMailSender; | |
| 4 | +import com.bsth.email.entity.EmailBean; | |
| 5 | +import org.springframework.beans.factory.annotation.Value; | |
| 6 | +import org.springframework.stereotype.Component; | |
| 7 | + | |
| 8 | +import java.util.List; | |
| 9 | + | |
| 10 | +/** | |
| 11 | + * @author Hill | |
| 12 | + */ | |
| 13 | +@Component | |
| 14 | +public class MailUtils { | |
| 15 | + | |
| 16 | + @Value("${admin.mail}") | |
| 17 | + private String emailSendToAddress; | |
| 18 | + | |
| 19 | + private Tools tools = new Tools("mailbox.properties"); | |
| 20 | + | |
| 21 | + private SimpleMailSender sms = new SimpleMailSender(tools.getValue("username"),tools.getValue("password")); | |
| 22 | + | |
| 23 | + public String getEmailSendToAddress() { | |
| 24 | + return emailSendToAddress; | |
| 25 | + } | |
| 26 | + | |
| 27 | + public void setEmailSendToAddress(String emailSendToAddress) { | |
| 28 | + this.emailSendToAddress = emailSendToAddress; | |
| 29 | + } | |
| 30 | + | |
| 31 | + /** | |
| 32 | + * recipients | |
| 33 | + * 收件人集合 | |
| 34 | ||
| 35 | + * 邮件 | |
| 36 | + */ | |
| 37 | + public int sendMail(List<String> recipients, EmailBean mail){ | |
| 38 | + try { | |
| 39 | + for (String recipient : recipients) { | |
| 40 | + sms.send(recipient, mail.getSubject(),mail.getContent()); | |
| 41 | + } | |
| 42 | + } catch (Exception e) { | |
| 43 | + e.printStackTrace(); | |
| 44 | + return -1; | |
| 45 | + } | |
| 46 | + return 1; | |
| 47 | + } | |
| 48 | + | |
| 49 | + /** | |
| 50 | + * recipient | |
| 51 | + * 收件人 | |
| 52 | ||
| 53 | + * 邮件 | |
| 54 | + */ | |
| 55 | + public int sendMail(String recipient,EmailBean mail){ | |
| 56 | + try { | |
| 57 | + sms.send(recipient, mail.getSubject(),mail.getContent()); | |
| 58 | + } catch (Exception e) { | |
| 59 | + e.printStackTrace(); | |
| 60 | + return -1; | |
| 61 | + } | |
| 62 | + return 1; | |
| 63 | + } | |
| 64 | + | |
| 65 | + public int sendMail(EmailBean mail){ | |
| 66 | + return sendMail(emailSendToAddress, mail); | |
| 67 | + } | |
| 68 | +} | ... | ... |
src/main/resources/application-dev.properties
| ... | ... | @@ -52,4 +52,6 @@ ms.fl.generate=true |
| 52 | 52 | ## dsm ack interface |
| 53 | 53 | dsm.ack.url= http://211.95.61.66:9008/modules/dsmCheckTheRecord/addDsm? |
| 54 | 54 | ## cp ack interface |
| 55 | -cp.ack.url= http://114.80.178.12:8778/prod-api/serverApi/instructionsIssue/confirm/ | |
| 56 | 55 | \ No newline at end of file |
| 56 | +cp.ack.url= http://114.80.178.12:8778/prod-api/serverApi/instructionsIssue/confirm/ | |
| 57 | +## admin mail | |
| 58 | +admin.mail= 3090342880@qq.com | |
| 57 | 59 | \ No newline at end of file | ... | ... |
src/main/resources/application-prod.properties
| ... | ... | @@ -54,4 +54,6 @@ ms.fl.generate=true |
| 54 | 54 | ## dsm ack interface |
| 55 | 55 | dsm.ack.url= http://211.95.61.66:9008/modules/dsmCheckTheRecord/addDsm? |
| 56 | 56 | ## cp ack interface |
| 57 | -cp.ack.url= http://114.80.178.12:8778/prod-api/serverApi/instructionsIssue/confirm/ | |
| 58 | 57 | \ No newline at end of file |
| 58 | +cp.ack.url= http://114.80.178.12:8778/prod-api/serverApi/instructionsIssue/confirm/ | |
| 59 | +## admin mail | |
| 60 | +admin.mail= 3090342880@qq.com | |
| 59 | 61 | \ No newline at end of file | ... | ... |
src/main/resources/application-test.properties
| ... | ... | @@ -45,4 +45,6 @@ ms.fl.generate=false |
| 45 | 45 | ## dsm ack interface |
| 46 | 46 | dsm.ack.url= http://211.95.61.66:9008/modules/dsmCheckTheRecord/addDsm? |
| 47 | 47 | ## cp ack interface |
| 48 | -cp.ack.url= http://114.80.178.12:8778/prod-api/serverApi/instructionsIssue/confirm/ | |
| 49 | 48 | \ No newline at end of file |
| 49 | +cp.ack.url= http://114.80.178.12:8778/prod-api/serverApi/instructionsIssue/confirm/ | |
| 50 | +## admin mail | |
| 51 | +admin.mail= 3090342880@qq.com | |
| 50 | 52 | \ No newline at end of file | ... | ... |
src/main/resources/static/pages/base/line/add.html
| ... | ... | @@ -383,7 +383,7 @@ |
| 383 | 383 | |
| 384 | 384 | <!-- 线路票价 START --> |
| 385 | 385 | <div class="col-md-6"> |
| 386 | - <label class="control-label col-md-5"> 票价 :</label> | |
| 386 | + <label class="control-label col-md-5"> <span class="required"> * </span>票价 :</label> | |
| 387 | 387 | <div class="col-md-4"> |
| 388 | 388 | <input type="text" class="form-control" name="ticketPrice" id="ticketPriceInput" |
| 389 | 389 | placeholder="票价"> | ... | ... |
src/main/resources/static/pages/base/line/editRoute.html
| ... | ... | @@ -221,6 +221,7 @@ $('#edit_route_mobal').on('editRouteMobal.show', function(e,transGPS,editRoute,m |
| 221 | 221 | |
| 222 | 222 | }, |
| 223 | 223 | submitHandler : function(f) { |
| 224 | + debugger; | |
| 224 | 225 | // 隐藏弹出层 |
| 225 | 226 | $('#edit_route_mobal').modal('hide'); |
| 226 | 227 | // 获取线路对象 |
| ... | ... | @@ -324,17 +325,21 @@ $('#edit_route_mobal').on('editRouteMobal.show', function(e,transGPS,editRoute,m |
| 324 | 325 | var tempStr = paramsStationsArray[k].split('\t'); |
| 325 | 326 | var tempPoint = transGpsLoc(tempStr[0],tempStr[1]); |
| 326 | 327 | var point = {lng:tempPoint.lng, lat:tempPoint.lat}; |
| 328 | + | |
| 329 | + sectionList[k] = point; | |
| 330 | + | |
| 327 | 331 | if(tempStr.length < 4){ |
| 328 | - sectionList[k] = point; | |
| 329 | 332 | isPush = true; |
| 330 | 333 | }else { |
| 331 | 334 | if(isPush) { |
| 332 | - sectionList[k] = point; | |
| 333 | 335 | stationList.push({name:tempStr[3], potion:{lng:tempPoint.lng, lat:tempPoint.lat} , wgs:{x:tempStr[0], y:tempStr[1]}}); |
| 336 | + } else { | |
| 337 | + sectionList[k] = point; | |
| 334 | 338 | } |
| 335 | 339 | isPush = false; |
| 336 | 340 | } |
| 337 | 341 | } |
| 342 | + | |
| 338 | 343 | for(var i = 0 ;i<sectionList.length;i++) { |
| 339 | 344 | if(sectionList[i] == "" || isNaN(sectionList[i].lng) || typeof(sectionList[i]) == "undefined" || sectionList[i] == null) { |
| 340 | 345 | sectionList.splice(i,1);//删除数组中下表i-i+1之间的值 | ... | ... |
src/main/resources/static/pages/base/line/js/line-add-form.js
| 1 | -/** | |
| 2 | - * @description TODO(线路信息添加片段JS模块) | |
| 3 | - * | |
| 4 | - * @author bsth@lq | |
| 5 | - * | |
| 6 | - * @date 二〇一六年十月十八日 13:31:58 | |
| 7 | - * | |
| 8 | - */ | |
| 9 | - | |
| 10 | -$(function(){ | |
| 11 | - /** 获取线路编码 @param cb <回调函数> */ | |
| 12 | - /*function getLineCode(cb) { | |
| 13 | - *//** get请求获取线路编码。返回线路编码值 *//* | |
| 14 | - $.get('/line/getLineCode',function(lineCode){ | |
| 15 | - return cb && cb(lineCode); | |
| 16 | - }); | |
| 17 | - }*/ | |
| 18 | - /** 填充分公司下拉框选择值 */ | |
| 19 | - function setbrancheCompanySelectOptions(){ | |
| 20 | - // 获取公司下拉框选择值 | |
| 21 | - var businessCode = $('#companySelect').val(); | |
| 22 | - // 分公司下拉框options属性值 | |
| 23 | - var options = '<option value="">-- 请选择分公司 --</option>'; | |
| 24 | - // 如果公司选择为空则分公司为空 ; 否则查询出所属公司下的分公司名称和相应分公司代码 | |
| 25 | - if(businessCode == null || businessCode ==''){ | |
| 26 | - // 填充分公司下拉框options | |
| 27 | - $('#brancheCompanySelect').html(options); | |
| 28 | - } else { | |
| 29 | - // 查询出所属公司下的分公司名称和相应分公司代码 | |
| 30 | - $get('/business/all', {upCode_eq: businessCode}, function(array){ | |
| 31 | - // 遍历array | |
| 32 | - $.each(array, function(i,d){ | |
| 33 | - options += '<option value="'+d.businessCode+'">'+d.businessName+'</option>'; | |
| 34 | - }); | |
| 35 | - | |
| 36 | - // 填充分公司下拉框options | |
| 37 | - $('#brancheCompanySelect').html(options); | |
| 38 | - }); | |
| 39 | - } | |
| 40 | - } | |
| 41 | - /** 根据线路名称值设置英文名称值和线路简称 */ | |
| 42 | - function setPinYin(){ | |
| 43 | - /** 获取线路名称值 */ | |
| 44 | - var val = $('#nameInput').val(); | |
| 45 | - /** 汉字转换为拼音 设置英文名称值 */ | |
| 46 | - $('#esInput').val(pinyin.getFullChars(val)); | |
| 47 | - /** 汉字转换为拼音将每一个字的拼音的首字母提取出来并大写 设置线路简称值 */ | |
| 48 | - $('#shortNameInput').val(pinyin.getCamelChars(val)); | |
| 49 | - } | |
| 50 | - | |
| 51 | - /** 获取线路编码元素并设值 @param 匿名函数 *//* | |
| 52 | - getLineCode(function(result){ | |
| 53 | - // 设置线路编码值 | |
| 54 | - $('#lineCodeInput').val(result); | |
| 55 | - })*/ | |
| 56 | - /** 输入线路名称,自动生成英文名称和线路简称 */ | |
| 57 | - $('#nameInput').on('keyup', setPinYin); | |
| 58 | - /** 开辟日期 日期控件 <format:日期控件时间格式;locale:语言> */ | |
| 59 | - $('#openDateInput').datetimepicker({format : 'YYYY-MM-DD', locale: 'zh-cn'}); | |
| 60 | - /** 起始站首班时间 日期控件 <format:日期控件时间格式;locale:语言> */ | |
| 61 | - $('#startStationFirstTimeInput').datetimepicker({format : 'HH:mm', locale: 'zh-cn'}); | |
| 62 | - /** 起始站末班时间 日期控件 <format:日期控件时间格式;locale:语言> */ | |
| 63 | - $('#endTimeInput').datetimepicker({format : 'HH:mm', locale: 'zh-cn'}); | |
| 64 | - /** 终点站首班时间 日期控件 <format:日期控件时间格式;locale:语言> */ | |
| 65 | - $('#endStationFirstTimeInput').datetimepicker({format : 'HH:mm', locale: 'zh-cn'}); | |
| 66 | - /** 终点站末班时间 日期控件 <format:日期控件时间格式;locale:语言> */ | |
| 67 | - $('#endStationEndTimeInput').datetimepicker({format : 'HH:mm',locale: 'zh-cn'}); | |
| 68 | - /** get请求获取公司表数据并填充公司下拉框选择值 */ | |
| 69 | - $get('/business/all', {upCode_eq: '88'}, function(array){ | |
| 70 | - /** 公司下拉options属性值 */ | |
| 71 | - var options = '<option value="">-- 请选择公司 --</option>'; | |
| 72 | - /** 遍历array */ | |
| 73 | - $.each(array, function(i,d){ | |
| 74 | - options += '<option value="'+d.businessCode+'">'+d.businessName+'</option>'; | |
| 75 | - }); | |
| 76 | - /** 填充公司下拉框options,并添加公司下拉框值改变事件setbrancheCompanySelectOptions */ | |
| 77 | - $('#companySelect').html(options).on('change', setbrancheCompanySelectOptions); | |
| 78 | - }); | |
| 79 | - | |
| 80 | - /** 填充分公司下拉框 */ | |
| 81 | - setbrancheCompanySelectOptions(); | |
| 82 | - // 定义表单 | |
| 83 | - var form = $('#line_add_form'); | |
| 84 | - // 定义表单异常 | |
| 85 | - var error = $('.alert-danger',form); | |
| 86 | - // 表单验证 | |
| 87 | - form.validate({ | |
| 88 | - // 错误提示元素span对象 | |
| 89 | - errorElement : 'span', | |
| 90 | - // 错误提示元素class名称 | |
| 91 | - errorClass : 'help-block help-block-error', | |
| 92 | - // 验证错误获取焦点 | |
| 93 | - focusInvalid : true, | |
| 94 | - // 需要验证的表单元素 | |
| 95 | - rules : { | |
| 96 | - 'name' : {required : true,maxlength: 30},// 线路名称 必填项、 最大长度. | |
| 97 | - 'lineCode' : {required : true,maxlength: 6,digits:true ,isLineCode:true, | |
| 98 | - remote:{type: 'GET', | |
| 99 | - url: '/line/lineCodeVerification', | |
| 100 | - cache:false, | |
| 101 | - async:false, | |
| 102 | - data:{'lineCode':function(){ return $("#lineCodeInput").val();}} | |
| 103 | - }},// 线路编码 必填项、最大长度. | |
| 104 | - 'company' : {required : true,maxlength: 30},// 所属公司 必填项、最大长度. | |
| 105 | - 'brancheCompany' : {required : true,maxlength: 30},// 所属分公司 必填项、最大长度. | |
| 106 | - 'level' : {required : true,maxlength: 30},// 线路等级 必填项、最大长度. | |
| 107 | - 'nature' : {required : true,maxlength: 30},// 线路性质 必填项、最大长度. | |
| 108 | - 'startStationName' : {required : true,maxlength: 30},// 起始站名称 必填项、最大长度. | |
| 109 | - 'endStationName' : {required : true,maxlength: 30},// 终点站名称 必填项、最大长度. | |
| 110 | - 'startStationFirstTime' : {required : true,maxlength: 30},// 起始站首班时间 必填项、最大长度. | |
| 111 | - 'StartStationEndTime' : {required : true,maxlength: 30},// 起始站末班时间 必填项、最大长度. | |
| 112 | - 'endStationFirstTime' : {required : true,maxlength: 30},// 终点站首班时间 必填项、最大长度. | |
| 113 | - 'endStationEndTime' : {required : true,maxlength: 30},// 终点站末班时间 必填项、最大长度. | |
| 114 | - 'linePlayType' : {required : true,maxlength: 30},// 线路规划类型 <0:双向;1:环线> 必填项、最大长度. | |
| 115 | - 'openDate' : {date : true,dateISO:true},// 开辟日期 正确格式的日期(日期校验 ie6 出错,慎用。)必须输入正确格式的日期(ISO),例如:2009-06-23,1998/01/22。只验证格式,不验证有效性。 | |
| 116 | - 'es' : {maxlength: 30},// 英文名称 最大长度. | |
| 117 | - 'shortName' : {maxlength: 30},// 线路简称 最大长度. | |
| 118 | - 'shanghaiLinecode' : {maxlength: 30},// 上海市线路编码 最大长度. | |
| 119 | - 'eqLinecode' : {maxlength: 30},// 设备线路编码 最大长度. | |
| 120 | - 'startPhone' : {number : true,digits : true,isPhone : true,maxlength: 30},// 起始站调度电话 必须输入合法的数字(负数,小数)。必须输入整数。电话号码格式 最大长度 | |
| 121 | - 'endPhone' : {number : true,digits : true,isPhone : true,maxlength: 30},// 终点站调度电话 必须输入合法的数字(负数,小数)。必须输入整数。电话号码格式 、最大长度 | |
| 122 | - 'carSumNumber' : {number : true,digits : true,maxlength: 8},// 车辆总数 必须输入合法的数字(负数,小数)。必须输入整数。最大长度. | |
| 123 | - 'hvacCarNumber' : {number : true,digits : true,maxlength: 8},// 空调车辆数 必须输入合法的数字(负数,小数)。 必须输入整数。 最大长度. | |
| 124 | - 'ordCarNumber' : {number : true,digits : true,maxlength: 8},// 普通车辆数 必须输入合法的数字(负数,小数)。 必须输入整数。最大长度. | |
| 125 | - 'history' : {maxlength: 200},// 线路沿革 输入长度最多是 200 的字符串(汉字算一个字符)。 | |
| 126 | - 'descriptions' : {maxlength: 200},// 描述/说明 输入长度最多是 200 的字符串(汉字算一个字符)。 | |
| 127 | - 'region' : {required : true}// 线路区域必选 | |
| 128 | - }, | |
| 129 | - messages:{ | |
| 130 | - 'lineCode':{ | |
| 131 | - remote: '此线路编码已存在!' | |
| 132 | - } | |
| 133 | - }, | |
| 134 | - /** | |
| 135 | - * 类型:Callback。当未通过验证的表单提交时,可以在该回调函数中处理一些事情。 | |
| 136 | - * | |
| 137 | - * 参数:该回调函数有两个参数:第一个为一个事件对象,第二个为验证器(validator) | |
| 138 | - */ | |
| 139 | - invalidHandler : function(event, validator) { | |
| 140 | - | |
| 141 | - // 显示表单未通过提示信息 | |
| 142 | - error.show(); | |
| 143 | - | |
| 144 | - // 把提示信息放到指定的位置。 | |
| 145 | - App.scrollTo(error, -200); | |
| 146 | - }, | |
| 147 | - | |
| 148 | - /** | |
| 149 | - * 类型:Callback。 | |
| 150 | - * | |
| 151 | - * 默认:添加errorClass("has-error")到表单元素。将未通过验证的表单元素设置高亮。 | |
| 152 | - */ | |
| 153 | - highlight : function(element) { | |
| 154 | - | |
| 155 | - // 添加errorClass("has-error")到表单元素 | |
| 156 | - $(element).closest('.form-group').addClass('has-error'); | |
| 157 | - | |
| 158 | - }, | |
| 159 | - | |
| 160 | - /** | |
| 161 | - * 类型:Callback。 | |
| 162 | - * | |
| 163 | - * 默认:移除errorClass("has-error")。与highlight操作相反 | |
| 164 | - */ | |
| 165 | - unhighlight : function(element) { | |
| 166 | - | |
| 167 | - // 移除errorClass("has-error") | |
| 168 | - $(element).closest('.form-group').removeClass('has-error'); | |
| 169 | - | |
| 170 | - }, | |
| 171 | - | |
| 172 | - /** | |
| 173 | - * 类型:String,Callback。 | |
| 174 | - * | |
| 175 | - * 如果指定它,当验证通过时显示一个消息。 | |
| 176 | - * | |
| 177 | - * 如果是String类型的,则添加该样式到标签中; | |
| 178 | - * | |
| 179 | - * 如果是一个回调函数,则将标签作为其唯一的参数。 | |
| 180 | - */ | |
| 181 | - success : function(label) { | |
| 182 | - | |
| 183 | - // 当验证通过时,移除errorClass("has-error") | |
| 184 | - label.closest('.form-group').removeClass('has-error'); | |
| 185 | - | |
| 186 | - }, | |
| 187 | - | |
| 188 | - /** | |
| 189 | - * 类型:Callback。 | |
| 190 | - * | |
| 191 | - * 默认:default (native) form submit;当表单通过验证,提交表单。回调函数有个默认参数form | |
| 192 | - */ | |
| 193 | - submitHandler : function(f) { | |
| 194 | - | |
| 195 | - // 隐藏错误提示 | |
| 196 | - error.hide(); | |
| 197 | - // 表单序列化 | |
| 198 | - var params = form.serializeJSON(); | |
| 199 | - submit(); | |
| 200 | - | |
| 201 | - // 查询线路编码的顺延号 | |
| 202 | - /*$get('/line/all', {lineCode_eq: params.lineCode},function(lineCode){ | |
| 203 | - | |
| 204 | - // 定义返回值的长度 | |
| 205 | - var len = lineCode.length; | |
| 206 | - | |
| 207 | - // 如果大于零,则已存在录入的线路编码;否则不存在 | |
| 208 | - if(len > 0) { | |
| 209 | - | |
| 210 | - // 定义已有的线路编码 | |
| 211 | - var oldCode = params.lineCode; | |
| 212 | - | |
| 213 | - // 自动获取线路编码 | |
| 214 | - getLineCode(function(result) { | |
| 215 | - | |
| 216 | - // 重新设置提交参数线路编码值 | |
| 217 | - params.lineCode = result; | |
| 218 | - | |
| 219 | - // 弹出选择框;确认则提交;取消则返回 | |
| 220 | - layer.confirm('线路编码【'+oldCode+'】已存在!自动顺延为如下:<br>线路编码:'+result, { | |
| 221 | - btn : [ '确认提示并提交', '取消' ] | |
| 222 | - }, submit); | |
| 223 | - | |
| 224 | - }); | |
| 225 | - layer.open({ | |
| 226 | - title: '消息提示' | |
| 227 | - ,content: '线路编码【'+params.lineCode+'】已存在,请重新输入编码!' | |
| 228 | - }); | |
| 229 | - } else { | |
| 230 | - | |
| 231 | - // 提交 | |
| 232 | - submit(); | |
| 233 | - | |
| 234 | - } | |
| 235 | - });*/ | |
| 236 | - | |
| 237 | - | |
| 238 | - // 提交 | |
| 239 | - function submit() { | |
| 240 | - | |
| 241 | - // 防止用户多次提交 | |
| 242 | - $("#submintBtn").addClass("disabled"); | |
| 243 | - | |
| 244 | - // 添加数据 | |
| 245 | - $post('/line', params, function(result) { | |
| 246 | - // 如果返回结果不为空 | |
| 247 | - if(result){ | |
| 248 | - | |
| 249 | - // 返回状态码为"SUCCESS" ,则添加成功;返回状态码为"ERROR" ,则添加失败 | |
| 250 | - if(result.status=='SUCCESS') { | |
| 251 | - | |
| 252 | - // 弹出添加成功提示消息 | |
| 253 | - layer.msg('添加成功,并已自动为您生成线路原始版本,可以在线路版本信息下查看!', {time: 7000}); | |
| 254 | - | |
| 255 | - } else if(result.status=='ERROR') { | |
| 256 | - | |
| 257 | - // 弹出添加失败提示消息 | |
| 258 | - layer.msg('添加失败...'); | |
| 259 | - | |
| 260 | - } | |
| 261 | - } | |
| 262 | - | |
| 263 | - // 返回list.html页面 | |
| 264 | - loadPage('list.html'); | |
| 265 | - }); | |
| 266 | - } | |
| 267 | - } | |
| 268 | - }); | |
| 269 | - | |
| 270 | - // 线路编码不能0开头 | |
| 271 | - $.validator.addMethod("isLineCode", function(value,element) { | |
| 272 | - // 线路编码正则表达式 | |
| 273 | - var lineCode = /^([1-9])/; | |
| 274 | - return lineCode.test(value); | |
| 275 | - }, "线路编码不能以0开头"); | |
| 276 | - | |
| 277 | - // 联系电话(手机/电话皆可)验证 | |
| 278 | - $.validator.addMethod("isPhone", function(value,element) { | |
| 279 | - // 长度 | |
| 280 | - var length = value.length; | |
| 281 | - // 手机正则表达式 | |
| 282 | - var mobile = /^(((13[0-9]{1})|(15[0-9]{1}))+\d{8})$/; | |
| 283 | - // 固定电话正则表达式 | |
| 284 | - var tel = /^\d{3,4}-?\d{7,9}$/; | |
| 285 | - return this.optional(element) || (tel.test(value) || mobile.test(value)); | |
| 286 | - }, "请正确填写您的联系电话"); | |
| 1 | +/** | |
| 2 | + * @description TODO(线路信息添加片段JS模块) | |
| 3 | + * | |
| 4 | + * @author bsth@lq | |
| 5 | + * | |
| 6 | + * @date 二〇一六年十月十八日 13:31:58 | |
| 7 | + * | |
| 8 | + */ | |
| 9 | + | |
| 10 | +$(function(){ | |
| 11 | + /** 获取线路编码 @param cb <回调函数> */ | |
| 12 | + /*function getLineCode(cb) { | |
| 13 | + *//** get请求获取线路编码。返回线路编码值 *//* | |
| 14 | + $.get('/line/getLineCode',function(lineCode){ | |
| 15 | + return cb && cb(lineCode); | |
| 16 | + }); | |
| 17 | + }*/ | |
| 18 | + /** 填充分公司下拉框选择值 */ | |
| 19 | + function setbrancheCompanySelectOptions(){ | |
| 20 | + // 获取公司下拉框选择值 | |
| 21 | + var businessCode = $('#companySelect').val(); | |
| 22 | + // 分公司下拉框options属性值 | |
| 23 | + var options = '<option value="">-- 请选择分公司 --</option>'; | |
| 24 | + // 如果公司选择为空则分公司为空 ; 否则查询出所属公司下的分公司名称和相应分公司代码 | |
| 25 | + if(businessCode == null || businessCode ==''){ | |
| 26 | + // 填充分公司下拉框options | |
| 27 | + $('#brancheCompanySelect').html(options); | |
| 28 | + } else { | |
| 29 | + // 查询出所属公司下的分公司名称和相应分公司代码 | |
| 30 | + $get('/business/all', {upCode_eq: businessCode}, function(array){ | |
| 31 | + // 遍历array | |
| 32 | + $.each(array, function(i,d){ | |
| 33 | + options += '<option value="'+d.businessCode+'">'+d.businessName+'</option>'; | |
| 34 | + }); | |
| 35 | + | |
| 36 | + // 填充分公司下拉框options | |
| 37 | + $('#brancheCompanySelect').html(options); | |
| 38 | + }); | |
| 39 | + } | |
| 40 | + } | |
| 41 | + /** 根据线路名称值设置英文名称值和线路简称 */ | |
| 42 | + function setPinYin(){ | |
| 43 | + /** 获取线路名称值 */ | |
| 44 | + var val = $('#nameInput').val(); | |
| 45 | + /** 汉字转换为拼音 设置英文名称值 */ | |
| 46 | + $('#esInput').val(pinyin.getFullChars(val)); | |
| 47 | + /** 汉字转换为拼音将每一个字的拼音的首字母提取出来并大写 设置线路简称值 */ | |
| 48 | + $('#shortNameInput').val(pinyin.getCamelChars(val)); | |
| 49 | + } | |
| 50 | + | |
| 51 | + /** 获取线路编码元素并设值 @param 匿名函数 *//* | |
| 52 | + getLineCode(function(result){ | |
| 53 | + // 设置线路编码值 | |
| 54 | + $('#lineCodeInput').val(result); | |
| 55 | + })*/ | |
| 56 | + /** 输入线路名称,自动生成英文名称和线路简称 */ | |
| 57 | + $('#nameInput').on('keyup', setPinYin); | |
| 58 | + /** 开辟日期 日期控件 <format:日期控件时间格式;locale:语言> */ | |
| 59 | + $('#openDateInput').datetimepicker({format : 'YYYY-MM-DD', locale: 'zh-cn'}); | |
| 60 | + /** 起始站首班时间 日期控件 <format:日期控件时间格式;locale:语言> */ | |
| 61 | + $('#startStationFirstTimeInput').datetimepicker({format : 'HH:mm', locale: 'zh-cn'}); | |
| 62 | + /** 起始站末班时间 日期控件 <format:日期控件时间格式;locale:语言> */ | |
| 63 | + $('#endTimeInput').datetimepicker({format : 'HH:mm', locale: 'zh-cn'}); | |
| 64 | + /** 终点站首班时间 日期控件 <format:日期控件时间格式;locale:语言> */ | |
| 65 | + $('#endStationFirstTimeInput').datetimepicker({format : 'HH:mm', locale: 'zh-cn'}); | |
| 66 | + /** 终点站末班时间 日期控件 <format:日期控件时间格式;locale:语言> */ | |
| 67 | + $('#endStationEndTimeInput').datetimepicker({format : 'HH:mm',locale: 'zh-cn'}); | |
| 68 | + /** get请求获取公司表数据并填充公司下拉框选择值 */ | |
| 69 | + $get('/business/all', {upCode_eq: '88'}, function(array){ | |
| 70 | + /** 公司下拉options属性值 */ | |
| 71 | + var options = '<option value="">-- 请选择公司 --</option>'; | |
| 72 | + /** 遍历array */ | |
| 73 | + $.each(array, function(i,d){ | |
| 74 | + options += '<option value="'+d.businessCode+'">'+d.businessName+'</option>'; | |
| 75 | + }); | |
| 76 | + /** 填充公司下拉框options,并添加公司下拉框值改变事件setbrancheCompanySelectOptions */ | |
| 77 | + $('#companySelect').html(options).on('change', setbrancheCompanySelectOptions); | |
| 78 | + }); | |
| 79 | + | |
| 80 | + /** 填充分公司下拉框 */ | |
| 81 | + setbrancheCompanySelectOptions(); | |
| 82 | + // 定义表单 | |
| 83 | + var form = $('#line_add_form'); | |
| 84 | + // 定义表单异常 | |
| 85 | + var error = $('.alert-danger',form); | |
| 86 | + // 表单验证 | |
| 87 | + form.validate({ | |
| 88 | + // 错误提示元素span对象 | |
| 89 | + errorElement : 'span', | |
| 90 | + // 错误提示元素class名称 | |
| 91 | + errorClass : 'help-block help-block-error', | |
| 92 | + // 验证错误获取焦点 | |
| 93 | + focusInvalid : true, | |
| 94 | + // 需要验证的表单元素 | |
| 95 | + rules : { | |
| 96 | + 'name' : {required : true,maxlength: 30},// 线路名称 必填项、 最大长度. | |
| 97 | + 'lineCode' : {required : true,maxlength: 6,digits:true ,isLineCode:true, | |
| 98 | + remote:{type: 'GET', | |
| 99 | + url: '/line/lineCodeVerification', | |
| 100 | + cache:false, | |
| 101 | + async:false, | |
| 102 | + data:{'lineCode':function(){ return $("#lineCodeInput").val();}} | |
| 103 | + }},// 线路编码 必填项、最大长度. | |
| 104 | + 'company' : {required : true,maxlength: 30},// 所属公司 必填项、最大长度. | |
| 105 | + 'ticketPrice' : {required : true}, | |
| 106 | + 'brancheCompany' : {required : true,maxlength: 30},// 所属分公司 必填项、最大长度. | |
| 107 | + 'level' : {required : true,maxlength: 30},// 线路等级 必填项、最大长度. | |
| 108 | + 'nature' : {required : true,maxlength: 30},// 线路性质 必填项、最大长度. | |
| 109 | + 'startStationName' : {required : true,maxlength: 30},// 起始站名称 必填项、最大长度. | |
| 110 | + 'endStationName' : {required : true,maxlength: 30},// 终点站名称 必填项、最大长度. | |
| 111 | + 'startStationFirstTime' : {required : true,maxlength: 30},// 起始站首班时间 必填项、最大长度. | |
| 112 | + 'StartStationEndTime' : {required : true,maxlength: 30},// 起始站末班时间 必填项、最大长度. | |
| 113 | + 'endStationFirstTime' : {required : true,maxlength: 30},// 终点站首班时间 必填项、最大长度. | |
| 114 | + 'endStationEndTime' : {required : true,maxlength: 30},// 终点站末班时间 必填项、最大长度. | |
| 115 | + 'linePlayType' : {required : true,maxlength: 30},// 线路规划类型 <0:双向;1:环线> 必填项、最大长度. | |
| 116 | + 'openDate' : {date : true,dateISO:true},// 开辟日期 正确格式的日期(日期校验 ie6 出错,慎用。)必须输入正确格式的日期(ISO),例如:2009-06-23,1998/01/22。只验证格式,不验证有效性。 | |
| 117 | + 'es' : {maxlength: 30},// 英文名称 最大长度. | |
| 118 | + 'shortName' : {maxlength: 30},// 线路简称 最大长度. | |
| 119 | + 'shanghaiLinecode' : {maxlength: 30},// 上海市线路编码 最大长度. | |
| 120 | + 'eqLinecode' : {maxlength: 30},// 设备线路编码 最大长度. | |
| 121 | + 'startPhone' : {number : true,digits : true,isPhone : true,maxlength: 30},// 起始站调度电话 必须输入合法的数字(负数,小数)。必须输入整数。电话号码格式 最大长度 | |
| 122 | + 'endPhone' : {number : true,digits : true,isPhone : true,maxlength: 30},// 终点站调度电话 必须输入合法的数字(负数,小数)。必须输入整数。电话号码格式 、最大长度 | |
| 123 | + 'carSumNumber' : {number : true,digits : true,maxlength: 8},// 车辆总数 必须输入合法的数字(负数,小数)。必须输入整数。最大长度. | |
| 124 | + 'hvacCarNumber' : {number : true,digits : true,maxlength: 8},// 空调车辆数 必须输入合法的数字(负数,小数)。 必须输入整数。 最大长度. | |
| 125 | + 'ordCarNumber' : {number : true,digits : true,maxlength: 8},// 普通车辆数 必须输入合法的数字(负数,小数)。 必须输入整数。最大长度. | |
| 126 | + 'history' : {maxlength: 200},// 线路沿革 输入长度最多是 200 的字符串(汉字算一个字符)。 | |
| 127 | + 'descriptions' : {maxlength: 200},// 描述/说明 输入长度最多是 200 的字符串(汉字算一个字符)。 | |
| 128 | + 'region' : {required : true}// 线路区域必选 | |
| 129 | + }, | |
| 130 | + messages:{ | |
| 131 | + 'lineCode':{ | |
| 132 | + remote: '此线路编码已存在!' | |
| 133 | + } | |
| 134 | + }, | |
| 135 | + /** | |
| 136 | + * 类型:Callback。当未通过验证的表单提交时,可以在该回调函数中处理一些事情。 | |
| 137 | + * | |
| 138 | + * 参数:该回调函数有两个参数:第一个为一个事件对象,第二个为验证器(validator) | |
| 139 | + */ | |
| 140 | + invalidHandler : function(event, validator) { | |
| 141 | + | |
| 142 | + // 显示表单未通过提示信息 | |
| 143 | + error.show(); | |
| 144 | + | |
| 145 | + // 把提示信息放到指定的位置。 | |
| 146 | + App.scrollTo(error, -200); | |
| 147 | + }, | |
| 148 | + | |
| 149 | + /** | |
| 150 | + * 类型:Callback。 | |
| 151 | + * | |
| 152 | + * 默认:添加errorClass("has-error")到表单元素。将未通过验证的表单元素设置高亮。 | |
| 153 | + */ | |
| 154 | + highlight : function(element) { | |
| 155 | + | |
| 156 | + // 添加errorClass("has-error")到表单元素 | |
| 157 | + $(element).closest('.form-group').addClass('has-error'); | |
| 158 | + | |
| 159 | + }, | |
| 160 | + | |
| 161 | + /** | |
| 162 | + * 类型:Callback。 | |
| 163 | + * | |
| 164 | + * 默认:移除errorClass("has-error")。与highlight操作相反 | |
| 165 | + */ | |
| 166 | + unhighlight : function(element) { | |
| 167 | + | |
| 168 | + // 移除errorClass("has-error") | |
| 169 | + $(element).closest('.form-group').removeClass('has-error'); | |
| 170 | + | |
| 171 | + }, | |
| 172 | + | |
| 173 | + /** | |
| 174 | + * 类型:String,Callback。 | |
| 175 | + * | |
| 176 | + * 如果指定它,当验证通过时显示一个消息。 | |
| 177 | + * | |
| 178 | + * 如果是String类型的,则添加该样式到标签中; | |
| 179 | + * | |
| 180 | + * 如果是一个回调函数,则将标签作为其唯一的参数。 | |
| 181 | + */ | |
| 182 | + success : function(label) { | |
| 183 | + | |
| 184 | + // 当验证通过时,移除errorClass("has-error") | |
| 185 | + label.closest('.form-group').removeClass('has-error'); | |
| 186 | + | |
| 187 | + }, | |
| 188 | + | |
| 189 | + /** | |
| 190 | + * 类型:Callback。 | |
| 191 | + * | |
| 192 | + * 默认:default (native) form submit;当表单通过验证,提交表单。回调函数有个默认参数form | |
| 193 | + */ | |
| 194 | + submitHandler : function(f) { | |
| 195 | + | |
| 196 | + // 隐藏错误提示 | |
| 197 | + error.hide(); | |
| 198 | + // 表单序列化 | |
| 199 | + var params = form.serializeJSON(); | |
| 200 | + submit(); | |
| 201 | + | |
| 202 | + // 查询线路编码的顺延号 | |
| 203 | + /*$get('/line/all', {lineCode_eq: params.lineCode},function(lineCode){ | |
| 204 | + | |
| 205 | + // 定义返回值的长度 | |
| 206 | + var len = lineCode.length; | |
| 207 | + | |
| 208 | + // 如果大于零,则已存在录入的线路编码;否则不存在 | |
| 209 | + if(len > 0) { | |
| 210 | + | |
| 211 | + // 定义已有的线路编码 | |
| 212 | + var oldCode = params.lineCode; | |
| 213 | + | |
| 214 | + // 自动获取线路编码 | |
| 215 | + getLineCode(function(result) { | |
| 216 | + | |
| 217 | + // 重新设置提交参数线路编码值 | |
| 218 | + params.lineCode = result; | |
| 219 | + | |
| 220 | + // 弹出选择框;确认则提交;取消则返回 | |
| 221 | + layer.confirm('线路编码【'+oldCode+'】已存在!自动顺延为如下:<br>线路编码:'+result, { | |
| 222 | + btn : [ '确认提示并提交', '取消' ] | |
| 223 | + }, submit); | |
| 224 | + | |
| 225 | + }); | |
| 226 | + layer.open({ | |
| 227 | + title: '消息提示' | |
| 228 | + ,content: '线路编码【'+params.lineCode+'】已存在,请重新输入编码!' | |
| 229 | + }); | |
| 230 | + } else { | |
| 231 | + | |
| 232 | + // 提交 | |
| 233 | + submit(); | |
| 234 | + | |
| 235 | + } | |
| 236 | + });*/ | |
| 237 | + | |
| 238 | + | |
| 239 | + // 提交 | |
| 240 | + function submit() { | |
| 241 | + | |
| 242 | + // 防止用户多次提交 | |
| 243 | + $("#submintBtn").addClass("disabled"); | |
| 244 | + | |
| 245 | + // 添加数据 | |
| 246 | + $post('/line', params, function(result) { | |
| 247 | + // 如果返回结果不为空 | |
| 248 | + if(result){ | |
| 249 | + | |
| 250 | + // 返回状态码为"SUCCESS" ,则添加成功;返回状态码为"ERROR" ,则添加失败 | |
| 251 | + if(result.status=='SUCCESS') { | |
| 252 | + | |
| 253 | + // 弹出添加成功提示消息 | |
| 254 | + layer.msg('添加成功,并已自动为您生成线路原始版本,可以在线路版本信息下查看!', {time: 7000}); | |
| 255 | + | |
| 256 | + } else if(result.status=='ERROR') { | |
| 257 | + | |
| 258 | + // 弹出添加失败提示消息 | |
| 259 | + layer.msg('添加失败...'); | |
| 260 | + | |
| 261 | + } | |
| 262 | + } | |
| 263 | + | |
| 264 | + // 返回list.html页面 | |
| 265 | + loadPage('list.html'); | |
| 266 | + }); | |
| 267 | + } | |
| 268 | + } | |
| 269 | + }); | |
| 270 | + | |
| 271 | + // 线路编码不能0开头 | |
| 272 | + $.validator.addMethod("isLineCode", function(value,element) { | |
| 273 | + // 线路编码正则表达式 | |
| 274 | + var lineCode = /^([1-9])/; | |
| 275 | + return lineCode.test(value); | |
| 276 | + }, "线路编码不能以0开头"); | |
| 277 | + | |
| 278 | + // 联系电话(手机/电话皆可)验证 | |
| 279 | + $.validator.addMethod("isPhone", function(value,element) { | |
| 280 | + // 长度 | |
| 281 | + var length = value.length; | |
| 282 | + // 手机正则表达式 | |
| 283 | + var mobile = /^(((13[0-9]{1})|(15[0-9]{1}))+\d{8})$/; | |
| 284 | + // 固定电话正则表达式 | |
| 285 | + var tel = /^\d{3,4}-?\d{7,9}$/; | |
| 286 | + return this.optional(element) || (tel.test(value) || mobile.test(value)); | |
| 287 | + }, "请正确填写您的联系电话"); | |
| 287 | 288 | }); |
| 288 | 289 | \ No newline at end of file | ... | ... |
src/main/resources/static/pages/base/line/js/line-edit-form.js
| 1 | -/** | |
| 2 | - * @description TODO(线路信息修改片段JS模块) | |
| 3 | - * | |
| 4 | - * @author bsth@lq | |
| 5 | - * | |
| 6 | - * @date 二〇一六年十月十八日 13:31:58 | |
| 7 | - * | |
| 8 | - */ | |
| 9 | - | |
| 10 | - | |
| 11 | -!function(){ | |
| 12 | - // 关闭左侧栏 | |
| 13 | - if (!$('body').hasClass('page-sidebar-closed')) {$('.menu-toggler.sidebar-toggler').click();} | |
| 14 | - /** 开辟日期 日期控件 <format:日期控件时间格式;locale:语言> */ | |
| 15 | - $('#openDateInput').datetimepicker({format : 'YYYY-MM-DD', locale: 'zh-cn'}); | |
| 16 | - /** 起始站首班时间 日期控件 <format:日期控件时间格式;locale:语言> */ | |
| 17 | - $('#startStationFirstTimeInput').datetimepicker({format : 'HH:mm', locale: 'zh-cn'}); | |
| 18 | - /** 起始站末班时间 日期控件 <format:日期控件时间格式;locale:语言> */ | |
| 19 | - $('#endTimeInput').datetimepicker({format : 'HH:mm', locale: 'zh-cn'}); | |
| 20 | - /** 终点站首班时间 日期控件 <format:日期控件时间格式;locale:语言> */ | |
| 21 | - $('#endStationFirstTimeInput').datetimepicker({format : 'HH:mm', locale: 'zh-cn'}); | |
| 22 | - /** 终点站末班时间 日期控件 <format:日期控件时间格式;locale:语言> */ | |
| 23 | - $('#endStationEndTimeInput').datetimepicker({format : 'HH:mm',locale: 'zh-cn'}); | |
| 24 | - /** 根据线路名称值设置英文名称值和线路简称 */ | |
| 25 | - function setPinYin(){ | |
| 26 | - // 获取线路名称值 | |
| 27 | - var val = $('#nameInput').val(); | |
| 28 | - // 设置英文名称值 | |
| 29 | - $('#esInput').val(pinyin.getFullChars(val)); | |
| 30 | - // 设置线路简称值 | |
| 31 | - $('#shortNameInput').val(pinyin.getCamelChars(val)); | |
| 32 | - } | |
| 33 | - | |
| 34 | - /** 公司下拉框 @param:<callback:回调函数> */ | |
| 35 | - function selectTemp(callback) { | |
| 36 | - // 填充公司下拉框选择值 | |
| 37 | - $.get('/business/all', {upCode_eq: '88'}, function(array){ | |
| 38 | - // 公司下拉options属性值 | |
| 39 | - var options = '<option value="">-- 请选择公司 --</option>'; | |
| 40 | - // 遍历array | |
| 41 | - $.each(array, function(i,d){ | |
| 42 | - options += '<option value="'+d.businessCode+'">'+d.businessName+'</option>'; | |
| 43 | - }); | |
| 44 | - // 填充公司下拉框options | |
| 45 | - $('#companySelect').html(options); | |
| 46 | - return callback && callback(); | |
| 47 | - }); | |
| 48 | - } | |
| 49 | - | |
| 50 | - // 填充分公司下拉框选择值 | |
| 51 | - function getbrancheCompanyValues(businessCode,cb){ | |
| 52 | - // 分公司下拉框options属性值 | |
| 53 | - var options = '<option value="">-- 请选择分公司 --</option>'; | |
| 54 | - if(businessCode) { | |
| 55 | - $get('/business/all', {upCode_eq: businessCode}, function(brancheCompany){ | |
| 56 | - // 遍历brancheCompany | |
| 57 | - $.each(brancheCompany, function(i,d){ | |
| 58 | - options += '<option value="'+d.businessCode+'">'+d.businessName+'</option>'; | |
| 59 | - }); | |
| 60 | - // 填充分公司下拉框options | |
| 61 | - $('#brancheCompanySelect').html(options); | |
| 62 | - return cb && cb(); | |
| 63 | - }); | |
| 64 | - } else { | |
| 65 | - // 填充分公司下拉框options | |
| 66 | - $('#brancheCompanySelect').html(options); | |
| 67 | - return cb && cb(); | |
| 68 | - } | |
| 69 | - } | |
| 70 | - | |
| 71 | - function companySelectChangeSetBrancheValue() { | |
| 72 | - // 获取公司下拉框选择值 | |
| 73 | - var businessCode = $('#companySelect').val(); | |
| 74 | - // 分公司下拉框options属性值 | |
| 75 | - var options = '<option value="">-- 请选择分公司 --</option>'; | |
| 76 | - // 如果公司选择为空则分公司为空 ; 否则查询出所属公司下的分公司名称和相应分公司代码 | |
| 77 | - if(businessCode == null || businessCode ==''){ | |
| 78 | - // 填充分公司下拉框options | |
| 79 | - $('#brancheCompanySelect').html(options); | |
| 80 | - } else { | |
| 81 | - // 查询出所属公司下的分公司名称和相应分公司代码 | |
| 82 | - $get('/business/all', {upCode_eq: businessCode}, function(array){ | |
| 83 | - // 遍历array | |
| 84 | - $.each(array, function(i,d){ | |
| 85 | - options += '<option value="'+d.businessCode+'">'+d.businessName+'</option>'; | |
| 86 | - }); | |
| 87 | - // 填充分公司下拉框options | |
| 88 | - $('#brancheCompanySelect').html(options); | |
| 89 | - }); | |
| 90 | - } | |
| 91 | - } | |
| 92 | - | |
| 93 | - // 获取参数ID | |
| 94 | - var lineId = $.url().param('no'); | |
| 95 | - | |
| 96 | - // 如果参数ID不为空 | |
| 97 | - if(lineId) { | |
| 98 | - // 获取线路Id元素并设值 | |
| 99 | - $('#lineId').val(lineId); | |
| 100 | - // 初始化公司下拉框 | |
| 101 | - selectTemp(function(){ | |
| 102 | - /** 根据ID查询详细信息 */ | |
| 103 | - $get('/line/' + lineId ,null, function(result){ | |
| 104 | - // 如果不为空 | |
| 105 | - if(result) { | |
| 106 | - // 定义日期格式 | |
| 107 | - var fs = 'YYYY-MM-DD'; | |
| 108 | - // 设置inUse | |
| 109 | - $('#inUseInput').val(result.inUse); | |
| 110 | - // 设置日期 | |
| 111 | - result.openDate = moment(result.openDate).format(fs); | |
| 112 | - /** 填充修改线路表单元素值 @param:<result:数据结果集;line_edit_form:表单元素> */ | |
| 113 | - putFormData(result, '#line_edit_form'); | |
| 114 | - // 设置公司值 | |
| 115 | - $('#companySelect').val(result.company); | |
| 116 | - // 填充分公司下拉框选择值 | |
| 117 | - getbrancheCompanyValues(result.company,function(){ | |
| 118 | - // 设置分公司 | |
| 119 | - $('#brancheCompanySelect').val(result.brancheCompany); | |
| 120 | - }); | |
| 121 | - | |
| 122 | - } | |
| 123 | - | |
| 124 | - }); | |
| 125 | - }) | |
| 126 | - | |
| 127 | - } else { | |
| 128 | - // 缺少ID | |
| 129 | - layer.confirm('【ID缺失,请点击返回,重新进行修改操作】', {btn : [ '返回' ],icon: 3, title:'提示'}, function(index){ | |
| 130 | - // 关闭弹出层 | |
| 131 | - layer.close(index); | |
| 132 | - // 跳转到list页面 | |
| 133 | - loadPage('list.html'); | |
| 134 | - }); | |
| 135 | - } | |
| 136 | - // 输入线路名称,自动生成英文名称和线路简称 | |
| 137 | - $('#nameInput').on('keyup', setPinYin); | |
| 138 | - // 公司值改变事件 | |
| 139 | - $('#companySelect').on('change',companySelectChangeSetBrancheValue); | |
| 140 | - // 定义表单 | |
| 141 | - var form = $('#line_edit_form'); | |
| 142 | - // 定义表单异常 | |
| 143 | - var error = $('.alert-danger',form); | |
| 144 | - // 表单验证 | |
| 145 | - form.validate({ | |
| 146 | - // 错误提示元素span对象 | |
| 147 | - errorElement : 'span', | |
| 148 | - // 错误提示元素class名称 | |
| 149 | - errorClass : 'help-block help-block-error', | |
| 150 | - // 验证错误获取焦点 | |
| 151 | - focusInvalid : true, | |
| 152 | - // 需要验证的表单元素 | |
| 153 | - rules : { | |
| 154 | - 'name' : {required : true,maxlength: 30},// 线路名称 必填项、 最大长度. | |
| 155 | - 'lineCode' : {required : true,maxlength: 6},// 线路编码 必填项、最大长度. | |
| 156 | - 'company' : {required : true,maxlength: 30},// 所属公司 必填项、最大长度. | |
| 157 | - 'brancheCompany' : {required : true,maxlength: 30},// 所属分公司 必填项、最大长度. | |
| 158 | - 'level' : {required : true,maxlength: 30},// 线路等级 必填项、最大长度. | |
| 159 | - 'nature' : {required : true,maxlength: 30},// 线路性质 必填项、最大长度. | |
| 160 | - 'startStationName' : {required : true,maxlength: 30},// 起始站名称 必填项、最大长度. | |
| 161 | - 'endStationName' : {required : true,maxlength: 30},// 终点站名称 必填项、最大长度. | |
| 162 | - 'startStationFirstTime' : {required : true,maxlength: 30},// 起始站首班时间 必填项、最大长度. | |
| 163 | - 'StartStationEndTime' : {required : true,maxlength: 30},// 起始站末班时间 必填项、最大长度. | |
| 164 | - 'endStationFirstTime' : {required : true,maxlength: 30},// 终点站首班时间 必填项、最大长度. | |
| 165 | - 'endStationEndTime' : {required : true,maxlength: 30},// 终点站末班时间 必填项、最大长度. | |
| 166 | - 'linePlayType' : {required : true,maxlength: 30},// 线路规划类型 <0:双向;1:环线> 必填项、最大长度. | |
| 167 | - 'openDate' : {date : true,dateISO:true},// 开辟日期 正确格式的日期(日期校验 ie6 出错,慎用。)必须输入正确格式的日期(ISO),例如:2009-06-23,1998/01/22。只验证格式,不验证有效性。 | |
| 168 | - 'es' : {maxlength: 30},// 英文名称 最大长度. | |
| 169 | - 'shortName' : {maxlength: 30},// 线路简称 最大长度. | |
| 170 | - 'shanghaiLinecode' : {maxlength: 30},// 上海市线路编码 最大长度. | |
| 171 | - 'eqLinecode' : {maxlength: 30},// 设备线路编码 最大长度. | |
| 172 | - 'startPhone' : {number : true,digits : true,isPhone : true,maxlength: 30},// 起始站调度电话 必须输入合法的数字(负数,小数)。必须输入整数。电话号码格式 最大长度 | |
| 173 | - 'endPhone' : {number : true,digits : true,isPhone : true,maxlength: 30},// 终点站调度电话 必须输入合法的数字(负数,小数)。必须输入整数。电话号码格式 、最大长度 | |
| 174 | - 'carSumNumber' : {number : true,digits : true,maxlength: 8},// 车辆总数 必须输入合法的数字(负数,小数)。必须输入整数。最大长度. | |
| 175 | - 'hvacCarNumber' : {number : true,digits : true,maxlength: 8},// 空调车辆数 必须输入合法的数字(负数,小数)。 必须输入整数。 最大长度. | |
| 176 | - 'ordCarNumber' : {number : true,digits : true,maxlength: 8},// 普通车辆数 必须输入合法的数字(负数,小数)。 必须输入整数。最大长度. | |
| 177 | - 'history' : {maxlength: 200},// 线路沿革 输入长度最多是 200 的字符串(汉字算一个字符)。 | |
| 178 | - 'descriptions' : {maxlength: 200},// 描述/说明 输入长度最多是 200 的字符串(汉字算一个字符)。 | |
| 179 | - 'region' : {required : true}// 线路区域必选 | |
| 180 | - }, | |
| 181 | - | |
| 182 | - /** | |
| 183 | - * 类型:Callback。当未通过验证的表单提交时,可以在该回调函数中处理一些事情。 | |
| 184 | - * | |
| 185 | - * 参数:该回调函数有两个参数:第一个为一个事件对象,第二个为验证器(validator) | |
| 186 | - */ | |
| 187 | - invalidHandler : function(event, validator) { | |
| 188 | - // 显示表单未通过提示信息 | |
| 189 | - error.show(); | |
| 190 | - // 把提示信息放到指定的位置。 | |
| 191 | - App.scrollTo(error, -200); | |
| 192 | - }, | |
| 193 | - | |
| 194 | - /** | |
| 195 | - * 类型:Callback。 | |
| 196 | - * | |
| 197 | - * 默认:添加errorClass("has-error")到表单元素。将未通过验证的表单元素设置高亮。 | |
| 198 | - */ | |
| 199 | - highlight : function(element) { | |
| 200 | - // 添加errorClass("has-error")到表单元素 | |
| 201 | - $(element).closest('.form-group').addClass('has-error'); | |
| 202 | - }, | |
| 203 | - | |
| 204 | - /** | |
| 205 | - * 类型:Callback。 | |
| 206 | - * | |
| 207 | - * 默认:移除errorClass("has-error")。与highlight操作相反 | |
| 208 | - */ | |
| 209 | - unhighlight : function(element) { | |
| 210 | - // 移除errorClass("has-error") | |
| 211 | - $(element).closest('.form-group').removeClass('has-error'); | |
| 212 | - }, | |
| 213 | - | |
| 214 | - /** | |
| 215 | - * 类型:String,Callback。 | |
| 216 | - * | |
| 217 | - * 如果指定它,当验证通过时显示一个消息。 | |
| 218 | - * | |
| 219 | - * 如果是String类型的,则添加该样式到标签中; | |
| 220 | - * | |
| 221 | - * 如果是一个回调函数,则将标签作为其唯一的参数。 | |
| 222 | - */ | |
| 223 | - success : function(label) { | |
| 224 | - // 当验证通过时,移除errorClass("has-error") | |
| 225 | - label.closest('.form-group').removeClass('has-error'); | |
| 226 | - | |
| 227 | - }, | |
| 228 | - /** | |
| 229 | - * 类型:Callback。 | |
| 230 | - * | |
| 231 | - * 默认:default (native) form submit;当表单通过验证,提交表单。回调函数有个默认参数form | |
| 232 | - */ | |
| 233 | - submitHandler : function(f) { | |
| 234 | - // 隐藏错误提示 | |
| 235 | - error.hide(); | |
| 236 | - // 表单序列化 | |
| 237 | - var params = form.serializeJSON(); | |
| 238 | - // 查询线路编码的顺延号 | |
| 239 | - $get('/line/all', {lineCode_eq: params.lineCode},function(lineCode){ | |
| 240 | - // 定义返回值的长度 | |
| 241 | - var len = lineCode.length; | |
| 242 | - // 如果大于零,则已存在录入的线路编码;否则不存在 | |
| 243 | - if(len > 0) { | |
| 244 | - // 如果id相等则为同一条数据的线路编码。 | |
| 245 | - if(lineCode[0].id == lineId) { | |
| 246 | - // 提交 | |
| 247 | - submit(); | |
| 248 | - } | |
| 249 | - } else { | |
| 250 | - // 提交 | |
| 251 | - submit(); | |
| 252 | - } | |
| 253 | - }); | |
| 254 | - // 提交 | |
| 255 | - function submit() { | |
| 256 | - // 添加数据 | |
| 257 | - $post('/line/update', params, function(result) { | |
| 258 | - // 如果返回结果不为空 | |
| 259 | - if(result){ | |
| 260 | - // 返回状态码为"SUCCESS" ,则添加成功;返回状态码为"ERROR" ,则添加失败 | |
| 261 | - if(result.status=='SUCCESS') { | |
| 262 | - // 弹出添加成功提示消息 | |
| 263 | - layer.msg('修改成功...'); | |
| 264 | - } else if(result.status=='ERROR') { | |
| 265 | - // 弹出添加失败提示消息 | |
| 266 | - layer.msg('修改失败...'); | |
| 267 | - } | |
| 268 | - } | |
| 269 | - // 返回list.html页面 | |
| 270 | - loadPage('list.html'); | |
| 271 | - }); | |
| 272 | - } | |
| 273 | - } | |
| 274 | - }); | |
| 275 | - | |
| 276 | - /** 联系电话(手机/电话皆可)验证 */ | |
| 277 | - $.validator.addMethod("isPhone", function(value,element) { | |
| 278 | - // 长度 | |
| 279 | - var length = value.length; | |
| 280 | - // 手机正则表达式 | |
| 281 | - var mobile = /^(((13[0-9]{1})|(15[0-9]{1}))+\d{8})$/; | |
| 282 | - // 固定电话正则表达式 | |
| 283 | - var tel = /^\d{3,4}-?\d{7,9}$/; | |
| 284 | - return this.optional(element) || (tel.test(value) || mobile.test(value)); | |
| 285 | - }, "请正确填写您的联系电话"); | |
| 286 | - | |
| 1 | +/** | |
| 2 | + * @description TODO(线路信息修改片段JS模块) | |
| 3 | + * | |
| 4 | + * @author bsth@lq | |
| 5 | + * | |
| 6 | + * @date 二〇一六年十月十八日 13:31:58 | |
| 7 | + * | |
| 8 | + */ | |
| 9 | + | |
| 10 | + | |
| 11 | +!function(){ | |
| 12 | + // 关闭左侧栏 | |
| 13 | + if (!$('body').hasClass('page-sidebar-closed')) {$('.menu-toggler.sidebar-toggler').click();} | |
| 14 | + /** 开辟日期 日期控件 <format:日期控件时间格式;locale:语言> */ | |
| 15 | + $('#openDateInput').datetimepicker({format : 'YYYY-MM-DD', locale: 'zh-cn'}); | |
| 16 | + /** 起始站首班时间 日期控件 <format:日期控件时间格式;locale:语言> */ | |
| 17 | + $('#startStationFirstTimeInput').datetimepicker({format : 'HH:mm', locale: 'zh-cn'}); | |
| 18 | + /** 起始站末班时间 日期控件 <format:日期控件时间格式;locale:语言> */ | |
| 19 | + $('#endTimeInput').datetimepicker({format : 'HH:mm', locale: 'zh-cn'}); | |
| 20 | + /** 终点站首班时间 日期控件 <format:日期控件时间格式;locale:语言> */ | |
| 21 | + $('#endStationFirstTimeInput').datetimepicker({format : 'HH:mm', locale: 'zh-cn'}); | |
| 22 | + /** 终点站末班时间 日期控件 <format:日期控件时间格式;locale:语言> */ | |
| 23 | + $('#endStationEndTimeInput').datetimepicker({format : 'HH:mm',locale: 'zh-cn'}); | |
| 24 | + /** 根据线路名称值设置英文名称值和线路简称 */ | |
| 25 | + function setPinYin(){ | |
| 26 | + // 获取线路名称值 | |
| 27 | + var val = $('#nameInput').val(); | |
| 28 | + // 设置英文名称值 | |
| 29 | + $('#esInput').val(pinyin.getFullChars(val)); | |
| 30 | + // 设置线路简称值 | |
| 31 | + $('#shortNameInput').val(pinyin.getCamelChars(val)); | |
| 32 | + } | |
| 33 | + | |
| 34 | + /** 公司下拉框 @param:<callback:回调函数> */ | |
| 35 | + function selectTemp(callback) { | |
| 36 | + // 填充公司下拉框选择值 | |
| 37 | + $.get('/business/all', {upCode_eq: '88'}, function(array){ | |
| 38 | + // 公司下拉options属性值 | |
| 39 | + var options = '<option value="">-- 请选择公司 --</option>'; | |
| 40 | + // 遍历array | |
| 41 | + $.each(array, function(i,d){ | |
| 42 | + options += '<option value="'+d.businessCode+'">'+d.businessName+'</option>'; | |
| 43 | + }); | |
| 44 | + // 填充公司下拉框options | |
| 45 | + $('#companySelect').html(options); | |
| 46 | + return callback && callback(); | |
| 47 | + }); | |
| 48 | + } | |
| 49 | + | |
| 50 | + // 填充分公司下拉框选择值 | |
| 51 | + function getbrancheCompanyValues(businessCode,cb){ | |
| 52 | + // 分公司下拉框options属性值 | |
| 53 | + var options = '<option value="">-- 请选择分公司 --</option>'; | |
| 54 | + if(businessCode) { | |
| 55 | + $get('/business/all', {upCode_eq: businessCode}, function(brancheCompany){ | |
| 56 | + // 遍历brancheCompany | |
| 57 | + $.each(brancheCompany, function(i,d){ | |
| 58 | + options += '<option value="'+d.businessCode+'">'+d.businessName+'</option>'; | |
| 59 | + }); | |
| 60 | + // 填充分公司下拉框options | |
| 61 | + $('#brancheCompanySelect').html(options); | |
| 62 | + return cb && cb(); | |
| 63 | + }); | |
| 64 | + } else { | |
| 65 | + // 填充分公司下拉框options | |
| 66 | + $('#brancheCompanySelect').html(options); | |
| 67 | + return cb && cb(); | |
| 68 | + } | |
| 69 | + } | |
| 70 | + | |
| 71 | + function companySelectChangeSetBrancheValue() { | |
| 72 | + // 获取公司下拉框选择值 | |
| 73 | + var businessCode = $('#companySelect').val(); | |
| 74 | + // 分公司下拉框options属性值 | |
| 75 | + var options = '<option value="">-- 请选择分公司 --</option>'; | |
| 76 | + // 如果公司选择为空则分公司为空 ; 否则查询出所属公司下的分公司名称和相应分公司代码 | |
| 77 | + if(businessCode == null || businessCode ==''){ | |
| 78 | + // 填充分公司下拉框options | |
| 79 | + $('#brancheCompanySelect').html(options); | |
| 80 | + } else { | |
| 81 | + // 查询出所属公司下的分公司名称和相应分公司代码 | |
| 82 | + $get('/business/all', {upCode_eq: businessCode}, function(array){ | |
| 83 | + // 遍历array | |
| 84 | + $.each(array, function(i,d){ | |
| 85 | + options += '<option value="'+d.businessCode+'">'+d.businessName+'</option>'; | |
| 86 | + }); | |
| 87 | + // 填充分公司下拉框options | |
| 88 | + $('#brancheCompanySelect').html(options); | |
| 89 | + }); | |
| 90 | + } | |
| 91 | + } | |
| 92 | + | |
| 93 | + // 获取参数ID | |
| 94 | + var lineId = $.url().param('no'); | |
| 95 | + | |
| 96 | + // 如果参数ID不为空 | |
| 97 | + if(lineId) { | |
| 98 | + // 获取线路Id元素并设值 | |
| 99 | + $('#lineId').val(lineId); | |
| 100 | + // 初始化公司下拉框 | |
| 101 | + selectTemp(function(){ | |
| 102 | + /** 根据ID查询详细信息 */ | |
| 103 | + $get('/line/' + lineId ,null, function(result){ | |
| 104 | + // 如果不为空 | |
| 105 | + if(result) { | |
| 106 | + // 定义日期格式 | |
| 107 | + var fs = 'YYYY-MM-DD'; | |
| 108 | + // 设置inUse | |
| 109 | + $('#inUseInput').val(result.inUse); | |
| 110 | + // 设置日期 | |
| 111 | + result.openDate = moment(result.openDate).format(fs); | |
| 112 | + /** 填充修改线路表单元素值 @param:<result:数据结果集;line_edit_form:表单元素> */ | |
| 113 | + putFormData(result, '#line_edit_form'); | |
| 114 | + // 设置公司值 | |
| 115 | + $('#companySelect').val(result.company); | |
| 116 | + // 填充分公司下拉框选择值 | |
| 117 | + getbrancheCompanyValues(result.company,function(){ | |
| 118 | + // 设置分公司 | |
| 119 | + $('#brancheCompanySelect').val(result.brancheCompany); | |
| 120 | + }); | |
| 121 | + | |
| 122 | + } | |
| 123 | + | |
| 124 | + }); | |
| 125 | + }) | |
| 126 | + | |
| 127 | + } else { | |
| 128 | + // 缺少ID | |
| 129 | + layer.confirm('【ID缺失,请点击返回,重新进行修改操作】', {btn : [ '返回' ],icon: 3, title:'提示'}, function(index){ | |
| 130 | + // 关闭弹出层 | |
| 131 | + layer.close(index); | |
| 132 | + // 跳转到list页面 | |
| 133 | + loadPage('list.html'); | |
| 134 | + }); | |
| 135 | + } | |
| 136 | + // 输入线路名称,自动生成英文名称和线路简称 | |
| 137 | + $('#nameInput').on('keyup', setPinYin); | |
| 138 | + // 公司值改变事件 | |
| 139 | + $('#companySelect').on('change',companySelectChangeSetBrancheValue); | |
| 140 | + // 定义表单 | |
| 141 | + var form = $('#line_edit_form'); | |
| 142 | + // 定义表单异常 | |
| 143 | + var error = $('.alert-danger',form); | |
| 144 | + // 表单验证 | |
| 145 | + form.validate({ | |
| 146 | + // 错误提示元素span对象 | |
| 147 | + errorElement : 'span', | |
| 148 | + // 错误提示元素class名称 | |
| 149 | + errorClass : 'help-block help-block-error', | |
| 150 | + // 验证错误获取焦点 | |
| 151 | + focusInvalid : true, | |
| 152 | + // 需要验证的表单元素 | |
| 153 | + rules : { | |
| 154 | + 'name' : {required : true,maxlength: 30},// 线路名称 必填项、 最大长度. | |
| 155 | + 'ticketPrice' : {required : true}, | |
| 156 | + 'lineCode' : {required : true,maxlength: 6},// 线路编码 必填项、最大长度. | |
| 157 | + 'company' : {required : true,maxlength: 30},// 所属公司 必填项、最大长度. | |
| 158 | + 'brancheCompany' : {required : true,maxlength: 30},// 所属分公司 必填项、最大长度. | |
| 159 | + 'level' : {required : true,maxlength: 30},// 线路等级 必填项、最大长度. | |
| 160 | + 'nature' : {required : true,maxlength: 30},// 线路性质 必填项、最大长度. | |
| 161 | + 'startStationName' : {required : true,maxlength: 30},// 起始站名称 必填项、最大长度. | |
| 162 | + 'endStationName' : {required : true,maxlength: 30},// 终点站名称 必填项、最大长度. | |
| 163 | + 'startStationFirstTime' : {required : true,maxlength: 30},// 起始站首班时间 必填项、最大长度. | |
| 164 | + 'StartStationEndTime' : {required : true,maxlength: 30},// 起始站末班时间 必填项、最大长度. | |
| 165 | + 'endStationFirstTime' : {required : true,maxlength: 30},// 终点站首班时间 必填项、最大长度. | |
| 166 | + 'endStationEndTime' : {required : true,maxlength: 30},// 终点站末班时间 必填项、最大长度. | |
| 167 | + 'linePlayType' : {required : true,maxlength: 30},// 线路规划类型 <0:双向;1:环线> 必填项、最大长度. | |
| 168 | + 'openDate' : {date : true,dateISO:true},// 开辟日期 正确格式的日期(日期校验 ie6 出错,慎用。)必须输入正确格式的日期(ISO),例如:2009-06-23,1998/01/22。只验证格式,不验证有效性。 | |
| 169 | + 'es' : {maxlength: 30},// 英文名称 最大长度. | |
| 170 | + 'shortName' : {maxlength: 30},// 线路简称 最大长度. | |
| 171 | + 'shanghaiLinecode' : {maxlength: 30},// 上海市线路编码 最大长度. | |
| 172 | + 'eqLinecode' : {maxlength: 30},// 设备线路编码 最大长度. | |
| 173 | + 'startPhone' : {number : true,digits : true,isPhone : true,maxlength: 30},// 起始站调度电话 必须输入合法的数字(负数,小数)。必须输入整数。电话号码格式 最大长度 | |
| 174 | + 'endPhone' : {number : true,digits : true,isPhone : true,maxlength: 30},// 终点站调度电话 必须输入合法的数字(负数,小数)。必须输入整数。电话号码格式 、最大长度 | |
| 175 | + 'carSumNumber' : {number : true,digits : true,maxlength: 8},// 车辆总数 必须输入合法的数字(负数,小数)。必须输入整数。最大长度. | |
| 176 | + 'hvacCarNumber' : {number : true,digits : true,maxlength: 8},// 空调车辆数 必须输入合法的数字(负数,小数)。 必须输入整数。 最大长度. | |
| 177 | + 'ordCarNumber' : {number : true,digits : true,maxlength: 8},// 普通车辆数 必须输入合法的数字(负数,小数)。 必须输入整数。最大长度. | |
| 178 | + 'history' : {maxlength: 200},// 线路沿革 输入长度最多是 200 的字符串(汉字算一个字符)。 | |
| 179 | + 'descriptions' : {maxlength: 200},// 描述/说明 输入长度最多是 200 的字符串(汉字算一个字符)。 | |
| 180 | + 'region' : {required : true}// 线路区域必选 | |
| 181 | + }, | |
| 182 | + | |
| 183 | + /** | |
| 184 | + * 类型:Callback。当未通过验证的表单提交时,可以在该回调函数中处理一些事情。 | |
| 185 | + * | |
| 186 | + * 参数:该回调函数有两个参数:第一个为一个事件对象,第二个为验证器(validator) | |
| 187 | + */ | |
| 188 | + invalidHandler : function(event, validator) { | |
| 189 | + // 显示表单未通过提示信息 | |
| 190 | + error.show(); | |
| 191 | + // 把提示信息放到指定的位置。 | |
| 192 | + App.scrollTo(error, -200); | |
| 193 | + }, | |
| 194 | + | |
| 195 | + /** | |
| 196 | + * 类型:Callback。 | |
| 197 | + * | |
| 198 | + * 默认:添加errorClass("has-error")到表单元素。将未通过验证的表单元素设置高亮。 | |
| 199 | + */ | |
| 200 | + highlight : function(element) { | |
| 201 | + // 添加errorClass("has-error")到表单元素 | |
| 202 | + $(element).closest('.form-group').addClass('has-error'); | |
| 203 | + }, | |
| 204 | + | |
| 205 | + /** | |
| 206 | + * 类型:Callback。 | |
| 207 | + * | |
| 208 | + * 默认:移除errorClass("has-error")。与highlight操作相反 | |
| 209 | + */ | |
| 210 | + unhighlight : function(element) { | |
| 211 | + // 移除errorClass("has-error") | |
| 212 | + $(element).closest('.form-group').removeClass('has-error'); | |
| 213 | + }, | |
| 214 | + | |
| 215 | + /** | |
| 216 | + * 类型:String,Callback。 | |
| 217 | + * | |
| 218 | + * 如果指定它,当验证通过时显示一个消息。 | |
| 219 | + * | |
| 220 | + * 如果是String类型的,则添加该样式到标签中; | |
| 221 | + * | |
| 222 | + * 如果是一个回调函数,则将标签作为其唯一的参数。 | |
| 223 | + */ | |
| 224 | + success : function(label) { | |
| 225 | + // 当验证通过时,移除errorClass("has-error") | |
| 226 | + label.closest('.form-group').removeClass('has-error'); | |
| 227 | + | |
| 228 | + }, | |
| 229 | + /** | |
| 230 | + * 类型:Callback。 | |
| 231 | + * | |
| 232 | + * 默认:default (native) form submit;当表单通过验证,提交表单。回调函数有个默认参数form | |
| 233 | + */ | |
| 234 | + submitHandler : function(f) { | |
| 235 | + // 隐藏错误提示 | |
| 236 | + error.hide(); | |
| 237 | + // 表单序列化 | |
| 238 | + var params = form.serializeJSON(); | |
| 239 | + // 查询线路编码的顺延号 | |
| 240 | + $get('/line/all', {lineCode_eq: params.lineCode},function(lineCode){ | |
| 241 | + // 定义返回值的长度 | |
| 242 | + var len = lineCode.length; | |
| 243 | + // 如果大于零,则已存在录入的线路编码;否则不存在 | |
| 244 | + if(len > 0) { | |
| 245 | + // 如果id相等则为同一条数据的线路编码。 | |
| 246 | + if(lineCode[0].id == lineId) { | |
| 247 | + // 提交 | |
| 248 | + submit(); | |
| 249 | + } | |
| 250 | + } else { | |
| 251 | + // 提交 | |
| 252 | + submit(); | |
| 253 | + } | |
| 254 | + }); | |
| 255 | + // 提交 | |
| 256 | + function submit() { | |
| 257 | + // 添加数据 | |
| 258 | + $post('/line/update', params, function(result) { | |
| 259 | + // 如果返回结果不为空 | |
| 260 | + if(result){ | |
| 261 | + // 返回状态码为"SUCCESS" ,则添加成功;返回状态码为"ERROR" ,则添加失败 | |
| 262 | + if(result.status=='SUCCESS') { | |
| 263 | + // 弹出添加成功提示消息 | |
| 264 | + layer.msg('修改成功...'); | |
| 265 | + } else if(result.status=='ERROR') { | |
| 266 | + // 弹出添加失败提示消息 | |
| 267 | + layer.msg('修改失败...'); | |
| 268 | + } | |
| 269 | + } | |
| 270 | + // 返回list.html页面 | |
| 271 | + loadPage('list.html'); | |
| 272 | + }); | |
| 273 | + } | |
| 274 | + } | |
| 275 | + }); | |
| 276 | + | |
| 277 | + /** 联系电话(手机/电话皆可)验证 */ | |
| 278 | + $.validator.addMethod("isPhone", function(value,element) { | |
| 279 | + // 长度 | |
| 280 | + var length = value.length; | |
| 281 | + // 手机正则表达式 | |
| 282 | + var mobile = /^(((13[0-9]{1})|(15[0-9]{1}))+\d{8})$/; | |
| 283 | + // 固定电话正则表达式 | |
| 284 | + var tel = /^\d{3,4}-?\d{7,9}$/; | |
| 285 | + return this.optional(element) || (tel.test(value) || mobile.test(value)); | |
| 286 | + }, "请正确填写您的联系电话"); | |
| 287 | + | |
| 287 | 288 | }(); |
| 288 | 289 | \ No newline at end of file | ... | ... |
src/main/resources/static/pages/base/stationroute/addstationstemplate.html
| ... | ... | @@ -280,6 +280,8 @@ $('#add_station_template_mobal').on('AddStationTempMobal.show', function(e,map,a |
| 280 | 280 | if(isPush) { |
| 281 | 281 | sectionList[k] = point; |
| 282 | 282 | stationList.push({name:tempStr[3], potion:{lng:tempPoint.lng, lat:tempPoint.lat} , wgs:{x:tempStr[0], y:tempStr[1]}}); |
| 283 | + } else { | |
| 284 | + sectionList[k] = point; | |
| 283 | 285 | } |
| 284 | 286 | isPush = false; |
| 285 | 287 | } | ... | ... |
src/main/resources/static/pages/base/stationroute/editRoute.html
| ... | ... | @@ -118,7 +118,7 @@ $('#edit_route_mobal').on('editRouteMobal.show', function(e,WorldsBMap,GetAjaxDa |
| 118 | 118 | }); |
| 119 | 119 | |
| 120 | 120 | |
| 121 | - //从xml中获取节点内容 | |
| 121 | +//从xml中获取节点内容 | |
| 122 | 122 | function getXmlNode(str){ |
| 123 | 123 | //创建文档对象 |
| 124 | 124 | var parser=new DOMParser(); |
| ... | ... | @@ -138,7 +138,7 @@ $('#edit_route_mobal').on('editRouteMobal.show', function(e,WorldsBMap,GetAjaxDa |
| 138 | 138 | |
| 139 | 139 | } |
| 140 | 140 | |
| 141 | - // xml方式上传是,处理转成txt格式的方法 | |
| 141 | + // xml方式上传是,处理转成txt格式的方法 | |
| 142 | 142 | var getXmlSection = function (xml) { |
| 143 | 143 | // var xml = $("#xmlText").val(); |
| 144 | 144 | var stationPointList = getXmlNode(xml); |
| ... | ... | @@ -161,7 +161,7 @@ $('#edit_route_mobal').on('editRouteMobal.show', function(e,WorldsBMap,GetAjaxDa |
| 161 | 161 | } |
| 162 | 162 | return sections; |
| 163 | 163 | }; |
| 164 | - | |
| 164 | + | |
| 165 | 165 | var nearestSectionPoint = function (stationPointList, sectionPointList) { |
| 166 | 166 | var mapping = {}; |
| 167 | 167 | for (var i = 0;i < stationPointList.length - 1;i++) { |
| ... | ... | @@ -179,7 +179,6 @@ $('#edit_route_mobal').on('editRouteMobal.show', function(e,WorldsBMap,GetAjaxDa |
| 179 | 179 | |
| 180 | 180 | return mapping; |
| 181 | 181 | } |
| 182 | - | |
| 183 | 182 | |
| 184 | 183 | |
| 185 | 184 | // 表单验证 |
| ... | ... | @@ -227,6 +226,7 @@ $('#edit_route_mobal').on('editRouteMobal.show', function(e,WorldsBMap,GetAjaxDa |
| 227 | 226 | |
| 228 | 227 | }, |
| 229 | 228 | submitHandler : function(f) { |
| 229 | + debugger; | |
| 230 | 230 | // 隐藏弹出层 |
| 231 | 231 | $('#edit_route_mobal').modal('hide'); |
| 232 | 232 | // 原坐标类型 |
| ... | ... | @@ -324,30 +324,24 @@ $('#edit_route_mobal').on('editRouteMobal.show', function(e,WorldsBMap,GetAjaxDa |
| 324 | 324 | for(var k =0;k<len;k++) { |
| 325 | 325 | if(paramsStationsArray[k]=="") |
| 326 | 326 | continue; |
| 327 | - | |
| 328 | 327 | var tempStr = paramsStationsArray[k].split('\t'); |
| 329 | - | |
| 330 | - if(tempStr[0] == "undefined" || tempStr[0] == ""){ | |
| 331 | - continue; | |
| 332 | - } | |
| 333 | - | |
| 334 | 328 | var tempPoint = transGpsLoc(tempStr[0],tempStr[1]); |
| 329 | + var point = {lng:tempPoint.lng, lat:tempPoint.lat}; | |
| 335 | 330 | |
| 331 | + sectionList[k] = point; | |
| 336 | 332 | |
| 337 | - var point = {lng:tempPoint.lng, lat:tempPoint.lat}; | |
| 338 | 333 | if(tempStr.length < 4){ |
| 339 | - sectionList[k] = point; | |
| 340 | 334 | isPush = true; |
| 341 | 335 | }else { |
| 342 | 336 | if(isPush) { |
| 343 | - sectionList[k] = point; | |
| 344 | 337 | stationList.push({name:tempStr[3], potion:{lng:tempPoint.lng, lat:tempPoint.lat} , wgs:{x:tempStr[0], y:tempStr[1]}}); |
| 345 | 338 | } |
| 346 | 339 | isPush = false; |
| 347 | 340 | } |
| 348 | 341 | } |
| 342 | + | |
| 349 | 343 | for(var i = 0 ;i<sectionList.length;i++) { |
| 350 | - if(sectionList[i] == "" || typeof(sectionList[i]) == "undefined" || sectionList[i] == null) { | |
| 344 | + if(sectionList[i] == "" || isNaN(sectionList[i].lng) || typeof(sectionList[i]) == "undefined" || sectionList[i] == null) { | |
| 351 | 345 | sectionList.splice(i,1);//删除数组中下表i-i+1之间的值 |
| 352 | 346 | i= i-1; |
| 353 | 347 | } |
| ... | ... | @@ -356,7 +350,6 @@ $('#edit_route_mobal').on('editRouteMobal.show', function(e,WorldsBMap,GetAjaxDa |
| 356 | 350 | return routeList; |
| 357 | 351 | } |
| 358 | 352 | |
| 359 | - | |
| 360 | 353 | function transGpsLoc(lng,lat) { |
| 361 | 354 | var bdLoc = TransGPS.locationMake(lng, lat); |
| 362 | 355 | var gcjLoc = TransGPS.transformFromWGSToGCJ(bdLoc); | ... | ... |
src/main/resources/static/pages/permission/user/list.html
| 1 | -<div class="page-head"> | |
| 2 | - <div class="page-title"> | |
| 3 | - <h1>用户管理</h1> | |
| 4 | - </div> | |
| 5 | -</div> | |
| 6 | - | |
| 7 | -<ul class="page-breadcrumb breadcrumb"> | |
| 8 | - <li><a href="/pages/home.html" data-pjax>首页</a> <i class="fa fa-circle"></i></li> | |
| 9 | - <li><span class="active">权限管理</span> <i class="fa fa-circle"></i></li> | |
| 10 | - <li><span class="active">用户管理</span></li> | |
| 11 | -</ul> | |
| 12 | - | |
| 13 | -<div class="row"> | |
| 14 | - <div class="col-md-12"> | |
| 15 | - <!-- Begin: life time stats --> | |
| 16 | - <div class="portlet light portlet-fit portlet-datatable bordered"> | |
| 17 | - <div class="portlet-title"> | |
| 18 | - <div class="caption"> | |
| 19 | - <i class="fa fa-users font-dark"></i> <span | |
| 20 | - class="caption-subject font-dark sbold uppercase">用户数据表</span> | |
| 21 | - </div> | |
| 22 | - <div class="actions"> | |
| 23 | - <a class="btn btn-circle blue" href="add.html" data-pjax><i class="fa fa-plus"></i> 添加用户</a> | |
| 24 | - | |
| 25 | - </div> | |
| 26 | - </div> | |
| 27 | - <div class="portlet-body"> | |
| 28 | - <div class="table-container" style="margin-top: 10px"> | |
| 29 | - <table | |
| 30 | - class="table table-striped table-bordered table-hover table-checkable" | |
| 31 | - id="datatable_user"> | |
| 32 | - <thead> | |
| 33 | - <tr role="row" class="heading"> | |
| 34 | - <th width="3%">#</th> | |
| 35 | - <th width="15%">登录名</th> | |
| 36 | - <th width="13%">姓名</th> | |
| 37 | - <th width="100">所属机构</th> | |
| 38 | - <th width="11%">角色</th> | |
| 39 | - <th width="10%">状态</th> | |
| 40 | - <th width="18%">最后登录时间</th> | |
| 41 | - <th width="18%">操作</th> | |
| 42 | - </tr> | |
| 43 | - <tr role="row" class="filter"> | |
| 44 | - <td></td> | |
| 45 | - <td> | |
| 46 | - <input type="text" class="form-control form-filter input-sm" name="userName_like"> | |
| 47 | - </td> | |
| 48 | - <td> | |
| 49 | - <input type="text" class="form-control form-filter input-sm" name="name_like"> | |
| 50 | - </td> | |
| 51 | - <td> | |
| 52 | - <input type="text" class="form-control form-filter input-sm" name="agencies_like"> | |
| 53 | - </td> | |
| 54 | - <td></td> | |
| 55 | - <td> | |
| 56 | - <select class="form-control form-filter " name="enabled_eq"> | |
| 57 | - <option value="">请选择...</option> | |
| 58 | - <option value="true">可用</option> | |
| 59 | - <option value="false">禁用</option> | |
| 60 | - </select> | |
| 61 | - </td> | |
| 62 | - <td></td> | |
| 63 | - | |
| 64 | - <td> | |
| 65 | - <button class="btn btn-sm green btn-outline filter-submit margin-bottom" > | |
| 66 | - <i class="fa fa-search"></i> 搜索</button> | |
| 67 | - | |
| 68 | - <button class="btn btn-sm red btn-outline filter-cancel"> | |
| 69 | - <i class="fa fa-times"></i> 重置</button> | |
| 70 | - </td> | |
| 71 | - </tr> | |
| 72 | - </thead> | |
| 73 | - <tbody></tbody> | |
| 74 | - </table> | |
| 75 | - <div style="text-align: right;"> | |
| 76 | - <ul id="pagination" class="pagination"></ul> | |
| 77 | - </div> | |
| 78 | - </div> | |
| 79 | - </div> | |
| 80 | - </div> | |
| 81 | - </div> | |
| 82 | -</div> | |
| 83 | - | |
| 84 | -<script id="user_list_temp" type="text/html"> | |
| 85 | -{{each list as obj i}} | |
| 86 | -<tr> | |
| 87 | - <td style="vertical-align: middle;"> | |
| 88 | - <!--<input type="checkbox" class="group-checkable icheck" data-id="{{obj.id}}">--> | |
| 89 | - {{++i}} | |
| 90 | - </td> | |
| 91 | - <td> | |
| 92 | - {{obj.userName}} | |
| 93 | - </td> | |
| 94 | - <td> | |
| 95 | - {{obj.name}} | |
| 96 | - </td> | |
| 97 | - <td> | |
| 98 | - {{obj.agencies}} | |
| 99 | - </td> | |
| 100 | - <td> | |
| 101 | - {{each obj.roles as role j}} | |
| 102 | - {{role.roleName}}、 | |
| 103 | - {{/each}} | |
| 104 | - </td> | |
| 105 | - <td> | |
| 106 | - {{if obj.enabled}} | |
| 107 | - 可用 | |
| 108 | - {{else}} | |
| 109 | - 禁用 | |
| 110 | - {{/if}} | |
| 111 | - </td> | |
| 112 | - <td> | |
| 113 | - {{obj.lastLoginDate}} | |
| 114 | - </td> | |
| 115 | - <td> | |
| 116 | - {{if obj.isEdit == 0}} | |
| 117 | - <a class="btn btn-sm blue btn-outline" href="edit.html?no={{obj.id}}" data-pjax><i class="fa fa-edit"></i> 编辑</a> | |
| 118 | - <!--<button type="button" class="btn btn-sm line_allot_btn" data-id="{{obj.id}}">线调线路分配</button>--> | |
| 119 | - {{/if}} | |
| 120 | - {{if obj.isAdmin}} | |
| 121 | - <a class="btn btn-sm red btn-outline reset_password" data-id="{{obj.id}}" data-name="{{obj.userName}}" data-pjax><i class="fa fa-undo"></i> 重置密码</a> | |
| 122 | - {{/if}} | |
| 123 | - </td> | |
| 124 | -</tr> | |
| 125 | -{{/each}} | |
| 126 | -{{if list.length == 0}} | |
| 127 | -<tr> | |
| 128 | - <td colspan=8><h6 class="muted">没有找到相关数据</h6></td> | |
| 129 | -</tr> | |
| 130 | -{{/if}} | |
| 131 | -</script> | |
| 132 | - | |
| 133 | -<script> | |
| 134 | -$(function(){ | |
| 135 | - var page = 0, initPagination; | |
| 136 | - var user,isAdmin = false; | |
| 137 | - var icheckOptions = { | |
| 138 | - checkboxClass: 'icheckbox_flat-blue', | |
| 139 | - increaseArea: '20%' | |
| 140 | - }; | |
| 141 | - $.get('/user/getCurrentUser', function(data) { | |
| 142 | - user = data; | |
| 143 | - var roles = user.roles; | |
| 144 | - $.each(roles,function () { | |
| 145 | - if(this.level == 1) | |
| 146 | - isAdmin = true; | |
| 147 | - }) | |
| 148 | - | |
| 149 | - }); | |
| 150 | - | |
| 151 | - setTimeout(function () { | |
| 152 | - $(document).on('click', 'a.reset_password', function () { | |
| 153 | - var id = $(this).data('id'); | |
| 154 | - var name = $(this).data('name'); | |
| 155 | - swal({ | |
| 156 | - title: "重装密码", | |
| 157 | - text: "将登录名为"+name+"的用户,密码重置为默认密码!", | |
| 158 | - type: "warning", | |
| 159 | - showCancelButton: true, | |
| 160 | - confirmButtonColor: "#DD6B55", | |
| 161 | - confirmButtonText: "重置", | |
| 162 | - cancelButtonText: "取消", | |
| 163 | - closeOnConfirm: false }, | |
| 164 | - function(){ | |
| 165 | - $.post('/user/resetPassword',{'id':id},function(result){ | |
| 166 | - if(result.status=='SUCCESS') { | |
| 167 | - // 弹出添加成功提示消息 | |
| 168 | - swal("登录名为"+name+"的用户密码重置成功!", "success"); | |
| 169 | - } else if(result.status=='ERROR') { | |
| 170 | - // 弹出添加失败提示消息 | |
| 171 | - swal("重置失败!", result.msg+",请联系开发人员!", "ERROR"); | |
| 172 | - } | |
| 173 | - // loadPage('list.html'); | |
| 174 | - // 发布后刷新页面 | |
| 175 | - jsDoQuery(getParams(), true); | |
| 176 | - }); | |
| 177 | - }); | |
| 178 | - }); | |
| 179 | - jsDoQuery(null,true); | |
| 180 | - | |
| 181 | - //重置 | |
| 182 | - $('tr.filter .filter-cancel').on('click', function(){ | |
| 183 | - $('tr.filter input, select').val('').change(); | |
| 184 | - jsDoQuery(null, true); | |
| 185 | - }); | |
| 186 | - | |
| 187 | - function getParams() { | |
| 188 | - var cells = $('tr.filter')[0].cells | |
| 189 | - ,params = {} | |
| 190 | - ,name; | |
| 191 | - $.each(cells, function(i, cell){ | |
| 192 | - var items = $('input,select', cell); | |
| 193 | - for(var j = 0, item; item = items[j++];){ | |
| 194 | - name = $(item).attr('name'); | |
| 195 | - if(name){ | |
| 196 | - params[name] = $(item).val(); | |
| 197 | - } | |
| 198 | - } | |
| 199 | - }); | |
| 200 | - return params; | |
| 201 | - } | |
| 202 | - | |
| 203 | - //提交 | |
| 204 | - $('tr.filter .filter-submit').on('click', function(){ | |
| 205 | - jsDoQuery(getParams(), true); | |
| 206 | - }); | |
| 207 | - | |
| 208 | - /* | |
| 209 | - * 获取数据 p: 要提交的参数, pagination: 是否重新分页 | |
| 210 | - */ | |
| 211 | - function jsDoQuery(p, pagination){ | |
| 212 | - var roles = new Map(); | |
| 213 | - // 查询下级角色 | |
| 214 | - $.ajax({ | |
| 215 | - url: "/role/findSubordinate", | |
| 216 | - type: "Get", | |
| 217 | - async:false, | |
| 218 | - data: null, | |
| 219 | - success: function (rs) { | |
| 220 | - if(rs.status == "SUCCESS"){ | |
| 221 | - $.each(rs.list,function(i,obj){ | |
| 222 | - roles[obj.id] = obj; | |
| 223 | - }); | |
| 224 | - } | |
| 225 | - } | |
| 226 | - }); | |
| 227 | - var params = {}; | |
| 228 | - if(p) | |
| 229 | - params = p; | |
| 230 | - //更新时间排序 | |
| 231 | - params['order'] = 'lastLoginDate'; | |
| 232 | - params['page'] = page; | |
| 233 | - // params['id_eq'] = "1"; | |
| 234 | - var i = layer.load(2); | |
| 235 | - $get('/user' ,params, function(data){ | |
| 236 | - var list = data.content; | |
| 237 | - $.each(list, function(i, obj) { | |
| 238 | - if(roles[obj.roles[0].id] != null && roles[obj.roles[0].id] != undefined){ | |
| 239 | - obj.isEdit = 0; | |
| 240 | - } else{ | |
| 241 | - obj.isEdit = 1; | |
| 242 | - } | |
| 243 | - obj.isAdmin = isAdmin; | |
| 244 | - obj.lastLoginDate = moment(obj.lastLoginDate).format("YYYY-MM-DD HH:mm:ss"); | |
| 245 | - }); | |
| 246 | - | |
| 247 | - var bodyHtm = template('user_list_temp', {list: list}); | |
| 248 | - | |
| 249 | - $('#datatable_user tbody').html(bodyHtm) | |
| 250 | - .find('.icheck').iCheck(icheckOptions) | |
| 251 | - .on('ifChanged', iCheckChange); | |
| 252 | - if(pagination && list.length > 0){ | |
| 253 | - //重新分页 | |
| 254 | - initPagination = true; | |
| 255 | - showPagination(data); | |
| 256 | - } | |
| 257 | - layer.close(i); | |
| 258 | - | |
| 259 | - $('.line_allot_btn').on('click', openAllotWindow); | |
| 260 | - }); | |
| 261 | - } | |
| 262 | - | |
| 263 | - function iCheckChange(){ | |
| 264 | - var tr = $(this).parents('tr'); | |
| 265 | - if(this.checked) | |
| 266 | - tr.addClass('row-active'); | |
| 267 | - else | |
| 268 | - tr.removeClass('row-active'); | |
| 269 | - | |
| 270 | - if($('#datatable_resource input.icheck:checked').length == 1) | |
| 271 | - $('#removeButton').removeAttr('disabled'); | |
| 272 | - else | |
| 273 | - $('#removeButton').attr('disabled', 'disabled'); | |
| 274 | - } | |
| 275 | - | |
| 276 | - function showPagination(data){ | |
| 277 | - //分页 | |
| 278 | - $('#pagination').jqPaginator({ | |
| 279 | - totalPages: data.totalPages, | |
| 280 | - visiblePages: 6, | |
| 281 | - currentPage: page + 1, | |
| 282 | - first: '<li class="first"><a href="javascript:void(0);">首页<\/a><\/li>', | |
| 283 | - prev: '<li class="prev"><a href="javascript:void(0);">上一页<\/a><\/li>', | |
| 284 | - next: '<li class="next"><a href="javascript:void(0);">下一页<\/a><\/li>', | |
| 285 | - last: '<li class="last"><a href="javascript:void(0);">尾页<\/a><\/li>', | |
| 286 | - page: '<li class="page"><a href="javascript:void(0);">{{page}}<\/a><\/li>', | |
| 287 | - onPageChange: function (num, type) { | |
| 288 | - if(initPagination){ | |
| 289 | - initPagination = false; | |
| 290 | - return; | |
| 291 | - } | |
| 292 | - | |
| 293 | - | |
| 294 | - page = num - 1; | |
| 295 | - jsDoQuery(null, false); | |
| 296 | - } | |
| 297 | - }); | |
| 298 | - } | |
| 299 | - | |
| 300 | - function openAllotWindow() { | |
| 301 | - var id = $(this).data('id'); | |
| 302 | - $.get('/pages/permission/user/controlAllot.html', function (content) { | |
| 303 | - layer.open({ | |
| 304 | - type: 1, | |
| 305 | - area: ['600px', '395px'], | |
| 306 | - content: content, | |
| 307 | - title: '线路调度权限分配', | |
| 308 | - shift: 5, | |
| 309 | - scrollbar: false, | |
| 310 | - success: function () { | |
| 311 | - $('#pageRealControlAllotWrap').trigger('init', id); | |
| 312 | - } | |
| 313 | - }); | |
| 314 | - }); | |
| 315 | - } | |
| 316 | - | |
| 317 | - //删除 | |
| 318 | - $('#removeButton').on('click', function(){ | |
| 319 | - if($(this).attr('disabled')) | |
| 320 | - return; | |
| 321 | - | |
| 322 | - var id = $('#datatable_resource input.icheck:checked').data('id'); | |
| 323 | - | |
| 324 | - removeConfirm('确定要删除选中的数据?', '/resource/' + id ,function(){ | |
| 325 | - $('tr.filter .filter-submit').click(); | |
| 326 | - }); | |
| 327 | - }); | |
| 328 | - },1000); | |
| 329 | - | |
| 330 | -}); | |
| 331 | -//改变状态 | |
| 332 | -function changeEnabled(id,enabled){ | |
| 333 | - $get('/user/changeEnabled',{id:id,enabled:enabled},function(result){ | |
| 334 | - jsDoQuery(null, true); | |
| 335 | - }) | |
| 336 | -} | |
| 1 | +<div class="page-head"> | |
| 2 | + <div class="page-title"> | |
| 3 | + <h1>用户管理</h1> | |
| 4 | + </div> | |
| 5 | +</div> | |
| 6 | + | |
| 7 | +<ul class="page-breadcrumb breadcrumb"> | |
| 8 | + <li><a href="/pages/home.html" data-pjax>首页</a> <i class="fa fa-circle"></i></li> | |
| 9 | + <li><span class="active">权限管理</span> <i class="fa fa-circle"></i></li> | |
| 10 | + <li><span class="active">用户管理</span></li> | |
| 11 | +</ul> | |
| 12 | + | |
| 13 | +<div class="row"> | |
| 14 | + <div class="col-md-12"> | |
| 15 | + <!-- Begin: life time stats --> | |
| 16 | + <div class="portlet light portlet-fit portlet-datatable bordered"> | |
| 17 | + <div class="portlet-title"> | |
| 18 | + <div class="caption"> | |
| 19 | + <i class="fa fa-users font-dark"></i> <span | |
| 20 | + class="caption-subject font-dark sbold uppercase">用户数据表</span> | |
| 21 | + </div> | |
| 22 | + <div class="actions"> | |
| 23 | + <a class="btn btn-circle blue" href="add.html" data-pjax><i class="fa fa-plus"></i> 添加用户</a> | |
| 24 | + | |
| 25 | + </div> | |
| 26 | + </div> | |
| 27 | + <div class="portlet-body"> | |
| 28 | + <div class="table-container" style="margin-top: 10px"> | |
| 29 | + <table | |
| 30 | + class="table table-striped table-bordered table-hover table-checkable" | |
| 31 | + id="datatable_user"> | |
| 32 | + <thead> | |
| 33 | + <tr role="row" class="heading"> | |
| 34 | + <th width="3%">#</th> | |
| 35 | + <th width="15%">登录名</th> | |
| 36 | + <th width="13%">姓名</th> | |
| 37 | + <th width="100">所属机构</th> | |
| 38 | + <th width="11%">角色</th> | |
| 39 | + <th width="10%">状态</th> | |
| 40 | + <th width="18%">最后登录时间</th> | |
| 41 | + <th width="18%">操作</th> | |
| 42 | + </tr> | |
| 43 | + <tr role="row" class="filter"> | |
| 44 | + <td></td> | |
| 45 | + <td> | |
| 46 | + <input type="text" class="form-control form-filter input-sm" name="userName_like"> | |
| 47 | + </td> | |
| 48 | + <td> | |
| 49 | + <input type="text" class="form-control form-filter input-sm" name="name_like"> | |
| 50 | + </td> | |
| 51 | + <td> | |
| 52 | + <input type="text" class="form-control form-filter input-sm" name="agencies_like"> | |
| 53 | + </td> | |
| 54 | + <td></td> | |
| 55 | + <td> | |
| 56 | + <select class="form-control form-filter " name="enabled_eq"> | |
| 57 | + <option value="">请选择...</option> | |
| 58 | + <option value="true">可用</option> | |
| 59 | + <option value="false">禁用</option> | |
| 60 | + </select> | |
| 61 | + </td> | |
| 62 | + <td></td> | |
| 63 | + | |
| 64 | + <td> | |
| 65 | + <button class="btn btn-sm green btn-outline filter-submit margin-bottom" > | |
| 66 | + <i class="fa fa-search"></i> 搜索</button> | |
| 67 | + | |
| 68 | + <button class="btn btn-sm red btn-outline filter-cancel"> | |
| 69 | + <i class="fa fa-times"></i> 重置</button> | |
| 70 | + </td> | |
| 71 | + </tr> | |
| 72 | + </thead> | |
| 73 | + <tbody></tbody> | |
| 74 | + </table> | |
| 75 | + <div style="text-align: right;"> | |
| 76 | + <ul id="pagination" class="pagination"></ul> | |
| 77 | + </div> | |
| 78 | + </div> | |
| 79 | + </div> | |
| 80 | + </div> | |
| 81 | + </div> | |
| 82 | +</div> | |
| 83 | + | |
| 84 | +<script id="user_list_temp" type="text/html"> | |
| 85 | +{{each list as obj i}} | |
| 86 | +<tr> | |
| 87 | + <td style="vertical-align: middle;"> | |
| 88 | + <!--<input type="checkbox" class="group-checkable icheck" data-id="{{obj.id}}">--> | |
| 89 | + {{++i}} | |
| 90 | + </td> | |
| 91 | + <td> | |
| 92 | + {{obj.userName}} | |
| 93 | + </td> | |
| 94 | + <td> | |
| 95 | + {{obj.name}} | |
| 96 | + </td> | |
| 97 | + <td> | |
| 98 | + {{obj.agencies}} | |
| 99 | + </td> | |
| 100 | + <td> | |
| 101 | + {{each obj.roles as role j}} | |
| 102 | + {{role.roleName}}、 | |
| 103 | + {{/each}} | |
| 104 | + </td> | |
| 105 | + <td> | |
| 106 | + {{if obj.enabled}} | |
| 107 | + 可用 | |
| 108 | + {{else}} | |
| 109 | + 禁用 | |
| 110 | + {{/if}} | |
| 111 | + </td> | |
| 112 | + <td> | |
| 113 | + {{obj.lastLoginDate}} | |
| 114 | + </td> | |
| 115 | + <td> | |
| 116 | + {{if obj.isEdit == 0}} | |
| 117 | + <a class="btn btn-sm blue btn-outline" href="edit.html?no={{obj.id}}" data-pjax><i class="fa fa-edit"></i> 编辑</a> | |
| 118 | + <!--<button type="button" class="btn btn-sm line_allot_btn" data-id="{{obj.id}}">线调线路分配</button>--> | |
| 119 | + {{/if}} | |
| 120 | + {{if obj.isAdmin}} | |
| 121 | + <a class="btn btn-sm red btn-outline reset_password" data-id="{{obj.id}}" data-name="{{obj.userName}}" data-pjax><i class="fa fa-undo"></i> 重置密码</a> | |
| 122 | + {{/if}} | |
| 123 | + </td> | |
| 124 | +</tr> | |
| 125 | +{{/each}} | |
| 126 | +{{if list.length == 0}} | |
| 127 | +<tr> | |
| 128 | + <td colspan=8><h6 class="muted">没有找到相关数据</h6></td> | |
| 129 | +</tr> | |
| 130 | +{{/if}} | |
| 131 | +</script> | |
| 132 | + | |
| 133 | +<script> | |
| 134 | +$(function(){ | |
| 135 | + var page = 0, initPagination; | |
| 136 | + var user,isAdmin = false; | |
| 137 | + var icheckOptions = { | |
| 138 | + checkboxClass: 'icheckbox_flat-blue', | |
| 139 | + increaseArea: '20%' | |
| 140 | + }; | |
| 141 | + $.get('/user/getCurrentUser', function(data) { | |
| 142 | + user = data; | |
| 143 | + var roles = user.roles; | |
| 144 | + $.each(roles,function () { | |
| 145 | + if(this.level == 1) | |
| 146 | + isAdmin = true; | |
| 147 | + }) | |
| 148 | + | |
| 149 | + }); | |
| 150 | + | |
| 151 | + setTimeout(function () { | |
| 152 | + $(document).on('click', 'a.reset_password', function () { | |
| 153 | + var id = $(this).data('id'); | |
| 154 | + var name = $(this).data('name'); | |
| 155 | + swal({ | |
| 156 | + title: "重装密码", | |
| 157 | + text: "将登录名为"+name+"的用户,密码重置为随机密码!", | |
| 158 | + type: "warning", | |
| 159 | + showCancelButton: true, | |
| 160 | + confirmButtonColor: "#DD6B55", | |
| 161 | + confirmButtonText: "重置", | |
| 162 | + cancelButtonText: "取消", | |
| 163 | + closeOnConfirm: false }, | |
| 164 | + function(){ | |
| 165 | + $.post('/user/resetPassword',{'id':id},function(result){ | |
| 166 | + if(result.status=='SUCCESS') { | |
| 167 | + // 弹出添加成功提示消息 | |
| 168 | + swal("登录名为"+name+"的用户密码重置成功!", "success"); | |
| 169 | + } else if(result.status=='ERROR') { | |
| 170 | + // 弹出添加失败提示消息 | |
| 171 | + swal("重置失败!", result.msg+",请联系开发人员!", "ERROR"); | |
| 172 | + } | |
| 173 | + // loadPage('list.html'); | |
| 174 | + // 发布后刷新页面 | |
| 175 | + jsDoQuery(getParams(), true); | |
| 176 | + }); | |
| 177 | + }); | |
| 178 | + }); | |
| 179 | + jsDoQuery(null,true); | |
| 180 | + | |
| 181 | + //重置 | |
| 182 | + $('tr.filter .filter-cancel').on('click', function(){ | |
| 183 | + $('tr.filter input, select').val('').change(); | |
| 184 | + jsDoQuery(null, true); | |
| 185 | + }); | |
| 186 | + | |
| 187 | + function getParams() { | |
| 188 | + var cells = $('tr.filter')[0].cells | |
| 189 | + ,params = {} | |
| 190 | + ,name; | |
| 191 | + $.each(cells, function(i, cell){ | |
| 192 | + var items = $('input,select', cell); | |
| 193 | + for(var j = 0, item; item = items[j++];){ | |
| 194 | + name = $(item).attr('name'); | |
| 195 | + if(name){ | |
| 196 | + params[name] = $(item).val(); | |
| 197 | + } | |
| 198 | + } | |
| 199 | + }); | |
| 200 | + return params; | |
| 201 | + } | |
| 202 | + | |
| 203 | + //提交 | |
| 204 | + $('tr.filter .filter-submit').on('click', function(){ | |
| 205 | + jsDoQuery(getParams(), true); | |
| 206 | + }); | |
| 207 | + | |
| 208 | + /* | |
| 209 | + * 获取数据 p: 要提交的参数, pagination: 是否重新分页 | |
| 210 | + */ | |
| 211 | + function jsDoQuery(p, pagination){ | |
| 212 | + var roles = new Map(); | |
| 213 | + // 查询下级角色 | |
| 214 | + $.ajax({ | |
| 215 | + url: "/role/findSubordinate", | |
| 216 | + type: "Get", | |
| 217 | + async:false, | |
| 218 | + data: null, | |
| 219 | + success: function (rs) { | |
| 220 | + if(rs.status == "SUCCESS"){ | |
| 221 | + $.each(rs.list,function(i,obj){ | |
| 222 | + roles[obj.id] = obj; | |
| 223 | + }); | |
| 224 | + } | |
| 225 | + } | |
| 226 | + }); | |
| 227 | + var params = {}; | |
| 228 | + if(p) | |
| 229 | + params = p; | |
| 230 | + //更新时间排序 | |
| 231 | + params['order'] = 'lastLoginDate'; | |
| 232 | + params['page'] = page; | |
| 233 | + // params['id_eq'] = "1"; | |
| 234 | + var i = layer.load(2); | |
| 235 | + $get('/user' ,params, function(data){ | |
| 236 | + var list = data.content; | |
| 237 | + $.each(list, function(i, obj) { | |
| 238 | + if(roles[obj.roles[0].id] != null && roles[obj.roles[0].id] != undefined){ | |
| 239 | + obj.isEdit = 0; | |
| 240 | + } else{ | |
| 241 | + obj.isEdit = 1; | |
| 242 | + } | |
| 243 | + obj.isAdmin = isAdmin; | |
| 244 | + obj.lastLoginDate = moment(obj.lastLoginDate).format("YYYY-MM-DD HH:mm:ss"); | |
| 245 | + }); | |
| 246 | + | |
| 247 | + var bodyHtm = template('user_list_temp', {list: list}); | |
| 248 | + | |
| 249 | + $('#datatable_user tbody').html(bodyHtm) | |
| 250 | + .find('.icheck').iCheck(icheckOptions) | |
| 251 | + .on('ifChanged', iCheckChange); | |
| 252 | + if(pagination && list.length > 0){ | |
| 253 | + //重新分页 | |
| 254 | + initPagination = true; | |
| 255 | + showPagination(data); | |
| 256 | + } | |
| 257 | + layer.close(i); | |
| 258 | + | |
| 259 | + $('.line_allot_btn').on('click', openAllotWindow); | |
| 260 | + }); | |
| 261 | + } | |
| 262 | + | |
| 263 | + function iCheckChange(){ | |
| 264 | + var tr = $(this).parents('tr'); | |
| 265 | + if(this.checked) | |
| 266 | + tr.addClass('row-active'); | |
| 267 | + else | |
| 268 | + tr.removeClass('row-active'); | |
| 269 | + | |
| 270 | + if($('#datatable_resource input.icheck:checked').length == 1) | |
| 271 | + $('#removeButton').removeAttr('disabled'); | |
| 272 | + else | |
| 273 | + $('#removeButton').attr('disabled', 'disabled'); | |
| 274 | + } | |
| 275 | + | |
| 276 | + function showPagination(data){ | |
| 277 | + //分页 | |
| 278 | + $('#pagination').jqPaginator({ | |
| 279 | + totalPages: data.totalPages, | |
| 280 | + visiblePages: 6, | |
| 281 | + currentPage: page + 1, | |
| 282 | + first: '<li class="first"><a href="javascript:void(0);">首页<\/a><\/li>', | |
| 283 | + prev: '<li class="prev"><a href="javascript:void(0);">上一页<\/a><\/li>', | |
| 284 | + next: '<li class="next"><a href="javascript:void(0);">下一页<\/a><\/li>', | |
| 285 | + last: '<li class="last"><a href="javascript:void(0);">尾页<\/a><\/li>', | |
| 286 | + page: '<li class="page"><a href="javascript:void(0);">{{page}}<\/a><\/li>', | |
| 287 | + onPageChange: function (num, type) { | |
| 288 | + if(initPagination){ | |
| 289 | + initPagination = false; | |
| 290 | + return; | |
| 291 | + } | |
| 292 | + | |
| 293 | + | |
| 294 | + page = num - 1; | |
| 295 | + jsDoQuery(null, false); | |
| 296 | + } | |
| 297 | + }); | |
| 298 | + } | |
| 299 | + | |
| 300 | + function openAllotWindow() { | |
| 301 | + var id = $(this).data('id'); | |
| 302 | + $.get('/pages/permission/user/controlAllot.html', function (content) { | |
| 303 | + layer.open({ | |
| 304 | + type: 1, | |
| 305 | + area: ['600px', '395px'], | |
| 306 | + content: content, | |
| 307 | + title: '线路调度权限分配', | |
| 308 | + shift: 5, | |
| 309 | + scrollbar: false, | |
| 310 | + success: function () { | |
| 311 | + $('#pageRealControlAllotWrap').trigger('init', id); | |
| 312 | + } | |
| 313 | + }); | |
| 314 | + }); | |
| 315 | + } | |
| 316 | + | |
| 317 | + //删除 | |
| 318 | + $('#removeButton').on('click', function(){ | |
| 319 | + if($(this).attr('disabled')) | |
| 320 | + return; | |
| 321 | + | |
| 322 | + var id = $('#datatable_resource input.icheck:checked').data('id'); | |
| 323 | + | |
| 324 | + removeConfirm('确定要删除选中的数据?', '/resource/' + id ,function(){ | |
| 325 | + $('tr.filter .filter-submit').click(); | |
| 326 | + }); | |
| 327 | + }); | |
| 328 | + },1000); | |
| 329 | + | |
| 330 | +}); | |
| 331 | +//改变状态 | |
| 332 | +function changeEnabled(id,enabled){ | |
| 333 | + $get('/user/changeEnabled',{id:id,enabled:enabled},function(result){ | |
| 334 | + jsDoQuery(null, true); | |
| 335 | + }) | |
| 336 | +} | |
| 337 | 337 | </script> |
| 338 | 338 | \ No newline at end of file | ... | ... |