main.js 15 KB

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