Commit d441a60b61ad3f382b3b66813ba263bf95500b08
1 parent
1dcf8f79
Exists in
master
feat: 下拉加载,超链接,支付问题修改
fix: 扫码问题修复
Showing
6 changed files
with
95 additions
and
39 deletions
Show diff stats
src/main.js
1 | 1 | import Vue from 'vue' |
2 | -import { Popup, Toast, Picker, Tag, Tab, Tabs, Area, Search, Swipe, SwipeItem, Cell, List, Collapse, CollapseItem, Button, Field, Icon, Sticky, DropdownMenu, DropdownItem, Rate, Calendar, Checkbox, Empty, Lazyload, Radio, RadioGroup, CellGroup, Dialog, CheckboxGroup, NavBar } from 'vant'; | |
2 | +import { Popup, Toast, Picker, Tag, Tab, Tabs, Area, Search, Swipe, SwipeItem, Cell, List, Collapse, CollapseItem, Button, Field, Icon, Sticky, DropdownMenu, DropdownItem, Rate, Calendar, Checkbox, Empty, Lazyload, Radio, RadioGroup, CellGroup, Dialog, CheckboxGroup, NavBar, PullRefresh } from 'vant'; | |
3 | 3 | import App from './App.vue' |
4 | 4 | import router from './router' |
5 | 5 | import store from './store' |
... | ... | @@ -44,6 +44,7 @@ Vue |
44 | 44 | .use(Toast) |
45 | 45 | .use(Dialog) |
46 | 46 | .use(NavBar) |
47 | + .use(PullRefresh) | |
47 | 48 | .use(RadioGroup) |
48 | 49 | .use(Radio); |
49 | 50 | Vue.config.productionTip = false; | ... | ... |
src/views/Home/MyClassList.vue
... | ... | @@ -147,7 +147,7 @@ export default { |
147 | 147 | } |
148 | 148 | var basePosition = [this.baseInfo.signLong, this.baseInfo.signLat]; |
149 | 149 | AMap.convertFrom(basePosition, 'baidu', function (status, result) { |
150 | - console.log(result) | |
150 | + console.log('基地定位转换:',result) | |
151 | 151 | if (result.info === 'ok') { |
152 | 152 | basePosition = [result.locations[0].lng, result.locations[0].lat]; // Array.<LngLat> |
153 | 153 | } |
... | ... | @@ -156,10 +156,12 @@ export default { |
156 | 156 | message: '请求中...', |
157 | 157 | }); |
158 | 158 | this.getNowPosition((posi) => { //获取当前位置坐标 |
159 | + console.log('获取当前位置坐标:',posi) | |
159 | 160 | this.$toast.clear(); |
160 | 161 | if (posi) { |
161 | 162 | var nowPosition = [posi.position.lng, posi.position.lat]; |
162 | 163 | var distance = AMap.GeometryUtil.distance(nowPosition, basePosition); |
164 | + console.log('两点距离:',distance) | |
163 | 165 | console.log(parseInt(distance), nowPosition, basePosition) |
164 | 166 | if (parseInt(distance) > 500) { |
165 | 167 | this.failShow = true; | ... | ... |
src/views/Home/component/HomeScan.vue
... | ... | @@ -12,12 +12,12 @@ export default { |
12 | 12 | "type": "qrCode" |
13 | 13 | }).then(res => { |
14 | 14 | console.log(res) |
15 | - const qrcode = res.qrcode | |
15 | + const qrcode = res.text | |
16 | 16 | if(qrcode.length>10){ |
17 | 17 | this.$toast.fail('请扫描正确的基地码') |
18 | 18 | return; |
19 | 19 | } |
20 | - this.$router.push({ name: 'MyClassList', query: { qrresult: res.qrcode } }) | |
20 | + this.$router.push({ name: 'MyClassList', query: { qrresult: res.text } }) | |
21 | 21 | }).catch(err => { |
22 | 22 | console.log(err) |
23 | 23 | }) | ... | ... |
src/views/Service/CheckOrder.vue
... | ... | @@ -248,17 +248,22 @@ export default { |
248 | 248 | "payWay": 0, |
249 | 249 | "productId": this.showCourseData.id, //商品id |
250 | 250 | "quit_url": location.href, |
251 | - "subject": "研学产品", | |
252 | - "totalFee": "0.01", | |
251 | + "subject": this.showCourseData.course_name + '_' + this.date, | |
252 | + "totalFee": this.selectCombo.actualPrice * 1000 * this.count / 1000 | |
253 | 253 | }, |
254 | 254 | onSuccess: res => { |
255 | 255 | console.log(res) |
256 | 256 | localStorage.setItem('outTradeNo', data.trade_no) |
257 | - // res.data.data默认是我们拿到的form代码 | |
258 | - const div = document.createElement('div') | |
259 | - div.innerHTML = res.data.message | |
257 | + // this.BridgePay(res.data.message) | |
258 | + let divForm = document.getElementsByTagName('divform') | |
259 | + if (divForm.length) { | |
260 | + document.body.removeChild(divForm[0]) | |
261 | + } | |
262 | + const div = document.createElement('divform') | |
263 | + div.innerHTML = res.data.message // res.data就是sb支付宝返回给你的form | |
260 | 264 | document.body.appendChild(div) |
261 | - document.forms[0].submit() //重要,这个才是点击跳页面的核心 | |
265 | + // document.forms[0].setAttribute('target', '_blank') // 加了_blank可能出问题所以我注释了 | |
266 | + document.forms[0].submit() | |
262 | 267 | }, |
263 | 268 | onFail: err => { |
264 | 269 | console.log('err', err) |
... | ... | @@ -267,15 +272,25 @@ export default { |
267 | 272 | } |
268 | 273 | }, |
269 | 274 | // 支付API |
270 | - BridgePay (credential) { | |
271 | - var payMsg = { | |
272 | - platform: 1, | |
273 | - arg: { | |
274 | - "credential": credential, | |
275 | - "inSandBox": false | |
276 | - } | |
277 | - }; | |
278 | - }, | |
275 | + // BridgePay (credential) { | |
276 | + // var payMsg = { | |
277 | + // platform: 1, | |
278 | + // arg: { | |
279 | + // "credential": credential, | |
280 | + // "inSandBox": false | |
281 | + // } | |
282 | + // }; | |
283 | + // ZWJSBridge.pay(payMsg).then((result) => { | |
284 | + | |
285 | + // alert('支付成功!'); | |
286 | + // console.log('#### ZWJSBridge.pay() result:' + result); | |
287 | + | |
288 | + // }).catch((error) => { | |
289 | + // var errorMsg = JSON.stringify(error); | |
290 | + // alert('支付失败:' + errorMsg); | |
291 | + // console.log('#### ZWJSBridge.pay() error:' + error); | |
292 | + // }); | |
293 | + // }, | |
279 | 294 | //判断是否为支付会跳,查询订单状态 |
280 | 295 | getOrderStatus (outTradeNo) { |
281 | 296 | console.log('getOrderStatus') | ... | ... |
src/views/Service/ServiceBaseKQ.vue
... | ... | @@ -10,7 +10,9 @@ |
10 | 10 | </van-swipe> |
11 | 11 | <img class="card_zzy" src="../../assets/service/card_zzy.png" alt="" @click="handleMyCard"> |
12 | 12 | <img class="order_btn" src="../../assets/service/order.png" alt="" @click="handleMyOrder"> |
13 | - <ServiceListFour :list="campList" :notab="false"></ServiceListFour> | |
13 | + <van-pull-refresh v-model="loading" @refresh="onRefresh('campList')"> | |
14 | + <ServiceListFour :list="campList" :notab="false"></ServiceListFour> | |
15 | + </van-pull-refresh> | |
14 | 16 | </div> |
15 | 17 | </div> |
16 | 18 | <div v-show="tabName=='KQ'"> |
... | ... | @@ -30,24 +32,34 @@ |
30 | 32 | <div class="top_tool"> |
31 | 33 | <van-search class="search" v-model="search" shape="round" background="transparent" placeholder="搜索活动、研学旅行、服务" @search="onSearch" /> |
32 | 34 | </div> |
33 | - <div class="redLink">轻纺城小学红色网上游主题教育馆</div> | |
35 | + <div class="redLink" @click="handleRedLink">轻纺城小学红色网上游主题教育馆</div> | |
34 | 36 | </van-sticky> |
35 | 37 | <div class="tabsCard"> |
36 | 38 | <van-tabs v-model="active" sticky offset-top="24vw" z-index='100' :ellipsis="false" :before-change="beforeChange"> |
37 | 39 | <van-tab title="革命遗址"> |
38 | - <ServiceListThird :list="uniList" :notab="true"></ServiceListThird> | |
40 | + <van-pull-refresh v-model="loading" @refresh="onRefresh('uniList')"> | |
41 | + <ServiceListThird :list="uniList" :notab="true"></ServiceListThird> | |
42 | + </van-pull-refresh> | |
39 | 43 | </van-tab> |
40 | 44 | <van-tab title="文化传承"> |
41 | - <ServiceListThird :list="weekList" :notab="true"></ServiceListThird> | |
45 | + <van-pull-refresh v-model="loading" @refresh="onRefresh('weekList')"> | |
46 | + <ServiceListThird :list="weekList" :notab="true"></ServiceListThird> | |
47 | + </van-pull-refresh> | |
42 | 48 | </van-tab> |
43 | 49 | <van-tab title="红色军旅"> |
44 | - <ServiceListThird :list="cityList" :notab="true"></ServiceListThird> | |
50 | + <van-pull-refresh v-model="loading" @refresh="onRefresh('cityList')"> | |
51 | + <ServiceListThird :list="cityList" :notab="true"></ServiceListThird> | |
52 | + </van-pull-refresh> | |
45 | 53 | </van-tab> |
46 | 54 | <van-tab title="乡村振新"> |
47 | - <ServiceListThird :list="selectList" :notab="true"></ServiceListThird> | |
55 | + <van-pull-refresh v-model="loading" @refresh="onRefresh('selectList')"> | |
56 | + <ServiceListThird :list="selectList" :notab="true"></ServiceListThird> | |
57 | + </van-pull-refresh> | |
48 | 58 | </van-tab> |
49 | 59 | <van-tab title="大好河山"> |
50 | - <ServiceListThird :list="riverList" :notab="true"></ServiceListThird> | |
60 | + <van-pull-refresh v-model="loading" @refresh="onRefresh('riverList')"> | |
61 | + <ServiceListThird :list="riverList" :notab="true"></ServiceListThird> | |
62 | + </van-pull-refresh> | |
51 | 63 | </van-tab> |
52 | 64 | </van-tabs> |
53 | 65 | </div> |
... | ... | @@ -84,6 +96,7 @@ export default { |
84 | 96 | riverList: [], |
85 | 97 | tabName: 'KQ', |
86 | 98 | campList: [], |
99 | + loading: false | |
87 | 100 | } |
88 | 101 | }, |
89 | 102 | watch: { |
... | ... | @@ -106,6 +119,22 @@ export default { |
106 | 119 | this.initService() |
107 | 120 | }, |
108 | 121 | methods: { |
122 | + onRefresh (list) { | |
123 | + if(list=='campList'){ | |
124 | + this.getCampList() | |
125 | + }else if(list=='uniList'){ | |
126 | + this.getUniList() | |
127 | + }else if(list=='weekList'){ | |
128 | + this.getWeekList() | |
129 | + }else if(list=='cityList'){ | |
130 | + this.getCityList() | |
131 | + }else if(list=='selectList'){ | |
132 | + this.getSelectList() | |
133 | + }else if(list=='riverList'){ | |
134 | + this.getRiverList() | |
135 | + } | |
136 | + | |
137 | + }, | |
109 | 138 | initService () { |
110 | 139 | this.getUniList() |
111 | 140 | this.getWeekList() |
... | ... | @@ -138,7 +167,6 @@ export default { |
138 | 167 | "channelCode": "" |
139 | 168 | }, |
140 | 169 | onSuccess: data => { |
141 | - console.log('data', data) | |
142 | 170 | this.$toast.clear() |
143 | 171 | let uniList = data.data.data; |
144 | 172 | for (let i in uniList) { |
... | ... | @@ -149,7 +177,9 @@ export default { |
149 | 177 | uniList[i].endDate = this.Moment(uniList[i].endDate).format('YYYY.M.D'); |
150 | 178 | } |
151 | 179 | } |
180 | + this.loading = false | |
152 | 181 | this.uniList = uniList |
182 | + console.log('革命遗址:', data) | |
153 | 183 | }, |
154 | 184 | onFail: err => { |
155 | 185 | console.log('err', err) |
... | ... | @@ -178,7 +208,6 @@ export default { |
178 | 208 | "channelCode": "" |
179 | 209 | }, |
180 | 210 | onSuccess: data => { |
181 | - console.log('data', data) | |
182 | 211 | let weekList = data.data.data; |
183 | 212 | for (let i in weekList) { |
184 | 213 | weekList[i].course_labels = weekList[i].course_labels?.split(','); |
... | ... | @@ -188,7 +217,9 @@ export default { |
188 | 217 | weekList[i].endDate = this.Moment(weekList[i].endDate).format('YYYY.M.D'); |
189 | 218 | } |
190 | 219 | } |
220 | + this.loading = false | |
191 | 221 | this.weekList = weekList |
222 | + console.log('文化传承:', weekList) | |
192 | 223 | }, |
193 | 224 | onFail: err => { |
194 | 225 | console.log('err', err) |
... | ... | @@ -217,7 +248,6 @@ export default { |
217 | 248 | "channelCode": "" |
218 | 249 | }, |
219 | 250 | onSuccess: data => { |
220 | - console.log('data', data) | |
221 | 251 | let cityList = data.data.data; |
222 | 252 | for (let i in cityList) { |
223 | 253 | cityList[i].course_labels = cityList[i].course_labels?.split(','); |
... | ... | @@ -227,7 +257,9 @@ export default { |
227 | 257 | cityList[i].endDate = this.Moment(cityList[i].endDate).format('YYYY.M.D'); |
228 | 258 | } |
229 | 259 | } |
260 | + this.loading = false | |
230 | 261 | this.cityList = cityList |
262 | + console.log('红色军旅:', cityList) | |
231 | 263 | }, |
232 | 264 | onFail: err => { |
233 | 265 | console.log('err', err) |
... | ... | @@ -256,7 +288,6 @@ export default { |
256 | 288 | "channelCode": "" |
257 | 289 | }, |
258 | 290 | onSuccess: data => { |
259 | - console.log('data', data) | |
260 | 291 | let selectList = data.data.data; |
261 | 292 | for (let i in selectList) { |
262 | 293 | selectList[i].course_labels = selectList[i].course_labels?.split(','); |
... | ... | @@ -266,7 +297,9 @@ export default { |
266 | 297 | selectList[i].endDate = this.Moment(selectList[i].endDate).format('YYYY.M.D'); |
267 | 298 | } |
268 | 299 | } |
300 | + this.loading = false | |
269 | 301 | this.selectList = selectList |
302 | + console.log('乡村振新:', selectList) | |
270 | 303 | }, |
271 | 304 | onFail: err => { |
272 | 305 | console.log('err', err) |
... | ... | @@ -295,7 +328,6 @@ export default { |
295 | 328 | "channelCode": "" |
296 | 329 | }, |
297 | 330 | onSuccess: data => { |
298 | - console.log('data', data) | |
299 | 331 | let riverList = data.data.data; |
300 | 332 | for (let i in riverList) { |
301 | 333 | riverList[i].course_labels = riverList[i].course_labels?.split(','); |
... | ... | @@ -305,7 +337,9 @@ export default { |
305 | 337 | riverList[i].endDate = this.Moment(riverList[i].endDate).format('YYYY.M.D'); |
306 | 338 | } |
307 | 339 | } |
340 | + this.loading = false | |
308 | 341 | this.riverList = riverList |
342 | + console.log('大好河山:', riverList) | |
309 | 343 | }, |
310 | 344 | onFail: err => { |
311 | 345 | console.log('err', err) |
... | ... | @@ -335,7 +369,6 @@ export default { |
335 | 369 | "channelCode": "GZH002" |
336 | 370 | }, |
337 | 371 | onSuccess: data => { |
338 | - console.log('data', data) | |
339 | 372 | let campList = data.data.data; |
340 | 373 | for (let i in campList) { |
341 | 374 | campList[i].course_labels = campList[i].course_labels?.split(','); |
... | ... | @@ -345,7 +378,9 @@ export default { |
345 | 378 | campList[i].endDate = this.Moment(campList[i].endDate).format('YYYY.M.D'); |
346 | 379 | } |
347 | 380 | } |
381 | + this.loading = false | |
348 | 382 | this.campList = campList |
383 | + console.log('每周一营:', data) | |
349 | 384 | }, |
350 | 385 | onFail: err => { |
351 | 386 | console.log('err', err) |
... | ... | @@ -369,7 +404,7 @@ export default { |
369 | 404 | // 我的优惠券 |
370 | 405 | handleMyCard () { |
371 | 406 | // this.$toast('暂未开放,敬请期待!'); |
372 | - this.$router.push({ name: 'CardBoxXST', query: { active: 1} }) | |
407 | + this.$router.push({ name: 'CardBoxXST', query: { active: 1 } }) | |
373 | 408 | }, |
374 | 409 | formatWeek (week) { |
375 | 410 | return week == 1 ? '周一' : week == 2 ? '周二' : week == 3 ? '周三' : week == 4 ? '周四' : week == 5 ? '周五' : week == 6 ? '周六' : week == 0 ? '周日' : ''; |
... | ... | @@ -378,6 +413,10 @@ export default { |
378 | 413 | handleBanner () { |
379 | 414 | location.href = 'https://mp.weixin.qq.com/s/a4N3xr2nXZ-aG3OEakv-Dg' |
380 | 415 | }, |
416 | + handleRedLink () { | |
417 | + location.href = 'https://720yun.com/t/89vkzwd7pfw?scene_id=80780201' | |
418 | + | |
419 | + } | |
381 | 420 | }, |
382 | 421 | components: { |
383 | 422 | Tabbar4, |
... | ... | @@ -491,7 +530,6 @@ export default { |
491 | 530 | right: 20px; |
492 | 531 | z-index: 99; |
493 | 532 | } |
494 | - | |
495 | 533 | } |
496 | 534 | |
497 | 535 | ::v-deep .van-search__content { |
... | ... | @@ -582,11 +620,11 @@ export default { |
582 | 620 | font-size: 44px; |
583 | 621 | } |
584 | 622 | } |
585 | - .van-tab{ | |
623 | + .van-tab { | |
586 | 624 | font-size: 40px; |
587 | 625 | } |
588 | - .van-tab--active{ | |
589 | - font-size: 44px; | |
626 | + .van-tab--active { | |
627 | + font-size: 44px; | |
590 | 628 | } |
591 | 629 | } |
592 | 630 | } | ... | ... |
src/views/Service/component/ServiceListThird.vue
... | ... | @@ -135,7 +135,7 @@ export default { |
135 | 135 | } |
136 | 136 | } |
137 | 137 | .cardBox_title { |
138 | - height: 10vw; | |
138 | + min-height: 10vw; | |
139 | 139 | width: 100%; |
140 | 140 | padding: 0 3vw; |
141 | 141 | box-sizing: border-box; |
... | ... | @@ -147,7 +147,7 @@ export default { |
147 | 147 | align-items: center; |
148 | 148 | |
149 | 149 | .cardBox_title_red { |
150 | - width: 15vw; | |
150 | + width: 20vw; | |
151 | 151 | color: red; |
152 | 152 | text-align: right; |
153 | 153 | } | ... | ... |