main.js 14 KB

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