Commit 4c1b741923e8ebda588ab4ba3f3a9e3629e724a6

Authored by youxiw2000
1 parent 5e58c7bf

1

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/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"> 票价&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;:</label>
  386 + <label class="control-label col-md-5"> <span class="required"> * </span>票价&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;:</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 @@ $(&#39;#edit_route_mobal&#39;).on(&#39;editRouteMobal.show&#39;, 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,19 @@ $(&#39;#edit_route_mobal&#39;).on(&#39;editRouteMobal.show&#39;, 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]}});
334 336 }
335 337 isPush = false;
336 338 }
337 339 }
  340 +
338 341 for(var i = 0 ;i<sectionList.length;i++) {
339 342 if(sectionList[i] == "" || isNaN(sectionList[i].lng) || typeof(sectionList[i]) == "undefined" || sectionList[i] == null) {
340 343 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/editRoute.html
... ... @@ -118,7 +118,7 @@ $(&#39;#edit_route_mobal&#39;).on(&#39;editRouteMobal.show&#39;, 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 @@ $(&#39;#edit_route_mobal&#39;).on(&#39;editRouteMobal.show&#39;, 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 @@ $(&#39;#edit_route_mobal&#39;).on(&#39;editRouteMobal.show&#39;, 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 @@ $(&#39;#edit_route_mobal&#39;).on(&#39;editRouteMobal.show&#39;, function(e,WorldsBMap,GetAjaxDa
179 179  
180 180 return mapping;
181 181 }
182   -
183 182  
184 183  
185 184 // 表单验证
... ... @@ -227,6 +226,7 @@ $(&#39;#edit_route_mobal&#39;).on(&#39;editRouteMobal.show&#39;, 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 @@ $(&#39;#edit_route_mobal&#39;).on(&#39;editRouteMobal.show&#39;, 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 @@ $(&#39;#edit_route_mobal&#39;).on(&#39;editRouteMobal.show&#39;, 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);
... ...