{"dependencies":[{"ETag":"EE42035D5D2780100714A65664E2209D","name":"0.json","size":5598893,"type":"json","url":"https://gw.alipayobjects.com/os/herbox/46bcd9fa-5c83-4f5f-9b06-f0bb8259b854/0.json"}],"sourceCode":{"app.acss":"page {\n background: #FFF;\n}\n@font-face {\n font-family: \"AlipayNumber-Regular\";\n src: url(\"https://gw.alipayobjects.com/as/g/antui/antui-static/1.0.3/fonts/AlipayNumber-Regular.ttf\") format(\"truetype\");\n}\n","app.js":"import Store from './store'\nApp(Store({\n onLaunch(options) {\n },\n onShow() {\n console.log('app onShow');\n },\n onHide() {\n console.log('--------onHide');\n },\n onError(msg) {\n console.log('app OnError: ', msg);\n },\n shareData: {\n\n },\n}));\n","app.json":"{\n \"pages\": [\n \"pages/index/index\",\n \"pages/route-detail/route-detail\",\n \"pages/tickets/tickets\",\n \"pages/my/my\",\n \"pages/ticket-detail/ticket-detail\",\n \"pages/myservice/myservice\",\n \"pages/myguide/myguide\",\n \"pages/search/search\",\n \"pages/customize/customize\",\n \"pages/order-confirm/order-confirm\",\n \"pages/guide/guide\",\n \"pages/search-result/search-result\",\n \"pages/change-station/change-station\",\n \"pages/pay-success/pay-success\",\n \"pages/custom-routes/custom-routes\",\n \"pages/find-station/find-station\"\n ],\n \"window\": {\n \"enableDSL\": \"YES\",\n \"enableJSC\": \"YES\",\n \"enableKeepAlive\": \"NO\",\n \"enableWK\": \"YES\",\n \"nboffline\": \"sync\",\n \"tinyPubRes\": \"YES\",\n \"showDomain\": \"NO\",\n \"defaultTitle\": \"定制巴士\",\n \"backgroundColor\": \"#FFF\"\n },\n \"tabBar\": {\n \"textColor\": \"#999\",\n \"selectedColor\": \"#1B82D2\",\n \"backgroundColor\": \"#ffffff\",\n \"items\": [\n {\n \"pagePath\": \"pages/index/index\",\n \"name\": \"首页\",\n \"icon\": \"https://gw.alipayobjects.com/mdn/rms_815f8a/afts/img/A*IFP5TrZiVooAAAAAAAAAAABkARQnAQ\",\n \"activeIcon\": \"https://gw.alipayobjects.com/mdn/rms_815f8a/afts/img/A*aj8sS5WKLqkAAAAAAAAAAABkARQnAQ\"\n },\n {\n \"pagePath\": \"pages/tickets/tickets\",\n \"name\": \"车票\",\n \"icon\": \"https://gw.alipayobjects.com/mdn/rms_815f8a/afts/img/A*TjUPQLxucooAAAAAAAAAAABkARQnAQ\",\n \"activeIcon\": \"https://gw.alipayobjects.com/mdn/rms_815f8a/afts/img/A*EVuQQLTDPBMAAAAAAAAAAABkARQnAQ\"\n },\n {\n \"pagePath\": \"pages/my/my\",\n \"name\": \"个人中心\",\n \"icon\": \"https://gw.alipayobjects.com/mdn/rms_815f8a/afts/img/A*k9CGQpDLAcgAAAAAAAAAAABkARQnAQ\",\n \"activeIcon\": \"https://gw.alipayobjects.com/mdn/rms_815f8a/afts/img/A*h9rqTb0wb6cAAAAAAAAAAABkARQnAQ\"\n }\n ]\n },\n \"frameworkVersion\": \"0.0.78\"\n}\n","mini.project.json":"{\n \"component2\": true\n}","package-lock.json":"{\n \"requires\": true,\n \"lockfileVersion\": 1,\n \"dependencies\": {\n \"babel-runtime\": {\n \"version\": \"6.26.0\",\n \"resolved\": \"https://registry.npm.alibaba-inc.com/babel-runtime/download/babel-runtime-6.26.0.tgz\",\n \"integrity\": \"sha1-llxwWGaOgrVde/4E/yM3vItWR/4=\",\n \"requires\": {\n \"core-js\": \"^2.4.0\",\n \"regenerator-runtime\": \"^0.11.0\"\n }\n },\n \"core-js\": {\n \"version\": \"2.6.11\",\n \"resolved\": \"https://registry.npm.alibaba-inc.com/core-js/download/core-js-2.6.11.tgz\",\n \"integrity\": \"sha1-OIMUafmSK97Y7iHJ3EaYXgOZMIw=\"\n },\n \"dayjs\": {\n \"version\": \"1.8.18\",\n \"resolved\": \"https://registry.npm.alibaba-inc.com/dayjs/download/dayjs-1.8.18.tgz\",\n \"integrity\": \"sha1-ybP81ajsqW7SCpB/RJFRbW7aFck=\"\n },\n \"herculex\": {\n \"version\": \"0.3.0-beta.5\",\n \"resolved\": \"https://registry.npm.alibaba-inc.com/herculex/download/herculex-0.3.0-beta.5.tgz\",\n \"integrity\": \"sha1-zmwgzxajvIjU8g9INSbTv8IZ8Ro=\",\n \"requires\": {\n \"babel-runtime\": \"^6.26.0\",\n \"immer\": \"^1.7.2\",\n \"immutability-helper-enhanced\": \"^2.8.1\"\n }\n },\n \"immer\": {\n \"version\": \"1.12.1\",\n \"resolved\": \"https://registry.npm.alibaba-inc.com/immer/download/immer-1.12.1.tgz\",\n \"integrity\": \"sha1-QMblspLABWCDbCmTvaOiQ3nUZvU=\"\n },\n \"immutability-helper-enhanced\": {\n \"version\": \"2.8.1\",\n \"resolved\": \"https://registry.npm.alibaba-inc.com/immutability-helper-enhanced/download/immutability-helper-enhanced-2.8.1.tgz\",\n \"integrity\": \"sha1-S5g9YizRhRgfOrbdrCBeiPPQZUQ=\"\n },\n \"mini-antui\": {\n \"version\": \"0.4.34\",\n \"resolved\": \"https://registry.npm.alibaba-inc.com/mini-antui/download/mini-antui-0.4.34.tgz\",\n \"integrity\": \"sha1-PTBoZzgtLrBKSyGlPKlVB3eG1yE=\"\n },\n \"moment\": {\n \"version\": \"2.24.0\",\n \"resolved\": \"https://registry.npm.alibaba-inc.com/moment/download/moment-2.24.0.tgz\",\n \"integrity\": \"sha1-DQVdU/UFKqZTyfbraLtdEr9cK1s=\"\n },\n \"regenerator-runtime\": {\n \"version\": \"0.11.1\",\n \"resolved\": \"https://registry.npm.alibaba-inc.com/regenerator-runtime/download/regenerator-runtime-0.11.1.tgz\",\n \"integrity\": \"sha1-vgWtf5v30i4Fb5cmzuUBf78Z4uk=\"\n }\n }\n}\n","package.json":"{\n \"private\": true,\n \"appid\": \"\",\n \"scripts\": {\n \"ainstall\": \"npm install --registry=https://registry.npm.taobao.org\"\n },\n \"dependencies\": {\n \"tracert-ta\": \"https://gw.alipayobjects.com/os/basement_prod/ec2ef729-5dac-4046-9bea-909f6e8808f7.gz\",\n \"dayjs\": \"^1.8.16\",\n \"herculex\": \"^0.3.0-beta.5\",\n \"mini-antui\": \"^0.4.34\",\n \"moment\": \"^2.22.2\"\n }\n}\n","store.js":"import {GlobalStore} from 'herculex';\n\nexport default new GlobalStore({\n state: {\n },\n plugins: [],\n mutations: {},\n actions: {\n },\n});\n","components/bus-stagement/bus-stagement.acss":".not_spread_icon {\n width: 32rpx;\n height: 32rpx;\n border-radius: 50%;\n border: none;\n background: #0DC46E;\n color: #fff;\n font-size: 17rpx;\n display: inline-block;\n text-align: center;\n line-height: 32rpx;\n vertical-align: middle;\n margin-right: 28rpx;\n}\n.not_spread .up_wraper .up_icon {\n background: #0DC46E;\n}\n.not_spread .off_wraper .off_icon {\n background: #E8541E;\n vertical-align: top;\n}\n.not_spread .off_wraper .time {\n vertical-align: 15rpx;\n font-size: 26rpx;\n}\n.not_spread .off_wraper .name {\n vertical-align: 12rpx;\n font-size: 32rpx;\n}\n.not_spread .time {\n display: inline-block;\n margin-right: 16rpx;\n font-size: 24rpx;\n color: #108EE9;\n}\n.not_spread .name {\n display: inline-block;\n font-size: 32rpx;\n color: #108EE9;\n font-weight: bold;\n}\n.spread_wraper {\n height: 190rpx;\n border-left: 7rpx solid #A1D3F6;\n margin-left: 12rpx;\n line-height: 190rpx;\n padding-left: 44rpx;\n color: #999999;\n font-size: 24rpx;\n}\n.raw {\n width: 14rpx;\n height: 21rpx;\n vertical-align: middle;\n margin-left: 9rpx;\n}\n.spread .item_wraper.flag {\n position: relative;\n z-index: 1000;\n}\n.spread .item_wraper.flag::after {\n content: '';\n position: absolute;\n width: 100%;\n height: 100%;\n background: #FAFAFA;\n top: -34rpx;\n left: 22rpx;\n z-index: -1;\n}\n.spread .item_wraper .dot {\n display: inline-block;\n width: 20rpx;\n height: 20rpx;\n background: #EAEAEA;\n border-radius: 50%;\n margin-right: 34rpx;\n margin-left: 6rpx;\n vertical-align: middle;\n}\n.spread .item_wraper .time {\n display: inline-block;\n margin-right: 16rpx;\n font-size: 26rpx;\n}\n.spread .item_wraper .name {\n display: inline-block;\n font-size: 26rpx;\n}\n.spread .item_wraper .time.flag {\n color: #108EE9;\n}\n.spread .item_wraper .name.flag {\n font-size: 32rpx;\n color: #108EE9;\n font-weight: bold;\n}\n.spread .item_wraper .gap {\n height: 65rpx;\n border-left: 8rpx dotted #EAEAEA;\n box-sizing: border-box;\n margin-left: 12rpx;\n}\n.spread .item_wraper .gap.stagement {\n border-left: 8rpx solid #A1D3F6;\n}\n.spread .item_wraper .gap.end {\n display: none;\n}\n.spread .item_wraper .dot.upbus {\n width: 32rpx;\n height: 32rpx;\n border-radius: 50%;\n background: #00BA1F;\n margin-left: 0;\n color: #fff;\n text-align: center;\n line-height: 32rpx;\n font-size: 17rpx;\n margin-right: 28rpx;\n}\n.spread .item_wraper .dot.offbus {\n width: 32rpx;\n height: 32rpx;\n border-radius: 50%;\n background: #E8541E;\n margin-left: 0;\n color: #fff;\n text-align: center;\n line-height: 32rpx;\n font-size: 17rpx;\n margin-right: 28rpx;\n}\n.spread .item_wraper .dot.stagement {\n width: 20rpx;\n height: 20rpx;\n background: #A1D3F6;\n box-sizing: border-box;\n border-radius: 50%;\n border: 1rpx solid #fff;\n vertical-align: middle;\n}\n","components/bus-stagement/bus-stagement.axml":"<view>\n <view a:if=\"{{!spread}}\" class=\"not_spread\">\n <view class=\"up_wraper\">\n <view class=\"not_spread_icon up_icon\">上</view>\n <view class=\"time\"> {{steps[0].time}}</view>\n <view class=\"name\">{{steps[0].name}}</view>\n </view>\n <view class=\"spread_wraper\" onTap=\"spread\">\n 途径{{steps.length - 2}}站 展开全部站点\n <image class=\"raw\" src=\"https://gw.alipayobjects.com/mdn/rms_815f8a/afts/img/A*TZyQTKcHLOkAAAAAAAAAAABkARQnAQ\"/>\n </view>\n <view class=\"off_wraper\">\n <view class=\"not_spread_icon off_icon\">下</view>\n <view class=\"time\">{{steps[steps.length - 1].time}}</view>\n <view class=\"name\">{{steps[steps.length - 1].name}}</view>\n </view>\n </view>\n <view a:if=\"{{spread}}\" class=\"spread\">\n <view a:for=\"{{steps}}\" class=\"item_wraper {{item.upbus || item.offbus ? 'flag':''}}\">\n <view class=\"dot {{item.upbus ? 'upbus': ''}} {{item.offbus ? 'offbus': ''}} {{item.stagement ? 'stagement' : ''}}\">{{item.upbus ? \"上\": \"\"}}{{item.offbus ? \"下\": \"\"}}</view>\n <view class=\"time {{item.upbus || item.offbus ? 'flag': ''}}\">{{item.time}}</view>\n <view class=\"name {{item.upbus || item.offbus ? 'flag': ''}}\">{{item.name}}{{item.start ? '(始发站)' : ''}}{{item.end ? '(终点站)' : ''}}</view>\n <view class=\"gap {{item.stagement || item.upbus ? 'stagement' : ''}} {{item.end ? 'end': ''}}\"></view>\n </view>\n </view>\n</view>","components/bus-stagement/bus-stagement.js":"import { tracertRoute } from '../../utils/tracert'\n\nComponent({\n mixins: [],\n // start end upbus offbus stagement \n data: {\n spread: false,\n steps: [\n {\n time: '09:00',\n name: '良渚',\n start: true // 始发站\n },\n {\n time: '09:00',\n name: '和谐站'\n },\n {\n time: '09:05',\n name: '富强站',\n upbus: true, // 上车\n },\n {\n time: '09:20',\n name: '德力西大厦',\n stagement: true, // 途径站\n },\n {\n time: '09:45',\n name: '天目山路',\n stagement: true,\n },\n {\n time: '09:55',\n name: '萧山机场',\n offbus: true // 下车\n },\n {\n time: '10:00',\n name: '文明站',\n },\n {\n time: '10:10',\n name: '巴拉巴拉',\n end: true // 终点站\n }\n ]\n },\n props: {},\n didMount() {\n if (this.props.spread) {\n this.setData({\n spread: true\n })\n }\n },\n didUpdate() {},\n didUnmount() {},\n methods: {\n spread() {\n tracertRoute.click('c37420.d75497')\n this.setData({\n spread: true\n })\n }\n },\n});\n","components/bus-stagement/bus-stagement.json":"{\n \"component\": true\n}","components/map/map.acss":"","components/map/map.axml":"<view>\n <map id=\"map\" longitude=\"120.131441\" latitude=\"30.279383\" scale=\"{{scale}}\" controls=\"{{controls}}\"\n onControlTap=\"controltap\" markers=\"{{markers}}\"\n onMarkerTap=\"markertap\"\n polyline=\"{{polyline}}\" circles=\"{{circles}}\"\n onRegionChange=\"regionchange\"\n onTap=\"tap\"\n style=\"{{mapStyle}}\"\n show-location\n include-points=\"{{includePoints}}\"></map>\n\n</view>","components/map/map.js":"Component({\n mixins: [],\n data: {\n polyline: [{\n points: [{\n longitude: 120.131441,\n latitude: 30.279383\n }, {\n longitude: 120.128821,\n latitude: 30.278200\n }, {\n longitude: 120.131618,\n latitude: 30.277600\n }, {\n longitude: 120.132520,\n latitude: 30.279393\n }, {\n longitude: 120.137517,\n latitude: 30.279383\n }],\n color: \"#00BA1FDD\",\n width: 5,\n dottedLine: false\n }],\n markers: [\n {\n iconPath: \"https://gw.alipayobjects.com/mdn/rms_815f8a/afts/img/A*PMzsRpZnO-4AAAAAAAAAAABkARQnAQ\",\n id: 18,\n longitude: 120.131441,\n latitude: 30.279383,\n width: 16,\n height: 16,\n anchorX: 0.5,\n anchorY: 0.2,\n iconAppendStr: '天目山路',\n iconAppendStrColor: '#000'\n },\n {\n iconPath: \"https://gw.alipayobjects.com/mdn/rms_815f8a/afts/img/A*-DPTTKDTsq4AAAAAAAAAAABkARQnAQ\",\n id: 10,\n longitude: 120.128821,\n latitude: 30.278200,\n width: 12.5,\n height: 12.5,\n anchorX: 0.5,\n anchorY: 0.2,\n iconAppendStr: '天目山路',\n iconAppendStrColor: '#000'\n \n },\n {\n iconPath: \"https://gw.alipayobjects.com/mdn/rms_815f8a/afts/img/A*-DPTTKDTsq4AAAAAAAAAAABkARQnAQ\",\n id: 10,\n longitude: 120.131618,\n latitude: 30.277600,\n width: 12.5,\n height: 12.5,\n anchorX: 0.5,\n anchorY: 0.2,\n iconAppendStr: '天目山路',\n iconAppendStrColor: '#000'\n },\n {\n iconPath: \"https://gw.alipayobjects.com/mdn/rms_815f8a/afts/img/A*-DPTTKDTsq4AAAAAAAAAAABkARQnAQ\",\n id: 10,\n longitude: 120.132520,\n latitude: 30.279393,\n width: 12.5,\n height: 12.5,\n anchorX: 0.5,\n anchorY: 0.2,\n iconAppendStr: '天目山路',\n iconAppendStrColor: '#000'\n },\n {\n iconPath: \"https://gw.alipayobjects.com/mdn/rms_815f8a/afts/img/A*a9ahTaVL5gIAAAAAAAAAAABkARQnAQ\",\n id: 11,\n longitude: 120.137517,\n latitude: 30.279383,\n width: 16,\n height: 16,\n anchorX: 0.5,\n anchorY: 0.2,\n iconAppendStr: '天目山路',\n iconAppendStrColor: '#000'\n },\n\n ],\n },\n props: {},\n didMount () {\n if (this.props.controls) {\n this.setData({\n controls: [{\n id: 5,\n iconPath: '/icons/ticket.png',\n position: {\n left: 300,\n top: 35,\n width: 50,\n height: 50\n },\n clickable: true\n }]\n })\n }\n },\n didUpdate () { },\n didUnmount () { },\n \n methods: {\n regionchange() {\n\n },\n },\n});\n","components/map/map.json":"{\n \"component\": true\n}","components/route/route.acss":".route-container {\n position: relative;\n margin-top: 34rpx;\n}\n.route-container .route-line {\n position: absolute;\n width: 2px;\n height: 39rpx;\n background-color: #D8D8D8;\n left: 10rpx;\n top: 30rpx;\n}\n.route-container .row {\n display: flex;\n align-items: center;\n margin-bottom: 28rpx;\n}\n.route-container .row:last-child {\n margin-bottom: 0;\n}\n.route-container .row .from-icon {\n font-size: 12.8rpx;\n background-color: #0dc46e;\n color: #fff;\n width: 24rpx;\n height: 24rpx;\n text-align: center;\n line-height: 24rpx;\n border-radius: 50%;\n}\n.route-container .row .from-icon.noTime {\n margin-right: 24rpx;\n}\n.route-container .row .time {\n font-size: 26rpx;\n font-family: AlipayNumber-Regular;\n color: #999;\n margin: 0 16rpx;\n}\n.route-container .row .place {\n font-size: 15px;\n font-family: PingFangSC-Medium;\n color: #333333;\n letter-spacing: 0;\n}\n.route-container .row .dest-icon {\n font-size: 6px;\n background-color: #f03637;\n color: #fff;\n padding: 6rpx;\n border-radius: 100%;\n font-weight: bold;\n}\n.route-container .row .dest-icon.noTime {\n margin-right: 24rpx;\n}\n","components/route/route.axml":" <view class=\"route-container\">\n <view class=\"route-line\"></view>\n <view class=\"row\">\n <text class=\"from-icon {{type === 'new' ? 'noTime': ''}}\">上</text>\n <text a:if=\"{{type !== 'new'}}\" class=\"time\">{{ from.time }}</text>\n <text class=\"place\">{{ from.place }}</text>\n </view>\n <view class=\"row\">\n <text class=\"dest-icon {{type === 'new' ? 'noTime': ''}}\">下</text>\n <text a:if=\"{{type !== 'new'}}\" class=\"time\">{{ dest.time }}</text>\n <text class=\"place\">{{ dest.place }}</text>\n </view>\n </view>","components/route/route.js":"Component({\n mixins: [],\n data: {\n from: {\n time: '14:20',\n place: '德力西大楼'\n },\n dest: {\n time: '16:20',\n place: '萧山机场'\n }\n },\n props: {},\n didMount() {},\n didUpdate() {},\n didUnmount() {},\n methods: {},\n});\n","components/route/route.json":"{\n \"component\": true\n}","components/textarea-item/textarea-item.acss":".am-textarea-item {\n padding-top: 12px;\n position: relative;\n}\n.am-textarea-item .am-input-line {\n align-items: flex-start;\n}\n.am-textarea-item .am-textarea-content {\n flex: 1;\n display: flex;\n color: #000;\n text-align: left;\n font-size: 14px;\n}\n.count {\n position: absolute;\n right: 32rpx;\n top: 25rpx;\n font-size: 28rpx;\n color: #D2D2D2;\n}\n","components/textarea-item/textarea-item.axml":"<view\n\tclass=\"am-input-item am-textarea-item {{last ? 'last': ''}} {{className}}\"\n>\n\t<view class=\"am-input-line\">\n <view a:if=\"{{$slots.$default}}\" class=\"am-input-label {{labelCls}}\">\n <slot />\n </view>\n <textarea\n enableNative=\"{{enableNative}}\"\n sync-input=\"{{syncInput}}\"\n class=\"am-textarea-content {{inputCls}}\"\n value=\"{{value}}\"\n name=\"{{name}}\"\n type=\"{{type}}\"\n show-count=\"{{false}}\"\n password=\"{{password}}\"\n placeholder=\"{{placeholder}}\"\n placeholderClass=\"{{placeholderClass}}\"\n placeholderStyle=\"{{placeholderStyle}}\"\n disabled=\"{{disabled}}\"\n maxlength=\"{{maxlength}}\"\n focus=\"{{focus}}\"\n onInput=\"onInput\"\n onConfirm=\"onConfirm\"\n onFocus=\"onFocus\"\n onBlur=\"onBlur\"\n />\n\n <slot name=\"extra\" />\n\t\t<view class=\"am-input-line-bottom\" />\n\t</view>\n <text class=\"count\"> {{count}}/{{maxlength}}</text>\n</view>\n","components/textarea-item/textarea-item.js":"import fmtEvent from 'mini-antui/es/_util/fmtEvent';\n\nComponent({\n props: {\n className: '',\n labelCls: '',\n inputCls: '',\n last: false,\n value: '',\n name: '',\n type: 'text',\n password: false,\n placeholder: '',\n placeholderClass: '',\n placeholderStyle: '',\n disabled: false,\n maxlength: 250,\n focus: false,\n clear: false, // 是否带清除功能\n syncInput: false,\n enableNative: false, // 兼容安卓input的输入bug\n onInput: () => {},\n onConfirm: () => {},\n onFocus: () => {},\n onBlur: () => {},\n onClear: () => {},\n },\n data: {\n _focus: false,\n },\n didMount() {\n this.setData({\n _focus: this.props.focus,\n count: 0\n });\n },\n methods: {\n onBlur(e) {\n this.setData({\n _focus: false,\n });\n const event = fmtEvent(this.props, e);\n this.props.onBlur(event);\n },\n onConfirm(e) {\n const event = fmtEvent(this.props, e);\n this.props.onConfirm(event);\n },\n onFocus(e) {\n this.setData({\n _focus: true,\n });\n const event = fmtEvent(this.props, e);\n this.props.onFocus(event);\n },\n onInput(e) {\n this.setData({\n count: e.detail.value.length\n })\n const event = fmtEvent(this.props, e);\n this.props.onInput(event);\n },\n onClear(e) {\n const event = fmtEvent(this.props, e);\n this.props.onClear(event);\n },\n },\n});\n","components/textarea-item/textarea-item.json":"{\n \"component\": true\n}","components/ticket-sale/ticket-sell.acss":".ticket-sell-container {\n background: #FFFFFF;\n border-radius: 4rpx;\n box-shadow: 0 2px 12px 0 rgba(153, 153, 153, 0.11);\n margin-bottom: 24rpx;\n padding: 36rpx 32rpx 20rpx;\n}\n.ticket-sell-container:last-child {\n margin-bottom: 20rpx;\n}\n.ticket-sell-container .ticket-summary {\n font-size: 13px;\n color: #999;\n display: flex;\n align-items: center;\n}\n.ticket-sell-container .ticket-summary .tip {\n font-size: 11px;\n padding: 4rpx;\n margin-left: 16rpx;\n border-radius: 4rpx;\n}\n.ticket-sell-container .ticket-summary .tip.bought {\n background-color: #E4F2FC;\n color: #108EE9;\n}\n.ticket-sell-container .ticket-summary .tip.hot {\n background-color: #FFF0E3;\n color: #FFA458;\n}\n.ticket-sell-container .route-detail {\n position: relative;\n margin-top: 30rpx;\n}\n.ticket-sell-container .route-detail .route-line {\n position: absolute;\n width: 2px;\n height: 40rpx;\n background-color: #D8D8D8;\n left: 10rpx;\n top: 30rpx;\n}\n.ticket-sell-container .route-detail .row {\n display: flex;\n align-items: center;\n margin-bottom: 28rpx;\n}\n.ticket-sell-container .route-detail .row:last-child {\n margin-bottom: 0;\n}\n.ticket-sell-container .route-detail .row .from-icon {\n font-size: 6px;\n background-color: #0dc46e;\n color: #fff;\n width: 24rpx;\n height: 24rpx;\n text-align: center;\n line-height: 24rpx;\n border-radius: 50%;\n font-weight: bolder;\n}\n.ticket-sell-container .route-detail .row .time {\n font-size: 13px;\n color: #999;\n margin: 0 16rpx;\n}\n.ticket-sell-container .route-detail .row .place {\n font-size: 15px;\n font-family: PingFangSC-Medium;\n color: #333333;\n letter-spacing: 0;\n}\n.ticket-sell-container .route-detail .row .dest-icon {\n font-size: 6px;\n background-color: #f03637;\n color: #fff;\n width: 24rpx;\n height: 24rpx;\n text-align: center;\n line-height: 24rpx;\n border-radius: 50%;\n font-weight: bolder;\n}\n.ticket-sell-container .sep-line {\n height: 1rpx;\n border-bottom: 1rpx solid #eee;\n margin: 28rpx -32rpx 24rpx;\n}\n.ticket-sell-container .action-bar {\n display: flex;\n justify-content: space-between;\n align-items: center;\n}\n.ticket-sell-container .action-bar .price-wap {\n display: flex;\n align-items: baseline;\n}\n.ticket-sell-container .action-bar .price-wap .origin-price {\n color: #BDBDBD;\n font-size: 12px;\n text-decoration: line-through;\n}\n.ticket-sell-container .action-bar .price-wap .price {\n color: #F25130;\n font-size: 19px;\n margin-right: 15rpx;\n}\n.ticket-sell-container .action-bar .price-wap .price .number {\n font-size: 38rpx;\n font-family: AlipayNumber-Regular;\n}\n.ticket-sell-container .action-bar .price-wap .price .unit {\n font-size: 22rpx;\n}\n.ticket-sell-container .action-bar .price-wap .origin-price .number {\n font-size: 22rpx;\n}\n.ticket-sell-container .action-bar .price-wap .origin-price .unit {\n font-size: 22rpx;\n}\n.ticket-sell-container .action-bar .buy-button {\n font-size: 16px;\n width: 130rpx;\n height: 58rpx;\n line-height: 58rpx;\n}\n.ticket-sell-container .action-bar .see-button {\n font-size: 16px;\n width: 130rpx;\n height: 58rpx;\n line-height: 58rpx;\n background-color: #fff;\n color: #108EE9;\n}\n","components/ticket-sale/ticket-sell.axml":"<view class=\"ticket-sell-container\">\n <view catchTap=\"goToDetail\">\n <view class=\"ticket-summary\">\n <text class=\"time\">早</text>\n <text class=\"time\">·S100</text>\n <text class=\"tip hot\">曾经买过</text>\n </view>\n <view class=\"route-detail\">\n <view class=\"route-line\"></view>\n <view class=\"row\">\n <text class=\"from-icon\">上</text>\n <text class=\"time\">14:20</text>\n <text class=\"place\">德力西大楼</text>\n </view>\n <view class=\"row\">\n <text class=\"dest-icon\">下</text>\n <text class=\"time\">16:20</text>\n <text class=\"place\">萧山机场</text>\n </view>\n </view>\n <view class=\"sep-line\"></view>\n <view class=\"action-bar\">\n <view class=\"price-wap\">\n <view class=\"price\">\n <text class=\"number\">22.50</text>\n <text class=\"unit\">元</text>\n </view>\n <view class=\"origin-price\">\n <text class=\"number\">22.50</text>\n <text class=\"unit\">元</text>\n </view>\n </view>\n <view>\n <button a:if=\"{{type === 1}}\" catchTap=\"goBuyTicket\" class=\"buy-button\" type=\"primary\">购票</button>\n <button a:if=\"{{type === 2}}\" catchTap=\"goSeeTicket\" class=\"see-button\" type=\"primary\">查看</button>\n </view>\n </view>\n </view>\n</view>","components/ticket-sale/ticket-sell.js":"import { tracertHome, tracertRouteSearch } from '../../utils/tracert' \n\n\nComponent({\n mixins: [],\n data: {\n type: 1\n },\n props: {\n // id: 1 // 车票Id \n },\n didMount() {},\n didUpdate() {},\n didUnmount() {},\n methods: {\n goToDetail() {\n const { origin, go } = this.props;\n if (origin === 'search') {\n tracertRouteSearch.click('c37417.d75493_N')\n }\n if (go === 'ticket') {\n my.navigateTo({\n url: '/pages/ticket-detail/ticket-detail'\n });\n }\n if (go === 'route') {\n my.navigateTo({\n url: '/pages/route-detail/route-detail'\n });\n }\n },\n goBuyTicket() {\n const { origin } = this.props\n if (origin === 'search') {\n tracertRouteSearch.click('c37417.d75509')\n } else {\n tracertHome.click('c37414_N.d75508')\n }\n my.navigateTo({\n url: '../order-confirm/order-confirm'\n });\n },\n goSeeTicket() {\n const { origin } = this.props\n if (origin === 'search') {\n tracertRouteSearch.click('c37417.d75509')\n } else {\n tracertHome.click('c37414_N.d75488')\n }\n \n }\n },\n});\n","components/ticket-sale/ticket-sell.json":"{\n \"component\": true\n}","components/ticket/ticket.acss":".ticket-container {\n box-shadow: 0 2px 12px 0 rgba(153, 153, 153, 0.11);\n border-radius: 4rpx;\n overflow: hidden;\n position: relative;\n box-sizing: border-box;\n}\n.ticket-container .ticket-dot {\n border-radius: 100%;\n background: #FFF;\n width: 25rpx;\n height: 25rpx;\n position: absolute;\n top: 70rpx;\n}\n.ticket-container .ticket-dot.left {\n left: -16rpx;\n}\n.ticket-container .ticket-dot.right {\n right: -16rpx;\n}\n.ticket-container .content {\n padding: 36rpx 32rpx;\n background: url('https://gw.alipayobjects.com/mdn/rms_815f8a/afts/img/A*QfM_RKDAoU4AAAAAAAAAAABkARQnAQ');\n background-size: 100% 100%;\n box-sizing: border-box;\n}\n.ticket-container .content .ticket-summary {\n font-size: 13px;\n color: #999;\n}\n.ticket-container .content .route-detail {\n position: relative;\n margin-top: 34rpx;\n}\n.ticket-container .content .route-detail .route-line {\n position: absolute;\n width: 2px;\n height: 40rpx;\n background-color: #D8D8D8;\n left: 10rpx;\n top: 30rpx;\n}\n.ticket-container .content .route-detail .row {\n display: flex;\n align-items: center;\n margin-bottom: 28rpx;\n}\n.ticket-container .content .route-detail .row:last-child {\n margin-bottom: 0;\n}\n.ticket-container .content .route-detail .row .from-icon {\n font-size: 12.8rpx;\n background-color: #0dc46e;\n color: #fff;\n width: 24rpx;\n height: 24rpx;\n text-align: center;\n line-height: 24rpx;\n border-radius: 50%;\n font-weight: bolder;\n}\n.ticket-container .content .route-detail .row .time {\n font-size: 13px;\n color: #999;\n margin: 0 16rpx;\n font-family: AlipayNumber-Regular;\n}\n.ticket-container .content .route-detail .row .place {\n font-size: 15px;\n font-family: PingFangSC-Medium;\n color: #333333;\n letter-spacing: 0;\n}\n.ticket-container .content .route-detail .row .dest-icon {\n font-size: 6px;\n background-color: #f03637;\n color: #fff;\n width: 24rpx;\n height: 24rpx;\n text-align: center;\n line-height: 24rpx;\n border-radius: 50%;\n font-weight: bolder;\n}\n.ticket-container:after {\n content: ' ';\n display: block;\n height: 1px;\n}\n.ticket-container.finish .top-bar,\n.ticket-container.refund .top-bar {\n background: url('https://gw.alipayobjects.com/mdn/rms_815f8a/afts/img/A*0gcwSIR5IKAAAAAAAAAAAABkARQnAQ');\n background-size: 100% 100%;\n}\n.ticket-container.finish .top-bar .ticket-time,\n.ticket-container.finish .top-bar .ticket-extra,\n.ticket-container.refund .top-bar .ticket-time,\n.ticket-container.refund .top-bar .ticket-extra {\n color: #999;\n font-size: 26rpx;\n}\n.ticket-container.finish .content .ticket-summary,\n.ticket-container.refund .content .ticket-summary {\n opacity: 0.8;\n}\n.ticket-container.finish .content .route-detail .row .place,\n.ticket-container.finish .content .route-detail .row .time,\n.ticket-container.refund .content .route-detail .row .place,\n.ticket-container.refund .content .route-detail .row .time {\n color: #9a9a9a;\n font-weight: bold;\n}\n.ticket-container.finish .content .route-detail .row .from-icon,\n.ticket-container.finish .content .route-detail .row .dest-icon,\n.ticket-container.refund .content .route-detail .row .from-icon,\n.ticket-container.refund .content .route-detail .row .dest-icon {\n background-color: #B3B3B3;\n}\n.ticket-container .top-bar {\n height: 84rpx;\n background: url('https://gw.alipayobjects.com/mdn/rms_815f8a/afts/img/A*o4CJQ51B1RQAAAAAAAAAAABkARQnAQ');\n background-size: cover;\n display: flex;\n justify-content: space-between;\n align-items: center;\n padding-left: 32rpx;\n box-sizing: border-box;\n}\n.ticket-container .top-bar.disabled {\n background: #EEE;\n}\n.ticket-container .top-bar.disabled .ticket-extra {\n color: #999999;\n font-size: 26rpx;\n}\n.ticket-container .top-bar .ticket-time {\n color: #000;\n font-size: 26rpx;\n}\n.ticket-container .top-bar .ticket-extra {\n color: #118EEA;\n margin-right: 32rpx;\n font-family: PingFangSC-Medium;\n font-size: 26rpx;\n}\n.place.disable {\n color: #999 !important;\n}\n.tip {\n font-size: 11px;\n padding: 4rpx;\n margin-left: 16rpx;\n border-radius: 4rpx;\n}\n.tip.hot {\n background-color: #FFF0E3;\n color: #FFA458;\n}\n.custom-wraper {\n padding: 0 25rpx;\n border-top: 1rpx solid #eee;\n}\n.ready .custom-wraper {\n border-top: none;\n}\n.custom-wraper .progress {\n width: 100%;\n height: 25rpx;\n background: #D8D8D8;\n border-radius: 12rpx;\n position: relative;\n}\n.custom-wraper .info-wraper {\n display: flex;\n justify-content: space-between;\n margin-top: 24rpx;\n}\n.custom-wraper .info-wraper .text {\n font-size: 26rpx;\n color: #A0A0A0;\n}\n.custom-wraper .info-wraper .text .number {\n font-size: 26rpx;\n color: #108EE9;\n font-family: AlipayNumber-Regular;\n}\n.custom-wraper .progress .step {\n position: absolute;\n height: 100%;\n background: #F5A623;\n border-radius: 12rpx;\n font-size: 18rpx;\n color: #fff;\n line-height: 25rpx;\n text-align: center;\n}\n.custom-wraper .button {\n width: 163rpx;\n height: 58rpx;\n font-size: 32rpx;\n line-height: 58rpx;\n margin-bottom: 10rpx;\n}\n.ticket-container .action-bar {\n display: flex;\n justify-content: space-between;\n align-items: center;\n padding: 0 25rpx 25rpx;\n}\n.ticket-container .action-bar .price-wap {\n display: flex;\n align-items: baseline;\n}\n.ticket-container .action-bar .price-wap .origin-price {\n color: #BDBDBD;\n font-size: 12px;\n text-decoration: line-through;\n}\n.ticket-container .action-bar .price-wap .price {\n color: #F25130;\n font-size: 19px;\n margin-right: 15rpx;\n font-family: AlipayNumber-Regular;\n}\n.ticket-container .action-bar .buy-button {\n font-size: 16px;\n width: 130rpx;\n height: 58rpx;\n line-height: 58rpx;\n}\n.ticket-container .action-bar .see-button {\n font-size: 16px;\n width: 130rpx;\n height: 58rpx;\n line-height: 58rpx;\n background-color: #fff;\n color: #108EE9;\n}\n.sep-line {\n height: 1rpx;\n border-bottom: 1rpx solid #eee;\n margin: 32rpx -32rpx;\n}\n.button-group {\n display: flex;\n}\n.button-group .button {\n flex: 1;\n}\n.button-group .cancel {\n border-right: 1rpx solid #eee;\n color: #999;\n}\n","components/ticket/ticket.axml":"<view class=\"ticket-container {{ type }}\" >\n <view onTap=\"onTicketClick\">\n <view class=\"top-bar {{type === 'canceled' ? 'disabled' : ''}}\">\n <view a:if=\"{{ type === 'start' || type === 'finish' || type === 'refund'}}\" class=\"ticket-time\">\n 6月2日今天 09:00发车\n </view>\n <slot name=\"topExtra\" a:if=\"{{ showTopExtra }}\" ></slot>\n <view class=\"ticket-extra\" a:else>\n {{ status }}\n </view>\n </view>\n <view class=\"content\">\n <view class=\"ticket-summary\" a:if=\"{{type !== 'ready'}}\">\n <text class=\"time\">早</text>\n <text class=\"time\">·S100</text>\n <text class=\"tip hot\">曾经买过</text>\n </view>\n <view class=\"route-detail\">\n <view class=\"route-line\"></view>\n <view class=\"row\">\n <text class=\"from-icon\">上</text>\n <text class=\"time\">14:20</text>\n <text class=\"place {{type === 'canceled' ? 'disable': ''}}\">德力西大楼</text>\n </view>\n <view class=\"row\">\n <text class=\"dest-icon\">下</text>\n <text class=\"time\">16:20</text>\n <text class=\"place {{type === 'canceled' ? 'disable': ''}}\">萧山机场</text>\n </view>\n </view>\n </view>\n <view a:if=\"{{type === 'ready'}}\" class=\"custom-wraper\">\n <view class=\"progress\">\n <view class=\"step\" style=\"{{width: step/20 * 100 + '%'}}\">{{step}}/20个</view>\n </view>\n <view class=\"info-wraper\">\n <view class=\"text\">已有<text class=\"number\">{{step}}</text>人参与定制</view>\n <button class=\"button\" type=\"primary\" a:if=\"{{type !== 'ready'}}\">参与定制</button>\n <button class=\"button\" type=\"primary\" a:if=\"{{type === 'ready'}}\" catchTap=\"onCancel\">取消定制</button>\n </view>\n </view>\n <view class=\"sep-line\" a:if=\"{{type === 'already'}}\"></view>\n <view class=\"action-bar\" a:if=\"{{type === 'already'}}\">\n <view class=\"price-wap\">\n <view class=\"price\">\n <text>22.50</text>\n <text>元</text>\n </view>\n <view class=\"origin-price\">\n <text>22.50</text>\n <text>元</text>\n </view>\n </view>\n <view>\n <button catchTap=\"goBuyTicket\" class=\"buy-button\" type=\"primary\">购票</button>\n </view>\n </view>\n </view>\n</view>","components/ticket/ticket.js":"import fmtEvent from 'mini-antui/es/_util/fmtEvent';\nimport { tracertHome, tracertList } from '../../utils/tracert'\nimport { connect } from 'herculex';\n\nComponent(connect({\n mapStateToProps: ['cancelCustomerVisible']\n})(\n {\n mixins: [],\n data: {\n status: '',\n step: 5,\n cancelCustomerVisible: false,\n },\n props: {\n type: 'start',\n showTopExtra: false,\n onTicketClick: () => {}\n },\n \n didMount() {\n const { type } = this.props;\n this.onUpdateStatus(type);\n },\n didUpdate(prevProps) {\n const { type } = this.props;\n if (type !== prevProps.type) {\n this.onUpdateStatus(type);\n }\n },\n didUnmount() {},\n methods: {\n goBuyTicket() {\n tracertList.click('c37434.d75523')\n my.navigateTo({\n url: '/pages/order-confirm/order-confirm'\n });\n }, \n onTicketClick(e){\n tracertHome.click('c37412.d75484')\n const event = fmtEvent(this.props, e);\n this.props.onTicketClick(e);\n if (this.props.go === 'ticket') {\n my.navigateTo({\n url: '/pages/ticket-detail/ticket-detail'\n });\n }\n if (this.props.go === 'route') {\n my.navigateTo({\n url: '/pages/ticket-detail/ticket-detail'\n });\n }\n },\n onCancel () {\n tracertList.click('c37434.d75522')\n this.commit('openCancelModal', {\n cancelCustomerVisible: true\n })\n },\n onUpdateStatus(type) {\n let status = '';\n if (type === 'finish') {\n status = '已结束';\n } else if (type === 'start') {\n status = '待出行';\n } else if (type === 'refund') {\n status = '已退票';\n } else if (type === 'ready') {\n status = '待成行';\n } else if (type === 'already') {\n status = '已成行';\n } else if (type === 'canceled') {\n status = '已取消';\n }\n\n this.setData({\n status\n });\n },\n },\n}\n));\n","components/ticket/ticket.json":"{\n \"component\": true,\n \"usingComponents\": {\n \"popover\": \"mini-antui/es/popover/index\",\n \"popover-item\": \"mini-antui/es/popover/popover-item/index\"\n }\n}\n","components/titlebar-placeholder/titlebar-placeholder.acss":".titlebar-placeholder-container {\n height: 128rpx;\n}\n","components/titlebar-placeholder/titlebar-placeholder.axml":"<view class=\"titlebar-placeholder-container\">\n \n</view>","components/titlebar-placeholder/titlebar-placeholder.js":"Component({\n mixins: [],\n data: {},\n props: {},\n didMount() {},\n didUpdate() {},\n didUnmount() {},\n methods: {},\n});\n","components/titlebar-placeholder/titlebar-placeholder.json":"{\n \"component\": true\n}","components/user-route/user-route.acss":".user-route {\n box-shadow: 0 2px 12px 0 rgba(153, 153, 153, 0.11);\n border-bottom: 1rpx solid #EEEEEE;\n background: #FFFFFF;\n flex: 1;\n display: flex;\n height: 200.5rpx;\n margin-top: -5rpx;\n}\n.user-route .from-to {\n width: 82rpx;\n display: flex;\n flex-direction: column;\n position: relative;\n padding-bottom: 15rpx;\n box-sizing: border-box;\n}\n.user-route .from-to .route-line {\n border-left: 3rpx dotted #EEEEEE;\n height: 60rpx;\n position: absolute;\n left: 38rpx;\n top: 60rpx;\n}\n.user-route .from-to .from-wrap {\n flex: 1;\n align-items: center;\n justify-content: center;\n display: flex;\n}\n.user-route .from-to .from-wrap .from,\n.user-route .from-to .from-wrap .to {\n width: 18rpx;\n height: 18rpx;\n border-radius: 100%;\n background-color: #0DC46E;\n}\n.user-route .from-to .from-wrap .to {\n background-color: #F03637;\n}\n.user-route .input-wrap {\n background-color: #fff;\n background: #FFFFFF;\n flex: 1;\n}\n.user-route .input-wrap .line-item {\n height: 89rpx;\n display: flex;\n align-items: center;\n border-bottom: 1rpx solid #EEEEEE;\n}\n.user-route .input-wrap .line-item:last-child {\n border: none;\n}\n.user-route .switch-wrap {\n width: 96rpx;\n display: flex;\n justify-content: center;\n align-items: center;\n padding-bottom: 15rpx;\n box-sizing: border-box;\n}\n.user-route .switch-wrap .icon {\n width: 30rpx;\n height: 30rpx;\n}\n","components/user-route/user-route.axml":"<view class=\"user-route-container\">\n <view class=\"user-route\">\n <view class=\"from-to\">\n <view class=\"from-wrap\">\n <view class=\"from\"></view>\n </view>\n <view class=\"from-wrap\">\n <view class=\"to\"></view>\n </view>\n <view class=\"route-line\"></view>\n </view>\n <view class=\"input-wrap\">\n <view class=\"line-item\">\n <input class=\"input\" value=\"{{ from }}\" />\n </view>\n <view class=\"line-item\">\n <input class=\"input\" value=\"{{ dest }}\" />\n </view>\n </view>\n <view class=\"switch-wrap\">\n <image \n src=\"https://gw.alipayobjects.com/mdn/rms_cd276b/afts/img/A*rDtJTK-qYCIAAAAAAAAAAABkARQnAQ\" \n mode=\"aspectFit\"\n class=\"icon\"\n onTap=\"onSwitch\"\n />\n </view>\n </view>\n \n</view>","components/user-route/user-route.js":"Component({\n mixins: [],\n data: {\n from: '蚂蚁z空间dd',\n dest: '富士康科技集团'\n },\n props: {\n from: '蚂蚁z空间',\n dest: '富士康科技集团'\n },\n didMount() {\n const { from, dest } = this.props;\n\n },\n didUpdate(prevProps) {\n const { from, dest } = this.props;\n if (from != prevProps.from || dest != prevProps.dest) {\n this.setData({\n from,\n dest\n })\n }\n },\n didUnmount() {},\n methods: {\n onSwitch() {\n const { from, dest } = this.data;\n this.setData({\n from: dest,\n dest: from\n });\n const { onSwitch } = this.props;\n onSwidth && onSwitch();\n }\n },\n});\n","components/user-route/user-route.json":"{\n \"component\": true\n}","pages/change-station/change-station.acss":"page {\n background: #FFF;\n}\n.header {\n display: flex;\n justify-content: flex-end;\n height: 78rpx;\n box-sizing: border-box;\n padding: 23rpx 32rpx 20rpx 0;\n color: #108EE9;\n border-bottom: 1rpx solid #EEE;\n}\n.title {\n box-sizing: border-box;\n padding: 40rpx 32rpx;\n color: #999999;\n font-size: 26rpx;\n}\n","pages/change-station/change-station.axml":"<view>\n \n <map mapStyle=\"{{height: '146rpx'}}\"/>\n <view class=\"change_wraper\">\n <view class=\"header\">\n <view onTap=\"submit_change\">确定</view>\n </view>\n <view class=\"content\">\n <view class=\"upbus\">\n <view class=\"title\">选择上车点</view>\n <select-bus-stagement steps=\"{{upSteps}}\" onChange=\"changeUpStation\" />\n </view>\n <view class=\"offbus\">\n <view class=\"title\">选择下车点</view>\n <select-bus-stagement steps=\"{{offSteps}}\" onChange=\"changeOffStation\" />\n </view>\n </view>\n </view>\n</view>","pages/change-station/change-station.js":"Page({\n data: {\n upSteps: [\n {\n time: '09:00',\n name: '良渚',\n start: true,\n },\n {\n time: '09:10',\n name: '幸福站',\n },\n {\n time: '09.20',\n name: '德力西大厦',\n upbus: true,\n des: '离我最近 步行444米'\n },\n {\n time: '09.45',\n name: '天目山路',\n }\n ],\n offSteps: [\n {\n time: '09.50',\n name: '和谐路',\n },\n {\n time: '09.50',\n name: '萧山机场',\n offbus: true\n },\n {\n time: '10.00',\n name: '富强路',\n },\n {\n time: '10.10',\n name: '民主路',\n end: true,\n }\n ]\n },\n changeUpStation (i) {\n this.data.upSteps.forEach((item, index) => {\n if (index === i) item.upbus= true\n else item.upbus = false\n this.setData({\n upSteps: this.data.upSteps\n })\n })\n },\n changeOffStation(i) {\n this.data.offSteps.forEach((item, index) => {\n if (index === i) item.offbus = true\n else item.offbus = false\n this.setData({\n offSteps: this.data.offSteps\n })\n })\n },\n onLoad() {},\n submit_change() {\n my.navigateBack();\n },\n});\n","pages/change-station/change-station.json":"{\n \"defaultTitle\": \"更改站点\",\n \"usingComponents\": {\n \"map\": \"/components/map/map\",\n \"select-bus-stagement\": \"./components/select-bus-stagement/select-bus-stagement\"\n }\n}","pages/change-station/components/select-bus-stagement/select-bus-stagement.acss":".item_wraper {\n padding: 0 32rpx;\n}\n.item_wraper.flag {\n position: relative;\n z-index: 1000;\n}\n.item_wraper.flag::after {\n content: '';\n position: absolute;\n width: 93%;\n height: 101rpx;\n background: #FAFAFA;\n top: -34rpx;\n left: 7%;\n z-index: -1;\n overflow: hidden;\n}\n.item_wraper .dot {\n display: inline-block;\n width: 32rpx;\n height: 32rpx;\n background: #fff;\n border-radius: 50%;\n vertical-align: middle;\n border: 2rpx solid #108EE9;\n box-sizing: border-box;\n margin-right: 30rpx;\n}\n.item_wraper .time {\n display: inline-block;\n margin-right: 16rpx;\n font-size: 24rpx;\n}\n.item_wraper .name {\n display: inline-block;\n font-size: 26rpx;\n}\n.item_wraper .time.flag {\n color: #108EE9;\n}\n.item_wraper .name.flag {\n font-size: 32rpx;\n color: #108EE9;\n font-weight: bold;\n}\n.item_wraper .gap {\n height: 65rpx;\n border-left: 4rpx dotted #EAEAEA;\n box-sizing: border-box;\n margin-left: 12rpx;\n}\n.item_wraper:last-child .gap {\n height: 0;\n}\n.item_wraper .gap.end {\n display: none;\n}\n.item_wraper .des {\n float: right;\n font-size: 24rpx;\n color: #999;\n padding-top: 3rpx;\n}\n.item_wraper .dot.upbus {\n width: 32rpx;\n height: 32rpx;\n border-radius: 50%;\n background: #00BA1F;\n margin-left: 0;\n color: #fff;\n text-align: center;\n line-height: 32rpx;\n font-size: 12.8rpx;\n margin-right: 28rpx;\n font-weight: bold;\n border: none;\n}\n.item_wraper .dot.offbus {\n width: 32rpx;\n height: 32rpx;\n border-radius: 50%;\n background: #E8541E;\n margin-left: 0;\n color: #fff;\n text-align: center;\n line-height: 32rpx;\n font-size: 12.8rpx;\n font-weight: bold;\n margin-right: 28rpx;\n border: none;\n}\n","pages/change-station/components/select-bus-stagement/select-bus-stagement.axml":"<view>\n <view class=\"item_wraper {{item.upbus || item.offbus ? 'flag' : ''}}\" a:for=\"{{steps}}\" onTap=\"changeStation\" data-index=\"{{index}}\">\n <view class=\"dot {{item.upbus ? 'upbus': ''}} {{item.offbus ? 'offbus' : ''}}\">{{item.upbus ? '上' : ''}}{{item.offbus ? '下' : ''}}</view>\n <view class=\"time {{item.upbus || item.offbus ? 'flag' : ''}}\">{{item.time}}</view>\n <view class=\"name {{item.upbus || item.offbus ? 'flag' : ''}}\">{{item.name}}{{item.start ? '(始发站)' : ''}}{{item.end ? '(终点站)' : ''}}</view>\n <view class=\"des\"> {{item.des}} </view>\n <view class=\"gap\"></view>\n </view>\n</view>","pages/change-station/components/select-bus-stagement/select-bus-stagement.js":"Component({\n mixins: [],\n data: {\n \n },\n props: {},\n didMount() {\n },\n didUpdate() {},\n didUnmount() {},\n methods: {\n changeStation(e) {\n this.props.onChange(e.currentTarget.dataset.index)\n }\n },\n});\n","pages/change-station/components/select-bus-stagement/select-bus-stagement.json":"{\n \"component\": true\n}","pages/custom-routes/custom-routes.acss":".container_wraper {\n padding: 26rpx 32rpx;\n}\n.title {\n font-size: 26rpx;\n color: #979797;\n padding: 32rpx 0;\n}\n.button-group {\n display: flex;\n}\n.button-group .button {\n flex: 1;\n}\n.button-group .cancel {\n border-right: 1rpx solid #eee;\n color: #999;\n}\n","pages/custom-routes/custom-routes.axml":"<view>\n <view class=\"container_wraper\">\n <view class=\"ready_routes\">\n <view class=\"title\">线路开通后,将会以短信形式告知你</view>\n <ticket go=\"route\" type=\"ready\" cancelModal=\"{{cancelModal}}\" />\n </view>\n <view class=\"finished_routes\">\n <view class=\"title\">已成行路线</view>\n <ticket go=\"route\" type=\"already\" />\n </view>\n <view class=\"canceled_routes\">\n <view class=\"title\">已取消路线列表</view>\n <ticket go=\"route\" type=\"canceled\" />\n </view>\n </view>\n <modal class=\"ticket-cancel-wraper\" show=\"{{cancelCustomerVisible}}\" showClose=\"{{false}}\" >\n <view slot=\"header\">取消定制</view>\n 马上就要成行啦, 取消路线不可恢复, 真的要取消吗? \n <view class=\"button-group\" slot=\"footer\">\n <view class=\"button cancel\" onTap=\"cancelCustomer\">暂时不</view>\n <view class=\"button submit\" onTap=\"submitCustomer\">确定取消</view>\n </view>\n </modal>\n</view>","pages/custom-routes/custom-routes.js":"import { tracertList } from '../../utils/tracert'\nimport store from './store';\n\nPage(store.register(\n {\n data: {\n },\n onLoad() {\n tracertList.logPv()\n },\n onShow() {\n tracertList.expo('c37434')\n },\n cancelCustomer() {\n this.commit('closeCancelModal', {\n cancelCustomerVisible: false\n })\n },\n submitCustomer() {\n this.commit('closeCancelModal', {\n cancelCustomerVisible: false\n })\n }\n \n \n}\n));\n","pages/custom-routes/custom-routes.json":"{\n \"defaultTitle\": \"定制路线\",\n \"usingComponents\": {\n \"ticket\": \"/components/ticket/ticket\",\n \"modal\": \"mini-antui/es/modal/index\"\n\n }\n \n}","pages/custom-routes/store.js":"import Store from 'herculex';\n\nexport default new Store({\n state: {\n cancelCustomerVisible: false\n },\n plugins: [],\n mutations: {},\n actions: {\n },\n});\n","pages/customize/customize.acss":".customize-container {\n background-color: #FAFAFA;\n height: 100%;\n margin-top: 24rpx;\n}\n.customize-container .am-picker-content {\n justify-content: flex-end;\n}\n.customize-container .am-input-content {\n font-size: 14px;\n text-align: right;\n}\n.customize-container .am-input-clear {\n display: none;\n}\n.customize-container .action-wrap {\n margin: 60rpx 32rpx 0;\n}\n","pages/customize/customize.axml":"<view class=\"customize-container\">\n <list>\n <picker-item\n data-field=\"home\"\n placeholder=\"蚂蚁Z空间\"\n value=\"{{bank}}\"\n onPickerTap=\"onPickerTap\"\n >\n 家在哪儿\n </picker-item>\n <picker-item\n data-field=\"company\"\n placeholder=\"富士康科技集团\"\n value=\"{{bank}}\"\n onPickerTap=\"onPickerTap\"\n >\n 公司在哪儿\n </picker-item>\n <input-item\n data-field=\"mobile\"\n placeholder=\"上班考勤时间\"\n type=\"number\"\n value=\"{{mobile}}\"\n clear=\"{{true}}\"\n onInput=\"onItemInput\"\n onClear=\"onClear\"\n >\n 上班考勤时间\n </input-item>\n <input-item\n data-field=\"mobile\"\n placeholder=\"下班考勤时间\"\n type=\"number\"\n value=\"{{mobile}}\"\n clear=\"{{true}}\"\n onInput=\"onItemInput\"\n onClear=\"onClear\"\n >\n 下班考勤时间\n </input-item>\n <input-item\n data-field=\"mobile\"\n placeholder=\"请输入手机号码\"\n type=\"number\"\n value=\"{{mobile}}\"\n clear=\"{{true}}\"\n onInput=\"onItemInput\"\n onClear=\"onClear\"\n >\n 手机号码\n </input-item>\n <textarea-item>\n 备注\n </textarea-item>\n </list>\n <view class=\"action-wrap\">\n <button type=\"primary\" onTap=\"submit\">\n 提交\n </button>\n </view>\n\n</view>","pages/customize/customize.js":"import { tracertCustomer } from '../../utils/tracert'\n\nPage({\n data: {},\n onLoad() {\n tracertCustomer.logPv()\n },\n submit() {\n tracertCustomer.click('c37418.d75494')\n },\n onPickerTap() {\n my.navigateTo({\n url: '/pages/search/search?type=customer'\n });\n }\n});\n","pages/customize/customize.json":"{\n \"defaultTitle\": \"发起定制\",\n \"usingComponents\" : {\n \"list\": \"mini-antui/es/list/index\",\n \"input-item\": \"mini-antui/es/input-item/index\",\n \"list-item\": \"mini-antui/es/list/list-item/index\",\n \"picker-item\": \"mini-antui/es/picker-item/index\",\n \"textarea-item\": \"../../components/textarea-item/textarea-item\"\n }\n \n}","pages/find-station/find-station.acss":"page {\n background-color: #fff;\n}\n.route-info {\n padding: 40rpx 0rpx 10rpx 40rpx;\n}\n.info-location {\n font-family: PingFangSC-Medium;\n font-size: 28rpx;\n color: #000000;\n letter-spacing: 0;\n}\n.info-img {\n width: 60rpx;\n height: 18rpx;\n}\n.info-hour {\n font-family: PingFangSC-Regular;\n font-size: 26rpx;\n color: #999999;\n letter-spacing: 0;\n margin: 15rpx 0;\n}\n.info-start {\n font-family: PingFangSC-Regular;\n font-size: 26rpx;\n color: #999999;\n letter-spacing: 0.56px;\n margin: 15rpx 0;\n}\n.divide {\n border-bottom: 1px solid #eeeeee;\n margin: 0 40rpx;\n}\n.steps-detail {\n padding: 40rpx 0 40rpx 40rpx;\n}\n.detail-left {\n display: flex;\n flex-direction: column;\n align-items: center;\n justify-content: center;\n}\n.left-up {\n width: 30rpx;\n height: 30rpx;\n border-radius: 50%;\n background: #0DC46E;\n color: white;\n display: flex;\n align-items: center;\n justify-content: center;\n font-size: 18rpx;\n}\n.left-line {\n width: 7rpx;\n height: 150rpx;\n background: #A1D3F6;\n}\n.left-down {\n width: 30rpx;\n height: 30rpx;\n border-radius: 50%;\n background: #F03637;\n color: white;\n display: flex;\n align-items: center;\n justify-content: center;\n font-size: 18rpx;\n}\n.detail-right {\n display: flex;\n flex-direction: column;\n align-items: flex-start;\n justify-content: space-between;\n margin-left: 50rpx;\n}\n.right-top {\n display: flex;\n align-items: center;\n justify-content: center;\n}\n.right-bottom {\n display: flex;\n align-items: center;\n justify-content: center;\n}\n.right-mid {\n font-family: PingFangSC-Regular;\n font-size: 24rpx;\n color: #999999;\n letter-spacing: 0.52rpx;\n}\n.right-time {\n font-family: HelveticaNeue;\n font-size: 24rpx;\n color: #108EE9;\n letter-spacing: 0.52rpx;\n}\n.right-location {\n font-family: PingFangSC-Medium;\n font-size: 32rpx;\n color: #108EE9;\n letter-spacing: 0.69rpx;\n margin-left: 20rpx;\n}\n","pages/find-station/find-station.axml":"<view>\n <map mapStyle=\"{{height: '232rpx'}}\" controls=\"{{true}}\" onControlTap=\"controltap\"/>\n <view class=\"route-info\">\n <view class=\"info-location\">\n {{item.time}}·{{item.cartype}} {{item.start}}\n <image class=\"info-img\" src=\"https://gw.alipayobjects.com/mdn/rms_cd276b/afts/img/A*NvgmRqLRF7EAAAAAAAAAAABkARQnAQ\" />\n {{item.end}}\n </view>\n </view>\n <view class=\"steps-detail\">\n <bus-stagement spread=\"{{true}}\" />\n <view class=\"bottom\"></view>\n </view>\n</view>","pages/find-station/find-station.js":"Page({\n data: {\n test: \"222\",\n item:\n {\n time: '早',\n cartype: \"S100\",\n start: \"良渚\",\n end: \"萧山机场\",\n coast: \"1小时10分钟\",\n steps: \"5\",\n walk: \"步行800米\",\n takeoff: \"09:00\",\n uptime: \"09:20\",\n upbus: \"德力西大楼\",\n offtime: \"10:00\",\n offbus: \"萧山机场\",\n price: \"22.50\",\n primaryprice: \"25.00\"\n },\n stage: [\n {\n name: '良渚',\n time: \"09:00\",\n start: true\n },\n {\n name: '幸福站',\n time: \"09:00\",\n },\n {\n name: '德力西大厦',\n time: \"09:20\",\n upbus: true\n },\n {\n name: '天目山路',\n time: \"09:45\",\n stagement: true\n },\n {\n name: '文三西路',\n time: \"10:00\",\n stagement: true,\n },\n {\n name: '萧山机场',\n time: \"10:00\",\n offbus: true,\n },\n {\n name: '巴拉巴拉',\n time: \"10:00\",\n end: true,\n }\n ]\n\n },\n method: {\n controltap() {\n\n }\n }\n\n});\n","pages/find-station/find-station.json":"{\n \"defaultTitle\": \"找站点\",\n \"usingComponents\": {\n \"map\": \"/components/map/map\",\n \"list\": \"mini-antui/es/list/index\",\n \"list-item\": \"mini-antui/es/list/list-item/index\",\n \"bus-stagement\": \"/components/bus-stagement/bus-stagement\"\n }\n}","pages/guide/guide.acss":"","pages/guide/guide.axml":"<view>\n New Page\n</view>","pages/guide/guide.js":"Page({\n data: {},\n onLoad() {},\n});\n","pages/guide/guide.json":"{}","pages/index/components/banner/banner.acss":".banner-container {\n background-image: url(https://gw.alipayobjects.com/mdn/rms_cd276b/afts/img/A*PTxPRKE8HRsAAAAAAAAAAABkARQnAQ);\n background-repeat: no-repeat;\n background-size: cover;\n height: 346rpx;\n overflow: visible;\n position: relative;\n margin-bottom: 70rpx;\n}\n.banner-container .user-route-container {\n position: absolute;\n bottom: 0;\n margin-bottom: -70rpx;\n width: 100%;\n display: flex;\n height: 218rpx;\n box-sizing: border-box;\n padding: 0 32rpx;\n}\n.banner-container .user-route-container .user-route {\n box-shadow: 0 2px 12px 0 rgba(153, 153, 153, 0.11);\n border-radius: 4rpx;\n background: #FFFFFF;\n flex: 1;\n display: flex;\n}\n.banner-container .user-route-container .user-route .from-to {\n width: 82rpx;\n display: flex;\n flex-direction: column;\n position: relative;\n}\n.banner-container .user-route-container .user-route .from-to .route-line {\n border-left: 5rpx dotted #EEEEEE;\n height: 60rpx;\n position: absolute;\n left: 38rpx;\n top: 68rpx;\n}\n.banner-container .user-route-container .user-route .from-to .from-wrap {\n flex: 1;\n align-items: center;\n justify-content: center;\n display: flex;\n}\n.banner-container .user-route-container .user-route .from-to .from-wrap .from,\n.banner-container .user-route-container .user-route .from-to .from-wrap .to {\n width: 18rpx;\n height: 18rpx;\n border-radius: 100%;\n background-color: #0DC46E;\n}\n.banner-container .user-route-container .user-route .from-to .from-wrap .to {\n background-color: #F03637;\n}\n.banner-container .user-route-container .user-route .input-wrap {\n background-color: #fff;\n background: #FFFFFF;\n flex: 1;\n}\n.banner-container .user-route-container .user-route .input-wrap .line-item {\n height: 100rpx;\n display: flex;\n align-items: center;\n border-bottom: 1rpx solid #EEEEEE;\n}\n.banner-container .user-route-container .user-route .input-wrap .line-item .start {\n font-size: 32rpx;\n}\n.banner-container .user-route-container .user-route .input-wrap .line-item .end {\n font-size: 32rpx;\n color: #C6C6C6;\n}\n.banner-container .user-route-container .user-route .input-wrap .line-item:last-child {\n border: none;\n}\n","pages/index/components/banner/banner.axml":"<view class=\"banner-container\">\n <view class=\"user-route-container\">\n <view class=\"user-route\">\n <view class=\"from-to\">\n <view class=\"from-wrap\">\n <view class=\"from\"></view>\n </view>\n <view class=\"from-wrap\">\n <view class=\"to\"></view>\n </view>\n <view class=\"route-line\"></view>\n </view>\n <view class=\"input-wrap\">\n <view class=\"line-item\" onTap=\"goStartSelect\">\n <!-- <input class=\"input\" value=\"\" /> -->\n <text class=\"start\">{{start.text}}</text>\n </view>\n <view class=\"line-item\" onTap=\"goEndSelect\">\n <text class=\"end\">{{end.text}}</text>\n </view>\n </view>\n </view>\n \n </view>\n</view>","pages/index/components/banner/banner.js":"Component({\n mixins: [],\n data: {\n start: {\n id: 1,\n text: '蚂蚁z空间'\n },\n end: {\n id: 2,\n text: '你要去哪儿?'\n }\n },\n props: {},\n didMount() {},\n didUpdate() {},\n didUnmount() {},\n methods: {\n goStartSelect() {\n my.navigateTo({\n url: '/pages/search/search?type=start'\n });\n },\n goEndSelect() {\n my.navigateTo({\n url: '/pages/search/search?type=end'\n });\n }\n },\n});\n","pages/index/components/banner/banner.json":"{\n \"component\": true\n}","pages/index/components/benefit/benefit.acss":".benefit-wraper {\n padding: 32rpx 32rpx 0;\n box-sizing: border-box;\n}\n.image {\n width: 686rpx;\n height: 156rpx;\n background-size: cover;\n box-shadow: 0 2px 12px 0 rgba(153, 153, 153, 0.11);\n}\n","pages/index/components/benefit/benefit.axml":"<view>\n <view class=\"benefit-wraper\">\n <image onTap=\"tapBanner\" class=\"image\" mode=\"\" src=\"https://gw.alipayobjects.com/mdn/rms_815f8a/afts/img/A*6cEKRKv-2-gAAAAAAAAAAABkARQnAQ\"/>\n </view>\n</view>","pages/index/components/benefit/benefit.js":"import { tracertHome } from '../../../../utils/tracert'\n\nComponent({\n mixins: [],\n data: {},\n props: {},\n onShow() {\n tracertHome.expo('c37413')\n },\n didMount() {},\n didUpdate() {},\n didUnmount() {},\n methods: {\n tapBanner() {\n tracertHome('c37413.d75486_N')\n }\n },\n});\n","pages/index/components/benefit/benefit.json":"{\n \"component\": true\n}","pages/index/components/error/error.acss":".error_wraper {\n padding: 150rpx;\n text-align: center;\n}\n.error_wraper image {\n background-size: cover;\n height: 156rpx;\n width: 109rpx;\n margin-bottom: 25rpx;\n}\n.error_wraper text {\n font-size: 28rpx;\n color: #999;\n}\n","pages/index/components/error/error.axml":"<view>\n <view class=\"error_wraper\">\n <image mode=\"scaleToFill\" src=\"https://gw.alipayobjects.com/mdn/rms_815f8a/afts/img/A*b9MkTr8zSpIAAAAAAAAAAABkARQnAQ\"/>\n <view>\n <text>请稍后哦, 马上回来</text>\n </view>\n </view>\n</view>","pages/index/components/error/error.js":"Component({\n mixins: [],\n data: {},\n props: {},\n didMount() {},\n didUpdate() {},\n didUnmount() {},\n methods: {},\n});\n","pages/index/components/error/error.json":"{\n \"component\": true\n}","pages/index/components/last-routes/last-routes.acss":".last-route-container {\n margin: 0 32rpx;\n}\n.last-route-container .last-route {\n display: flex;\n justify-content: space-between;\n align-items: center;\n margin: 44rpx 0 24rpx;\n}\n.last-route-container .last-route .main-title {\n font-family: PingFangSC-Medium;\n letter-spacing: 0;\n color: #333;\n font-size: 16px;\n}\n.last-route-container .last-route .extra-action {\n font-family: PingFangSC-Regular;\n font-size: 13px;\n color: #999999;\n}\n","pages/index/components/last-routes/last-routes.axml":"<view class=\"last-route-container\">\n <view class=\"last-route\">\n <view class=\"main-title\">最近行程</view>\n <view class=\"extra-action\" onTap=\"getMore\">更多</view>\n </view>\n <view class=\"ticket-wrap\">\n <ticket go=\"ticket\" />\n </view>\n</view>","pages/index/components/last-routes/last-routes.js":"import { tracertHome } from '../../../../utils/tracert'\nimport { connect } from 'herculex'\nComponent(connect({\n mapStateToProps: []\n})(\n {\n mixins: [],\n data: {},\n props: {},\n onShow() {\n tracertHome.expo('c37412')\n },\n didMount() {},\n didUpdate() {},\n didUnmount() {},\n methods: {\n getMore() {\n tracertHome.click('c37412.d75485')\n my.navigateTo({\n url: '/pages/tickets/tickets'\n });\n }\n },\n }\n));\n","pages/index/components/last-routes/last-routes.json":"{\n \"component\": true,\n \"usingComponents\": {\n \"ticket\": \"/components/ticket/ticket\"\n }\n}","pages/index/components/none/none.acss":".none_wraper {\n padding: 150rpx;\n text-align: center;\n}\n.none_wraper image {\n background-size: cover;\n height: 156rpx;\n width: 109rpx;\n margin-bottom: 25rpx;\n}\n.none_wraper text {\n font-size: 28rpx;\n color: #999;\n}\n.button_wraper {\n margin-top: 50rpx;\n}\n.button {\n width: 238rpx;\n height: 76rpx;\n text-align: center;\n font-size: 30rpx;\n line-height: 76rpx;\n margin: 0 auto;\n}\n","pages/index/components/none/none.axml":"<view>\n <view class=\"none_wraper\">\n <image mode=\"scaleToFill\" src=\"https://gw.alipayobjects.com/mdn/rms_815f8a/afts/img/A*ba46S5YRM6wAAAAAAAAAAABkARQnAQ\"/>\n <view>\n <text>还没有路线哦, 开始定制巴士吧!</text>\n </view>\n <view class=\"button_wraper\">\n <button class=\"button\" size=\"small\" type=\"primary\">定制路线</button>\n </view>\n </view>\n</view>","pages/index/components/none/none.js":"Component({\n mixins: [],\n data: {},\n props: {},\n didMount() {},\n didUpdate() {},\n didUnmount() {},\n methods: {},\n});\n","pages/index/components/none/none.json":"{\n \"component\": true\n}","pages/index/components/recommend-routes/recommend-routes.acss":".recommend-routes-container {\n margin-top: 28rpx;\n background: #FFF;\n}\n.ticket-sell-wrap {\n padding: 16rpx 32rpx 0;\n}\n.recommend-routes-container .main-title {\n font-family: PingFangSC-Medium;\n letter-spacing: 0;\n color: #333;\n font-size: 16px;\n margin: 44rpx 0 24rpx;\n}\n.tab-content {\n display: flex;\n justify-content: center;\n align-items: center;\n /* padding: 40rpx; */\n /* 如果 swipeable=\"{{true}}\",需要增加 height */\n /* height: 350px; */\n}\n.active_tabbar {\n position: relative;\n font-size: 32rpx!important;\n font-weight: bold!important;\n color: #000 !important;\n}\n.active_tabbar::after {\n content: '';\n position: absolute;\n width: 47rpx;\n height: 6rpx;\n background: #108ee9;\n bottom: 0;\n left: 38%;\n}\n.am-tabs-bar-title {\n border-bottom: none;\n font-size: 26rpx;\n color: #999;\n}\n.am-tabs-bar-tab {\n width: 180rpx!important;\n text-align: center;\n}\n.am-tabs-scroll-left {\n background: none;\n}\n","pages/index/components/recommend-routes/recommend-routes.axml":"<view class=\"recommend-routes-container\">\n <tabs\n tabs=\"{{tabs}}\"\n onTabClick=\"handleTabClick\"\n onChange=\"handleTabChange\"\n onPlusClick=\"handlePlusClick\"\n activeTab=\"{{activeTab}}\"\n swipeable=\"{{false}}\"\n className=\"tabs_wraper\"\n tabBarCls=\"tabs_tabbar\"\n activeCls=\"active_tabbar\"\n >\n <block a:for=\"{{tabs}}\">\n <tab-content key=\"{{index}}\" tabId=\"{{index}}\" activeTab=\"{{activeTab}}\" a:if=\"{{index === 1}}\">\n <view class=\"ticket-sell-wrap\">\n <ticket-sale go=\"route\" />\n <ticket-sale go=\"route\" />\n </view>\n </tab-content>\n <tab-content key=\"{{index}}\" tabId=\"{{index}}\" activeTab=\"{{activeTab}}\" a:elif=\"{{index === 2}}\">\n <view class=\"ticket-sell-wrap\">\n <ticket-sale go=\"route\" />\n <ticket-sale go=\"route\" />\n </view>\n </tab-content>\n <tab-content key=\"{{index}}\" tabId=\"{{index}}\" activeTab=\"{{activeTab}}\" a:else>\n <view class=\"ticket-sell-wrap\">\n <ticket-sale go=\"route\" />\n <ticket-sale go=\"route\" />\n </view>\n </tab-content>\n </block>\n </tabs>\n</view>","pages/index/components/recommend-routes/recommend-routes.js":"import { tracertHome } from '../../../../utils/tracert'\nimport { connect } from 'herculex'\n\nComponent(\n connect({\n mapStateToProps: []\n })(\n {\n mixins: [],\n data: {\n tabs: [\n {\n title: '推荐线路',\n },\n {\n title: '幸福上下班',\n },\n { \n title: '樱花专线'\n },\n \n ],\n activeTab: 0,\n },\n props: {},\n onShow() {\n tracertHome.expo('c37414_N')\n },\n didMount() {},\n didUpdate() {},\n didUnmount() {},\n methods: {\n handleTabClick({ index }) {\n this.setData({\n activeTab: index,\n });\n },\n handleTabChange({ index }) {\n this.setData({\n activeTab: index,\n });\n },\n handlePlusClick() {\n my.alert({\n content: 'plus clicked',\n });\n },\n },\n }\n )\n);\n","pages/index/components/recommend-routes/recommend-routes.json":"{\n \"component\": true,\n \"usingComponents\": {\n \"ticket-sale\": \"/components/ticket-sale/ticket-sell\",\n \"tabs\": \"mini-antui/es/tabs/index\",\n \"tab-content\": \"mini-antui/es/tabs/tab-content/index\"\n }\n}","pages/index/components/route-card/route-card.acss":".route-card-container {\n margin: 0 32rpx;\n}\n","pages/index/components/route-card/route-card.axml":"<view class=\"route-card-container\">\n\n <view class=\"action-bar\">\n <view>\n <view class=\"price\">\n <text>22.50</text>\n <text>元</text>\n </view>\n <view class=\"origin-price\">\n <text>22.50</text>\n <text>元</text>\n </view>\n </view>\n <view>\n <button type=\"primary\">购票</button>\n </view>\n </view>\n</view>","pages/index/components/route-card/route-card.js":"import { connect } from 'herculex' \nComponent(connect({})({\n mixins: [],\n data: {},\n props: {},\n didMount() {},\n didUpdate() {},\n didUnmount() {},\n methods: {},\n}));\n","pages/index/components/route-card/route-card.json":"{\n \"component\": true,\n \"usingComponents\": {\n \"ticket\": \"/components/ticket/ticket\"\n }\n}","pages/index/index.acss":".default-lottie {\n width: 750rpx;\n height: 1344rpx;\n border: solid 1rpx #ccc;\n}\npage {\n background: #FFF;\n}\n","pages/index/index.axml":"<view>\n <banner />\n <benefit />\n <view style=\"height: 1px\" />\n <last-routes />\n <recommend-routes />\n <error a:if=\"{{error}}\" />\n <none a:if=\"{{none}}\" />\n</view>","pages/index/index.js":"import { tracertHome } from '../../utils/tracert'\nimport Store from './store'\nPage(Store.register({\n data: {\n error: false,\n none: false\n },\n onLoad() {\n tracertHome.logPv()\n },\n onshow() {\n tracertHome.expo('c37411')\n },\n onLottieFailed(e) {\n my.alert({\n content: JSON.stringify(e)\n })\n },\n methods: {\n }\n}));\n","pages/index/index.json":"{\n \"defaultTitle\": \"定制巴士\",\n \"transparentTitle\": \"auto\",\n \"backgroundColor\": \"#FFF\",\n \"usingComponents\": {\n \"banner\": \"./components/banner/banner\",\n \"route-card\": \"./components/route-card/route-card\",\n \"last-routes\": \"./components/last-routes/last-routes\",\n \"recommend-routes\": \"./components/recommend-routes/recommend-routes\",\n \"benefit\": \"./components/benefit/benefit\",\n \"error\": \"./components/error/error\",\n \"none\": \"./components/none/none\"\n }\n}\n","pages/index/store.js":"import Store from 'herculex';\n\nexport default new Store({\n connectGlobal: true,\n state: {\n },\n plugins: [],\n mutations: {},\n actions: {\n },\n});\n","pages/my/my.acss":"page {\n background: #FAFAFA;\n}\n.my-user {\n height: 320rpx;\n width: 100%;\n position: relative;\n background-image: url(https://gw.alipayobjects.com/mdn/rms_cd276b/afts/img/A*mC-hS5BvX8sAAAAAAAAAAABkARQnAQ);\n background-repeat: no-repeat;\n background-size: cover;\n}\n.user {\n position: absolute;\n bottom: 30rpx;\n left: 30rpx;\n display: flex;\n}\n.user-img {\n height: 120rpx;\n width: 120rpx;\n}\n.user-info {\n margin-left: 32rpx;\n display: flex;\n flex-direction: column;\n justify-content: space-around;\n padding: 12rpx 0 ;\n}\n.user-num {\n font-family: PingFangSC-Medium;\n font-size: 34rpx;\n color: #FFFFFF;\n letter-spacing: 0.55rpx;\n text-align: left;\n}\n.user-desc {\n font-family: PingFangSC-Regular;\n font-size: 28rpx;\n color: #FFFFFF;\n letter-spacing: 0.45rpx;\n text-align: left;\n}\n.list-bottom {\n margin-top: 20rpx;\n}\n.am-list-body::before,\n.am-list-body::before {\n display: none;\n}\n.am-list-content {\n font-size: 32rpx;\n}\n.am-list-thumb {\n width: 36rpx;\n height: 36rpx;\n}\n.am-list-arrow {\n width: 24rpx;\n height: 24rpx;\n}\n.am-list-extra {\n font-size: 32rpx;\n}\n.am-list-line {\n height: 104rpx;\n}\n.my .am-list-body::after {\n display: none;\n}\n.am-list-line-bottom::after,\n.am-list-line-bottom::before {\n height: 0rpx;\n}\n.list-bottom .am-list-line-bottom::after,\n.am-list-line-bottom::before {\n height: 2rpx;\n}\n.am-list-item:last-child .am-list-line-bottom::after {\n height: 0;\n}\n","pages/my/my.axml":"<view class=\"my\">\n <view class=\"my-user\">\n <view class=\"user\">\n <image class=\"user-img\" src=\"https://gw.alipayobjects.com/mdn/industry_lifee/afts/img/A*amUXRaNeE_MAAAAAAAAAAABkARQnAQ\" />\n <view class=\"user-info\">\n <view class=\"user-num\">15811112222</view>\n <view class=\"user-desc\">用户描述描述描述</view>\n </view>\n \n </view>\n </view>\n <list>\n <block >\n <list-item\n\t\t\t\t\tthumb=\"https://gw.alipayobjects.com/mdn/rms_815f8a/afts/img/A*ByjGRLRxLecAAAAAAAAAAABkARQnAQ\"\n\t\t\t\t\tarrow='{{true}}'\n\t\t\t\t\tonClick='onTicketsClick'\n\t\t\t\t>\n\t\t\t\t\t 发起定制\n\t\t\t</list-item>\n </block>\n </list>\n <list class=\"list-bottom\">\n <block >\n <list-item\n \tthumb=\"https://gw.alipayobjects.com/mdn/rms_815f8a/afts/img/A*kcErQZFFbPMAAAAAAAAAAABkARQnAQ\"\n\t\t\t\tarrow='{{true}}'\n\t\t\t\tonClick='onGuideClick'\n >\n 乘车指南\n <view slot=\"extra\">\n 描述文字\n </view>\n </list-item>\n <list-item\n \tthumb=\"https://gw.alipayobjects.com/mdn/rms_815f8a/afts/img/A*rpcLTLE2M58AAAAAAAAAAABkARQnAQ\"\n\t\t\t\tarrow='{{true}}'\n\t\t\t\tonClick='onServiceClick'\n >\n 服务协议\n </list-item>\n <list-item\n \tthumb=\"https://gw.alipayobjects.com/mdn/rms_815f8a/afts/img/A*LjmkRpZoeDMAAAAAAAAAAABkARQnAQ\"\n\t\t\t\tarrow='{{true}}'\n\t\t\t\tonClick='onAboutClick'\n >\n 关于我们\n </list-item>\n </block>\n </list>\n</view>","pages/my/my.js":"\nimport { tracertMy } from '../../utils/tracert'\n\nPage({\n data: {\n },\n onLoad() {\n tracertMy.logPv()\n },\n onShow() {\n tracertMy.expo('c37433')\n },\n onTicketsClick () {\n tracertMy.click('c37433.d75521')\n my.navigateTo({\n url: `/pages/custom-routes/custom-routes`\n })\n },\n onGuideClick () {\n my.navigateTo({\n url: `/pages/myguide/myguide`\n })\n },\n onServiceClick () {\n my.navigateTo({\n url: `/pages/myservice/myservice`\n })\n },\n onAboutClick () {\n },\n\n});","pages/my/my.json":"{\n \"defaultTitle\": \"我的\",\n \"transparentTitle\": \"auto\",\n \"usingComponents\": {\n \"list\": \"mini-antui/es/list/index\",\n \"list-item\": \"mini-antui/es/list/list-item/index\"\n }\n}","pages/myguide/myguide.acss":".myservice {\n background: #FAFAFA;\n}\n.myservice-top {\n background: #ffffff;\n height: 400rpx;\n width: 100%;\n padding-top: 40rpx;\n display: flex;\n flex-direction: column;\n align-items: center;\n}\n.top-img {\n height: 126rpx;\n width: 220rpx;\n margin: 140rpx auto 25rpx;\n}\n.mysevice-text {\n background: #ffffff;\n margin-top: 25rpx;\n}\n.text-item {\n padding: 30rpx 30rpx;\n font-family: PingFangSC-Regular;\n font-size: 28rpx;\n color: #333333;\n letter-spacing: 0.61rpx;\n line-height: 50rpx;\n}\n.am-list-content {\n font-size: 32rpx;\n}\n.am-list-thumb {\n width: 36rpx;\n height: 36rpx;\n}\n.am-list-arrow {\n width: 24rpx;\n height: 24rpx;\n}\n.am-list-extra {\n font-size: 32rpx;\n}\n","pages/myguide/myguide.axml":"<view class=\"myservice\">\n <view class=\"myservice-top\">\n <image class=\"top-img\" src=\"https://gw.alipayobjects.com/mdn/industry_lifee/afts/img/A*amUXRaNeE_MAAAAAAAAAAABkARQnAQ\" />\n <view class=\"top-version\">v1.1.1</view>\n </view>\n\n <list>\n <block >\n <list-item\n\t\t\t\tarrow='{{true}}'\n\t\t\t\tonClick='onServiceClick'\n >\n 服务热线\n <view slot=\"extra\">\n 400-720-0027\n </view>\n </list-item>\n </block>\n </list> \n\n <view class=\"mysevice-text\">\n <view class=\"text-item\">飞路巴士是一家绿色、智能、共享的星级班车服务平台,专注服务于高端酒店、大型园区、优质企业及都市白领,致力于打造更安全舒适、更环保经济的高品质巴士出行平台。</view>\n <view class=\"text-item\">飞路以行业领先的“畅GO 4.0”智能互联平台保障体系,服务于星级酒店、高端商旅、会展活动、一流园区、优质企业及都市白领精英、提供星级专业、共享互联、绿色智能的定制班车、共享巴士、星级专车、自驾长租、共享用车服务。全部采用全新高端新能源营运车辆,超值、优质、节约。</view>\n <view class=\"text-item\">飞路依托互联网信息化,采用智能化与新能源技术,可为企业提供定制开发增值服务,共创共享更优质高效、更环保节约的全新绿色星级用车体验。</view>\n </view>\n</view>","pages/myguide/myguide.js":"Page({\n data: {},\n onLoad () { },\n onServiceClick () {\n console.log(\"clicked\")\n }\n});\n","pages/myguide/myguide.json":"{\n \"defaultTitle\": \"乘车指南\",\n \"transparentTitle\": \"auto\",\n \"usingComponents\": {\n \"list\": \"mini-antui/es/list/index\",\n \"list-item\": \"mini-antui/es/list/list-item/index\"\n }\n}","pages/myservice/myservice.acss":".myservice {\n background: #FAFAFA;\n}\n.myservice-top {\n background: #ffffff;\n height: 300rpx;\n width: 100%;\n padding-top: 40rpx;\n display: flex;\n flex-direction: column;\n align-items: center;\n}\n.top-img {\n height: 126rpx;\n width: 220rpx;\n margin: 80rpx auto 25rpx;\n}\n.mysevice-text {\n background: #ffffff;\n margin-top: 25rpx;\n padding-top: 30rpx;\n}\n.text-title {\n text-align: center;\n font-family: PingFangSC-Medium;\n font-size: 32rpx;\n color: #333333;\n letter-spacing: 0.69rpx;\n margin-top: 25rpx;\n}\n.text-item {\n padding: 30rpx 30rpx;\n font-family: PingFangSC-Regular;\n font-size: 28rpx;\n color: #333333;\n letter-spacing: 0.61rpx;\n line-height: 50rpx;\n}\n.text-bold {\n color: black;\n font-weight: 700;\n}\n.am-list-content {\n font-size: 32rpx;\n}\n.am-list-thumb {\n width: 36rpx;\n height: 36rpx;\n}\n.am-list-arrow {\n width: 24rpx;\n height: 24rpx;\n}\n.am-list-extra {\n font-size: 32rpx;\n}\n","pages/myservice/myservice.axml":"<view class=\"myservice\">\n <view class=\"myservice-top\">\n <image class=\"top-img\" src=\"https://gw.alipayobjects.com/mdn/industry_lifee/afts/img/A*amUXRaNeE_MAAAAAAAAAAABkARQnAQ\" />\n </view>\n\n\n <view class=\"mysevice-text\">\n <view class=\"text-title\">服务条款的确认与接纳</view>\n\n <view class=\"text-item\">飞路巴士产品由上海飞路腾远汽车租赁服务有限公司开发、拥有和运营,包括但不限于飞路巴士APP、飞路巴士客户呼叫热线。本协议项下飞路巴士产品及上海飞路腾远汽车租赁服务有限公司简称为“飞路巴士”。</view>\n <view class=\"text-item text-bold\">1、本协议是您与飞路巴士共同确认,本协议具有法律效力。</view>\n <view class=\"text-item\">飞路巴士产品由上海飞路腾远汽车租赁服务有限公司开发、拥有和运营,包括但不限于飞路巴士APP、飞路巴士客户呼叫热线。本协议项下飞路巴士产品及上海飞路腾远汽车租赁服务有限公司简称为“飞路巴士”。</view>\n <view class=\"text-item\">当您按照登录页面提示填写信息、月的并统一本协议且完成全部注册登陆程序后,或您按照飞路巴士产品由上海飞路腾远汽车租赁服务有限公司开发、拥有和运营,包括但不限于飞路巴士APP、飞路巴士客户呼叫热线。本协议项下飞路巴士产品及上海飞路腾远汽车租赁服务有限公司简称为“飞路巴士”。</view>\n </view>\n</view>","pages/myservice/myservice.js":"Page({\n data: {},\n onLoad () { },\n});\n","pages/myservice/myservice.json":"{\n \"defaultTitle\": \"服务协议\"\n}","pages/new/components/activities/activities.acss":".activities-container {\n background: #FFFFFF;\n box-shadow: 0 2px 12px 0 rgba(0, 0, 0, 0.06);\n border-radius: 4rpx;\n margin: 0 32rpx;\n padding: 32rpx;\n}\n.activities-container .activity {\n margin-bottom: 24rpx;\n font-size: 13px;\n color: #999999;\n display: flex;\n flex-direction: row;\n align-items: center;\n}\n.activities-container .activity .label {\n margin-right: 32rpx;\n}\n.activities-container .activity:last-child {\n margin-bottom: 0;\n}\n.activities-container .benifit {\n color: #FF401A;\n padding: 10rpx 20rpx;\n background-color: #FFF5F5;\n border: 1rpx solid #FFD7CF;\n border-radius: 20rpx;\n}\n.activities-container .benifit .seperator {\n margin: 0 13rpx;\n color: #F0D1D1;\n}\n","pages/new/components/activities/activities.axml":"<view class=\"activities-container\">\n <view class=\"activity \">\n <view class=\"label\">限时活动</view>\n <view class=\"benifit\">\n <text>新人专享</text>\n <text class=\"seperator\">|</text>\n <text>首单立减 最高66元</text>\n </view>\n </view>\n <view class=\"activity\">\n <text class=\"label\">已有路线</text>\n <text>450条已有线路,覆盖上海11个行政区域</text>\n </view>\n <view class=\"activity\">\n <text class=\"label\">使用方法</text>\n <text>预约购票-找车-刷码上车</text>\n </view>\n</view>","pages/new/components/activities/activities.js":"Component({\n mixins: [],\n data: {\n \n },\n props: {},\n didMount() {},\n didUpdate() {},\n didUnmount() {},\n methods: {},\n});\n","pages/new/components/activities/activities.json":"{\n \"component\": true\n}","pages/new/components/banner/banner.acss":".banner-container {\n background-image: url(https://gw.alipayobjects.com/mdn/rms_cd276b/afts/img/A*5_LRSK8OWAQAAAAAAAAAAABkARQnAQ);\n background-repeat: no-repeat;\n background-size: cover;\n height: 512rpx;\n position: relative;\n}\n.slogan {\n color: #fff;\n position: absolute;\n left: 50rpx;\n bottom: 240rpx;\n font-style: italic;\n font-size: 20px;\n font-weight: bolder;\n}\n","pages/new/components/banner/banner.axml":"<view class=\"banner-container\">\n <view class=\"slogan\">\n <view>定制专属路线</view>\n <view>一站到达</view>\n </view>\n\n</view>","pages/new/components/banner/banner.js":"Component({\n mixins: [],\n data: {},\n props: {},\n didMount() {},\n didUpdate() {},\n didUnmount() {},\n methods: {},\n});\n","pages/new/components/banner/banner.json":"{\n \"component\": true\n}","pages/new/components/navbar/navbar.acss":".navbar-container {\n padding: 68rpx 94rpx;\n}\n.navbar-container .wraper {\n display: flex;\n justify-content: space-between;\n flex-direction: row;\n}\n.navbar-container .wraper .activity {\n display: flex;\n flex-direction: column;\n align-items: center;\n}\n.navbar-container .wraper .activity .icon-wrap {\n position: relative;\n}\n.navbar-container .wraper .activity .icon-wrap .icon {\n width: 44rpx;\n height: 44rpx;\n margin-bottom: 20rpx;\n}\n.navbar-container .wraper .activity .icon-wrap .tip {\n color: #64AF1B;\n background-color: #EAFCD3;\n border-radius: 22rpx;\n padding: 4rpx 10rpx;\n position: absolute;\n right: 0;\n top: 0;\n white-space: nowrap;\n transform: translateY(-100%) translateX(100%);\n}\n.navbar-container .wraper .activity .text {\n font-family: PingFangSC-Medium;\n font-size: 26rpx;\n color: #333333;\n}\n","pages/new/components/navbar/navbar.axml":"<view class=\"navbar-container\">\n <view class=\"wraper\">\n <view\n class=\"activity\"\n a:for=\"{{ list }}\"\n a:for-item=\"item\"\n key=\"{{ index }}\"\n >\n <view class=\"icon-wrap\">\n <image mode=\"aspectFit\" class=\"icon\" src=\"{{ item.icon }}\" />\n <text a:if=\"{{ item.tip }}\" class=\"tip\">{{ item.tip }}</text>\n </view>\n \n <text class=\"text\">{{ item.text }}</text>\n \n </view>\n </view>\n</view>","pages/new/components/navbar/navbar.js":"Component({\n mixins: [],\n data: {\n list: [{\n icon: 'https://gw.alipayobjects.com/mdn/rms_cd276b/afts/img/A*rplpR5ZkO-MAAAAAAAAAAABkARQnAQ',\n text: '在线购票',\n link: 'http://www.taobao.com'\n }, {\n icon: 'https://gw.alipayobjects.com/mdn/rms_cd276b/afts/img/A*vcBNQaRgh2EAAAAAAAAAAABkARQnAQ',\n text: '乘车得能量',\n link: 'http://www.taobao.com',\n tip: '可得80克/次'\n }, {\n icon: 'https://gw.alipayobjects.com/mdn/rms_cd276b/afts/img/A*6rHyQrWbmQsAAAAAAAAAAABkARQnAQ',\n text: '一人一座',\n link: 'http://www.taobao.com'\n }]\n },\n props: {},\n didMount() {},\n didUpdate() {},\n didUnmount() {},\n methods: {},\n});\n","pages/new/components/navbar/navbar.json":"{\n \"component\": true\n}","pages/new/index.acss":".actions {\n margin: 67rpx 32rpx 0;\n}\n.actions .contract-container {\n margin-bottom: 28rpx;\n color: #108EE9;\n}\n.actions .contract-container .contract-label {\n color: #999999;\n}\n","pages/new/index.axml":"<view class=\"index-container\">\n <banner />\n \n <navbar />\n <activities />\n <view class=\"actions\">\n <view class=\"contract-container\">\n <text class=\"contract-label\">查看并同意</text>\n <text class=\"contract\">《飞路巴士服务协议》</text>\n </view>\n <button type=\"primary\">同意协议并开通</button>\n </view>\n</view>\n","pages/new/index.js":"import store from './store';\n\nPage(store.register({\n onLoad() {\n this.dispatch('actionTest', {});\n },\n}));\n","pages/new/index.json":"{\n \"defaultTitle\": \"定制巴士\",\n \"transparentTitle\": \"auto\",\n \"usingComponents\": {\n \"banner\": \"./components/banner/banner\",\n \"activities\": \"./components/activities/activities\",\n \"navbar\": \"./components/navbar/navbar\"\n }\n}\n","pages/new/store.js":"import Store from 'herculex';\nimport { getAvatarInfo } from '../../services/index';\n\nexport default new Store({\n state: {\n data: '',\n },\n\n getters: {\n displayText: state => JSON.stringify(state.data),\n },\n actions: {\n /**\n * 异步事件结合请求的代码样例\n * @param {*} param0\n * @param {*} payload\n */\n async actionTest({ commit, state, dispatch, put }, payload) {\n const result = await getAvatarInfo();\n const { success, data } = result;\n if (success) {\n commit('ActionTest', { data });\n } else {\n // 异常处理流程\n }\n },\n },\n});\n","pages/order-confirm/components/calendar/index.acss":".am-calendar {\n background-color: #fff;\n padding-top: 10px;\n}\n.am-calendar-months {\n display: flex;\n box-sizing: border-box;\n padding: 0 26px;\n align-items: center;\n height: 28px;\n}\n.am-calendar-next-month,\n.am-calendar-prev-month {\n display: flex;\n width: 40px;\n font-size: 20px;\n}\n.am-calendar-prev-month {\n justify-content: flex-start;\n}\n.am-calendar-next-month {\n justify-content: flex-end;\n}\n.am-calendar-arrow {\n height: 28px;\n width: 12px;\n background-image: url(https://gw.alipayobjects.com/zos/rmsportal/vYcMhkfyHRIOeVXWdcPe.png);\n background-size: 8px 14px;\n background-position: left center;\n background-repeat: no-repeat;\n}\n.am-calendar-arrow_year {\n width: 13px;\n background-repeat: repeat-x;\n}\n.am-calendar-arrow.next {\n transform: rotate(180deg);\n}\n.am-calendar-selected-month {\n flex: 1;\n text-align: center;\n font-size: 20px;\n font-weight: 600;\n color: #333;\n}\n.am-calendar-days {\n display: flex;\n padding: 14px 10px 9px;\n border-bottom: 1rpx solid #eee;\n height: 20px;\n line-height: 20px;\n box-sizing: content-box;\n}\n.am-calendar-day {\n flex: 1;\n text-align: center;\n color: #333;\n font-size: 14px;\n}\n.am-calendar-dates {\n display: flex;\n flex-direction: column;\n}\n.am-calendar-week {\n margin-bottom: 17px;\n display: flex;\n flex-direction: row;\n padding: 0 10px;\n}\n.am-calendar-week:first-child {\n margin-top: 12px;\n}\n.am-calendar-date-wrap {\n position: relative;\n text-align: center;\n display: flex;\n flex-direction: column;\n align-items: center;\n height: 35px;\n flex: 1;\n}\n.am-calendar-date {\n text-align: center;\n height: 23px;\n line-height: 23px;\n font-size: 19px;\n font-family: Helvetica;\n color: #333;\n}\n.am-calendar-tag {\n position: absolute;\n top: 21px;\n width: 42px;\n overflow: hidden;\n text-overflow: hidden;\n white-space: nowrap;\n color: #f5a623;\n font-size: 10px;\n font-weight: 500;\n}\n.am-calendar-today {\n color: #108ee9;\n}\n.am-calendar-gray {\n color: #ccc;\n}\n.am-calendar-selected .am-calendar-block {\n position: absolute;\n left: calc(50% - 21px);\n top: calc(50% - 10px);\n transform: translateY(-50%);\n width: 42px;\n height: 42px;\n background: #309ef2;\n border-radius: 4rpx;\n}\n.am-calendar-middle.is-range .am-calendar-block {\n position: absolute;\n left: 0;\n top: calc(50% - 10px);\n transform: translateY(-50%);\n height: 42px;\n background: #309ef2;\n width: 100%;\n border-radius: 0;\n}\n.am-calendar-start.is-range .am-calendar-block {\n position: absolute;\n left: calc(50% - 21px);\n top: calc(50% - 10px);\n transform: translateY(-50%);\n width: 100%;\n height: 42px;\n background: #309ef2;\n border-radius: 4rpx 0 0 4rpx;\n}\n.am-calendar-end.is-range .am-calendar-block {\n position: absolute;\n left: 0;\n top: calc(50% - 10px);\n transform: translateY(-50%);\n width: calc(50% + 21px);\n height: 42px;\n background: #309ef2;\n border-radius: 0 4rpx 4rpx 0;\n}\n.am-calendar-end .am-calendar-block.has-tag,\n.am-calendar-middle .am-calendar-block.has-tag,\n.am-calendar-selected .am-calendar-block.has-tag,\n.am-calendar-start .am-calendar-block.has-tag {\n top: calc(50% - 7px);\n}\n.am-calendar-end .am-calendar-date,\n.am-calendar-middle .am-calendar-date,\n.am-calendar-selected .am-calendar-date,\n.am-calendar-start .am-calendar-date {\n position: relative;\n color: #fff;\n}\n.am-calendar-end .am-calendar-tag,\n.am-calendar-middle .am-calendar-tag,\n.am-calendar-selected .am-calendar-tag,\n.am-calendar-start .am-calendar-tag {\n color: #fff;\n}\n.am-calendar-disable .am-calendar-date {\n color: #999;\n}\n","pages/order-confirm/components/calendar/index.axml":"<view class=\"am-calendar {{className}}\" a:if=\"{{dates.length > 0}}\">\n <view class=\"am-calendar-months\">\n <view class=\"am-calendar-prev-month\" onTap=\"onPrevYearTap\" a:if=\"{{haveYear}}\">\n <view class=\"am-calendar-arrow am-calendar-arrow_year\"></view>\n </view>\n <view class=\"am-calendar-prev-month\" onTap=\"onPrevMonthTap\">\n <view class=\"am-calendar-arrow\"></view>\n </view>\n <view class=\"am-calendar-selected-month\">{{selectedYear}}年{{selectedMonth + 1}}月</view>\n <view class=\"am-calendar-next-month\" onTap=\"onNextMonthTap\">\n <view class=\"am-calendar-arrow next\"></view>\n </view>\n <view class=\"am-calendar-next-month\" onTap=\"onNextYearTap\" a:if=\"{{haveYear}}\">\n <view class=\"am-calendar-arrow am-calendar-arrow_year next\"></view>\n </view>\n </view>\n <view class=\"am-calendar-days\">\n <block a:for=\"{{['日', '一', '二', '三', '四', '五', '六']}}\">\n <view class=\"am-calendar-day\">{{item}}</view>\n </block>\n </view>\n <view class=\"am-calendar-dates\">\n <block a:for=\"{{dates}}\">\n <view class=\"am-calendar-week\">\n <block a:for=\"{{item}}\">\n <view\n class=\"am-calendar-date-wrap\n {{ item.isSelected ? 'am-calendar-selected': '' }}\n {{ item.isStart ? 'am-calendar-start': '' }}\n {{ item.isMiddle ? 'am-calendar-middle': '' }}\n {{ item.isEnd ? 'am-calendar-end': '' }}\n {{ item.disable ? 'am-calendar-disable': '' }}\n {{ type === 'range' ? 'is-range' : '' }}\"\n data-year=\"{{item.year}}\"\n data-month=\"{{item.month}}\"\n data-date=\"{{item.date}}\"\n onTap=\"onDateTap\"\n >\n <view\n class=\"am-calendar-block {{ blockType === 2 ? 'has-tag': '' }}\"\n ></view>\n <view\n class=\"am-calendar-date {{ item.isGray ? 'am-calendar-gray': '' }} {{ item.isToday ? 'am-calendar-today': ''}}\"\n >{{item.date}}</view>\n <view class=\"am-calendar-tag\" style=\"{{\n color: item.isSelected || item.isMiddle || item.isStart || item.isEnd ? '#fff' : (item.disable ? '#999' : item.color)\n }}\">{{item.tag}}</view>\n </view>\n </block>\n </view>\n </block>\n </view>\n</view>\n","pages/order-confirm/components/calendar/index.js":"/* eslint-disable complexity, no-param-reassign */\n\n/* eslint max-depth: [2, 7] */\nimport day from 'dayjs'\nvar leapYear = [31, 29, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31];\nvar commonYear = [31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31];\nvar FIRST_MONTH = 0;\nvar LAST_MONTH = 11;\nvar DAYS_PER_ROW = 7;\nvar COLOR_MAP = {\n 1: '#f5a911',\n 2: '#e8541e',\n 3: '#07a89b',\n 4: '#108ee9',\n 5: '#C8C8C8'\n}; // 获取某月第某天是星期几\n\nfunction getDay(month, year, index) {\n return new Date(year, month, index).getDay();\n} // 获取某月有几天\n\n\nfunction getMonthLength(month, year) {\n if (year % 400 === 0 || year % 100 !== 0 && year % 4 === 0) {\n return leapYear[month];\n } else {\n return commonYear[month];\n }\n} // 数字补位 1 -> 01\n\n\nfunction prefixNum(num) {\n if (num < 10) {\n return \"0\" + num;\n } else {\n return \"\" + num;\n }\n}\n\nComponent({\n data: {\n selectedYear: 0,\n selectedMonth: 0,\n currentDate: null,\n dates: [],\n blockType: 1 // 1.没有待办纯数字 2.有待办 用于区分不同类型日期块的样式。\n\n },\n props: {\n className: '',\n tagData: [],\n type: 'single',\n haveYear: false\n },\n didMount: function didMount() {\n this.tapTimes = 1;\n var date = new Date();\n date.setHours(0);\n date.setMinutes(0);\n date.setSeconds(0);\n date.setMilliseconds(0);\n var year = date.getFullYear();\n var month = date.getMonth();\n var weekStart = day().day(0).startOf('day').valueOf()\n var weekEnd = day().day(6).endOf('day').valueOf()\n this.setData({\n selectedYear: year,\n selectedMonth: month,\n currentDate: date,\n weekStart,\n weekEnd\n });\n this.refreshdates(month, year);\n },\n didUpdate: function didUpdate() {\n var dates = this.data.dates;\n var blockType = 1;\n\n for (var i = 0; i < dates.length; i++) {\n for (var j = 0; j < dates[i].length; j++) {\n if (this.hasTag(dates[i][j])) {\n blockType = 2;\n }\n }\n }\n\n this.setData({\n dates: dates,\n blockType: blockType\n });\n },\n methods: {\n selectWeek () {\n var start = this.data.weekStart\n var end = this.data.weekEnd\n var dates = this.data.dates;\n var datesArr = []\n for (let i = 0, len = dates.length; i < len; i++) {\n var week = dates[i]\n for (let j = 0, len = week.length; j < len; j++) {\n var nowDay = week[j]\n const dayUnit = day(this.makeDate(nowDay)).valueOf()\n if (start <= dayUnit && dayUnit < end && !nowDay.disable) {\n nowDay.isSelected = true\n datesArr.push(this.makeDate(nowDay))\n } else {\n nowDay.isSelected = false\n }\n }\n }\n this.setData({\n dates\n })\n if (this.props.onSelect) {\n this.props.onSelect(datesArr)\n }\n },\n cancelSelectWeek () {\n var dates = this.data.dates;\n for (let i = 0, len = dates.length; i < len; i++) {\n var week = dates[i]\n for (let j = 0, len = week.length; j < len; j++) {\n var nowDay = week[j]\n nowDay.isSelected = false\n }\n }\n this.setData({\n dates\n })\n },\n onPrevYearTap: function onPrevYearTap() {\n var _this$data = this.data,\n selectedMonth = _this$data.selectedMonth,\n selectedYear = _this$data.selectedYear;\n var year = selectedYear;\n var month = selectedMonth;\n year = selectedYear - 1;\n\n if (this.props.onYearChange) {\n this.props.onYearChange(year, selectedYear);\n }\n\n this.setData({\n selectedYear: year\n });\n this.refreshdates(month, year);\n },\n onNextYearTap: function onNextYearTap() {\n var _this$data2 = this.data,\n selectedMonth = _this$data2.selectedMonth,\n selectedYear = _this$data2.selectedYear;\n var year = selectedYear;\n var month = selectedMonth;\n year = selectedYear + 1;\n\n if (this.props.onYearChange) {\n this.props.onYearChange(year, selectedYear);\n }\n\n this.setData({\n selectedYear: year\n });\n this.refreshdates(month, year);\n },\n onPrevMonthTap: function onPrevMonthTap() {\n var _this$data3 = this.data,\n selectedMonth = _this$data3.selectedMonth,\n selectedYear = _this$data3.selectedYear;\n var year = selectedYear;\n var month = selectedMonth; // 如果当前选中是一月份,前一月是去年的12月\n\n if (selectedMonth === FIRST_MONTH) {\n year = selectedYear - 1;\n month = LAST_MONTH;\n } else {\n month = selectedMonth - 1;\n }\n\n if (this.props.onMonthChange) {\n this.props.onMonthChange(month, selectedMonth);\n }\n\n this.setData({\n selectedYear: year,\n selectedMonth: month\n });\n this.refreshdates(month, year);\n },\n onNextMonthTap: function onNextMonthTap() {\n var _this$data4 = this.data,\n selectedMonth = _this$data4.selectedMonth,\n selectedYear = _this$data4.selectedYear;\n var year = selectedYear;\n var month = selectedMonth; // 如果当前选中是十二月份,下一月是去年的12月\n\n if (selectedMonth === LAST_MONTH) {\n year = selectedYear + 1;\n month = FIRST_MONTH;\n } else {\n month = selectedMonth + 1;\n }\n\n if (this.props.onMonthChange) {\n this.props.onMonthChange(month, selectedMonth);\n }\n\n this.setData({\n selectedYear: year,\n selectedMonth: month\n });\n this.refreshdates(month, year);\n },\n refreshdates: function refreshdates(month, year) {\n this.tapTimes = 1;\n var _this$data5 = this.data,\n selectedYear = _this$data5.selectedYear,\n selectedMonth = _this$data5.selectedMonth,\n currentDate = _this$data5.currentDate;\n var firstDay = getDay(month, year, 1);\n var days = getMonthLength(month, year);\n var datesArray = [];\n var currentDateTimeStamp = +currentDate;\n var num = 0;\n\n for (var i = 0; i < firstDay; i++) {\n num += 1; // 如果当前选中的是一月份,前一个月是去年的12月\n\n var _year = selectedYear;\n var _month = selectedMonth;\n\n if (selectedMonth === 0) {\n _year = selectedYear - 1;\n _month = LAST_MONTH;\n } else {\n _year = selectedYear;\n _month = selectedMonth - 1;\n }\n\n var date = getMonthLength(_month, _year) - i;\n datesArray.unshift({\n year: _year,\n month: _month,\n date: date,\n isToday: false,\n isGray: true,\n isSelected: false,\n tag: ''\n });\n }\n\n for (var _i = 0; _i < days; _i++) {\n num += 1;\n\n var _date = _i + 1;\n\n var dateTimeStamp = +new Date(selectedYear, selectedMonth, _date);\n datesArray.push({\n year: selectedYear,\n month: selectedMonth,\n date: _date,\n isToday: dateTimeStamp === currentDateTimeStamp,\n isGray: false,\n isSelected: dateTimeStamp === currentDateTimeStamp,\n tag: ''\n });\n }\n\n var nextDate = 0;\n var daysPerPage = 35;\n\n if (num > 35) {\n daysPerPage = 42;\n }\n\n for (var _i2 = 0; _i2 < daysPerPage - days - firstDay; _i2++) {\n // 如果是12月,下月是第二年的1月份\n nextDate += 1;\n var _year2 = selectedYear;\n var _month2 = selectedMonth;\n\n if (selectedMonth === LAST_MONTH) {\n _year2 = selectedYear + 1;\n _month2 = FIRST_MONTH;\n } else {\n _year2 = selectedYear;\n _month2 = selectedMonth + 1;\n }\n\n datesArray.push({\n year: _year2,\n month: _month2,\n date: nextDate,\n isToday: false,\n isGray: true,\n isSelected: false,\n tag: ''\n });\n }\n\n var blockType = 1;\n\n for (var _i3 = 0; _i3 < datesArray.length; _i3++) {\n if (this.hasTag(datesArray[_i3])) {\n blockType = 2;\n }\n }\n\n var dates = [];\n var weekDates = [];\n\n for (var _i4 = 0; _i4 < datesArray.length; _i4++) {\n weekDates.push(datesArray[_i4]);\n\n if ((_i4 + 1) % DAYS_PER_ROW === 0) {\n dates.push([].concat(weekDates));\n weekDates = [];\n }\n }\n\n this.setData({\n dates: dates,\n blockType: blockType\n });\n },\n hasTag: function hasTag(dateObj) {\n var tagData = this.props.tagData; // 去重由调用者处理\n\n if (tagData.length === 0) {\n dateObj.tag = '';\n return false;\n }\n\n return tagData.some(function (item) {\n var dateArr = item.date.split('-');\n var dateStr = []; // 兼容ios下new Date('2018-1-1')格式返回invalid Date的问题\n\n for (var i = 0; i < dateArr.length; i++) {\n dateStr.push(dateArr[i].length > 1 ? dateArr[i] : \"0\" + dateArr[i]);\n }\n\n var date = new Date(dateStr.join('-'));\n if (dateObj.year === date.getFullYear() && dateObj.month === date.getMonth() && dateObj.date === date.getDate()) {\n dateObj.tag = item.tag;\n dateObj.color = COLOR_MAP[item.tagColor];\n dateObj.disable = item.disable;\n return true;\n } else {\n dateObj.tag = '';\n return false;\n }\n });\n },\n getDateGap: function getDateGap(day1, day2) {\n var date1 = +new Date(day1.year, prefixNum(day1.month), prefixNum(day1.date));\n var date2 = +new Date(day2.year, prefixNum(day2.month), prefixNum(day2.date));\n return (date1 - date2) / (24 * 3600 * 1000);\n },\n makeDate: function makeDate(dateObj) {\n return new Date(dateObj.year + \"-\" + prefixNum(dateObj.month + 1) + \"-\" + prefixNum(dateObj.date));\n },\n onDateTap: function onDateTap(event) {\n var dates = this.data.dates;\n var _event$currentTarget$ = event.currentTarget.dataset,\n year = _event$currentTarget$.year,\n month = _event$currentTarget$.month,\n date = _event$currentTarget$.date;\n var type = this.props.type;\n\n if (type === 'range') {\n if (this.tapTimes % 2 === 0) {\n this.tapTimes += 1;\n this.endDate = {\n year: year,\n month: month,\n date: date\n };\n var dateGap = this.getDateGap(this.startDate, this.endDate);\n\n if (dateGap > 0) {\n var _ref = [this.endDate, this.startDate];\n this.startDate = _ref[0];\n this.endDate = _ref[1];\n }\n\n var hasDisable = false;\n\n for (var i = 0; i < dates.length; i++) {\n for (var j = 0; j < dates[i].length; j++) {\n var dateObj = dates[i][j];\n dateObj.isStart = false;\n dateObj.isMiddle = false;\n dateObj.isEnd = false;\n var startDateGap = this.getDateGap(dateObj, this.startDate);\n var endDateGap = this.getDateGap(dateObj, this.endDate);\n\n if (dateObj.year === year && dateObj.month === month && dateObj.date === date && dateObj.disable) {\n hasDisable = true;\n }\n\n if (startDateGap > 0 && endDateGap < 0) {\n if (dateObj.disable) {\n hasDisable = true;\n }\n\n if (dateGap !== 0) {\n if (j === 0) {\n dateObj.isStart = true;\n } else if (j === 6) {\n dateObj.isEnd = true;\n } else {\n dateObj.isMiddle = true;\n }\n } else {\n dateObj.isSelected = true;\n }\n }\n\n if (this.startDate.year === dateObj.year && this.startDate.month === dateObj.month && this.startDate.date === dateObj.date && dateGap !== 0) {\n if (j === 6) {\n dateObj.isSelected = true;\n } else {\n dateObj.isStart = true;\n }\n }\n\n if (this.endDate.year === dateObj.year && this.endDate.month === dateObj.month && this.endDate.date === dateObj.date && dateGap !== 0) {\n if (j === 0) {\n dateObj.isSelected = true;\n } else {\n dateObj.isEnd = true;\n }\n }\n }\n }\n\n if (hasDisable) {\n this.props.onSelectHasDisableDate([this.makeDate(this.startDate), this.makeDate(this.endDate)]);\n return;\n }\n\n if (this.props.onSelect) {\n this.props.onSelect([this.makeDate(this.startDate), this.makeDate(this.endDate)]);\n }\n } else {\n var isDisable = false;\n\n for (var _i5 = 0; _i5 < dates.length; _i5++) {\n for (var _j = 0; _j < dates[_i5].length; _j++) {\n var _dateObj = dates[_i5][_j];\n\n if (_dateObj.year === year && _dateObj.month === month && _dateObj.date === date) {\n if (_dateObj.disable) {\n isDisable = true;\n _dateObj.isSelected = false;\n } else {\n _dateObj.isSelected = true;\n }\n\n _dateObj.isStart = false;\n _dateObj.isMiddle = false;\n _dateObj.isEnd = false;\n } else {\n _dateObj.isSelected = false;\n _dateObj.isStart = false;\n _dateObj.isMiddle = false;\n _dateObj.isEnd = false;\n }\n }\n }\n\n if (!isDisable) {\n this.tapTimes += 1;\n }\n\n this.startDate = {\n year: year,\n month: month,\n date: date\n };\n }\n\n this.setData({\n dates: dates\n });\n } else if (type === 'mutiply') {\n var _isDisable = false;\n var dateArray = []\n for (var _i6 = 0; _i6 < dates.length; _i6++) {\n for (var _j2 = 0; _j2 < dates[_i6].length; _j2++) {\n var _dateObj2 = dates[_i6][_j2];\n\n if (_dateObj2.year === year && _dateObj2.month === month && _dateObj2.date === date && !_dateObj2.isSelected && !_dateObj2.disable) {\n _dateObj2.isSelected = true;\n dateArray.push(this.makeDate(_dateObj2))\n if (_dateObj2.disable) {\n _isDisable = true;\n }\n } else if (_dateObj2.year === year && _dateObj2.month === month && _dateObj2.date === date && _dateObj2.isSelected &&!_dateObj2.disable) {\n _dateObj2.isSelected = false;\n } else if (_dateObj2.isSelected) {\n dateArray.push(this.makeDate(_dateObj2))\n _dateObj2.isSelected = true;\n }else {\n _dateObj2.isSelected = false;\n }\n }\n }\n if (_isDisable) {\n return;\n }\n\n this.setData({\n dates: dates\n });\n if (this.props.onSelect) {\n this.props.onSelect(dateArray)\n }\n }\n else {\n var _isDisable = false;\n\n for (var _i6 = 0; _i6 < dates.length; _i6++) {\n for (var _j2 = 0; _j2 < dates[_i6].length; _j2++) {\n var _dateObj2 = dates[_i6][_j2];\n\n if (_dateObj2.year === year && _dateObj2.month === month && _dateObj2.date === date) {\n _dateObj2.isSelected = true;\n\n if (_dateObj2.disable) {\n _isDisable = true;\n }\n } else {\n _dateObj2.isSelected = false;\n }\n }\n }\n\n if (_isDisable) {\n return;\n }\n\n this.setData({\n dates: dates\n });\n\n if (this.props.onSelect) {\n this.props.onSelect([this.makeDate({\n year: year,\n month: month,\n date: date\n }), undefined]);\n }\n }\n }\n }\n});","pages/order-confirm/components/calendar/index.json":"{\n \"component\": true\n}\n","pages/order-confirm/components/order-actionbar/order-actionbar.acss":"page {\n background-color: #FAFAFA;\n}\n.order-actionbar-container .order-summary-wrap {\n display: flex;\n height: 94rpx;\n justify-content: space-between;\n align-items: center;\n padding: 0 32rpx;\n}\n.order-actionbar-container .order-summary-wrap.spread {\n border-top: 1rpx solid #eee;\n}\n.order-actionbar-container .order-summary-wrap .order-summary {\n display: flex;\n font-size: 26rpx;\n}\n.order-actionbar-container .order-summary-wrap .order-summary .price {\n color: #F55024;\n font-family: AlipayNumber-Regular;\n}\n.order-actionbar-container .action-wrap {\n display: flex;\n height: 120rpx;\n justify-content: space-between;\n align-items: center;\n padding: 0 32rpx;\n border-top: 1rpx solid #eee;\n}\n.order-actionbar-container .action-wrap .buy-button {\n height: 88rpx;\n width: 315rpx;\n line-height: 0;\n justify-content: center;\n display: flex;\n font-size: 36rpx;\n align-items: center;\n font-weight: bold;\n}\n.choice {\n color: #108EE9;\n margin-right: 12rpx;\n font-size: 26rpx;\n}\n.choice-arrow {\n display: inline-block;\n border-right: 1rpx solid #108EE9;\n border-bottom: 1rpx solid #108EE9;\n width: 14rpx;\n height: 14rpx;\n transform: rotate(-135deg);\n}\n.choice-arrow-spread {\n display: inline-block;\n border-right: 1rpx solid #108EE9;\n border-bottom: 1rpx solid #108EE9;\n width: 14rpx;\n height: 14rpx;\n margin-bottom: 6rpx;\n transform: rotate(45deg);\n}\n.summary-info-wraper {\n padding: 0 32rpx;\n background: #FFF;\n}\n.summary-info-wraper .wraper-item {\n padding-top: 30rpx;\n border-bottom: 1rpx solid #EEE;\n}\n.summary-info-wraper .wraper-item.last {\n padding-top: 30rpx;\n border-bottom: none;\n}\n.summary-info-wraper .wraper-item .item {\n display: flex;\n margin-bottom: 30rpx;\n justify-content: space-between;\n}\n.action-wrap .discount-wrap {\n padding-top: 2rpx;\n}\n.action-wrap .discount-wrap .now_price {\n display: inline-block;\n font-family: AlipayNumber-Regular;\n}\n.action-wrap .discount-wrap .price {\n font-size: 50rpx;\n color: #F25130;\n font-family: AlipayNumber-Regular;\n}\n.action-wrap .discount-wrap .RMB {\n font-size: 26rpx;\n color: #F25130;\n}\n.action-wrap .discount-wrap .sale_price {\n display: inline-block;\n text-decoration: line-through;\n font-size: 25rpx;\n color: #999;\n margin-left: 16rpx;\n font-weight: bold;\n}\n.action-wrap .discount-wrap .sale_price .unit {\n font-size: 18rpx;\n}\n.fixed-bottom {\n background: #FFF;\n width: 100%;\n position: fixed;\n bottom: 0;\n}\n","pages/order-confirm/components/order-actionbar/order-actionbar.axml":"<view class=\"order-actionbar-container\">\n <view class=\"fixed-bottom\">\n <view class=\"order-summary-wrap {{spread ? 'spread' : ''}}\">\n <view class=\"order-summary\">\n <view>\n 总计<text class=\"price\">30</text>张票\n </view>\n <view>\n 优惠<text class=\"price\">30</text>元\n </view>\n </view>\n <view onTap=\"spread\">\n <text class=\"choice\">明细</text>\n <view class=\"choice-arrow {{spread ? 'choice-arrow-spread': ''}}\"></view>\n </view>\n </view>\n <view a:if=\"{{spread}}\" class=\"summary-info-wraper\">\n <view class=\"wraper-item\">\n <view class=\"item\">\n <view class=\"label\">票价</view>\n <view class=\"content\">40元 × 2</view>\n </view>\n </view>\n <view class=\"wraper-item\">\n <view class=\"item\">\n <view class=\"label\">小计</view>\n <view class=\"content\">90元</view>\n </view>\n <view class=\"item\">\n <view class=\"label\">优惠券</view>\n <view class=\"content\">-48元</view>\n </view>\n </view>\n <view class=\"wraper-item last\">\n <view class=\"item\">\n <view class=\"label\">补票手续费</view>\n <view class=\"content\">2.5元</view>\n </view>\n </view>\n </view>\n \n <view class=\"action-wrap\">\n <view class=\"discount-wrap\">\n <view class=\"now_price\">\n <text class=\"price\">44.50</text>\n <text class=\"RMB\">元</text>\n </view>\n <view class=\"sale_price\">\n 90.00<text class=\"unit\">元</text>\n </view>\n </view>\n <button type=\"primary\" class=\"buy-button\" onTap=\"pay\">确认购票</button>\n </view>\n </view>\n</view>","pages/order-confirm/components/order-actionbar/order-actionbar.js":"import { tracertOrder } from '../../../../utils/tracert'\n\nComponent({\n mixins: [],\n data: {\n spread: false\n },\n props: {\n \n },\n didMount() {},\n didUpdate() {},\n didUnmount() {},\n methods: {\n spread() {\n if (this.data.spread) {\n tracertOrder.click('c37424.d75501')\n }\n this.setData({\n spread: !this.data.spread\n })\n },\n pay() {\n tracertOrder.click('c37425.d75503')\n }\n },\n});\n","pages/order-confirm/components/order-actionbar/order-actionbar.json":"{\n \"component\": true\n}","pages/order-confirm/components/order-banner/order-banner.acss":".order-banner-container {\n background-image: url(https://gw.alipayobjects.com/mdn/rms_cd276b/afts/img/A*mC-hS5BvX8sAAAAAAAAAAABkARQnAQ);\n background-repeat: no-repeat;\n background-size: cover;\n height: 236rpx;\n}\n.order-banner-container .order-banner-title {\n font-family: PingFangSC-Medium;\n font-size: 16rpx;\n color: #FFFFFF;\n letter-spacing: 0;\n display: flex;\n align-items: center;\n margin: 17rpx 0 0 32rpx;\n}\n.order-banner-container .order-banner-title .carType {\n font-size: 34rpx;\n}\n.order-banner-container .order-banner-title .carNum {\n font-size: 38rpx;\n}\n.order-banner-container .order-banner-title .fromdest-icon {\n width: 31rpx;\n height: 9rpx;\n}\n","pages/order-confirm/components/order-banner/order-banner.axml":"<view class=\"order-banner-container\">\n <titlebar-placeholder />\n <view class=\"order-banner-title\">\n <text class=\"carType\">早·S</text><text class=\"carNum\">100</text>\n </view>\n</view>","pages/order-confirm/components/order-banner/order-banner.js":"Component({\n mixins: [],\n data: {},\n props: {},\n didMount() {},\n didUpdate() {},\n didUnmount() {},\n methods: {},\n});\n","pages/order-confirm/components/order-banner/order-banner.json":"{\n \"component\": true,\n \"usingComponents\": {\n \"titlebar-placeholder\": \"/components/titlebar-placeholder/titlebar-placeholder\"\n }\n}","pages/order-confirm/components/order-calendar/order-calendar.acss":".order-calendar-container {\n background-color: #fff;\n}\n.order-calendar-container .calendar-topbar {\n display: flex;\n justify-content: space-between;\n padding: 20rpx 32rpx;\n border-bottom: 1rpx solid #EEEEEE;\n}\n.order-calendar-container .calendar-topbar .time .icon {\n background: url('https://gw.alipayobjects.com/mdn/rms_815f8a/afts/img/A*pOYGTYFHdgwAAAAAAAAAAABkARQnAQ');\n width: 26rpx;\n height: 25rpx;\n background-size: cover;\n display: inline-block;\n vertical-align: middle;\n margin-right: 16rpx;\n}\n.order-calendar-container .calendar-topbar .time .text {\n vertical-align: middle;\n display: inline-block;\n font-size: 26rpx;\n}\n.order-calendar-container .calendar-topbar .time .text .number {\n font-family: AlipayNumber-Regular;\n}\n.order-calendar-container .am-calendar {\n padding-top: 0;\n}\n.order-calendar-container .am-calendar .am-calendar-days {\n border-bottom: none;\n padding: 15rpx 20rpx 20rpx;\n}\n.order-calendar-container .am-calendar .am-calendar-days .am-calendar-day {\n font-size: 22rpx;\n}\n.order-calendar-container .am-calendar .am-calendar-months {\n display: none;\n}\n.order-calendar-container .am-calendar .am-calendar-dates .am-calendar-week:last-child {\n margin-bottom: 0;\n}\n.time,\n.weekDes {\n font-size: 26rpx;\n color: #999999;\n margin-left: 12rpx;\n}\n.radio {\n display: inline-block;\n margin-right: 3rpx;\n width: 26rpx;\n height: 26rpx;\n vertical-align: middle;\n border-radius: 50%;\n border: 1rpx solid #999;\n}\n.radio.checked {\n background: #108EE9;\n}\n.am-calendar {\n height: 480rpx;\n}\n.am-calendar-selected .am-calendar-block {\n background: #EEF8FF;\n color: #1D8FE1;\n font-size: 18rpx;\n}\n.am-calendar-date {\n color: #000 !important;\n font-size: 26rpx;\n line-height: 20rpx;\n font-family: AlipayNumber-Regular;\n}\n.am-calendar-date-wrap {\n height: 53rpx;\n}\n.am-calendar-selected .am-calendar-date {\n color: #1D8FE1 !important;\n}\n.am-calendar-day {\n color: #999 !important;\n}\n.am-calendar-disable .am-calendar-date {\n color: #C8C8C8 !important;\n}\n.am-calendar-tag {\n color: #000 !important;\n top: 26rpx;\n}\n.am-calendar-selected .am-calendar-tag {\n color: #1D8FE1 !important;\n}\n.am-calendar-selected .am-calendar-block.has-tag {\n width: 68rpx;\n height: 68rpx;\n left: calc(50% - 32rpx);\n top: 20rpx;\n}\n.am-calendar-disable .am-calendar-tag {\n color: #C8C8C8 !important;\n}\n.am-calendar-week {\n margin-bottom: 29rpx;\n margin-top: 0;\n}\n.am-calendar-week:first-child {\n margin-top: 0;\n}\n.am-calendar-week:last-child {\n margin-bottom: 0;\n}\n","pages/order-confirm/components/order-calendar/order-calendar.axml":"<view class=\"order-calendar-container\">\n <view\n class=\"calendar-topbar\"\n >\n <view class=\"time\">\n <view class=\"icon\"></view>\n <view class=\"text\"><text class='number'>2019</text> 年<text class='number'>6</text>月-<text class='number'>7</text>月</view>\n </view>\n <view onTap=\"radioChange\">\n <view class=\"radio {{selectWeek? 'checked' : ''}}\"/><text class=\"weekDes\">购买本周</text>\n </view>\n\n </view>\n <view>\n <calendar type=\"mutiply\" ref=\"saveRef\"\n haveYear=\"{{true}}\" tagData=\"{{tagData}}\" onSelect=\"dateChange\"></calendar>\n </view>\n</view>","pages/order-confirm/components/order-calendar/order-calendar.js":"import { tracertRoute } from '../../../../utils/tracert'\n\nComponent({\n mixins: [],\n data: {\n selectWeek: false, \n tagData: [\n { date: '2019-11-14', tag: '有票', tagColor: 4 },\n { date: '2019-10-28', tag: '无票', tagColor: 5, disable: true },\n ],\n },\n props: {},\n didMount() {\n },\n didUpdate() {},\n didUnmount() {},\n methods: {\n saveRef(ref) {\n this.calendar = ref\n },\n dateChange() {\n tracertRoute.click('c37422.d75499')\n },\n radioChange() {\n if (!this.data.selectWeek) {\n this.calendar.selectWeek()\n } else {\n this.calendar.cancelSelectWeek()\n }\n this.setData({\n selectWeek: !this.data.selectWeek\n })\n \n }\n },\n \n});\n","pages/order-confirm/components/order-calendar/order-calendar.json":"{\n \"component\": true,\n \"usingComponents\": { \"calendar\": \"../calendar/index\" }\n}\n","pages/order-confirm/components/order-route/order-route.acss":".order-route-container {\n padding: 40rpx;\n display: flex;\n justify-content: space-between;\n margin-top: 16rpx;\n background-color: #fff;\n height: 180rpx;\n box-sizing: border-box;\n}\n.order-route-container .route-container {\n margin-top: 0;\n}\n.order-route-container .route-chooser {\n display: flex;\n align-items: center;\n color: #108EE9;\n font-size: 26rpx;\n}\n.order-route-container .route-chooser .chooser-arrow {\n border-right: 1rpx solid #108EE9;\n border-bottom: 1rpx solid #108EE9;\n width: 14rpx;\n height: 14rpx;\n transform: rotate(-45deg);\n}\n","pages/order-confirm/components/order-route/order-route.axml":"<view class=\"order-route-container\">\n <route />\n <view class=\"route-chooser\" onTap=\"goChangeRoute\">\n <text>更改站点</text>\n <view class=\"chooser-arrow\"></view>\n </view>\n</view>","pages/order-confirm/components/order-route/order-route.js":"import { tracertRoute } from '../../../../utils/tracert'\n\nComponent({\n mixins: [],\n data: {},\n props: {},\n didMount() {},\n didUpdate() {},\n didUnmount() {},\n methods: {\n goChangeRoute() {\n tracertRoute.click('c37423.d75500')\n my.navigateTo({\n url: '/pages/change-station/change-station'\n });\n }\n },\n});\n","pages/order-confirm/components/order-route/order-route.json":"{\n \"component\": true,\n \"usingComponents\": {\n \"route\": \"/components/route/route\"\n }\n}","pages/order-confirm/order-confirm.acss":".order-confirm-container {\n background-color: #FAFAFA;\n}\n","pages/order-confirm/order-confirm.axml":"<view class=\"order-confirm-container\">\n <order-banner />\n <order-calendar />\n <order-route />\n <order-actionbar />\n</view>","pages/order-confirm/order-confirm.js":"import { tracertOrder } from '../../utils/tracert'\n\nPage({\n data: {},\n onLoad() {\n tracertOrder.logPv()\n },\n onShow() {\n tracertOrder.expo('c37425')\n tracertOrder.expo('c37424')\n tracertOrder.expo('c37423')\n tracertOrder.expo('c37422')\n\n\n }\n});\n","pages/order-confirm/order-confirm.json":"{\n \"defaultTitle\": \"订单确认\",\n \"transparentTitle\": \"auto\",\n \"usingComponents\": {\n \"order-route\": \"./components/order-route/order-route\",\n \"order-banner\": \"./components/order-banner/order-banner\",\n \"order-calendar\": \"./components/order-calendar/order-calendar\",\n \"order-actionbar\": \"./components/order-actionbar/order-actionbar\"\n }\n}","pages/pay-success/pay-success.acss":".success_wraper {\n margin-top: 84rpx;\n text-align: center;\n}\n.logo {\n width: 88rpx;\n height: 88rpx;\n}\n.success_text {\n color: #108EE9;\n font-size: 34rpx;\n margin-top: 16rpx;\n font-weight: bold;\n}\n.price_wraper {\n text-align: center;\n margin-top: 58rpx;\n}\n.rmb {\n font-size: 54rpx;\n}\n.price {\n font-size: 90rpx;\n font-family: AlipayNumber-Regular;\n}\n.hint {\n font-size: 28rpx;\n color: #999;\n}\n.green_energy {\n width: 433rpx;\n height: 56rpx;\n margin: 13rpx auto 56rpx;\n background: #ECFAF7;\n line-height: 56rpx;\n border-radius: 31rpx;\n}\n.green {\n width: 29rpx;\n height: 33rpx;\n vertical-align: middle;\n margin-right: 10rpx;\n}\n.green_text {\n vertical-align: middle;\n}\n.method,\n.opposite {\n display: flex;\n justify-content: space-between;\n padding: 0 35rpx;\n}\n.opposite {\n margin: 20rpx 0 35rpx;\n}\n.label {\n font-size: 30rpx;\n color: #999;\n}\n.content {\n font-size: 30rpx;\n}\n.ticket_wraper {\n padding: 0 32rpx;\n}\n","pages/pay-success/pay-success.axml":"<view>\n <view class=\"success_wraper\">\n <image class=\"logo\" src=\"https://gw.alipayobjects.com/mdn/rms_815f8a/afts/img/A*4fCBToTb01UAAAAAAAAAAABkARQnAQ\"/>\n <view class=\"success_text\">\n <text >支付成功</text>\n </view>\n </view>\n <view class=\"price_wraper\">\n <view>\n <text class=\"rmb\">¥</text>\n <text class=\"price\">44.50</text>\n </view>\n <text class=\"hint\">实际支付金额以账单信息为准</text>\n <view class=\"green_energy\">\n <image class=\"green\" src=\"https://gw.alipayobjects.com/mdn/rms_815f8a/afts/img/A*isaBRbjQdTQAAAAAAAAAAABkARQnAQ\"/>\n <text class=\"green_text\">预计次日可得</text>\n <text class=\"green_text\">80g</text>\n <text class=\"green_text\">绿色能量</text>\n </view>\n </view>\n <view class=\"pay_info_wraper\">\n <view class=\"method\">\n <text class=\"label\">付款方式</text>\n <text class=\"content\">招商银行信用卡(8800)</text>\n </view>\n <view class=\"opposite\">\n <text class=\"label\">收款方</text>\n <text class=\"content\">商家信息</text>\n </view>\n </view>\n <view class=\"ticket_wraper\">\n <ticket type=\"start\" />\n </view>\n</view>","pages/pay-success/pay-success.js":"import Store from './store'\n\nPage(Store.register({\n data: {},\n onLoad() {},\n}));\n","pages/pay-success/pay-success.json":"{\n \"defaultTitle\": \"\",\n \"usingComponents\": {\n \"ticket\": \"/components/ticket/ticket\"\n }\n}","pages/pay-success/store.js":"import Store from 'herculex';\n\nexport default new Store({\n connectGlobal: true,\n state: {\n },\n plugins: [],\n mutations: {},\n actions: {\n },\n});\n","pages/route-detail/route-detail.acss":"page {\n background-color: #fff;\n}\n.route-info {\n padding: 31rpx 0rpx 18rpx 40rpx;\n}\n.info-location {\n font-family: PingFangSC-Medium;\n color: #000000;\n letter-spacing: 0;\n}\n.info-location .timeAndCartType {\n font-family: PingFangSC-Medium;\n font-size: 30rpx;\n}\n.info-location .cartNumber {\n font-size: 32rpx;\n}\n.info-img {\n width: 60rpx;\n height: 18rpx;\n}\n.info-hour {\n font-family: PingFangSC-Regular;\n font-size: 26rpx;\n color: #999999;\n letter-spacing: 0;\n margin: 15rpx 0;\n}\n.info-start {\n font-family: PingFangSC-Regular;\n font-size: 26rpx;\n color: #999999;\n letter-spacing: 0.56px;\n margin: 15rpx 0;\n}\n.divide {\n border-bottom: 1px solid #eeeeee;\n margin: 0 40rpx;\n}\n.steps-detail {\n padding: 40rpx 0 40rpx 40rpx;\n}\n.detail-left {\n display: flex;\n flex-direction: column;\n align-items: center;\n justify-content: center;\n}\n.left-up {\n width: 30rpx;\n height: 30rpx;\n border-radius: 50%;\n background: #0DC46E;\n color: white;\n display: flex;\n align-items: center;\n justify-content: center;\n font-size: 18rpx;\n}\n.left-line {\n width: 7rpx;\n height: 150rpx;\n background: #A1D3F6;\n}\n.left-down {\n width: 30rpx;\n height: 30rpx;\n border-radius: 50%;\n background: #F03637;\n color: white;\n display: flex;\n align-items: center;\n justify-content: center;\n font-size: 18rpx;\n}\n.detail-right {\n display: flex;\n flex-direction: column;\n align-items: flex-start;\n justify-content: space-between;\n margin-left: 50rpx;\n}\n.right-top {\n display: flex;\n align-items: center;\n justify-content: center;\n}\n.right-bottom {\n display: flex;\n align-items: center;\n justify-content: center;\n}\n.right-mid {\n font-family: PingFangSC-Regular;\n font-size: 24rpx;\n color: #999999;\n letter-spacing: 0.52rpx;\n}\n.right-time {\n font-family: HelveticaNeue;\n font-size: 24rpx;\n color: #108EE9;\n letter-spacing: 0.52rpx;\n}\n.right-location {\n font-family: PingFangSC-Medium;\n font-size: 32rpx;\n color: #108EE9;\n letter-spacing: 0.69rpx;\n margin-left: 20rpx;\n}\n.detail-bottom {\n border-top: 1px solid #eeeeee;\n position: fixed;\n z-index: 2000;\n bottom: 0rpx;\n width: 100%;\n height: 120rpx;\n padding: 16rpx 32rpx 16rpx;\n box-sizing: border-box;\n display: flex;\n align-items: flex-end;\n justify-content: space-between;\n background: #fff;\n}\n.bottom-price {\n margin-bottom: 12rpx;\n}\n.price-discount {\n display: inline-block;\n}\n.price-discount-num {\n font-family: AlipayNumber-Regular;\n font-size: 50rpx;\n color: #F25130;\n letter-spacing: 0;\n margin-bottom: -10rpx;\n display: inline-block;\n}\n.price-discount-unit {\n font-family: PingFangSC-Regular;\n font-size: 26rpx;\n color: #F25130;\n letter-spacing: 0.44rpx;\n display: flex;\n align-items: flex-end;\n display: inline-block;\n}\n.price-primary {\n font-family: Helvetica;\n font-size: 25rpx;\n color: #999990;\n letter-spacing: 0;\n margin-left: 20rpx;\n text-decoration: line-through;\n display: inline-block;\n font-weight: bold;\n}\n.price-primary .unit {\n font-size: 18rpx;\n font-weight: bold;\n}\n.detail-bottom-button {\n width: 315rpx;\n height: 88rpx;\n}\n.bottom {\n height: 150rpx;\n}\n","pages/route-detail/route-detail.axml":"<view>\n\n <map mapStyle=\"{{height: '485rpx'}}\"/>\n <view class=\"route-info\">\n <view class=\"info-location\">\n <text class=\"timeAndCartType\">{{item.time}}·{{item.cartype}}</text><text class=\"cartNumber\">{{item.cartNumber}}</text>\n </view>\n <view class=\"info-hour\">\n {{item.coast}} · {{item.steps}}站 · {{item.walk}}\n </view>\n <view class=\"info-start\">\n 发车时间:{{item.takeoff}}\n </view>\n </view>\n <view class=\"divide\"/>\n <view class=\"steps-detail\">\n <bus-stagement />\n <view class=\"bottom\"></view>\n </view>\n <view class=\"detail-bottom\">\n <view class=\"bottom-price\">\n <view class=\"price-discount\">\n <view class=\"price-discount-num\">\n {{item.price}}\n </view>\n <view class=\"price-discount-unit\">\n 元\n </view>\n </view>\n <view class=\"price-primary\">\n {{item.primaryprice}}<text class=\"unit\">元</text>\n </view>\n </view>\n <button type=\"primary\" class=\"detail-bottom-button\" onTap=\"buyTicket\">\n 购票\n </button>\n </view>\n\n</view>","pages/route-detail/route-detail.js":"import { tracertRoute } from '../../utils/tracert'\n\nPage({\n data: {\n test: \"222\",\n item:\n {\n time: '早',\n cartype: \"S\",\n cartNumber: 100,\n start: \"良渚\",\n end: \"萧山机场\",\n coast: \"1小时10分钟\",\n steps: \"5\",\n walk: \"步行800米\",\n takeoff: \"09:00\",\n uptime: \"09:20\",\n upbus: \"德力西大楼\",\n offtime: \"10:00\",\n offbus: \"萧山机场\",\n price: \"22.50\",\n primaryprice: \"25.00\"\n },\n stage: [\n {\n name: '良渚',\n time: \"09:00\",\n start: true\n },\n {\n name: '幸福站',\n time: \"09:00\",\n },\n {\n name: '德力西大厦',\n time: \"09:20\",\n upbus: true\n },\n {\n name: '天目山路',\n time: \"09:45\",\n stagement: true\n },\n {\n name: '文三西路',\n time: \"10:00\",\n stagement: true,\n },\n {\n name: '萧山机场',\n time: \"10:00\",\n offbus: true,\n },\n {\n name: '巴拉巴拉',\n time: \"10:00\",\n end: true,\n }\n ]\n\n },\n onLoad() {\n tracertRoute.logPv()\n },\n onShow() {\n tracertRoute.expo('c37421')\n tracertRoute.expo('c37420')\n tracertRoute.expo('c37419')\n },\n buyTicket() {\n tracertRoute.click('c37421.d75498')\n my.navigateTo({\n url: '/pages/order-confirm/order-confirm'\n });\n\n },\n\n});\n","pages/route-detail/route-detail.json":"{\n \"defaultTitle\": \"路线详情\",\n \"usingComponents\": {\n \"map\": \"/components/map/map\",\n \"list\": \"mini-antui/es/list/index\",\n \"list-item\": \"mini-antui/es/list/list-item/index\",\n \"bus-stagement\": \"/components/bus-stagement/bus-stagement\"\n }\n}","pages/search-result/components/route-customize/route-customize.acss":".route-customize-container {\n background-color: #fff;\n padding: 32rpx;\n position: relative;\n box-shadow: 0 2px 11px 0 rgba(153, 153, 153, 0.04);\n border-radius: 4rpx;\n margin-bottom: 24rpx;\n}\n.route-customize-container .title {\n display: flex;\n font-size: 14px;\n color: #999;\n padding-bottom: 32rpx;\n border-bottom: 1rpx solid #EEEEEE;\n}\n.route-customize-container:before {\n content: ' ';\n display: block;\n height: 1rpx;\n}\n.route-customize-container .content {\n display: flex;\n justify-content: space-between;\n padding-bottom: 25rpx;\n}\n.route-customize-container .content .right-action {\n display: flex;\n align-items: flex-end;\n}\n.route-customize-container .content .right-action .customize-button {\n font-size: 16px;\n height: 58rpx;\n line-height: 58rpx;\n padding: 0 16rpx;\n}\n.route-customize-container .custom-wraper {\n padding-top: 23.5rpx;\n border-top: 1rpx solid #eee;\n}\n.route-customize-container .custom-wraper .progress {\n width: 622rpx;\n height: 25rpx;\n background: #D8D8D8;\n border-radius: 4rpx;\n position: relative;\n}\n.route-customize-container .custom-wraper .info-wraper {\n display: flex;\n justify-content: space-between;\n margin-top: 24rpx;\n}\n.route-customize-container .custom-wraper .info-wraper .text {\n font-size: 26rpx;\n color: #A0A0A0;\n}\n.route-customize-container .custom-wraper .info-wraper .text .number {\n font-size: 26rpx;\n color: #108EE9;\n font-family: AlipayNumber-Regular;\n}\n.route-customize-container .custom-wraper .progress .step {\n position: absolute;\n height: 100%;\n background: #F5A623;\n border-radius: 4rpx;\n font-size: 18rpx;\n color: #fff;\n line-height: 25rpx;\n text-align: center;\n}\n.route-customize-container .custom-wraper .button {\n width: 163rpx;\n height: 58rpx;\n font-size: 32rpx;\n line-height: 58rpx;\n}\n","pages/search-result/components/route-customize/route-customize.axml":"<view class=\"route-customize-container\">\n <view onTap=\"goToDetail\">\n <view class=\"title\">定制新路线</view>\n <view class=\"content\">\n <route type=\"new\"/>\n <view class=\"right-action\">\n <button\n a:if=\"{{type === 1}}\"\n class=\"customize-button\" \n type=\"primary\"\n catchTap=\"onStartCustomize\"\n >\n 发起定制\n </button>\n </view>\n </view>\n <view a:if=\"{{type === 2}}\" class=\"custom-wraper\">\n <view class=\"progress\">\n <view class=\"step\" style=\"{{width: step/20 * 622 + 'rpx'}}\">{{step}}/20个</view>\n </view>\n <view class=\"info-wraper\">\n <view class=\"text\">已有<text class=\"number\">1</text>人参与定制</view>\n <button class=\"button\" onTap=\"onJoinCustomize\" type=\"primary\">参与定制</button>\n </view>\n </view>\n </view>\n</view>","pages/search-result/components/route-customize/route-customize.js":"import { tracertRouteSearch } from '../../../../utils/tracert'\n\nComponent({\n mixins: [],\n data: {},\n props: {\n type: 1,\n step: 5\n },\n didMount() {},\n didUpdate() {},\n didUnmount() {},\n methods: {\n /**\n * 开始定制\n */\n onStartCustomize() {\n tracertRouteSearch.click('c37417.d75510')\n my.navigateTo({\n url: '../customize/customize'\n });\n },\n goToDetail() {\n tracertRouteSearch.click('c37417.d75493_N')\n my.navigateTo({\n url: '/pages/route-detail/route-detail'\n })\n }\n },\n});\n","pages/search-result/components/route-customize/route-customize.json":"{\n \"component\": true,\n \"usingComponents\": {\n \"route\": \"/components/route/route\"\n }\n}","pages/search-result/search-result.acss":".search-result-container {\n background-color: #FAFAFA;\n}\n.search-result-container .result-list {\n padding: 24rpx 32rpx 32rpx;\n}\n","pages/search-result/search-result.axml":"<view class=\"search-result-container\">\n <user-route />\n <view class=\"result-list\">\n <ticket-sale origin=\"search\" go=\"route\" />\n <ticket-sale origin=\"search\" go=\"route\" />\n <route-customize>\n </route-customize>\n <route-customize type=\"{{1}}\">\n </route-customize>\n </view>\n</view>","pages/search-result/search-result.js":"import { tracertRouteSearch } from '../../utils/tracert'\n\nPage({\n data: {\n \n },\n onShow() {\n tracertRouteSearch.expo('c37417')\n },\n onLoad(options) {\n \n }\n});\n","pages/search-result/search-result.json":"{\n \"defaultTitle\": \"搜索\",\n \"usingComponents\": {\n \"user-route\": \"/components/user-route/user-route\",\n \"ticket-sale\": \"/components/ticket-sale/ticket-sell\",\n \"route-customize\": \"./components/route-customize/route-customize\"\n }\n}","pages/search/search.acss":"page {\n background: #FFF;\n}\n.am-list {\n margin-top: 5rpx;\n}\n.search-list-item {\n box-sizing: border-box;\n padding-top: 30rpx;\n}\n.search-list-item .icon {\n display: inline-block;\n width: 26rpx;\n height: 32rpx;\n background: url('https://gw.alipayobjects.com/mdn/rms_815f8a/afts/img/A*Q8MVSZcF2F8AAAAAAAAAAABkARQnAQ');\n background-size: cover;\n vertical-align: middle;\n margin-right: 32rpx;\n}\n.search-list-item .content {\n display: inline-block;\n vertical-align: middle;\n font-size: 32rpx;\n}\n","pages/search/search.axml":"<view>\n <search-bar \n onSumit=\"onSearchBarSubmit\"\n onFocus=\"handleFocus\"\n onCancel=\"handleCancel\"\n placeholder=\"搜索\"\n showCancelButton=\"{{true}}\"\n />\n <list>\n <block a:for=\"{{list}}\">\n <list-item \n index=\"{{item}}\" \n data-index=\"{{index}}\"\n class=\"search-list-item\"\n onClick=\"onItemClick\"\n \n >\n <view>\n <view class=\"icon\"></view>\n <view class=\"content\">\n {{item.name}}\n <view class=\"am-list-brief\">{{item.address}}</view>\n </view>\n </view>\n </list-item>\n </block>\n </list>\n</view>","pages/search/search.js":"import { getIn } from 'herculex/dist/utils/manipulate';\nimport { tracertHome, tracertRouteSearch } from '../../utils/tracert'\nPage({\n data: {\n list: [{\n name: '富士康科技集团西',\n address: '武侯区.复兴街'\n }, {\n name: '富士康科技集团西',\n address: '武侯区.复兴街'\n }, {\n name: '富士康科技集团西',\n address: '武侯区.复兴街'\n }],\n },\n onshow() {\n tracertRouteSearch.expo('c37415')\n tracertRouteSearch.expo('c37416')\n },\n onLoad(options) {\n tracertRouteSearch.logPv()\n if (options.type === 'start') {\n tracertHome.click('c37411.d75482')\n } else if (options.type === 'end') {\n tracertHome.click('c37411.d75483')\n } else if (options.type ==='customer') {\n this.setData({\n type: 'customer'\n })\n }\n },\n onItemClick(e) {\n if (this.data.type === \"customer\") {\n my.navigateBack()\n return\n }\n tracertRouteSearch.click('c37416.d75492_N')\n const { list } = this.data;\n const index = getIn(e, ['target', 'dateset', 'index'], 0);\n const item = list[index];\n my.navigateTo({ url: `../search-result/search-result?dest=${item.name}`});\n },\n handleFocus() {\n tracertRouteSearch.click('c37415.d75489')\n },\n handleCancel() {\n tracertRouteSearch.click('c37415.d75491')\n my.navigateBack();\n },\n\n onSearchBarSubmit() {\n \n }\n});\n","pages/search/search.json":"{\n \"defaultTitle\": \"搜索\",\n \"usingComponents\": {\n \"search-bar\":\"mini-antui/es/search-bar/index\",\n \"list\": \"mini-antui/es/list/index\",\n \"list-item\": \"mini-antui/es/list/list-item/index\"\n }\n}","pages/ticket-detail/components/rules/rules.acss":".rule-container {\n margin: 0 32rpx;\n color: #fff;\n}\n.rule-container .rule-title {\n display: flex;\n justify-content: space-between;\n margin-bottom: 24rpx;\n}\n.rule-container .rule-title .title-content {\n font-family: PingFangSC-Medium;\n font-size: 13px;\n color: #FFFFFF;\n letter-spacing: 0px;\n}\n.rule-container .rule-title .question-wrap {\n display: flex;\n align-items: center;\n font-family: PingFangSC-Regular;\n font-size: 12px;\n color: #FFFFFF;\n letter-spacing: 0.52px;\n}\n.rule-container .rule-title .question-wrap .question-icon {\n width: 24rpx;\n height: 24rpx;\n margin-right: 10rpx;\n}\n.rule-container .rule-content {\n opacity: 0.8;\n font-family: PingFangSC-Regular;\n font-size: 12px;\n color: #FFFFFF;\n letter-spacing: 0px;\n line-height: 16px;\n}\n","pages/ticket-detail/components/rules/rules.axml":"<view class=\"rule-container\">\n <view class=\"rule-title\">\n <view class=\"title-content\">规则说明</view>\n </view>\n <view class=\"rule-content\">\n <view>1.开车前15分钟可验票上车;</view>\n <view>2.开车前15分钟可以退票, 验票后不在支持退票;</view>\n <view>3.客服电话: 400-720-0027</view>\n </view>\n</view>","pages/ticket-detail/components/rules/rules.js":"Component({\n mixins: [],\n data: {},\n props: {},\n didMount() {},\n didUpdate() {},\n didUnmount() {},\n methods: {},\n});\n","pages/ticket-detail/components/rules/rules.json":"{\n \"component\": true,\n \"usingComponents\": {\n }\n}","pages/ticket-detail/components/ticket-qr/ticket-qr.acss":".ticket-qr-container {\n border-radius: 4rpx;\n overflow: hidden;\n}\n.ticket-qr-container .top-bar {\n height: 84rpx;\n background-color: #E4F3FF;\n display: flex;\n justify-content: space-between;\n align-items: center;\n border-bottom: 1rpx dashed #E3E3E3;\n}\n.ticket-qr-container .top-bar .ticket-time {\n margin-left: 32rpx;\n font-family: Helvetica;\n font-size: 13px;\n color: #333333;\n letter-spacing: 0.71px;\n}\n.ticket-qr-container .top-bar .ticket-extra {\n color: #118EEA;\n margin-right: 32rpx;\n font-family: PingFangSC-Medium;\n}\n.ticket-qr-container .ticket-info {\n padding: 48rpx;\n background-color: #fff;\n}\n.ticket-qr-container .ticket-info .ticket-route-info {\n display: flex;\n justify-content: space-between;\n padding: 0 40rpx 48rpx;\n border-bottom: 1rpx solid #F4F4F4;\n}\n.ticket-qr-container .ticket-info .ticket-route-info .route-cell {\n display: flex;\n flex-direction: column;\n align-items: center;\n}\n.ticket-qr-container .ticket-info .ticket-route-info .route-cell .route-place {\n font-family: PingFangSC-Medium;\n font-size: 16px;\n color: #333333;\n letter-spacing: 0.69px;\n}\n.ticket-qr-container .ticket-info .ticket-route-info .route-cell .route-time {\n font-family: PingFangSC-Medium;\n font-size: 12px;\n color: #333333;\n letter-spacing: 0.52px;\n margin-top: 8rpx;\n}\n.ticket-qr-container .ticket-info .ticket-route-info .route-icon {\n width: 106rpx;\n height: 10rpx;\n}\n.ticket-qr-container .ticket-info .ticket-other-info {\n display: flex;\n justify-content: space-between;\n margin-top: 22rpx;\n padding: 0 40rpx;\n}\n.ticket-qr-container .ticket-info .ticket-other-info .info-wrap {\n display: flex;\n flex-direction: column;\n align-items: center;\n}\n.ticket-qr-container .ticket-info .ticket-other-info .info-wrap .info-label {\n color: #999;\n margin-bottom: 8rpx;\n font-family: PingFangSC-Regular;\n font-size: 11px;\n}\n.ticket-qr-container .ticket-info .ticket-other-info .info-wrap .info-value {\n color: #333;\n line-height: 33rpx;\n height: 33rpx;\n font-family: PingFangSC-Medium;\n font-size: 12px;\n}\n.ticket-qr-container .ticket-info .ticket-qr-content {\n margin-bottom: 68rpx;\n display: flex;\n flex-direction: column;\n align-items: center;\n}\n.ticket-qr-container .ticket-info .ticket-qr-content .qr-wrap {\n margin: 66rpx 0 24rpx;\n position: relative;\n}\n.qr-wrap .mask {\n width: 100%;\n height: 100%;\n text-align: center;\n background: rgba(255, 255, 255, 0.95);\n position: absolute;\n top: 0;\n left: 0;\n box-sizing: border-box;\n padding-top: 30rpx;\n}\n.qr-wrap .mask image {\n width: 120rpx;\n height: 120rpx;\n background-size: cover;\n margin-bottom: 35rpx;\n}\n.qr-wrap .mask .info {\n font-weight: bold;\n margin-bottom: 17rpx;\n font-size: 38rpx;\n}\n.qr-wrap .mask .des {\n font-size: 28rpx;\n color: #999;\n}\n.order-action {\n width: 70%;\n display: flex;\n justify-content: space-between;\n font-size: 24rpx;\n color: #0098EF;\n margin-top: 34rpx;\n}\n.ticket-qr-container .ticket-info .ticket-qr-content .qr-wrap .qr-image {\n width: 380rpx;\n height: 380rpx;\n}\n.ticket-qr-container .ticket-info .ticket-qr-content .qr-label {\n font-family: PingFangSC-Regular;\n font-size: 12px;\n color: #999999;\n letter-spacing: 0.36px;\n}\n.button-group {\n display: flex;\n}\n.button-group .button {\n flex: 1;\n}\n.button-group .cancel {\n border-right: 1rpx solid #eee;\n color: #999;\n}\n.label-wraper {\n text-align: left;\n}\n.label {\n font-weight: bold;\n}\n","pages/ticket-detail/components/ticket-qr/ticket-qr.axml":"<view class=\"ticket-qr-container\">\n <view class=\"top-bar\">\n <view class=\"ticket-time\">\n 6月2日今天 09:00发车\n </view>\n <slot name=\"topExtra\" a:if=\"{{ showTopExtra }}\" ></slot>\n <view class=\"ticket-extra\" a:else>\n {{ status }}\n </view>\n </view>\n <view class=\"ticket-info\">\n <view class=\"ticket-route-info\">\n <view class=\"route-cell\">\n <view class=\"route-place\">德力西大楼</view>\n <view class=\"route-time\">14:20</view>\n </view>\n <view>\n <image\n class=\"route-icon\"\n mode=\"aspectFit\"\n src=\"https://gw.alipayobjects.com/mdn/rms_cd276b/afts/img/A*saZySZWC-RsAAAAAAAAAAABkARQnAQ\" \n />\n </view>\n <view class=\"route-cell\">\n <view class=\"route-place\">萧山机场</view>\n <view class=\"route-time\">16:20</view>\n </view>\n </view>\n <view class=\"ticket-other-info\">\n <view class=\"info-wrap\">\n <view class=\"info-label\">上车时间</view>\n <view class=\"info-value\">14:20</view>\n </view>\n <view class=\"info-wrap\">\n <view class=\"info-label\">实际付款</view>\n <view class=\"info-value\">122元</view>\n </view>\n <view class=\"info-wrap\">\n <view class=\"info-label\">购票数量</view>\n <view class=\"info-value\">1张</view>\n </view>\n </view>\n <view class=\"ticket-qr-content\">\n <view class=\"qr-wrap\">\n <image \n mode=\"aspectFit\"\n class=\"qr-image\"\n src=\"https://gw.alipayobjects.com/mdn/rms_815f8a/afts/img/A*7B7KTryfl2gAAAAAAAAAAABkARQnAQ\"\n />\n <view class=\"mask\">\n <image mode=\"scaleToFill\" src=\"{{images[0].url}}\"/>\n <view class=\"info\">\n {{images[0].des}}\n </view>\n <view class=\"des\">\n 退票金额: 10元\n </view>\n <view class=\"des\">\n 退款预计2日内退回付款账户\n </view>\n </view>\n </view>\n <view class=\"qr-label\">刷车票码上车</view>\n <view class =\"order-action\">\n <view onTap=\"refund\">申请退票</view>\n <view onTap=\"rules\">退票规则</view>\n </view>\n </view>\n </view>\n <modal show=\"{{refundVisible}}\" showClose=\"{{false}}\">\n <view slot=\"header\">退票提示</view>\n 共退1张票, 退票金额12元\n <view class=\"button-group\" slot=\"footer\">\n <view class=\"button cancel\" onTap=\"cancel\">取消</view>\n <view class=\"button submit\" onTap=\"submit\">确定</view>\n </view>\n </modal>\n <modal show=\"{{rulesVisible}}\" showClose=\"{{false}}\">\n <view slot=\"header\">退票规则</view>\n <view class=\"label-wraper\">\n <view><text class=\"label\">正常退票:</text>6月2日17:45前退票免退票手续费,并且不限退票次数。</view>\n <view><text class=\"label\">锁定期:</text>6月2日17:45-19:00为车票锁定期,不能退票。</view>\n <view><text class=\"label\">应急退票:</text>6月2日19:00—6月17日24:00将收取实际付款20%的手续费,一个账户一个自然月只能享受2次。\n 如果有疑问,请拨打400-720-0027</view>\n </view>\n <view slot=\"footer\" onTap=\"rulesOk\">\n 确定\n </view>\n </modal>\n</view>","pages/ticket-detail/components/ticket-qr/ticket-qr.js":"import { tracertTicket } from '../../../../utils/tracert'\n\nComponent({\n mixins: [],\n data: {\n refundVisible: false,\n rulesVisible: false,\n images: [\n {\n des: '车票码暂未生成',\n url: 'https://gw.alipayobjects.com/mdn/rms_815f8a/afts/img/A*ISJcRLGtt3MAAAAAAAAAAABkARQnAQ'\n },\n {\n des: '车票码已过期',\n url: 'https://gw.alipayobjects.com/mdn/rms_815f8a/afts/img/A*pdUKR5hMlUkAAAAAAAAAAABkARQnAQ'\n },\n {\n des: '车票码已使用',\n url: 'https://gw.alipayobjects.com/mdn/rms_815f8a/afts/img/A*pdUKR5hMlUkAAAAAAAAAAABkARQnAQ'\n },\n {\n des: '车票已退票',\n url: 'https://gw.alipayobjects.com/mdn/rms_815f8a/afts/img/A*RFdNQYTW8IIAAAAAAAAAAABkARQnAQ'\n },\n {\n des: '车票已退票',\n url: 'https://gw.alipayobjects.com/mdn/rms_815f8a/afts/img/A*d1MWQpT7CxMAAAAAAAAAAABkARQnAQ'\n }\n ]\n },\n props: {},\n didMount() {},\n didUpdate() {},\n didUnmount() {},\n methods: {\n cancel() {\n tracertTicket.click('c37432.d75520')\n this.setData({\n refundVisible: false\n })\n },\n submit() {\n tracertTicket.click('c37432.d75519')\n this.setData({\n refundVisible: false\n })\n },\n refund() {\n tracertTicket.expo('c37432')\n tracertTicket.click('c37431.d75518')\n this.setData({\n refundVisible: true\n })\n },\n rules() {\n tracertTicket.click('c37431.d75517')\n this.setData({\n rulesVisible: true\n })\n },\n rulesOk() {\n this.setData({\n rulesVisible: false\n })\n }\n },\n});\n","pages/ticket-detail/components/ticket-qr/ticket-qr.json":"{\n \"component\": true,\n \"usingComponents\": { \"modal\": \"mini-antui/es/modal/index\" }\n}\n","pages/ticket-detail/ticket-detail.acss":".ticket-detail-container {\n height: 100vh;\n background-color: #3089D7;\n}\n.ticket-detail-container .ticket-qr-container {\n margin: 32rpx 24rpx;\n}\n.ticket-detail-container .ticket-qr-container .top-extra {\n margin-right: 32rpx;\n font-family: PingFangSC-Medium;\n font-size: 13px;\n color: #108EE9;\n letter-spacing: 0.71px;\n display: flex;\n align-items: center;\n}\n.ticket-detail-container .ticket-qr-container .top-extra .place-icon {\n width: 18rpx;\n height: 24rpx;\n margin-right: 10rpx;\n}\n","pages/ticket-detail/ticket-detail.axml":"<view class=\"ticket-detail-container\">\n <titlebar-placeholder />\n <ticket-qr\n showTopExtra=\"{{ true }}\"\n >\n <view slot=\"topExtra\" class=\"top-extra\" onTap=\"findStation\">\n <image\n mode=\"aspectFit\"\n class=\"place-icon\"\n src=\"https://gw.alipayobjects.com/mdn/rms_cd276b/afts/img/A*5UIUQpKGRcsAAAAAAAAAAABkARQnAQ\"\n >\n </image>\n <text >找站点</text>\n </view>\n </ticket-qr>\n <rules />\n</view>","pages/ticket-detail/ticket-detail.js":"import { tracertTicket } from '../../utils/tracert'\n\nPage({\n data: {\n test: \"222\",\n item:\n {\n date: '6月2日',\n week: \"周日\",\n dispatch: \"09:00\",\n start: \"德力西大楼\",\n startat: \"14:20\",\n end: \"萧山机场\",\n endat: \"16:20\",\n pay: \"12\",\n count: \"1\",\n qrcode: \"https://gw.alipayobjects.com/mdn/rms_cd276b/afts/img/A*QtRYR43wfMoAAAAAAAAAAABkARQnAQ\",\n ticketsStatus: \"车票码暂未生成\",\n ticketsStatusIcon: \"https://gw.alipayobjects.com/mdn/industry_lifee/afts/img/A*amUXRaNeE_MAAAAAAAAAAABkARQnAQ\"\n\n },\n\n activeTab: 0,\n },\n onLoad() {\n tracertTicket.logPv()\n },\n onShow() {\n tracertTicket.expo('c37431')\n tracertTicket.expo('c37430')\n },\n handleTabClick ({ index }) {\n this.setData({\n activeTab: index,\n });\n },\n findStation() {\n tracertTicket.click('c37430.d75516')\n my.navigateTo({\n url: '/pages/find-station/find-station'\n });\n },\n handleReturnTap () {\n my.showActionSheet({\n title: '请您选择退票原因',\n items: ['赶不上', '买错了', '有事做不了', '其他'],\n cancelButtonText: '取消',\n success: (res) => {\n if (res.index !== -1) {\n my.confirm({\n title: '退票',\n content: '共退一张票,退票金额12元',\n confirmButtonText: '确定',\n cancelButtonText: '取消',\n success: (result) => {\n if (result.confirm) {\n my.alert({\n title: `退票成功`,\n });\n }\n },\n });\n }\n },\n });\n },\n handleReturnIconTap () {\n my.alert({\n title: '退票规则',\n content: '正常退票:如何展示多行',\n buttonText: '确定',\n // success: () => {\n // my.alert({\n // title: '用户点击了「我知道了」',\n // });\n // }\n });\n }\n\n});\n","pages/ticket-detail/ticket-detail.json":"{\n \"defaultTitle\": \"车票详情\",\n \"usingComponents\": {\n \"ticket-qr\": \"./components/ticket-qr/ticket-qr\",\n \"rules\": \"./components/rules/rules\",\n \"titlebar-placeholder\": \"/components/titlebar-placeholder/titlebar-placeholder\"\n },\n \"transparentTitle\": \"auto\"\n}","pages/tickets/components/item/item.acss":".banner-container {\n background-image: url(https://gw.alipayobjects.com/mdn/rms_cd276b/afts/img/A*5_LRSK8OWAQAAAAAAAAAAABkARQnAQ);\n background-repeat: no-repeat;\n background-size: cover;\n height: 512rpx;\n position: relative;\n}\n.slogan {\n color: #fff;\n position: absolute;\n left: 50rpx;\n bottom: 240rpx;\n font-style: italic;\n font-size: 20px;\n font-weight: bolder;\n}\n","pages/tickets/components/item/item.axml":" <view a:for=\"{{tabs}}\" class=\"item-container\" >\n <!-- 有颜色的卡片 -->\n <view a:if=\"{{item.iscolorful}}\"> \n <view class=\"top top-style1\" > \n <view class=\"top-time\">\n <view class=\"top-time-date top-time-date-style1\">\n {{item.date}}\n </view>\n <view class=\"top-time-time top-time-time-style1\">\n {{item.time}}发车\n </view>\n </view>\n <view class=\"top-time-status top-time-status-style1\">\n {{item.status}}\n </view>\n </view>\n\n <view class=\"bottom\">\n <view class=\"bottom-top bottom-top-style1\">\n {{item.interval}}·{{item.cartype}}\n {{item.from}}\n <image class=\"bottom-img\" src=\"https://gw.alipayobjects.com/mdn/rms_cd276b/afts/img/A*NvgmRqLRF7EAAAAAAAAAAABkARQnAQ\" />\n {{item.to}}\n </view> \n <view class=\"bottom-bottom\">\n <view class=\"bottom-left\">\n <view class=\"bottom-left-up bottom-left-up-style1\" >\n 上 \n </view> \n <view class=\"left-line\">\n </view> \n <view class=\"bottom-left-down bottom-left-down-style1\" >\n 下\n </view> \n </view> \n <view class=\"bottom-right\">\n <view class=\"bottom-right-start\">\n <view class=\"bottom-right-start-startat bottom-right-start-startat-style1\">\n {{item.startat}} \n </view> \n <view class=\"bottom-right-start-start bottom-right-start-start-style1\">\n {{item.start}}\n </view> \n </view> \n <view class=\"bottom-right-end\">\n <view class=\"bottom-right-end-endat bottom-right-end-endat-style1\">\n {{item.endat}} \n </view> \n <view class=\"bottom-right-end-end bottom-right-end-end-style1\">\n {{item.end}}\n </view> \n </view> \n </view> \n \n </view> \n </view>\n\n </view>\n\n\n <!-- 没有颜色的卡片 -->\n <view a:else> \n <view class=\"top top-style2\" > \n <view class=\"top-time\">\n <view class=\"top-time-date top-time-date-style2\">\n {{item.date}}\n </view>\n <view class=\"top-time-time top-time-time-style2\">\n {{item.time}}发车\n </view>\n </view>\n <view class=\"top-time-status top-time-status2\">\n {{item.status}}\n </view>\n </view>\n\n <view class=\"bottom\">\n <view class=\"bottom-top bottom-top-style2\">\n {{item.interval}}·{{item.cartype}}\n {{item.from}}\n <image class=\"bottom-img\" src=\"https://gw.alipayobjects.com/mdn/rms_cd276b/afts/img/A*NvgmRqLRF7EAAAAAAAAAAABkARQnAQ\" />\n {{item.to}}\n </view> \n <view class=\"bottom-bottom\">\n <view class=\"bottom-left\">\n <view class=\"bottom-left-up bottom-left-up-style2\" >\n 上 \n </view> \n <view class=\"left-line\">\n </view> \n <view class=\"bottom-left-down bottom-left-down-style2\" >\n 下\n </view> \n </view> \n <view class=\"bottom-right\">\n <view class=\"bottom-right-start\">\n <view class=\"bottom-right-start-startat bottom-right-start-startat-style2\">\n {{item.startat}} \n </view> \n <view class=\"bottom-right-start-start bottom-right-start-start-style2\">\n {{item.start}}\n </view> \n </view> \n <view class=\"bottom-right-end\">\n <view class=\"bottom-right-end-endat bottom-right-end-endat-style2\">\n {{item.endat}} \n </view> \n <view class=\"bottom-right-end-end bottom-right-end-end-style2\">\n {{item.end}}\n </view> \n </view> \n </view> \n \n </view> \n \n </view>\n</view>\n\n","pages/tickets/components/item/item.js":"Component({\n mixins: [],\n data: {\n tabs: [\n {\n date: '6月2日今天',\n time: '08:00',\n status: \"已出行\",\n interval: \"早\",\n cartype: \"s100\",\n from: \"良渚\",\n to: \"萧山机场\",\n start: \"德力西大楼\",\n startat: \"14:20\",\n end: \"萧山机场\",\n endat: \"16:20\",\n //根据是否出行,展示不同颜色状态的卡片\n iscolorful: false\n },\n {\n date: '6月2日今天',\n time: '08:00',\n status: \"待出行\",\n interval: \"早\",\n cartype: \"s100\",\n from: \"良渚\",\n to: \"萧山机场\",\n start: \"德力西大楼1\",\n startat: \"14:20\",\n end: \"萧山机场\",\n endat: \"16:20\",\n //根据是否出行,展示不同颜色状态的卡片\n iscolorful: true\n },\n {\n date: '6月2日今天',\n time: '08:00',\n status: \"已出行\",\n interval: \"早\",\n cartype: \"s100\",\n from: \"良渚\",\n to: \"萧山机场\",\n start: \"德力西大楼2\",\n startat: \"14:20\",\n end: \"萧山机场\",\n endat: \"16:20\",\n //根据是否出行,展示不同颜色状态的卡片\n iscolorful: false\n },\n ],\n },\n props: {},\n didMount () { },\n didUpdate () { },\n didUnmount () { },\n methods: {},\n});\n","pages/tickets/components/item/item.json":"{\n \"component\": true\n}","pages/tickets/store.js":"import Store from 'herculex';\n\nexport default new Store({\n connectGlobal: true,\n state: {\n },\n plugins: [],\n mutations: {},\n actions: {\n },\n});\n","pages/tickets/tickets.acss":".tickets-container {\n padding-top: 13rpx;\n}\n.tickets-container .am-tabs-pane-wrap {\n padding: 24rpx 32rpx;\n background-color: #FBFBFB;\n box-sizing: border-box;\n border-top: 1rpx solid #eee;\n}\n.tickets-container .am-tabs-pane-wrap .ticket-container {\n margin-bottom: 24rpx;\n}\n.tickets-container .am-tabs-bar {\n overflow: visible;\n}\n.ticket-tab-class {\n height: 90rpx;\n font-size: 30rpx;\n box-sizing: border-box;\n}\n.ticket-active-class {\n font-weight: bold;\n margin-bottom: 0;\n}\n","pages/tickets/tickets.axml":"<view class=\"tickets-container\">\n <tabs\n tabs=\"{{ tabs }}\"\n showPlus=\"{{ false }}\"\n onTabClick=\"onTicketTabClick\"\n onChange=\"onTicketTabChange\"\n activeTab=\"{{activeTab}}\" \n swipeable=\"{{false}}\"\n tabBarCls=\"ticket-tab-class\"\n activeCls=\"ticket-active-class\"\n >\n <block a:for=\"{{tabs}}\">\n <tab-content \n key=\"{{index}}\" \n tabId=\"{{index}}\" \n activeTab=\"{{activeTab}}\" \n a:if=\"{{index === 0}}\"\n >\n <ticket go=\"ticket\" type=\"finish\" />\n <ticket go=\"ticket\" type=\"start\" />\n <ticket go=\"ticket\" type=\"refund\" />\n </tab-content>\n <tab-content \n key=\"{{index}}\" \n tabId=\"{{index}}\" \n activeTab=\"{{activeTab}}\" \n a:elif=\"{{index === 1}}\"\n >\n <ticket go=\"ticket\" type=\"start\" />\n <ticket go=\"ticket\" type=\"start\" />\n <ticket go=\"ticket\" type=\"start\" />\n </tab-content>\n \n </block>\n </tabs>\n\n \n</view>","pages/tickets/tickets.js":"import { tracertSearch } from '../../utils/tracert'\nimport Store from './store'\n\nPage(Store.register({\n data: {\n tabs: [\n {\n title: '全部车票',\n },\n {\n title: '待出行',\n }\n ],\n activeTab: 1\n },\n onLoad() {\n tracertSearch.logPv()\n },\n onShow() {\n tracertSearch.expo('c37428')\n },\n onTicketTabChange() {\n this.setData()\n },\n\n onTicketTabClick(e) {\n const { index } = e;\n const { activeTab } = this.data;\n if (index !== activeTab) {\n if (index === 0) {\n tracertSearch.expo('c37429')\n } else {\n tracertSearch.expo('c37428')\n }\n this.setData({\n activeTab: index\n });\n }\n \n },\n\n onTicketClick() {\n if (this.data.activeTab === 1) {\n tracertSearch.click('c37428.d75515')\n }\n my.navigateTo({\n url: '../ticket-detail/ticket-detail'\n });\n }\n}));\n","pages/tickets/tickets.json":"{\n \"defaultTitle\": \"车票\",\n \"usingComponents\": {\n \"ticket\": \"/components/ticket/ticket\",\n \"tabs\": \"mini-antui/es/tabs/index\",\n \"tab-content\": \"mini-antui/es/tabs/tab-content/index\"\n }\n}","services/index.js":"import { mockData } from './index.mock';\n\nconst path = '/immig/avatar.json';\n\nexport async function getAvatarInfo(param = {}) {\n // 样例为直接返回mock数据\n return mockData;\n // TODO 在这里进行数据处理\n // 异步请求示例代码\n // const promise = new Promise((resolve, reject) => {\n // my.startLoading();\n // my.httpRequest({\n // url: 'http://httpbin.org/post',\n // method: 'POST',\n // data: {\n // from: '支付宝',\n // production: 'AlipayJSAPI',\n // },\n // dataType: 'json',\n // success: function(res) {\n // resolve(res);\n // my.alert({content: 'success'});\n // },\n // fail: function(res) {\n // reject(res);\n // my.alert({content: 'fail'});\n // },\n // complete: function(res) {\n // my.hideLoading();\n // }\n // });\n // });\n // const data = await promise;\n // return data;\n}\n","services/index.mock.js":"export const mockData = {\n msg: '',\n data: {\n avatarInfo: {\n avatar: 'https://gw.alipayobjects.com/zos/rmsportal/PprtKVXqYZHQzkrBMBua.png',\n name: '王辉',\n idCard: '327372732872****88',\n isShowExit: true,\n },\n },\n success: true,\n code: '',\n};\n","utils/tracert.js":"import TracertTa from 'tracert-ta';\n\nfunction createTracert(spmBPos) {\n return new TracertTa({\n spmAPos: 'a1712',\n spmBPos,\n bizType: 'CITYSERVICE',\n mdata: {\n isvName: '',\n cityCode: '',\n chInfo: ''\n }\n });\n};\n\n// 列表页\nexport const tracertList = createTracert('b15375')\n// 我的 \nexport const tracertMy = createTracert('b15374')\n// 车票详情\nexport const tracertTicket = createTracert('b15373')\n// 车票查询\nexport const tracertSearch = createTracert('b15370')\n// 订单确认\nexport const tracertOrder = createTracert('b15369')\n// 路线详情\nexport const tracertRoute = createTracert('b15368')\n// 发起路线定制页\nexport const tracertCustomer = createTracert('b15367')\n// 路线查询\nexport const tracertRouteSearch = createTracert('b15366')\n// 首页\nexport const tracertHome = createTracert('b15365')"},"dist":[{"ETag":"57D707C40A826946B24CFA2039B1576B","name":"0.json","size":1132530,"type":"json","url":"https://gw.alipayobjects.com/os/herbox/ff468849-5071-4969-8698-c91a0d0c90ac/0.json"}]}