main.js 15 KB

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