main.js 16 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678
  1. require.config({
  2. urlArgs: 'v=' + (new Date()).getTime(),
  3. waitSeconds: 0,
  4. paths: {
  5. zepto: '../../common/js/zepto.min',
  6. wx: '../../common/js/jweixin-1.0.0',
  7. ctk: '../../common/js/ctk-1.0.0',
  8. pingpp: '../../common/js/pingpp',
  9. spa: '../../common/js/spa',
  10. IScroll: '../../framework/iscroll5/iscroll-probe',
  11. ratchet: '../../framework/ratchet-2.0.2/dist/js/ratchet.base',
  12. $: '../../common/js/jq_extend',
  13. autosize: '../../common/js/autosize',
  14. config: '../../common/js/config',
  15. helper: '../../common/js/helper',
  16. native: '../../common/js/native',
  17. storage: '../../common/js/storage',
  18. base: '../../common/js/base',
  19. template: './build/template',
  20. api: './api',
  21. bdmapapi: '../../common/js/bdmapapi',
  22. BMap: 'http://api.map.baidu.com/getscript?v=2.0&ak=B349f0b32ef6e78b2e678f45cb9fddaf&services=&t=20160310104956',
  23. //model
  24. user: './model/user',
  25. product: './model/product',
  26. cart: './model/cart',
  27. order: './model/order',
  28. review: './model/review',
  29. address: './model/address',
  30. recharge: './model/recharge',
  31. //page
  32. pageHome: './page/home',
  33. pageRecharge: './page/rechargee',
  34. pageHelp: './page/help',
  35. pageBargain: './page/bargain',
  36. pageExtension:'./page/extension',
  37. pageHomestay: './page/homestay',
  38. pageHomeenterprise: './page/homeenterprise',
  39. pageAbout: './page/about',
  40. pageProduct: './page/product',
  41. pageProductInfo: './page/productInfo',
  42. pageDesc: './page/desc',
  43. pagePlaceOrder: './page/placeOrder',
  44. pagePicker: './page/picker',
  45. pagePay: './page/pay',
  46. pageAppendPay: './page/appendPay',
  47. pageMyOrder: './page/myOrder',
  48. pageMyOrderDetail: './page/myOrderDetail',
  49. pageMyCoupon: './page/myCoupon',
  50. pageOrderDone: './page/orderDone',
  51. pageSuccess: './page/success',
  52. pageAgreement: './page/agreement',
  53. pageAddressList: './page/address/addressList',
  54. pageAddressAdd: './page/address/addressAdd',
  55. pageAddressDetail: './page/address/addressDetail',
  56. pageAddressPoisiton: './page/address/addressPoi',
  57. pageHire: './page/hire',
  58. pageComing: './page/coming',
  59. pageActivityCat: './page/activities/day',
  60. pageActivityText: './page/activities/text',
  61. pageActivityRule: './page/activities/rule',
  62. pageAppend: './page/append',
  63. pageRefund: './page/refund',
  64. pageRefundSuccess: './page/refundSuccess',
  65. pageBeautician: './page/beautician',
  66. pageBeauticianDetail: './page/beauticianDetail',
  67. pageMine: './page/mine',
  68. pageSecondary: './page/secondary',
  69. //panel
  70. panelAlert: './panel/alert',
  71. panelActionSheet: './panel/actionSheet',
  72. // panelAddressAction: './panel/addressAction',
  73. panelDataPicker: './panel/dataPicker',
  74. panelProductOption: './panel/productOption',
  75. panelPostReview: './panel/postReview',
  76. panelActivity: './panel/activity'
  77. },
  78. shim: {
  79. zepto: {
  80. exports: '$'
  81. },
  82. IScroll: {
  83. exports: 'IScroll'
  84. },
  85. BMap: {
  86. exports: 'BMap'
  87. }
  88. }
  89. });
  90. require(['$', 'spa', 'native', 'helper', 'ratchet', 'config', 'user'], function ($, spa, native, helper, ratchet, config, user) {
  91. var $doc = $(document);
  92. // 首页
  93. var pageHome = {
  94. route: '',
  95. classname: 'home',
  96. animate: 'fadeIn',
  97. view: function () {
  98. var $page = this;
  99. requirejs(['pageHome'], function (viewData) {
  100. $doc.trigger('spa:initpage', [$page, viewData])
  101. })
  102. }
  103. };
  104. //双十一支付
  105. var pageBargain = {
  106. route: 'bargain',
  107. classname: 'bargain',
  108. animate: 'fadeIn',
  109. view: function () {
  110. var $page = this;
  111. requirejs(['pageBargain'], function (viewData) {
  112. $doc.trigger('spa:initpage', [$page, viewData])
  113. })
  114. }
  115. };
  116. //11-7活动
  117. var pageExtension={
  118. route:"extension",
  119. classname:'extension',
  120. animate:'fadeIn',
  121. view:function () {
  122. var $page=this;
  123. requirejs(['pageExtension'],function (viewData) {
  124. $doc.trigger('spa:initpage',[$page,viewData])
  125. })
  126. }
  127. };
  128. //商品页
  129. var pageProduct = {
  130. route: 'product',
  131. classname: 'product',
  132. animate: 'slideInUp',
  133. view: function () {
  134. var $page = this;
  135. requirejs(['pageProduct'], function (viewData) {
  136. $doc.trigger('spa:initpage', [$page, viewData])
  137. })
  138. }
  139. };
  140. //充值卡
  141. var pageRecharge = {
  142. route: 'recharge',
  143. classname: 'recharge',
  144. animate: 'pushInLeft',
  145. view: function () {
  146. var $page = this;
  147. requirejs(['pageRecharge'], function (viewData) {
  148. $doc.trigger('spa:initpage', [$page, viewData])
  149. })
  150. }
  151. };
  152. //个人中心
  153. var pageMine = {
  154. route: 'mine',
  155. classname: 'mine',
  156. animate: 'pushInLeft',
  157. view: function () {
  158. var $page = this;
  159. requirejs(['pageMine'], function (viewData) {
  160. $doc.trigger('spa:initpage', [$page, viewData])
  161. })
  162. }
  163. };
  164. //家庭保洁
  165. var pageSecondary = {
  166. route: 'secondary',
  167. classname: 'secondary',
  168. animate: 'pushInLeft',
  169. view: function () {
  170. var $page = this;
  171. requirejs(['pageSecondary'], function (viewData) {
  172. $doc.trigger('spa:initpage', [$page, viewData])
  173. })
  174. }
  175. };
  176. //民宿保洁
  177. var pageHomestay = {
  178. route: 'homestay',
  179. classname: 'homestay',
  180. animate: 'pushInLeft',
  181. view: function () {
  182. var $page = this;
  183. requirejs(['pageHomestay'], function (viewData) {
  184. $doc.trigger('spa:initpage', [$page, viewData])
  185. })
  186. }
  187. };
  188. //企业服务
  189. var pageHomeenterprise = {
  190. route: 'homeenterprise',
  191. classname: 'homeenterprise',
  192. animate: 'pushInLeft',
  193. view: function () {
  194. var $page = this;
  195. requirejs(['pageHomeenterprise'], function (viewData) {
  196. $doc.trigger('spa:initpage', [$page, viewData])
  197. })
  198. }
  199. };
  200. //商品提示信息
  201. var pageProductInfo = {
  202. route: 'product-info/:type',
  203. classname: 'product-info',
  204. animate: 'pushInLeft',
  205. view: function () {
  206. var $page = this;
  207. requirejs(['pageProductInfo'], function (viewData) {
  208. $doc.trigger('spa:initpage', [$page, viewData])
  209. })
  210. }
  211. };
  212. //商品介绍页
  213. var pageDesc = {
  214. route: 'desc',
  215. classname: 'desc',
  216. animate: 'pushInLeft',
  217. view: function () {
  218. var $page = this;
  219. requirejs(['pageDesc'], function (viewData) {
  220. $doc.trigger('spa:initpage', [$page, viewData])
  221. })
  222. }
  223. };
  224. //订单页
  225. var pagePlaceOrder = {
  226. route: 'placeOrder',
  227. classname: 'place-order',
  228. animate: 'pushInLeft',
  229. view: function () {
  230. var $page = this;
  231. requirejs(['pagePlaceOrder'], function (viewData) {
  232. $doc.trigger('spa:initpage', [$page, viewData])
  233. })
  234. }
  235. };
  236. //选择列表页
  237. var pagePicker = {
  238. route: 'picker',
  239. classname: 'picker',
  240. animate: 'pushInLeft',
  241. view: function () {
  242. var $page = this;
  243. requirejs(['pagePicker'], function (viewData) {
  244. $doc.trigger('spa:initpage', [$page, viewData])
  245. })
  246. }
  247. };
  248. //支付页面
  249. var pagePay = {
  250. route: 'pay',
  251. classname: 'pay',
  252. animate: 'pushInLeft',
  253. view: function () {
  254. var $page = this;
  255. requirejs(['pagePay'], function (viewData) {
  256. $doc.trigger('spa:initpage', [$page, viewData])
  257. })
  258. }
  259. };
  260. // 追加订单支付页面
  261. var pageAppendPay = {
  262. route: 'append-pay',
  263. classname: 'append-pay',
  264. animate: 'pushInLeft',
  265. view: function () {
  266. var $page = this;
  267. requirejs(['pageAppendPay'], function (viewData) {
  268. $doc.trigger('spa:initpage', [$page, viewData])
  269. })
  270. }
  271. };
  272. //支付成功
  273. var pagePaySuccess = {
  274. route: 'paySuccess',
  275. classname: 'pay-success',
  276. animate: 'pushInLeft',
  277. view: function () {
  278. var $page = this;
  279. requirejs(['pageSuccess'], function (viewData) {
  280. $doc.trigger('spa:initpage', [$page, viewData])
  281. });
  282. }
  283. };
  284. //我的订单页
  285. var pageMyOrder = {
  286. route: 'myOrder(/:type)',
  287. classname: 'my-order',
  288. animate: 'pushInLeft',
  289. view: function () {
  290. var $page = this;
  291. requirejs(['pageMyOrder'], function (viewData) {
  292. $doc.trigger('spa:initpage', [$page, viewData])
  293. });
  294. }
  295. };
  296. var pageMyOrderDetail = {
  297. route: 'OrderDetail/:id',
  298. classname: 'my-order-detail',
  299. animate: 'pushInLeft',
  300. view: function () {
  301. var $page = this;
  302. requirejs(['pageMyOrderDetail'], function (viewData) {
  303. $doc.trigger('spa:initpage', [$page, viewData])
  304. });
  305. }
  306. };
  307. //我的优惠券
  308. var pageMyCoupon = {
  309. route: 'myCoupon',
  310. classname: 'my-coupon',
  311. animate: 'pushInLeft',
  312. view: function () {
  313. var $page = this;
  314. requirejs(['pageMyCoupon'], function (viewData) {
  315. $doc.trigger('spa:initpage', [$page, viewData])
  316. });
  317. }
  318. };
  319. //用户服务协议
  320. var pageAgreement = {
  321. route: 'agreement',
  322. classname: 'agreement',
  323. animate: 'pushInLeft',
  324. view: function () {
  325. var $page = this;
  326. requirejs(['pageAgreement'], function (viewData) {
  327. $doc.trigger('spa:initpage', [$page, viewData])
  328. });
  329. }
  330. };
  331. //地址列表
  332. var pageAddressList = {
  333. route: 'addressList',
  334. classname: 'address-list',
  335. animate: 'pushInLeft',
  336. view: function () {
  337. var $page = this;
  338. requirejs(['pageAddressList'], function (viewData) {
  339. $doc.trigger('spa:initpage', [$page, viewData])
  340. });
  341. }
  342. };
  343. //地址添加
  344. var pageAddressAdd = {
  345. route: 'addressAdd',
  346. classname: 'address-add',
  347. animate: 'pushInLeft',
  348. view: function () {
  349. var $page = this;
  350. requirejs(['pageAddressAdd'], function (viewData) {
  351. $doc.trigger('spa:initpage', [$page, viewData])
  352. });
  353. }
  354. };
  355. //地址详情
  356. var pageAddressDetail = {
  357. route: 'addressDetail',
  358. classname: 'address-detail',
  359. animate: 'pushInLeft',
  360. view: function () {
  361. var $page = this;
  362. requirejs(['pageAddressDetail'], function (viewData) {
  363. $doc.trigger('spa:initpage', [$page, viewData])
  364. });
  365. }
  366. };
  367. //地址定位
  368. var pageAddressPoisiton = {
  369. route: 'addressPoisiton',
  370. classname: 'address-poisition',
  371. animate: 'pushInLeft',
  372. view: function () {
  373. var $page = this;
  374. requirejs(['pageAddressPoisiton'], function (viewData) {
  375. $doc.trigger('spa:initpage', [$page, viewData])
  376. });
  377. }
  378. };
  379. //招聘
  380. var pageHire = {
  381. route: 'hire',
  382. classname: 'hire',
  383. animate: 'pushInLeft',
  384. view: function () {
  385. var $page = this;
  386. requirejs(['pageHire'], function (viewData) {
  387. $doc.trigger('spa:initpage', [$page, viewData])
  388. });
  389. }
  390. };
  391. // 未上线
  392. var pageComing = {
  393. route: 'coming',
  394. classname: 'coming',
  395. animate: 'pushInLeft',
  396. view: function () {
  397. var $page = this;
  398. requirejs(['pageComing'], function (viewData) {
  399. $doc.trigger('spa:initpage', [$page, viewData])
  400. });
  401. }
  402. };
  403. // 活动
  404. var pageActivityCat = {
  405. route: 'activity-day',
  406. classname: 'activities-day',
  407. animate: 'pushInLeft',
  408. view: function () {
  409. var $page = this;
  410. requirejs(['pageActivityCat'], function (viewData) {
  411. $doc.trigger('spa:initpage', [$page, viewData])
  412. });
  413. }
  414. };
  415. // 活动
  416. var pageActivityText = {
  417. route: 'activity-text',
  418. classname: 'activity-text',
  419. animate: 'pushInLeft',
  420. view: function () {
  421. var $page = this;
  422. requirejs(['pageActivityText'], function (viewData) {
  423. $doc.trigger('spa:initpage', [$page, viewData])
  424. });
  425. }
  426. };
  427. //活动规则
  428. var pageActivityRule = {
  429. route: 'activity-rule',
  430. classname: 'activity-rule',
  431. animate: 'pushInLeft',
  432. view: function () {
  433. var $page = this;
  434. requirejs(['pageActivityRule'], function (viewData) {
  435. $doc.trigger('spa:initpage', [$page, viewData])
  436. });
  437. }
  438. };
  439. // 追加服务
  440. var pageAppend = {
  441. route: 'append',
  442. classname: 'append',
  443. animate: 'pushInLeft',
  444. view: function () {
  445. var $page = this;
  446. requirejs(['pageAppend'], function (viewData) {
  447. $doc.trigger('spa:initpage', [$page, viewData])
  448. });
  449. }
  450. };
  451. // 申请退款
  452. var pageRefund = {
  453. route: 'refund',
  454. classname: 'refund',
  455. animate: 'pushInLeft',
  456. view: function () {
  457. var $page = this;
  458. requirejs(['pageRefund'], function (viewData) {
  459. $doc.trigger('spa:initpage', [$page, viewData])
  460. });
  461. }
  462. };
  463. // 申请成功
  464. var pageRefundSuccess = {
  465. route: 'refund-success',
  466. classname: 'refund-success',
  467. animate: 'pushInLeft',
  468. view: function () {
  469. var $page = this;
  470. requirejs(['pageRefundSuccess'], function (viewData) {
  471. $doc.trigger('spa:initpage', [$page, viewData])
  472. });
  473. }
  474. };
  475. // 订单确认完成
  476. var pageOrderDone = {
  477. route: 'order-done',
  478. classname: 'order-done',
  479. animate: 'pushInLeft',
  480. view: function () {
  481. var $page = this;
  482. requirejs(['pageOrderDone'], function (viewData) {
  483. $doc.trigger('spa:initpage', [$page, viewData])
  484. })
  485. }
  486. };
  487. var pageBeautician = {
  488. route: 'beautician',
  489. classname: 'beautician',
  490. animate: 'pushInLeft',
  491. view: function () {
  492. var $page = this;
  493. requirejs(['pageBeautician'], function (viewData) {
  494. $doc.trigger('spa:initpage', [$page, viewData]);
  495. })
  496. }
  497. };
  498. var pageBeauticianDetail = {
  499. route: 'beautician-detail',
  500. classname: 'beautician-detail',
  501. animate: 'slideInUp',
  502. view: function () {
  503. var $page = this;
  504. requirejs(['pageBeauticianDetail'], function (viewData) {
  505. $doc.trigger('spa:initpage', [$page, viewData]);
  506. })
  507. }
  508. };
  509. var pageHelp = {
  510. route: 'help',
  511. classname: 'help',
  512. animate: 'slideInUp',
  513. view: function () {
  514. var $page = this;
  515. requirejs(['pageHelp'], function (viewData) {
  516. $doc.trigger('spa:initpage', [$page, viewData]);
  517. })
  518. }
  519. };
  520. var pageAbout = {
  521. route: 'about',
  522. classname: 'about',
  523. animate: 'slideInUp',
  524. view: function () {
  525. var $page = this;
  526. requirejs(['pageAbout'], function (viewData) {
  527. $doc.trigger('spa:initpage', [$page, viewData]);
  528. })
  529. }
  530. };
  531. $doc.trigger('spa:route', [pageHome, pageRecharge, pageAbout, pageHelp, pageMine, pageSecondary, pageHomestay, pageBargain,pageExtension,pageHomeenterprise, pageProduct, pageProductInfo, pageDesc, pagePlaceOrder, pagePicker, pagePay, pageAppendPay, pagePaySuccess, pageMyOrder, pageMyOrderDetail, pageMyCoupon, pageAgreement, pageAddressList, pageAddressAdd, pageAddressDetail, pageAddressPoisiton, pageHire, pageComing, pageActivityCat,pageActivityText,pageActivityRule, pageAppend, pageRefund, pageRefundSuccess, pageOrderDone, pageBeautician, pageBeauticianDetail]);
  532. var panelAlert = {
  533. id: 'simpleAlert',
  534. classname: 'alert',
  535. animate: 'zoomIn',
  536. view: function () {
  537. var $panel = this;
  538. requirejs(['panelAlert'], function (viewData) {
  539. $doc.trigger('spa:initpanel', [$panel, viewData]);
  540. })
  541. }
  542. };
  543. var panelActionSheet = {
  544. id: 'actionSheet',
  545. classname: 'action-sheet',
  546. animate: 'overlayInUp',
  547. view: function () {
  548. var $panel = this;
  549. requirejs(['panelActionSheet'], function (viewData) {
  550. $doc.trigger('spa:initpanel', [$panel, viewData]);
  551. })
  552. }
  553. };
  554. var panelDataPicker = {
  555. id: 'dataPicker',
  556. classname: 'data-picker',
  557. animate: 'overlayInUp',
  558. view: function () {
  559. var $panel = this;
  560. requirejs(['panelDataPicker'], function (viewData) {
  561. $doc.trigger('spa:initpanel', [$panel, viewData]);
  562. })
  563. }
  564. };
  565. var panelProductOption = {
  566. id: 'productOption',
  567. classname: 'product-option',
  568. animate: 'overlayInUp',
  569. view: function () {
  570. var $panel = this;
  571. requirejs(['panelProductOption'], function (viewData) {
  572. $doc.trigger('spa:initpanel', [$panel, viewData]);
  573. })
  574. }
  575. };
  576. var panelPostReview = {
  577. id: 'postReview',
  578. classname: 'post-review',
  579. animate: 'overlayInUp',
  580. view: function () {
  581. var $panel = this;
  582. requirejs(['panelPostReview'], function (viewData) {
  583. $doc.trigger('spa:initpanel', [$panel, viewData]);
  584. })
  585. }
  586. };
  587. var panelActivity = {
  588. id: 'activity',
  589. classname: 'activity',
  590. animate: 'overlayInUp',
  591. view: function () {
  592. var $panel = this;
  593. requirejs(['panelActivity'], function (viewData) {
  594. $doc.trigger('spa:initpanel', [$panel, viewData]);
  595. })
  596. }
  597. };
  598. $doc.trigger('spa:panel', [panelAlert, panelActionSheet, panelDataPicker, panelProductOption, panelPostReview, panelActivity]);
  599. $(function () {
  600. if (config.isWX) {
  601. //微信 去掉顶部导航栏
  602. var styles = ".content {top: 0;}";
  603. helper.includeStyleElement(styles, 'ios7');
  604. //微信过来的登录后再启动
  605. user.getUserInfo(function () {
  606. $doc.trigger('spa:boot');
  607. });
  608. } else if (config.isAndroid || config.isIOS) {
  609. //注册事件
  610. native.delegateBackButton(true);
  611. //安卓返回按钮
  612. $(document).on('tapBackButton', function () {
  613. $.spa.getCurPage().trigger('tapBackButton');
  614. });
  615. //ios7特殊样式 全屏幕往下移动20px
  616. helper.osProxy({
  617. ios: function () {
  618. var styles = ".bar-nav {height: 64px;padding-top: 20px;}\
  619. .content {top: 64px;}\
  620. .bar-nav .left-button {padding-top: 20px;}\
  621. .bar-nav .right-button {padding-top: 20px;}";
  622. helper.includeStyleElement(styles, 'ios7');
  623. }
  624. });
  625. $doc.trigger('spa:boot');
  626. } else if (config.isChubao) {
  627. var styles = ".content {top: 0;}";
  628. helper.includeStyleElement(styles, 'ios7');
  629. $doc.trigger('spa:boot');
  630. } else {
  631. $doc.trigger('spa:boot');
  632. }
  633. })
  634. })