main.js 15 KB

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