main.js 15 KB

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