main.js 20 KB

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