Commit d441a60b61ad3f382b3b66813ba263bf95500b08

Authored by 夏洋涛
1 parent 1dcf8f79
Exists in master

feat: 下拉加载,超链接,支付问题修改

fix: 扫码问题修复
1 import Vue from 'vue' 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 import App from './App.vue' 3 import App from './App.vue'
4 import router from './router' 4 import router from './router'
5 import store from './store' 5 import store from './store'
@@ -44,6 +44,7 @@ Vue @@ -44,6 +44,7 @@ Vue
44 .use(Toast) 44 .use(Toast)
45 .use(Dialog) 45 .use(Dialog)
46 .use(NavBar) 46 .use(NavBar)
  47 + .use(PullRefresh)
47 .use(RadioGroup) 48 .use(RadioGroup)
48 .use(Radio); 49 .use(Radio);
49 Vue.config.productionTip = false; 50 Vue.config.productionTip = false;
src/views/Home/MyClassList.vue
@@ -147,7 +147,7 @@ export default { @@ -147,7 +147,7 @@ export default {
147 } 147 }
148 var basePosition = [this.baseInfo.signLong, this.baseInfo.signLat]; 148 var basePosition = [this.baseInfo.signLong, this.baseInfo.signLat];
149 AMap.convertFrom(basePosition, 'baidu', function (status, result) { 149 AMap.convertFrom(basePosition, 'baidu', function (status, result) {
150 - console.log(result) 150 + console.log('基地定位转换:',result)
151 if (result.info === 'ok') { 151 if (result.info === 'ok') {
152 basePosition = [result.locations[0].lng, result.locations[0].lat]; // Array.<LngLat> 152 basePosition = [result.locations[0].lng, result.locations[0].lat]; // Array.<LngLat>
153 } 153 }
@@ -156,10 +156,12 @@ export default { @@ -156,10 +156,12 @@ export default {
156 message: '请求中...', 156 message: '请求中...',
157 }); 157 });
158 this.getNowPosition((posi) => { //获取当前位置坐标 158 this.getNowPosition((posi) => { //获取当前位置坐标
  159 + console.log('获取当前位置坐标:',posi)
159 this.$toast.clear(); 160 this.$toast.clear();
160 if (posi) { 161 if (posi) {
161 var nowPosition = [posi.position.lng, posi.position.lat]; 162 var nowPosition = [posi.position.lng, posi.position.lat];
162 var distance = AMap.GeometryUtil.distance(nowPosition, basePosition); 163 var distance = AMap.GeometryUtil.distance(nowPosition, basePosition);
  164 + console.log('两点距离:',distance)
163 console.log(parseInt(distance), nowPosition, basePosition) 165 console.log(parseInt(distance), nowPosition, basePosition)
164 if (parseInt(distance) > 500) { 166 if (parseInt(distance) > 500) {
165 this.failShow = true; 167 this.failShow = true;
src/views/Home/component/HomeScan.vue
@@ -12,12 +12,12 @@ export default { @@ -12,12 +12,12 @@ export default {
12 "type": "qrCode" 12 "type": "qrCode"
13 }).then(res => { 13 }).then(res => {
14 console.log(res) 14 console.log(res)
15 - const qrcode = res.qrcode 15 + const qrcode = res.text
16 if(qrcode.length>10){ 16 if(qrcode.length>10){
17 this.$toast.fail('请扫描正确的基地码') 17 this.$toast.fail('请扫描正确的基地码')
18 return; 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 }).catch(err => { 21 }).catch(err => {
22 console.log(err) 22 console.log(err)
23 }) 23 })
src/views/Service/CheckOrder.vue
@@ -248,17 +248,22 @@ export default { @@ -248,17 +248,22 @@ export default {
248 "payWay": 0, 248 "payWay": 0,
249 "productId": this.showCourseData.id, //商品id 249 "productId": this.showCourseData.id, //商品id
250 "quit_url": location.href, 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 onSuccess: res => { 254 onSuccess: res => {
255 console.log(res) 255 console.log(res)
256 localStorage.setItem('outTradeNo', data.trade_no) 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 document.body.appendChild(div) 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 onFail: err => { 268 onFail: err => {
264 console.log('err', err) 269 console.log('err', err)
@@ -267,15 +272,25 @@ export default { @@ -267,15 +272,25 @@ export default {
267 } 272 }
268 }, 273 },
269 // 支付API 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 getOrderStatus (outTradeNo) { 295 getOrderStatus (outTradeNo) {
281 console.log('getOrderStatus') 296 console.log('getOrderStatus')
src/views/Service/ServiceBaseKQ.vue
@@ -10,7 +10,9 @@ @@ -10,7 +10,9 @@
10 </van-swipe> 10 </van-swipe>
11 <img class="card_zzy" src="../../assets/service/card_zzy.png" alt="" @click="handleMyCard"> 11 <img class="card_zzy" src="../../assets/service/card_zzy.png" alt="" @click="handleMyCard">
12 <img class="order_btn" src="../../assets/service/order.png" alt="" @click="handleMyOrder"> 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 </div> 16 </div>
15 </div> 17 </div>
16 <div v-show="tabName=='KQ'"> 18 <div v-show="tabName=='KQ'">
@@ -30,24 +32,34 @@ @@ -30,24 +32,34 @@
30 <div class="top_tool"> 32 <div class="top_tool">
31 <van-search class="search" v-model="search" shape="round" background="transparent" placeholder="搜索活动、研学旅行、服务" @search="onSearch" /> 33 <van-search class="search" v-model="search" shape="round" background="transparent" placeholder="搜索活动、研学旅行、服务" @search="onSearch" />
32 </div> 34 </div>
33 - <div class="redLink">轻纺城小学红色网上游主题教育馆</div> 35 + <div class="redLink" @click="handleRedLink">轻纺城小学红色网上游主题教育馆</div>
34 </van-sticky> 36 </van-sticky>
35 <div class="tabsCard"> 37 <div class="tabsCard">
36 <van-tabs v-model="active" sticky offset-top="24vw" z-index='100' :ellipsis="false" :before-change="beforeChange"> 38 <van-tabs v-model="active" sticky offset-top="24vw" z-index='100' :ellipsis="false" :before-change="beforeChange">
37 <van-tab title="革命遗址"> 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 </van-tab> 43 </van-tab>
40 <van-tab title="文化传承"> 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 </van-tab> 48 </van-tab>
43 <van-tab title="红色军旅"> 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 </van-tab> 53 </van-tab>
46 <van-tab title="乡村振新"> 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 </van-tab> 58 </van-tab>
49 <van-tab title="大好河山"> 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 </van-tab> 63 </van-tab>
52 </van-tabs> 64 </van-tabs>
53 </div> 65 </div>
@@ -84,6 +96,7 @@ export default { @@ -84,6 +96,7 @@ export default {
84 riverList: [], 96 riverList: [],
85 tabName: 'KQ', 97 tabName: 'KQ',
86 campList: [], 98 campList: [],
  99 + loading: false
87 } 100 }
88 }, 101 },
89 watch: { 102 watch: {
@@ -106,6 +119,22 @@ export default { @@ -106,6 +119,22 @@ export default {
106 this.initService() 119 this.initService()
107 }, 120 },
108 methods: { 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 initService () { 138 initService () {
110 this.getUniList() 139 this.getUniList()
111 this.getWeekList() 140 this.getWeekList()
@@ -138,7 +167,6 @@ export default { @@ -138,7 +167,6 @@ export default {
138 "channelCode": "" 167 "channelCode": ""
139 }, 168 },
140 onSuccess: data => { 169 onSuccess: data => {
141 - console.log('data', data)  
142 this.$toast.clear() 170 this.$toast.clear()
143 let uniList = data.data.data; 171 let uniList = data.data.data;
144 for (let i in uniList) { 172 for (let i in uniList) {
@@ -149,7 +177,9 @@ export default { @@ -149,7 +177,9 @@ export default {
149 uniList[i].endDate = this.Moment(uniList[i].endDate).format('YYYY.M.D'); 177 uniList[i].endDate = this.Moment(uniList[i].endDate).format('YYYY.M.D');
150 } 178 }
151 } 179 }
  180 + this.loading = false
152 this.uniList = uniList 181 this.uniList = uniList
  182 + console.log('革命遗址:', data)
153 }, 183 },
154 onFail: err => { 184 onFail: err => {
155 console.log('err', err) 185 console.log('err', err)
@@ -178,7 +208,6 @@ export default { @@ -178,7 +208,6 @@ export default {
178 "channelCode": "" 208 "channelCode": ""
179 }, 209 },
180 onSuccess: data => { 210 onSuccess: data => {
181 - console.log('data', data)  
182 let weekList = data.data.data; 211 let weekList = data.data.data;
183 for (let i in weekList) { 212 for (let i in weekList) {
184 weekList[i].course_labels = weekList[i].course_labels?.split(','); 213 weekList[i].course_labels = weekList[i].course_labels?.split(',');
@@ -188,7 +217,9 @@ export default { @@ -188,7 +217,9 @@ export default {
188 weekList[i].endDate = this.Moment(weekList[i].endDate).format('YYYY.M.D'); 217 weekList[i].endDate = this.Moment(weekList[i].endDate).format('YYYY.M.D');
189 } 218 }
190 } 219 }
  220 + this.loading = false
191 this.weekList = weekList 221 this.weekList = weekList
  222 + console.log('文化传承:', weekList)
192 }, 223 },
193 onFail: err => { 224 onFail: err => {
194 console.log('err', err) 225 console.log('err', err)
@@ -217,7 +248,6 @@ export default { @@ -217,7 +248,6 @@ export default {
217 "channelCode": "" 248 "channelCode": ""
218 }, 249 },
219 onSuccess: data => { 250 onSuccess: data => {
220 - console.log('data', data)  
221 let cityList = data.data.data; 251 let cityList = data.data.data;
222 for (let i in cityList) { 252 for (let i in cityList) {
223 cityList[i].course_labels = cityList[i].course_labels?.split(','); 253 cityList[i].course_labels = cityList[i].course_labels?.split(',');
@@ -227,7 +257,9 @@ export default { @@ -227,7 +257,9 @@ export default {
227 cityList[i].endDate = this.Moment(cityList[i].endDate).format('YYYY.M.D'); 257 cityList[i].endDate = this.Moment(cityList[i].endDate).format('YYYY.M.D');
228 } 258 }
229 } 259 }
  260 + this.loading = false
230 this.cityList = cityList 261 this.cityList = cityList
  262 + console.log('红色军旅:', cityList)
231 }, 263 },
232 onFail: err => { 264 onFail: err => {
233 console.log('err', err) 265 console.log('err', err)
@@ -256,7 +288,6 @@ export default { @@ -256,7 +288,6 @@ export default {
256 "channelCode": "" 288 "channelCode": ""
257 }, 289 },
258 onSuccess: data => { 290 onSuccess: data => {
259 - console.log('data', data)  
260 let selectList = data.data.data; 291 let selectList = data.data.data;
261 for (let i in selectList) { 292 for (let i in selectList) {
262 selectList[i].course_labels = selectList[i].course_labels?.split(','); 293 selectList[i].course_labels = selectList[i].course_labels?.split(',');
@@ -266,7 +297,9 @@ export default { @@ -266,7 +297,9 @@ export default {
266 selectList[i].endDate = this.Moment(selectList[i].endDate).format('YYYY.M.D'); 297 selectList[i].endDate = this.Moment(selectList[i].endDate).format('YYYY.M.D');
267 } 298 }
268 } 299 }
  300 + this.loading = false
269 this.selectList = selectList 301 this.selectList = selectList
  302 + console.log('乡村振新:', selectList)
270 }, 303 },
271 onFail: err => { 304 onFail: err => {
272 console.log('err', err) 305 console.log('err', err)
@@ -295,7 +328,6 @@ export default { @@ -295,7 +328,6 @@ export default {
295 "channelCode": "" 328 "channelCode": ""
296 }, 329 },
297 onSuccess: data => { 330 onSuccess: data => {
298 - console.log('data', data)  
299 let riverList = data.data.data; 331 let riverList = data.data.data;
300 for (let i in riverList) { 332 for (let i in riverList) {
301 riverList[i].course_labels = riverList[i].course_labels?.split(','); 333 riverList[i].course_labels = riverList[i].course_labels?.split(',');
@@ -305,7 +337,9 @@ export default { @@ -305,7 +337,9 @@ export default {
305 riverList[i].endDate = this.Moment(riverList[i].endDate).format('YYYY.M.D'); 337 riverList[i].endDate = this.Moment(riverList[i].endDate).format('YYYY.M.D');
306 } 338 }
307 } 339 }
  340 + this.loading = false
308 this.riverList = riverList 341 this.riverList = riverList
  342 + console.log('大好河山:', riverList)
309 }, 343 },
310 onFail: err => { 344 onFail: err => {
311 console.log('err', err) 345 console.log('err', err)
@@ -335,7 +369,6 @@ export default { @@ -335,7 +369,6 @@ export default {
335 "channelCode": "GZH002" 369 "channelCode": "GZH002"
336 }, 370 },
337 onSuccess: data => { 371 onSuccess: data => {
338 - console.log('data', data)  
339 let campList = data.data.data; 372 let campList = data.data.data;
340 for (let i in campList) { 373 for (let i in campList) {
341 campList[i].course_labels = campList[i].course_labels?.split(','); 374 campList[i].course_labels = campList[i].course_labels?.split(',');
@@ -345,7 +378,9 @@ export default { @@ -345,7 +378,9 @@ export default {
345 campList[i].endDate = this.Moment(campList[i].endDate).format('YYYY.M.D'); 378 campList[i].endDate = this.Moment(campList[i].endDate).format('YYYY.M.D');
346 } 379 }
347 } 380 }
  381 + this.loading = false
348 this.campList = campList 382 this.campList = campList
  383 + console.log('每周一营:', data)
349 }, 384 },
350 onFail: err => { 385 onFail: err => {
351 console.log('err', err) 386 console.log('err', err)
@@ -369,7 +404,7 @@ export default { @@ -369,7 +404,7 @@ export default {
369 // 我的优惠券 404 // 我的优惠券
370 handleMyCard () { 405 handleMyCard () {
371 // this.$toast('暂未开放,敬请期待!'); 406 // this.$toast('暂未开放,敬请期待!');
372 - this.$router.push({ name: 'CardBoxXST', query: { active: 1} }) 407 + this.$router.push({ name: 'CardBoxXST', query: { active: 1 } })
373 }, 408 },
374 formatWeek (week) { 409 formatWeek (week) {
375 return week == 1 ? '周一' : week == 2 ? '周二' : week == 3 ? '周三' : week == 4 ? '周四' : week == 5 ? '周五' : week == 6 ? '周六' : week == 0 ? '周日' : ''; 410 return week == 1 ? '周一' : week == 2 ? '周二' : week == 3 ? '周三' : week == 4 ? '周四' : week == 5 ? '周五' : week == 6 ? '周六' : week == 0 ? '周日' : '';
@@ -378,6 +413,10 @@ export default { @@ -378,6 +413,10 @@ export default {
378 handleBanner () { 413 handleBanner () {
379 location.href = 'https://mp.weixin.qq.com/s/a4N3xr2nXZ-aG3OEakv-Dg' 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 components: { 421 components: {
383 Tabbar4, 422 Tabbar4,
@@ -491,7 +530,6 @@ export default { @@ -491,7 +530,6 @@ export default {
491 right: 20px; 530 right: 20px;
492 z-index: 99; 531 z-index: 99;
493 } 532 }
494 -  
495 } 533 }
496 534
497 ::v-deep .van-search__content { 535 ::v-deep .van-search__content {
@@ -582,11 +620,11 @@ export default { @@ -582,11 +620,11 @@ export default {
582 font-size: 44px; 620 font-size: 44px;
583 } 621 }
584 } 622 }
585 - .van-tab{ 623 + .van-tab {
586 font-size: 40px; 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,7 +135,7 @@ export default {
135 } 135 }
136 } 136 }
137 .cardBox_title { 137 .cardBox_title {
138 - height: 10vw; 138 + min-height: 10vw;
139 width: 100%; 139 width: 100%;
140 padding: 0 3vw; 140 padding: 0 3vw;
141 box-sizing: border-box; 141 box-sizing: border-box;
@@ -147,7 +147,7 @@ export default { @@ -147,7 +147,7 @@ export default {
147 align-items: center; 147 align-items: center;
148 148
149 .cardBox_title_red { 149 .cardBox_title_red {
150 - width: 15vw; 150 + width: 20vw;
151 color: red; 151 color: red;
152 text-align: right; 152 text-align: right;
153 } 153 }