main.js 14 KB

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