同步到最新代码
This commit is contained in:
parent
32597dd2bd
commit
6f78dc520d
@ -224,6 +224,7 @@
|
||||
<Content Include="js\ui\widget_sell_notification.js" />
|
||||
<Content Include="js\ui\widget_verifycode.js" />
|
||||
<None Include="Scripts\_references.js" />
|
||||
<Content Include="js\utility.js" />
|
||||
<Content Include="Web.config" />
|
||||
<Content Include="Web.Debug.config">
|
||||
<DependentUpon>Web.config</DependentUpon>
|
||||
|
@ -3,6 +3,7 @@
|
||||
margin-bottom: 10px;
|
||||
padding: 5px;
|
||||
border-radius: 3px;
|
||||
display: none;
|
||||
}
|
||||
|
||||
#book_sell_tip > header {
|
||||
@ -11,7 +12,7 @@
|
||||
line-height: 24px;
|
||||
}
|
||||
|
||||
#book_sell_tip > header > span {
|
||||
#book_sell_tip > header > a {
|
||||
font-weight: normal;
|
||||
float: right;
|
||||
margin-right: 15px;
|
||||
|
@ -159,17 +159,17 @@
|
||||
<section id="book_sell_tip">
|
||||
<header>
|
||||
预售提醒
|
||||
<span>
|
||||
<a href="javascript:;">
|
||||
<i class="fa fa-times"></i>
|
||||
关闭
|
||||
</span>
|
||||
</a>
|
||||
</header>
|
||||
<div>
|
||||
您选择的日期 <time>2014-08-30</time> 不在预售期内,无法购买。
|
||||
您选择的日期 <time></time> 车票不在预售期内,无法查询普通客票。
|
||||
<br />
|
||||
<time>2004-08-30</time> 的 <address>北京站</address> 车票起售时间为 <time>2014年8月10日 上午10:00</time>(全国动车票为<time>上午11:00</time>、高铁车票为<time>下午2:00</time>)。
|
||||
<time></time> 的 <address></address> 车票起售时间为 <time></time>(全国动车票为<time>上午11:00</time>、高铁车票为<time>下午2:00</time>)。
|
||||
<br />
|
||||
高峰期预售期可能有变动或增开临客,详情请密切留意12306公告。
|
||||
高峰期预售期可能有变动或增开临客,因此预售期会有变动,详情请密切留意12306公告。
|
||||
<span>需要在起售前提醒您吗?</span>
|
||||
</div>
|
||||
<footer>
|
||||
@ -281,7 +281,6 @@
|
||||
{{=p.passenger_type=="2"?"(儿童)":p.passenger_type=="3"?"(学生)":p.passenger_type=="4"?"(残军)":""}}
|
||||
</li>
|
||||
{{~}}
|
||||
|
||||
</script>
|
||||
<ul class="cl"></ul>
|
||||
<div class="passenger-pager">
|
||||
@ -490,7 +489,7 @@
|
||||
{{~}}
|
||||
{{?t.available==0||t.available==-1}}
|
||||
{{?t.selltime}}
|
||||
<span class="train-notontime">{{=ext.parser.formatSellDate(t.selltime)}} 起售</span>
|
||||
<span class="train-notontime">{{=ext.utility.formatSellDate(t.selltime)}} 起售</span>
|
||||
{{??}}
|
||||
<span class="train-notsell">本车次票已售完</span>
|
||||
{{?}}
|
||||
|
@ -8,6 +8,7 @@
|
||||
var currentuser = sessionStorage["_currentuser"];
|
||||
var parser = require("../platform/parser.js");
|
||||
var data = require("../data.js");
|
||||
var utility = require("../utility.js");
|
||||
|
||||
if (sessionStorage["_passenger"])
|
||||
passengers = JSON.parse(sessionStorage["_passenger"]);
|
||||
@ -146,7 +147,7 @@
|
||||
tryBottomSeat: true,
|
||||
autoSubmitEnabled: true,
|
||||
partialSubmitEnabled: false,
|
||||
depDate: parser.formatDate(data.defaultDate)
|
||||
depDate: utility.formatDate(data.defaultDate)
|
||||
};
|
||||
|
||||
Object.defineProperty(this, "current", {
|
||||
|
@ -1,21 +1,7 @@
|
||||
define(function (require, exports, module) {
|
||||
var citydata = require("./station/station_data.js");
|
||||
var utility = require("./utility.js");
|
||||
|
||||
exports.trimToDay = function (d) {
|
||||
d = d || new Date();
|
||||
if (!(d instanceof Date)) {
|
||||
d = new Date(d + '');
|
||||
}
|
||||
|
||||
var x = new Date();
|
||||
x.setTime(d.getTime() - d.getTime() % (1000 * 3600 * 24));
|
||||
return x;
|
||||
};
|
||||
exports.addDays = function (date, days) {
|
||||
var x = new Date();
|
||||
x.setTime(date.getTime() - date.getTime() % (1000 * 3600 * 24) + 1000 * 3600 * 24 * days);
|
||||
return x;
|
||||
};
|
||||
|
||||
exports.citydata = citydata;
|
||||
exports.cities = _(_.flatten(_.map(_.values(citydata.data), function (e) { return _.values(e); }))).mapObject(function (e) { return e.c; });;
|
||||
@ -103,10 +89,24 @@
|
||||
"D": 120
|
||||
}
|
||||
exports.maxSellDays = 19;
|
||||
exports.minDate = exports.trimToDay(new Date());
|
||||
exports.maxDate = exports.addDays(exports.minDate, exports.maxSellDays);
|
||||
exports.minDate = utility.trimToDay(new Date());
|
||||
exports.maxDate = utility.addDays(exports.minDate, exports.maxSellDays);
|
||||
exports.isStudentTicketEnabled = function(date) {
|
||||
/// <summary>判断指定的日期学生票是否可以买</summary>
|
||||
date = utility.toDate(date);
|
||||
|
||||
var tag = (date.getMonth() + 1) * 10 + date.getDate();
|
||||
return _.any(exports.stuDate, function(e) {
|
||||
return tag >= e[0] && tag <= e[1];
|
||||
});
|
||||
};
|
||||
exports.stuDate = [
|
||||
[101, 331],
|
||||
[601, 930],
|
||||
[1201, 1231]
|
||||
];
|
||||
exports.isValidDate = function (date) {
|
||||
date = exports.trimToDay(date);
|
||||
date = utility.trimToDay(date);
|
||||
return date >= exports.minDate;
|
||||
};
|
||||
exports.isAutoBookEnabled = function (profile) {
|
||||
@ -120,10 +120,10 @@
|
||||
|
||||
if (day < 5) {
|
||||
//星期1-5,则取星期五
|
||||
exports.defaultDate = exports.addDays(d, 5 - day);
|
||||
exports.defaultDate = utility.addDays(d, 5 - day);
|
||||
} else if (day > 0) {
|
||||
//取周日
|
||||
exports.defaultDate = exports.addDays(d, 7 - day);
|
||||
exports.defaultDate = utility.addDays(d, 7 - day);
|
||||
}
|
||||
})();
|
||||
|
||||
|
@ -1,4 +1,5 @@
|
||||
define(function (require, exports) {
|
||||
var utility = require("../utility.js");
|
||||
|
||||
exports.getError = function (data) {
|
||||
/// <summary>获得指定返回数据中的错误信息</summary>
|
||||
@ -12,31 +13,6 @@
|
||||
|
||||
return { message: "未知错误信息" };
|
||||
};
|
||||
exports.formatDate = function (date, format) {
|
||||
/// <summary>格式化指定日期</summary>
|
||||
/// <param name="format" type="String">格式化字符串</param>
|
||||
format = format || "yyyy-MM-dd";
|
||||
var o = {
|
||||
"M+": date.getMonth() + 1, //month
|
||||
"d+": date.getDate(), //day
|
||||
"h+": date.getHours(), //hour
|
||||
"m+": date.getMinutes(), //minute
|
||||
"s+": date.getSeconds(), //second
|
||||
"q+": Math.floor((date.getMonth() + 3) / 3), //quarter
|
||||
"S": date.getMilliseconds() //millisecond
|
||||
};
|
||||
|
||||
if (/(y+)/i.test(format)) {
|
||||
format = format.replace(RegExp.$1, (date.getFullYear() + "").substr(4 - RegExp.$1.length));
|
||||
}
|
||||
|
||||
for (var k in o) {
|
||||
if (new RegExp("(" + k + ")").test(format)) {
|
||||
format = format.replace(RegExp.$1, RegExp.$1.length == 1 ? o[k] : ("00" + o[k]).substr(("" + o[k]).length));
|
||||
}
|
||||
}
|
||||
return format;
|
||||
};
|
||||
|
||||
exports.canPassageAddToOrder = function (p) {
|
||||
if (p.passenger_id_type_code === "C" || p.passenger_id_type_code === "G" || p.passenger_id_type_code === "B")
|
||||
@ -88,28 +64,7 @@
|
||||
|
||||
return seats;
|
||||
};
|
||||
exports.toDate = function (date) {
|
||||
return date instanceof Date ? date : new Date(Date.parse(date));
|
||||
};
|
||||
exports.addDays = function (date, offset) {
|
||||
return new Date(date.getFullYear(), date.getMonth(), date.getDate() + offset);
|
||||
};
|
||||
|
||||
exports.formatSellDate = function (date) {
|
||||
date = exports.toDate(date);
|
||||
var today = exports.addDays(new Date(), 0);
|
||||
|
||||
var offset = Math.round((date - today) / 1000 / 60);
|
||||
var hour = Math.round(offset / 60);
|
||||
var minute = offset % 60;
|
||||
|
||||
if (hour < 24) return "今天" + hour + "点" + (minute ? minute + "分" : "");
|
||||
else if (hour < 72) {
|
||||
return ["明天", '后天'] + (hour % 24) + "点" + (minute ? minute + "分" : "");
|
||||
} else {
|
||||
return exports.formatDate(date, "MM月dd日 hh:mm");
|
||||
}
|
||||
};
|
||||
exports.sortCity = function (cities) {
|
||||
/// <summary>对城市进行排序</summary>
|
||||
|
||||
|
@ -2,12 +2,12 @@
|
||||
var param = require("../data.js");
|
||||
var widget = require("./widget.js");
|
||||
var sessMgr = require("../account/sessionMgr.js");
|
||||
var mp = require("./widget_message_popup.js");
|
||||
var datebar = require("./widget_datebar.js");
|
||||
var parser = require("../platform/parser.js");
|
||||
var media = require("../platform/media.js");
|
||||
var mp = require("./widget_message_popup.js");
|
||||
var stationData = require("../station/station_data.js");
|
||||
var utility = require("../utility.js");
|
||||
|
||||
//会话管理器事件
|
||||
sessMgr.on("notValidPassengerFound", function () {
|
||||
@ -16,6 +16,8 @@
|
||||
|
||||
//初始化日期
|
||||
require("./widget_datedropdown.js").init("input.ui-date");
|
||||
//预售期提示
|
||||
require("./widget_sell_notification.js").init();
|
||||
//地区选择
|
||||
var citySelector = require("./widget_cityselector.js");
|
||||
citySelector.init("input.ui-cityselector");
|
||||
@ -64,7 +66,7 @@
|
||||
|
||||
//界面交互初始化
|
||||
(function () {
|
||||
$(".order-tips").html("今日可预定:" + parser.formatDate(param.minDate, "MM月dd日") + "-" + parser.formatDate(param.maxDate, "MM月dd日") + "的火车票");
|
||||
$(".order-tips").html("今日可预定:" + utility.formatDate(param.minDate, "MM月dd日") + "-" + utility.formatDate(param.maxDate, "MM月dd日") + "的火车票");
|
||||
|
||||
//自动加速关闭
|
||||
$(".net-tips, .reset-btn").hide();
|
||||
@ -94,11 +96,11 @@
|
||||
|
||||
//当前日期
|
||||
if (p.depDate) {
|
||||
var d = parser.addDays(parser.toDate(p.depDate), 0);
|
||||
var today = parser.addDays(new Date(), 0);
|
||||
var d = utility.addDays(utility.toDate(p.depDate), 0);
|
||||
var today = utility.addDays(new Date(), 0);
|
||||
d = d < today ? today : d;
|
||||
|
||||
var datestr = parser.formatDate(d, "yyyy-MM-dd");
|
||||
var datestr = utility.formatDate(d, "yyyy-MM-dd");
|
||||
datebar.go(d, d);
|
||||
$("#dep_date").val(datestr);
|
||||
}
|
||||
@ -158,7 +160,7 @@
|
||||
return;
|
||||
}
|
||||
|
||||
var sellTimes = stationData.sellTime[v] || "----";
|
||||
var sellTimes = utility.format24hTo12h(stationData.sellTime[v]) || "----";
|
||||
$("div.search-time-tips").show().find("span:eq(1)").html(sellTimes).end().find("span:eq(0)").html(this.value + "站");
|
||||
};
|
||||
$("#from_city").change(showSellTime);
|
||||
@ -194,7 +196,7 @@
|
||||
|
||||
//检查学生票是否对应
|
||||
if (sessMgr.currentProfile.studentTicket && sessMgr.currentProfile.passengers && sessMgr.currentProfile.passengers.length) {
|
||||
if (_.some(sessMgr.currentProfile.passengers, function (p) { return p.passenger_type != '3'; })) {
|
||||
if (_.some(sessMgr.currentProfile.passengers, function (p) { return p.passenger_type !== '3'; })) {
|
||||
mp.confirm("确认", "您选择的是学生票,但是添加的联系人并不全是学生,将无法提交订单,确定继续查票吗?", ui_result.load);
|
||||
} else {
|
||||
ui_result.load();
|
||||
@ -223,6 +225,6 @@
|
||||
if (self.location.hash == "#debug")
|
||||
$("#chat").show();
|
||||
|
||||
|
||||
|
||||
});
|
||||
|
||||
|
@ -12,6 +12,7 @@
|
||||
var autorefresh = require("./ui-autorefresh.js");
|
||||
var trainSuggest = require("../otn/trainstationsuggest.js");
|
||||
var suggestionTemplate = $("#suggestion_template").doT();
|
||||
var utility = require("../utility.js");
|
||||
|
||||
//引入过滤
|
||||
require("../otn/trainfilter.js").init();
|
||||
@ -25,7 +26,8 @@
|
||||
|
||||
$("#result").html(tpl(data, {
|
||||
param: param,
|
||||
parser: parser
|
||||
parser: parser,
|
||||
utility: utility
|
||||
}));
|
||||
};
|
||||
this.load = function (ui, from, to, date, stu) {
|
||||
|
@ -3,15 +3,16 @@
|
||||
var tpl = $("#datebar-template").doT();
|
||||
var container = $("ul.date-bar-list");
|
||||
var parser = require("../platform/parser.js");
|
||||
var utility = require("../utility.js");
|
||||
|
||||
var getFirstDayOfWeek = function (date) {
|
||||
date = parser.toDate(date);
|
||||
date = utility.toDate(date);
|
||||
var day = date.getDay();
|
||||
|
||||
if (day === 1)
|
||||
return date;
|
||||
var offset = day === 0 ? -6 : 1 - day;
|
||||
return parser.addDays(date, offset);
|
||||
return utility.addDays(date, offset);
|
||||
};
|
||||
var formatDate = function (date) {
|
||||
var m = date.getMonth() + 1;
|
||||
@ -20,14 +21,14 @@
|
||||
return (m < 10 ? "0" : "") + m + "月" + (d < 10 ? "0" : "") + d + "日";
|
||||
};
|
||||
var getDateString = function (date) {
|
||||
return parser.formatDate(date, 'yyyy-MM-dd');
|
||||
return utility.formatDate(date, 'yyyy-MM-dd');
|
||||
};
|
||||
|
||||
var WidgetDateBarUi = function () {
|
||||
var that = this;
|
||||
var today = parser.addDays(new Date(), 0);
|
||||
var today = utility.addDays(new Date(), 0);
|
||||
var date = null;
|
||||
var maxdays = parser.addDays(today, 30);
|
||||
var maxdays = utility.addDays(today, 30);
|
||||
var currentHightDate = today;
|
||||
|
||||
ev.apply(this);
|
||||
@ -42,9 +43,9 @@
|
||||
that.go(today);
|
||||
};
|
||||
this.go = function (goDate, selectedDate) {
|
||||
goDate = parser.toDate(goDate);
|
||||
goDate = utility.toDate(goDate);
|
||||
if (selectedDate)
|
||||
currentHightDate = parser.toDate(selectedDate);
|
||||
currentHightDate = utility.toDate(selectedDate);
|
||||
|
||||
var d = getFirstDayOfWeek(goDate);
|
||||
if (!date || d.getTime() !== date.getTime()) {
|
||||
@ -54,16 +55,16 @@
|
||||
container.find("li:not(.disabled)").removeClass("selected").filter("[data-date='" + getDateString(currentHightDate) + "']").addClass("selected");
|
||||
};
|
||||
this.goNext = function () {
|
||||
that.go(parser.addDays(date, 7));
|
||||
that.go(utility.addDays(date, 7));
|
||||
};
|
||||
this.goPrev = function () {
|
||||
that.go(parser.addDays(date, -7));
|
||||
that.go(utility.addDays(date, -7));
|
||||
};
|
||||
this.render = function () {
|
||||
var data = [];
|
||||
var namestr = ['星期日', '星期一', '星期二', '星期三', '星期四', '星期五', '星期六'];
|
||||
for (var i = 0; i < 7; i++) {
|
||||
var d = parser.addDays(date, i);
|
||||
var d = utility.addDays(date, i);
|
||||
|
||||
data.push({
|
||||
_date: d,
|
||||
|
@ -1,4 +1,60 @@
|
||||
define(function (require, exports, module) {
|
||||
var sessMgr = require("../account/sessionMgr.js");
|
||||
var data = require("../data.js");
|
||||
var cp = sessMgr.currentProfile;
|
||||
var container = $("#book_sell_tip");
|
||||
var utility = require("../utility.js");
|
||||
var stationData = require("../station/station_data.js");
|
||||
var lastCheckKey = null;
|
||||
|
||||
var checkTime = function () {
|
||||
cp = sessMgr.currentProfile;
|
||||
if (!cp) {
|
||||
container.hide();
|
||||
return;
|
||||
}
|
||||
|
||||
var time = cp.depDate;
|
||||
var code = cp.fromCode;
|
||||
if (!time || !code) {
|
||||
container.hide();
|
||||
return;
|
||||
}
|
||||
if (lastCheckKey === time + code)
|
||||
return;
|
||||
|
||||
container.hide();
|
||||
lastCheckKey = time + code;
|
||||
|
||||
var days = utility.getDaysDifference(new Date(), time);
|
||||
if (days <= data.maxSellDays)
|
||||
return; //预售期内
|
||||
if (cp.studentTicket && data.isStudentTicketEnabled(time))
|
||||
return; //学生票
|
||||
|
||||
//起售期
|
||||
var bs = utility.addDays(time, -data.maxSellDays);
|
||||
var sellTimes = stationData.sellTime[code] || "----";
|
||||
|
||||
var times = container.find("time");
|
||||
times.filter(":lt(2)").html(utility.formatDate(time, "yyyy年MM月dd日"));
|
||||
times.filter(":eq(2)").html(utility.formatDate(bs, "yyyy年MM月dd日") + utility.format24hTo12h(sellTimes));
|
||||
container.find("address").html(cp.fromText + "站");
|
||||
|
||||
container.show();
|
||||
};
|
||||
|
||||
return {
|
||||
init: function () {
|
||||
sessMgr.on("save", function () {
|
||||
checkTime();
|
||||
});
|
||||
if (cp)
|
||||
checkTime();
|
||||
container.find(">header>a").click(function() {
|
||||
container.hide();
|
||||
});
|
||||
},
|
||||
check: checkTime
|
||||
};
|
||||
});
|
||||
|
84
Web12306/js/utility.js
Normal file
84
Web12306/js/utility.js
Normal file
@ -0,0 +1,84 @@
|
||||
define(function (require, exports, module) {
|
||||
exports.trimToDay = function (d) {
|
||||
d = d || new Date();
|
||||
if (!(d instanceof Date)) {
|
||||
d = new Date(d + '');
|
||||
}
|
||||
|
||||
var x = new Date();
|
||||
x.setTime(d.getTime() - d.getTime() % (1000 * 3600 * 24));
|
||||
return x;
|
||||
};
|
||||
//exports.addDays = function (date, days) {
|
||||
// var x = new Date();
|
||||
// x.setTime(date.getTime() - date.getTime() % (1000 * 3600 * 24) + 1000 * 3600 * 24 * days);
|
||||
// return x;
|
||||
//};
|
||||
exports.addDays = function (date, offset) {
|
||||
date = exports.toDate(date);
|
||||
return new Date(date.getFullYear(), date.getMonth(), date.getDate() + offset);
|
||||
};
|
||||
|
||||
exports.toDate = function (date) {
|
||||
return date instanceof Date ? date : new Date(Date.parse(date));
|
||||
};
|
||||
exports.formatDate = function (date, format) {
|
||||
/// <summary>格式化指定日期</summary>
|
||||
/// <param name="format" type="String">格式化字符串</param>
|
||||
date = exports.toDate(date);
|
||||
|
||||
format = format || "yyyy-MM-dd";
|
||||
var o = {
|
||||
"M+": date.getMonth() + 1, //month
|
||||
"d+": date.getDate(), //day
|
||||
"h+": date.getHours(), //hour
|
||||
"m+": date.getMinutes(), //minute
|
||||
"s+": date.getSeconds(), //second
|
||||
"q+": Math.floor((date.getMonth() + 3) / 3), //quarter
|
||||
"S": date.getMilliseconds() //millisecond
|
||||
};
|
||||
|
||||
if (/(y+)/i.test(format)) {
|
||||
format = format.replace(RegExp.$1, (date.getFullYear() + "").substr(4 - RegExp.$1.length));
|
||||
}
|
||||
|
||||
for (var k in o) {
|
||||
if (new RegExp("(" + k + ")").test(format)) {
|
||||
format = format.replace(RegExp.$1, RegExp.$1.length == 1 ? o[k] : ("00" + o[k]).substr(("" + o[k]).length));
|
||||
}
|
||||
}
|
||||
return format;
|
||||
};
|
||||
exports.formatSellDate = function (date) {
|
||||
date = exports.toDate(date);
|
||||
var today = exports.addDays(new Date(), 0);
|
||||
|
||||
var offset = Math.round((date - today) / 1000 / 60);
|
||||
var hour = Math.round(offset / 60);
|
||||
var minute = offset % 60;
|
||||
|
||||
if (hour < 24) return "今天" + hour + "点" + (minute ? minute + "分" : "");
|
||||
else if (hour < 72) {
|
||||
return ["明天", '后天'] + (hour % 24) + "点" + (minute ? minute + "分" : "");
|
||||
} else {
|
||||
return exports.formatDate(date, "MM月dd日 hh:mm");
|
||||
}
|
||||
};
|
||||
exports.getDaysDifference = function (date1, date2) {
|
||||
/// <summary>获得date1到date2之间隔了多少天</summary>
|
||||
|
||||
var time1 = Math.floor(exports.toDate(date1).getTime() / 1000 / 60 / 60 / 24);
|
||||
var time2 = Math.floor(exports.toDate(date2).getTime() / 1000 / 60 / 60 / 24);
|
||||
|
||||
return time2 - time1;
|
||||
}
|
||||
exports.format24hTo12h = function (t) {
|
||||
/// <summary>将24小时制式时间转换为12小时制式</summary>
|
||||
|
||||
if (!/0?(\d{1,2}):(\d{1,2})/.exec(t))
|
||||
return "";
|
||||
|
||||
var h = parseInt(RegExp.$1, 10);
|
||||
return h < 13 ? "上午" + h + ":" + RegExp.$2 : "下午" + (h - 12) + ":" + RegExp.$2;
|
||||
};
|
||||
});
|
Loading…
Reference in New Issue
Block a user