Jelajahi Sumber

添加homestay页面

洪海涛 8 tahun lalu
induk
melakukan
81f56ee4b6

+ 40 - 39
www/webapp/o2o/build.js

@@ -1,41 +1,42 @@
 ({
-    mainConfigFile: './js/main.js',
-    baseUrl: './js',
-    waitSeconds: 200,
-    paths: {
-        "BMap": "empty:"
-    },
-    dir: './dist/js',
-    modules: [{
-        name: 'main',
-        include: [
-            'ratchet',
-            'pageHome',
-            'pageHelp',
-            'pageAbout',
-            'pageRecharge',
-            'pageMine',
-            'pageSecondary',
-            'pageProduct',
-            'pagePlaceOrder',
-            'pagePicker',
-            'pagePay',
-            'pageMyOrder',
-            'pageMyCoupon',
-            'pageSuccess',
-            'pageAgreement',
-            'pageAddressList',
-            'pageAddressAdd',
-            'pageAddressDetail',
-            'pageAddressPoisiton',
-            'pageBeautician',
-            'pageBeauticianDetail',
-            'pageHire',
-            'panelAlert',
-            'panelDataPicker',
-            'panelDataPicker',
-            'panelProductOption',
-            'panelPostReview'
-        ]
-    }]
+	mainConfigFile: './js/main.js',
+	baseUrl: './js',
+	waitSeconds: 200,
+	paths: {
+		"BMap": "empty:"
+	},
+	dir: './dist/js',
+	modules: [{
+		name: 'main',
+		include: [
+			'ratchet',
+			'pageHome',
+			'pageHelp',
+			'pageAbout',
+			'pageRecharge',
+			'pageMine',
+			'pageSecondary',
+			'pageHomestay',
+			'pageProduct',
+			'pagePlaceOrder',
+			'pagePicker',
+			'pagePay',
+			'pageMyOrder',
+			'pageMyCoupon',
+			'pageSuccess',
+			'pageAgreement',
+			'pageAddressList',
+			'pageAddressAdd',
+			'pageAddressDetail',
+			'pageAddressPoisiton',
+			'pageBeautician',
+			'pageBeauticianDetail',
+			'pageHire',
+			'panelAlert',
+			'panelDataPicker',
+			'panelDataPicker',
+			'panelProductOption',
+			'panelPostReview'
+		]
+	}]
 })

+ 79 - 0
www/webapp/o2o/css/homestay.css

@@ -0,0 +1,79 @@
+#homestayScroll .prevent-scroll {
+	width: 100%;
+	position: fixed;
+	bottom: 0;
+	background-color: #2a2400;
+}
+#homestayScroll .prevent-scroll .width-percent-33 .title-container-square {
+	padding: 20%;
+	position: relative;
+	text-align: center;
+}
+#homestayScroll .prevent-scroll .width-percent-33 .title-container-square a {
+	position: absolute;
+	left: 0;
+	right: 0;
+	top: 0;
+	bottom: 0;
+}
+#homestayScroll .prevent-scroll .width-percent-33 .title-container-square a .logo {
+	background-size: 65% 65%;
+	background-position: center center;
+	padding: 10%;
+	margin-top: 5px;
+	display: inline-block;
+	border-radius: 50%;
+}
+#homestayScroll .prevent-scroll .width-percent-33 .title-container-square a .name {
+	display: block;
+	margin-top: -5px;
+	font-size: 12px;
+}
+#homestayScroll .prevent-scroll .width-percent-33:nth-child(1) a:active .logo {
+	border-radius: inherit;
+	background: url("http://odulvej8l.bkt.clouddn.com/tab_home.png") no-repeat;
+	background-size: 100%;
+	background-position: center center;
+}
+#homestayScroll .prevent-scroll .width-percent-33:nth-child(1) a:active .name {
+	color: #fff;
+}
+#homestayScroll .prevent-scroll .width-percent-33:nth-child(1) a .logo {
+	border-radius: inherit;
+	background: url("http://odulvej8l.bkt.clouddn.com/tab_home_pre.png") no-repeat;
+	background-size: 90%;
+	background-position: center center;
+}
+#homestayScroll .prevent-scroll .width-percent-33:nth-child(1) a .name {
+	color: #b89400;
+}
+#homestayScroll .prevent-scroll .width-percent-33:nth-child(2) a .logo {
+	border-radius: 50%;
+	display: inline-block;
+	padding: 25%;
+	background-size: 100%;
+	margin-top: -15px;
+	background: url("http://odulvej8l.bkt.clouddn.com/tab_butler.png") 0 0 no-repeat #2a2400;
+	background-size: 65% 65%;
+	background-position: center;
+}
+#homestayScroll .prevent-scroll .width-percent-33:nth-child(3) a .logo {
+	border-radius: inherit;
+	background: url("http://odulvej8l.bkt.clouddn.com/tab_me_pre.png");
+	background-repeat: no-repeat;
+	background-size: 90%;
+	background-position: center center;
+}
+#homestayScroll .prevent-scroll .width-percent-33:nth-child(3) a .name {
+	color: #b89400;
+}
+#homestayScroll .prevent-scroll .width-percent-33:nth-child(3) a:active .logo {
+	border-radius: inherit;
+	background: url("http://odulvej8l.bkt.clouddn.com/tab_me.png");
+	background-repeat: no-repeat;
+	background-size: 100%;
+	background-position: center center;
+}
+#homestayScroll .prevent-scroll .width-percent-33:nth-child(3) a:active .name {
+	color: #fff;
+}

+ 1 - 0
www/webapp/o2o/css/main.css

@@ -7,6 +7,7 @@
 @import url("./myOrder.css");
 @import url("./mine.css");
 @import url("./secondary.css");
+@import url("./homestay.css");
 @import url("./desc.css");
 @import url("./agreement.css");
 @import url("./review.css");

File diff ditekan karena terlalu besar
+ 0 - 0
www/webapp/o2o/dist/css/main.css


+ 1 - 0
www/webapp/o2o/dist/js/build.txt

@@ -27,6 +27,7 @@ page/rechargee.js
 model/review.js
 page/mine.js
 page/secondary.js
+page/homestay.js
 model/cart.js
 page/product.js
 page/placeOrder.js

File diff ditekan karena terlalu besar
+ 0 - 0
www/webapp/o2o/dist/js/build/template.js


File diff ditekan karena terlalu besar
+ 0 - 0
www/webapp/o2o/dist/js/main.js


File diff ditekan karena terlalu besar
+ 0 - 1
www/webapp/o2o/dist/js/page/home.js


+ 1 - 0
www/webapp/o2o/dist/js/page/homestay.js

@@ -0,0 +1 @@
+define(["$","template","IScroll","user","product","native","config","address"],function(e,t,n,r,i,s,o,u){function a(t){t.preventDefault(),e(document).trigger("spa:navigate",{hash:"",pushData:{dontNeedReload:!0}})}return{title:"家庭保洁",body:"",init:function(t,n){var s=this,o=e(document);s.on("swipeRight",function(e){a.call(this,e)}),e.newTouch(".back-button",function(e){a.call(this,e)},s),s.on("tapBackButton",function(e){a.call(this,e)}),e.newTouch(".btn-product",function(t){t.preventDefault();var n=parseInt(e(this).attr("data-product-type"));o.trigger("spa:navigate",{hash:"placeOrder",pushData:{product:i.allList[n-1],needReset:!0}})},s),e.newTouch(".btn-action-my-order",function(){event.preventDefault(),o.trigger("spa:navigate",{hash:"",pushData:{needReset:!0}})},s),e.newTouch(".btn-action-coupon",function(e){e.preventDefault(),r.checkLogin(function(){o.trigger("spa:navigate",{hash:"mine",pushData:{needReset:!0}})})},s),n.resolve()},beforeopen:function(e,t){t.resolve()},afteropen:function(r,i){var s=this,u=e(document);if(r.pushData&&r.pushData.needReset){var a=t("homestay/index",{showNavBar:!o.isWX});e(".spa-page-body",s).html(a),setTimeout(function(){r.scroll=new n("#homestayScroll")},500)}i.resolve()},beforeclose:function(e,t){t.resolve()}}});

+ 1 - 1
www/webapp/o2o/dist/js/page/secondary.js

@@ -1 +1 @@
-define(["$","template","IScroll","user","product","native","config","address"],function(e,t,n,r,i,s,o,u){function a(t){t.preventDefault(),e(document).trigger("spa:navigate",{hash:"",pushData:{dontNeedReload:!0}})}return{title:"家庭保洁",body:"",init:function(t,n){var r=this,s=e(document);r.on("swipeRight",function(e){a.call(this,e)}),e.newTouch(".back-button",function(e){a.call(this,e)},r),r.on("tapBackButton",function(e){a.call(this,e)}),e.newTouch(".btn-product",function(t){t.preventDefault();var n=parseInt(e(this).attr("data-product-type"));s.trigger("spa:navigate",{hash:"placeOrder",pushData:{product:i.allList[n-1],needReset:!0}})},r),e.newTouch(".btn-action-my-order",function(){event.preventDefault(),s.trigger("spa:navigate",{hash:"",pushData:{needReset:!0}})},r),e.newTouch(".btn-action-coupon",function(){event.preventDefault(),s.trigger("spa:navigate",{hash:"mine",pushData:{needReset:!0}})},r),n.resolve()},beforeopen:function(e,t){t.resolve()},afteropen:function(r,i){var s=this,u=e(document);if(r.pushData&&r.pushData.needReset){var a=t("secondary/index",{showNavBar:!o.isWX});e(".spa-page-body",s).html(a),setTimeout(function(){r.scroll=new n("#secondaryScroll")},500)}i.resolve()},beforeclose:function(e,t){t.resolve()}}});
+define(["$","template","IScroll","user","product","native","config","address"],function(e,t,n,r,i,s,o,u){function a(t){t.preventDefault(),e(document).trigger("spa:navigate",{hash:"",pushData:{dontNeedReload:!0}})}return{title:"家庭保洁",body:"",init:function(t,n){var s=this,o=e(document);s.on("swipeRight",function(e){a.call(this,e)}),e.newTouch(".back-button",function(e){a.call(this,e)},s),s.on("tapBackButton",function(e){a.call(this,e)}),e.newTouch(".btn-product",function(t){t.preventDefault();var n=parseInt(e(this).attr("data-product-type"));o.trigger("spa:navigate",{hash:"placeOrder",pushData:{product:i.allList[n-1],needReset:!0}})},s),e.newTouch(".btn-action-my-order",function(){event.preventDefault(),o.trigger("spa:navigate",{hash:"",pushData:{needReset:!0}})},s),e.newTouch(".btn-action-coupon",function(e){e.preventDefault(),r.checkLogin(function(){o.trigger("spa:navigate",{hash:"mine",pushData:{needReset:!0}})})},s),n.resolve()},beforeopen:function(e,t){t.resolve()},afteropen:function(r,i){var s=this,u=e(document);if(r.pushData&&r.pushData.needReset){var a=t("secondary/index",{showNavBar:!o.isWX});e(".spa-page-body",s).html(a),setTimeout(function(){r.scroll=new n("#secondaryScroll")},500)}i.resolve()},beforeclose:function(e,t){t.resolve()}}});

File diff ditekan karena terlalu besar
+ 0 - 859
www/webapp/o2o/js/build/template.js


+ 606 - 593
www/webapp/o2o/js/main.js

@@ -1,601 +1,614 @@
 require.config({
-    urlArgs: 'v=' + (new Date()).getTime(),
-    waitSeconds: 0,
-    paths: {
-        zepto: '../../common/js/zepto.min',
-        wx: '../../common/js/jweixin-1.0.0',
-        ctk: '../../common/js/ctk-1.0.0',
-        pingpp: '../../common/js/pingpp',
-        spa: '../../common/js/spa',
-        IScroll: '../../framework/iscroll5/iscroll-probe',
-        ratchet: '../../framework/ratchet-2.0.2/dist/js/ratchet.base',
-        $: '../../common/js/jq_extend',
-        autosize: '../../common/js/autosize',
-        config: '../../common/js/config',
-        helper: '../../common/js/helper',
-        native: '../../common/js/native',
-        storage: '../../common/js/storage',
-        base: '../../common/js/base',
-        template: './build/template',
-        api: './api',
-        bdmapapi: '../../common/js/bdmapapi',
-        BMap: 'http://api.map.baidu.com/getscript?v=2.0&ak=B349f0b32ef6e78b2e678f45cb9fddaf&services=&t=20160310104956',
-        //model
-        user: './model/user',
-        product: './model/product',
-        cart: './model/cart',
-        order: './model/order',
-        review: './model/review',
-        address: './model/address',
-        recharge: './model/recharge',
-        //page
-        pageHome: './page/home',
-        pageRecharge: './page/rechargee',
-        pageHelp: './page/help',
-        pageAbout: './page/about',
-        pageProduct: './page/product',
-        pageProductInfo: './page/productInfo',
-        pageDesc: './page/desc',
-        pagePlaceOrder: './page/placeOrder',
-        pagePicker: './page/picker',
-        pagePay: './page/pay',
-        pageAppendPay: './page/appendPay',
-        pageMyOrder: './page/myOrder',
-        pageMyOrderDetail: './page/myOrderDetail',
-        pageMyCoupon: './page/myCoupon',
-        pageOrderDone: './page/orderDone',
-        pageSuccess: './page/success',
-        pageAgreement: './page/agreement',
-        pageAddressList: './page/address/addressList',
-        pageAddressAdd: './page/address/addressAdd',
-        pageAddressDetail: './page/address/addressDetail',
-        pageAddressPoisiton: './page/address/addressPoi',
-        pageHire: './page/hire',
-        pageComing: './page/coming',
-        pageActivityCat: './page/activities/cat',
-        pageAppend: './page/append',
-        pageRefund: './page/refund',
-        pageRefundSuccess: './page/refundSuccess',
-        pageBeautician: './page/beautician',
-        pageBeauticianDetail: './page/beauticianDetail',
-        pageMine: './page/mine',
-        pageSecondary: './page/secondary',
-        //panel
-        panelAlert: './panel/alert',
-        panelActionSheet: './panel/actionSheet',
-        // panelAddressAction: './panel/addressAction',
-        panelDataPicker: './panel/dataPicker',
-        panelProductOption: './panel/productOption',
-        panelPostReview: './panel/postReview',
-        panelActivity: './panel/activity'
-    },
-    shim: {
-        zepto: {
-            exports: '$'
-        },
-        IScroll: {
-            exports: 'IScroll'
-        },
-        BMap: {
-            exports: 'BMap'
-        }
-
-    }
+	urlArgs: 'v=' + (new Date()).getTime(),
+	waitSeconds: 0,
+	paths: {
+		zepto: '../../common/js/zepto.min',
+		wx: '../../common/js/jweixin-1.0.0',
+		ctk: '../../common/js/ctk-1.0.0',
+		pingpp: '../../common/js/pingpp',
+		spa: '../../common/js/spa',
+		IScroll: '../../framework/iscroll5/iscroll-probe',
+		ratchet: '../../framework/ratchet-2.0.2/dist/js/ratchet.base',
+		$: '../../common/js/jq_extend',
+		autosize: '../../common/js/autosize',
+		config: '../../common/js/config',
+		helper: '../../common/js/helper',
+		native: '../../common/js/native',
+		storage: '../../common/js/storage',
+		base: '../../common/js/base',
+		template: './build/template',
+		api: './api',
+		bdmapapi: '../../common/js/bdmapapi',
+		BMap: 'http://api.map.baidu.com/getscript?v=2.0&ak=B349f0b32ef6e78b2e678f45cb9fddaf&services=&t=20160310104956',
+		//model
+		user: './model/user',
+		product: './model/product',
+		cart: './model/cart',
+		order: './model/order',
+		review: './model/review',
+		address: './model/address',
+		recharge: './model/recharge',
+		//page
+		pageHome: './page/home',
+		pageRecharge: './page/rechargee',
+		pageHelp: './page/help',
+		pageHomestay: './page/homestay',
+		pageAbout: './page/about',
+		pageProduct: './page/product',
+		pageProductInfo: './page/productInfo',
+		pageDesc: './page/desc',
+		pagePlaceOrder: './page/placeOrder',
+		pagePicker: './page/picker',
+		pagePay: './page/pay',
+		pageAppendPay: './page/appendPay',
+		pageMyOrder: './page/myOrder',
+		pageMyOrderDetail: './page/myOrderDetail',
+		pageMyCoupon: './page/myCoupon',
+		pageOrderDone: './page/orderDone',
+		pageSuccess: './page/success',
+		pageAgreement: './page/agreement',
+		pageAddressList: './page/address/addressList',
+		pageAddressAdd: './page/address/addressAdd',
+		pageAddressDetail: './page/address/addressDetail',
+		pageAddressPoisiton: './page/address/addressPoi',
+		pageHire: './page/hire',
+		pageComing: './page/coming',
+		pageActivityCat: './page/activities/cat',
+		pageAppend: './page/append',
+		pageRefund: './page/refund',
+		pageRefundSuccess: './page/refundSuccess',
+		pageBeautician: './page/beautician',
+		pageBeauticianDetail: './page/beauticianDetail',
+		pageMine: './page/mine',
+		pageSecondary: './page/secondary',
+		//panel
+		panelAlert: './panel/alert',
+		panelActionSheet: './panel/actionSheet',
+		// panelAddressAction: './panel/addressAction',
+		panelDataPicker: './panel/dataPicker',
+		panelProductOption: './panel/productOption',
+		panelPostReview: './panel/postReview',
+		panelActivity: './panel/activity'
+	},
+	shim: {
+		zepto: {
+			exports: '$'
+		},
+		IScroll: {
+			exports: 'IScroll'
+		},
+		BMap: {
+			exports: 'BMap'
+		}
+
+	}
 });
 
 require(['$', 'spa', 'native', 'helper', 'ratchet', 'config', 'user'], function ($, spa, native, helper, ratchet, config, user) {
-    var $doc = $(document);
-
-    // 首页
-    var pageHome = {
-        route: '',
-        classname: 'home',
-        animate: 'fadeIn',
-        view: function () {
-            var $page = this;
-            requirejs(['pageHome'], function (viewData) {
-                $doc.trigger('spa:initpage', [$page, viewData])
-            })
-        }
-    };
-
-    //商品页
-    var pageProduct = {
-        route: 'product',
-        classname: 'product',
-        animate: 'slideInUp',
-        view: function () {
-            var $page = this;
-            requirejs(['pageProduct'], function (viewData) {
-                $doc.trigger('spa:initpage', [$page, viewData])
-            })
-        }
-    };
-
-    //充值卡
-    var pageRecharge = {
-        route: 'recharge',
-        classname: 'recharge',
-        animate: 'pushInLeft',
-        view: function () {
-            var $page = this;
-            requirejs(['pageRecharge'], function (viewData) {
-                $doc.trigger('spa:initpage', [$page, viewData])
-            })
-        }
-    };
-
-    //个人中心
-    var pageMine = {
-        route: 'mine',
-        classname: 'mine',
-        animate: 'pushInLeft',
-        view: function () {
-            var $page = this;
-            requirejs(['pageMine'], function (viewData) {
-                $doc.trigger('spa:initpage', [$page, viewData])
-            })
-        }
-    };
-    //家庭保洁
-    var pageSecondary = {
-        route: 'secondary',
-        classname: 'secondary',
-        animate: 'pushInLeft',
-        view: function () {
-            var $page = this;
-            requirejs(['pageSecondary'], function (viewData) {
-                $doc.trigger('spa:initpage', [$page, viewData])
-            })
-        }
-    };
-    //商品提示信息
-    var pageProductInfo = {
-        route: 'product-info/:type',
-        classname: 'product-info',
-        animate: 'pushInLeft',
-        view: function () {
-            var $page = this;
-            requirejs(['pageProductInfo'], function (viewData) {
-                $doc.trigger('spa:initpage', [$page, viewData])
-            })
-        }
-    };
-
-    //商品介绍页
-    var pageDesc = {
-        route: 'desc',
-        classname: 'desc',
-        animate: 'pushInLeft',
-        view: function () {
-            var $page = this;
-            requirejs(['pageDesc'], function (viewData) {
-                $doc.trigger('spa:initpage', [$page, viewData])
-            })
-        }
-    };
-
-    //订单页
-    var pagePlaceOrder = {
-        route: 'placeOrder',
-        classname: 'place-order',
-        animate: 'pushInLeft',
-        view: function () {
-            var $page = this;
-            requirejs(['pagePlaceOrder'], function (viewData) {
-                $doc.trigger('spa:initpage', [$page, viewData])
-            })
-        }
-    };
-
-    //选择列表页
-    var pagePicker = {
-        route: 'picker',
-        classname: 'picker',
-        animate: 'pushInLeft',
-        view: function () {
-            var $page = this;
-            requirejs(['pagePicker'], function (viewData) {
-                $doc.trigger('spa:initpage', [$page, viewData])
-            })
-        }
-    };
-
-    //支付页面
-    var pagePay = {
-        route: 'pay',
-        classname: 'pay',
-        animate: 'pushInLeft',
-        view: function () {
-            var $page = this;
-            requirejs(['pagePay'], function (viewData) {
-                $doc.trigger('spa:initpage', [$page, viewData])
-            })
-        }
-    };
-
-    // 追加订单支付页面
-    var pageAppendPay = {
-        route: 'append-pay',
-        classname: 'append-pay',
-        animate: 'pushInLeft',
-        view: function () {
-            var $page = this;
-            requirejs(['pageAppendPay'], function (viewData) {
-                $doc.trigger('spa:initpage', [$page, viewData])
-            })
-        }
-    };
-
-    //支付成功
-    var pagePaySuccess = {
-        route: 'paySuccess',
-        classname: 'pay-success',
-        animate: 'pushInLeft',
-        view: function () {
-            var $page = this;
-            requirejs(['pageSuccess'], function (viewData) {
-                $doc.trigger('spa:initpage', [$page, viewData])
-            });
-        }
-    };
-
-    //我的订单页
-    var pageMyOrder = {
-        route: 'myOrder(/:type)',
-        classname: 'my-order',
-        animate: 'pushInLeft',
-        view: function () {
-            var $page = this;
-            requirejs(['pageMyOrder'], function (viewData) {
-                $doc.trigger('spa:initpage', [$page, viewData])
-            });
-        }
-    };
-
-    var pageMyOrderDetail = {
-        route: 'OrderDetail/:id',
-        classname: 'my-order-detail',
-        animate: 'pushInLeft',
-        view: function () {
-            var $page = this;
-            requirejs(['pageMyOrderDetail'], function (viewData) {
-                $doc.trigger('spa:initpage', [$page, viewData])
-            });
-        }
-    };
-
-    //我的优惠券
-    var pageMyCoupon = {
-        route: 'myCoupon',
-        classname: 'my-coupon',
-        animate: 'pushInLeft',
-        view: function () {
-            var $page = this;
-            requirejs(['pageMyCoupon'], function (viewData) {
-                $doc.trigger('spa:initpage', [$page, viewData])
-            });
-        }
-    };
-
-    //用户服务协议
-    var pageAgreement = {
-        route: 'agreement',
-        classname: 'agreement',
-        animate: 'pushInLeft',
-        view: function () {
-            var $page = this;
-            requirejs(['pageAgreement'], function (viewData) {
-                $doc.trigger('spa:initpage', [$page, viewData])
-            });
-        }
-    };
-
-    //地址列表
-    var pageAddressList = {
-        route: 'addressList',
-        classname: 'address-list',
-        animate: 'pushInLeft',
-        view: function () {
-            var $page = this;
-            requirejs(['pageAddressList'], function (viewData) {
-                $doc.trigger('spa:initpage', [$page, viewData])
-            });
-        }
-    };
-
-    //地址添加
-    var pageAddressAdd = {
-        route: 'addressAdd',
-        classname: 'address-add',
-        animate: 'pushInLeft',
-        view: function () {
-            var $page = this;
-            requirejs(['pageAddressAdd'], function (viewData) {
-                $doc.trigger('spa:initpage', [$page, viewData])
-            });
-        }
-    };
-
-    //地址详情
-    var pageAddressDetail = {
-        route: 'addressDetail',
-        classname: 'address-detail',
-        animate: 'pushInLeft',
-        view: function () {
-            var $page = this;
-            requirejs(['pageAddressDetail'], function (viewData) {
-                $doc.trigger('spa:initpage', [$page, viewData])
-            });
-        }
-    };
-
-    //地址定位
-    var pageAddressPoisiton = {
-        route: 'addressPoisiton',
-        classname: 'address-poisition',
-        animate: 'pushInLeft',
-        view: function () {
-            var $page = this;
-            requirejs(['pageAddressPoisiton'], function (viewData) {
-                $doc.trigger('spa:initpage', [$page, viewData])
-            });
-        }
-    };
-
-    //招聘
-    var pageHire = {
-        route: 'hire',
-        classname: 'hire',
-        animate: 'pushInLeft',
-        view: function () {
-            var $page = this;
-            requirejs(['pageHire'], function (viewData) {
-                $doc.trigger('spa:initpage', [$page, viewData])
-            });
-        }
-    };
-
-    // 未上线
-    var pageComing = {
-        route: 'coming',
-        classname: 'coming',
-        animate: 'pushInLeft',
-        view: function () {
-            var $page = this;
-            requirejs(['pageComing'], function (viewData) {
-                $doc.trigger('spa:initpage', [$page, viewData])
-            });
-        }
-    };
-
-    // 活动
-    var pageActivityCat = {
-        route: 'activity-cat',
-        classname: 'activities-cat',
-        animate: 'slideInUp',
-        view: function () {
-            var $page = this;
-            requirejs(['pageActivityCat'], function (viewData) {
-                $doc.trigger('spa:initpage', [$page, viewData])
-            });
-        }
-    };
-
-    // 追加服务
-    var pageAppend = {
-        route: 'append',
-        classname: 'append',
-        animate: 'pushInLeft',
-        view: function () {
-            var $page = this;
-            requirejs(['pageAppend'], function (viewData) {
-                $doc.trigger('spa:initpage', [$page, viewData])
-            });
-        }
-    };
-
-    // 申请退款
-    var pageRefund = {
-        route: 'refund',
-        classname: 'refund',
-        animate: 'pushInLeft',
-        view: function () {
-            var $page = this;
-            requirejs(['pageRefund'], function (viewData) {
-                $doc.trigger('spa:initpage', [$page, viewData])
-            });
-        }
-    };
-
-    // 申请成功
-    var pageRefundSuccess = {
-        route: 'refund-success',
-        classname: 'refund-success',
-        animate: 'pushInLeft',
-        view: function () {
-            var $page = this;
-            requirejs(['pageRefundSuccess'], function (viewData) {
-                $doc.trigger('spa:initpage', [$page, viewData])
-            });
-        }
-    };
-
-    // 订单确认完成
-    var pageOrderDone = {
-        route: 'order-done',
-        classname: 'order-done',
-        animate: 'pushInLeft',
-        view: function () {
-            var $page = this;
-            requirejs(['pageOrderDone'], function (viewData) {
-                $doc.trigger('spa:initpage', [$page, viewData])
-            })
-        }
-    };
-
-    var pageBeautician = {
-        route: 'beautician',
-        classname: 'beautician',
-        animate: 'pushInLeft',
-        view: function () {
-            var $page = this;
-            requirejs(['pageBeautician'], function (viewData) {
-                $doc.trigger('spa:initpage', [$page, viewData]);
-            })
-        }
-    };
-
-    var pageBeauticianDetail = {
-        route: 'beautician-detail',
-        classname: 'beautician-detail',
-        animate: 'slideInUp',
-        view: function () {
-            var $page = this;
-            requirejs(['pageBeauticianDetail'], function (viewData) {
-                $doc.trigger('spa:initpage', [$page, viewData]);
-            })
-        }
-    };
-
-    var pageHelp = {
-        route: 'help',
-        classname: 'help',
-        animate: 'slideInUp',
-        view: function () {
-            var $page = this;
-            requirejs(['pageHelp'], function (viewData) {
-                $doc.trigger('spa:initpage', [$page, viewData]);
-            })
-        }
-    };
-
-    var pageAbout = {
-        route: 'about',
-        classname: 'about',
-        animate: 'slideInUp',
-        view: function () {
-            var $page = this;
-            requirejs(['pageAbout'], function (viewData) {
-                $doc.trigger('spa:initpage', [$page, viewData]);
-            })
-        }
-    };
-
-    $doc.trigger('spa:route', [pageHome, pageRecharge, pageAbout, pageHelp, pageMine,pageSecondary, pageProduct, pageProductInfo, pageDesc, pagePlaceOrder, pagePicker, pagePay, pageAppendPay, pagePaySuccess, pageMyOrder, pageMyOrderDetail, pageMyCoupon, pageAgreement, pageAddressList, pageAddressAdd, pageAddressDetail, pageAddressPoisiton, pageHire, pageComing, pageActivityCat, pageAppend, pageRefund, pageRefundSuccess, pageOrderDone, pageBeautician, pageBeauticianDetail]);
-
-    var panelAlert = {
-        id: 'simpleAlert',
-        classname: 'alert',
-        animate: 'zoomIn',
-        view: function () {
-            var $panel = this;
-            requirejs(['panelAlert'], function (viewData) {
-                $doc.trigger('spa:initpanel', [$panel, viewData]);
-            })
-        }
-    };
-
-    var panelActionSheet = {
-        id: 'actionSheet',
-        classname: 'action-sheet',
-        animate: 'overlayInUp',
-        view: function () {
-            var $panel = this;
-            requirejs(['panelActionSheet'], function (viewData) {
-                $doc.trigger('spa:initpanel', [$panel, viewData]);
-            })
-        }
-    };
-
-    var panelDataPicker = {
-        id: 'dataPicker',
-        classname: 'data-picker',
-        animate: 'overlayInUp',
-        view: function () {
-            var $panel = this;
-            requirejs(['panelDataPicker'], function (viewData) {
-                $doc.trigger('spa:initpanel', [$panel, viewData]);
-            })
-        }
-    };
-
-    var panelProductOption = {
-        id: 'productOption',
-        classname: 'product-option',
-        animate: 'overlayInUp',
-        view: function () {
-            var $panel = this;
-            requirejs(['panelProductOption'], function (viewData) {
-                $doc.trigger('spa:initpanel', [$panel, viewData]);
-            })
-        }
-    };
-
-    var panelPostReview = {
-        id: 'postReview',
-        classname: 'post-review',
-        animate: 'overlayInUp',
-        view: function () {
-            var $panel = this;
-            requirejs(['panelPostReview'], function (viewData) {
-                $doc.trigger('spa:initpanel', [$panel, viewData]);
-            })
-        }
-    };
-
-    var panelActivity = {
-        id: 'activity',
-        classname: 'activity',
-        animate: 'overlayInUp',
-        view: function () {
-            var $panel = this;
-            requirejs(['panelActivity'], function (viewData) {
-                $doc.trigger('spa:initpanel', [$panel, viewData]);
-            })
-        }
-    };
-
-    $doc.trigger('spa:panel', [panelAlert, panelActionSheet, panelDataPicker, panelProductOption, panelPostReview, panelActivity]);
-
-    $(function () {
-        if (config.isWX) {
-            //微信 去掉顶部导航栏
-            var styles = ".content {top: 0;}";
-            helper.includeStyleElement(styles, 'ios7');
-
-            //微信过来的登录后再启动
-            user.getUserInfo(function () {
-                $doc.trigger('spa:boot');
-            });
-
-        } else if (config.isAndroid || config.isIOS) {
-            //注册事件
-            native.delegateBackButton(true);
-
-            //安卓返回按钮
-            $(document).on('tapBackButton', function () {
-                $.spa.getCurPage().trigger('tapBackButton');
-            });
-
-            //ios7特殊样式 全屏幕往下移动20px
-            helper.osProxy({
-                ios: function () {
-                    var styles = ".bar-nav {height: 64px;padding-top: 20px;}\
+	var $doc = $(document);
+
+	// 首页
+	var pageHome = {
+		route: '',
+		classname: 'home',
+		animate: 'fadeIn',
+		view: function () {
+			var $page = this;
+			requirejs(['pageHome'], function (viewData) {
+				$doc.trigger('spa:initpage', [$page, viewData])
+			})
+		}
+	};
+
+	//商品页
+	var pageProduct = {
+		route: 'product',
+		classname: 'product',
+		animate: 'slideInUp',
+		view: function () {
+			var $page = this;
+			requirejs(['pageProduct'], function (viewData) {
+				$doc.trigger('spa:initpage', [$page, viewData])
+			})
+		}
+	};
+
+	//充值卡
+	var pageRecharge = {
+		route: 'recharge',
+		classname: 'recharge',
+		animate: 'pushInLeft',
+		view: function () {
+			var $page = this;
+			requirejs(['pageRecharge'], function (viewData) {
+				$doc.trigger('spa:initpage', [$page, viewData])
+			})
+		}
+	};
+
+	//个人中心
+	var pageMine = {
+		route: 'mine',
+		classname: 'mine',
+		animate: 'pushInLeft',
+		view: function () {
+			var $page = this;
+			requirejs(['pageMine'], function (viewData) {
+				$doc.trigger('spa:initpage', [$page, viewData])
+			})
+		}
+	};
+	//家庭保洁
+	var pageSecondary = {
+		route: 'secondary',
+		classname: 'secondary',
+		animate: 'pushInLeft',
+		view: function () {
+			var $page = this;
+			requirejs(['pageSecondary'], function (viewData) {
+				$doc.trigger('spa:initpage', [$page, viewData])
+			})
+		}
+	};
+	//民宿保洁
+	var pageHomestay = {
+		route: 'homestay',
+		classname: 'homestay',
+		animate: 'pushInLeft',
+		view: function () {
+			var $page = this;
+			requirejs(['pageHomestay'], function (viewData) {
+				$doc.trigger('spa:initpage', [$page, viewData])
+			})
+		}
+	};
+	//商品提示信息
+	var pageProductInfo = {
+		route: 'product-info/:type',
+		classname: 'product-info',
+		animate: 'pushInLeft',
+		view: function () {
+			var $page = this;
+			requirejs(['pageProductInfo'], function (viewData) {
+				$doc.trigger('spa:initpage', [$page, viewData])
+			})
+		}
+	};
+
+	//商品介绍页
+	var pageDesc = {
+		route: 'desc',
+		classname: 'desc',
+		animate: 'pushInLeft',
+		view: function () {
+			var $page = this;
+			requirejs(['pageDesc'], function (viewData) {
+				$doc.trigger('spa:initpage', [$page, viewData])
+			})
+		}
+	};
+
+	//订单页
+	var pagePlaceOrder = {
+		route: 'placeOrder',
+		classname: 'place-order',
+		animate: 'pushInLeft',
+		view: function () {
+			var $page = this;
+			requirejs(['pagePlaceOrder'], function (viewData) {
+				$doc.trigger('spa:initpage', [$page, viewData])
+			})
+		}
+	};
+
+	//选择列表页
+	var pagePicker = {
+		route: 'picker',
+		classname: 'picker',
+		animate: 'pushInLeft',
+		view: function () {
+			var $page = this;
+			requirejs(['pagePicker'], function (viewData) {
+				$doc.trigger('spa:initpage', [$page, viewData])
+			})
+		}
+	};
+
+	//支付页面
+	var pagePay = {
+		route: 'pay',
+		classname: 'pay',
+		animate: 'pushInLeft',
+		view: function () {
+			var $page = this;
+			requirejs(['pagePay'], function (viewData) {
+				$doc.trigger('spa:initpage', [$page, viewData])
+			})
+		}
+	};
+
+	// 追加订单支付页面
+	var pageAppendPay = {
+		route: 'append-pay',
+		classname: 'append-pay',
+		animate: 'pushInLeft',
+		view: function () {
+			var $page = this;
+			requirejs(['pageAppendPay'], function (viewData) {
+				$doc.trigger('spa:initpage', [$page, viewData])
+			})
+		}
+	};
+
+	//支付成功
+	var pagePaySuccess = {
+		route: 'paySuccess',
+		classname: 'pay-success',
+		animate: 'pushInLeft',
+		view: function () {
+			var $page = this;
+			requirejs(['pageSuccess'], function (viewData) {
+				$doc.trigger('spa:initpage', [$page, viewData])
+			});
+		}
+	};
+
+	//我的订单页
+	var pageMyOrder = {
+		route: 'myOrder(/:type)',
+		classname: 'my-order',
+		animate: 'pushInLeft',
+		view: function () {
+			var $page = this;
+			requirejs(['pageMyOrder'], function (viewData) {
+				$doc.trigger('spa:initpage', [$page, viewData])
+			});
+		}
+	};
+
+	var pageMyOrderDetail = {
+		route: 'OrderDetail/:id',
+		classname: 'my-order-detail',
+		animate: 'pushInLeft',
+		view: function () {
+			var $page = this;
+			requirejs(['pageMyOrderDetail'], function (viewData) {
+				$doc.trigger('spa:initpage', [$page, viewData])
+			});
+		}
+	};
+
+	//我的优惠券
+	var pageMyCoupon = {
+		route: 'myCoupon',
+		classname: 'my-coupon',
+		animate: 'pushInLeft',
+		view: function () {
+			var $page = this;
+			requirejs(['pageMyCoupon'], function (viewData) {
+				$doc.trigger('spa:initpage', [$page, viewData])
+			});
+		}
+	};
+
+	//用户服务协议
+	var pageAgreement = {
+		route: 'agreement',
+		classname: 'agreement',
+		animate: 'pushInLeft',
+		view: function () {
+			var $page = this;
+			requirejs(['pageAgreement'], function (viewData) {
+				$doc.trigger('spa:initpage', [$page, viewData])
+			});
+		}
+	};
+
+	//地址列表
+	var pageAddressList = {
+		route: 'addressList',
+		classname: 'address-list',
+		animate: 'pushInLeft',
+		view: function () {
+			var $page = this;
+			requirejs(['pageAddressList'], function (viewData) {
+				$doc.trigger('spa:initpage', [$page, viewData])
+			});
+		}
+	};
+
+	//地址添加
+	var pageAddressAdd = {
+		route: 'addressAdd',
+		classname: 'address-add',
+		animate: 'pushInLeft',
+		view: function () {
+			var $page = this;
+			requirejs(['pageAddressAdd'], function (viewData) {
+				$doc.trigger('spa:initpage', [$page, viewData])
+			});
+		}
+	};
+
+	//地址详情
+	var pageAddressDetail = {
+		route: 'addressDetail',
+		classname: 'address-detail',
+		animate: 'pushInLeft',
+		view: function () {
+			var $page = this;
+			requirejs(['pageAddressDetail'], function (viewData) {
+				$doc.trigger('spa:initpage', [$page, viewData])
+			});
+		}
+	};
+
+	//地址定位
+	var pageAddressPoisiton = {
+		route: 'addressPoisiton',
+		classname: 'address-poisition',
+		animate: 'pushInLeft',
+		view: function () {
+			var $page = this;
+			requirejs(['pageAddressPoisiton'], function (viewData) {
+				$doc.trigger('spa:initpage', [$page, viewData])
+			});
+		}
+	};
+
+	//招聘
+	var pageHire = {
+		route: 'hire',
+		classname: 'hire',
+		animate: 'pushInLeft',
+		view: function () {
+			var $page = this;
+			requirejs(['pageHire'], function (viewData) {
+				$doc.trigger('spa:initpage', [$page, viewData])
+			});
+		}
+	};
+
+	// 未上线
+	var pageComing = {
+		route: 'coming',
+		classname: 'coming',
+		animate: 'pushInLeft',
+		view: function () {
+			var $page = this;
+			requirejs(['pageComing'], function (viewData) {
+				$doc.trigger('spa:initpage', [$page, viewData])
+			});
+		}
+	};
+
+	// 活动
+	var pageActivityCat = {
+		route: 'activity-cat',
+		classname: 'activities-cat',
+		animate: 'slideInUp',
+		view: function () {
+			var $page = this;
+			requirejs(['pageActivityCat'], function (viewData) {
+				$doc.trigger('spa:initpage', [$page, viewData])
+			});
+		}
+	};
+
+	// 追加服务
+	var pageAppend = {
+		route: 'append',
+		classname: 'append',
+		animate: 'pushInLeft',
+		view: function () {
+			var $page = this;
+			requirejs(['pageAppend'], function (viewData) {
+				$doc.trigger('spa:initpage', [$page, viewData])
+			});
+		}
+	};
+
+	// 申请退款
+	var pageRefund = {
+		route: 'refund',
+		classname: 'refund',
+		animate: 'pushInLeft',
+		view: function () {
+			var $page = this;
+			requirejs(['pageRefund'], function (viewData) {
+				$doc.trigger('spa:initpage', [$page, viewData])
+			});
+		}
+	};
+
+	// 申请成功
+	var pageRefundSuccess = {
+		route: 'refund-success',
+		classname: 'refund-success',
+		animate: 'pushInLeft',
+		view: function () {
+			var $page = this;
+			requirejs(['pageRefundSuccess'], function (viewData) {
+				$doc.trigger('spa:initpage', [$page, viewData])
+			});
+		}
+	};
+
+	// 订单确认完成
+	var pageOrderDone = {
+		route: 'order-done',
+		classname: 'order-done',
+		animate: 'pushInLeft',
+		view: function () {
+			var $page = this;
+			requirejs(['pageOrderDone'], function (viewData) {
+				$doc.trigger('spa:initpage', [$page, viewData])
+			})
+		}
+	};
+
+	var pageBeautician = {
+		route: 'beautician',
+		classname: 'beautician',
+		animate: 'pushInLeft',
+		view: function () {
+			var $page = this;
+			requirejs(['pageBeautician'], function (viewData) {
+				$doc.trigger('spa:initpage', [$page, viewData]);
+			})
+		}
+	};
+
+	var pageBeauticianDetail = {
+		route: 'beautician-detail',
+		classname: 'beautician-detail',
+		animate: 'slideInUp',
+		view: function () {
+			var $page = this;
+			requirejs(['pageBeauticianDetail'], function (viewData) {
+				$doc.trigger('spa:initpage', [$page, viewData]);
+			})
+		}
+	};
+
+	var pageHelp = {
+		route: 'help',
+		classname: 'help',
+		animate: 'slideInUp',
+		view: function () {
+			var $page = this;
+			requirejs(['pageHelp'], function (viewData) {
+				$doc.trigger('spa:initpage', [$page, viewData]);
+			})
+		}
+	};
+
+	var pageAbout = {
+		route: 'about',
+		classname: 'about',
+		animate: 'slideInUp',
+		view: function () {
+			var $page = this;
+			requirejs(['pageAbout'], function (viewData) {
+				$doc.trigger('spa:initpage', [$page, viewData]);
+			})
+		}
+	};
+
+	$doc.trigger('spa:route', [pageHome, pageRecharge, pageAbout, pageHelp, pageMine, pageSecondary, pageHomestay, pageProduct, pageProductInfo, pageDesc, pagePlaceOrder, pagePicker, pagePay, pageAppendPay, pagePaySuccess, pageMyOrder, pageMyOrderDetail, pageMyCoupon, pageAgreement, pageAddressList, pageAddressAdd, pageAddressDetail, pageAddressPoisiton, pageHire, pageComing, pageActivityCat, pageAppend, pageRefund, pageRefundSuccess, pageOrderDone, pageBeautician, pageBeauticianDetail]);
+
+	var panelAlert = {
+		id: 'simpleAlert',
+		classname: 'alert',
+		animate: 'zoomIn',
+		view: function () {
+			var $panel = this;
+			requirejs(['panelAlert'], function (viewData) {
+				$doc.trigger('spa:initpanel', [$panel, viewData]);
+			})
+		}
+	};
+
+	var panelActionSheet = {
+		id: 'actionSheet',
+		classname: 'action-sheet',
+		animate: 'overlayInUp',
+		view: function () {
+			var $panel = this;
+			requirejs(['panelActionSheet'], function (viewData) {
+				$doc.trigger('spa:initpanel', [$panel, viewData]);
+			})
+		}
+	};
+
+	var panelDataPicker = {
+		id: 'dataPicker',
+		classname: 'data-picker',
+		animate: 'overlayInUp',
+		view: function () {
+			var $panel = this;
+			requirejs(['panelDataPicker'], function (viewData) {
+				$doc.trigger('spa:initpanel', [$panel, viewData]);
+			})
+		}
+	};
+
+	var panelProductOption = {
+		id: 'productOption',
+		classname: 'product-option',
+		animate: 'overlayInUp',
+		view: function () {
+			var $panel = this;
+			requirejs(['panelProductOption'], function (viewData) {
+				$doc.trigger('spa:initpanel', [$panel, viewData]);
+			})
+		}
+	};
+
+	var panelPostReview = {
+		id: 'postReview',
+		classname: 'post-review',
+		animate: 'overlayInUp',
+		view: function () {
+			var $panel = this;
+			requirejs(['panelPostReview'], function (viewData) {
+				$doc.trigger('spa:initpanel', [$panel, viewData]);
+			})
+		}
+	};
+
+	var panelActivity = {
+		id: 'activity',
+		classname: 'activity',
+		animate: 'overlayInUp',
+		view: function () {
+			var $panel = this;
+			requirejs(['panelActivity'], function (viewData) {
+				$doc.trigger('spa:initpanel', [$panel, viewData]);
+			})
+		}
+	};
+
+	$doc.trigger('spa:panel', [panelAlert, panelActionSheet, panelDataPicker, panelProductOption, panelPostReview, panelActivity]);
+
+	$(function () {
+		if (config.isWX) {
+			//微信 去掉顶部导航栏
+			var styles = ".content {top: 0;}";
+			helper.includeStyleElement(styles, 'ios7');
+
+			//微信过来的登录后再启动
+			user.getUserInfo(function () {
+				$doc.trigger('spa:boot');
+			});
+
+		} else if (config.isAndroid || config.isIOS) {
+			//注册事件
+			native.delegateBackButton(true);
+
+			//安卓返回按钮
+			$(document).on('tapBackButton', function () {
+				$.spa.getCurPage().trigger('tapBackButton');
+			});
+
+			//ios7特殊样式 全屏幕往下移动20px
+			helper.osProxy({
+				ios: function () {
+					var styles = ".bar-nav {height: 64px;padding-top: 20px;}\
           .content {top: 64px;}\
           .bar-nav .left-button {padding-top: 20px;}\
           .bar-nav .right-button {padding-top: 20px;}";
-                    helper.includeStyleElement(styles, 'ios7');
-                }
-            });
-
-            $doc.trigger('spa:boot');
-        } else if (config.isChubao) {
-            var styles = ".content {top: 0;}";
-            helper.includeStyleElement(styles, 'ios7');
-            $doc.trigger('spa:boot');
-        } else {
-            $doc.trigger('spa:boot');
-        }
-    })
+					helper.includeStyleElement(styles, 'ios7');
+				}
+			});
+
+			$doc.trigger('spa:boot');
+		} else if (config.isChubao) {
+			var styles = ".content {top: 0;}";
+			helper.includeStyleElement(styles, 'ios7');
+			$doc.trigger('spa:boot');
+		} else {
+			$doc.trigger('spa:boot');
+		}
+	})
 })

+ 11 - 1
www/webapp/o2o/js/page/home.js

@@ -104,7 +104,7 @@ define(['$', 'template', 'IScroll', 'product', 'user', 'native', 'config', 'addr
 			 }
 			 }, $view);  */
 
-			// 点击……不知如何说明……
+			// 家庭保洁
 			$.newTouch('.btn-secondary', function (event) {
 				event.preventDefault();
 				$doc.trigger('spa:navigate', {
@@ -114,6 +114,16 @@ define(['$', 'template', 'IScroll', 'product', 'user', 'native', 'config', 'addr
 					}
 				});
 			}, $view);
+			// 民宿保洁
+			$.newTouch('.btn-homestay', function (event) {
+				event.preventDefault();
+				$doc.trigger('spa:navigate', {
+					hash: 'homestay',
+					pushData: {
+						needReset: true
+					}
+				});
+			}, $view);
 
 			// 个人中心
 			$.newTouch('.btn-action-coupon', function (event) {

+ 118 - 0
www/webapp/o2o/js/page/homestay.js

@@ -0,0 +1,118 @@
+define(['$', 'template', 'IScroll', 'user', 'product', 'native', 'config', 'address'], function ($, template, IScroll, user, product, native, config, address) {
+
+	function back(event) {
+		event.preventDefault();
+		$(document).trigger('spa:navigate', {
+			hash: '',
+			pushData: {
+				dontNeedReload: true
+			}
+		});
+	}
+
+	/*
+	 * 模块结构:5部分。
+	 * title:题目。
+	 * content:不知道是什么,似乎从没用过。
+	 * 以下可以当作生命周期回调,虽然并不清楚是什么时候回调的……
+	 * init:根据上一个页面传来的pageData初始化本页数据,生成页面,绑定事件。
+	 * beforeopen:接收上一个页面传来的数据、有需要的话重置数据
+	 * afteropen:做一些网络请求。
+	 * beforeclose:
+	 */
+	return {
+		title: '家庭保洁',
+		body: '',
+		init: function (pageData, dtd) {
+			/* this是什么? */
+			var $view = this;
+			var $doc = $(document);
+
+			/* 定义按钮事件。
+			 * 为什么不是$(selector).onclick(function)呢?
+			 */
+
+			// 返回
+			$view.on('swipeRight', function (event) {
+				back.call(this, event);
+			});
+
+			$.newTouch('.back-button', function (event) {
+				back.call(this, event);
+			}, $view);
+
+			$view.on('tapBackButton', function (event) {
+				back.call(this, event);
+			});
+
+
+			/* 点击产品列表的某一项 */
+			$.newTouch('.btn-product', function (event) {
+				event.preventDefault();
+				var type = parseInt($(this).attr('data-product-type'));
+				/*
+				 * 这个写法是SPA路由框架规定的。
+				 * $(selector).trigger(event, params)是jQuery的:触发被选元素上的指定事件
+				 */
+				$doc.trigger('spa:navigate', {
+					hash: 'placeOrder',
+					pushData: {
+						product: product.allList[type - 1],
+						needReset: true
+					}
+				});
+			}, $view);
+			/*首页*/
+			$.newTouch('.btn-action-my-order', function () {
+				event.preventDefault();
+				$doc.trigger('spa:navigate', {
+					hash: '',
+					pushData: {
+						needReset: true
+					}
+				});
+			},$view);
+			/*个人中心*/
+			$.newTouch('.btn-action-coupon', function (event) {
+				event.preventDefault();
+				user.checkLogin(function () {
+					$doc.trigger('spa:navigate', {
+						hash: 'mine',
+						pushData: {
+							needReset: true
+						}
+					});
+				});
+			}, $view);
+			/* 不知道什么意思。*/
+			dtd.resolve();
+		},
+		beforeopen: function (pageData, dtd) {
+			dtd.resolve();
+		},
+		afteropen: function (pageData, dtd) {
+			var $view = this;
+			var $doc = $(document);
+
+			if (pageData.pushData && pageData.pushData.needReset) {
+				/*var tpl = template('secondary/index', {
+				 showNavBar: !config.isWX,
+				 userName: user.name == '' ? '未登录' : user.name,
+				 userBalance: user.balance,
+				 defaultAddress: addressStr
+				 });*/
+				var tpl = template('homestay/index', {showNavBar: !config.isWX});
+				$('.spa-page-body', $view).html(tpl);
+				setTimeout(function () {
+					pageData.scroll = new IScroll('#homestayScroll');
+				}, 500);
+			}
+
+			/* 又是这个。不知道什么玩意…… */
+			dtd.resolve();
+		},
+		beforeclose: function (pageData, dtd) {
+			dtd.resolve();
+		}
+	}
+})

+ 9 - 7
www/webapp/o2o/js/page/secondary.js

@@ -73,15 +73,17 @@ define(['$', 'template', 'IScroll', 'user', 'product', 'native', 'config', 'addr
                 });
             },$view);
             /*个人中心*/
-            $.newTouch('.btn-action-coupon', function () {
+            $.newTouch('.btn-action-coupon', function (event) {
                 event.preventDefault();
-                $doc.trigger('spa:navigate', {
-                    hash: 'mine',
-                    pushData: {
-                        needReset: true
-                    }
+                user.checkLogin(function () {
+                    $doc.trigger('spa:navigate', {
+                        hash: 'mine',
+                        pushData: {
+                            needReset: true
+                        }
+                    });
                 });
-            },$view);
+            }, $view);
             /* 不知道什么意思。*/
             dtd.resolve();
         },

+ 1 - 1
www/webapp/o2o/tpl/home/index.html

@@ -161,7 +161,7 @@
 								     alt="">
 							</div>
 							<div class="width-percent-50 box-align-center">
-								<img src="http://odulvej8l.bkt.clouddn.com/4-3-01.png" alt="">
+								<img class="btn-homestay" src="http://odulvej8l.bkt.clouddn.com/4-3-01.png" alt="">
 							</div>
 							<div class="width-percent-50 box-align-center">
 								<img src="http://odulvej8l.bkt.clouddn.com/4-4-01.png" alt="">

+ 54 - 0
www/webapp/o2o/tpl/homestay/index.html

@@ -0,0 +1,54 @@
+{{ if showNavBar }}
+<header class="bar bar-nav">
+	<a class="left-button back-button">
+		<div class="icon icon-left-nav"></div>
+	</a>
+	<h1 class="title">民宿保洁</h1>
+</header>
+{{ /if }}
+
+<div class="content">
+	<div class="box-container">
+		<div class="box-container box box-vertical">
+			<div id="homestayScroll" class="scroll-container box-flex-1">
+				<div class="scroller">
+					<div class="home-stay-content">
+						<img src="http://odulvej8l.bkt.clouddn.com/%E6%B0%91%E5%AE%BF%E4%BF%9D%E6%B4%81%E8%AF%A6%E6%83%85%E9%A1%B5.jpg"
+						     style="width: 100%;">
+						<div style="padding-bottom:10%;"></div>
+					</div>
+				</div>
+				<div class="prevent-scroll">
+					<div class="box my-action">
+						<!--首页-->
+						<div class="width-percent-33">
+							<div class="title-container-square">
+								<a class="btn-home-action btn-action-my-order">
+									<div class="logo logo-my-order"></div>
+									<div class="name">首页</div>
+								</a>
+							</div>
+						</div>
+						<!--LOGO-->
+						<div class="width-percent-33">
+							<div class="title-container-square">
+								<a class="btn-home-action btn-action-logo" href="weixin://contacts/profile/honghaitzz">
+									<div class="logo logo-my-logo"></div>
+								</a>
+							</div>
+						</div>
+						<!--我的-->
+						<div class="width-percent-33">
+							<div class="title-container-square">
+								<a class="btn-home-action btn-action-coupon">
+									<div class="logo logo-coupon"></div>
+									<div class="name">我的</div>
+								</a>
+							</div>
+						</div>
+					</div>
+				</div>
+			</div>
+		</div>
+	</div>
+</div>

+ 3 - 2
www/webapp/o2o/tpl/package.json

@@ -2,7 +2,7 @@
     "name": "template",
     "version": "1.0.0",
     "dependencies": {
-        "tmodjs": "1.0.3"
+        "tmodjs": "1.0.4"
     },
     "tmodjs-config": {
         "output": "../js/build",
@@ -15,6 +15,7 @@
         "runtime": "template.js",
         "combo": true,
         "minify": true,
-        "cache": true
+        "cache": true,
+        "verbose": true
     }
 }

Beberapa file tidak ditampilkan karena terlalu banyak file yang berubah dalam diff ini