同步到最新代码

This commit is contained in:
iFish 2014-08-06 20:56:47 +08:00
parent 32597dd2bd
commit 6f78dc520d
11 changed files with 196 additions and 94 deletions

View File

@ -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>

View File

@ -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;

View File

@ -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>
{{?}}

View File

@ -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", {

View File

@ -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);
}
})();

View File

@ -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>

View File

@ -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();
});

View File

@ -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) {

View File

@ -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,

View File

@ -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
View 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;
};
});