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