洪海涛 8 years ago
parent
commit
1f64cc479d
56 changed files with 3118 additions and 2504 deletions
  1. 0 2
      www/webapp/o2o/css/common.css
  2. 44 2
      www/webapp/o2o/css/home.css
  3. 1 1
      www/webapp/o2o/css/mine.css
  4. 0 24
      www/webapp/o2o/css/product.css
  5. 0 0
      www/webapp/o2o/dist/css/main.css
  6. 0 0
      www/webapp/o2o/dist/js/api.js
  7. 0 0
      www/webapp/o2o/dist/js/build/template.js
  8. 0 0
      www/webapp/o2o/dist/js/main.js
  9. 0 0
      www/webapp/o2o/dist/js/model/product.js
  10. 0 0
      www/webapp/o2o/dist/js/model/user.js
  11. 1 1
      www/webapp/o2o/dist/js/page/activities/day.js
  12. 0 0
      www/webapp/o2o/dist/js/page/address/addressDetail.js
  13. 1 1
      www/webapp/o2o/dist/js/page/address/addressList.js
  14. 0 0
      www/webapp/o2o/dist/js/page/home.js
  15. 1 1
      www/webapp/o2o/dist/js/page/homeenterprise.js
  16. 1 1
      www/webapp/o2o/dist/js/page/homestay.js
  17. 1 1
      www/webapp/o2o/dist/js/page/longOrder.js
  18. 0 0
      www/webapp/o2o/dist/js/page/mine.js
  19. 0 0
      www/webapp/o2o/dist/js/page/myCoupon.js
  20. 0 0
      www/webapp/o2o/dist/js/page/placeOrder.js
  21. 0 0
      www/webapp/o2o/dist/js/page/product.js
  22. 1 1
      www/webapp/o2o/dist/js/page/rechargee.js
  23. 1 1
      www/webapp/o2o/dist/js/page/secondary.js
  24. 1 7
      www/webapp/o2o/js/api.js
  25. 2 2
      www/webapp/o2o/js/build/template.js
  26. 2 2
      www/webapp/o2o/js/main.js
  27. 1 0
      www/webapp/o2o/js/model/address.js
  28. 1454 725
      www/webapp/o2o/js/model/product.js
  29. 1 1
      www/webapp/o2o/js/model/user.js
  30. 2 2
      www/webapp/o2o/js/page/activities/day.js
  31. 16 32
      www/webapp/o2o/js/page/address/addressDetail.js
  32. 90 86
      www/webapp/o2o/js/page/address/addressList.js
  33. 81 29
      www/webapp/o2o/js/page/home.js
  34. 2 5
      www/webapp/o2o/js/page/homeenterprise.js
  35. 13 17
      www/webapp/o2o/js/page/homestay.js
  36. 2 2
      www/webapp/o2o/js/page/longOrder.js
  37. 3 12
      www/webapp/o2o/js/page/mine.js
  38. 116 146
      www/webapp/o2o/js/page/myCoupon.js
  39. 105 104
      www/webapp/o2o/js/page/picker.js
  40. 956 991
      www/webapp/o2o/js/page/placeOrder.js
  41. 10 33
      www/webapp/o2o/js/page/product.js
  42. 47 53
      www/webapp/o2o/js/page/rechargee.js
  43. 12 6
      www/webapp/o2o/js/page/secondary.js
  44. 2 2
      www/webapp/o2o/tpl/LongOrder/index.html
  45. 2 2
      www/webapp/o2o/tpl/activities/day.html
  46. 4 5
      www/webapp/o2o/tpl/activities/text.html
  47. 1 1
      www/webapp/o2o/tpl/address/list/index.html
  48. 4 1
      www/webapp/o2o/tpl/home/index.html
  49. 10 10
      www/webapp/o2o/tpl/homeenterprise/index.html
  50. 10 10
      www/webapp/o2o/tpl/homestay/index.html
  51. 1 31
      www/webapp/o2o/tpl/myCoupon/index.html
  52. 1 1
      www/webapp/o2o/tpl/myOrder/finish.html
  53. 1 1
      www/webapp/o2o/tpl/myOrder/index.html
  54. 102 102
      www/webapp/o2o/tpl/placeOrder/index.html
  55. 2 3
      www/webapp/o2o/tpl/product/index.html
  56. 10 44
      www/webapp/o2o/tpl/recharge/index.html

+ 0 - 2
www/webapp/o2o/css/common.css

@@ -152,7 +152,6 @@ ul, li {
 
 .page-content {
 	padding: 15px 0;
-	/*background: #efeff4;*/
 }
 
 /* picker */
@@ -226,7 +225,6 @@ ul, li {
 
 .coupon-items {
 	background: #efeff4;
-	margin-bottom: 13%;
 }
 
 .coupon-info {

+ 44 - 2
www/webapp/o2o/css/home.css

@@ -2,6 +2,50 @@ body {
 	/*background: #bdbdbd;*/
 }
 
+/*swiper*/
+/*.swiper-container {
+    width: 100%;
+}
+
+.swiper-slide {
+    text-align: center;
+    font-size: 18px;
+    background: #fff;
+    !* Center slide text vertically *!
+    display: -webkit-box;
+    display: -ms-flexbox;
+    display: -webkit-flex;
+    display: flex;
+    -webkit-box-pack: center;
+    -ms-flex-pack: center;
+    -webkit-justify-content: center;
+    justify-content: center;
+    -webkit-box-align: center;
+    -ms-flex-align: center;
+    -webkit-align-items: center;
+    align-items: center;
+}
+
+.swiper-slide img {
+    width: 100%;
+}
+
+.swiper-pagination-bullet-active {
+    background-color: #516663 !important;
+}
+
+.swiper-pagination{
+    bottom: 5px;
+    width: 100%;
+    height: 20px;
+    background: aqua;
+}
+.swiper-pagination span{
+    padding: 5px;
+    background: #000000;
+    margin:0 5px;
+}*/
+
 .swiper-container {
 	width: 100%;
 	color: #fff;
@@ -11,7 +55,6 @@ body {
 .swiper-slide {
 	width: 100%;
 	height: 100%;
-	display: block;
 }
 
 .swiper-slide .title {
@@ -24,7 +67,6 @@ body {
 
 .swiper-slide img {
 	width: 100%;
-	display: block;
 }
 
 .pagination {

+ 1 - 1
www/webapp/o2o/css/mine.css

@@ -84,7 +84,7 @@ body {
 /*当其最大宽度为320*/
 @media (max-width: 320px) {
     #mineScroll div .user{
-        /*margin-top: -20%;*/
+        margin-top: -20%;
     }
     #mineScroll div .user .user-name {
         top: 8rem;

+ 0 - 24
www/webapp/o2o/css/product.css

@@ -96,7 +96,6 @@
 
 .spa-page-product .img-list img {
   width: 100%;
-	display: block;
 }
 .spa-page-product .img-list-container {
   /*position: absolute;
@@ -484,26 +483,3 @@
   line-height: 38px;
   padding: 0;
 }
-
-
-
-
-
-/*新建样式*/
-.product-new{
-	border-top:1px solid rgba(0, 0, 0, 0.22);
-	background: #ffffff;
-	position: fixed;
-	bottom: 0;
-	width: 100%;
-	line-height: 48px;
-	color: #ffffff;
-	text-align: center;
-}
-.product-new div{
-	background: #2a2400;
-	color: #927603;
-	font-size: 0.9rem;
-	width: 60%;
-	margin: 1% 20%;
-}

File diff suppressed because it is too large
+ 0 - 0
www/webapp/o2o/dist/css/main.css


File diff suppressed because it is too large
+ 0 - 0
www/webapp/o2o/dist/js/api.js


File diff suppressed because it is too large
+ 0 - 0
www/webapp/o2o/dist/js/build/template.js


File diff suppressed because it is too large
+ 0 - 0
www/webapp/o2o/dist/js/main.js


File diff suppressed because it is too large
+ 0 - 0
www/webapp/o2o/dist/js/model/product.js


File diff suppressed because it is too large
+ 0 - 0
www/webapp/o2o/dist/js/model/user.js


+ 1 - 1
www/webapp/o2o/dist/js/page/activities/day.js

@@ -1 +1 @@
-define(["$","template","IScroll","recharge","native","config","user","product"],function(e,t,n,r,i,s,o,u){function a(t){t.preventDefault(),e(document).trigger("spa:navigate",{hash:"secondary",pushData:{dontNeedReload:!0}})}return{title:"双十一活动",body:"",init:function(t,n){var r=this,i=e(document);r.on("swipeRight",function(e){a.call(this,e)}),setInterval(function(){e(".product2-img").fadeToggle()},500),e.newTouch(".back-button",function(e){a.call(this,e)},r),r.on("tapBackButton",function(e){a.call(this,e)}),e.newTouch(".btn-appliances",function(t){t.preventDefault();var n=parseInt(e(this).attr("data-product-type"));i.trigger("spa:navigate",{hash:"product",pushData:{product:u.allList[n-1],needReset:!0,backHash:"activity-day"}})},r),e.newTouch(".btn-action-logo",function(e){e.preventDefault(),i.trigger("spa:navigate",{hash:"im",pushData:{needReset:!0}})},r),e.newTouch(".btn-action-my-order",function(e){e.preventDefault(),i.trigger("spa:navigate",{hash:"",pushData:{needReset:!0}})},r),e.newTouch(".btn-action-coupon",function(e){e.preventDefault(),o.checkLogin(function(){i.trigger("spa:navigate",{hash:"mine",pushData:{needReset:!0}})})},r),n.resolve()},beforeopen:function(e,t){t.resolve()},afteropen:function(i,o){var u=this,a=e(document);i.pushData.dontNeedReload||(a.trigger("spa:openloader"),r.getRechargeList(function(r){a.trigger("spa:closeloader");if(r.success){var o=t("activities/day",{showNavBar:!s.isWX,recharges:r.data});e(".spa-page-body",u).html(o),setTimeout(function(){i.scroll=new n("#activitiesScroll")},500)}})),o.resolve()},beforeclose:function(e,t){t.resolve()}}});
+define(["$","template","IScroll","recharge","native","config","user","product"],function(e,t,n,r,i,s,o,u){function a(t){t.preventDefault(),e(document).trigger("spa:navigate",{hash:"secondary",pushData:{dontNeedReload:!0}})}return{title:"双十一活动",body:"",init:function(t,n){var r=this,i=e(document);r.on("swipeRight",function(e){a.call(this,e)}),setInterval(function(){e(".product2-img").fadeToggle()},500),e.newTouch(".back-button",function(e){a.call(this,e)},r),r.on("tapBackButton",function(e){a.call(this,e)}),e.newTouch(".btn-appliances",function(t){t.preventDefault();var n=parseInt(e(this).attr("data-product-type"));i.trigger("spa:navigate",{hash:"placeOrder",pushData:{product:u.allList[n-1],needReset:!0,backHash:"activity-day"}})},r),e.newTouch(".btn-action-logo",function(e){e.preventDefault(),i.trigger("spa:navigate",{hash:"im",pushData:{needReset:!0}})},r),e.newTouch(".btn-action-my-order",function(e){e.preventDefault(),i.trigger("spa:navigate",{hash:"",pushData:{needReset:!0}})},r),e.newTouch(".btn-action-coupon",function(e){e.preventDefault(),o.checkLogin(function(){i.trigger("spa:navigate",{hash:"mine",pushData:{needReset:!0}})})},r),n.resolve()},beforeopen:function(e,t){t.resolve()},afteropen:function(i,o){var u=this,a=e(document);i.pushData.dontNeedReload||(a.trigger("spa:openloader"),r.getRechargeList(function(r){a.trigger("spa:closeloader");if(r.success){var o=t("activities/day",{showNavBar:!s.isWX,recharges:r.data});e(".spa-page-body",u).html(o),setTimeout(function(){i.scroll=new n("#activitiesScroll")},500)}})),o.resolve()},beforeclose:function(e,t){t.resolve()}}});

File diff suppressed because it is too large
+ 0 - 0
www/webapp/o2o/dist/js/page/address/addressDetail.js


+ 1 - 1
www/webapp/o2o/dist/js/page/address/addressList.js

@@ -1 +1 @@
-define(["$","template","native","config","address","user","api","order"],function(e,t,n,r,i,s,o,u){function a(t,n){t.preventDefault(),e(document).trigger("spa:navigate",{hash:n})}return{title:"壹管家上门服务",body:"",init:function(t,n){var r=this,u=e(document);e.newTouch(".back-button",function(e){a.call(this,e,t.pushData.backHash)},r),r.on("tapBackButton",function(e){a.call(this,e,t.pushData.backHash)}),r.on("swipeRight",function(e){a.call(this,e,t.pushData.backHash)}),e.newTouch(".address-item",function(n){var a=e(this).data("id"),f=e(this).data("index");o.checkAddress({address_id:a,user_id:s.id},function(n){n.success?(r.trigger("tapBackButton"),t.callback&&e.isFunction(t.callback.onSelect)&&t.callback.onSelect(i.list[f],n.data.station)):u.trigger("spa:openpanel",["simpleAlert",{message:n.message}])})},r),e.newTouch(".btn-add",function(e){u.trigger("spa:navigate",{hash:"addressAdd",pushData:{needReload:!0}})},r),e.newTouch(".btn-edit",function(t){var n=e(this).data("id"),r=e(this).data("index");u.trigger("spa:navigate",{hash:"addressDetail",pushData:{addressIndex:r,addressID:n,needReload:!0}})},r),n.resolve()},beforeopen:function(n,s){if(!n.pushData.dontNeedReload){var o=this,u=t("address/list/index",{showNavBar:!r.isWX&&!r.isChubao,addText:"添加地址",addresses:i.list});e(".spa-page-body",o).html(u)}s.resolve()},afteropen:function(e,t){t.resolve()}}});
+define(["$","template","native","config","address","user","api","order"],function(e,t,n,r,i,s,o,u){function a(t,n){t.preventDefault(),e(document).trigger("spa:navigate",{hash:n})}return{title:"壹管家上门服务",body:"",init:function(t,n){var r=this,u=e(document);e.newTouch(".back-button",function(e){a.call(this,e,t.pushData.backHash)},r),r.on("tapBackButton",function(e){a.call(this,e,t.pushData.backHash)}),r.on("swipeRight",function(e){a.call(this,e,t.pushData.backHash)}),e.newTouch(".address-item",function(n){var a=e(this).data("id"),f=e(this).data("index");console.log(a),o.checkAddress({address_id:a,user_id:s.id},function(n){n.success?(r.trigger("tapBackButton"),t.callback&&e.isFunction(t.callback.onSelect)&&t.callback.onSelect(i.list[f],n.data.station)):u.trigger("spa:openpanel",["simpleAlert",{message:n.message}])})},r),e.newTouch(".btn-add",function(e){u.trigger("spa:navigate",{hash:"addressAdd",pushData:{needReload:!0}})},r),e.newTouch(".btn-edit",function(t){var n=e(this).data("id"),r=e(this).data("index");u.trigger("spa:navigate",{hash:"addressDetail",pushData:{addressIndex:r,addressID:n,needReload:!0},callback:{onEdit:function(e){}}})},r),n.resolve()},beforeopen:function(n,s){var o=this,u=t("address/list/index",{showNavBar:!r.isWX&&!r.isChubao,addText:"添加地址",addresses:i.list});e(".spa-page-body",o).html(u),s.resolve()},afteropen:function(e,t){t.resolve()}}});

File diff suppressed because it is too large
+ 0 - 0
www/webapp/o2o/dist/js/page/home.js


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

@@ -1 +1 @@
-define(["$","template","IScroll","recharge","native","config","user"],function(e,t,n,r,i,s,o){function a(t){t.preventDefault(),e(document).trigger("spa:navigate",{hash:u,pushData:{dontNeedReload:!0}})}var u;return{title:"企业服务",body:"",init:function(t,n){var r=this,i=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(".o2o-btn-homestay",function(e){e.preventDefault(),window.location.href="/index.php?r=o2o/advisory/enterprise"},r),e.newTouch(".btn-action-my-order",function(e){e.preventDefault(),i.trigger("spa:navigate",{hash:"",pushData:{needReset:!0}})},r),e.newTouch(".btn-action-logo",function(e){e.preventDefault(),window.location.href="/index.php?r=o2o/advisory/im"},r),e.newTouch(".btn-action-coupon",function(e){e.preventDefault(),o.checkLogin(function(){i.trigger("spa:navigate",{hash:"mine",pushData:{needReset:!0}})})},r),n.resolve()},beforeopen:function(e,t){var n=e.pushData;u=n.backHash?n.backHash:"",t.resolve()},afteropen:function(i,o){var u=this,a=e(document);i.pushData.dontNeedReload||(a.trigger("spa:openloader"),r.getRechargeList(function(r){a.trigger("spa:closeloader");if(r.success){var o=t("homeenterprise/index",{showNavBar:!s.isWX,recharges:r.data});e(".spa-page-body",u).html(o),setTimeout(function(){i.scroll=new n("#homeenterpriseScroll")},500)}})),o.resolve()},beforeclose:function(e,t){t.resolve()}}});
+define(["$","template","IScroll","recharge","native","config","user"],function(e,t,n,r,i,s,o){function u(t){t.preventDefault(),e(document).trigger("spa:navigate",{hash:"",pushData:{dontNeedReload:!0}})}return{title:"企业服务",body:"",init:function(t,n){var r=this,i=e(document);r.on("swipeRight",function(e){u.call(this,e)}),e.newTouch(".back-button",function(e){u.call(this,e)},r),r.on("tapBackButton",function(e){u.call(this,e)}),e.newTouch(".o2o-btn-homestay",function(e){e.preventDefault(),window.location.href="/index.php?r=o2o/advisory/enterprise"},r),e.newTouch(".btn-action-my-order",function(e){e.preventDefault(),i.trigger("spa:navigate",{hash:"",pushData:{needReset:!0}})},r),e.newTouch(".btn-action-logo",function(e){e.preventDefault(),window.location.href="/index.php?r=o2o/advisory/im"},r),e.newTouch(".btn-action-coupon",function(e){e.preventDefault(),o.checkLogin(function(){i.trigger("spa:navigate",{hash:"mine",pushData:{needReset:!0}})})},r),n.resolve()},beforeopen:function(e,t){t.resolve()},afteropen:function(i,o){var u=this,a=e(document);i.pushData.dontNeedReload||(a.trigger("spa:openloader"),r.getRechargeList(function(r){a.trigger("spa:closeloader");if(r.success){var o=t("homeenterprise/index",{showNavBar:!s.isWX,recharges:r.data});e(".spa-page-body",u).html(o),setTimeout(function(){i.scroll=new n("#homeenterpriseScroll")},500)}})),o.resolve()},beforeclose:function(e,t){t.resolve()}}});

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

@@ -1 +1 @@
-define(["$","template","IScroll","recharge","native","config","user"],function(e,t,n,r,i,s,o){function a(t){t.preventDefault(),e(document).trigger("spa:navigate",{hash:u,pushData:{dontNeedReload:!0}})}var u;return{title:"民宿保洁",body:"",init:function(t,n){var r=this,i=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(".o2o-btn-homestay",function(e){e.preventDefault(),window.location.href="/index.php?r=o2o/advisory/SinglesDay"},r),e.newTouch(".btn-action-my-order",function(e){e.preventDefault(),i.trigger("spa:navigate",{hash:"",pushData:{needReset:!0}})},r),e.newTouch(".btn-action-logo",function(e){e.preventDefault(),window.location.href="/index.php?r=o2o/advisory/im"},r),e.newTouch(".btn-action-coupon",function(e){e.preventDefault(),o.checkLogin(function(){i.trigger("spa:navigate",{hash:"mine",pushData:{needReset:!0}})})},r),n.resolve()},beforeopen:function(e,t){var n=e.pushData;u=n.backHash?n.backHash:"",t.resolve()},afteropen:function(i,o){var u=this,a=e(document);i.pushData.dontNeedReload||(a.trigger("spa:openloader"),r.getRechargeList(function(r){a.trigger("spa:closeloader");if(r.success){var o=t("homestay/index",{showNavBar:!s.isWX,recharges:r.data});e(".spa-page-body",u).html(o);var f=e(".btn-add-recharge").attr("data-index");for(var l=f;l<2;l++);setTimeout(function(){i.scroll=new n("#homestayScroll")},500)}})),o.resolve()},beforeclose:function(e,t){t.resolve()}}});
+define(["$","template","IScroll","recharge","native","config","user"],function(e,t,n,r,i,s,o){function u(t){t.preventDefault(),e(document).trigger("spa:navigate",{hash:"",pushData:{dontNeedReload:!0}})}return{title:"民宿保洁",body:"",init:function(t,n){var r=this,i=e(document);r.on("swipeRight",function(e){history.go(-1)}),e.newTouch(".back-button",function(e){history.go(-1)},r),r.on("tapBackButton",function(e){history.go(-1)}),e.newTouch(".o2o-btn-homestay",function(e){e.preventDefault(),window.location.href="/index.php?r=o2o/advisory/SinglesDay"},r),e.newTouch(".btn-action-my-order",function(e){e.preventDefault(),i.trigger("spa:navigate",{hash:"",pushData:{needReset:!0}})},r),e.newTouch(".btn-action-logo",function(e){e.preventDefault(),window.location.href="/index.php?r=o2o/advisory/im"},r),e.newTouch(".btn-action-coupon",function(e){e.preventDefault(),o.checkLogin(function(){i.trigger("spa:navigate",{hash:"mine",pushData:{needReset:!0}})})},r),n.resolve()},beforeopen:function(e,t){t.resolve()},afteropen:function(i,o){var u=this,a=e(document);i.pushData.dontNeedReload||(a.trigger("spa:openloader"),r.getRechargeList(function(r){a.trigger("spa:closeloader");if(r.success){var o=t("homestay/index",{showNavBar:!s.isWX,recharges:r.data});e(".spa-page-body",u).html(o);var f=e(".btn-add-recharge").attr("data-index");for(var l=f;l<2;l++);setTimeout(function(){i.scroll=new n("#homestayScroll")},500)}})),o.resolve()},beforeclose:function(e,t){t.resolve()}}});

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

@@ -1 +1 @@
-define(["$","template","IScroll","recharge","native","config","user","product"],function(e,t,n,r,i,s,o,u){function f(t){t.preventDefault(),e(document).trigger("spa:navigate",{hash:a,pushData:{dontNeedReload:!0}})}var a;return{title:"民宿保洁",body:"",init:function(t,n){var r=this,i=e(document);r.on("swipeRight",function(e){f.call(this,e)}),e.newTouch(".back-button",function(e){f.call(this,e)},r),r.on("tapBackButton",function(e){f.call(this,e)}),e.newTouch(".btn-appliances",function(t){t.preventDefault();var n=parseInt(e(this).attr("data-product-type"));i.trigger("spa:navigate",{hash:"product",pushData:{product:u.allList[n],needReset:!0,backHash:"longOrder"}})},r),e.newTouch(".btn-action-logo",function(e){e.preventDefault(),i.trigger("spa:navigate",{hash:"im",pushData:{needReset:!0}})},r),e.newTouch(".btn-action-my-order",function(e){e.preventDefault(),i.trigger("spa:navigate",{hash:"",pushData:{needReset:!0}})},r),e.newTouch(".btn-action-coupon",function(e){e.preventDefault(),o.checkLogin(function(){i.trigger("spa:navigate",{hash:"mine",pushData:{needReset:!0}})})},r),n.resolve()},beforeopen:function(e,t){var n=e.pushData;a=n.backHash?n.backHash:"",t.resolve()},afteropen:function(i,o){var u=this,a=e(document);i.pushData.dontNeedReload||(a.trigger("spa:openloader"),r.getRechargeList(function(r){a.trigger("spa:closeloader");if(r.success){var o=t("LongOrder/index",{showNavBar:!s.isWX,recharges:r.data});e(".spa-page-body",u).html(o);var f=e(".btn-add-recharge").attr("data-index");for(var l=f;l<2;l++);setTimeout(function(){i.scroll=new n("#longOrderScroll")},500)}})),o.resolve()},beforeclose:function(e,t){t.resolve()}}});
+define(["$","template","IScroll","recharge","native","config","user","product"],function(e,t,n,r,i,s,o,u){function f(t){t.preventDefault(),e(document).trigger("spa:navigate",{hash:a,pushData:{dontNeedReload:!0}})}var a;return{title:"民宿保洁",body:"",init:function(t,n){var r=this,i=e(document);r.on("swipeRight",function(e){f.call(this,e)}),e.newTouch(".back-button",function(e){f.call(this,e)},r),r.on("tapBackButton",function(e){f.call(this,e)}),e.newTouch(".btn-appliances",function(t){t.preventDefault();var n=parseInt(e(this).attr("data-product-type"));i.trigger("spa:navigate",{hash:"placeOrder",pushData:{product:u.allList[n-1],needReset:!0,backHash:"longOrder"}})},r),e.newTouch(".btn-action-logo",function(e){e.preventDefault(),i.trigger("spa:navigate",{hash:"im",pushData:{needReset:!0}})},r),e.newTouch(".btn-action-my-order",function(e){e.preventDefault(),i.trigger("spa:navigate",{hash:"",pushData:{needReset:!0}})},r),e.newTouch(".btn-action-coupon",function(e){e.preventDefault(),o.checkLogin(function(){i.trigger("spa:navigate",{hash:"mine",pushData:{needReset:!0}})})},r),n.resolve()},beforeopen:function(e,t){var n=e.pushData;a=n.backHash?n.backHash:"",t.resolve()},afteropen:function(i,o){var u=this,a=e(document);i.pushData.dontNeedReload||(a.trigger("spa:openloader"),r.getRechargeList(function(r){a.trigger("spa:closeloader");if(r.success){var o=t("LongOrder/index",{showNavBar:!s.isWX,recharges:r.data});e(".spa-page-body",u).html(o);var f=e(".btn-add-recharge").attr("data-index");for(var l=f;l<2;l++);setTimeout(function(){i.scroll=new n("#longOrderScroll")},500)}})),o.resolve()},beforeclose:function(e,t){t.resolve()}}});

File diff suppressed because it is too large
+ 0 - 0
www/webapp/o2o/dist/js/page/mine.js


File diff suppressed because it is too large
+ 0 - 0
www/webapp/o2o/dist/js/page/myCoupon.js


File diff suppressed because it is too large
+ 0 - 0
www/webapp/o2o/dist/js/page/placeOrder.js


File diff suppressed because it is too large
+ 0 - 0
www/webapp/o2o/dist/js/page/product.js


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

@@ -1 +1 @@
-define(["$","template","recharge","native","config","user","product"],function(e,t,n,r,i,s,o){function a(t){t.preventDefault(),e(document).trigger("spa:navigate",{hash:u})}var u;return{title:"充值规则",body:"",init:function(t,r){var i=this,o=e(document);i.on("swipeRight",function(e){a.call(this,e)}),e.newTouch(".back-button",function(e){a.call(this,e)},i),i.on("tapBackButton",function(e){a.call(this,e)}),e.newTouch(".btn-action-logo",function(e){e.preventDefault(),window.location.href="/index.php?r=o2o/advisory/im"},i),e.newTouch(".btn-action-my-order",function(){event.preventDefault(),o.trigger("spa:navigate",{hash:"",pushData:{needReset:!0}})},i),e.newTouch(".btn-action-coupon",function(e){e.preventDefault(),s.checkLogin(function(){o.trigger("spa:navigate",{hash:"mine",pushData:{needReset:!0}})})},i),e.newTouch(".pay-agreement",function(e){e.preventDefault(),o.trigger("spa:navigate",{hash:"activity-text",pushData:{needReload:!0}})},i),e.newTouch(".btn-add-recharge",function(t){t.preventDefault(),o.trigger("spa:openloader");var r=e(this).attr("data-value");n.addRechargeorder({user_id:s.id,recharge_id:e(this).attr("data-id")},function(e){o.trigger("spa:closeloader"),e.success&&(s.orders[1].data.push({id:e.data._id.$id,products:[{product:{name:"充值"+r+"元"}}],final_price:e.data.price}),o.trigger("spa:navigate",{hash:"pay",pushData:{isRecharge:!0,orderID:e.data._id.$id,backHash:"recharge"}}))})},i),r.resolve()},beforeopen:function(r,a){var f=r.pushData;u=f.backHash?f.backHash:"";var l=this,c=e(document);c.trigger("spa:openloader"),o.getListAll(s.id),n.getRechargeList(function(e){c.trigger("spa:closeloader");if(e.success){var n=t("recharge/index",{showNavBar:!i.isWX,recharges:e.data});l.find(".spa-page-body").html(n),r.scroll&&(r.scroll.destroy(),r.scroll=null),setTimeout(function(){r.scroll=new IScroll("#rechargeScroll")},500),a.resolve(),c.trigger("spa:closeloader")}})}}});
+define(["$","template","IScroll","recharge","native","config","user"],function(e,t,n,r,i,s,o){function a(t){t.preventDefault(),e(document).trigger("spa:navigate",{hash:u,pushData:{dontNeedReload:!0}})}var u;return{title:"充值规则",body:"",init:function(t,n){var i=this,s=e(document);i.on("swipeRight",function(e){a.call(this,e)}),e.newTouch(".back-button",function(e){a.call(this,e)},i),i.on("tapBackButton",function(e){a.call(this,e)}),e.newTouch(".pay-agreement",function(e){e.preventDefault(),s.trigger("spa:navigate",{hash:"activity-text",pushData:{needReload:!0}})},i),e.newTouch(".pay-rule",function(e){e.preventDefault(),s.trigger("spa:navigate",{hash:"activity-rule",pushData:{needReload:!0}})},i),e.newTouch(".btn-add-recharge",function(t){t.preventDefault(),s.trigger("spa:openloader");var n=e(this).attr("data-value");r.addRechargeorder({user_id:o.id,recharge_id:e(this).attr("data-id")},function(e){s.trigger("spa:closeloader"),e.success&&(o.orders[1].data.push({id:e.data._id.$id,products:[{product:{name:"充值"+n+"元"}}],final_price:e.data.price}),s.trigger("spa:navigate",{hash:"pay",pushData:{isRecharge:!0,orderID:e.data._id.$id,backHash:"recharge"}}))})},i),n.resolve()},beforeopen:function(e,t){var n=e.pushData;u=n.backHash?n.backHash:"",t.resolve()},afteropen:function(i,o){var u=this,a=e(document);i.pushData.dontNeedReload||(a.trigger("spa:openloader"),r.getRechargeList(function(r){a.trigger("spa:closeloader");if(r.success){var o=t("recharge/index",{showNavBar:!s.isWX,recharges:r.data});e(".spa-page-body",u).html(o);var f=e(".btn-add-recharge").attr("data-index");for(var l=f;l<2;l++);setTimeout(function(){i.scroll=new n("#rechargeScroll")},500)}})),o.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 f(t){t.preventDefault(),e(document).trigger("spa:navigate",{hash:a,pushData:{dontNeedReload:!0}})}var a;return{title:"家庭保洁",body:"",init:function(t,n){var s=this,o=e(document);s.on("swipeRight",function(e){f.call(this,e)}),e.newTouch(".back-button",function(e){f.call(this,e)},s),s.on("tapBackButton",function(e){f.call(this,e)}),e.newTouch(".Long-term-set",function(e){e.preventDefault(),o.trigger("spa:navigate",{hash:"activity-day",pushData:{needReset:!0,backHash:"secondary"}})},s),e.newTouch(".btn-product",function(t){t.preventDefault();var n=parseInt(e(this).attr("data-product-type"));o.trigger("spa:navigate",{hash:"product",pushData:{product:i.allList[n-1],needReset:!0,backHash:"secondary"}})},s),e.newTouch(".btn-action-logo",function(e){e.preventDefault(),window.location.href="/index.php?r=o2o/advisory/im"},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){var n=e.pushData;a=n.backHash?n.backHash:"",t.resolve()},afteropen:function(r,i){var s=this,u=e(document);if(!r.pushData.dontNeedReload){var a=t("secondary/index",{showNavBar:!o.isWX});e(".spa-page-body",s).html(a),setTimeout(function(){r.scroll=new n("#secondaryScroll")},500),setTimeout(function(){e("#list0").height(e(".btn-product").height()*4+e(".prevent-scroll").height())},200)}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 f(t){t.preventDefault(),e(document).trigger("spa:navigate",{hash:a,pushData:{dontNeedReload:!0}})}var a;return{title:"家庭保洁",body:"",init:function(t,n){var s=this,o=e(document);s.on("swipeRight",function(e){f.call(this,e)}),e.newTouch(".back-button",function(e){f.call(this,e)},s),s.on("tapBackButton",function(e){f.call(this,e)}),e.newTouch(".Long-term-set",function(e){e.preventDefault(),o.trigger("spa:navigate",{hash:"activity-day",pushData:{needReset:!0,backHash:"secondary"}})},s),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,backHash:"secondary"}})},s),e.newTouch(".btn-action-logo",function(e){e.preventDefault(),window.location.href="/index.php?r=o2o/advisory/im"},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){var n=e.pushData;a=n.backHash?n.backHash:"",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),setTimeout(function(){e("#list0").height(e(".btn-product").height()*4+e(".prevent-scroll").height())},200)}i.resolve()},beforeclose:function(e,t){t.resolve()}}});

+ 1 - 7
www/webapp/o2o/js/api.js

@@ -65,7 +65,7 @@ define(['config', 'base'], function (config, base) {
     };
 
     //获取商品列表
-    API.prototype.getProductList = function(data,callback) {
+    API.prototype.getProductList = function(data) {
         var that = this;
         this.isLoading = true;
         $.signAjax({
@@ -74,15 +74,9 @@ define(['config', 'base'], function (config, base) {
             dataType: 'JSON',
             success: function(res) {
                 that.isLoading = false;
-	            if (callback) {
-		            callback(res);
-	            }
             },
             error: function(res) {
                 that.isLoading = false;
-	            if (callback) {
-		            callback(apiErrorResult);
-	            }
             }
         });
     };

File diff suppressed because it is too large
+ 2 - 2
www/webapp/o2o/js/build/template.js


+ 2 - 2
www/webapp/o2o/js/main.js

@@ -167,7 +167,7 @@ require(['$', 'spa', 'native', 'helper', 'ratchet', 'config', 'user'], function
 	var pageProduct = {
 		route: 'product',
 		classname: 'product',
-		animate: 'pushInLeft',
+		animate: 'slideInUp',
 		view: function () {
 			var $page = this;
 			requirejs(['pageProduct'], function (viewData) {
@@ -242,7 +242,7 @@ require(['$', 'spa', 'native', 'helper', 'ratchet', 'config', 'user'], function
 	var pagePlaceOrder = {
 		route: 'placeOrder',
 		classname: 'place-order',
-		animate: 'slideInUp',
+		animate: 'pushInLeft',
 		view: function () {
 			var $page = this;
 			requirejs(['pagePlaceOrder'], function (viewData) {

+ 1 - 0
www/webapp/o2o/js/model/address.js

@@ -52,6 +52,7 @@ define(['base', '$', 'native', 'api', 'user', 'config'], function (base, $, nati
                 that.list = res.data;
                 that.defaultAddress = that.list[0];
             }
+
             if (typeof(callback) == 'function') {
                 callback(res);
             }

+ 1454 - 725
www/webapp/o2o/js/model/product.js

@@ -2,730 +2,1459 @@
  * 商品模型
  */
 define(['base', '$', 'api'], function (base, $, api) {
-	var Product = function () {
-		if (typeof Product.instance === 'object') {
-			return Product.instance;
-		}
-		Product.instance = this;
-		this.storagePrefix = 'product_';//存储前缀
-		/*图片压缩*/
-		this.allList = [
-			{
-				id: "57e0dffc9f5160dd048b4568",
-				name: "日常清洁",
-				// imgSrc: 'http://odulvej8l.bkt.clouddn.com/1128%E6%97%A5%E5%B8%B8%E6%B8%85%E6%B4%81%E9%A6%96%E5%9B%BE-%E6%94%B9.jpg',
-				desc: [{"type":1,"content":"http://odulvej8l.bkt.clouddn.com/1128-%E6%97%A5%E5%B8%B8%E6%B8%85%E6%B4%81_01.jpg"},{"type":1,"content":"http://odulvej8l.bkt.clouddn.com/1128-%E6%97%A5%E5%B8%B8%E6%B8%85%E6%B4%81_02.jpg"},{"type":1,"content":"http://odulvej8l.bkt.clouddn.com/1128-%E6%97%A5%E5%B8%B8%E6%B8%85%E6%B4%81_03.jpg"},{"type":1,"content":"http://odulvej8l.bkt.clouddn.com/1128-%E6%97%A5%E5%B8%B8%E6%B8%85%E6%B4%81_04.jpg"},{"type":1,"content":"http://odulvej8l.bkt.clouddn.com/1128-%E6%97%A5%E5%B8%B8%E6%B8%85%E6%B4%81_05.jpg"},{"type":1,"content":"http://odulvej8l.bkt.clouddn.com/1128-%E6%97%A5%E5%B8%B8%E6%B8%85%E6%B4%81_06.jpg"}],
-				status: 1,
-				is_extra: 0,
-				order: 0,
-				type: "1",
-				type_str: "日常清洁",
-				extra: [
-					{
-						type: "一室一卫",
-						price: "98"
-					},
-					{
-						type: "两室一卫",
-						price: "118"
-					},
-					{
-						type: "两室两卫",
-						price: "138"
-					},
-					{
-						type: "三室两卫",
-						price: "158"
-					},
-					{
-						type: "四室三卫",
-						price: "228"
-					},
-					{
-						type: "200-250平米",
-						price: "298"
-					},
-					{
-						type: "200-300平米",
-						price: "398"
-					},
-					{
-						type: "三层别墅",
-						price: "498"
-					},
-					{
-						type: "四层别墅",
-						price: "598"
-					}
-				],
-				action_user: "",
-				action_time: "",
-				action_log: ""
-			},
-			{
-				id: "57e0e0189f5160dc048b4568",
-				name: "深度清洁",
-				// imgSrc: 'http://odulvej8l.bkt.clouddn.com/1128%E6%B7%B1%E5%BA%A6%E6%B8%85%E6%B4%81%E9%A6%96%E5%9B%BE.jpg',
-				desc: [{"type":1,"content":"http://odulvej8l.bkt.clouddn.com/%E6%B7%B1%E5%BA%A6%E8%AF%A6%E6%83%85%E9%A1%B51128_01.jpg"},{"type":1,"content":"http://odulvej8l.bkt.clouddn.com/%E6%B7%B1%E5%BA%A6%E8%AF%A6%E6%83%85%E9%A1%B51128_02.jpg"},{"type":1,"content":"http://odulvej8l.bkt.clouddn.com/%E6%B7%B1%E5%BA%A6%E8%AF%A6%E6%83%85%E9%A1%B51128_03.jpg"},{"type":1,"content":"http://odulvej8l.bkt.clouddn.com/%E6%B7%B1%E5%BA%A6%E8%AF%A6%E6%83%85%E9%A1%B51128_04.jpg"}],
-				status: 1,
-				is_extra: 0,
-				order: 0,
-				type: "2",
-				type_str: "深度清洁",
-				extra: [
-					{
-						type: "卧室清洁",
-						price: "188"
-					},
-					{
-						type: "客厅清洁",
-						price: "288"
-					},
-					{
-						type: "厨房清洁",
-						price: "388"
-					},
-					{
-						type: "卫生间清洁",
-						price: "188"
-					}
-				],
-				action_user: "",
-				action_time: "",
-				action_log: ""
-			},
-			{
-				id: "57e0e0369f5160b1048b456b",
-				name: "除螨杀菌",
-				// imgSrc: 'http://odulvej8l.bkt.clouddn.com/1128%E9%99%A4%E8%9E%A8%E6%9D%80%E8%8F%8C%E9%A6%96%E5%9B%BE.jpg',
-				desc: [{ "type": 1,  "content": "http://odulvej8l.bkt.clouddn.com/1128%E9%99%A4%E8%9E%A8%E6%9D%80%E8%8F%8C%E9%A6%96%E5%9B%BE.jpg"},{ "type": 1,  "content": "http://odulvej8l.bkt.clouddn.com/%E9%99%A4%E8%9E%A8%E6%9D%80%E8%8F%8C_01.jpg"},{ "type": 1,  "content": "http://odulvej8l.bkt.clouddn.com/%E9%99%A4%E8%9E%A8%E6%9D%80%E8%8F%8C_02.jpg"},{ "type": 1,  "content": "http://odulvej8l.bkt.clouddn.com/%E9%99%A4%E8%9E%A8%E6%9D%80%E8%8F%8C_03.jpg"},{ "type": 1,  "content": "http://odulvej8l.bkt.clouddn.com/%E9%99%A4%E8%9E%A8%E6%9D%80%E8%8F%8C_04.jpg"},{ "type": 1,  "content": "http://odulvej8l.bkt.clouddn.com/%E9%99%A4%E8%9E%A8%E6%9D%80%E8%8F%8C_05.jpg"},{ "type": 1,  "content": "http://odulvej8l.bkt.clouddn.com/%E9%99%A4%E8%9E%A8%E6%9D%80%E8%8F%8C_06.jpg"},{ "type": 1,  "content": "http://odulvej8l.bkt.clouddn.com/%E9%99%A4%E8%9E%A8%E6%9D%80%E8%8F%8C_07.jpg"},{ "type": 1,  "content": "http://odulvej8l.bkt.clouddn.com/%E9%99%A4%E8%9E%A8%E6%9D%80%E8%8F%8C_08.jpg"},{ "type": 1,  "content": "http://odulvej8l.bkt.clouddn.com/%E9%99%A4%E8%9E%A8%E6%9D%80%E8%8F%8C_09.jpg"},{ "type": 1,  "content": "http://odulvej8l.bkt.clouddn.com/%E9%99%A4%E8%9E%A8%E6%9D%80%E8%8F%8C_10.jpg"}],
-				status: 1,
-				is_extra: 0,
-				order: 0,
-				type: "3",
-				type_str: "除螨杀菌",
-				extra: [
-					{
-						type: "儿童床",
-						price: "80"
-					},
-					{
-						type: "布艺窗帘",
-						price: "100"
-					},
-					{
-						type: "整床除螨",
-						price: "180"
-					},
-					{
-						type: "整套布艺沙发",
-						price: "160"
-					}
-				],
-				action_user: "",
-				action_time: "",
-				action_log: ""
-			},
-			{
-				id: "57e0e04e9f5160af048b456b",
-				name: "家电清洗",
-				// imgSrc: 'http://odulvej8l.bkt.clouddn.com/4%E5%AE%B6%E7%94%B5%E6%B8%85%E6%B4%97%E9%A6%96%E5%9B%BE.jpg',
-				desc: [{ "type": 1,  "content": "http://odulvej8l.bkt.clouddn.com/4%E5%AE%B6%E7%94%B5%E6%B8%85%E6%B4%97%E9%A6%96%E5%9B%BE.jpg"},{ "type": 1,  "content": "http://odulvej8l.bkt.clouddn.com/%E5%AE%B6%E7%94%B5%E6%B8%85%E6%B4%97_1%28720+1165%29.jpg"},{ "type": 1,  "content": "http://odulvej8l.bkt.clouddn.com/%E5%AE%B6%E7%94%B5%E6%B8%85%E6%B4%97_2%28720+844%29.jpg"},{ "type": 1,  "content": "http://odulvej8l.bkt.clouddn.com/%E5%AE%B6%E7%94%B5%E6%B8%85%E6%B4%97_3%28720+1129%29.jpg"},{ "type": 1,  "content": "http://odulvej8l.bkt.clouddn.com/%E5%AE%B6%E7%94%B5%E6%B8%85%E6%B4%97_4%28720+1204%29.jpg"},{ "type": 1,  "content": "http://odulvej8l.bkt.clouddn.com/%E5%AE%B6%E7%94%B5%E6%B8%85%E6%B4%97_5%28720+1246%29.jpg"},{ "type": 1,  "content": "http://odulvej8l.bkt.clouddn.com/%E5%AE%B6%E7%94%B5%E6%B8%85%E6%B4%97_6%28720+1257%29.jpg"},{ "type": 1,  "content": "http://odulvej8l.bkt.clouddn.com/%E5%AE%B6%E7%94%B5%E6%B8%85%E6%B4%97_7%28720+674%29.jpg"},{ "type": 1,  "content": "http://odulvej8l.bkt.clouddn.com/%E5%AE%B6%E7%94%B5%E6%B8%85%E6%B4%97_8%28720+786%29.jpg"}],
-				status: 1,
-				is_extra: 0,
-				order: 0,
-				type: "4",
-				type_str: "家电清洗",
-				extra: [
-					{
-						type: "微波炉",
-						price: "60"
-					},
-					{
-						type: "洗衣机",
-						price: "100"
-					},
-					{
-						type: "油烟机",
-						price: "120"
-					},
-					{
-						type: "挂式空调",
-						price: "100"
-					},
-					{
-						type: "立式空调",
-						price: "130"
-					},
-					{
-						type: "冰箱-单开门",
-						price: "100"
-					},
-					{
-						type: "冰箱-双开门",
-						price: "130"
-					}
-				],
-				action_user: "",
-				action_time: "",
-				action_log: ""
-			},
-			{
-				id: "57e0e0879f5160b8048b4571",
-				price: "8",
-				name: "新居开荒",
-				// imgSrc: 'http://odulvej8l.bkt.clouddn.com/1128%E6%96%B0%E5%B1%85%E5%BC%80%E8%8D%92%E9%A6%96%E5%9B%BE.jpg',
-				desc: [{ "type": 1,  "content": "http://odulvej8l.bkt.clouddn.com/1128%E6%96%B0%E5%B1%85%E5%BC%80%E8%8D%92%E9%A6%96%E5%9B%BE.jpg"},{ "type": 1,  "content": "http://odulvej8l.bkt.clouddn.com/%E6%96%B0%E5%B1%85%E5%BC%80%E8%8D%92_1_01%28720x1209%29.jpg"},{ "type": 1,  "content": "http://odulvej8l.bkt.clouddn.com/%E6%96%B0%E5%B1%85%E5%BC%80%E8%8D%92_1_02%28720x1041%29.jpg"},{ "type": 1,  "content": "http://odulvej8l.bkt.clouddn.com/%E6%96%B0%E5%B1%85%E5%BC%80%E8%8D%92_1_03%28720x1264%29.jpg"},{ "type": 1,  "content": "http://odulvej8l.bkt.clouddn.com/%E6%96%B0%E5%B1%85%E5%BC%80%E8%8D%92_1_04%28720x1295%29.jpg"},{ "type": 1,  "content": "http://odulvej8l.bkt.clouddn.com/%E6%96%B0%E5%B1%85%E5%BC%80%E8%8D%92_1_05%28720x685%29.jpg"},{ "type": 1,  "content": "http://odulvej8l.bkt.clouddn.com/%E6%96%B0%E5%B1%85%E5%BC%80%E8%8D%92_1_06%28720x717%29.jpg"},{ "type": 1,  "content": "http://odulvej8l.bkt.clouddn.com/%E6%96%B0%E5%B1%85%E5%BC%80%E8%8D%92_1_07%28720x685%29.jpg"},{ "type": 1,  "content": "http://odulvej8l.bkt.clouddn.com/%E6%96%B0%E5%B1%85%E5%BC%80%E8%8D%92_1_08%28720x1083%29.jpg"},{ "type": 1,  "content": "http://odulvej8l.bkt.clouddn.com/%E6%96%B0%E5%B1%85%E5%BC%80%E8%8D%92_1_09%28720x915%29.jpg"},{ "type": 1,  "content": "http://odulvej8l.bkt.clouddn.com/%E6%96%B0%E5%B1%85%E5%BC%80%E8%8D%92_1_10%28720x785%29.jpg"},{ "type": 1,  "content": "http://odulvej8l.bkt.clouddn.com/%E6%96%B0%E5%B1%85%E5%BC%80%E8%8D%92_1_11%28720x958%29.jpg"}],
-				status: 1,
-				is_extra: 0,
-				order: 0,
-				type: "6",
-				type_str: "新居开荒",
-				action_user: "",
-				action_time: "",
-				action_log: "",
-				/*pics: [
-					{
-						url: "http://odulvej8l.bkt.clouddn.com/1128%E6%96%B0%E5%B1%85%E5%BC%80%E8%8D%92%E9%A6%96%E5%9B%BE.jpg",
-						width: 750,
-						height: 585
-					},
-					{
-						url: "http://odulvej8l.bkt.clouddn.com/%E6%96%B0%E5%B1%85%E5%BC%80%E8%8D%92_1_01%28720x1209%29.jpg",
-						width: 720,
-						height: 1209
-					},
-					{
-						url: "http://odulvej8l.bkt.clouddn.com/%E6%96%B0%E5%B1%85%E5%BC%80%E8%8D%92_1_02%28720x1041%29.jpg",
-						width: 720,
-						height: 1041
-					},
-					{
-						url: "http://odulvej8l.bkt.clouddn.com/%E6%96%B0%E5%B1%85%E5%BC%80%E8%8D%92_1_03%28720x1264%29.jpg",
-						width: 720,
-						height: 1264
-					},
-					{
-						url: "http://odulvej8l.bkt.clouddn.com/%E6%96%B0%E5%B1%85%E5%BC%80%E8%8D%92_1_04%28720x1295%29.jpg",
-						width: 720,
-						height: 1295
-					},
-					{
-						url: "http://odulvej8l.bkt.clouddn.com/%E6%96%B0%E5%B1%85%E5%BC%80%E8%8D%92_1_05%28720x685%29.jpg",
-						width: 720,
-						height: 685
-					},
-					{
-						url: "http://odulvej8l.bkt.clouddn.com/%E6%96%B0%E5%B1%85%E5%BC%80%E8%8D%92_1_06%28720x717%29.jpg",
-						width: 720,
-						height: 717
-					},
-					{
-						url: "http://odulvej8l.bkt.clouddn.com/%E6%96%B0%E5%B1%85%E5%BC%80%E8%8D%92_1_07%28720x685%29.jpg",
-						width: 720,
-						height: 685
-					},
-					{
-						url: "http://odulvej8l.bkt.clouddn.com/%E6%96%B0%E5%B1%85%E5%BC%80%E8%8D%92_1_08%28720x1083%29.jpg",
-						width: 720,
-						height: 1083
-					},
-					{
-						url: "http://odulvej8l.bkt.clouddn.com/%E6%96%B0%E5%B1%85%E5%BC%80%E8%8D%92_1_09%28720x915%29.jpg",
-						width: 720,
-						height: 915
-					},
-					{
-						url: "http://odulvej8l.bkt.clouddn.com/%E6%96%B0%E5%B1%85%E5%BC%80%E8%8D%92_1_10%28720x785%29.jpg",
-						width: 720,
-						height: 785
-					},
-					{
-						url: "http://odulvej8l.bkt.clouddn.com/%E6%96%B0%E5%B1%85%E5%BC%80%E8%8D%92_1_11%28720x958%29.jpg",
-						width: 720,
-						height: 958
-					}
-				]*/
-			},
-			{
-				id: "57fb4a909f5160b2048b4a0e",
-				price: "10",
-				name: "擦玻璃",
-				// imgSrc: 'http://odulvej8l.bkt.clouddn.com/1128%E6%93%A6%E7%8E%BB%E7%92%83%E9%A6%96%E5%9B%BE%E6%94%B9.jpg',
-				desc: [{ "type": 1,  "content": "http://odulvej8l.bkt.clouddn.com/1128-%E7%8E%BB%E7%92%83%E6%B8%85%E6%B4%81_01.jpg"},{ "type": 1,  "content": "http://odulvej8l.bkt.clouddn.com/1128-%E7%8E%BB%E7%92%83%E6%B8%85%E6%B4%81_02.jpg"},{ "type": 1,  "content": "http://odulvej8l.bkt.clouddn.com/1128-%E7%8E%BB%E7%92%83%E6%B8%85%E6%B4%81_03.jpg"},{ "type": 1,  "content": "http://odulvej8l.bkt.clouddn.com/1128-%E7%8E%BB%E7%92%83%E6%B8%85%E6%B4%81_04.jpg"}],
-				status: 1,
-				is_extra: 0,
-				order: 0,
-				type: "10",
-				type_str: "擦玻璃",
-				action_user: "",
-				action_time: "",
-				action_log: "",
-				/*pics: [
-					{
-						url: "http://odulvej8l.bkt.clouddn.com/1128-%E7%8E%BB%E7%92%83%E6%B8%85%E6%B4%81_01%28720+608%29.jpg",
-						width: 720,
-						height: 608
-					},
-					{
-						url: "http://odulvej8l.bkt.clouddn.com/1128-%E7%8E%BB%E7%92%83%E6%B8%85%E6%B4%81_02%28720+802%29.jpg",
-						width: 720,
-						height: 802
-					},
-					{
-						url: "http://odulvej8l.bkt.clouddn.com/1128-%E7%8E%BB%E7%92%83%E6%B8%85%E6%B4%81_04%28720+516%29.jpg",
-						width: 720,
-						height: 516
-					},
-					{
-						url: "http://odulvej8l.bkt.clouddn.com/1128-%E7%8E%BB%E7%92%83%E6%B8%85%E6%B4%81_03%28720+666%29.jpg",
-						width: 720,
-						height: 666
-					},
-					{
-						url: "http://odulvej8l.bkt.clouddn.com/%E6%93%A6%E7%8E%BB%E7%92%83%E8%AF%A6%E6%83%85%E9%A1%B5_06%28720+820%29.jpg",
-						width: 720,
-						height: 802
-					},
-					{
-						url: "http://odulvej8l.bkt.clouddn.com/%E6%93%A6%E7%8E%BB%E7%92%83%E8%AF%A6%E6%83%85%E9%A1%B5_07%28720+1071%29.jpg",
-						width: 720,
-						height: 1071
-					},
-					{
-						url: "http://odulvej8l.bkt.clouddn.com/1128-%E7%8E%BB%E7%92%83%E6%B8%85%E6%B4%81_05%28720+846%29.jpg",
-						width: 720,
-						height: 846
-					}
-				]*/
-			},
-			{
-				id: "57e3a5a49f5160c9048b457c",
-				price: "",
-				name: "母婴房清洁",
-				// imgSrc: 'http://odulvej8l.bkt.clouddn.com/1128%E6%AF%8D%E5%A9%B4%E6%88%BF%E6%B8%85%E6%B4%81%E9%A6%96%E5%9B%BE.jpg',
-				desc: [{"type":1,"content":"http://odulvej8l.bkt.clouddn.com/1128%E6%AF%8D%E5%A9%B4%E6%88%BF%E6%B8%85%E6%B4%81%E9%A6%96%E5%9B%BE.jpg"},{"type":1,"content":"http://odulvej8l.bkt.clouddn.com/%E6%AF%8D%E5%A9%B4%E6%88%BF_1%28730x522%29.jpg"},{"type":1,"content":"http://odulvej8l.bkt.clouddn.com/%E6%AF%8D%E5%A9%B4%E6%88%BF_2%28730x791%29.jpg"},{"type":1,"content":"http://odulvej8l.bkt.clouddn.com/%E6%AF%8D%E5%A9%B4%E6%88%BF_3%28730x823%29.jpg"},{"type":1,"content":"http://odulvej8l.bkt.clouddn.com/%E6%AF%8D%E5%A9%B4%E6%88%BF_4%28730x808%29.jpg"},{"type":1,"content":"http://odulvej8l.bkt.clouddn.com/%E6%AF%8D%E5%A9%B4%E6%88%BF_5%28730x1196%29.jpg"},{"type":1,"content":"http://odulvej8l.bkt.clouddn.com/%E6%AF%8D%E5%A9%B4%E6%88%BF_6%28730x1111%29.jpg"}],
-				status: 1,
-				is_extra: 0,
-				order: 200,
-				type: "8",
-				type_str: "母婴房清洁",
-				extra: [
-					{
-						type: "整间日常清洁",
-						price: "388"
-					},
-					{
-						type: "整间深度清洁",
-						price: "888"
-					}
-				],
-				action_user: "",
-				action_time: "",
-				action_log: "",
-				/*pics: [
-					{
-						url: "http://odulvej8l.bkt.clouddn.com/1128%E6%AF%8D%E5%A9%B4%E6%88%BF%E6%B8%85%E6%B4%81%E9%A6%96%E5%9B%BE.jpg",
-						width: 750,
-						height: 585
-					},
-					{
-						url: "http://odulvej8l.bkt.clouddn.com/%E6%AF%8D%E5%A9%B4%E6%88%BF_1%28730x522%29.jpg",
-						width: 730,
-						height: 522
-					},
-					{
-						url: "http://odulvej8l.bkt.clouddn.com/%E6%AF%8D%E5%A9%B4%E6%88%BF_2%28730x791%29.jpg",
-						width: 730,
-						height: 791
-					},
-					{
-						url: "http://odulvej8l.bkt.clouddn.com/%E6%AF%8D%E5%A9%B4%E6%88%BF_3%28730x823%29.jpg",
-						width: 730,
-						height: 823
-					},
-					{
-						url: "http://odulvej8l.bkt.clouddn.com/%E6%AF%8D%E5%A9%B4%E6%88%BF_4%28730x808%29.jpg",
-						width: 730,
-						height: 808
-					},
-					{
-						url: "http://odulvej8l.bkt.clouddn.com/%E6%AF%8D%E5%A9%B4%E6%88%BF_5%28730x1196%29.jpg",
-						width: 730,
-						height: 1196
-					},
-					{
-						url: "http://odulvej8l.bkt.clouddn.com/%E6%AF%8D%E5%A9%B4%E6%88%BF_6%28730x1111%29.jpg",
-						width: 730,
-						height: 1111
-					}
-				]*/
-			},
-			{
-				id: "58085f4b9f5160a9048b490e",
-				name: "租房大扫除",
-				// imgSrc: 'http://odulvej8l.bkt.clouddn.com/1128%E7%A7%9F%E6%88%BF%E5%A4%A7%E6%89%AB%E9%99%A4%E9%A6%96%E5%9B%BE%E6%94%B9.jpg',
-				desc: [{ "type": 1,  "content": "http://odulvej8l.bkt.clouddn.com/1128%E7%A7%9F%E6%88%BF%E5%A4%A7%E6%89%AB%E9%99%A4%E9%A6%96%E5%9B%BE%E6%94%B9.jpg"},{ "type": 1,  "content": "http://odulvej8l.bkt.clouddn.com/%E7%A7%9F%E6%88%BF%E5%A4%A7%E6%89%AB%E9%99%A4%E8%AF%A6%E6%83%85%E9%A1%B5_02%28720x404%29.jpg"},{ "type": 1,  "content": "http://odulvej8l.bkt.clouddn.com/%E7%A7%9F%E6%88%BF%E5%A4%A7%E6%89%AB%E9%99%A4%E8%AF%A6%E6%83%85%E9%A1%B5_03%28720x783%29.jpg"},{ "type": 1,  "content": "http://odulvej8l.bkt.clouddn.com/%E7%A7%9F%E6%88%BF%E5%A4%A7%E6%89%AB%E9%99%A4%E8%AF%A6%E6%83%85%E9%A1%B5_04%28720x1048%29.jpg"},{ "type": 1,  "content": "http://odulvej8l.bkt.clouddn.com/%E7%A7%9F%E6%88%BF%E5%A4%A7%E6%89%AB%E9%99%A4%E8%AF%A6%E6%83%85%E9%A1%B5_05%28720x915%29.jpg"},{ "type": 1,  "content": "http://odulvej8l.bkt.clouddn.com/%E7%A7%9F%E6%88%BF%E5%A4%A7%E6%89%AB%E9%99%A4%E8%AF%A6%E6%83%85%E9%A1%B5_08%28720x1213%29.jpg"},{ "type": 1,  "content": "http://odulvej8l.bkt.clouddn.com/%E7%A7%9F%E6%88%BF%E5%A4%A7%E6%89%AB%E9%99%A4%E8%AF%A6%E6%83%85%E9%A1%B5_09%28720x657%29.jpg"},{ "type": 1,  "content": "http://odulvej8l.bkt.clouddn.com/%E7%A7%9F%E6%88%BF%E5%A4%A7%E6%89%AB%E9%99%A4%E8%AF%A6%E6%83%85%E9%A1%B5_10%28720x720%29.jpg"},{ "type": 1,  "content": "http://odulvej8l.bkt.clouddn.com/%E7%A7%9F%E6%88%BF%E5%A4%A7%E6%89%AB%E9%99%A4%E8%AF%A6%E6%83%85%E9%A1%B5_11%28720x1104%29.jpg"},{ "type": 1,  "content": "http://odulvej8l.bkt.clouddn.com/%E7%A7%9F%E6%88%BF%E5%A4%A7%E6%89%AB%E9%99%A4%E8%AF%A6%E6%83%85%E9%A1%B5_12%28720x951%29.jpg"},{ "type": 1,  "content": "http://odulvej8l.bkt.clouddn.com/%E7%A7%9F%E6%88%BF%E5%A4%A7%E6%89%AB%E9%99%A4%E8%AF%A6%E6%83%85%E9%A1%B5_13%28720x812%29.jpg"},{ "type": 1,  "content": "http://odulvej8l.bkt.clouddn.com/%E7%A7%9F%E6%88%BF%E5%A4%A7%E6%89%AB%E9%99%A4%E8%AF%A6%E6%83%85%E9%A1%B5_14%28720x850%29.jpg"}],
-				status: 1,
-				is_extra: 0,
-				order: 0,
-				type: "9",
-				type_str: "租房清洁",
-				extra: [
-					{
-						type: "客厅清洁",
-						price: "100"
-					},
-					{
-						type: "厨房清洁",
-						price: "150"
-					},
-					{
-						type: "卧室清洁",
-						price: "100"
-					},
-					{
-						type: "卫生间清洁",
-						price: "150"
-					}
-				],
-				action_user: "",
-				action_time: "",
-				action_log: "",
-				/*pics: [
-					{
-						url: "http://odulvej8l.bkt.clouddn.com/1128%E7%A7%9F%E6%88%BF%E5%A4%A7%E6%89%AB%E9%99%A4%E9%A6%96%E5%9B%BE%E6%94%B9.jpg",
-						width: 750,
-						height: 585
-					},
-					{
-						url: "http://odulvej8l.bkt.clouddn.com/%E7%A7%9F%E6%88%BF%E5%A4%A7%E6%89%AB%E9%99%A4%E8%AF%A6%E6%83%85%E9%A1%B5_02%28720x404%29.jpg",
-						width: 720,
-						height: 404
-					},
-					{
-						url: "http://odulvej8l.bkt.clouddn.com/%E7%A7%9F%E6%88%BF%E5%A4%A7%E6%89%AB%E9%99%A4%E8%AF%A6%E6%83%85%E9%A1%B5_03%28720x783%29.jpg",
-						width: 720,
-						height: 783
-					},
-					{
-						url: "http://odulvej8l.bkt.clouddn.com/%E7%A7%9F%E6%88%BF%E5%A4%A7%E6%89%AB%E9%99%A4%E8%AF%A6%E6%83%85%E9%A1%B5_04%28720x1048%29.jpg",
-						width: 720,
-						height: 1048
-					},
-					{
-						url: "http://odulvej8l.bkt.clouddn.com/%E7%A7%9F%E6%88%BF%E5%A4%A7%E6%89%AB%E9%99%A4%E8%AF%A6%E6%83%85%E9%A1%B5_05%28720x915%29.jpg",
-						width: 720,
-						height: 915
-					},
-					{
-						url: "http://odulvej8l.bkt.clouddn.com/%E7%A7%9F%E6%88%BF%E5%A4%A7%E6%89%AB%E9%99%A4%E8%AF%A6%E6%83%85%E9%A1%B5_06%28720x758%29.jpg",
-						width: 720,
-						height: 758
-					},
-					{
-						url: "http://odulvej8l.bkt.clouddn.com/%E7%A7%9F%E6%88%BF%E5%A4%A7%E6%89%AB%E9%99%A4%E8%AF%A6%E6%83%85%E9%A1%B5_07%28720x1129%29.jpg",
-						width: 720,
-						height: 1129
-					},
-					{
-						url: "http://odulvej8l.bkt.clouddn.com/%E7%A7%9F%E6%88%BF%E5%A4%A7%E6%89%AB%E9%99%A4%E8%AF%A6%E6%83%85%E9%A1%B5_08%28720x1213%29.jpg",
-						width: 720,
-						height: 1213
-					},
-					{
-						url: "http://odulvej8l.bkt.clouddn.com/%E7%A7%9F%E6%88%BF%E5%A4%A7%E6%89%AB%E9%99%A4%E8%AF%A6%E6%83%85%E9%A1%B5_09%28720x657%29.jpg",
-						width: 720,
-						height: 657
-					},
-					{
-						url: "http://odulvej8l.bkt.clouddn.com/%E7%A7%9F%E6%88%BF%E5%A4%A7%E6%89%AB%E9%99%A4%E8%AF%A6%E6%83%85%E9%A1%B5_10%28720x720%29.jpg",
-						width: 720,
-						height: 720
-					},
-					{
-						url: "http://odulvej8l.bkt.clouddn.com/%E7%A7%9F%E6%88%BF%E5%A4%A7%E6%89%AB%E9%99%A4%E8%AF%A6%E6%83%85%E9%A1%B5_11%28720x1104%29.jpg",
-						width: 720,
-						height: 1104
-					},
-					{
-						url: "http://odulvej8l.bkt.clouddn.com/%E7%A7%9F%E6%88%BF%E5%A4%A7%E6%89%AB%E9%99%A4%E8%AF%A6%E6%83%85%E9%A1%B5_12%28720x951%29.jpg",
-						width: 720,
-						height: 951
-					},
-					{
-						url: "http://odulvej8l.bkt.clouddn.com/%E7%A7%9F%E6%88%BF%E5%A4%A7%E6%89%AB%E9%99%A4%E8%AF%A6%E6%83%85%E9%A1%B5_13%28720x812%29.jpg",
-						width: 720,
-						height: 812
-					},
-					{
-						url: "http://odulvej8l.bkt.clouddn.com/%E7%A7%9F%E6%88%BF%E5%A4%A7%E6%89%AB%E9%99%A4%E8%AF%A6%E6%83%85%E9%A1%B5_14%28720x850%29.jpg",
-						width: 720,
-						height: 850
-					}
-				]*/
-			},
-			{
-				id: "58324b7e9f5160a4048b5758",//test //583247cca84ea01d428b46a1 master//  58324b7e9f5160a4048b5758
-				price: "48",
-				name: "首单日常保洁2小时体验",//双11虹口区日常保洁特价体验//首单日常保洁2小时体验
-				// imgSrc: 'http://odulvej8l.bkt.clouddn.com/1%E6%97%A5%E5%B8%B8%E6%B8%85%E6%B4%81%E9%A6%96%E5%9B%BE.jpg',
-				desc: [{"type":1,"content":"http://odulvej8l.bkt.clouddn.com/1128-%E6%97%A5%E5%B8%B8%E6%B8%85%E6%B4%81_01.jpg"},{"type":1,"content":"http://odulvej8l.bkt.clouddn.com/1128-%E6%97%A5%E5%B8%B8%E6%B8%85%E6%B4%81_02.jpg"},{"type":1,"content":"http://odulvej8l.bkt.clouddn.com/1128-%E6%97%A5%E5%B8%B8%E6%B8%85%E6%B4%81_03.jpg"},{"type":1,"content":"http://odulvej8l.bkt.clouddn.com/1128-%E6%97%A5%E5%B8%B8%E6%B8%85%E6%B4%81_04.jpg"},{"type":1,"content":"http://odulvej8l.bkt.clouddn.com/1128-%E6%97%A5%E5%B8%B8%E6%B8%85%E6%B4%81_05.jpg"},{"type":1,"content":"http://odulvej8l.bkt.clouddn.com/1128-%E6%97%A5%E5%B8%B8%E6%B8%85%E6%B4%81_06.jpg"}],
-				status: 1,
-				is_extra: 0,
-				order: 0,
-				type: "11",
-				type_str: "日常保洁2小时体验",
-				action_user: "",
-				action_time: "",
-				action_log: "",
-				/*pics: [
-					{
-						url: "http://odulvej8l.bkt.clouddn.com/1128-%E6%97%A5%E5%B8%B8%E6%B8%85%E6%B4%81_01%28720+609%29.jpg",
-						width: 720,
-						height: 609
-					},
-					{
-						url: "http://odulvej8l.bkt.clouddn.com/1128-%E6%97%A5%E5%B8%B8%E6%B8%85%E6%B4%81_02%28720+811%29.jpg",
-						width: 720,
-						height: 811
-					},
-					{
-						url: "http://odulvej8l.bkt.clouddn.com/1128-%E6%97%A5%E5%B8%B8%E6%B8%85%E6%B4%81_03%28720+456%29.jpg",
-						width: 720,
-						height: 456
-					},
-					{
-						url: "http://odulvej8l.bkt.clouddn.com/1128-%E6%97%A5%E5%B8%B8%E6%B8%85%E6%B4%81_04%28720+1219%29.jpg",
-						width: 720,
-						height: 1219
-					},
-					{
-						url: "http://odulvej8l.bkt.clouddn.com/1128-%E6%97%A5%E5%B8%B8%E6%B8%85%E6%B4%81_05%28720+855%29.jpg",
-						width: 720,
-						height: 855
-					}
-				]*/
-			},
-			{
-				id: "5835418aa84ea0a7748b4587",//5835418aa84ea0a7748b4587
-				name: "小时工单次",
-				// imgSrc: 'http://odulvej8l.bkt.clouddn.com/1128%E9%95%BF%E6%9C%9F%E8%AE%A2%E9%A6%96%E5%9B%BE.jpg',
-				desc: [{"type":1,"content":"http://odulvej8l.bkt.clouddn.com/1128-%E6%97%A5%E5%B8%B8%E6%B8%85%E6%B4%81_01.jpg"},{"type":1,"content":"http://odulvej8l.bkt.clouddn.com/1128-%E6%97%A5%E5%B8%B8%E6%B8%85%E6%B4%81_02.jpg"},{"type":1,"content":"http://odulvej8l.bkt.clouddn.com/1128-%E6%97%A5%E5%B8%B8%E6%B8%85%E6%B4%81_03.jpg"},{"type":1,"content":"http://odulvej8l.bkt.clouddn.com/1128-%E6%97%A5%E5%B8%B8%E6%B8%85%E6%B4%81_04.jpg"},{"type":1,"content":"http://odulvej8l.bkt.clouddn.com/1128-%E6%97%A5%E5%B8%B8%E6%B8%85%E6%B4%81_05.jpg"},{"type":1,"content":"http://odulvej8l.bkt.clouddn.com/1128-%E6%97%A5%E5%B8%B8%E6%B8%85%E6%B4%81_06.jpg"}],
-				status: 1,
-				is_extra: 0,
-				order: 0,
-				type: "12",
-				type_str: "长期订",
-				extra: [
-					{
-						type: "2小时/人",
-						price: "90"
-					},
-					{
-						type: "3小时/人",
-						price: "135"
-					}
-				],
-				action_user: "",
-				action_time: "",
-				action_log: "",
-				/*pics: [
-					{
-						url: "http://odulvej8l.bkt.clouddn.com/1128%E9%95%BF%E6%9C%9F%E8%AE%A2%E9%A6%96%E5%9B%BE.jpg",
-						width: 750,
-						height: 585
-					},
-					{
-						url: "http://odulvej8l.bkt.clouddn.com/%E7%A7%9F%E6%88%BF%E5%A4%A7%E6%89%AB%E9%99%A4%E8%AF%A6%E6%83%85%E9%A1%B5_02%28720x404%29.jpg",
-						width: 720,
-						height: 404
-					},
-					{
-						url: "http://odulvej8l.bkt.clouddn.com/%E7%A7%9F%E6%88%BF%E5%A4%A7%E6%89%AB%E9%99%A4%E8%AF%A6%E6%83%85%E9%A1%B5_03%28720x783%29.jpg",
-						width: 720,
-						height: 783
-					},
-					{
-						url: "http://odulvej8l.bkt.clouddn.com/%E7%A7%9F%E6%88%BF%E5%A4%A7%E6%89%AB%E9%99%A4%E8%AF%A6%E6%83%85%E9%A1%B5_04%28720x1048%29.jpg",
-						width: 720,
-						height: 1048
-					},
-					{
-						url: "http://odulvej8l.bkt.clouddn.com/%E7%A7%9F%E6%88%BF%E5%A4%A7%E6%89%AB%E9%99%A4%E8%AF%A6%E6%83%85%E9%A1%B5_05%28720x915%29.jpg",
-						width: 720,
-						height: 915
-					},
-					{
-						url: "http://odulvej8l.bkt.clouddn.com/%E7%A7%9F%E6%88%BF%E5%A4%A7%E6%89%AB%E9%99%A4%E8%AF%A6%E6%83%85%E9%A1%B5_06%28720x758%29.jpg",
-						width: 720,
-						height: 758
-					},
-					{
-						url: "http://odulvej8l.bkt.clouddn.com/%E7%A7%9F%E6%88%BF%E5%A4%A7%E6%89%AB%E9%99%A4%E8%AF%A6%E6%83%85%E9%A1%B5_07%28720x1129%29.jpg",
-						width: 720,
-						height: 1129
-					},
-					{
-						url: "http://odulvej8l.bkt.clouddn.com/%E7%A7%9F%E6%88%BF%E5%A4%A7%E6%89%AB%E9%99%A4%E8%AF%A6%E6%83%85%E9%A1%B5_08%28720x1213%29.jpg",
-						width: 720,
-						height: 1213
-					},
-					{
-						url: "http://odulvej8l.bkt.clouddn.com/%E7%A7%9F%E6%88%BF%E5%A4%A7%E6%89%AB%E9%99%A4%E8%AF%A6%E6%83%85%E9%A1%B5_09%28720x657%29.jpg",
-						width: 720,
-						height: 657
-					},
-					{
-						url: "http://odulvej8l.bkt.clouddn.com/%E7%A7%9F%E6%88%BF%E5%A4%A7%E6%89%AB%E9%99%A4%E8%AF%A6%E6%83%85%E9%A1%B5_10%28720x720%29.jpg",
-						width: 720,
-						height: 720
-					},
-					{
-						url: "http://odulvej8l.bkt.clouddn.com/%E7%A7%9F%E6%88%BF%E5%A4%A7%E6%89%AB%E9%99%A4%E8%AF%A6%E6%83%85%E9%A1%B5_11%28720x1104%29.jpg",
-						width: 720,
-						height: 1104
-					},
-					{
-						url: "http://odulvej8l.bkt.clouddn.com/%E7%A7%9F%E6%88%BF%E5%A4%A7%E6%89%AB%E9%99%A4%E8%AF%A6%E6%83%85%E9%A1%B5_12%28720x951%29.jpg",
-						width: 720,
-						height: 951
-					},
-					{
-						url: "http://odulvej8l.bkt.clouddn.com/%E7%A7%9F%E6%88%BF%E5%A4%A7%E6%89%AB%E9%99%A4%E8%AF%A6%E6%83%85%E9%A1%B5_13%28720x812%29.jpg",
-						width: 720,
-						height: 812
-					},
-					{
-						url: "http://odulvej8l.bkt.clouddn.com/%E7%A7%9F%E6%88%BF%E5%A4%A7%E6%89%AB%E9%99%A4%E8%AF%A6%E6%83%85%E9%A1%B5_14%28720x850%29.jpg",
-						width: 720,
-						height: 850
-					}
-				]*/
-			},
-			{
-				id: "5835423fa84ea0ac7a8b4568",
-				name: "小时工多次",
-				// imgSrc: 'http://odulvej8l.bkt.clouddn.com/1128%E9%95%BF%E6%9C%9F%E8%AE%A2%E9%A6%96%E5%9B%BE.jpg',
-				desc: [{"type":1,"content":"http://odulvej8l.bkt.clouddn.com/1128-%E6%97%A5%E5%B8%B8%E6%B8%85%E6%B4%81_01.jpg"},{"type":1,"content":"http://odulvej8l.bkt.clouddn.com/1128-%E6%97%A5%E5%B8%B8%E6%B8%85%E6%B4%81_02.jpg"},{"type":1,"content":"http://odulvej8l.bkt.clouddn.com/1128-%E6%97%A5%E5%B8%B8%E6%B8%85%E6%B4%81_03.jpg"},{"type":1,"content":"http://odulvej8l.bkt.clouddn.com/1128-%E6%97%A5%E5%B8%B8%E6%B8%85%E6%B4%81_04.jpg"},{"type":1,"content":"http://odulvej8l.bkt.clouddn.com/1128-%E6%97%A5%E5%B8%B8%E6%B8%85%E6%B4%81_05.jpg"},{"type":1,"content":"http://odulvej8l.bkt.clouddn.com/1128-%E6%97%A5%E5%B8%B8%E6%B8%85%E6%B4%81_06.jpg"}],
-				status: 1,
-				is_extra: 0,
-				order: 0,
-				type: "12",
-				type_str: "长期订",
-				extra: [
-					{
-						type: "3张(2小时/人)",
-						price: "32"
-					},
-					{
-						type: "3张(3小时/人)",
-						price: "33"
-					},
-					{
-						type: "6张(2小时/人)",
-						price: "62"
-					},
-					{
-						type: "6张(3小时/人)",
-						price: "63"
-					}
-				],
-				action_user: "",
-				action_time: "",
-				action_log: "",
-				/*pics: [
-					{
-						url: "http://odulvej8l.bkt.clouddn.com/1128%E9%95%BF%E6%9C%9F%E8%AE%A2%E9%A6%96%E5%9B%BE.jpg",
-						width: 750,
-						height: 585
-					},
-					{
-						url: "http://odulvej8l.bkt.clouddn.com/%E7%A7%9F%E6%88%BF%E5%A4%A7%E6%89%AB%E9%99%A4%E8%AF%A6%E6%83%85%E9%A1%B5_02%28720x404%29.jpg",
-						width: 720,
-						height: 404
-					},
-					{
-						url: "http://odulvej8l.bkt.clouddn.com/%E7%A7%9F%E6%88%BF%E5%A4%A7%E6%89%AB%E9%99%A4%E8%AF%A6%E6%83%85%E9%A1%B5_03%28720x783%29.jpg",
-						width: 720,
-						height: 783
-					},
-					{
-						url: "http://odulvej8l.bkt.clouddn.com/%E7%A7%9F%E6%88%BF%E5%A4%A7%E6%89%AB%E9%99%A4%E8%AF%A6%E6%83%85%E9%A1%B5_04%28720x1048%29.jpg",
-						width: 720,
-						height: 1048
-					},
-					{
-						url: "http://odulvej8l.bkt.clouddn.com/%E7%A7%9F%E6%88%BF%E5%A4%A7%E6%89%AB%E9%99%A4%E8%AF%A6%E6%83%85%E9%A1%B5_05%28720x915%29.jpg",
-						width: 720,
-						height: 915
-					},
-					{
-						url: "http://odulvej8l.bkt.clouddn.com/%E7%A7%9F%E6%88%BF%E5%A4%A7%E6%89%AB%E9%99%A4%E8%AF%A6%E6%83%85%E9%A1%B5_06%28720x758%29.jpg",
-						width: 720,
-						height: 758
-					},
-					{
-						url: "http://odulvej8l.bkt.clouddn.com/%E7%A7%9F%E6%88%BF%E5%A4%A7%E6%89%AB%E9%99%A4%E8%AF%A6%E6%83%85%E9%A1%B5_07%28720x1129%29.jpg",
-						width: 720,
-						height: 1129
-					},
-					{
-						url: "http://odulvej8l.bkt.clouddn.com/%E7%A7%9F%E6%88%BF%E5%A4%A7%E6%89%AB%E9%99%A4%E8%AF%A6%E6%83%85%E9%A1%B5_08%28720x1213%29.jpg",
-						width: 720,
-						height: 1213
-					},
-					{
-						url: "http://odulvej8l.bkt.clouddn.com/%E7%A7%9F%E6%88%BF%E5%A4%A7%E6%89%AB%E9%99%A4%E8%AF%A6%E6%83%85%E9%A1%B5_09%28720x657%29.jpg",
-						width: 720,
-						height: 657
-					},
-					{
-						url: "http://odulvej8l.bkt.clouddn.com/%E7%A7%9F%E6%88%BF%E5%A4%A7%E6%89%AB%E9%99%A4%E8%AF%A6%E6%83%85%E9%A1%B5_10%28720x720%29.jpg",
-						width: 720,
-						height: 720
-					},
-					{
-						url: "http://odulvej8l.bkt.clouddn.com/%E7%A7%9F%E6%88%BF%E5%A4%A7%E6%89%AB%E9%99%A4%E8%AF%A6%E6%83%85%E9%A1%B5_11%28720x1104%29.jpg",
-						width: 720,
-						height: 1104
-					},
-					{
-						url: "http://odulvej8l.bkt.clouddn.com/%E7%A7%9F%E6%88%BF%E5%A4%A7%E6%89%AB%E9%99%A4%E8%AF%A6%E6%83%85%E9%A1%B5_12%28720x951%29.jpg",
-						width: 720,
-						height: 951
-					},
-					{
-						url: "http://odulvej8l.bkt.clouddn.com/%E7%A7%9F%E6%88%BF%E5%A4%A7%E6%89%AB%E9%99%A4%E8%AF%A6%E6%83%85%E9%A1%B5_13%28720x812%29.jpg",
-						width: 720,
-						height: 812
-					},
-					{
-						url: "http://odulvej8l.bkt.clouddn.com/%E7%A7%9F%E6%88%BF%E5%A4%A7%E6%89%AB%E9%99%A4%E8%AF%A6%E6%83%85%E9%A1%B5_14%28720x850%29.jpg",
-						width: 720,
-						height: 850
-					}
-				]*/
-			}
-		];
-		// this.allList=[];
-		//列出所有的产品
-		Product.prototype.getListAll = function (userID,callback) {
-			var that = this;
-			api.getProductList({
-				user_id: userID
-				// type: type
-			}, function (res) {
-				if(res.success){
-					// that.allList=res.data.products;
-				}
-				if (typeof (callback) == 'function') {
-					callback(res);
-				}
-			});
-		}
-	};
-	Product.prototype = new base();
+    var Product = function () {
+        if (typeof Product.instance === 'object') {
+            return Product.instance;
+        }
+        Product.instance = this;
+        this.storagePrefix = 'product_';//存储前缀
 
-	return new Product();
+        /* 我新加的 */
+        /* this.allList = [
+         {
+         id: "57e0dffc9f5160dd048b4568",
+         name: "日常清洁",
+         imgSrc: 'http://odulvej8l.bkt.clouddn.com/Advertising_02.png',
+         desc: [{content: "http://odqeoyzxd.bkt.clouddn.com/image/image_rc.jpg"}, {content: "日常清洁"}],
+         status: 1,
+         is_extra: 0,
+         order: 0,
+         type: "1",
+         type_str: "日常清洁",
+         extra: [
+         {
+         type: "一室一卫",
+         price: "98"
+         },
+         {
+         type: "两室一卫",
+         price: "118"
+         },
+         {
+         type: "两室两卫",
+         price: "138"
+         },
+         {
+         type: "三室两卫",
+         price: "158"
+         },
+         {
+         type: "四室三卫",
+         price: "228"
+         },
+         {
+         type: "200-250平米",
+         price: "298"
+         },
+         {
+         type: "200-300平米",
+         price: "398"
+         },
+         {
+         type: "三层别墅",
+         price: "498"
+         },
+         {
+         type: "四层别墅",
+         price: "598"
+         }
+         ],
+         action_user: "",
+         action_time: "",
+         action_log: "",
+         pics: [
+         {
+         url: "http://odulvej8l.bkt.clouddn.com/Advertising_02.png",
+         width: 537,
+         height: 537
+         },
+         {
+         url: "http://odulvej8l.bkt.clouddn.com/a_01.png",
+         width: 720,
+         height: 1165
+         },
+         {
+         url: "http://oduj3utzz.bkt.clouddn.com/ada69b8adb17b1475912214579.png",
+         width: 720,
+         height: 1129
+         },
+         {
+         url: "http://oduj3utzz.bkt.clouddn.com/rcqj_xqy_03.jpg",
+         width: 720,
+         height: 1127
+         },
+         {
+         url: "http://oduj3utzz.bkt.clouddn.com/03c6e0266e4661475977941220.png",
+         width: 720,
+         height: 1178
+         },
+         {
+         url: "http://oduj3utzz.bkt.clouddn.com/1e3638af93cab1475977951089.jpg",
+         width: 720,
+         height: 1246
+         },
+         {
+         url: "http://oduj3utzz.bkt.clouddn.com/cfd996a3783d11475977959884.png",
+         width: 720,
+         height: 520
+         },
+         {
+         url: "http://oduj3utzz.bkt.clouddn.com/d67ff4fcad4bc1475977977827.png",
+         width: 720,
+         height: 644
+         },
+         {
+         url: "http://oduj3utzz.bkt.clouddn.com/78ce92ec0d52d1475977966417.png",
+         width: 720,
+         height: 644
+         }
+         ]
+         },
+         {
+         id: "57e0e0189f5160dc048b4568",
+         name: "深度清洁",
+         imgSrc: 'http://odulvej8l.bkt.clouddn.com/Advertising_01.png',
+         desc: [{content: "http://odqeoyzxd.bkt.clouddn.com/image/image_sd.jpg"}, {content: "深度清洁"}],
+         status: 1,
+         is_extra: 0,
+         order: 0,
+         type: "2",
+         type_str: "深度清洁",
+         extra: [
+         {
+         type: "卧室清洁",
+         price: "188"
+         },
+         {
+         type: "客厅清洁",
+         price: "288"
+         },
+         {
+         type: "厨房清洁",
+         price: "388"
+         },
+         {
+         type: "卫生间清洁",
+         price: "188"
+         }
+         ],
+         action_user: "",
+         action_time: "",
+         action_log: "",
+         pics: [
+         {
+         url: "http://odulvej8l.bkt.clouddn.com/Advertising_01.png",
+         width: 658,
+         height: 663
+         },
+         {
+         url: "http://odulvej8l.bkt.clouddn.com/a_01.png",
+         width: 720,
+         height: 1165
+         },
+         {
+         url: "http://oduj3utzz.bkt.clouddn.com/e295c92da2e7c1475913803198.png",
+         width: 720,
+         height: 1129
+         },
+         {
+         url: "http://oduj3utzz.bkt.clouddn.com/363f18ed617211475913944488.jpg",
+         width: 720,
+         height: 1246
+         },
+         {
+         url: "http://oduj3utzz.bkt.clouddn.com/64a1375694e091475913947183.png",
+         width: 720,
+         height: 715
+         },
+         {
+         url: "http://oduj3utzz.bkt.clouddn.com/8cf32629eece91475913957779.png",
+         width: 720,
+         height: 674
+         },
+         {
+         url: "http://oduj3utzz.bkt.clouddn.com/0ef470cf13ea51475914131334.jpg",
+         width: 720,
+         height: 786
+         },
+         {
+         url: "http://oduj3utzz.bkt.clouddn.com/341746e8065381475978339748.jpg",
+         width: 720,
+         height: 832
+         },
+         {
+         url: "http://oduj3utzz.bkt.clouddn.com/beb99ec9850041475978342874.jpg",
+         width: 720,
+         height: 1178
+         }
+         ]
+         },
+         {
+         id: "57e0e0369f5160b1048b456b",
+         name: "除螨杀菌",
+         imgSrc: 'http://odulvej8l.bkt.clouddn.com/Advertising_04.png',
+         desc: [{content: 'http://odqeoyzxd.bkt.clouddn.com/image/image_etsj.jpg'}, {content: "除螨杀菌"}],
+         status: 1,
+         is_extra: 0,
+         order: 0,
+         type: "3",
+         type_str: "除螨杀菌",
+         extra: [
+         {
+         type: "儿童床",
+         price: "80"
+         },
+         {
+         type: "布艺窗帘",
+         price: "100"
+         },
+         {
+         type: "整床除螨",
+         price: "180"
+         },
+         {
+         type: "整套布艺沙发",
+         price: "160"
+         }
+         ],
+         action_user: "",
+         action_time: "",
+         action_log: "",
+         pics: [
+         {
+         url: "http://odulvej8l.bkt.clouddn.com/Advertising_04.png",
+         width: 658,
+         height: 663
+         },
+         {
+         url: "http://odulvej8l.bkt.clouddn.com/a_01.png",
+         width: 720,
+         height: 1129
+         },
+         {
+         url: "http://oduj3utzz.bkt.clouddn.com/5536a4677fb781475914511648.jpg",
+         width: 720,
+         height: 1697
+         },
+         {
+         url: "http://oduj3utzz.bkt.clouddn.com/58eb5a44603191475914516767.jpg",
+         width: 720,
+         height: 1246
+         }
+         ]
+         },
+         {
+         id: "57e0e04e9f5160af048b456b",
+         name: "家电清洗",
+         imgSrc: 'http://odulvej8l.bkt.clouddn.com/Advertising_05.png',
+         desc: [{content: "http://odqeoyzxd.bkt.clouddn.com/image/image_jdqx.jpg"}, {content: "家电清洗"}],
+         status: 1,
+         is_extra: 0,
+         order: 0,
+         type: "4",
+         type_str: "家电清洗",
+         extra: [
+         {
+         type: "微波炉",
+         price: "60"
+         },
+         {
+         type: "洗衣机",
+         price: "100"
+         },
+         {
+         type: "油烟机",
+         price: "120"
+         },
+         {
+         type: "挂式空调",
+         price: "100"
+         },
+         {
+         type: "立式空调",
+         price: "130"
+         },
+         {
+         type: "冰箱-单开门",
+         price: "100"
+         },
+         {
+         type: "冰箱-双开门",
+         price: "130"
+         }
+         ],
+         action_user: "",
+         action_time: "",
+         action_log: "",
+         pics: [
+         {
+         url: "http://odulvej8l.bkt.clouddn.com/Advertising_05.png",
+         width: 537,
+         height: 537
+         },
+         {
+         url: "http://odulvej8l.bkt.clouddn.com/a_01.png",
+         width: 720,
+         height: 1165
+         },
+         {
+         url: "http://oduj3utzz.bkt.clouddn.com/0f29fa9bf28161475979068565.jpg",
+         width: 720,
+         height: 844
+         },
+         {
+         url: "http://oduj3utzz.bkt.clouddn.com/205de28a664c21475979065361.png",
+         width: 720,
+         height: 1129
+         },
+         {
+         url: "http://oduj3utzz.bkt.clouddn.com/f17ecbfe231231475979073441.jpg",
+         width: 720,
+         height: 1204
+         },
+         {
+         url: "http://oduj3utzz.bkt.clouddn.com/30daa83d817761475979080897.jpg",
+         width: 720,
+         height: 1246
+         },
+         {
+         url: "http://oduj3utzz.bkt.clouddn.com/3ee87b41d9d241475979077357.png",
+         width: 720,
+         height: 1257
+         },
+         {
+         url: "http://oduj3utzz.bkt.clouddn.com/06e7de122aab21475979086760.png",
+         width: 720,
+         height: 647
+         },
+         {
+         url: "http://oduj3utzz.bkt.clouddn.com/2973a12ec9a0f1475979093617.jpg",
+         width: 720,
+         height: 786
+         }
+         ]
+         },
+         {
+         id: "57e0e0879f5160b8048b4571",
+         price: "8",
+         name: "新居开荒-每平米",
+         imgSrc: 'http://odulvej8l.bkt.clouddn.com/Advertising_03.png',
+         desc: [{content: "http://odqeoyzxd.bkt.clouddn.com/image/image_kh.jpg"}, {content: '新居开荒'}],
+         status: 1,
+         is_extra: 0,
+         order: 0,
+         type: "5",
+         type_str: "新居开荒",
+         action_user: "",
+         action_time: "",
+         action_log: "",
+         pics: [
+         {
+         url: "http://odulvej8l.bkt.clouddn.com/Advertising_03.png",
+         width: 658,
+         height: 663
+         },
+         {
+         url: "http://odulvej8l.bkt.clouddn.com/%E6%96%B0%E5%B1%85%E5%BC%80%E8%8D%92-01.jpg",
+         width: 720,
+         height: 10637
+         }
+         ]
+         }, {
+         id: "57fb4a909f5160b2048b4a0e",
+         price: "10",
+         name: "擦玻璃-每平米",
+         imgSrc: 'http://odulvej8l.bkt.clouddn.com/%E5%A3%B9%E7%AE%A1%E5%AE%B6%E6%93%A6%E7%8E%BB%E7%92%83%E9%A6%96%E5%9B%BE.jpg',
+         desc: [{content: "http://odqeoyzxd.bkt.clouddn.com/image/image_kh.jpg"}, {content: '擦玻璃'}],
+         status: 1,
+         is_extra: 0,
+         order: 0,
+         type: "6",
+         type_str: "擦玻璃",
+         action_user: "",
+         action_time: "",
+         action_log: "",
+         pics: [
+         {
+         url: "http://odulvej8l.bkt.clouddn.com/%E6%93%A6%E7%8E%BB%E7%92%83%E8%AF%A6%E6%83%85%E9%A1%B5.jpg",
+         width: 720,
+         height: 11906
+         }
+         ]
+         },
+         {
+         id: "57e3a5a49f5160c9048b457c",
+         price: "",
+         name: "母婴房清洁",
+         imgSrc: 'http://odulvej8l.bkt.clouddn.com/Advertising_06.png',
+         desc: [{content: "http://7oxep6.com2.z0.glb.clouddn.com/0e287e871c3831474536840941.jpg"}, {content: '母婴房清洁'}],
+         status: 1,
+         is_extra: 0,
+         order: 200,
+         type: "7",
+         type_str: "母婴房清洁",
+         extra: [
+         {
+         type: "整间日常清洁",
+         price: "388"
+         },
+         {
+         type: "整间深度清洁",
+         price: "888"
+         }
+         ],
+         action_user: "",
+         action_time: "",
+         action_log: "",
+         pics: [
+         {
+         url: "http://odulvej8l.bkt.clouddn.com/Advertising_06.png",
+         width: 576,
+         height: 484
+         },
+         {
+         url: "http://oduj3utzz.bkt.clouddn.com/2a28708adeba61475912920337.jpg",
+         width: 730,
+         height: 522
+         },
+         {
+         url: "http://oduj3utzz.bkt.clouddn.com/49b77d125873d1475913063652.jpg",
+         width: 730,
+         height: 791
+         },
+         {
+         url: "http://oduj3utzz.bkt.clouddn.com/48787438272821475913069079.jpg",
+         width: 730,
+         height: 823
+         },
+         {
+         url: "http://oduj3utzz.bkt.clouddn.com/5f027131794191475913084173.jpg",
+         width: 730,
+         height: 808
+         },
+         {
+         url: "http://oduj3utzz.bkt.clouddn.com/0eb339c6872641475913124202.jpg",
+         width: 730,
+         height: 1196
+         },
+         {
+         url: "http://oduj3utzz.bkt.clouddn.com/1c48dcac293c31475913147997.jpg",
+         width: 730,
+         height: 1111
+         }
+         ]
+         },
+         {
+         id: "58085f4b9f5160a9048b490e",
+         name: "租房大扫除",
+         imgSrc: 'http://odulvej8l.bkt.clouddn.com/%E5%A3%B9%E7%AE%A1%E5%AE%B6%E7%A7%9F%E6%88%BF%E5%A4%A7%E6%89%AB%E9%99%A4%E9%A6%96%E5%9B%BE.jpg',
+         desc: [{content: "http://odqeoyzxd.bkt.clouddn.com/image/image_jdqx.jpg"}, {content: "家电清洗"}],
+         status: 1,
+         is_extra: 0,
+         order: 0,
+         type: "8",
+         type_str: "租房大扫除",
+         extra: [
+         {
+         type: "客厅清洁",
+         price: "100"
+         },
+         {
+         type: "厨房清洁",
+         price: "150"
+         },
+         {
+         type: "卧室清洁",
+         price: "100"
+         },
+         {
+         type: "卫生间清洁",
+         price: "150"
+         }
+         ],
+         action_user: "",
+         action_time: "",
+         action_log: "",
+         pics: [
+         {
+         url: "http://odulvej8l.bkt.clouddn.com/%E7%A7%9F%E6%88%BF%E5%A4%A7%E6%89%AB%E9%99%A4%E8%AF%A6%E6%83%85%E9%A1%B5.jpg",
+         width: 720,
+         height: 11906
+         }
+         ]
+         }
+         ];*/
+        /*图片压缩*/
+        this.allList = [
+            {
+                id: "57e0dffc9f5160dd048b4568",
+                name: "日常清洁",
+                imgSrc: 'http://odulvej8l.bkt.clouddn.com/1%E6%97%A5%E5%B8%B8%E6%B8%85%E6%B4%81%E9%A6%96%E5%9B%BE.jpg',
+                desc: [{content: "http://odqeoyzxd.bkt.clouddn.com/image/image_rc.jpg"}, {content: "日常清洁"}],
+                status: 1,
+                is_extra: 0,
+                order: 0,
+                type: "1",
+                type_str: "日常清洁",
+                extra: [
+                    {
+                        type: "一室一卫",
+                        price: "98"
+                    },
+                    {
+                        type: "两室一卫",
+                        price: "118"
+                    },
+                    {
+                        type: "两室两卫",
+                        price: "138"
+                    },
+                    {
+                        type: "三室两卫",
+                        price: "158"
+                    },
+                    {
+                        type: "四室三卫",
+                        price: "228"
+                    },
+                    {
+                        type: "200-250平米",
+                        price: "298"
+                    },
+                    {
+                        type: "200-300平米",
+                        price: "398"
+                    },
+                    {
+                        type: "三层别墅",
+                        price: "498"
+                    },
+                    {
+                        type: "四层别墅",
+                        price: "598"
+                    }
+                ],
+                action_user: "",
+                action_time: "",
+                action_log: "",
+                pics: [
+                    {
+                        url: "http://odulvej8l.bkt.clouddn.com/1%E6%97%A5%E5%B8%B8%E6%B8%85%E6%B4%81%E9%A6%96%E5%9B%BE.jpg",
+                        width: 537,
+                        height: 537
+                    },
+                    {
+                        url: "http://odulvej8l.bkt.clouddn.com/%E6%97%A5%E5%B8%B8%E6%B8%85%E6%B4%81_1%28720x1165%29.jpg",
+                        width: 720,
+                        height: 1165
+                    },
+                    {
+                        url: "http://odulvej8l.bkt.clouddn.com/%E6%97%A5%E5%B8%B8%E6%B8%85%E6%B4%81_2%28720x1129%29.jpg",
+                        width: 720,
+                        height: 1129
+                    },
+                    {
+                        url: "http://odulvej8l.bkt.clouddn.com/%E6%97%A5%E5%B8%B8%E6%B8%85%E6%B4%81_3%28720x1127%29.jpg",
+                        width: 720,
+                        height: 1127
+                    },
+                    {
+                        url: "http://odulvej8l.bkt.clouddn.com/%E6%97%A5%E5%B8%B8%E6%B8%85%E6%B4%81_4%28720x1178%29.jpg",
+                        width: 720,
+                        height: 1178
+                    },
+                    {
+                        url: "http://odulvej8l.bkt.clouddn.com/%E6%97%A5%E5%B8%B8%E6%B8%85%E6%B4%81_5%28720x1246%29.jpg",
+                        width: 720,
+                        height: 1246
+                    },
+                    {
+                        url: "http://odulvej8l.bkt.clouddn.com/%E6%97%A5%E5%B8%B8%E6%B8%85%E6%B4%81_6%28720x520%29.jpg",
+                        width: 720,
+                        height: 520
+                    },
+                    {
+                        url: "http://odulvej8l.bkt.clouddn.com/%E6%97%A5%E5%B8%B8%E6%B8%85%E6%B4%81_7%28720x644%29.jpg",
+                        width: 720,
+                        height: 644
+                    },
+                    {
+                        url: "http://odulvej8l.bkt.clouddn.com/%E6%97%A5%E5%B8%B8%E6%B8%85%E6%B4%81_8%28720x1257%29.jpg",
+                        width: 720,
+                        height: 644
+                    }
+                ]
+            },
+            {
+                id: "57e0e0189f5160dc048b4568",
+                name: "深度清洁",
+                imgSrc: 'http://odulvej8l.bkt.clouddn.com/2%E6%B7%B1%E5%BA%A6%E6%B8%85%E6%B4%81%E9%A6%96%E5%9B%BE.jpg',
+                desc: [{content: "http://odqeoyzxd.bkt.clouddn.com/image/image_sd.jpg"}, {content: "深度清洁"}],
+                status: 1,
+                is_extra: 0,
+                order: 0,
+                type: "2",
+                type_str: "深度清洁",
+                extra: [
+                    {
+                        type: "卧室清洁",
+                        price: "188"
+                    },
+                    {
+                        type: "客厅清洁",
+                        price: "288"
+                    },
+                    {
+                        type: "厨房清洁",
+                        price: "388"
+                    },
+                    {
+                        type: "卫生间清洁",
+                        price: "188"
+                    }
+                ],
+                action_user: "",
+                action_time: "",
+                action_log: "",
+                pics: [
+                    {
+                        url: "http://odulvej8l.bkt.clouddn.com/2%E6%B7%B1%E5%BA%A6%E6%B8%85%E6%B4%81%E9%A6%96%E5%9B%BE.jpg",
+                        width: 750,
+                        height: 585
+                    },
+                    {
+                        url: "http://odulvej8l.bkt.clouddn.com/%E6%B7%B1%E5%BA%A6%E6%B8%85%E6%B4%81_1%28720x1165%29.jpg",
+                        width: 720,
+                        height: 1165
+                    },
+                    {
+                        url: "http://odulvej8l.bkt.clouddn.com/%E6%B7%B1%E5%BA%A6%E6%B8%85%E6%B4%81_2%28720x1129%29.jpg",
+                        width: 720,
+                        height: 1129
+                    },
+                    {
+                        url: "http://odulvej8l.bkt.clouddn.com/%E6%B7%B1%E5%BA%A6%E6%B8%85%E6%B4%81_3%28720x1246%29.jpg",
+                        width: 720,
+                        height: 1246
+                    },
+                    {
+                        url: "http://odulvej8l.bkt.clouddn.com/%E6%B7%B1%E5%BA%A6%E6%B8%85%E6%B4%81_4%28720x715%29.jpg",
+                        width: 720,
+                        height: 715
+                    },
+                    {
+                        url: "http://odulvej8l.bkt.clouddn.com/%E6%B7%B1%E5%BA%A6%E6%B8%85%E6%B4%81_5%28720x674%29.jpg",
+                        width: 720,
+                        height: 674
+                    },
+                    {
+                        url: "http://odulvej8l.bkt.clouddn.com/%E6%B7%B1%E5%BA%A6%E6%B8%85%E6%B4%81_6%28720x786%29.jpg",
+                        width: 720,
+                        height: 786
+                    },
+                    {
+                        url: "http://odulvej8l.bkt.clouddn.com/%E6%B7%B1%E5%BA%A6%E6%B8%85%E6%B4%81_7%28720x832%29.jpg",
+                        width: 720,
+                        height: 832
+                    },
+                    {
+                        url: "http://odulvej8l.bkt.clouddn.com/%E6%B7%B1%E5%BA%A6%E6%B8%85%E6%B4%81_8%28720x1178%29.jpg",
+                        width: 720,
+                        height: 1178
+                    }
+                ]
+            },
+            {
+                id: "57e0e0369f5160b1048b456b",
+                name: "除螨杀菌",
+                imgSrc: 'http://odulvej8l.bkt.clouddn.com/3%E9%99%A4%E8%9E%A8%E6%9D%80%E8%8F%8C%E9%A6%96%E5%9B%BE.jpg',
+                desc: [{content: 'http://odqeoyzxd.bkt.clouddn.com/image/image_etsj.jpg'}, {content: "除螨杀菌"}],
+                status: 1,
+                is_extra: 0,
+                order: 0,
+                type: "3",
+                type_str: "除螨杀菌",
+                extra: [
+                    {
+                        type: "儿童床",
+                        price: "80"
+                    },
+                    {
+                        type: "布艺窗帘",
+                        price: "100"
+                    },
+                    {
+                        type: "整床除螨",
+                        price: "180"
+                    },
+                    {
+                        type: "整套布艺沙发",
+                        price: "160"
+                    }
+                ],
+                action_user: "",
+                action_time: "",
+                action_log: "",
+                pics: [
+                    {
+                        url: "http://odulvej8l.bkt.clouddn.com/3%E9%99%A4%E8%9E%A8%E6%9D%80%E8%8F%8C%E9%A6%96%E5%9B%BE.jpg",
+                        width: 720,
+                        height: 585
+                    },
+                    {
+                        url: "http://odulvej8l.bkt.clouddn.com/%E9%99%A4%E8%9E%A8%E6%9D%80%E8%8F%8C_1%28720+1165%29.jpg",
+                        width: 720,
+                        height: 1165
+                    },
+                    {
+                        url: "http://odulvej8l.bkt.clouddn.com/%E9%99%A4%E8%9E%A8%E6%9D%80%E8%8F%8C_2%28720+1697%29.jpg",
+                        width: 720,
+                        height: 1697
+                    },
+                    {
+                        url: "http://odulvej8l.bkt.clouddn.com/%E9%99%A4%E8%9E%A8%E6%9D%80%E8%8F%8C_3%28720+1246%29.jpg",
+                        width: 720,
+                        height: 1246
+                    }
+                ]
+            },
+            {
+                id: "57e0e04e9f5160af048b456b",
+                name: "家电清洗",
+                imgSrc: 'http://odulvej8l.bkt.clouddn.com/4%E5%AE%B6%E7%94%B5%E6%B8%85%E6%B4%97%E9%A6%96%E5%9B%BE.jpg',
+                desc: [{content: "http://odqeoyzxd.bkt.clouddn.com/image/image_jdqx.jpg"}, {content: "家电清洗"}],
+                status: 1,
+                is_extra: 0,
+                order: 0,
+                type: "4",
+                type_str: "家电清洗",
+                extra: [
+                    {
+                        type: "微波炉",
+                        price: "60"
+                    },
+                    {
+                        type: "洗衣机",
+                        price: "100"
+                    },
+                    {
+                        type: "油烟机",
+                        price: "120"
+                    },
+                    {
+                        type: "挂式空调",
+                        price: "100"
+                    },
+                    {
+                        type: "立式空调",
+                        price: "130"
+                    },
+                    {
+                        type: "冰箱-单开门",
+                        price: "100"
+                    },
+                    {
+                        type: "冰箱-双开门",
+                        price: "130"
+                    }
+                ],
+                action_user: "",
+                action_time: "",
+                action_log: "",
+                pics: [
+                    {
+                        url: "http://odulvej8l.bkt.clouddn.com/4%E5%AE%B6%E7%94%B5%E6%B8%85%E6%B4%97%E9%A6%96%E5%9B%BE.jpg",
+                        width: 720,
+                        height: 585
+                    },
+                    {
+                        url: "http://odulvej8l.bkt.clouddn.com/%E5%AE%B6%E7%94%B5%E6%B8%85%E6%B4%97_1%28720+1165%29.jpg",
+                        width: 720,
+                        height: 1165
+                    },
+                    {
+                        url: "http://odulvej8l.bkt.clouddn.com/%E5%AE%B6%E7%94%B5%E6%B8%85%E6%B4%97_2%28720+844%29.jpg",
+                        width: 720,
+                        height: 844
+                    },
+                    {
+                        url: "http://odulvej8l.bkt.clouddn.com/%E5%AE%B6%E7%94%B5%E6%B8%85%E6%B4%97_3%28720+1129%29.jpg",
+                        width: 720,
+                        height: 1129
+                    },
+                    {
+                        url: "http://odulvej8l.bkt.clouddn.com/%E5%AE%B6%E7%94%B5%E6%B8%85%E6%B4%97_4%28720+1204%29.jpg",
+                        width: 720,
+                        height: 1204
+                    },
+                    {
+                        url: "http://odulvej8l.bkt.clouddn.com/%E5%AE%B6%E7%94%B5%E6%B8%85%E6%B4%97_5%28720+1246%29.jpg",
+                        width: 720,
+                        height: 1246
+                    },
+                    {
+                        url: "http://odulvej8l.bkt.clouddn.com/%E5%AE%B6%E7%94%B5%E6%B8%85%E6%B4%97_6%28720+1257%29.jpg",
+                        width: 720,
+                        height: 1257
+                    },
+                    {
+                        url: "http://odulvej8l.bkt.clouddn.com/%E5%AE%B6%E7%94%B5%E6%B8%85%E6%B4%97_7%28720+674%29.jpg",
+                        width: 720,
+                        height: 647
+                    },
+                    {
+                        url: "http://odulvej8l.bkt.clouddn.com/%E5%AE%B6%E7%94%B5%E6%B8%85%E6%B4%97_8%28720+786%29.jpg",
+                        width: 720,
+                        height: 786
+                    }
+                ]
+            },
+            {
+                id: "57e0e0879f5160b8048b4571",
+                price: "8",
+                name: "新居开荒",
+                imgSrc: 'http://odulvej8l.bkt.clouddn.com/5%E6%96%B0%E5%B1%85%E5%BC%80%E8%8D%92%E9%A6%96%E5%9B%BE.jpg',
+                desc: [{content: "http://odqeoyzxd.bkt.clouddn.com/image/image_kh.jpg"}, {content: '新居开荒'}],
+                status: 1,
+                is_extra: 0,
+                order: 0,
+                type: "6",
+                type_str: "新居开荒",
+                action_user: "",
+                action_time: "",
+                action_log: "",
+                pics: [
+                    {
+                        url: "http://odulvej8l.bkt.clouddn.com/5%E6%96%B0%E5%B1%85%E5%BC%80%E8%8D%92%E9%A6%96%E5%9B%BE.jpg",
+                        width: 750,
+                        height: 585
+                    },
+                    {
+                        url: "http://odulvej8l.bkt.clouddn.com/%E6%96%B0%E5%B1%85%E5%BC%80%E8%8D%92_1_01%28720x1209%29.jpg",
+                        width: 720,
+                        height: 1209
+                    },
+                    {
+                        url: "http://odulvej8l.bkt.clouddn.com/%E6%96%B0%E5%B1%85%E5%BC%80%E8%8D%92_1_02%28720x1041%29.jpg",
+                        width: 720,
+                        height: 1041
+                    },
+                    {
+                        url: "http://odulvej8l.bkt.clouddn.com/%E6%96%B0%E5%B1%85%E5%BC%80%E8%8D%92_1_03%28720x1264%29.jpg",
+                        width: 720,
+                        height: 1264
+                    },
+                    {
+                        url: "http://odulvej8l.bkt.clouddn.com/%E6%96%B0%E5%B1%85%E5%BC%80%E8%8D%92_1_04%28720x1295%29.jpg",
+                        width: 720,
+                        height: 1295
+                    },
+                    {
+                        url: "http://odulvej8l.bkt.clouddn.com/%E6%96%B0%E5%B1%85%E5%BC%80%E8%8D%92_1_05%28720x685%29.jpg",
+                        width: 720,
+                        height: 685
+                    },
+                    {
+                        url: "http://odulvej8l.bkt.clouddn.com/%E6%96%B0%E5%B1%85%E5%BC%80%E8%8D%92_1_06%28720x717%29.jpg",
+                        width: 720,
+                        height: 717
+                    },
+                    {
+                        url: "http://odulvej8l.bkt.clouddn.com/%E6%96%B0%E5%B1%85%E5%BC%80%E8%8D%92_1_07%28720x685%29.jpg",
+                        width: 720,
+                        height: 685
+                    },
+                    {
+                        url: "http://odulvej8l.bkt.clouddn.com/%E6%96%B0%E5%B1%85%E5%BC%80%E8%8D%92_1_08%28720x1083%29.jpg",
+                        width: 720,
+                        height: 1083
+                    },
+                    {
+                        url: "http://odulvej8l.bkt.clouddn.com/%E6%96%B0%E5%B1%85%E5%BC%80%E8%8D%92_1_09%28720x915%29.jpg",
+                        width: 720,
+                        height: 915
+                    },
+                    {
+                        url: "http://odulvej8l.bkt.clouddn.com/%E6%96%B0%E5%B1%85%E5%BC%80%E8%8D%92_1_10%28720x785%29.jpg",
+                        width: 720,
+                        height: 785
+                    },
+                    {
+                        url: "http://odulvej8l.bkt.clouddn.com/%E6%96%B0%E5%B1%85%E5%BC%80%E8%8D%92_1_11%28720x958%29.jpg",
+                        width: 720,
+                        height: 958
+                    }
+                ]
+            },
+            {
+                id: "57fb4a909f5160b2048b4a0e",
+                price: "10",
+                name: "擦玻璃",
+                imgSrc: 'http://odulvej8l.bkt.clouddn.com/6%E6%93%A6%E7%8E%BB%E7%92%83%E9%A6%96%E5%9B%BE2.jpg',
+                desc: [{content: "http://odqeoyzxd.bkt.clouddn.com/image/image_kh.jpg"}, {content: '擦玻璃'}],
+                status: 1,
+                is_extra: 0,
+                order: 0,
+                type: "10",
+                type_str: "擦玻璃",
+                action_user: "",
+                action_time: "",
+                action_log: "",
+                pics: [
+                    {
+                        url: "http://odulvej8l.bkt.clouddn.com/6%E6%93%A6%E7%8E%BB%E7%92%83%E9%A6%96%E5%9B%BE2.jpg",
+                        width: 720,
+                        height: 560
+                    },
+                    {
+                        url: "http://odulvej8l.bkt.clouddn.com/%E6%93%A6%E7%8E%BB%E7%92%83%E8%AF%A6%E6%83%85%E9%A1%B5_02%28720+587%29.jpg",
+                        width: 720,
+                        height: 587
+                    },
+                    {
+                        url: "http://odulvej8l.bkt.clouddn.com/%E6%93%A6%E7%8E%BB%E7%92%83%E8%AF%A6%E6%83%85%E9%A1%B5_03%28720+600%29.jpg",
+                        width: 720,
+                        height: 600
+                    },
+                    {
+                        url: "http://odulvej8l.bkt.clouddn.com/%E6%93%A6%E7%8E%BB%E7%92%83%E8%AF%A6%E6%83%85%E9%A1%B5_04%28720+1061%29.jpg",
+                        width: 720,
+                        height: 1061
+                    },
+                    {
+                        url: "http://odulvej8l.bkt.clouddn.com/%E6%93%A6%E7%8E%BB%E7%92%83%E8%AF%A6%E6%83%85%E9%A1%B5_05%28720+906%29.jpg",
+                        width: 720,
+                        height: 906
+                    },
+                    {
+                        url: "http://odulvej8l.bkt.clouddn.com/%E6%93%A6%E7%8E%BB%E7%92%83%E8%AF%A6%E6%83%85%E9%A1%B5_06%28720+820%29.jpg",
+                        width: 720,
+                        height: 802
+                    },
+                    {
+                        url: "http://odulvej8l.bkt.clouddn.com/%E6%93%A6%E7%8E%BB%E7%92%83%E8%AF%A6%E6%83%85%E9%A1%B5_07%28720+1071%29.jpg",
+                        width: 720,
+                        height: 1071
+                    },
+                    {
+                        url: "http://odulvej8l.bkt.clouddn.com/%E6%93%A6%E7%8E%BB%E7%92%83%E8%AF%A6%E6%83%85%E9%A1%B5_08%28720+1204%29.jpg",
+                        width: 720,
+                        height: 1204
+                    },
+                    {
+                        url: "http://odulvej8l.bkt.clouddn.com/%E6%93%A6%E7%8E%BB%E7%92%83%E8%AF%A6%E6%83%85%E9%A1%B5_09%28720+720%29.jpg",
+                        width: 720,
+                        height: 720
+                    },
+                    {
+                        url: "http://odulvej8l.bkt.clouddn.com/%E6%93%A6%E7%8E%BB%E7%92%83%E8%AF%A6%E6%83%85%E9%A1%B5_10%28720+678%29.jpg",
+                        width: 720,
+                        height: 678
+                    },
+                    {
+                        url: "http://odulvej8l.bkt.clouddn.com/%E6%93%A6%E7%8E%BB%E7%92%83%E8%AF%A6%E6%83%85%E9%A1%B5_11%28720+1098%29.jpg",
+                        width: 720,
+                        height: 1098
+                    },
+                    {
+                        url: "http://odulvej8l.bkt.clouddn.com/%E6%93%A6%E7%8E%BB%E7%92%83%E8%AF%A6%E6%83%85%E9%A1%B5_12%28720+899%29.jpg",
+                        width: 720,
+                        height: 899
+                    },
+                    {
+                        url: "http://odulvej8l.bkt.clouddn.com/%E6%93%A6%E7%8E%BB%E7%92%83%E8%AF%A6%E6%83%85%E9%A1%B5_13%28720+1702%29.jpg",
+                        width: 720,
+                        height: 1702
+                    }
+                ]
+            },
+            {
+                id: "57e3a5a49f5160c9048b457c",
+                price: "",
+                name: "母婴房清洁",
+                imgSrc: 'http://odulvej8l.bkt.clouddn.com/7%E6%AF%8D%E5%A9%B4%E6%88%BF%E6%B8%85%E6%B4%81%E9%A6%96%E5%9B%BE.jpg',
+                desc: [{content: "http://7oxep6.com2.z0.glb.clouddn.com/0e287e871c3831474536840941.jpg"}, {content: '母婴房清洁'}],
+                status: 1,
+                is_extra: 0,
+                order: 200,
+                type: "8",
+                type_str: "母婴房清洁",
+                extra: [
+                    {
+                        type: "整间日常清洁",
+                        price: "388"
+                    },
+                    {
+                        type: "整间深度清洁",
+                        price: "888"
+                    }
+                ],
+                action_user: "",
+                action_time: "",
+                action_log: "",
+                pics: [
+                    {
+                        url: "http://odulvej8l.bkt.clouddn.com/7%E6%AF%8D%E5%A9%B4%E6%88%BF%E6%B8%85%E6%B4%81%E9%A6%96%E5%9B%BE.jpg",
+                        width: 750,
+                        height: 585
+                    },
+                    {
+                        url: "http://odulvej8l.bkt.clouddn.com/%E6%AF%8D%E5%A9%B4%E6%88%BF_1%28730x522%29.jpg",
+                        width: 730,
+                        height: 522
+                    },
+                    {
+                        url: "http://odulvej8l.bkt.clouddn.com/%E6%AF%8D%E5%A9%B4%E6%88%BF_2%28730x791%29.jpg",
+                        width: 730,
+                        height: 791
+                    },
+                    {
+                        url: "http://odulvej8l.bkt.clouddn.com/%E6%AF%8D%E5%A9%B4%E6%88%BF_3%28730x823%29.jpg",
+                        width: 730,
+                        height: 823
+                    },
+                    {
+                        url: "http://odulvej8l.bkt.clouddn.com/%E6%AF%8D%E5%A9%B4%E6%88%BF_4%28730x808%29.jpg",
+                        width: 730,
+                        height: 808
+                    },
+                    {
+                        url: "http://odulvej8l.bkt.clouddn.com/%E6%AF%8D%E5%A9%B4%E6%88%BF_5%28730x1196%29.jpg",
+                        width: 730,
+                        height: 1196
+                    },
+                    {
+                        url: "http://odulvej8l.bkt.clouddn.com/%E6%AF%8D%E5%A9%B4%E6%88%BF_6%28730x1111%29.jpg",
+                        width: 730,
+                        height: 1111
+                    }
+                ]
+            },
+            {
+                id: "58085f4b9f5160a9048b490e",
+                name: "租房大扫除",
+                imgSrc: 'http://odulvej8l.bkt.clouddn.com/8%E7%A7%9F%E6%88%BF%E5%A4%A7%E6%89%AB%E9%99%A4%E9%A6%96%E5%9B%BE%E6%94%B9.jpg',
+                desc: [{content: "http://odqeoyzxd.bkt.clouddn.com/image/image_jdqx.jpg"}, {content: "家电清洗"}],
+                status: 1,
+                is_extra: 0,
+                order: 0,
+                type: "9",
+                type_str: "租房清洁",
+                extra: [
+                    {
+                        type: "客厅清洁",
+                        price: "100"
+                    },
+                    {
+                        type: "厨房清洁",
+                        price: "150"
+                    },
+                    {
+                        type: "卧室清洁",
+                        price: "100"
+                    },
+                    {
+                        type: "卫生间清洁",
+                        price: "150"
+                    }
+                ],
+                action_user: "",
+                action_time: "",
+                action_log: "",
+                pics: [
+                    {
+                        url: "http://odulvej8l.bkt.clouddn.com/8%E7%A7%9F%E6%88%BF%E5%A4%A7%E6%89%AB%E9%99%A4%E9%A6%96%E5%9B%BE%E6%94%B9.jpg",
+                        width: 720,
+                        height: 562
+                    },
+                    {
+                        url: "http://odulvej8l.bkt.clouddn.com/%E7%A7%9F%E6%88%BF%E5%A4%A7%E6%89%AB%E9%99%A4%E8%AF%A6%E6%83%85%E9%A1%B5_02%28720x404%29.jpg",
+                        width: 720,
+                        height: 404
+                    },
+                    {
+                        url: "http://odulvej8l.bkt.clouddn.com/%E7%A7%9F%E6%88%BF%E5%A4%A7%E6%89%AB%E9%99%A4%E8%AF%A6%E6%83%85%E9%A1%B5_03%28720x783%29.jpg",
+                        width: 720,
+                        height: 783
+                    },
+                    {
+                        url: "http://odulvej8l.bkt.clouddn.com/%E7%A7%9F%E6%88%BF%E5%A4%A7%E6%89%AB%E9%99%A4%E8%AF%A6%E6%83%85%E9%A1%B5_04%28720x1048%29.jpg",
+                        width: 720,
+                        height: 1048
+                    },
+                    {
+                        url: "http://odulvej8l.bkt.clouddn.com/%E7%A7%9F%E6%88%BF%E5%A4%A7%E6%89%AB%E9%99%A4%E8%AF%A6%E6%83%85%E9%A1%B5_05%28720x915%29.jpg",
+                        width: 720,
+                        height: 915
+                    },
+                    {
+                        url: "http://odulvej8l.bkt.clouddn.com/%E7%A7%9F%E6%88%BF%E5%A4%A7%E6%89%AB%E9%99%A4%E8%AF%A6%E6%83%85%E9%A1%B5_06%28720x758%29.jpg",
+                        width: 720,
+                        height: 758
+                    },
+                    {
+                        url: "http://odulvej8l.bkt.clouddn.com/%E7%A7%9F%E6%88%BF%E5%A4%A7%E6%89%AB%E9%99%A4%E8%AF%A6%E6%83%85%E9%A1%B5_07%28720x1129%29.jpg",
+                        width: 720,
+                        height: 1129
+                    },
+                    {
+                        url: "http://odulvej8l.bkt.clouddn.com/%E7%A7%9F%E6%88%BF%E5%A4%A7%E6%89%AB%E9%99%A4%E8%AF%A6%E6%83%85%E9%A1%B5_08%28720x1213%29.jpg",
+                        width: 720,
+                        height: 1213
+                    },
+                    {
+                        url: "http://odulvej8l.bkt.clouddn.com/%E7%A7%9F%E6%88%BF%E5%A4%A7%E6%89%AB%E9%99%A4%E8%AF%A6%E6%83%85%E9%A1%B5_09%28720x657%29.jpg",
+                        width: 720,
+                        height: 657
+                    },
+                    {
+                        url: "http://odulvej8l.bkt.clouddn.com/%E7%A7%9F%E6%88%BF%E5%A4%A7%E6%89%AB%E9%99%A4%E8%AF%A6%E6%83%85%E9%A1%B5_10%28720x720%29.jpg",
+                        width: 720,
+                        height: 720
+                    },
+                    {
+                        url: "http://odulvej8l.bkt.clouddn.com/%E7%A7%9F%E6%88%BF%E5%A4%A7%E6%89%AB%E9%99%A4%E8%AF%A6%E6%83%85%E9%A1%B5_11%28720x1104%29.jpg",
+                        width: 720,
+                        height: 1104
+                    },
+                    {
+                        url: "http://odulvej8l.bkt.clouddn.com/%E7%A7%9F%E6%88%BF%E5%A4%A7%E6%89%AB%E9%99%A4%E8%AF%A6%E6%83%85%E9%A1%B5_12%28720x951%29.jpg",
+                        width: 720,
+                        height: 951
+                    },
+                    {
+                        url: "http://odulvej8l.bkt.clouddn.com/%E7%A7%9F%E6%88%BF%E5%A4%A7%E6%89%AB%E9%99%A4%E8%AF%A6%E6%83%85%E9%A1%B5_13%28720x812%29.jpg",
+                        width: 720,
+                        height: 812
+                    },
+                    {
+                        url: "http://odulvej8l.bkt.clouddn.com/%E7%A7%9F%E6%88%BF%E5%A4%A7%E6%89%AB%E9%99%A4%E8%AF%A6%E6%83%85%E9%A1%B5_14%28720x850%29.jpg",
+                        width: 720,
+                        height: 850
+                    }
+                ]
+            },
+            {
+                id: "58324b7e9f5160a4048b5758",//test //583247cca84ea01d428b46a1 master//  58324b7e9f5160a4048b5758
+                price: "48",
+                name: "首单日常保洁2小时体验",//双11虹口区日常保洁特价体验//首单日常保洁2小时体验
+                imgSrc: 'http://odulvej8l.bkt.clouddn.com/1%E6%97%A5%E5%B8%B8%E6%B8%85%E6%B4%81%E9%A6%96%E5%9B%BE.jpg',
+                desc: [{content: "http://odqeoyzxd.bkt.clouddn.com/image/image_rc.jpg"}, {content: "日常清洁"}],
+                status: 1,
+                is_extra: 0,
+                order: 0,
+                type: "11",
+                type_str: "日常保洁2小时体验",
+                action_user: "",
+                action_time: "",
+                action_log: "",
+                pics: [
+                    {
+                        url: "http://odulvej8l.bkt.clouddn.com/1%E6%97%A5%E5%B8%B8%E6%B8%85%E6%B4%81%E9%A6%96%E5%9B%BE.jpg",
+                        width: 537,
+                        height: 537
+                    },
+                    {
+                        url: "http://odulvej8l.bkt.clouddn.com/%E6%97%A5%E5%B8%B8%E6%B8%85%E6%B4%81_1%28720x1165%29.jpg",
+                        width: 720,
+                        height: 1165
+                    },
+                    {
+                        url: "http://odulvej8l.bkt.clouddn.com/%E6%97%A5%E5%B8%B8%E6%B8%85%E6%B4%81_2%28720x1129%29.jpg",
+                        width: 720,
+                        height: 1129
+                    },
+                    {
+                        url: "http://odulvej8l.bkt.clouddn.com/%E6%97%A5%E5%B8%B8%E6%B8%85%E6%B4%81_3%28720x1127%29.jpg",
+                        width: 720,
+                        height: 1127
+                    },
+                    {
+                        url: "http://odulvej8l.bkt.clouddn.com/%E6%97%A5%E5%B8%B8%E6%B8%85%E6%B4%81_4%28720x1178%29.jpg",
+                        width: 720,
+                        height: 1178
+                    },
+                    {
+                        url: "http://odulvej8l.bkt.clouddn.com/%E6%97%A5%E5%B8%B8%E6%B8%85%E6%B4%81_5%28720x1246%29.jpg",
+                        width: 720,
+                        height: 1246
+                    },
+                    {
+                        url: "http://odulvej8l.bkt.clouddn.com/%E6%97%A5%E5%B8%B8%E6%B8%85%E6%B4%81_6%28720x520%29.jpg",
+                        width: 720,
+                        height: 520
+                    },
+                    {
+                        url: "http://odulvej8l.bkt.clouddn.com/%E6%97%A5%E5%B8%B8%E6%B8%85%E6%B4%81_7%28720x644%29.jpg",
+                        width: 720,
+                        height: 644
+                    },
+                    {
+                        url: "http://odulvej8l.bkt.clouddn.com/%E6%97%A5%E5%B8%B8%E6%B8%85%E6%B4%81_8%28720x1257%29.jpg",
+                        width: 720,
+                        height: 644
+                    }
+                ]
+            },
+	          {
+		        id: "5835418aa84ea0a7748b4587",//5835418aa84ea0a7748b4587
+		        name: "小时工单次",
+		        imgSrc: 'http://odulvej8l.bkt.clouddn.com/8%E7%A7%9F%E6%88%BF%E5%A4%A7%E6%89%AB%E9%99%A4%E9%A6%96%E5%9B%BE%E6%94%B9.jpg',
+		        desc: [{content: "http://odqeoyzxd.bkt.clouddn.com/image/image_jdqx.jpg"}, {content: "家电清洗"}],
+		        status: 1,
+		        is_extra: 0,
+		        order: 0,
+		        type: "12",
+		        type_str: "长期订",
+		        extra: [
+			        {
+				        type: "2小时/人",
+				        price: "90"
+			        },
+			        {
+				        type: "3小时/人",
+				        price: "135"
+			        }
+		        ],
+		        action_user: "",
+		        action_time: "",
+		        action_log: "",
+		        pics: [
+			        {
+				        url: "http://odulvej8l.bkt.clouddn.com/8%E7%A7%9F%E6%88%BF%E5%A4%A7%E6%89%AB%E9%99%A4%E9%A6%96%E5%9B%BE%E6%94%B9.jpg",
+				        width: 720,
+				        height: 562
+			        },
+			        {
+				        url: "http://odulvej8l.bkt.clouddn.com/%E7%A7%9F%E6%88%BF%E5%A4%A7%E6%89%AB%E9%99%A4%E8%AF%A6%E6%83%85%E9%A1%B5_02%28720x404%29.jpg",
+				        width: 720,
+				        height: 404
+			        },
+			        {
+				        url: "http://odulvej8l.bkt.clouddn.com/%E7%A7%9F%E6%88%BF%E5%A4%A7%E6%89%AB%E9%99%A4%E8%AF%A6%E6%83%85%E9%A1%B5_03%28720x783%29.jpg",
+				        width: 720,
+				        height: 783
+			        },
+			        {
+				        url: "http://odulvej8l.bkt.clouddn.com/%E7%A7%9F%E6%88%BF%E5%A4%A7%E6%89%AB%E9%99%A4%E8%AF%A6%E6%83%85%E9%A1%B5_04%28720x1048%29.jpg",
+				        width: 720,
+				        height: 1048
+			        },
+			        {
+				        url: "http://odulvej8l.bkt.clouddn.com/%E7%A7%9F%E6%88%BF%E5%A4%A7%E6%89%AB%E9%99%A4%E8%AF%A6%E6%83%85%E9%A1%B5_05%28720x915%29.jpg",
+				        width: 720,
+				        height: 915
+			        },
+			        {
+				        url: "http://odulvej8l.bkt.clouddn.com/%E7%A7%9F%E6%88%BF%E5%A4%A7%E6%89%AB%E9%99%A4%E8%AF%A6%E6%83%85%E9%A1%B5_06%28720x758%29.jpg",
+				        width: 720,
+				        height: 758
+			        },
+			        {
+				        url: "http://odulvej8l.bkt.clouddn.com/%E7%A7%9F%E6%88%BF%E5%A4%A7%E6%89%AB%E9%99%A4%E8%AF%A6%E6%83%85%E9%A1%B5_07%28720x1129%29.jpg",
+				        width: 720,
+				        height: 1129
+			        },
+			        {
+				        url: "http://odulvej8l.bkt.clouddn.com/%E7%A7%9F%E6%88%BF%E5%A4%A7%E6%89%AB%E9%99%A4%E8%AF%A6%E6%83%85%E9%A1%B5_08%28720x1213%29.jpg",
+				        width: 720,
+				        height: 1213
+			        },
+			        {
+				        url: "http://odulvej8l.bkt.clouddn.com/%E7%A7%9F%E6%88%BF%E5%A4%A7%E6%89%AB%E9%99%A4%E8%AF%A6%E6%83%85%E9%A1%B5_09%28720x657%29.jpg",
+				        width: 720,
+				        height: 657
+			        },
+			        {
+				        url: "http://odulvej8l.bkt.clouddn.com/%E7%A7%9F%E6%88%BF%E5%A4%A7%E6%89%AB%E9%99%A4%E8%AF%A6%E6%83%85%E9%A1%B5_10%28720x720%29.jpg",
+				        width: 720,
+				        height: 720
+			        },
+			        {
+				        url: "http://odulvej8l.bkt.clouddn.com/%E7%A7%9F%E6%88%BF%E5%A4%A7%E6%89%AB%E9%99%A4%E8%AF%A6%E6%83%85%E9%A1%B5_11%28720x1104%29.jpg",
+				        width: 720,
+				        height: 1104
+			        },
+			        {
+				        url: "http://odulvej8l.bkt.clouddn.com/%E7%A7%9F%E6%88%BF%E5%A4%A7%E6%89%AB%E9%99%A4%E8%AF%A6%E6%83%85%E9%A1%B5_12%28720x951%29.jpg",
+				        width: 720,
+				        height: 951
+			        },
+			        {
+				        url: "http://odulvej8l.bkt.clouddn.com/%E7%A7%9F%E6%88%BF%E5%A4%A7%E6%89%AB%E9%99%A4%E8%AF%A6%E6%83%85%E9%A1%B5_13%28720x812%29.jpg",
+				        width: 720,
+				        height: 812
+			        },
+			        {
+				        url: "http://odulvej8l.bkt.clouddn.com/%E7%A7%9F%E6%88%BF%E5%A4%A7%E6%89%AB%E9%99%A4%E8%AF%A6%E6%83%85%E9%A1%B5_14%28720x850%29.jpg",
+				        width: 720,
+				        height: 850
+			        }
+		        ]
+	        },
+	          {
+		        id: "5835423fa84ea0ac7a8b4568",
+		        name: "小时工多次",
+		        imgSrc: 'http://odulvej8l.bkt.clouddn.com/8%E7%A7%9F%E6%88%BF%E5%A4%A7%E6%89%AB%E9%99%A4%E9%A6%96%E5%9B%BE%E6%94%B9.jpg',
+		        desc: [{content: "http://odqeoyzxd.bkt.clouddn.com/image/image_jdqx.jpg"}, {content: "家电清洗"}],
+		        status: 1,
+		        is_extra: 0,
+		        order: 0,
+		        type: "12",
+		        type_str: "长期订",
+		        extra: [
+			        {
+				        type: "3张(2小时/人)",
+				        price: "32"
+			        },
+			        {
+				        type: "3张(3小时/人)",
+				        price: "33"
+			        },
+			        {
+				        type: "6张(2小时/人)",
+				        price: "62"
+			        },
+			        {
+				        type: "6张(3小时/人)",
+				        price: "63"
+			        }
+		        ],
+		        action_user: "",
+		        action_time: "",
+		        action_log: "",
+		        pics: [
+			        {
+				        url: "http://odulvej8l.bkt.clouddn.com/8%E7%A7%9F%E6%88%BF%E5%A4%A7%E6%89%AB%E9%99%A4%E9%A6%96%E5%9B%BE%E6%94%B9.jpg",
+				        width: 720,
+				        height: 562
+			        },
+			        {
+				        url: "http://odulvej8l.bkt.clouddn.com/%E7%A7%9F%E6%88%BF%E5%A4%A7%E6%89%AB%E9%99%A4%E8%AF%A6%E6%83%85%E9%A1%B5_02%28720x404%29.jpg",
+				        width: 720,
+				        height: 404
+			        },
+			        {
+				        url: "http://odulvej8l.bkt.clouddn.com/%E7%A7%9F%E6%88%BF%E5%A4%A7%E6%89%AB%E9%99%A4%E8%AF%A6%E6%83%85%E9%A1%B5_03%28720x783%29.jpg",
+				        width: 720,
+				        height: 783
+			        },
+			        {
+				        url: "http://odulvej8l.bkt.clouddn.com/%E7%A7%9F%E6%88%BF%E5%A4%A7%E6%89%AB%E9%99%A4%E8%AF%A6%E6%83%85%E9%A1%B5_04%28720x1048%29.jpg",
+				        width: 720,
+				        height: 1048
+			        },
+			        {
+				        url: "http://odulvej8l.bkt.clouddn.com/%E7%A7%9F%E6%88%BF%E5%A4%A7%E6%89%AB%E9%99%A4%E8%AF%A6%E6%83%85%E9%A1%B5_05%28720x915%29.jpg",
+				        width: 720,
+				        height: 915
+			        },
+			        {
+				        url: "http://odulvej8l.bkt.clouddn.com/%E7%A7%9F%E6%88%BF%E5%A4%A7%E6%89%AB%E9%99%A4%E8%AF%A6%E6%83%85%E9%A1%B5_06%28720x758%29.jpg",
+				        width: 720,
+				        height: 758
+			        },
+			        {
+				        url: "http://odulvej8l.bkt.clouddn.com/%E7%A7%9F%E6%88%BF%E5%A4%A7%E6%89%AB%E9%99%A4%E8%AF%A6%E6%83%85%E9%A1%B5_07%28720x1129%29.jpg",
+				        width: 720,
+				        height: 1129
+			        },
+			        {
+				        url: "http://odulvej8l.bkt.clouddn.com/%E7%A7%9F%E6%88%BF%E5%A4%A7%E6%89%AB%E9%99%A4%E8%AF%A6%E6%83%85%E9%A1%B5_08%28720x1213%29.jpg",
+				        width: 720,
+				        height: 1213
+			        },
+			        {
+				        url: "http://odulvej8l.bkt.clouddn.com/%E7%A7%9F%E6%88%BF%E5%A4%A7%E6%89%AB%E9%99%A4%E8%AF%A6%E6%83%85%E9%A1%B5_09%28720x657%29.jpg",
+				        width: 720,
+				        height: 657
+			        },
+			        {
+				        url: "http://odulvej8l.bkt.clouddn.com/%E7%A7%9F%E6%88%BF%E5%A4%A7%E6%89%AB%E9%99%A4%E8%AF%A6%E6%83%85%E9%A1%B5_10%28720x720%29.jpg",
+				        width: 720,
+				        height: 720
+			        },
+			        {
+				        url: "http://odulvej8l.bkt.clouddn.com/%E7%A7%9F%E6%88%BF%E5%A4%A7%E6%89%AB%E9%99%A4%E8%AF%A6%E6%83%85%E9%A1%B5_11%28720x1104%29.jpg",
+				        width: 720,
+				        height: 1104
+			        },
+			        {
+				        url: "http://odulvej8l.bkt.clouddn.com/%E7%A7%9F%E6%88%BF%E5%A4%A7%E6%89%AB%E9%99%A4%E8%AF%A6%E6%83%85%E9%A1%B5_12%28720x951%29.jpg",
+				        width: 720,
+				        height: 951
+			        },
+			        {
+				        url: "http://odulvej8l.bkt.clouddn.com/%E7%A7%9F%E6%88%BF%E5%A4%A7%E6%89%AB%E9%99%A4%E8%AF%A6%E6%83%85%E9%A1%B5_13%28720x812%29.jpg",
+				        width: 720,
+				        height: 812
+			        },
+			        {
+				        url: "http://odulvej8l.bkt.clouddn.com/%E7%A7%9F%E6%88%BF%E5%A4%A7%E6%89%AB%E9%99%A4%E8%AF%A6%E6%83%85%E9%A1%B5_14%28720x850%29.jpg",
+				        width: 720,
+				        height: 850
+			        }
+		        ]
+	        }
+        ];
+        //列出所有的产品
+        Product.prototype.getListAll = function (userID, callback) {
+            var that = this;
+            api.getProductList({
+                user_id: userID,
+                // type: type
+            }, function (res) {
+                if (res.success) {
+                    that.productList = {};
+                    var petDic = {};
+                    var productDatas = res['data']['products'];
+                    var extraroducts = res['data']['extra_products'];
+                    // that.extraService = extraroducts;
+
+                    for (var i in that.productGroup) {
+                        that.productGroup[i] = [];
+                    }
+
+                    for (var i in that.extraProductGroup) {
+                        that.extraProductGroup[i] = [];
+                    }
+
+                    for (var i = 0, len = productDatas.length; i < len; i++) {
+                        var eachProduct = productDatas[i];
+                        that.productGroup[eachProduct['type']].push(eachProduct);
+                        var petIDs = [];
+
+
+                        that.productDic[eachProduct.id] = {//产品中心
+                            petIDs: petIDs,//宠物ID
+                            maxWeight: eachProduct.max_weight,//产品最大
+                            minWeight: eachProduct.min_weight,//产品最小
+                            // price: parseFloat(eachProduct.price).toFixed(2)
+                            price: parseFloat(eachProduct.price)//解析产品价格
+                            // 价格不要加小数点后两位
+                        };
+                    }
+
+
+                    // for (var petID in petDic) {
+                    //   that.productGroup[eachProduct['type']].push(petDic[petID]);
+                    // }
+                }
+                if (typeof (callback) == 'function') {
+                    callback(res);
+                }
+            });
+        }
+    };
+
+    //列出所有的产品
+    Product.prototype.getListAll = function (userID) {
+        api.getProductList({
+            user_id: userID
+        });
+    };
+
+    Product.prototype = new base();
+
+    return new Product();
 });

+ 1 - 1
www/webapp/o2o/js/model/user.js

@@ -8,7 +8,7 @@ define(['base', '$', 'native', 'api', 'order', 'config', 'address'], function (b
 		}
 		User.instance = this;
 		this.storagePrefix = 'user_';
-		this.id = '57e38f1b9f5160ac048b457d'; //57e22bb59f5160c2048b456c//57e38f1b9f5160ac048b457d
+		this.id = ''; //57e22bb59f5160c2048b456c//57e38f1b9f5160ac048b457d
 		this.lastID = this.getCache('lastID', null, '');
 		this.name = '';
 		this.avatar='';

+ 2 - 2
www/webapp/o2o/js/page/activities/day.js

@@ -43,9 +43,9 @@ define(['$', 'template', 'IScroll', 'recharge', 'native', 'config', 'user', 'pro
 				event.preventDefault();
 				var type = parseInt($(this).attr('data-product-type'));
 				$doc.trigger('spa:navigate', {
-					hash: 'product',
+					hash: 'placeOrder',
 					pushData: {
-						product: product.allList[type-1],
+						product: product.allList[type - 1],
 						needReset: true,
 						backHash:'activity-day'
 					}

+ 16 - 32
www/webapp/o2o/js/page/address/addressDetail.js

@@ -1,6 +1,7 @@
 define(['template', 'native', 'config', 'address', 'api', 'user'], function (template, native, config, address, api, user) {
 	function back(event) {
 		event.preventDefault();
+
 		$(document).trigger('spa:navigate', {
 			hash: 'addressList'
 		});
@@ -28,15 +29,14 @@ define(['template', 'native', 'config', 'address', 'api', 'user'], function (tem
 				back.call(this, event);
 			});
 
-			/*删除地址*/
-			$.newTouch('.btn-delete', function () {
+			$.newTouch('.btn-delete', function() {
 				var addressID = $(this).data('id');
-				address.deleteAddress(user.id, addressID, function (res) {
+				address.deleteAddress(user.id, addressID, function(res){
 					if (res.success) {
 						address.getList({
 							request_from: 'weixin',
 							user_id: user.id
-						}, function (res) {
+						}, function(res) {
 							if (res.success) {
 								$doc.trigger('spa:navigate', {
 									hash: 'addressList',
@@ -44,8 +44,7 @@ define(['template', 'native', 'config', 'address', 'api', 'user'], function (tem
 										needReload: true
 									}
 								});
-							}
-							;
+							};
 						})
 					} else {
 						$doc.trigger('spa:openpanel', ['simpleAlert', {
@@ -65,7 +64,7 @@ define(['template', 'native', 'config', 'address', 'api', 'user'], function (tem
 						needReload: true,
 						searchText: searchText,
 						searchProvince: searchProvince,
-						backHash: 'addressDetail'
+            backHash: 'addressDetail'
 					},
 					callback: {
 						onSelect: function (name, place, address_position, address_detail) {
@@ -81,13 +80,12 @@ define(['template', 'native', 'config', 'address', 'api', 'user'], function (tem
 			//确认地址
 			$.newTouch('.btn-save', function (event) {
 				event.preventDefault();
-
-
 				// 设置默认地址
 				var addressInfo = address['list'][cachePageData.addressIndex];
 				var name = $('.address-name', $view).val(),
 					mobile = $('.address-mobile', $view).val(),
 					detail = $('.address-detail', $view).val();
+
 				if (name == '') {
 					$doc.trigger('spa:openpanel', ['simpleAlert', {
 						message: '请输入您的名字'
@@ -113,11 +111,12 @@ define(['template', 'native', 'config', 'address', 'api', 'user'], function (tem
 					address_position = JSON.stringify(cachePageData.address_position);
 				} else {
 					var addressDetailTmp = addressInfo.address;
-					addressDetailTmp.detail = detail;
+          addressDetailTmp.detail = detail;
 					var addressStr = JSON.stringify(addressDetailTmp);
 					var address_position = addressInfo.position;
 					address_position = JSON.stringify(address_position);
 				}
+
 				var param = {
 					request_from: 'weixin',
 					name: name,
@@ -127,16 +126,13 @@ define(['template', 'native', 'config', 'address', 'api', 'user'], function (tem
 					address: addressStr,
 					address_id: cachePageData.addressID
 				};
-				address.editAddress(param, function (res) {
+				address.editAddress( param, function(res) {
 					$doc.trigger('spa:closeloader');
 					if (res.success) {
-						console.log(res);
-						console.log(cachePageData.address_detail);
 						$doc.trigger('spa:navigate', {
 							hash: 'addressList',
 							pushData: {
-								dontNeedReload: true,
-								address:address
+								needReload: true
 							}
 						});
 					} else {
@@ -147,29 +143,17 @@ define(['template', 'native', 'config', 'address', 'api', 'user'], function (tem
 				})
 
 				/*if (cachePageData.callback && $.isFunction(cachePageData.callback.onSelect)) {
-				 cachePageData.callback.onSelect(cachePageData.addressID);
-				 }*/
+					cachePageData.callback.onSelect(cachePageData.addressID);
+				}*/
 
 			}, $view);
 
-
-			/*$.newTouch('.btn-save', function (event) {
-			 event.preventDefault();
-			 $doc.trigger('spa:navigate', {
-			 hash: 'addressList',
-			 pushData: {
-			 needReload: true
-			 }
-			 });
-			 }, $view);*/
-
 			dtd.resolve();
 		},
-		beforeopen: function (pageData, dtd) {
+		beforeopen: function(pageData, dtd) {
 			var $view = this;
 			var $doc = $(document);
 			var pushData = pageData.pushData;
-			console.log(address);
 			cachePageData.needReload = pushData.needReload;
 			if (cachePageData.needReload) {
 				pushData.needReload = false;
@@ -193,9 +177,9 @@ define(['template', 'native', 'config', 'address', 'api', 'user'], function (tem
 					cachePageData.scroll = null;
 				}
 
-				setTimeout(function () {
+				setTimeout(function() {
 					cachePageData.scroll = new IScroll('#addressListScroll');
-				}, 500);
+				}, 10);
 			}
 
 			dtd.resolve();

+ 90 - 86
www/webapp/o2o/js/page/address/addressList.js

@@ -1,97 +1,101 @@
 define(['$', 'template', 'native', 'config', 'address', 'user', 'api', 'order'], function ($, template, native, config, address, user, api, order) {
 
-	/* 返回上一级 */
-	function back(event, backHash) {
-		event.preventDefault();
-		$(document).trigger('spa:navigate', {
-			hash: backHash
-		});
-	}
+    /* 返回上一级 */
+    function back(event, backHash) {
+        event.preventDefault();
+        $(document).trigger('spa:navigate', {
+            hash: backHash
+        });
+    }
 
-	return {
-		title: '壹管家上门服务',
-		body: '',
-		init: function (pageData, dtd) {
-			var $view = this;
-			var $doc = $(document);
+    return {
+        title: '壹管家上门服务',
+        body: '',
+        init: function (pageData, dtd) {
+            var $view = this;
+            var $doc = $(document);
 
-			/* 三个返回操作 */
-			$.newTouch('.back-button', function (event) {
-				back.call(this, event, pageData.pushData.backHash);
-			}, $view);
-			$view.on('tapBackButton', function (event) {
-				back.call(this, event, pageData.pushData.backHash);
-			});
-			$view.on('swipeRight', function (event) {
-				back.call(this, event, pageData.pushData.backHash);
-			});
+            /* 三个返回操作 */
+            $.newTouch('.back-button', function (event) {
+                back.call(this, event, pageData.pushData.backHash);
+            }, $view);
+            $view.on('tapBackButton', function (event) {
+                back.call(this, event, pageData.pushData.backHash);
+            });
+            $view.on('swipeRight', function (event) {
+                back.call(this, event, pageData.pushData.backHash);
+            });
 
-			/* 点击一条地址 */
-			$.newTouch('.address-item', function (event) {
-				var addressID = $(this).data('id'),
-					addressIndex = $(this).data('index');
-				/* 检查用户的地址是否在服务站内 */
-				api.checkAddress({
-					address_id: addressID,
-					user_id: user.id
-				}, function (res) {
-					if (res.success) {
-						/* 如果在,应该返回placeOrder页面,把数据更新的回调写在placeOrder */
-						$view.trigger('tapBackButton');
-						if (pageData.callback && $.isFunction(pageData.callback.onSelect)) {
-							pageData.callback.onSelect(address.list[addressIndex], res.data.station);
-						}
-					} else {
-						/* 如果不在,弹出一个对话框。 */
-						$doc.trigger('spa:openpanel', ['simpleAlert', {
-							message: res.message
-						}]);
-					}
-				});
-			}, $view);
+            /* 点击一条地址 */
+            $.newTouch('.address-item', function (event) {
+                var addressID = $(this).data('id'),
+                    addressIndex = $(this).data('index');
+	            console.log(addressID);
+                /* 检查用户的地址是否在服务站内 */
+                api.checkAddress({
+                    address_id: addressID,
+                    user_id: user.id
+                }, function (res) {
+                    if (res.success) {
+                        /* 如果在,应该返回placeOrder页面,把数据更新的回调写在placeOrder */
+                        $view.trigger('tapBackButton');
+                        if (pageData.callback && $.isFunction(pageData.callback.onSelect)) {
+                            pageData.callback.onSelect(address.list[addressIndex], res.data.station);
+                        }
+                    } else {
+                        /* 如果不在,弹出一个对话框。 */
+                        $doc.trigger('spa:openpanel', ['simpleAlert', {
+                            message: res.message
+                        }]);
+                    }
+                });
+            }, $view);
 
-			/* 点击添加地址,跳转到addressAdd页面。不用回调,返回时刷新,简单一点。 */
-			$.newTouch('.btn-add', function (event) {
-				$doc.trigger('spa:navigate', {
-					hash: 'addressAdd',
-					pushData: {
-						needReload: true
-					}
-				});
-			}, $view);
+            /* 点击添加地址,跳转到addressAdd页面。不用回调,返回时刷新,简单一点。 */
+            $.newTouch('.btn-add', function (event) {
+                $doc.trigger('spa:navigate', {
+                    hash: 'addressAdd',
+                    pushData: {
+                        needReload: true
+                    }
+                });
+            }, $view);
 
-			/* 点击修改地址,跳转到addressDetail页面 */
-			$.newTouch('.btn-edit', function (event) {
-				var addressID = $(this).data('id'),
-					addressIndex = $(this).data('index');
-				$doc.trigger('spa:navigate', {
-					hash: 'addressDetail',
-					pushData: {
-						addressIndex: addressIndex,
-						addressID: addressID,
-						needReload: true
-					}
-				});
-			}, $view);
+            /* 点击修改地址,跳转到addressDetail页面 */
+            $.newTouch('.btn-edit', function (event) {
+                var addressID = $(this).data('id'),
+                    addressIndex = $(this).data('index');
 
-			dtd.resolve();
-		},
-		beforeopen: function (pageData, dtd) {
-			if (!pageData.pushData.dontNeedReload) {
-				var $view = this;
-				var tpl = template('address/list/index', {
-					showNavBar: !config.isWX && !config.isChubao,
-					addText: '添加地址',
-					addresses: address.list
-				});
-				$('.spa-page-body', $view).html(tpl);
+                $doc.trigger('spa:navigate', {
+                    hash: 'addressDetail',
+                    pushData: {
+                        addressIndex: addressIndex,
+                        addressID: addressID,
+                        needReload: true
+                    },
+                    callback: {
+                        onEdit: function (addressID) {
 
-			}
+                        }
+                    }
+                });
+            }, $view);
 
-			dtd.resolve();
-		},
-		afteropen: function (pageData, dtd) {
-			dtd.resolve();
-		}
-	};
+            dtd.resolve();
+        },
+        beforeopen: function (pageData, dtd) {
+            var $view = this;
+            var tpl = template('address/list/index', {
+                showNavBar: !config.isWX && !config.isChubao,
+                addText: '添加地址',
+                addresses: address.list
+            });
+            $('.spa-page-body', $view).html(tpl);
+
+            dtd.resolve();
+        },
+        afteropen: function (pageData, dtd) {
+            dtd.resolve();
+        }
+    };
 })

+ 81 - 29
www/webapp/o2o/js/page/home.js

@@ -1,4 +1,4 @@
-define(['$', 'template', 'IScroll', 'product', 'user', 'native', 'config', 'address', 'api'], function ($, template, IScroll, product, user, native, config, address, api) {
+define(['$', 'template', 'IScroll', 'product', 'user', 'native', 'config', 'address'], function ($, template, IScroll, product, user, native, config, address) {
 
 	/*
 	 * 先定义一些模块内用到的function
@@ -44,7 +44,10 @@ define(['$', 'template', 'IScroll', 'product', 'user', 'native', 'config', 'addr
 			}, $view);
 
 			//加载弹框
-
+			setInterval(function () {
+				$('.swiper-container').height($('.swiper-container img').height());
+				// $('.pagination').css('bottom', '0.15rem');
+			}, 200);
 			/*自动关闭活动窗口*/
 			$.newTouch('.btn-o2o-home', function (event) {
 				event.preventDefault();
@@ -72,13 +75,32 @@ define(['$', 'template', 'IScroll', 'product', 'user', 'native', 'config', 'addr
 				$doc.trigger('spa:navigate', {
 					hash: 'myCoupon',
 					pushData: {
-						needReload: true,
-						backHash: ''
+						needReload: true
 					}
 				});
 			}, $view);
 
-
+			/* 点击标签
+			 $.newTouch('.btn-product-group', function (event) {
+			 event.preventDefault();
+			 if ($(this).hasClass('global-msg-active')) return;
+			 $(this).addClass('global-msg-active').siblings().removeClass('global-msg-active');
+			 var index = $(this).attr('data-group-index');
+			 switch (index){
+			 case '0':
+			 $('#list0').show().siblings().hide();
+			 break;
+			 case '1':
+			 $('#list1').show().siblings().hide();
+			 break;
+			 case '2':
+			 $('#list2').show().siblings().hide();
+			 break;
+			 case '3':
+			 $('#list3').show().siblings().hide();
+			 break;
+			 }
+			 }, $view);  */
 			// 家庭保洁
 			$.newTouch('.btn-secondary', function (event) {
 				event.preventDefault();
@@ -90,16 +112,51 @@ define(['$', 'template', 'IScroll', 'product', 'user', 'native', 'config', 'addr
 					}
 				});
 			}, $view);
-			/* 家电清洗 */
+			/* 点击产品列表的某一项 */
 			$.newTouch('.btn-appliances', function (event) {
 				event.preventDefault();
+				// var type = 4;
 				var type = parseInt($(this).attr('data-product-type'));
+				/*
+				 * 这个写法是SPA路由框架规定的。
+				 * $(selector).trigger(event, params)是jQuery的:触发被选元素上的指定事件
+				 */
 				$doc.trigger('spa:navigate', {
-					hash: 'product',
+					hash: 'placeOrder',
 					pushData: {
-						product: product.allList[type-1],
-						needReset: true,
-						backHash: ''
+						product: product.allList[type - 1],
+						needReset: true
+					}
+				});
+			}, $view);
+			/* 点击标签
+			 $.newTouch('.btn-product-group', function (event) {
+			 event.preventDefault();
+			 if ($(this).hasClass('global-msg-active')) return;
+			 $(this).addClass('global-msg-active').siblings().removeClass('global-msg-active');
+			 var index = $(this).attr('data-group-index');
+			 switch (index){
+			 case '0':
+			 $('#list0').show().siblings().hide();
+			 break;
+			 case '1':
+			 $('#list1').show().siblings().hide();
+			 break;
+			 case '2':
+			 $('#list2').show().siblings().hide();
+			 break;
+			 case '3':
+			 $('#list3').show().siblings().hide();
+			 break;
+			 }
+			 }, $view);  */
+			// 双十一活动
+			$.newTouch('.btn-home-day', function (event) {
+				event.preventDefault();
+				$doc.trigger('spa:navigate', {
+					hash: 'activity-day',
+					pushData: {
+						needReset: true
 					}
 				});
 			}, $view);
@@ -109,8 +166,7 @@ define(['$', 'template', 'IScroll', 'product', 'user', 'native', 'config', 'addr
 				$doc.trigger('spa:navigate', {
 					hash: 'homestay',
 					pushData: {
-						needReset: true,
-						backHash: ''
+						needReset: true
 					}
 				});
 			}, $view);
@@ -120,8 +176,7 @@ define(['$', 'template', 'IScroll', 'product', 'user', 'native', 'config', 'addr
 				$doc.trigger('spa:navigate', {
 					hash: 'homeenterprise',
 					pushData: {
-						needReset: true,
-						backHash: ''
+						needReset: true
 					}
 				});
 			}, $view);
@@ -216,13 +271,6 @@ define(['$', 'template', 'IScroll', 'product', 'user', 'native', 'config', 'addr
 		afteropen: function (pageData, dtd) {
 			var $view = this;
 			var $doc = $(document);
-			setTimeout(function () {
-				/*设置页面高度*/
-				var homeBox = $('.home-box');
-				var boxAlignCenter = $('.box-align-center').height();
-				var preventScroll = $('.prevent-scroll').height();
-				homeBox.height(boxAlignCenter * 2.2 + preventScroll);
-			}, 500);
 			/* 如果需要重新加载,就请求服务列表。 */
 			if (!pageData.pushData.dontNeedReload) {
 				$doc.trigger('spa:openloader');
@@ -245,7 +293,16 @@ define(['$', 'template', 'IScroll', 'product', 'user', 'native', 'config', 'addr
 				 * 这句的意思是,选取class=".spa-page-body"的元素,把tpl插入其中
 				 */
 				$('.spa-page-body', $view).html(tpl);
-				/* 建立IScroll-setInterval- setTimeout*/
+				/* 建立IScroll */
+				setTimeout(function () {
+					pageData.scroll = new IScroll('#homeScroll');
+					/*设置页面高度*/
+					var homeBox = $('.home-box');
+					var boxAlignCenter = $('.box-align-center').height();
+					var preventScroll = $('.prevent-scroll').height();
+					homeBox.height(boxAlignCenter * 4 + preventScroll);
+
+				}, 1000);
 				setTimeout(function () {
 					var swiper = new Swiper('.swiper-container', {
 						pagination: '.pagination',
@@ -255,11 +312,7 @@ define(['$', 'template', 'IScroll', 'product', 'user', 'native', 'config', 'addr
 						autoplay: 5000,
 						autoplayDisableOnInteraction: false
 					});
-				}, 200);
-				setTimeout(function () {
-					pageData.scroll = new IScroll('#homeScroll');
-				}, 500);
-
+				}, 20);
 				// 目前的作用只是供后端判断,该用户是否为新用户,所以没有回调。
 				product.getListAll(user.id);
 				address.getList({
@@ -272,10 +325,9 @@ define(['$', 'template', 'IScroll', 'product', 'user', 'native', 'config', 'addr
 			dtd.resolve();
 
 			//强制设置首页的上一页是空的,后面再调整框架
-			// pageData.prevPage = $('.spa-page-empty');
+			pageData.prevPage = $('.spa-page-empty');
 		},
 		beforeclose: function (pageData, dtd) {
-
 			dtd.resolve();
 			native.switchPopGesture(false);
 		}

+ 2 - 5
www/webapp/o2o/js/page/homeenterprise.js

@@ -1,9 +1,9 @@
 define(['$', 'template', 'IScroll', 'recharge', 'native', 'config', 'user'], function ($, template, IScroll, recharge, native, config, user) {
-	var backHash;
+
 	function back(event) {
 		event.preventDefault();
 		$(document).trigger('spa:navigate', {
-			hash: backHash,
+			hash: '',
 			pushData: {
 				dontNeedReload: true
 			}
@@ -71,9 +71,6 @@ define(['$', 'template', 'IScroll', 'recharge', 'native', 'config', 'user'], fun
 			dtd.resolve();
 		},
 		beforeopen: function (pageData, dtd) {
-			/*获取上一页跳转的路由名称*/
-			var pushData = pageData.pushData;
-			backHash = pushData.backHash ? pushData.backHash : '';
 			dtd.resolve();
 		},
 		afteropen: function (pageData, dtd) {

+ 13 - 17
www/webapp/o2o/js/page/homestay.js

@@ -1,10 +1,9 @@
 define(['$', 'template', 'IScroll', 'recharge', 'native', 'config', 'user'], function ($, template, IScroll, recharge, native, config, user) {
-	var backHash;
 
 	function back(event) {
 		event.preventDefault();
 		$(document).trigger('spa:navigate', {
-			hash: backHash,
+			hash: '',
 			pushData: {
 				dontNeedReload: true
 			}
@@ -20,27 +19,27 @@ define(['$', 'template', 'IScroll', 'recharge', 'native', 'config', 'user'], fun
 			var $doc = $(document);
 			// 返回
 			$view.on('swipeRight', function (event) {
-				back.call(this, event);
+				history.go(-1);
 			});
 			$.newTouch('.back-button', function (event) {
-				back.call(this, event);
+				history.go(-1);
 			}, $view);
 			$view.on('tapBackButton', function (event) {
-				back.call(this, event);
+				//back.call(this, event);
+				history.go(-1);
 			});
-			/*民宿咨询*/
-			$.newTouch('.o2o-btn-homestay', function (event) {
+			$.newTouch('.o2o-btn-homestay',function (event) {
 				event.preventDefault();
-				window.location.href = '/index.php?r=o2o/advisory/SinglesDay';
-			}, $view);
+				window.location.href='/index.php?r=o2o/advisory/SinglesDay';
+			},$view);
 			// 首页
 			$.newTouch('.btn-action-my-order', function (event) {
 				event.preventDefault();
-				$doc.trigger('spa:navigate', {
-					hash: '',
-					pushData: {
-						needReset: true
-					}
+					$doc.trigger('spa:navigate', {
+						hash: '',
+						pushData: {
+							needReset: true
+						}
 				});
 			}, $view);
 			// im
@@ -63,9 +62,6 @@ define(['$', 'template', 'IScroll', 'recharge', 'native', 'config', 'user'], fun
 			dtd.resolve();
 		},
 		beforeopen: function (pageData, dtd) {
-			/*获取上一页跳转的路由名称*/
-			var pushData = pageData.pushData;
-			backHash = pushData.backHash ? pushData.backHash : '';
 			dtd.resolve();
 		},
 		afteropen: function (pageData, dtd) {

+ 2 - 2
www/webapp/o2o/js/page/longOrder.js

@@ -33,9 +33,9 @@ define(['$', 'template', 'IScroll', 'recharge', 'native', 'config', 'user', 'pro
 				event.preventDefault();
 				var type = parseInt($(this).attr('data-product-type'));
 				$doc.trigger('spa:navigate', {
-					hash: 'product',
+					hash: 'placeOrder',
 					pushData: {
-						product: product.allList[type],
+						product: product.allList[type - 1],
 						needReset: true,
 						backHash: 'longOrder'
 

+ 3 - 12
www/webapp/o2o/js/page/mine.js

@@ -56,7 +56,6 @@ define(['$', 'template', 'IScroll', 'user', 'native', 'config', 'address', 'prod
 				});
 			}, $view);
 
-
 			// 常用地址
 			$.newTouch('.btn-address-list', function (event) {
 				event.preventDefault();
@@ -87,8 +86,8 @@ define(['$', 'template', 'IScroll', 'user', 'native', 'config', 'address', 'prod
 					hash: 'recharge',
 					pushData: {
 						needReload: true,
-						backHash: 'mine'
-
+						backHash:'mine'
+						
 					}
 				});
 			}, $view);
@@ -142,14 +141,6 @@ define(['$', 'template', 'IScroll', 'user', 'native', 'config', 'address', 'prod
 			var $view = this;
 			var $doc = $(document);
 
-			setTimeout(function () {
-				/*设置页面高度*/
-				var mineType = $('.mine-type');
-				var boxAlignCenter = mineType.children("div").height();
-				var preventScroll = $('.prevent-scroll').height();
-				mineType.height(boxAlignCenter * 2.3 + preventScroll);
-			}, 500);
-
 			if (pageData.pushData && pageData.pushData.needReset) {
 				var addressStr = '';
 				var defaultAddress = address.defaultAddress;
@@ -163,7 +154,7 @@ define(['$', 'template', 'IScroll', 'user', 'native', 'config', 'address', 'prod
 					showNavBar: !config.isWX,
 					userName: user.name == '' ? '未登录' : user.name,
 					userBalance: user.balance,
-					userAvatar: user.avatar,
+					userAvatar:user.avatar,
 					defaultAddress: addressStr
 				});
 

+ 116 - 146
www/webapp/o2o/js/page/myCoupon.js

@@ -1,157 +1,127 @@
 define(['$', 'template', 'user', 'config', 'IScroll'], function ($, template, user, config, IScroll) {
-	function back(event) {
-		event.preventDefault();
-		$(document).trigger('spa:navigate', {
-			hash: '',
-			pushData: {
-				dontNeedReload: true
-			}
-		});
-	}
+    function back(event) {
+        event.preventDefault();
+        $(document).trigger('spa:navigate', {
+            hash: '',
+            pushData: {
+                dontNeedReload: true
+            }
+        });
+    }
 
-	function fixScroll(pageData) {
-		if (pageData.scroll) {
-			pageData.scroll.destroy();
-			pageData.scroll = null;
-		}
+    function fixScroll(pageData) {
+        if (pageData.scroll) {
+            pageData.scroll.destroy();
+            pageData.scroll = null;
+        }
 
-		setTimeout(function () {
-			pageData.scroll = new IScroll('#myCouponScroll');
-		}, 50);
-	}
+        setTimeout(function () {
+            pageData.scroll = new IScroll('#myCouponScroll');
+        }, 50);
+    }
 
-	return {
-		title: '壹管家上门服务',
-		body: '',
-		init: function (pageData, dtd) {
-			var $view = this;
-			var $doc = $(document);
+    return {
+        title: '壹管家上门服务',
+        body: '',
+        init: function (pageData, dtd) {
+            var $view = this;
+            var $doc = $(document);
 
-			// 返回
-			$view.on('swipeRight', function (event) {
-				//back.call(this, event);
-				history.go(-1);
-			});
+            // 返回
+            $view.on('swipeRight', function (event) {
+                //back.call(this, event);
+                history.go(-1);
+            });
 
-			$.newTouch('.back-button', function (event) {
-				//back.call(this, event);
-				history.go(-1);
-			}, $view);
+            $.newTouch('.back-button', function (event) {
+                //back.call(this, event);
+                history.go(-1);
+            }, $view);
 
-			$view.on('tapBackButton', function (event) {
-				//back.call(this, event);
-				history.go(-1);
-			});
-			// im
-			$.newTouch('.btn-action-logo', function (event) {
-				event.preventDefault();
-				window.location.href = '/index.php?r=o2o/advisory/im';
-			}, $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);
+            $view.on('tapBackButton', function (event) {
+                //back.call(this, event);
+                history.go(-1);
+            });
 
+            // 兑换
+            $.newTouch('.btn-coupon', function (event) {
+                event.preventDefault();
+                var val = $('#coupon-code', $view).val();
+                if (val.length < 8) {
+                    $doc.trigger('spa:openpanel', ['simpleAlert', {
+                        message: '请输入有效的兑换码'
+                    }]);
+                    return;
+                } else {
+                    $(this).val('');
+                    user.exchangeCoupon(val, function (res) {
+                        $doc.trigger('spa:openloader');
+                        if (res.success) {
+                            user.getCouponList(user.id, function (result) {
+                                $doc.trigger('spa:closeloader');
+                                if (result.success) {
+                                    var exchangeTpl = template('myCoupon/exchange', {
+                                        coupons: user.coupons
+                                    });
+                                    $('.spa-page-body', $view).find('.coupon-items').html(exchangeTpl);
+                                    fixScroll(pageData);
+                                }
+                                $doc.trigger('spa:openpanel', ['simpleAlert', {
+                                    message: result.message
+                                }]);
+                            });
+                        } else {
+                            $doc.trigger('spa:closeloader');
+                            $doc.trigger('spa:openpanel', ['simpleAlert', {
+                                message: res.message
+                            }]);
+                        }
+                    })
+                }
+            }, $view);
 
-			// 兑换
-			$.newTouch('.btn-coupon', function (event) {
-				event.preventDefault();
-				var val = $('#coupon-code', $view).val();
-				if (val.length < 8) {
-					$doc.trigger('spa:openpanel', ['simpleAlert', {
-						message: '请输入有效的兑换码'
-					}]);
-					return;
-				} else {
-					$(this).val('');
-					user.exchangeCoupon(val, function (res) {
-						$doc.trigger('spa:openloader');
-						if (res.success) {
-							user.getCouponList(user.id, function (result) {
-								$doc.trigger('spa:closeloader');
-								if (result.success) {
-									var exchangeTpl = template('myCoupon/exchange', {
-										coupons: user.coupons
-									});
-									$('.spa-page-body', $view).find('.coupon-items').html(exchangeTpl);
-									fixScroll(pageData);
-								}
-								$doc.trigger('spa:openpanel', ['simpleAlert', {
-									message: result.message
-								}]);
-							});
-						} else {
-							$doc.trigger('spa:closeloader');
-							$doc.trigger('spa:openpanel', ['simpleAlert', {
-								message: res.message
-							}]);
-						}
-					})
-				}
-			}, $view);
+            dtd.resolve();
+        },
+        beforeopen: function (pageData, dtd) {
+            var $view = this;
+            var $doc = $(document);
+            $doc.trigger('spa:openloader');
+            user.checkLogin(function () {
+                user.getCouponList(function (res) {
+                    $doc.trigger('spa:closeloader');
+                    if (res.success) {
+                        var tpl = template('myCoupon/index', {
+                            showNavBar: !config.isWX && !config.isChubao,
+                            usable_coupons: user.usable_coupons,
+                            used_coupons: user.used_coupons,
+                            overtime_coupons: user.overtime_coupons
+                        });
+                        $('.spa-page-body', $view).html(tpl);
+                        fixScroll(pageData);
+                    } else {
+                        $doc.trigger('spa:openpanel', ['simpleAlert', {
+                            message: res.message
+                        }]);
+                    }
+                })
+            });
 
-
-
-			dtd.resolve();
-		},
-		beforeopen: function (pageData, dtd) {
-			var $view = this;
-			var $doc = $(document);
-			$doc.trigger('spa:openloader');
-			user.checkLogin(function () {
-				user.getCouponList(function (res) {
-					$doc.trigger('spa:closeloader');
-					if (res.success) {
-						var tpl = template('myCoupon/index', {
-							showNavBar: !config.isWX && !config.isChubao,
-							usable_coupons: user.usable_coupons,
-							used_coupons: user.used_coupons,
-							overtime_coupons: user.overtime_coupons
-						});
-						$('.spa-page-body', $view).html(tpl);
-						fixScroll(pageData);
-					} else {
-						$doc.trigger('spa:openpanel', ['simpleAlert', {
-							message: res.message
-						}]);
-					}
-				})
-			});
-
-			dtd.resolve();
-			if (config.isWX) {
-				wx.ready(function () {
-					wx.onMenuShareTimeline({
-						title: '家政服务,首选壹管家',
-						link: 'http://www.yiguanjia.me/o2o/web/index',
-						imgUrl: 'http://wozhua-others.qiniudn.com/icon-o2o-home.jpg'
-					});
-					wx.onMenuShareAppMessage({
-						title: '家政服务,首选壹管家',
-						desc: '全程管家,精心每一个细节!',
-						link: 'http://www.yiguanjia.me/o2o/web/index',
-						imgUrl: 'http://wozhua-others.qiniudn.com/icon-o2o-home.jpg'
-					});
-				});
-			}
-		}
-	}
+            dtd.resolve();
+            if (config.isWX) {
+                wx.ready(function () {
+                    wx.onMenuShareTimeline({
+                        title: '家政服务,首选壹管家',
+                        link: 'http://www.yiguanjia.me/o2o/web/index',
+                        imgUrl: 'http://wozhua-others.qiniudn.com/icon-o2o-home.jpg'
+                    });
+                    wx.onMenuShareAppMessage({
+                        title: '家政服务,首选壹管家',
+                        desc: '全程管家,精心每一个细节!',
+                        link: 'http://www.yiguanjia.me/o2o/web/index',
+                        imgUrl: 'http://wozhua-others.qiniudn.com/icon-o2o-home.jpg'
+                    });
+                });
+            }
+        }
+    }
 })

+ 105 - 104
www/webapp/o2o/js/page/picker.js

@@ -1,120 +1,121 @@
 define(['$', 'template', 'order', 'config', 'user', 'api'], function ($, template, order, config, user, api) {
-	function back(backHash) {
-		$(document).trigger('spa:navigate', {
-			hash: backHash
-		});
-	}
+    function back(backHash) {
+        $(document).trigger('spa:navigate', {
+            hash: backHash
+        });
+    }
 
-	return {
-		title: '壹管家上门服务',
-		body: '',
-		init: function (pageData, dtd) {
-			var $view = this;
-			var $doc = $(document);
+    return {
+        title: '壹管家上门服务',
+        body: '',
+        init: function (pageData, dtd) {
+            var $view = this;
+            var $doc = $(document);
 
-			//返回
-			$.newTouch('.back-button', function (event) {
-				event.preventDefault();
+            //返回
+            $.newTouch('.back-button', function (event) {
+                event.preventDefault();
 
-				var pushData = pageData.pushData;
-				back.call(this, pushData['backHash']);
-			}, $view);
+                var pushData = pageData.pushData;
+                back.call(this, pushData['backHash']);
+            }, $view);
 
-			$view.on('tapBackButton', function (event) {
-				event.preventDefault();
+            $view.on('tapBackButton', function (event) {
+                event.preventDefault();
 
-				var pushData = pageData.pushData;
-				back.call(this, pushData['backHash']);
-			});
+                var pushData = pageData.pushData;
+                back.call(this, pushData['backHash']);
+            });
 
-			$.newTouch('.picker-option', function () {
-				event.preventDefault();
-				if ($(this).hasClass('unable')) return;
-				$view.trigger('tapBackButton');
+            $.newTouch('.picker-option', function () {
+                event.preventDefault();
+                if ($(this).hasClass('unable')) return;
+                $view.trigger('tapBackButton');
 
-				if (pageData.callback && $.isFunction(pageData.callback.onSelect)) {
-					pageData.callback.onSelect($(this).data('value'));
-				}
-			}, $view);
+                if (pageData.callback && $.isFunction(pageData.callback.onSelect)) {
+                    pageData.callback.onSelect($(this).data('value'));
+                }
+            }, $view);
 
-			// 兑换
-			$.newTouch('.btn-coupon', function (event) {
-				event.preventDefault();
+            // 兑换
+            $.newTouch('.btn-coupon', function (event) {
+                event.preventDefault();
 
-				var pushData = pageData.pushData;
-				var val = $('#coupon-code', $view).val();
-				if (val.length < 8) {
-					$doc.trigger('spa:openpanel', ['simpleAlert', {
-						message: '请输入有效的兑换码'
-					}]);
-				} else {
-					$(this).val('');
-					user.exchangeCoupon(val, function (res) {
-						$doc.trigger('spa:openloader');
-						if (res.success) {
-							api.getCouponList({
-								products: pushData.products,
-								type: pushData.type,
-								user_id: user.id
-							}, function (res) {
-								$doc.trigger('spa:closeloader');
-								$doc.trigger('spa:openpanel', ['simpleAlert', {
-									message: res.message
-								}]);
-								if (res.success) {
-									user.orderCoupons = res.data;
-									var tpl = template('picker/cell', {
-										options: res.data
-									});
-									$view.find('.card-list').html(tpl);
-								}
-							})
-						} else {
-							$doc.trigger('spa:closeloader');
-							$doc.trigger('spa:openpanel', ['simpleAlert', {
-								message: res.message
-							}]);
-						}
-					})
-				}
-			}, $view);
+                var pushData = pageData.pushData;
+                var val = $('#coupon-code', $view).val();
+                if (val.length < 8) {
+                    $doc.trigger('spa:openpanel', ['simpleAlert', {
+                        message: '请输入有效的兑换码'
+                    }]);
+                } else {
+                    $(this).val('');
+                    user.exchangeCoupon(val, function (res) {
+                        $doc.trigger('spa:openloader');
+                        if (res.success) {
+                            api.getCouponList({
+                                products: pushData.products,
+                                type: pushData.type,
+                                user_id: user.id
+                            }, function (res) {
+                                $doc.trigger('spa:closeloader');
+                                $doc.trigger('spa:openpanel', ['simpleAlert', {
+                                    message: res.message
+                                }]);
+                                if (res.success) {
+                                    user.orderCoupons = res.data;
+                                    var tpl = template('picker/cell', {
+                                        options: res.data
+                                    });
+                                    $view.find('.card-list').html(tpl);
+                                }
+                            })
+                        } else {
+                            $doc.trigger('spa:closeloader');
+                            $doc.trigger('spa:openpanel', ['simpleAlert', {
+                                message: res.message
+                            }]);
+                        }
+                    })
+                }
+            }, $view);
 
-			dtd.resolve();
-		},
-		beforeopen: function (pageData, dtd) {
-			var $doc = $(document);
-			var $view = this;
-			var pushData = pageData.pushData;
-			$doc.trigger('spa:openloader');
-			user.getCouponList();
-			api.getCouponList({
-				products: pushData.products, //产品
-				booking_time: pushData.time, //预订时间
-				user_id: user.id, //用户id
-				type: pushData.type, //资源
-				extra: pushData.extraJson
-			}, function (res) {
-				var tpl = template('picker/coupon', {
-					options: res.data,
-					unuseables: res.unuseable_coupons,
-					title: '选择代金券',
-					showNavBar: !config.isWX && !config.isChubao
-				});
+            dtd.resolve();
+        },
+        beforeopen: function (pageData, dtd) {
+            var $doc = $(document);
+            var $view = this;
+            var pushData = pageData.pushData;
 
-				$view.find('.spa-page-body').html(tpl);
+            $doc.trigger('spa:openloader');
+            user.getCouponList();
+            api.getCouponList({
+                products: pushData.products, //产品
+                booking_time: pushData.time, //预订时间
+                user_id: user.id, //用户id
+                type: pushData.type, //资源
+                extra:  pushData.extraJson
+            }, function (res) {
+                var tpl = template('picker/coupon', {
+                    options: res.data,
+                    unuseables: res.unuseable_coupons,
+                    title: '选择代金券',
+                    showNavBar: !config.isWX && !config.isChubao
+                });
 
-				if (pageData.scroll) {
-					pageData.scroll.destroy();
-					pageData.scroll = null;
-				}
+                $view.find('.spa-page-body').html(tpl);
 
-				setTimeout(function () {
-					pageData.scroll = new IScroll('#pickerScroll');
-				}, 500);
+                if (pageData.scroll) {
+                    pageData.scroll.destroy();
+                    pageData.scroll = null;
+                }
 
-				dtd.resolve();
-				$doc.trigger('spa:closeloader');
-			});
-		}
-	}
+                setTimeout(function () {
+                    pageData.scroll = new IScroll('#pickerScroll');
+                }, 500);
+
+                dtd.resolve();
+                $doc.trigger('spa:closeloader');
+            });
+        }
+    }
 });

+ 956 - 991
www/webapp/o2o/js/page/placeOrder.js

@@ -1,994 +1,959 @@
 define(['$', 'template', 'order', 'native', 'helper', 'user', 'api', 'config', 'address', 'IScroll'], function ($, template, order, native, helper, user, api, config, address, IScroll) {
 
-	/*
-	 * 这里对product和order做一个说明。
-	 * product前台写死。order沿用原模型,但只用其中几个字段。
-	 * 对应关系如下:
-	 * product.id == order.productID :产品ID
-	 * product.type == order.productType :产品类型,约定的数字
-	 * product.price == order.cost :订单原价,当product的extra字段为空
-	 * product.extra.price == order.cost :订单原价,当product的extra字段不为空
-	 * product.type_str == order.serviceName :服务名称
-	 * product.extra.type == order.appendID :服务的额外选项,当product的extra字段不为空
-	 */
-
-	/* 从首页传来的产品数据 */
-	var product;
-	var backHash;
-	var extraJson = '';
-	/* 软键盘弹出与消失时布局变动。 */
-	function checkScroll(pageData, callback) {
-		if (pageData.scroll) {
-			if (!pageData.scrollHeight) {
-				pageData.scrollHeight = 0;
-			}
-			clearInterval(pageData.scrollCheck);
-			clearTimeout(pageData.scrollCheckAutoCancel);
-			pageData.scrollCheck = setInterval(function () {
-				pageData.scroll.refresh();
-				if ($.isFunction(callback)) {
-					callback();
-				}
-			}, 50);
-
-			pageData.scrollCheckAutoCancel = setTimeout(function () {
-				clearInterval(pageData.scrollCheck);
-			}, 500);
-		}
-	}
-
-	/* 返回上一级 */
-	function back(event) {
-		event.preventDefault();
-		$(document).trigger('spa:navigate', {
-			hash: backHash,
-			pushData: {
-				dontNeedReload: true,
-				product: product
-			}
-		});
-	}
-
-	/* 重置页面时调用,重新生成IScroll */
-	function fixScroll(pageData) {
-		setTimeout(function () {
-			if (product.name == "首单日常保洁2小时体验") {
-				$('.selected').css('display', 'none');
-			}
-			if (product.name == "擦玻璃") {
-				$('.orderNum').text("请选择玻璃的平方数");
-			}
-			if (product.name == "新居开荒-每平米") {
-				$('.orderNum').text("请选择开荒的平方数");
-			}
-			/*隐藏手势*/
-			$('.product-img').css('display', 'none');
-		}, 100);
-		if (pageData.scroll) {
-			pageData.scroll.destroy();
-			pageData.scroll = null;
-		}
-		var placeOrderScroll;
-		setTimeout(function () {
-			pageData.scroll = new IScroll('#placeOrderScroll');
-
-		}, 700);
-	}
-
-	/* 算账。 */
-	function payCharge($orderCost) {
-		order.payValue = order.cost - order.couponValue;
-		$orderCost.text('¥' + order.payValue);
-	}
-
-	/* 也是自动选取最大优惠券的操作,只是与setCoupon策略不同
-	 function suitable(me, doc, productID, type, petPrice, pay, pageData, extra, precedence) {
-	 extra = extra || 0;
-	 precedence = precedence || 0;
-	 // 获取该类型宠物 可用优惠券
-	 doc.trigger('spa:openloader');
-	 api.getCouponList({
-	 products: JSON.stringify([{
-	 product_id: productID,
-	 count: 1
-	 }]),
-	 type: type,
-	 user_id: user.id
-	 }, function (res) {
-	 doc.trigger('spa:closeloader');
-	 if (!res.success) {
-	 doc.trigger('spa:openpanel', ['simpleAlert', {
-	 message: res.message
-	 }]);
-	 } else {
-	 user.orderCoupons = res.data;
-
-	 // 优惠券数据更新
-	 var coupons = user.orderCoupons;
-	 var couponSelectVal = 0;
-	 if (coupons.length) {
-	 // 选取最大金额
-	 var selectCoupon = user.getMaxAvailableCoupon();
-
-	 // 缓存到购物车
-	 cart['products'][type]['couponName'] = coupons[selectCoupon.couponIndex].coupon.name;
-	 cart['products'][type]['couponVal'] = selectCoupon.couponSelectVal;
-	 cart['products'][type]['couponId'] = coupons[selectCoupon.couponIndex].id;
-	 cart['products'][type]['couponList'] = coupons;
-
-	 // dom 更新
-	 $('.coupon-selected-name', me).html(user.getCouponName(coupons[selectCoupon.couponIndex].id));
-	 $('.coupon-cost', me).html('-' + selectCoupon.couponSelectVal);
-	 $('.select-coupon', me).removeClass('hide');
-	 $('.order-cost', me).attr('data-coupon', selectCoupon.couponSelectVal);
-	 $('.order-list', me).removeClass('hide');
-	 $('.order-cost', me).attr('data-pay', parseFloat(petPrice) - parseFloat(selectCoupon.couponSelectVal) + extra);
-
-	 // 减去优惠
-	 petPrice = parseFloat(petPrice) - parseFloat(selectCoupon.couponSelectVal) + extra + precedence;
-
-	 } else {
-	 // 缓存到购物车
-	 cart['products'][type]['couponName'] = '';
-	 cart['products'][type]['couponVal'] = '';
-	 cart['products'][type]['couponId'] = '';
-	 cart['products'][type]['couponList'] = [];
-
-	 $('.coupon-selected-name', me).html('');
-	 $('.coupon-cost', me).html('- 0');
-	 $('.select-coupon', me).addClass('hide');
-	 $('.order-cost', me).attr('data-coupon', 0);
-
-	 petPrice = parseFloat(petPrice) + extra + precedence;
-	 }
-	 // 缓存到本地
-	 cart.setCache('products');
-
-	 // 更新dom总价
-	 $('.order-cost', me).attr('data-costs', pay);
-	 $('.order-cost', me).html('¥' + petPrice);
-
-	 $('.select-pet', me).removeClass('hide');
-
-	 if (pageData && pageData.scroll) {
-	 pageData.scroll.refresh();
-	 }
-	 }
-	 });
-	 }
-	 */
-
-	/* 优惠券取决于主服务、宠物、数量、时间,所以在这几个值改变后要调用这个方法,更新最大优惠
-	 function setCoupon(me, pageData, extraServicePrice) {
-	 $(document).trigger('spa:openloader');
-	 var products = JSON.stringify([{
-	 product_id: order['productID'],
-	 count: order.productCount
-	 }]);
-	 var time = order.bookingDate + ' ' + order.bookingTime + ':00';
-	 user.getProductCoupon(products, time, cachePageData.productType, function (res) {
-	 $(document).trigger('spa:closeloader');
-	 if (res.success) {
-	 var coupons = user.orderCoupons;
-	 var price = 0;
-	 if (coupons.length) {
-	 var selectCoupon = user.getMaxAvailableCoupon();
-	 cart['products'][cachePageData.productType]['couponName'] = coupons[selectCoupon.couponIndex].coupon.name;
-	 cart['products'][cachePageData.productType]['couponVal'] = selectCoupon.couponSelectVal;
-	 cart['products'][cachePageData.productType]['couponId'] = coupons[selectCoupon.couponIndex].id;
-	 cart['products'][cachePageData.productType]['couponList'] = coupons;
-
-	 $('.coupon-selected-name', me).html(user.getCouponName(coupons[selectCoupon.couponIndex].id));
-	 $('.coupon-cost', me).html('-' + selectCoupon.couponSelectVal);
-	 $('.select-coupon', me).removeClass('hide');
-	 $('.order-cost', me).attr('data-coupon', selectCoupon.couponSelectVal);
-	 $('.order-list', me).removeClass('hide');
-	 price = parseFloat(order.petPrice) * order.productCount - parseFloat(selectCoupon.couponSelectVal) + parseFloat(extraServicePrice);
-
-	 } else {
-	 price = parseFloat(order.petPrice) * order.productCount + parseFloat(extraServicePrice);
-
-	 $('.coupon-selected-name', me).html('');
-	 $('.select-coupon', me).addClass('hide');
-	 $('.order-cost', me).attr('data-coupon', '0');
-	 $('.order-cost', me).attr('data-pay', parseFloat(order.petPrice));
-	 cart['products'][cachePageData.productType]['couponName'] = '';
-	 cart['products'][cachePageData.productType]['couponVal'] = '';
-	 cart['products'][cachePageData.productType]['couponId'] = '';
-	 cart['products'][cachePageData.productType]['couponList'] = [];
-	 }
-	 // 加急
-	 if (order.precedence) {
-	 price = price + parseFloat(product.precedence);
-	 }
-	 $('.order-cost', me).attr('data-pay', price);
-	 $('.order-cost', me).attr('data-costs', order.petPrice);
-	 $('.order-cost', me).html('¥' + price);
-
-	 cart.setCache('products');
-
-	 pageData.scroll.refresh();
-	 } else {
-	 $(document).trigger('spa:openpanel', ['simpleAlert', {
-	 message: res.message
-	 }]);
-	 }
-	 });
-	 }  */
-
-	/* 在选择主服务或宠物后,筛选附加服务
-	 function suitExtraService(me, checkedName) {
-	 var newExtraService = product.getExtraServiceList(order.productType, order.petName, checkedName);
-	 var extraService = {
-	 extraService: newExtraService
-	 }
-	 var extraServiceTpl = template('placeOrder/list', extraService);
-	 var extraServiceTpl2 = template('placeOrder/list2', extraService);
-	 me.find('.extra-service-list').html(extraServiceTpl);
-	 me.find('.calc-items').html(extraServiceTpl2).addClass('hide');
-
-	 cachePageData.extraServicePrice = 0;
-	 cachePageData.extraServiceCount = 0;
-	 } */
-
-	/* 在选择主服务、附加服务、宠物、时间、地点之后,重置保洁师
-	 function resetTech(me) {
-	 order.beautician.name = '请选择';
-	 order.beautician.id = '';
-	 $('.booking-people', me).html(order.beautician.name);
-	 }  */
-
-	return {
-		title: '壹管家上门服务',
-		body: '',
-		init: function (pageData, dtd) {
-			var $view = this;
-			var $doc = $(document);
-
-
-			/* 三个返回操作 */
-			$.newTouch('.back-button', function (event) {
-				back.call(this, event);
-			}, $view);
-			$view.on('tapBackButton', function (event) {
-				back.call(this, event);
-			});
-			$view.on('swipeRight', function (event) {
-				back.call(this, event);
-			});
-			/* 点击选择extra。 */
-			$.newTouch('.btn-main-service', function (event) {
-				/* on代表这一条的选中状态。如果已经选中了,就return。this的作用域是这一条extra。 */
-				if ($(this).hasClass('on')) return;
-				/* 如果没有on状态,加上on。 */
-				$(this).addClass('on');
-				/* 删掉其他选择框的on状态 */
-				$(this).parent().siblings().find('.btn').removeClass('on');
-				/* 填写order */
-				order.appendID = $(this).attr('data-extra-type');
-				order.price = $(this).attr('data-extra-price');
-				order.cost = order.price * order.productCount;
-				// 重置代金券
-				$('.coupon-selected-name', $view).html('选择优惠券');
-				order.couponValue = 0;
-				order.couponID = '';
-				if (order.bookingTimeStr && $('.booking-time').html() !== "选择服务时间") {
-					dPicker();
-				}
-				payCharge($('.order-cost', $view));
-			}, $view);
-
-			/* 点击选择地址 */
-			$.newTouch('.select-address', function (event) {
-				event.preventDefault();
-				/* 如果是微信客户端,跳转到addressList页面。 */
-				if (!config.isAndroid && !config.isIOS) {
-					$doc.trigger('spa:navigate', {
-						hash: 'addressList',
-						pushData: {
-							backHash: 'placeOrder'
-						},
-						callback: {
-							/* 在addressList页面挑选之后,回到这个页面时执行的回调。 */
-							onSelect: function (address, station) {
-								order.set('address', address, true);
-								order.set('stationID', station, true);
-
-								var addressStr = '';
-								if (order.address.address.poi) {
-									addressStr = order.address.address.city + order.address.address.area + order.address.address.poi.name + order.address.address.detail
-								} else {
-									addressStr = order.address.address.province + order.address.address.city + order.address.address.area + order.address.address.detail
-								}
-								$('.order-address', $view).html(addressStr);
-								$('.order-username', $view).html(order.address.name);
-								$('.order-mobile', $view).html(order.address.mobile);
-							}
-						}
-					});
-				}
-			}, $view);
-
-			/* 点击选择附加服务
-			 $.newTouch('.item-checkbox', function (event) {
-			 event.preventDefault();
-			 // 如果'.main-service'元素的子元素数目为正(也就是说出现了选择主服务那一栏,也就是说在前一页选择的是附加服务),且不处于on状态(也就是还没有选择主服务)
-			 if ($('.main-service', $view).length && !$('.main-service', $view).find('.btn-main-service').hasClass('on')) {
-			 // 弹出一个对话框
-			 $doc.trigger('spa:openpanel', ['simpleAlert', {
-			 message: '请选择服务类型'
-			 }]);
-			 return;
-			 }
-			 // $(this).data('xxx'):获取this中data-xxx的数据。
-			 // 获取这一条附加服务的相关的数据。select没用,估计是原来想用这个记录选中状态的。
-			 var select = $(this).data('select'),
-			 id = $(this).data('id'),
-			 index = $(this).parent().index(),
-			 price = $(this).data('price');
-			 extraType = $(this).data('servicetype');
-			 // 获取附加服务的总费用。
-			 var extraCost = $('.order-cost', $view).attr('data-extra');
-			 // 如果原来没有选中这一项,下面就是选中的操作
-			 if (!$(this).hasClass('checked')) {
-			 // 附加服务数量+1
-			 cachePageData.extraServiceCount++;
-			 // 保存附加服务的总价格
-			 cachePageData.extraServicePrice += parseFloat(price);
-			 // 添加checked状态
-			 $(this).addClass('checked');
-			 var serviceParam = {
-			 product_id: id,
-			 count: 1
-			 }
-			 // /为什么是个数组?
-			 order.extraService[index] = serviceParam;
-			 // 把订单详情中对应的项目添加on属性
-			 $('.calc-items', $view).find('.select-extra-service').eq(index).addClass('on');
-			 // 计算附加服务的总费用。
-			 extraCost = parseFloat(extraCost) + parseFloat(price);
-			 $('.order-cost', $view).attr('data-extra', extraCost);
-			 }
-			 // 如果原来选中了这一项,下面就是取消选中的操作
-			 else {
-			 // 附加服务数量-1
-			 cachePageData.extraServiceCount--;
-			 // 保存附加服务的总价格
-			 cachePageData.extraServicePrice -= parseFloat(price);
-			 // 删除checked属性
-			 $(this).removeClass('checked');
-
-			 order.extraService[index] = {};
-			 // 把订单详情中对应的项目删掉on属性
-			 $('.calc-items', $view).find('.select-extra-service').eq(index).removeClass('on');
-			 // 计算附加服务的总费用。
-			 extraCost = parseFloat(extraCost) - parseFloat(price);
-			 $('.order-cost', $view).attr('data-extra', extraCost);
-			 }
-			 // 根据附加服务的数量,更新订单详情中附加服务模块的显示与隐藏
-			 if (cachePageData.extraServiceCount > 0) {
-			 $('.calc-items', $view).removeClass('hide');
-			 } else {
-			 $('.calc-items', $view).addClass('hide');
-			 }
-			 // 更新订单详情中每一条附加服务的显示与隐藏
-			 if ($('.calc-items', $view).find('.select-extra-service').hasClass('on')) {
-			 $('.calc-items', $view).removeClass('hide');
-			 } else {
-			 $('.calc-items', $view).addClass('hide');
-			 }
-			 // 计算总价钱
-			 payCharge();
-			 // 刷新界面
-			 pageData.scroll.refresh();
-			 }, $view); */
-
-			/* 点击选择保洁师
-			 $.newTouch('.show-beautician-picker', function (event) {
-			 // 如果订单的地址数据为空
-			 if (!order.address || !order.address.address_id) {
-			 // 弹出提示框
-			 $doc.trigger('spa:openpanel', ['simpleAlert', {
-			 message: '请选择地址'
-			 }]);
-			 return;
-			 }
-			 // 点击订单的预定时间为空
-			 if (order.bookingDate == '' || order.bookingTime == '') {
-			 // 弹出提示框
-			 $doc.trigger('spa:openpanel', ['simpleAlert', {
-			 message: '请选择上门时间'
-			 }]);
-			 return;
-			 }
-			 // 点击订单的主服务类型为空
-			 if (!order.productType) {
-			 // /弹出提示框
-			 $doc.trigger('spa:openpanel', ['simpleAlert', {
-			 message: '请选择服务类型'
-			 }]);
-			 return;
-			 }
-			 // 生成预定时间的字符串
-			 var bookingTime = order.bookingDate + ' ' + order.bookingTime + ':00';
-			 // 生成所有服务的字符串
-			 var service_type_array = [order.productType];
-			 var service_type = '[' + service_type_array.join(',') + ']';
-			 // 根据服务、时间、地址,向服务器请求保洁师列表
-			 user.getTechList(
-			 service_type,
-			 bookingTime,
-			 order.address.address_id,
-			 // 请求成功后跳转到beautician页面,在beautician页面展示保洁师列表
-			 function (res) {
-			 $doc.trigger('spa:navigate', {
-			 hash: 'beautician',
-			 pushData: {
-
-			 }
-			 });
-			 }
-			 );
-			 }, $view);  */
-
-			/* 点击选择宠物相关
-			 $.newTouch('.show-product-picker', function () {
-			 // 如果有了selected属性,就return
-			 if ($(this).hasClass('selected')) return;
-			 event.preventDefault();
-			 // 主服务>10是什么意思???
-			 if (cachePageData.productType > 10) {
-			 $doc.trigger('spa:openpanel', ['simpleAlert', {
-			 message: '请选择服务类型'
-			 }]);
-			 return;
-			 }
-			 // 弹出一个列表选择框。
-			 $doc.trigger('spa:openpanel', ['productOption', {
-			 pets: product.productGroup[cachePageData.productType],
-			 productType: cachePageData.productType,
-			 callback: {
-			 onSelect: function (petName, petWeight, petPrice) {
-			 // set order info
-			 order.petName = petName;
-			 order.petWeight = petWeight;
-			 order.petPrice = petPrice;
-			 order.productType = cachePageData.productType;
-			 order.petID = cart['products'][cachePageData.productType]['petID'];
-			 order.productID = cart['products'][cachePageData.productType]['productID'];
-			 // user.orderCoupons = res.data;
-			 // 筛选附加服务
-			 if (cachePageData.extraServiceType > 10) {
-			 var selectExtraServiceName = cachePageData.defaultExtraService[cachePageData.extraServiceType].serviceName;
-			 var selectExtraServicePrice = cachePageData.defaultExtraService[cachePageData.extraServiceType].servicePrice;
-
-			 $('.order-cost', $view).attr('data-extra', selectExtraServicePrice);
-			 }
-
-			 suitExtraService($view, selectExtraServiceName);
-
-			 $('.pet-info', $view).html(petName + ' (' + petWeight + ')');
-			 $('.pet-type', $view).html(petName + ' (' + petWeight + ')');
-			 $('.total-cost', $view).html('¥' + petPrice);
-
-			 if ($('.calc-items', $view).find('.select-extra-service').hasClass('on')) {
-			 $('.calc-items', $view).removeClass('hide');
-			 petPrice = parseFloat(petPrice) + parseFloat(selectExtraServicePrice);
-			 }
-
-			 $('.order-cost', $view).attr('data-costs', order.petPrice);
-			 $('.order-cost', $view).attr('data-extra', cachePageData.extraServicePrice);
-			 $('.order-cost', $view).html('¥' + petPrice);
-
-			 $('.select-pet', $view).removeClass('hide');
-
-			 if (order['productID'] && order.bookingDate) {
-			 setCoupon($view, pageData, cachePageData.extraServicePrice);
-			 }
-
-			 pageData.scroll.refresh();
-			 }
-			 }
-			 }]);
-			 }, $view); */
-
-			/* 点击数量-1 */
-			$.newTouch('.btn-sub', function (event) {
-				if (order.productCount <= 1) return;
-				if (order.price == 0) {
-					$doc.trigger('spa:openpanel', ['simpleAlert', {
-						message: '请选择服务'
-					}]);
-					return;
-				}
-				var inputNum = $('.service-count', $view).children('.input-num').val();
-				if (isNaN(inputNum)) {
-					$doc.trigger('spa:openpanel', ['simpleAlert', {
-						message: '请输入数字'
-					}]);
-					return false;
-				}
-				order.productCount = inputNum;
-				order.productCount--;
-				order.cost = order.productCount * order.price;
-				$('.service-count', $view).children('.input-num').val(order.productCount);
-				/* 算账 */
-				payCharge($('.order-cost', $view));
-			}, $view);
-
-			/*点击body重置金额*/
-			$.newTouch('body', function (event) {
-				//input输入
-				var inputNum = $('.service-count', $view).children('.input-num').val();
-				if (isNaN(inputNum)) {
-					$doc.trigger('spa:openpanel', ['simpleAlert', {
-						message: '请输入数字'
-					}]);
-					return false;
-				}
-				//与input输入框的文本的数据做交互;
-				order.productCount = inputNum;
-				order.cost = order.productCount * order.price;
-				$('.service-count', $view).children('.input-num').val(order.productCount);
-			});
-
-			/* 点击数量+1 */
-			$.newTouch('.btn-add', function (event) {
-				if (order.productCount > 999) return;
-				if (order.price == 0) {
-					$doc.trigger('spa:openpanel', ['simpleAlert', {
-						//message: '请选择extra'
-						message: '请选择服务'
-					}]);
-					return;
-				}
-				var inputNum = $('.service-count', $view).children('.input-num').val();
-				if (isNaN(inputNum)) {
-					$doc.trigger('spa:openpanel', ['simpleAlert', {
-						message: '请输入数字'
-					}]);
-					return false;
-				}
-				order.productCount = inputNum;
-				order.productCount++;
-				order.cost = order.productCount * order.price;
-				$('.service-count', $view).children('.input-num').val(order.productCount);
-				/* 算账 */
-				payCharge($('.order-cost', $view));
-			}, $view);
-
-			/* 点击选择时间 */
-			$.newTouch('.show-time-picker', function (event) {
-				event.preventDefault();
-				// 以下是构建时间选择器,不用管。直接看选完之后的回调。
-				var dayNamesA = ['周日', '周一', '周二', '周三', '周四', '周五', '周六'];
-				var dayNamesB = ['今天'];
-				var columns = {
-					columnDay: [],
-					columnTime: []
-				};
-				var now = new Date().getHours();
-				var daySelectIndex = 0;
-				for (var i = 1; i <= 9; i++) {
-					var dd = new Date();
-					dd.setDate(dd.getDate() + i);
-
-					var month = dd.getMonth() + 1;
-					var day = dd.getDate();
-					var date = month + '月' + day + '日';
-
-					var dayStr = helper.getDateStr({
-						date: dd,
-						separator: '-'
-					});
-					var dayStrSuffix;
-					if (i < dayNamesB.length) {
-						dayStrSuffix = dayNamesB[i];
-					} else {
-						dayStrSuffix = dayNamesA[dd.getDay()];
-					}
-					var selected = false;
-					if (order.bookingDate) {
-						selected = true;
-					}
-					if (dayStr == order.bookingDate) {
-						daySelectIndex = i;
-					} else {
-						daySelectIndex = -1;
-					}
-					columns.columnDay.push({
-						text: date, // 几月几日
-						day: dayStrSuffix, // 周几
-						value: dayStr,
-						selected: selected,
-						selectIndex: daySelectIndex
-					});
-				}
-				var currentDate = new Date();
-				var currentMonth = currentDate.getMonth() + 1;
-				var currentDay = currentDate.getDate();
-				var now = new Date().getHours();
-				var min = new Date().getMinutes();
-				var timeSelectIndex = 0;
-				for (var i = 9; i <= 19; i++) {
-					var hour = i + ':00';
-					var selected = false;
-					if (order.bookingTime) {
-						selected = true;
-					}
-					if (hour == order.bookingTime) {
-						timeSelectIndex = i;
-					} else {
-						timeSelectIndex = -1;
-					}
-					columns.columnTime.push({
-						month: currentMonth,
-						day: currentDay,
-						min: min,
-						num: i,
-						now: now,
-						text: hour,
-						value: hour,
-						selected: selected,
-						selectIndex: timeSelectIndex
-					})
-				}
-				$doc.trigger('spa:openpanel', ['dataPicker', {
-					// type: cachePageData.productType,
-					columns: columns,
-					selected: order.bookingDate,
-					// offDay: product.offDay,
-					callback: {
-						// 选完之后的回调。values:[日期,时间];texts:时间字符串;precedence:是否加急;
-						onSelect: function (values, texts, precedence) {
-							// 重置代金券
-
-							$('.coupon-selected-name', $view).html('选择优惠券');
-							order.couponValue = 0;
-							order.couponID = '';
-							payCharge($('.order-cost', $view));
-							// 填写order
-							order.bookingDate = values[0];
-							order.bookingTime = values[1];
-							order.bookingTimeStr = texts[0] + ' ' + texts[1];
-							order.precedence = precedence;
-							// 更新预定时间组件
-
-							$('.booking-time', $view).html(order.bookingTimeStr);
-							if (product.extra && !order.appendID) {
-							} else {
-								dPicker();
-							}
-						}
-					}
-				}]);
-			}, $view);
-			/*用户选择完时间之后,默认使用优惠券*/
-			var dPicker = function () {
-				extraJson = JSON.stringify([{type: order.appendID, price: order.price}]);
-				var productss = JSON.stringify([{product_id: order.productID, count: order.productCount}]);
-				api.getCouponList({
-					products: productss, //产品
-					booking_time: order.bookingTimeStr, //预订时间
-					user_id: user.id, //用户id
-					type: product.type, //资源
-					extra: extraJson//appendID==extra(一室一卫)    price =价格
-				}, function (res) {
-					if (res.success) {
-						if (typeof(res.data[0]) !== "undefined") {
-							var index = 0;
-							var arrValue = [];
-							var arrCoupon = [];
-							var CouponName;
-							for (var i = 0; i < res.data.length; i++) {
-								arrValue[i] = res.data[i].coupon.value;
-								arrCoupon[i] = res.data[i].coupon;
-							}
-							var max = Math.max.apply(null, arrValue);//最大值
-							for (var j = 0; j < arrCoupon.length; j++) {
-								if (arrCoupon[j].value == max) {
-									CouponName = arrCoupon[j].name;
-								}
-							}
-							$('.coupon-selected-name', $view).text(CouponName);
-							order.couponValue = max;
-							payCharge($('.order-cost', $view));
-						}
-					}
-				});
-			};
-
-			/* 点击选择优惠券 */
-			$.newTouch('.show-coupon-picker', function (event) {
-
-				if ($(this).hasClass('disabled')) return;
-				event.preventDefault();
-
-				if (product.extra && !order.appendID) {
-					$doc.trigger('spa:openpanel', ['simpleAlert', {
-						message: '请选择服务'
-					}]);
-					return;
-				} else {
-					extraJson = JSON.stringify([{type: order.appendID, price: order.price}]);
-				}
-				// 必须先选择时间
-				if (!order.bookingDate) {
-					$doc.trigger('spa:openpanel', ['simpleAlert', {
-						message: '请选择服务时间'
-					}]);
-					return;
-				}
-				// 跳转到picker页面,展示优惠券
-				$doc.trigger('spa:navigate', {
-					hash: 'picker',
-					pushData: {
-						title: '选择优惠券',
-						backHash: 'placeOrder',
-						products: JSON.stringify([{
-							product_id: order.productID,
-							count: order.productCount
-						}]),
-						time: order.bookingDate + ' ' + order.bookingTime + ':00',
-						type: order.productType,
-						extraJson: extraJson
-					},
-					callback: {
-						// 在picker页面挑选之后,回到这个页面时执行的回调。pickValue:选中的优惠券的ID;
-
-						onSelect: function (pickValue) {
-							if (pickValue == '') {
-								$('.coupon-selected-name', $view).text('不使用');
-								order.couponValue = 0;
-							} else {
-								for (var i in user.orderCoupons) {
-									var couponInfo = user.orderCoupons[i];
-									if (couponInfo.id == pickValue) {
-										$('.coupon-selected-name', $view).text(couponInfo['coupon']['name']);
-										order.couponValue = couponInfo['coupon']['value'];
-										break;
-									}
-								}
-							}
-							// 填写order
-							order.couponID = pickValue;
-							// 计算总费用
-							payCharge($('.order-cost', $view));
-						}
-					}
-				});
-			}, $view);
-
-			/* 是否选中同意用户协议,关系到下订单按钮是否激活 */
-			$.newTouch('.agreement-touch-area', function (event) {
-				var agreementObj = $('.agreement-checkbox', $view);
-				if (agreementObj.prop('checked')) {
-					agreementObj.prop('checked', false);
-					$('.btn-place').addClass('disable');
-				} else {
-					agreementObj.prop('checked', true);
-					$('.btn-place').removeClass('disable');
-				}
-			}, $view);
-
-			/* 跳转到agreement页面查看协议 */
-			$.newTouch('.agreement', function (event) {
-				$doc.trigger('spa:navigate', {
-					hash: 'agreement'
-				});
-			}, $view);
-
-			/* 点击下订单 */
-			$.newTouch('.btn-place', function (event) {
-				event.preventDefault();
-				if ($(this).hasClass('disable')) {
-					return false;
-				}
-				if (product.type_str == "擦玻璃" && order.productCount < 10) {
-					$doc.trigger('spa:openpanel', ['simpleAlert', {
-						message: '数量不少于10平米'
-					}]);
-					return;
-				}
-
-				if (product.type_str == "新居开荒" && order.productCount < 50) {
-					$doc.trigger('spa:openpanel', ['simpleAlert', {
-						message: '数量不少于50平米'
-					}]);
-					return;
-				}
-				if (product.extra && !order.appendID) {
-					$doc.trigger('spa:openpanel', ['simpleAlert', {
-						message: '请选择服务'
-					}]);
-					return;
-				}
-				if (!order.address) {
-					$doc.trigger('spa:openpanel', ['simpleAlert', {
-						message: '请选择地址'
-					}]);
-					return;
-				}
-				if (!order.bookingTimeStr && product.name !== "双11虹口区日常保洁特价体验") {
-					$doc.trigger('spa:openpanel', ['simpleAlert', {
-						message: '请选择上门时间'
-					}]);
-					return;
-				}
-				var payChannel = 'wx_pub';
-				/* 使备注输入框失去焦点,获取值 */
-				$('.order-memo', $view).blur();
-				order.set('memo', $('.order-memo', $view).val());
-				/* 向服务器下订单 */
-				$doc.trigger('spa:openloader');
-				if (user.balance >= order.payValue) {
-					order.balance = order.payValue;
-					order.payValue = 0;
-				} else {
-					order.balance = user.balance;
-					order.payValue = order.payValue - order.balance;
-				}
-				order.addOrder(user.id, payChannel, function (res) {
-					$doc.trigger('spa:closeloader');
-					if (res.success) {
-						// 更新user的订单
-						user.orders[1].data.push(res.data);
-						// 更新user的优惠券
-						var oldCouponList = user.orderCoupons;
-						var oldCouponId = order.couponID;
-						var newCouponList = [];
-						$.each(oldCouponList, function (index, val) {
-							if (val.id !== oldCouponId) {
-								newCouponList.push(oldCouponList[index])
-							}
-						});
-						user.orderCoupons = newCouponList;
-
-						var orderID = order.id;
-						order.reset();
-						$('.booking-time', $view).html('请选择');
-						if (res.data.status == 1) {
-							$doc.trigger('spa:navigate', {
-								hash: 'paySuccess'
-							});
-
-						} else {
-							$doc.trigger('spa:navigate', {
-								hash: 'pay',
-								pushData: {
-									orderID: orderID,
-									backHash: ''
-								}
-							});
-						}
-					} else {
-						$doc.trigger('spa:openpanel', ['simpleAlert', {
-							message: res.message
-						}]);
-					}
-				});
-			}, $view);
-			dtd.resolve();
-		},
-		beforeopen: function (pageData, dtd) {
-			/*地址- setInterval-setTimeout*/
-			setTimeout(function () {
-				if ($('.booking-time').html() == "选择服务时间" && order.bookingTimeStr.length > 0) {
-					$('.booking-time', $view).html(order.bookingTimeStr);
-				}
-				/*隐藏广告位*/
-				$('.product-pic-o2o').css('display', 'none');
-				/*当用户没有地址时*/
-				var defaultAddress = address.defaultAddress;
-				/*未登录*/
-				if (user.id.length == 0) {
-					$('.order-mobile').html('添加服务地址');
-				} else if (user.id.length != 0 && typeof(defaultAddress) !== "undefined") {
-					order.address = address.defaultAddress;
-					$('.order-username').html(defaultAddress.name);
-					$('.order-mobile').html(defaultAddress.mobile);
-					$('.order-address').html(defaultAddress.address.city + defaultAddress.address.area + defaultAddress.address.detail).css('text-align', 'right');
-				} else if (user.id.length != 0 && typeof(defaultAddress) == "undefined") {
-					$('.order-mobile').html('添加服务地址');
-				}
-			}, 500);
-			var $view = this;
-			var pushData = pageData.pushData;
-			/* 只有首页跳转来,才会带有needReset = true */
-			/*获取上一页跳转的路由名称*/
-			backHash = pushData.backHash ? pushData.backHash : '';
-			if (pushData.hasOwnProperty('needReset') && pushData.needReset) {
-				/* 接收首页传来的product,填写order的productType(产品类型)、productID(产品ID)两个字段 */
-				pushData.needReset = false;
-				product = pushData.product;
-				order.productType = product.type;
-				order.productID = product.id;
-				order.productCount = 1;
-				order.couponValue = 0;
-				/* 根据product建立渲染页面的数据 */
-				var tmpData = {
-					/* 环境,目前只决定是否显示保洁师 */
-					env: config,
-					/* 环境 */
-					showNavBar: !config.isWX && !config.isChubao,
-					imgSrc: product.imgSrc,
-					/* 标题栏的标题 */
-					title: product.name,
-					/* extra选择项 */
-					extra: product.extra,
-					/* 如果用户有优惠券,则显示优惠券的选择栏 */
-					showCoupon: user.orderCoupons.length,
-					/* 账户余额 */
-					balance: user.balance
-				};
-				/* 渲染页面 */
-				var tpl = template('placeOrder/index', tmpData);
-				$view.find('.spa-page-body').html(tpl);
-				/* 绑定费用数据 */
-				if (product.extra) {
-					order.price = 0;
-					order.cost = 0;
-				} else {
-					order.price = product.price;
-					order.cost = product.price * order.productCount;
-				}
-				payCharge($('.order-cost', $view));
-
-				/* 软键盘相关操作时对IScroll的补偿 */
-				fixScroll(pageData);
-
-				// console.log(pageData.scroll.scrollToElement(that, 0));
-				$('.order-memo', $view).focus(function (event) {
-					alert("触发focus事件");
-					var that = this;
-					checkScroll(pageData, function () {
-						if (pageData.scroll) {
-							pageData.scroll.scrollToElement(that, 0);
-
-						}
-					});
-				});
-				$('.order-memo', $view).on('closeKeyboard', function (event) {
-					alert("触发closeKeyboard事件");
-					checkScroll(pageData);
-					$(this).blur();
-				});
-				$('.order-memo', $view).blur(function (event) {
-					alert("触发blur事件");
-					checkScroll(pageData);
-				});
-
-				/* 填写备注时,提交按钮失焦 */
-				$('#order-form', $view).on('submit', function (event) {
-					$(this).blur();
-					return false;
-				});
-			}
-			dtd.resolve();
-		},
-		afteropen: function (pageData, dtd) {
-
-			var type = pageData.pushData.productType;
-			native.registerEvent(true);
-			dtd.resolve();
-			if (config.isWX) {
-				wx.ready(function () {
-					wx.onMenuShareTimeline({
-						title: '家政服务' + product.desc[1].content + ',首选壹管家',
-						link: 'http://www.yiguanjia.me/o2o/web/index',
-						imgUrl: product.desc[0].content
-					});
-					wx.onMenuShareAppMessage({
-						title: '家政服务' + product.desc[1].content + ',首选壹管家',
-						desc: '全程管家,精心每一个细节',
-						link: 'http://www.yiguanjia.me/o2o/web/index',
-						imgUrl: product.desc[0].content
-					});
-				});
-			}
-		},
-		afterclose: function (pageData) {
-			native.registerEvent(false);
-		}
-	}
+    /*
+     * 这里对product和order做一个说明。
+     * product前台写死。order沿用原模型,但只用其中几个字段。
+     * 对应关系如下:
+     * product.id == order.productID :产品ID
+     * product.type == order.productType :产品类型,约定的数字
+     * product.price == order.cost :订单原价,当product的extra字段为空
+     * product.extra.price == order.cost :订单原价,当product的extra字段不为空
+     * product.type_str == order.serviceName :服务名称
+     * product.extra.type == order.appendID :服务的额外选项,当product的extra字段不为空
+     */
+
+    /* 从首页传来的产品数据 */
+    var product;
+    var backHash;
+    /* 软键盘弹出与消失时布局变动。 */
+    function checkScroll(pageData, callback) {
+        if (pageData.scroll) {
+            if (!pageData.scrollHeight) {
+                pageData.scrollHeight = 0;
+            }
+            clearInterval(pageData.scrollCheck);
+            clearTimeout(pageData.scrollCheckAutoCancel);
+            pageData.scrollCheck = setInterval(function () {
+                pageData.scroll.refresh();
+                if ($.isFunction(callback)) {
+                    callback();
+                }
+            }, 50);
+
+            pageData.scrollCheckAutoCancel = setTimeout(function () {
+                clearInterval(pageData.scrollCheck);
+            }, 500);
+        }
+    }
+
+    /* 返回上一级 */
+    function back(event) {
+        event.preventDefault();
+        $(document).trigger('spa:navigate', {
+            hash: backHash,
+            pushData: {
+                dontNeedReload: true
+            }
+        });
+    }
+
+    /* 重置页面时调用,重新生成IScroll */
+    function fixScroll(pageData) {
+        setInterval(function () {
+            if (product.name == "首单日常保洁2小时体验") {
+                $('.selected').css('display', 'none');
+            }
+        }, 100);
+        if (pageData.scroll) {
+            pageData.scroll.destroy();
+            pageData.scroll = null;
+        }
+        var placeOrderScroll;
+        setTimeout(function () {
+            pageData.scroll = new IScroll('#placeOrderScroll');
+        }, 700);
+    }
+
+    /* 算账。 */
+    function payCharge($orderCost) {
+        order.payValue = order.cost - order.couponValue;
+        $orderCost.text('¥' + order.payValue);
+    }
+
+    /* 也是自动选取最大优惠券的操作,只是与setCoupon策略不同
+     function suitable(me, doc, productID, type, petPrice, pay, pageData, extra, precedence) {
+     extra = extra || 0;
+     precedence = precedence || 0;
+     // 获取该类型宠物 可用优惠券
+     doc.trigger('spa:openloader');
+     api.getCouponList({
+     products: JSON.stringify([{
+     product_id: productID,
+     count: 1
+     }]),
+     type: type,
+     user_id: user.id
+     }, function (res) {
+     doc.trigger('spa:closeloader');
+     if (!res.success) {
+     doc.trigger('spa:openpanel', ['simpleAlert', {
+     message: res.message
+     }]);
+     } else {
+     user.orderCoupons = res.data;
+
+     // 优惠券数据更新
+     var coupons = user.orderCoupons;
+     var couponSelectVal = 0;
+     if (coupons.length) {
+     // 选取最大金额
+     var selectCoupon = user.getMaxAvailableCoupon();
+
+     // 缓存到购物车
+     cart['products'][type]['couponName'] = coupons[selectCoupon.couponIndex].coupon.name;
+     cart['products'][type]['couponVal'] = selectCoupon.couponSelectVal;
+     cart['products'][type]['couponId'] = coupons[selectCoupon.couponIndex].id;
+     cart['products'][type]['couponList'] = coupons;
+
+     // dom 更新
+     $('.coupon-selected-name', me).html(user.getCouponName(coupons[selectCoupon.couponIndex].id));
+     $('.coupon-cost', me).html('-' + selectCoupon.couponSelectVal);
+     $('.select-coupon', me).removeClass('hide');
+     $('.order-cost', me).attr('data-coupon', selectCoupon.couponSelectVal);
+     $('.order-list', me).removeClass('hide');
+     $('.order-cost', me).attr('data-pay', parseFloat(petPrice) - parseFloat(selectCoupon.couponSelectVal) + extra);
+
+     // 减去优惠
+     petPrice = parseFloat(petPrice) - parseFloat(selectCoupon.couponSelectVal) + extra + precedence;
+
+     } else {
+     // 缓存到购物车
+     cart['products'][type]['couponName'] = '';
+     cart['products'][type]['couponVal'] = '';
+     cart['products'][type]['couponId'] = '';
+     cart['products'][type]['couponList'] = [];
+
+     $('.coupon-selected-name', me).html('');
+     $('.coupon-cost', me).html('- 0');
+     $('.select-coupon', me).addClass('hide');
+     $('.order-cost', me).attr('data-coupon', 0);
+
+     petPrice = parseFloat(petPrice) + extra + precedence;
+     }
+     // 缓存到本地
+     cart.setCache('products');
+
+     // 更新dom总价
+     $('.order-cost', me).attr('data-costs', pay);
+     $('.order-cost', me).html('¥' + petPrice);
+
+     $('.select-pet', me).removeClass('hide');
+
+     if (pageData && pageData.scroll) {
+     pageData.scroll.refresh();
+     }
+     }
+     });
+     }
+     */
+
+    /* 优惠券取决于主服务、宠物、数量、时间,所以在这几个值改变后要调用这个方法,更新最大优惠
+     function setCoupon(me, pageData, extraServicePrice) {
+     $(document).trigger('spa:openloader');
+     var products = JSON.stringify([{
+     product_id: order['productID'],
+     count: order.productCount
+     }]);
+     var time = order.bookingDate + ' ' + order.bookingTime + ':00';
+     user.getProductCoupon(products, time, cachePageData.productType, function (res) {
+     $(document).trigger('spa:closeloader');
+     if (res.success) {
+     var coupons = user.orderCoupons;
+     var price = 0;
+     if (coupons.length) {
+     var selectCoupon = user.getMaxAvailableCoupon();
+     cart['products'][cachePageData.productType]['couponName'] = coupons[selectCoupon.couponIndex].coupon.name;
+     cart['products'][cachePageData.productType]['couponVal'] = selectCoupon.couponSelectVal;
+     cart['products'][cachePageData.productType]['couponId'] = coupons[selectCoupon.couponIndex].id;
+     cart['products'][cachePageData.productType]['couponList'] = coupons;
+
+     $('.coupon-selected-name', me).html(user.getCouponName(coupons[selectCoupon.couponIndex].id));
+     $('.coupon-cost', me).html('-' + selectCoupon.couponSelectVal);
+     $('.select-coupon', me).removeClass('hide');
+     $('.order-cost', me).attr('data-coupon', selectCoupon.couponSelectVal);
+     $('.order-list', me).removeClass('hide');
+     price = parseFloat(order.petPrice) * order.productCount - parseFloat(selectCoupon.couponSelectVal) + parseFloat(extraServicePrice);
+
+     } else {
+     price = parseFloat(order.petPrice) * order.productCount + parseFloat(extraServicePrice);
+
+     $('.coupon-selected-name', me).html('');
+     $('.select-coupon', me).addClass('hide');
+     $('.order-cost', me).attr('data-coupon', '0');
+     $('.order-cost', me).attr('data-pay', parseFloat(order.petPrice));
+     cart['products'][cachePageData.productType]['couponName'] = '';
+     cart['products'][cachePageData.productType]['couponVal'] = '';
+     cart['products'][cachePageData.productType]['couponId'] = '';
+     cart['products'][cachePageData.productType]['couponList'] = [];
+     }
+     // 加急
+     if (order.precedence) {
+     price = price + parseFloat(product.precedence);
+     }
+     $('.order-cost', me).attr('data-pay', price);
+     $('.order-cost', me).attr('data-costs', order.petPrice);
+     $('.order-cost', me).html('¥' + price);
+
+     cart.setCache('products');
+
+     pageData.scroll.refresh();
+     } else {
+     $(document).trigger('spa:openpanel', ['simpleAlert', {
+     message: res.message
+     }]);
+     }
+     });
+     }  */
+
+    /* 在选择主服务或宠物后,筛选附加服务
+     function suitExtraService(me, checkedName) {
+     var newExtraService = product.getExtraServiceList(order.productType, order.petName, checkedName);
+     var extraService = {
+     extraService: newExtraService
+     }
+     var extraServiceTpl = template('placeOrder/list', extraService);
+     var extraServiceTpl2 = template('placeOrder/list2', extraService);
+     me.find('.extra-service-list').html(extraServiceTpl);
+     me.find('.calc-items').html(extraServiceTpl2).addClass('hide');
+
+     cachePageData.extraServicePrice = 0;
+     cachePageData.extraServiceCount = 0;
+     } */
+
+    /* 在选择主服务、附加服务、宠物、时间、地点之后,重置保洁师
+     function resetTech(me) {
+     order.beautician.name = '请选择';
+     order.beautician.id = '';
+     $('.booking-people', me).html(order.beautician.name);
+     }  */
+
+    return {
+        title: '壹管家上门服务',
+        body: '',
+        init: function (pageData, dtd) {
+            var $view = this;
+            var $doc = $(document);
+
+
+            /* 三个返回操作 */
+            $.newTouch('.back-button', function (event) {
+                back.call(this, event);
+            }, $view);
+            $view.on('tapBackButton', function (event) {
+                back.call(this, event);
+            });
+            $view.on('swipeRight', function (event) {
+                back.call(this, event);
+            });
+
+
+
+
+            /* 点击查看详情。跳转到product页面 */
+            $.newTouch('.product-pic-o2o', function (event) {
+                $doc.trigger('spa:navigate', {
+                    hash: 'product',
+                    pushData: {
+                        produc: product,
+                        needReload: true
+                    }
+                });
+            }, $view);
+
+            /*特效*/
+            setInterval(function run() {
+                $('.product-img').fadeToggle();
+            }, 500);
+            /* 点击选择extra。 */
+            $.newTouch('.btn-main-service', function (event) {
+                /* on代表这一条的选中状态。如果已经选中了,就return。this的作用域是这一条extra。 */
+                if ($(this).hasClass('on')) return;
+                /* 如果没有on状态,加上on。 */
+                $(this).addClass('on');
+                /* 删掉其他选择框的on状态 */
+                $(this).parent().siblings().find('.btn').removeClass('on');
+                /* 填写order */
+                order.appendID = $(this).attr('data-extra-type');
+                order.price = $(this).attr('data-extra-price');
+                order.cost = order.price * order.productCount;
+                // 重置代金券
+                $('.coupon-selected-name', $view).html('选择优惠券');
+                order.couponValue = 0;
+                order.couponID = '';
+                payCharge($('.order-cost', $view));
+            }, $view);
+
+            /* 点击选择地址 */
+            $.newTouch('.select-address', function (event) {
+                event.preventDefault();
+                /* 如果是微信客户端,跳转到addressList页面。 */
+                if (!config.isAndroid && !config.isIOS) {
+                    $doc.trigger('spa:navigate', {
+                        hash: 'addressList',
+                        pushData: {
+                            backHash: 'placeOrder'
+                        },
+                        callback: {
+                            /* 在addressList页面挑选之后,回到这个页面时执行的回调。 */
+                            onSelect: function (address, station) {
+                                order.set('address', address, true);
+                                order.set('stationID', station, true);
+
+                                var addressStr = '';
+                                if (order.address.address.poi) {
+                                    addressStr = order.address.address.city + order.address.address.area + order.address.address.poi.name + order.address.address.detail
+                                } else {
+                                    addressStr = order.address.address.province + order.address.address.city + order.address.address.area + order.address.address.detail
+                                }
+                                $('.order-address', $view).html(addressStr);
+                                $('.order-username', $view).html(order.address.name);
+                                $('.order-mobile', $view).html(order.address.mobile);
+                            }
+                        }
+                    });
+                }
+            }, $view);
+
+            /* 点击选择附加服务
+             $.newTouch('.item-checkbox', function (event) {
+             event.preventDefault();
+             // 如果'.main-service'元素的子元素数目为正(也就是说出现了选择主服务那一栏,也就是说在前一页选择的是附加服务),且不处于on状态(也就是还没有选择主服务)
+             if ($('.main-service', $view).length && !$('.main-service', $view).find('.btn-main-service').hasClass('on')) {
+             // 弹出一个对话框
+             $doc.trigger('spa:openpanel', ['simpleAlert', {
+             message: '请选择服务类型'
+             }]);
+             return;
+             }
+             // $(this).data('xxx'):获取this中data-xxx的数据。
+             // 获取这一条附加服务的相关的数据。select没用,估计是原来想用这个记录选中状态的。
+             var select = $(this).data('select'),
+             id = $(this).data('id'),
+             index = $(this).parent().index(),
+             price = $(this).data('price');
+             extraType = $(this).data('servicetype');
+             // 获取附加服务的总费用。
+             var extraCost = $('.order-cost', $view).attr('data-extra');
+             // 如果原来没有选中这一项,下面就是选中的操作
+             if (!$(this).hasClass('checked')) {
+             // 附加服务数量+1
+             cachePageData.extraServiceCount++;
+             // 保存附加服务的总价格
+             cachePageData.extraServicePrice += parseFloat(price);
+             // 添加checked状态
+             $(this).addClass('checked');
+             var serviceParam = {
+             product_id: id,
+             count: 1
+             }
+             // /为什么是个数组?
+             order.extraService[index] = serviceParam;
+             // 把订单详情中对应的项目添加on属性
+             $('.calc-items', $view).find('.select-extra-service').eq(index).addClass('on');
+             // 计算附加服务的总费用。
+             extraCost = parseFloat(extraCost) + parseFloat(price);
+             $('.order-cost', $view).attr('data-extra', extraCost);
+             }
+             // 如果原来选中了这一项,下面就是取消选中的操作
+             else {
+             // 附加服务数量-1
+             cachePageData.extraServiceCount--;
+             // 保存附加服务的总价格
+             cachePageData.extraServicePrice -= parseFloat(price);
+             // 删除checked属性
+             $(this).removeClass('checked');
+
+             order.extraService[index] = {};
+             // 把订单详情中对应的项目删掉on属性
+             $('.calc-items', $view).find('.select-extra-service').eq(index).removeClass('on');
+             // 计算附加服务的总费用。
+             extraCost = parseFloat(extraCost) - parseFloat(price);
+             $('.order-cost', $view).attr('data-extra', extraCost);
+             }
+             // 根据附加服务的数量,更新订单详情中附加服务模块的显示与隐藏
+             if (cachePageData.extraServiceCount > 0) {
+             $('.calc-items', $view).removeClass('hide');
+             } else {
+             $('.calc-items', $view).addClass('hide');
+             }
+             // 更新订单详情中每一条附加服务的显示与隐藏
+             if ($('.calc-items', $view).find('.select-extra-service').hasClass('on')) {
+             $('.calc-items', $view).removeClass('hide');
+             } else {
+             $('.calc-items', $view).addClass('hide');
+             }
+             // 计算总价钱
+             payCharge();
+             // 刷新界面
+             pageData.scroll.refresh();
+             }, $view); */
+
+            /* 点击选择保洁师
+             $.newTouch('.show-beautician-picker', function (event) {
+             // 如果订单的地址数据为空
+             if (!order.address || !order.address.address_id) {
+             // 弹出提示框
+             $doc.trigger('spa:openpanel', ['simpleAlert', {
+             message: '请选择地址'
+             }]);
+             return;
+             }
+             // 点击订单的预定时间为空
+             if (order.bookingDate == '' || order.bookingTime == '') {
+             // 弹出提示框
+             $doc.trigger('spa:openpanel', ['simpleAlert', {
+             message: '请选择上门时间'
+             }]);
+             return;
+             }
+             // 点击订单的主服务类型为空
+             if (!order.productType) {
+             // /弹出提示框
+             $doc.trigger('spa:openpanel', ['simpleAlert', {
+             message: '请选择服务类型'
+             }]);
+             return;
+             }
+             // 生成预定时间的字符串
+             var bookingTime = order.bookingDate + ' ' + order.bookingTime + ':00';
+             // 生成所有服务的字符串
+             var service_type_array = [order.productType];
+             var service_type = '[' + service_type_array.join(',') + ']';
+             // 根据服务、时间、地址,向服务器请求保洁师列表
+             user.getTechList(
+             service_type,
+             bookingTime,
+             order.address.address_id,
+             // 请求成功后跳转到beautician页面,在beautician页面展示保洁师列表
+             function (res) {
+             $doc.trigger('spa:navigate', {
+             hash: 'beautician',
+             pushData: {
+
+             }
+             });
+             }
+             );
+             }, $view);  */
+
+            /* 点击选择宠物相关
+             $.newTouch('.show-product-picker', function () {
+             // 如果有了selected属性,就return
+             if ($(this).hasClass('selected')) return;
+             event.preventDefault();
+             // 主服务>10是什么意思???
+             if (cachePageData.productType > 10) {
+             $doc.trigger('spa:openpanel', ['simpleAlert', {
+             message: '请选择服务类型'
+             }]);
+             return;
+             }
+             // 弹出一个列表选择框。
+             $doc.trigger('spa:openpanel', ['productOption', {
+             pets: product.productGroup[cachePageData.productType],
+             productType: cachePageData.productType,
+             callback: {
+             onSelect: function (petName, petWeight, petPrice) {
+             // set order info
+             order.petName = petName;
+             order.petWeight = petWeight;
+             order.petPrice = petPrice;
+             order.productType = cachePageData.productType;
+             order.petID = cart['products'][cachePageData.productType]['petID'];
+             order.productID = cart['products'][cachePageData.productType]['productID'];
+             // user.orderCoupons = res.data;
+             // 筛选附加服务
+             if (cachePageData.extraServiceType > 10) {
+             var selectExtraServiceName = cachePageData.defaultExtraService[cachePageData.extraServiceType].serviceName;
+             var selectExtraServicePrice = cachePageData.defaultExtraService[cachePageData.extraServiceType].servicePrice;
+
+             $('.order-cost', $view).attr('data-extra', selectExtraServicePrice);
+             }
+
+             suitExtraService($view, selectExtraServiceName);
+
+             $('.pet-info', $view).html(petName + ' (' + petWeight + ')');
+             $('.pet-type', $view).html(petName + ' (' + petWeight + ')');
+             $('.total-cost', $view).html('¥' + petPrice);
+
+             if ($('.calc-items', $view).find('.select-extra-service').hasClass('on')) {
+             $('.calc-items', $view).removeClass('hide');
+             petPrice = parseFloat(petPrice) + parseFloat(selectExtraServicePrice);
+             }
+
+             $('.order-cost', $view).attr('data-costs', order.petPrice);
+             $('.order-cost', $view).attr('data-extra', cachePageData.extraServicePrice);
+             $('.order-cost', $view).html('¥' + petPrice);
+
+             $('.select-pet', $view).removeClass('hide');
+
+             if (order['productID'] && order.bookingDate) {
+             setCoupon($view, pageData, cachePageData.extraServicePrice);
+             }
+
+             pageData.scroll.refresh();
+             }
+             }
+             }]);
+             }, $view); */
+
+            /* 点击数量-1 */
+            $.newTouch('.btn-sub', function (event) {
+                if (order.productCount <= 1) return;
+                if (order.price == 0) {
+                    $doc.trigger('spa:openpanel', ['simpleAlert', {
+                        message: '请选择服务'
+                    }]);
+                    return;
+                }
+                var inputNum = $('.service-count', $view).children('.input-num').val();
+                if (isNaN(inputNum)) {
+                    $doc.trigger('spa:openpanel', ['simpleAlert', {
+                        message: '请输入数字'
+                    }]);
+                    return false;
+                }
+                order.productCount = inputNum;
+                order.productCount--;
+                order.cost = order.productCount * order.price;
+                $('.service-count', $view).children('.input-num').val(order.productCount);
+                /* 算账 */
+                payCharge($('.order-cost', $view));
+            }, $view);
+
+            /*点击body重置金额*/
+            $.newTouch('body', function (event) {
+                //input输入
+                var inputNum = $('.service-count', $view).children('.input-num').val();
+                if (isNaN(inputNum)) {
+                    $doc.trigger('spa:openpanel', ['simpleAlert', {
+                        message: '请输入数字'
+                    }]);
+                    return false;
+                }
+                //与input输入框的文本的数据做交互;
+                order.productCount = inputNum;
+                order.cost = order.productCount * order.price;
+                $('.service-count', $view).children('.input-num').val(order.productCount);
+            })
+
+            /* 点击数量+1 */
+            $.newTouch('.btn-add', function (event) {
+                if (order.productCount > 999) return;
+                if (order.price == 0) {
+                    $doc.trigger('spa:openpanel', ['simpleAlert', {
+                        //message: '请选择extra'
+                        message: '请选择服务'
+                    }]);
+                    return;
+                }
+                var inputNum = $('.service-count', $view).children('.input-num').val();
+                if (isNaN(inputNum)) {
+                    $doc.trigger('spa:openpanel', ['simpleAlert', {
+                        message: '请输入数字'
+                    }]);
+                    return false;
+                }
+                order.productCount = inputNum;
+                order.productCount++;
+                order.cost = order.productCount * order.price;
+                $('.service-count', $view).children('.input-num').val(order.productCount);
+                /* 算账 */
+                payCharge($('.order-cost', $view));
+            }, $view);
+
+            /* 点击选择时间 */
+            $.newTouch('.show-time-picker', function (event) {
+                event.preventDefault();
+                // 以下是构建时间选择器,不用管。直接看选完之后的回调。
+                var dayNamesA = ['周日', '周一', '周二', '周三', '周四', '周五', '周六'];
+                var dayNamesB = ['今天'];
+                var columns = {
+                    columnDay: [],
+                    columnTime: []
+                };
+                var now = new Date().getHours();
+                var daySelectIndex = 0;
+                for (var i = 1; i <= 9; i++) {
+                    var dd = new Date();
+                    dd.setDate(dd.getDate() + i);
+
+                    var month = dd.getMonth() + 1;
+                    var day = dd.getDate();
+                    var date = month + '月' + day + '日';
+
+                    var dayStr = helper.getDateStr({
+                        date: dd,
+                        separator: '-'
+                    });
+
+                    var dayStrSuffix;
+                    if (i < dayNamesB.length) {
+                        dayStrSuffix = dayNamesB[i];
+                    } else {
+                        dayStrSuffix = dayNamesA[dd.getDay()];
+                    }
+                    var selected = false;
+                    if (order.bookingDate) {
+                        selected = true;
+                    }
+                    if (dayStr == order.bookingDate) {
+                        daySelectIndex = i;
+                    } else {
+                        daySelectIndex = -1;
+                    }
+                    columns.columnDay.push({
+                        text: date, // 几月几日
+                        day: dayStrSuffix, // 周几
+                        value: dayStr,
+                        selected: selected,
+                        selectIndex: daySelectIndex
+                    });
+                }
+
+                var currentDate = new Date();
+                var currentMonth = currentDate.getMonth() + 1;
+                var currentDay = currentDate.getDate();
+                var now = new Date().getHours();
+                var min = new Date().getMinutes();
+                var timeSelectIndex = 0;
+                for (var i = 9; i <= 19; i++) {
+                    var hour = i + ':00';
+                    var selected = false;
+                    if (order.bookingTime) {
+                        selected = true;
+                    }
+                    if (hour == order.bookingTime) {
+                        timeSelectIndex = i;
+                    } else {
+                        timeSelectIndex = -1;
+                    }
+                    columns.columnTime.push({
+                        month: currentMonth,
+                        day: currentDay,
+                        min: min,
+                        num: i,
+                        now: now,
+                        text: hour,
+                        value: hour,
+                        selected: selected,
+                        selectIndex: timeSelectIndex
+                    })
+                }
+                $doc.trigger('spa:openpanel', ['dataPicker', {
+                    // type: cachePageData.productType,
+                    columns: columns,
+                    selected: order.bookingDate,
+                    // offDay: product.offDay,
+                    callback: {
+                        // 选完之后的回调。values:[日期,时间];texts:时间字符串;precedence:是否加急;
+                        onSelect: function (values, texts, precedence) {
+                            // 重置代金券
+                            $('.coupon-selected-name', $view).html('选择优惠券');
+                            order.couponValue = 0;
+                            order.couponID = '';
+                            payCharge($('.order-cost', $view));
+                            // 填写order
+                            order.bookingDate = values[0];
+                            order.bookingTime = values[1];
+                            order.bookingTimeStr = texts[0] + ' ' + texts[1];
+                            order.precedence = precedence;
+                            // 更新预定时间组件
+                            $('.booking-time', $view).html(order.bookingTimeStr);
+                        }
+                    }
+                }]);
+            }, $view);
+
+            /* 点击选择优惠券 */
+            $.newTouch('.show-coupon-picker', function (event) {
+                if ($(this).hasClass('disabled')) return;
+                event.preventDefault();
+
+                var extraJson = '';
+                if (product.extra && !order.appendID) {
+                    $doc.trigger('spa:openpanel', ['simpleAlert', {
+                        message: '请选择服务'
+                    }]);
+                    return;
+                } else {
+                    extraJson = JSON.stringify([{type: order.appendID, price: order.price}]);
+                }
+
+                // 必须先选择时间
+                if (!order.bookingDate) {
+                    $doc.trigger('spa:openpanel', ['simpleAlert', {
+                        message: '请选择服务时间'
+                    }]);
+                    return;
+                }
+
+                // 跳转到picker页面,展示优惠券
+                $doc.trigger('spa:navigate', {
+                    hash: 'picker',
+                    pushData: {
+                        title: '选择优惠券',
+                        backHash: 'placeOrder',
+                        products: JSON.stringify([{
+                            product_id: order.productID,
+                            count: order.productCount
+                        }]),
+                        time: order.bookingDate + ' ' + order.bookingTime + ':00',
+                        type: order.productType,
+                        extraJson: extraJson
+                    },
+                    callback: {
+                        // 在picker页面挑选之后,回到这个页面时执行的回调。pickValue:选中的优惠券的ID;
+                        onSelect: function (pickValue) {
+                            if (pickValue == '') {
+                                $('.coupon-selected-name', $view).text('不使用');
+                                order.couponValue = 0;
+                            } else {
+                                for (var i in user.orderCoupons) {
+                                    var couponInfo = user.orderCoupons[i];
+                                    if (couponInfo.id == pickValue) {
+                                        $('.coupon-selected-name', $view).text(couponInfo['coupon']['name']);
+                                        order.couponValue = couponInfo['coupon']['value'];
+                                        break;
+                                    }
+                                }
+                            }
+                            // 填写order
+                            order.couponID = pickValue;
+                            // 计算总费用
+                            payCharge($('.order-cost', $view));
+                        }
+                    }
+                });
+            }, $view);
+
+            /* 是否选中同意用户协议,关系到下订单按钮是否激活 */
+            $.newTouch('.agreement-touch-area', function (event) {
+                var agreementObj = $('.agreement-checkbox', $view);
+                if (agreementObj.prop('checked')) {
+                    agreementObj.prop('checked', false);
+                    $('.btn-place').addClass('disable');
+                } else {
+                    agreementObj.prop('checked', true);
+                    $('.btn-place').removeClass('disable');
+                }
+            }, $view);
+
+            /* 跳转到agreement页面查看协议 */
+            $.newTouch('.agreement', function (event) {
+                $doc.trigger('spa:navigate', {
+                    hash: 'agreement'
+                });
+            }, $view);
+
+            /* 点击下订单 */
+            $.newTouch('.btn-place', function (event) {
+                event.preventDefault();
+                if ($(this).hasClass('disable')) {
+                    return false;
+                }
+                if (product.type_str == "擦玻璃" && order.productCount < 10) {
+                    $doc.trigger('spa:openpanel', ['simpleAlert', {
+                        message: '数量不少于10平米'
+                    }]);
+                    return;
+                }
+
+                if (product.type_str == "新居开荒" && order.productCount < 50) {
+                    $doc.trigger('spa:openpanel', ['simpleAlert', {
+                        message: '数量不少于50平米'
+                    }]);
+                    return;
+                }
+                if (product.extra && !order.appendID) {
+                    $doc.trigger('spa:openpanel', ['simpleAlert', {
+                        message: '请选择服务'
+                    }]);
+                    return;
+                }
+                if (!order.address) {
+                    $doc.trigger('spa:openpanel', ['simpleAlert', {
+                        message: '请选择地址'
+                    }]);
+                    return;
+                }
+                if (!order.bookingTimeStr && product.name !== "双11虹口区日常保洁特价体验") {
+                    $doc.trigger('spa:openpanel', ['simpleAlert', {
+                        message: '请选择上门时间'
+                    }]);
+                    return;
+                }
+                var payChannel = 'wx_pub';
+                /* 使备注输入框失去焦点,获取值 */
+                $('.order-memo', $view).blur();
+                order.set('memo', $('.order-memo', $view).val());
+
+                /* 向服务器下订单 */
+                $doc.trigger('spa:openloader');
+                if (user.balance >= order.payValue) {
+                    order.balance = order.payValue;
+                    order.payValue = 0;
+                } else {
+                    order.balance = user.balance;
+                    order.payValue = order.payValue - order.balance;
+                }
+                order.addOrder(user.id, payChannel, function (res) {
+                    $doc.trigger('spa:closeloader');
+                    if (res.success) {
+                        // 更新user的订单
+                        user.orders[1].data.push(res.data);
+                        // 更新user的优惠券
+                        var oldCouponList = user.orderCoupons;
+                        var oldCouponId = order.couponID;
+                        var newCouponList = [];
+                        $.each(oldCouponList, function (index, val) {
+                            if (val.id !== oldCouponId) {
+                                newCouponList.push(oldCouponList[index])
+                            }
+                        });
+                        user.orderCoupons = newCouponList;
+
+                        var orderID = order.id;
+                        order.reset();
+                        $('.booking-time', $view).html('请选择');
+                        if (res.data.status == 1) {
+                            $doc.trigger('spa:navigate', {
+                                hash: 'paySuccess'
+                            });
+
+                        } else {
+                            $doc.trigger('spa:navigate', {
+                                hash: 'pay',
+                                pushData: {
+                                    orderID: orderID,
+                                    backHash: ''
+                                }
+                            });
+                        }
+                    } else {
+                        $doc.trigger('spa:openpanel', ['simpleAlert', {
+                            message: res.message
+                        }]);
+                    }
+                });
+            }, $view);
+
+            dtd.resolve();
+        },
+        beforeopen: function (pageData, dtd) {
+            /*地址- setInterval-setTimeout*/
+            setTimeout(function () {
+                /*当用户没有地址时*/
+                var defaultAddress = address.defaultAddress;
+                if (typeof(defaultAddress.address) == "undefined") {
+                    // console.log("空");
+                    $('.order-mobile').html('添加服务地址');
+                } else if (typeof(defaultAddress.address) !== "undefined" && $('.order-username').html() == "") {
+                    // console.log("不为空");
+                    order.address = address.defaultAddress;
+                    $('.order-username').html(defaultAddress.name);
+                    $('.order-mobile').html(defaultAddress.mobile);
+                    $('.order-address').html(defaultAddress.address.city + defaultAddress.address.area + defaultAddress.address.detail);
+                    $('.order-address').css('text-align', 'right');
+                }
+            }, 500);
+
+            var $view = this;
+            var pushData = pageData.pushData;
+
+
+            /* 只有首页跳转来,才会带有needReset = true */
+            /*获取上一页跳转的路由名称*/
+            backHash = pushData.backHash ? pushData.backHash : '';
+
+            if (pushData.hasOwnProperty('needReset') && pushData.needReset) {
+
+                /* 接收首页传来的product,填写order的productType(产品类型)、productID(产品ID)两个字段 */
+                pushData.needReset = false;
+                product = pushData.product;
+
+                order.productType = product.type;
+                order.productID = product.id;
+                order.productCount = 1;
+                order.couponValue = 0;
+                /* 根据product建立渲染页面的数据 */
+                var tmpData = {
+                    /* 环境,目前只决定是否显示保洁师 */
+                    env: config,
+                    /* 环境 */
+                    showNavBar: !config.isWX && !config.isChubao,
+                    imgSrc: product.imgSrc,
+                    /* 标题栏的标题 */
+                    title: product.name,
+                    /* extra选择项 */
+                    extra: product.extra,
+                    /* 如果用户有优惠券,则显示优惠券的选择栏 */
+                    showCoupon: user.orderCoupons.length,
+                    /* 账户余额 */
+                    balance: user.balance
+                };
+                /* 渲染页面 */
+                var tpl = template('placeOrder/index', tmpData);
+                $view.find('.spa-page-body').html(tpl);
+                /* 绑定费用数据 */
+                if (product.extra) {
+                    order.price = 0;
+                    order.cost = 0;
+                } else {
+                    order.price = product.price;
+                    order.cost = product.price * order.productCount;
+                }
+                payCharge($('.order-cost', $view));
+
+                /* 软键盘相关操作时对IScroll的补偿 */
+                fixScroll(pageData);
+                $('.order-memo', $view).focus(function (event) {
+                    var that = this;
+                    checkScroll(pageData, function () {
+                        if (pageData.scroll) {
+                            pageData.scroll.scrollToElement(that, 0);
+                        }
+                    });
+                });
+                $('.order-memo', $view).on('closeKeyboard', function (event) {
+                    checkScroll(pageData);
+                    $(this).blur();
+                });
+                $('.order-memo', $view).blur(function (event) {
+                    checkScroll(pageData);
+                });
+
+                /* 填写备注时,提交按钮失焦 */
+                $('#order-form', $view).on('submit', function (event) {
+                    $(this).blur();
+                    return false;
+                });
+            }
+            dtd.resolve();
+        },
+        afteropen: function (pageData, dtd) {
+
+            var type = pageData.pushData.productType;
+            native.registerEvent(true);
+            dtd.resolve();
+            if (config.isWX) {
+                wx.ready(function () {
+                    wx.onMenuShareTimeline({
+                        title: '家政服务' + product.desc[1].content + ',首选壹管家',
+                        link: 'http://www.yiguanjia.me/o2o/web/index',
+                        imgUrl: product.desc[0].content
+                    });
+                    wx.onMenuShareAppMessage({
+                        title: '家政服务' + product.desc[1].content + ',首选壹管家',
+                        desc: '全程管家,精心每一个细节',
+                        link: 'http://www.yiguanjia.me/o2o/web/index',
+                        imgUrl: product.desc[0].content
+                    });
+                });
+            }
+        },
+        afterclose: function (pageData) {
+            native.registerEvent(false);
+        }
+    }
 })

+ 10 - 33
www/webapp/o2o/js/page/product.js

@@ -1,14 +1,10 @@
 define(['$', 'template', 'product', 'cart', 'api', 'order', 'user', 'config', 'review', 'native'], function ($, template, product, cart, api, order, user, config, review, native) {
-	var backHash;
-	var product;
+
 	/* 返回上一级 */
 	function back(event) {
 		event.preventDefault();
 		$(document).trigger('spa:navigate', {
-			hash: backHash,
-			pushData: {
-				dontNeedReload: true
-			}
+			hash: 'placeOrder'
 		});
 	}
 
@@ -60,24 +56,6 @@ define(['$', 'template', 'product', 'cart', 'api', 'order', 'user', 'config', 'r
 				back.call(this, event);
 			});
 
-			//立即下单
-			$.newTouch('.product-new-btn', function (event) {
-				var products = {};
-				for (var i = 0; i < product.allList.length; i++) {
-					if (product.allList[i].name == cachePageData.product.name) {
-						products = product.allList[i];
-					}
-				}
-				$doc.trigger('spa:navigate', {
-					hash: 'placeOrder',
-					pushData: {
-						product: products,
-						needReset: true,
-						backHash: 'product'
-					}
-				});
-			}, $view);
-
 			// 提示信息
 			$.newTouch('.btn-product-info', function (event) {
 				$doc.trigger('spa:navigate', {
@@ -192,14 +170,12 @@ define(['$', 'template', 'product', 'cart', 'api', 'order', 'user', 'config', 'r
 			var $view = this;
 			var $doc = $(document);
 			var pushData = pageData.pushData;
-			/*获取上一页跳转的路由名称*/
-			backHash = pushData.backHash ? pushData.backHash : '';
+
 			//渲染空页面
-			cachePageData.product = pushData.product;
-			cachePageData.needReload = pushData.needReset;
-			var dataArray = eval(pushData.product.desc);//获取product图像
+			cachePageData.product = pushData.produc;
+			cachePageData.needReload = pushData.needReload;
 			if (cachePageData.needReload) {
-				cachePageData.needReloadReview = false;
+				cachePageData.needReloadReview = true;
 				var commentCounts = 0;
 				var productType = cachePageData.product.type;
 				$doc.trigger('spa:openloader');
@@ -210,19 +186,20 @@ define(['$', 'template', 'product', 'cart', 'api', 'order', 'user', 'config', 'r
 							type: productType,
 							title: cachePageData.product.name,
 							// tips: product.getGroupDesc(productType),
-							// picLists: cachePageData.product.pics,
-							picLists: dataArray,
+							picLists: cachePageData.product.pics,
 							commentCounts: commentCounts,
 							showNavBar: !config.isWX && !config.isChubao,
 							// isShowVideo: isShowVideo()
 						});
 						$('.spa-page-body', $view).html(tpl);
+
 						var iframeW = document.body.clientWidth - 30;
 						$('#iframe-service-introduce', $view).height(Math.ceil(iframeW * 360 / 640));
-						$('.img-list-container').css('margin-bottom', ($('.product-new').height() + 10));
+
 						setTimeout(function () {
 							cachePageData.scroll = new IScroll('#productDescScroll');
 						}, 1000);
+
 						$doc.trigger('spa:closeloader');
 					}
 				}, false);

+ 47 - 53
www/webapp/o2o/js/page/rechargee.js

@@ -1,13 +1,13 @@
-define(['$', 'template', 'recharge', 'native', 'config', 'user','product'], function ($, template, recharge, native, config, user,product) {
+define(['$', 'template', 'IScroll', 'recharge', 'native', 'config', 'user'], function ($, template, IScroll, recharge, native, config, user) {
 	var backHash;
 
 	function back(event) {
 		event.preventDefault();
 		$(document).trigger('spa:navigate', {
-			hash: backHash
-			// pushData: {
-			// 	dontNeedReload: true
-			// }
+			hash: backHash,
+			pushData: {
+				dontNeedReload: true
+			}
 		});
 	}
 
@@ -15,63 +15,49 @@ define(['$', 'template', 'recharge', 'native', 'config', 'user','product'], func
 		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);
+				// history.go(-1);
 			});
 
 			$.newTouch('.back-button', function (event) {
 				back.call(this, event);
+				// history.go(-1);
 			}, $view);
 
 			$view.on('tapBackButton', function (event) {
 				back.call(this, event);
+				// history.go(-1);
 			});
-
-			// im
-			$.newTouch('.btn-action-logo', function (event) {
-				event.preventDefault();
-				window.location.href = '/index.php?r=o2o/advisory/im';
-			}, $view);
-			/*首页*/
-			$.newTouch('.btn-action-my-order', function () {
+//点击展示协议   vactivity-text
+			$.newTouch('.pay-agreement',function (event) {
 				event.preventDefault();
 				$doc.trigger('spa:navigate', {
-					hash: '',
+					hash: 'activity-text',
 					pushData: {
-						needReset: true
+						needReload: true
 					}
 				});
 			}, $view);
-			/*个人中心*/
-			$.newTouch('.btn-action-coupon', function (event) {
-				event.preventDefault();
-				user.checkLogin(function () {
-					$doc.trigger('spa:navigate', {
-						hash: 'mine',
-						pushData: {
-							needReset: true
-						}
-					});
-				});
-			}, $view);
-
-
-			//点击展示协议   vactivity-text
-			$.newTouch('.pay-agreement', function (event) {
+			//规则 pay-rule
+			$.newTouch('.pay-rule',function (event) {
 				event.preventDefault();
 				$doc.trigger('spa:navigate', {
-					hash: 'activity-text',
+					hash: 'activity-rule',
 					pushData: {
 						needReload: true
 					}
 				});
 			}, $view);
-
 			// 点击充值
 			$.newTouch('.btn-add-recharge', function (event) {
 				event.preventDefault();
@@ -108,29 +94,37 @@ define(['$', 'template', 'recharge', 'native', 'config', 'user','product'], func
 			/*获取上一页跳转的路由名称*/
 			var pushData = pageData.pushData;
 			backHash = pushData.backHash ? pushData.backHash : '';
+			dtd.resolve();
+		},
+		afteropen: function (pageData, dtd) {
 			var $view = this;
 			var $doc = $(document);
-			$doc.trigger('spa:openloader');
-			product.getListAll(user.id);
-			recharge.getRechargeList(function (res) {
-				$doc.trigger('spa:closeloader');
-				if (res.success) {
-					var tpl = template('recharge/index', {
-						showNavBar: !config.isWX,
-						recharges: res.data
-					});
-					$view.find('.spa-page-body').html(tpl);
-					if (pageData.scroll) {
-						pageData.scroll.destroy();
-						pageData.scroll = null;
-					}
-					setTimeout(function () {
-						pageData.scroll = new IScroll('#rechargeScroll');
-					}, 500);
-					dtd.resolve();
+
+			if (!pageData.pushData.dontNeedReload) {
+				$doc.trigger('spa:openloader');
+				recharge.getRechargeList(function (res) {
 					$doc.trigger('spa:closeloader');
-				}
-			});
+					if (res.success) {
+						var tpl = template('recharge/index', {
+							showNavBar: !config.isWX,
+							recharges: res.data
+						});
+						$('.spa-page-body', $view).html(tpl);
+						//var value = $(this).attr('data-value');
+						var value = $('.btn-add-recharge').attr('data-index');
+						for (var i = value; i < 2; i++) {
+						}
+						setTimeout(function () {
+							pageData.scroll = new IScroll('#rechargeScroll');
+						}, 500);
+					}
+				});
+			}
+
+			dtd.resolve();
+		},
+		beforeclose: function (pageData, dtd) {
+			dtd.resolve();
 		}
 	}
 })

+ 12 - 6
www/webapp/o2o/js/page/secondary.js

@@ -78,9 +78,9 @@ define(['$', 'template', 'IScroll', 'user', 'product', 'native', 'config', 'addr
 				 * $(selector).trigger(event, params)是jQuery的:触发被选元素上的指定事件
 				 */
 				$doc.trigger('spa:navigate', {
-					hash: 'product',
+					hash: 'placeOrder',
 					pushData: {
-						product: product.allList[type-1],
+						product: product.allList[type - 1],
 						needReset: true,
 						backHash: 'secondary'
 					}
@@ -117,6 +117,9 @@ define(['$', 'template', 'IScroll', 'user', 'product', 'native', 'config', 'addr
 			dtd.resolve();
 		},
 		beforeopen: function (pageData, dtd) {
+
+
+
 			/*获取上一页跳转的路由名称*/
 			var pushData = pageData.pushData;
 			backHash = pushData.backHash ? pushData.backHash : '';
@@ -126,10 +129,13 @@ define(['$', 'template', 'IScroll', 'user', 'product', 'native', 'config', 'addr
 			var $view = this;
 			var $doc = $(document);
 
-			// if (pageData.pushData && pageData.pushData.needReset) {
-			if (!pageData.pushData.dontNeedReload) {
-				// $doc.trigger('spa:openloader');
-
+			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('secondary/index', {showNavBar: !config.isWX});
 				$('.spa-page-body', $view).html(tpl);
 				setTimeout(function () {

+ 2 - 2
www/webapp/o2o/tpl/LongOrder/index.html

@@ -14,8 +14,8 @@
 				<div class="scroller">
 					<div class="box-container">
 						<div class="box-container box box-vertical" style="background: #fff">
-							<div class="btn-appliances btn-day" data-product-type="11"><img src="http://odulvej8l.bkt.clouddn.com/%E6%97%A5%E5%B8%B8.jpg" alt="日常保洁2小时体验"><div class="product2-img"></div></div>
-							<div class="btn-appliances btn-day" data-product-type="12"><img src="http://odulvej8l.bkt.clouddn.com/%E5%AE%B6%E7%94%B5.jpg" alt="家电清洗"><div class="product2-img"></div></div>
+							<div class="btn-appliances btn-day" data-product-type="10"><img src="http://odulvej8l.bkt.clouddn.com/%E6%97%A5%E5%B8%B8.jpg" alt="日常保洁2小时体验"><div class="product2-img"></div></div>
+							<div class="btn-appliances btn-day" data-product-type="11"><img src="http://odulvej8l.bkt.clouddn.com/%E5%AE%B6%E7%94%B5.jpg" alt="家电清洗"><div class="product2-img"></div></div>
 						</div>
 					</div>
 					<div style="width: 100%;padding-bottom:13%; "></div>

+ 2 - 2
www/webapp/o2o/tpl/activities/day.html

@@ -14,12 +14,12 @@
 				<div class="scroller">
 					<div class="box-container">
 						<div class="box-container box box-vertical" style="background: #fff">
-							<div class="btn-appliances btn-day" data-product-type="10"><img src="http://odulvej8l.bkt.clouddn.com/%E6%97%A5%E5%B8%B8.jpg" alt="日常保洁2小时体验"><div class="product2-img"></div></div>
+							<div class="btn-appliances btn-day" data-product-type="9"><img src="http://odulvej8l.bkt.clouddn.com/%E6%97%A5%E5%B8%B8.jpg" alt="日常保洁2小时体验"><div class="product2-img"></div></div>
 							<div class="btn-appliances btn-day" data-product-type="4"><img src="http://odulvej8l.bkt.clouddn.com/%E5%AE%B6%E7%94%B5.jpg" alt="家电清洗"><div class="product2-img"></div></div>
 							<div class="btn-appliances btn-day" data-product-type="6"><img src="http://odulvej8l.bkt.clouddn.com/%E6%93%A6%E7%8E%BB%E7%92%83.jpg" alt="擦玻璃"><div class="product2-img"></div></div>
 						</div>
 					</div>
-					<div style="width: 100%;padding-bottom:15%; "></div>
+					<div style="width: 100%;padding-bottom:13%; "></div>
 				</div>
 				<div class="prevent-scroll">
 					<div class="box my-action">

+ 4 - 5
www/webapp/o2o/tpl/activities/text.html

@@ -16,12 +16,12 @@
 						<div class="box-container box box-vertical" style="background: #fff">
 							<div style="position: relative;top: 0;width: 100%;background: #fff; padding: 0 10px">
 								<p style="position: absolute;background: #fff;">
-								<h3 style="text-align: center;margin-top: 10px;">充值返现活动协议</h3>
+								<h3 style="text-align: center;">充值返现活动协议</h3>
 								<h4>一、活动内容:</h4>
 								<h5>单笔充值1000元,可获得1088元余额;</h5>
 								<h5> 单笔充值3000元,可获得3360元余额;</h5>
 								<h5> 单笔充值5000元,可获得5680元余额;</h5>
-								<h5>单笔充值10000元,可获得10880元余额</h5>
+								<h5> 单笔充值10000元,可获得10880元余额</h5>
 								<h4>二、余额构成</h4>
 								<h5>您实际支付的充值本金加上壹管家的返现金额会构成您的账户余额(人民币)。</h5>
 								<h4>三、充值金额有效期</h4>
@@ -35,9 +35,8 @@
 								<h5>1.充值余额:</h5>
 								<h5>a)若未产生服务费用,可退还当期实际充值金额,我们会在您申请退款服务之日起21个工作日内为您办理退款;</h5>
 								<h5>b)若已产生服务费用,可退款扣除您在下单服务中实际产生的用费后的实际剩余充值金额(实际剩余充值金额=实际充值金额-实际服务金额),我们会在您申请退款服务之日起21个工作日内为您办理退款;</h5>
-								<h5>
-									2.仅支持奖金兑换码在未发送并兑换使用的情况下享受退款服务,我们需要收回您在参与活动时得到的奖金号,并在您申请退款服务之日起21个工作日内,为您退还实际充值金额;抽奖兑换码及旅游奖金一经兑换使用,则无法享受退款服务。</h5>
-								<h5>3.壹管家返活动的相关问题,您可咨询服务热线4009200901(周一至周五,9:00-18:00)</h5>
+								<h5>2.活动赠品服务(例:日本游抽奖活动);仅支持奖金兑换码在未发送并兑换使用的情况下享受退款服务,我们需要收回您在参与活动时得到的奖金号,并在您申请退款服务之日起21个工作日内,为您退还实际充值金额;抽奖兑换码及旅游奖金一经兑换使用,则无法享受退款服务。</h5>
+								<h5>3、壹管家返活动的相关问题,您可咨询服务热线4009200901(周一至周五,9:00-18:00)</h5>
 								</p>
 								<div style="padding-bottom: 1%;width: 100%"></div>
 							</div>

+ 1 - 1
www/webapp/o2o/tpl/address/list/index.html

@@ -9,7 +9,7 @@
 
 <div class="content" >
 	<div class="box-container box box-vertical">
-		<div id="addressListScroll" class="scroll-container box-flex-1 page-content" style="padding-top: 0;">
+		<div id="addressListScroll" class="scroll-container box-flex-1">
 			<div class="page-content">
 				<ul class="list-content">
 					{{include './cell'}}

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

@@ -18,8 +18,11 @@
 						<!-- Swiper -->
 						<div class="swiper-container">
 							<div class="swiper-wrapper">
+								<!--<div class="swiper-slide">-->
+								<!--<img class="btn-home-day lazy" data-product-type="9" src="http://odulvej8l.bkt.clouddn.com/1111%E5%85%83banner.jpg" alt="">-->
+								<!--</div>-->
 								<div class="swiper-slide btn-banner-recharge">
-									<img class="lazy" src="http://odulvej8l.bkt.clouddn.com/%E8%BF%94%E7%8E%B0%E9%87%91banner.jpg" alt="">
+									<img class="lazy" src="http://odulvej8l.bkt.clouddn.com/banner-2.jpg" alt="">
 								</div>
 								<div class="swiper-slide btn-banner-coupon">
 									<img class="lazy" src="http://odulvej8l.bkt.clouddn.com/%E7%AE%A1%E5%AE%B6-2.jpg" alt="">

+ 10 - 10
www/webapp/o2o/tpl/homeenterprise/index.html

@@ -22,16 +22,16 @@
 				</div>
 				<div class="prevent-scroll">
 					<div class="o2o-btn-homestay" style="
-					        text-align: center;
-                  background: rgb(219,199,67);
-                  color: #fff;
-                  position: absolute;
-                  right: 0;
-                  width: 25%;
-                  top: -2.65rem;
-                  border: 0px solid rgba(0,0,0,0.14);
-                  border-radius: 14px;
-                  line-height: 2.5rem;">点击咨询
+					    text-align: center;
+              background: rgb(219,199,67);
+              color: #fff;
+              position: absolute;
+              right: 0;
+              width: 25%;
+              top: -1.65rem;
+              border: 0px solid rgba(0,0,0,0.14);
+              border-radius: 14px;
+              line-height: 1.5rem;">点击咨询
 					</div>
 					<div class="box my-action">
 						<!--首页-->

+ 10 - 10
www/webapp/o2o/tpl/homestay/index.html

@@ -22,16 +22,16 @@
 				</div>
 				<div class="prevent-scroll">
 					<div class="o2o-btn-homestay" style="
-					        text-align: center;
-                  background: rgb(219,199,67);
-                  color: #fff;
-                  position: absolute;
-                  right: 0;
-                  width: 25%;
-                  top: -2.65rem;
-                  border: 0px solid rgba(0,0,0,0.14);
-                  border-radius: 14px;
-                  line-height: 2.5rem;">点击咨询
+					    text-align: center;
+              background: rgb(219,199,67);
+              color: #fff;
+              position: absolute;
+              right: 0;
+              width: 25%;
+              top: -1.65rem;
+              border: 0px solid rgba(0,0,0,0.14);
+              border-radius: 14px;
+              line-height: 1.5rem;">点击咨询
 					</div>
 					<div class="box my-action">
 						<!--首页-->

+ 1 - 31
www/webapp/o2o/tpl/myCoupon/index.html

@@ -7,7 +7,7 @@
 </header>
 {{ /if }}
 
-<div class="content" id="myCouponScroll" style="background: #efeff4;">
+<div class="content" id="myCouponScroll">
   <div class="scroller">
     <div class="page-content">
       <div class="coupon-form">
@@ -48,34 +48,4 @@
       </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">
-						<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>

+ 1 - 1
www/webapp/o2o/tpl/myOrder/finish.html

@@ -8,7 +8,7 @@
 {{ /if }}
 
 <div class="content content-padding">
-	<div class="text-center" style="font-size: 1.1rem; color: #00a0e9; padding-top: 50px; padding-bottom: 50px">订单已完成,感谢使用壹管家的服务</div>
+	<div class="text-center" style="font-size: 24px; color: #00a0e9; padding-top: 50px; padding-bottom: 50px">订单已完成,感谢使用壹管家的服务</div>
   <div class="box">
     <div class="box-flex-1">
       <button class="btn btn-block btn-default back-button">我的预约</button>

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

@@ -13,7 +13,7 @@
     <a class="control-item {{if type == '2'}}active{{/if}}" data-order-type="3">已完成</a>
     <a class="control-item {{if type == '3'}}active{{/if}}" data-order-type="2">已取消</a>
   </div>
-  <div id="myOrderScroll" class="box-flex-1 scroll-container page-content">
+  <div id="myOrderScroll" class="box-flex-1 scroll-container">
     <div class="scroller">
       <div class="page-content list-content">
 

+ 102 - 102
www/webapp/o2o/tpl/placeOrder/index.html

@@ -1,115 +1,115 @@
 {{ if showNavBar }}
 <header class="bar bar-nav">
-	<a class="left-button back-button">
-		<div class="icon icon-left-nav"></div>
-	</a>
+    <a class="left-button back-button">
+        <div class="icon icon-left-nav"></div>
+    </a>
 
-	<h1 class="title">{{title}}</h1>
+    <h1 class="title">{{title}}</h1>
 </header>
 {{ /if }}
 <div class="content">
-	<div class="box-container">
-		<div class="box-container box box-vertical">
-			<div id="placeOrderScroll" class="scroll-container box-flex-1">
-				<div class="scroller">
-					<div class="">
-						<ul class="table-view product-pic-o2o">
-							<li id="product-pic-bg">
-								<img class="lazy product-pic-o2o" src="{{imgSrc}}" style="width: 100%;" alt="">
-								<div class="product-img"></div>
-							</li>
-						</ul>
-						<!-- 选择extra -->
-						{{if extra}}
-						<div class="table-view main-service">
-							<p class="main-service-title">请选择</p>
-							{{each extra as e}}
-							<div class="width-percent-50">
-								<div class="btn btn-main-service" data-extra-type="{{e.type}}"
-								     data-extra-price="{{e.price}}">{{e.type}}
-								</div>
-							</div>
-							{{/each}}
-						</div>
-						{{/if}}
-						<ul class="table-view">
-							<!-- 选择数量 -->
-							<li class="table-view-cell selected table-link-label">
-								<div class="link-label selected">
-									<span class="orderNum">购买数量</span>
-									<div class="service-count o2o-singles-day">
-										<div class="btn btn-sub">-</div>
-										<!--<span class="num">1</span>-->
-										<input type="text" class="input-num"
-										       style="text-align: center;padding: 0;width: 24px;height: 24px;border-radius:0;"
-										       maxlength="3" value="1"/>
-										<div class="btn btn-add">+</div>
-									</div>
-								</div>
-							</li>
-							<li class="table-view-cell">
-								<a class="navigate-right select-address"
-								   style="display: flex; justify-content:space-between; align-items: center; padding-right: 2rem">
-									地址
-									<div class="table-view-cell-right-label media-body has-address"
-									     style="display: block; position: static;">
-										<span class="order-username"></span>
-										<span class="order-mobile"></span>
-										<p class="order-address"></p>
+    <div class="box-container">
+        <div class="box-container box box-vertical">
+            <div id="placeOrderScroll" class="scroll-container box-flex-1">
+                <div class="scroller">
+                    <div class="">
+                        <ul class="table-view product-pic-o2o">
+                            <li id="product-pic-bg">
+                                <img class="lazy product-pic-o2o" src="{{imgSrc}}" style="width: 100%;" alt="">
+                                <div class="product-img"></div>
+                            </li>
+                        </ul>
+                        <!-- 选择extra -->
+                        {{if extra}}
+                        <div class="table-view main-service">
+                            <p class="main-service-title">请选择</p>
+                            {{each extra as e}}
+                            <div class="width-percent-50">
+                                <div class="btn btn-main-service" data-extra-type="{{e.type}}"
+                                     data-extra-price="{{e.price}}">{{e.type}}
+                                </div>
+                            </div>
+                            {{/each}}
+                        </div>
+                        {{/if}}
+                        <ul class="table-view">
+                            <!-- 选择数量 -->
+                            <li class="table-view-cell selected table-link-label">
+                                <div class="link-label selected">
+                                    购买数量
+                                    <div class="service-count o2o-singles-day">
+                                        <div class="btn btn-sub">-</div>
+                                        <!--<span class="num">1</span>-->
+                                        <input type="text" class="input-num"
+                                               style="text-align: center;padding: 0;width: 24px;height: 24px;border-radius:0;"
+                                               maxlength="3" value="1"/>
+                                        <div class="btn btn-add">+</div>
+                                    </div>
+                                </div>
+                            </li>
+                            <li class="table-view-cell">
+                                <a class="navigate-right select-address"
+                                   style="display: flex; justify-content:space-between; align-items: center; padding-right: 2rem">
+                                    地址
+                                    <div class="table-view-cell-right-label media-body has-address"
+                                         style="display: block; position: static;">
+                                        <span class="order-username"></span>
+                                        <span class="order-mobile"></span>
+                                        <p class="order-address"></p>
 
-									</div>
+                                    </div>
 
-								</a>
-							</li>
-							<li class="table-view-cell table-link-label">
-								<a class="navigate-right show-time-picker"
-								   style="display: flex; justify-content:space-between; align-items: center; padding-right: 2rem">
-									服务时间
-									<span class="table-view-cell-right-label booking-time"
-									      style="display: block; position: static; text-align: right">选择服务时间</span>
-								</a>
-							</li>
+                                </a>
+                            </li>
+                            <li class="table-view-cell table-link-label">
+                                <a class="navigate-right show-time-picker"
+                                   style="display: flex; justify-content:space-between; align-items: center; padding-right: 2rem">
+                                    服务时间
+                                    <span class="table-view-cell-right-label booking-time"
+                                          style="display: block; position: static; text-align: right">选择服务时间</span>
+                                </a>
+                            </li>
 
-						</ul>
-						<!-- 优惠券 -->
-						<ul class="table-view">
-							<li class="table-view-cell selected {{if !showCoupon }}disabled{{/if}}">
-								<a class="navigate-right show-coupon-picker"
-								   style="display: flex; justify-content:space-between; align-items: center; padding-right: 2rem">
-									优惠券
-									<span class="table-view-cell-right-label coupon-selected-name"
-									      style="display: block; position: static; text-align: right">选择优惠券</span>
-								</a>
-							</li>
-							<li class="table-view-cell memo">
-								<form class="input-group" id="order-form">
-									<input type="text" class="order-memo" id="order-memo" placeholder="(备注)可填写附加要求">
-								</form>
-							</li>
-						</ul>
-						<!-- 用户协议 -->
-						<div class="box bottom-box">
-							<div class="agreement-box">
-								<div class="agreement-touch-area">
-								</div>
-								<input type="checkbox" class="agreement-checkbox" checked="checked"/>
-								<span>
+                        </ul>
+                        <!-- 优惠券 -->
+                        <ul class="table-view">
+                            <li class="table-view-cell {{if !showCoupon }}disabled{{/if}}">
+                                <a class="navigate-right show-coupon-picker"
+                                   style="display: flex; justify-content:space-between; align-items: center; padding-right: 2rem">
+                                    优惠券
+                                    <span class="table-view-cell-right-label coupon-selected-name"
+                                          style="display: block; position: static; text-align: right">选择优惠券</span>
+                                </a>
+                            </li>
+                            <li class="table-view-cell memo">
+                                <form class="input-group" id="order-form">
+                                    <input type="text" class="order-memo" id="order-memo" placeholder="(备注)可填写附加要求">
+                                </form>
+                            </li>
+                        </ul>
+                        <!-- 用户协议 -->
+                        <div class="box bottom-box">
+                            <div class="agreement-box">
+                                <div class="agreement-touch-area">
+                                </div>
+                                <input type="checkbox" class="agreement-checkbox" checked="checked"/>
+                <span>
                   同意<a class="agreement">壹管家用户服务协议</a>
                 </span>
-							</div>
-						</div>
-					</div>
-				</div>
-			</div>
-			<div class="result-item btn-container prevent-scroll"
-			     style="padding-left: 15px; display: flex; justify-content: space-between; align-items: center">
-				<!--<div style="font-size: 0.8rem">账户余额<span class="order-cost" style="font-size: 0.8rem; color: #ec5330; text-align: right; display: inline">¥ {{balance}}</span></div>-->
-				<div style="font-size: 0.8rem">费用总计:<span class="order-cost"
-				                                          style="font-size: 0.8rem; color: #ec5330; text-align: right; display: inline">¥ 0</span>
-				</div>
-				<a class="btn btn-main btn-block btn-place" style="margin-bottom: 0;">确认预约</a>
-			</div>
-		</div>
-	</div>
+                            </div>
+                        </div>
+                    </div>
+                </div>
+            </div>
+            <div class="result-item btn-container prevent-scroll"
+                 style="padding-left: 15px; display: flex; justify-content: space-between; align-items: center">
+                <!--<div style="font-size: 0.8rem">账户余额<span class="order-cost" style="font-size: 0.8rem; color: #ec5330; text-align: right; display: inline">¥ {{balance}}</span></div>-->
+                <div style="font-size: 0.8rem">费用总计:<span class="order-cost"
+                                                          style="font-size: 0.8rem; color: #ec5330; text-align: right; display: inline">¥ 0</span>
+                </div>
+                <a class="btn btn-main btn-block btn-place" style="margin-bottom: 0;">确认预约</a>
+            </div>
+        </div>
+    </div>
 </div>
 </div>

+ 2 - 3
www/webapp/o2o/tpl/product/index.html

@@ -29,8 +29,7 @@
               <div class="img-list">
                 <div class="img-list-container">
                   {{ each picLists as pic}}
-                  <!--<img class="lazy" src="{{pic.content}}" alt="">-->
-                  <img class="lazy" src="{{pic.content}}" alt="">
+                  <img class="lazy" src="{{pic.url}}" alt="">
                   {{/each}}
                 </div>
               </div>
@@ -98,5 +97,5 @@
       </div>
     </div>
   </div>
-<div class="product-new"><div class="product-new-btn">立即下单</div></div>
+
 </div>

+ 10 - 44
www/webapp/o2o/tpl/recharge/index.html

@@ -9,50 +9,16 @@
 <div class="content">
 	<div class="box-container box box-vertical">
 		<div id="rechargeScroll" class="scroll-container box-flex-1">
-			<div class="scroller">
-				<div class="page-content" style="padding-top: 0;">
-					<img class="ad-hide" src="http://odulvej8l.bkt.clouddn.com/%E5%85%85%E5%80%BC%E5%8D%A1.jpg"
-					     style="width: 100%;">
-					<ul class="ad-hide list-content list-recharge" style="padding-top: 0;padding-bottom: 0;">
-						{{include './cell'}}
-					</ul>
-					<div class="ad-hide rechargeRule" style="text-align: center;bottom: 0;"><span style="font-size: 0.6rem">点击立即充值,即表示您已经同意壹管家</span><span style="font-size: 0.6rem;font-weight: 600;display: block;margin-bottom: -2px;"><span style="font-size: 0.6rem;">《<span class="pay-agreement" style="text-decoration: underline;color: #0A246A">充返活动协议</span>》</span></span>
-
-						<!--<span style="display: inline-block;font-size: 0.6rem;font-weight: 600; " class="pay-rule"><span-->
-						<!--style="text-decoration: underline;color: #0A246A">活动规则</span></span>-->
-					</div>
-				</div>
-				<div style="width: 100%;padding-bottom: 13%;"></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">
-								<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>
+			<img class="ad-hide" src="http://odulvej8l.bkt.clouddn.com/%E5%85%85%E5%80%BC%E5%8D%A1.jpg"
+			     style="width: 100%;">
+			<ul class="ad-hide list-content list-recharge" style="padding-top: 5px;padding-bottom: 5px">
+				{{include './cell'}}
+			</ul>
+			<div class="ad-hide" style="text-align: center;"><span style="font-size: 0.6rem">点击立即充值,即表示您已经同意壹管家</span><span
+				style="font-size: 0.6rem;font-weight: 600;display: block;" ></span>
+				<span  style="font-size: 0.6rem;">《<span class="pay-agreement" style="text-decoration: underline;color: #0A246A">充返活动协议</span>》</span>
+				<!--<span style="display: inline-block;font-size: 0.6rem;font-weight: 600; " class="pay-rule"><span
+					style="text-decoration: underline;color: #0A246A">活动规则</span></span>-->
 			</div>
 		</div>
 	</div>

Some files were not shown because too many files changed in this diff