define(function (require, exports, module) { var EO = require("../platform/EventObject.js"); var widget = require("./widget.js"); var sessMgr = require("../account/sessionMgr.js"); var param = require("../data.js"); var parser = require("../platform/parser.js"); var mp = require("./widget_message_popup.js"); //变量 var listTpl = $("section.float-passenger-selector-list script").doT(); var rowTpl = $("section.float-passenger-selector-selected script").doT(); var extTplData = { p: param }; var PassengerSelectionUI = function () { var that = this; var selectedPassenger = []; var allPassengers = []; var preloadPasList = null, curTrain = null, isStu = false, curSeat; EO.apply(this); this.init = function () { }; this.show = function (passengers, train, seat, stu) { preloadPasList = passengers; curTrain = train; isStu = stu; curSeat = seat; widget.showFloatDialog($("#float-passenger-selector")); //加载联系人? var list = $("section.float-passenger-selector-list ul"); list.empty().addClass("loading"); $("#float-passenger-selector .float-passenger-selector-selected ul").empty(); selectedPassenger = []; sessMgr.getPassengers(function (paslist) { allPassengers = paslist; list.removeClass("loading"); list.html(listTpl(_.filter(paslist, function (p) { return stu === "0" || p.passenger_type === '3'; }), extTplData)); }); }; this.hide = function () { }; this.filterPassenger = function () { var key = this.value; var list = $("#float-passenger-selector .float-passenger-selector-list li"); if (!key) { list.show(); } else { list.hide(); key = key.toLowerCase(); list.each(function () { var ds = this.dataset; if (ds.py.toLowerCase().indexOf(key) !== -1 || ds.name.toLowerCase().indexOf(key) !== -1 || ds.id.toLowerCase().indexOf(key) !== -1) $(this).show(); }); } }; Object.defineProperty(this, "selectedPassenger", { get: function () { return selectedPassenger; } }); //绑定事件-搜索 $("#float-passenger-selector .toolbar input:text").searchDelay().on("search", this.filterPassenger); //绑定事件-添加 $(document).on("change", "#float-passenger-selector .float-passenger-selector-list input:checkbox", function () { var isAdd = this.checked; var id = this.id; if (isAdd) { if (selectedPassenger.length >= 5) { mp.showMessagePopup("error", "联系人最多只能选择五个哦"); this.checked = false; return; } var p = _.findWhere(allPassengers, { key: id }); if (!p) return; var x = _.clone(p); selectedPassenger.push(x); //初始化席别和票种 x.ticketTypes = parser.getAvailableTicketType(x, isStu); x.seats = curTrain.tickets; x.canAddChildren = x.passenger_type === "1"; $("#float-passenger-selector .float-passenger-selector-selected ul").append(rowTpl(x, extTplData)); } else { selectedPassenger = _.reject(selectedPassenger, function (e) { return e.key === id; }); $("#float-passenger-selector .float-passenger-selector-selected li[data-id='" + id + "']").remove(); } }); $(document).on("click", "#float-passenger-selector .float-passenger-selector-selected i.fa-times-circle", function () { //删除 var li = $(this).closest("li"); var id = li.attr("data-id"); li.remove(); var chk = document.getElementById(id); chk && (chk.checked = false); }); $(document).on("click", "#float-passenger-selector .float-passenger-selector-selected a.add-child-ticket", function () { if (selectedPassenger.length >= 5) { mp.showMessagePopup("error", "联系人最多只能选择五个哦"); return; } var li = $(this).closest("li"); var id = li.attr("data-id"); var p = _.clone(_.findWhere(allPassengers, { key: id })); p.passenger_type = "2"; parser.processPassenger([p]); selectedPassenger.push(p); p.ticketTypes = [{ id: 2, name: "儿童票" }]; p.seats = curTrain.tickets; p.canAddChildren = false; li.after(rowTpl(p, extTplData)); }); //确定按钮 $("#float-passenger-selector footer button.button-primary").click(function () { if (selectedPassenger.length === 0) { mp.showMessagePopup("error", "还没有选择乘客的说 :-("); return; } that.fireEvent("passengerSelected"); widget.hideFloatDialog($("#float-passenger-selector")); }); }; PassengerSelectionUI.prototype = Object.create(EO); PassengerSelectionUI.constructor = EO; return new PassengerSelectionUI(); });