Commit 25203cbb34ce222f76742e27f3c288f9468ae7e4

Authored by liuqimichale
1 parent 7a016595

15分钟免费时长

src/api/parkRecord/parkRecord.js
@@ -25,3 +25,16 @@ export function parkingQuery(params) { @@ -25,3 +25,16 @@ export function parkingQuery(params) {
25 } 25 }
26 26
27 27
  28 +export function appApplyParkOut(params) { // 0元出场
  29 + return request({
  30 + url: 'appAccountPay/appApplyParkOut',
  31 + method: 'post',
  32 + data: params
  33 + })
  34 +}
  35 +
  36 +
  37 +
  38 +
  39 +
  40 +
src/components/parkRecord.vue
@@ -15,7 +15,7 @@ @@ -15,7 +15,7 @@
15 <div v-show="currentTabActive==0"> 15 <div v-show="currentTabActive==0">
16 16
17 <div v-if="parkingData.length>0"> 17 <div v-if="parkingData.length>0">
18 - <p class="free-tip" v-if="parkingData[0].parkDuration<=900">停车30分钟内无需缴费,请直接离场。</p> 18 + <p class="free-tip" v-if="parkingData[0].parkDuration<=900">停车15分钟内无需缴费,请直接离场。</p>
19 19
20 <div class="cost-main" v-for="i in parkingData"> 20 <div class="cost-main" v-for="i in parkingData">
21 <ul class="cost-header"> 21 <ul class="cost-header">
@@ -34,7 +34,7 @@ @@ -34,7 +34,7 @@
34 <p>停车时长:{{ $utils.dateFormat(i.parkDuration)}}</p> 34 <p>停车时长:{{ $utils.dateFormat(i.parkDuration)}}</p>
35 <div class="out-wrap"> 35 <div class="out-wrap">
36 <p class="mon-wrap">¥{{(i.unPayFee/100).toFixed(2)}}</p> 36 <p class="mon-wrap">¥{{(i.unPayFee/100).toFixed(2)}}</p>
37 - <p class="out-btn" @click="toPayCurrent(i)" v-if="parkingData[0].parkDuration>900">出场缴费</p> 37 + <p class="out-btn" @click="toPayCurrent(i,parkingData[0].parkDuration)">出场缴费</p>
38 </div> 38 </div>
39 </div> 39 </div>
40 </div> 40 </div>
@@ -47,9 +47,9 @@ @@ -47,9 +47,9 @@
47 47
48 48
49 <!--历史缴费--> 49 <!--历史缴费-->
50 - <div v-show="currentTabActive==1" class="history-con" > 50 + <div v-show="currentTabActive==1" class="history-con">
51 <div v-if="historyList.length>0" style="height: 100%;"> 51 <div v-if="historyList.length>0" style="height: 100%;">
52 - <div class="history-body" > 52 + <div class="history-body">
53 <p class="money-all">总欠费金额: 53 <p class="money-all">总欠费金额:
54 <span>¥{{(allMoney/100).toFixed(2)}}</span> 54 <span>¥{{(allMoney/100).toFixed(2)}}</span>
55 </p> 55 </p>
@@ -120,11 +120,23 @@ @@ -120,11 +120,23 @@
120 </div> 120 </div>
121 <span slot="button">知道了</span> 121 <span slot="button">知道了</span>
122 </modal-alert> 122 </modal-alert>
  123 +
  124 +
  125 + <modal-alert ref="zeroAlert">
  126 + <div class="trave-tip-content txt-l" slot="content">
  127 + <div class="confirm-text">
  128 + <p>停车15分钟内无需缴费,请申请离场。</p>
  129 + </div>
  130 + </div>
  131 + <span slot="button">知道了</span>
  132 + </modal-alert>
  133 +
  134 +
123 </div> 135 </div>
124 </template> 136 </template>
125 137
126 <script> 138 <script>
127 -import { parkRecordList, historyQuery, parkingQuery } from '@/api/parkRecord/parkRecord.js' 139 +import {parkRecordList, historyQuery, parkingQuery, appApplyParkOut} from '@/api/parkRecord/parkRecord.js'
128 import axios from 'axios' 140 import axios from 'axios'
129 141
130 export default { 142 export default {
@@ -138,19 +150,19 @@ export default { @@ -138,19 +150,19 @@ export default {
138 carColor: 1,// 车牌颜色 150 carColor: 1,// 车牌颜色
139 currentTabActive: 1, // 显示当前哪个 151 currentTabActive: 1, // 显示当前哪个
140 carNumber: '', // 车牌号码 152 carNumber: '', // 车牌号码
141 - parkingData:[], // 在停数据 153 + parkingData: [], // 在停数据
142 parkList: [], // 停车记录数据 154 parkList: [], // 停车记录数据
143 - historyList:[ // 历史欠费数据  
144 - {money:100,checked:false, id: 1},  
145 - ] ,  
146 - allChecked:false, // 全部选择事件  
147 - allMoney:0, // 欠费所有的费用  
148 - historyCheckedLen:0, //选中了几笔交易 155 + historyList: [ // 历史欠费数据
  156 + { money: 100, checked: false, id: 1 },
  157 + ],
  158 + allChecked: false, // 全部选择事件
  159 + allMoney: 0, // 欠费所有的费用
  160 + historyCheckedLen: 0, //选中了几笔交易
149 historyCheckedMon: 0, //选中了待缴纳的金额 161 historyCheckedMon: 0, //选中了待缴纳的金额
150 orderIds: [] // 选中数据的订单 数组 162 orderIds: [] // 选中数据的订单 数组
151 } 163 }
152 }, 164 },
153 - mounted(){ 165 + mounted() {
154 }, 166 },
155 created() { 167 created() {
156 this.carNumber = this.$route.query.carNumber // 获取车牌号 168 this.carNumber = this.$route.query.carNumber // 获取车牌号
@@ -159,7 +171,7 @@ export default { @@ -159,7 +171,7 @@ export default {
159 this.parkRecordList(this.carNumber) 171 this.parkRecordList(this.carNumber)
160 }, 172 },
161 methods: { 173 methods: {
162 - parkRecordList(){ // 获取停车记录数据 174 + parkRecordList() { // 获取停车记录数据
163 var salt = this.$utils.myCommonSalt(32); 175 var salt = this.$utils.myCommonSalt(32);
164 var jsondata = { 176 var jsondata = {
165 app_id: this.$utils.myVarAppid, 177 app_id: this.$utils.myVarAppid,
@@ -185,14 +197,14 @@ export default { @@ -185,14 +197,14 @@ export default {
185 this.parkingData = this.parkList.filter(item => { 197 this.parkingData = this.parkList.filter(item => {
186 return item.parkState == '10' 198 return item.parkState == '10'
187 }) 199 })
188 - if(this.parkingData.length>0){ 200 + if (this.parkingData.length > 0) {
189 this.currentTabActive = 0 201 this.currentTabActive = 0
190 } 202 }
191 console.log(this.parkingData) 203 console.log(this.parkingData)
192 this.historyList = this.parkList.filter(item => { 204 this.historyList = this.parkList.filter(item => {
193 return item.parkState == '20' 205 return item.parkState == '20'
194 }) 206 })
195 - this.historyList.forEach( i => { 207 + this.historyList.forEach(i => {
196 this.allMoney += Number(i.unPayFee) 208 this.allMoney += Number(i.unPayFee)
197 }) 209 })
198 210
@@ -206,37 +218,36 @@ export default { @@ -206,37 +218,36 @@ export default {
206 chooseHandle(i, index) { // 历史欠费单个选择事件 218 chooseHandle(i, index) { // 历史欠费单个选择事件
207 i.checked = !i.checked 219 i.checked = !i.checked
208 let me = this 220 let me = this
209 - if(i.checked ){ //单个选中  
210 - me.historyCheckedLen ++  
211 - if(me.historyCheckedLen == this.historyList.length){ 221 + if (i.checked) { //单个选中
  222 + me.historyCheckedLen++
  223 + if (me.historyCheckedLen == this.historyList.length) {
212 this.allChecked = true 224 this.allChecked = true
213 225
214 } 226 }
215 me.orderIds.push(i.orderId) 227 me.orderIds.push(i.orderId)
216 me.historyCheckedMon += Number(i.unPayFee) 228 me.historyCheckedMon += Number(i.unPayFee)
217 - }else{ //单个不选中 229 + } else { //单个不选中
218 let _i = me.orderIds.indexOf(i.orderId) 230 let _i = me.orderIds.indexOf(i.orderId)
219 - me.orderIds.splice(_i,1) 231 + me.orderIds.splice(_i, 1)
220 this.allChecked = false 232 this.allChecked = false
221 - me.historyCheckedLen -- 233 + me.historyCheckedLen--
222 me.historyCheckedMon -= Number(i.unPayFee) 234 me.historyCheckedMon -= Number(i.unPayFee)
223 } 235 }
224 236
225 -  
226 }, 237 },
227 checkedAll() { // 全选选择事件 238 checkedAll() { // 全选选择事件
228 this.allChecked = !this.allChecked 239 this.allChecked = !this.allChecked
229 - if(this.allChecked){ //全选  
230 - let me = this  
231 - this.historyList.forEach(function(item){ 240 + if (this.allChecked) { //全选
  241 + let me = this
  242 + this.historyList.forEach(function (item) {
232 item.checked = true; 243 item.checked = true;
233 me.orderIds.push(item.orderId) 244 me.orderIds.push(item.orderId)
234 }); 245 });
235 this.historyCheckedMon = this.allMoney 246 this.historyCheckedMon = this.allMoney
236 this.historyCheckedLen = this.historyList.length 247 this.historyCheckedLen = this.historyList.length
237 248
238 - }else{ //反选  
239 - this.historyList.forEach(function(item){ 249 + } else { //反选
  250 + this.historyList.forEach(function (item) {
240 item.checked = false; 251 item.checked = false;
241 252
242 }); 253 });
@@ -245,46 +256,72 @@ export default { @@ -245,46 +256,72 @@ export default {
245 this.orderIds = [] 256 this.orderIds = []
246 } 257 }
247 }, 258 },
248 - toPayCurrent(i){ // 缴纳本次在停费用 259 + toPayCurrent(i, num) { // 缴纳本次在停费用
  260 +
249 var salt = this.$utils.myCommonSalt(32); 261 var salt = this.$utils.myCommonSalt(32);
250 - var jsondata = { 262 +
  263 + var params = {
251 app_id: this.$utils.myVarAppid, 264 app_id: this.$utils.myVarAppid,
252 deviceInfo: this.$utils.myDeviceInfo, 265 deviceInfo: this.$utils.myDeviceInfo,
253 salt: salt, 266 salt: salt,
254 sign_type: "md5", 267 sign_type: "md5",
255 - payType: 4,  
256 - appId: this.$utils.myVxAppId,  
257 orderId: i.orderId, 268 orderId: i.orderId,
258 - terminalSource: '7',  
259 - parkCode: i.parkCode,  
260 - carNumber: this.carNumber, 269 + payOrderType: '101',
  270 + terminalSource: '3',
  271 +
261 } 272 }
262 - jsondata.sign = this.$utils.signObject(jsondata)  
263 - parkingQuery(jsondata).then(result => {  
264 - console.log(result)  
265 - let res = result.data  
266 - let _dis = res.discountFee  
267 - let discountFee = _dis.slice(1,_dis.length-1) 273 + params.sign = this.$utils.signObject(params)
  274 + appApplyParkOut(params).then(response => {
  275 + console.log(response)
268 276
269 - this.$router.push(  
270 - {  
271 - path:'orderPay',  
272 - query:{  
273 - carColor: this.carColor,// 车牌颜色  
274 - arrearageTotalFee: res.orderTotalFee,// 应收  
275 - arrearageDiscFee: discountFee*100,// 优惠  
276 - arrearageActFee: res.orderFee,// 实收  
277 - carNumber: this.carNumber, // 车牌  
278 - paySrcType: 101, //支付的类型 101 是本次 103是历史欠费  
279 - ordeID: i.orderId, //支付的订单号  
280 - appOrderTimeout: res.appOrderTimeout, // 超时描述  
281 - } 277 + if (response.code == '5005') {
  278 + var salt = this.$utils.myCommonSalt(32);
  279 + var jsondata = {
  280 + app_id: this.$utils.myVarAppid,
  281 + deviceInfo: this.$utils.myDeviceInfo,
  282 + salt: salt,
  283 + sign_type: "md5",
  284 + payType: 4,
  285 + appId: this.$utils.myVxAppId,
  286 + orderId: i.orderId,
  287 + terminalSource: '7',
  288 + parkCode: i.parkCode,
  289 + carNumber: this.carNumber,
282 } 290 }
283 - ) 291 + jsondata.sign = this.$utils.signObject(jsondata)
  292 + parkingQuery(jsondata).then(result => {
  293 + console.log(result)
  294 + let res = result.data
  295 + let _dis = res.discountFee
  296 + let discountFee = _dis.slice(1, _dis.length - 1)
  297 +
  298 + this.$router.push(
  299 + {
  300 + path: 'orderPay',
  301 + query: {
  302 + carColor: this.carColor,// 车牌颜色
  303 + arrearageTotalFee: res.orderTotalFee,// 应收
  304 + arrearageDiscFee: discountFee * 100,// 优惠
  305 + arrearageActFee: res.orderFee,// 实收
  306 + carNumber: this.carNumber, // 车牌
  307 + paySrcType: 101, //支付的类型 101 是本次 103是历史欠费
  308 + ordeID: i.orderId, //支付的订单号
  309 + appOrderTimeout: res.appOrderTimeout, // 超时描述
  310 + }
  311 + }
  312 + )
  313 + })
  314 +
  315 + } else {
  316 + //$('.dialog-out').show()
  317 + this.$refs.zeroAlert.open()
  318 + }
  319 +
284 }) 320 })
  321 +
285 }, 322 },
286 toPayHisroryPage() { // 缴纳历史费用 323 toPayHisroryPage() { // 缴纳历史费用
287 - if(this.historyCheckedLen==0){ 324 + if (this.historyCheckedLen == 0) {
288 this.$refs.alert.open() 325 this.$refs.alert.open()
289 return 326 return
290 } 327 }
@@ -315,8 +352,8 @@ export default { @@ -315,8 +352,8 @@ export default {
315 console.log(this.orderIds) 352 console.log(this.orderIds)
316 this.$router.push( 353 this.$router.push(
317 { 354 {
318 - path:'orderPay',  
319 - query:{ 355 + path: 'orderPay',
  356 + query: {
320 carColor: this.carColor,// 车牌颜色 357 carColor: this.carColor,// 车牌颜色
321 arrearageTotalFee: res.arrearageTotalFee,// 应收 358 arrearageTotalFee: res.arrearageTotalFee,// 应收
322 arrearageDiscFee: res.arrearageDiscFee,// 优惠 359 arrearageDiscFee: res.arrearageDiscFee,// 优惠
@@ -331,9 +368,7 @@ export default { @@ -331,9 +368,7 @@ export default {
331 }) 368 })
332 } 369 }
333 }, 370 },
334 - filters: {  
335 -  
336 - } 371 + filters: {}
337 } 372 }
338 </script> 373 </script>
339 374
@@ -435,70 +470,72 @@ export default { @@ -435,70 +470,72 @@ export default {
435 } 470 }
436 } 471 }
437 472
438 - .history-con{ 473 + .history-con {
439 height: calc(100% - 38px); 474 height: calc(100% - 38px);
440 overflow: hidden; 475 overflow: hidden;
441 } 476 }
442 - .history-body{ 477 +
  478 + .history-body {
443 height: calc(100% - 81px); 479 height: calc(100% - 81px);
444 overflow-y: scroll; 480 overflow-y: scroll;
445 } 481 }
446 - .history-footer{ 482 +
  483 + .history-footer {
447 height: 81px; 484 height: 81px;
448 background: #F8F8F8; 485 background: #F8F8F8;
449 } 486 }
450 487
451 - .cost-main-history{ 488 + .cost-main-history {
452 margin-bottom: 10px; 489 margin-bottom: 10px;
453 - background:#fff url("../assets/images/choose.png") no-repeat 10px center; 490 + background: #fff url("../assets/images/choose.png") no-repeat 10px center;
454 background-size: 20px 20px; 491 background-size: 20px 20px;
455 cursor: pointer; 492 cursor: pointer;
456 } 493 }
457 494
458 -  
459 - .isChecked{  
460 - background:#fff url("../assets/images/choosed.png") no-repeat 10px center; 495 + .isChecked {
  496 + background: #fff url("../assets/images/choosed.png") no-repeat 10px center;
461 background-size: 20px 20px; 497 background-size: 20px 20px;
462 } 498 }
463 499
464 - .money-all{ 500 + .money-all {
465 padding-left: 18px; 501 padding-left: 18px;
466 height: 25px; 502 height: 25px;
467 line-height: 25px; 503 line-height: 25px;
468 font-weight: 500; 504 font-weight: 500;
469 background: #FEF8DB; 505 background: #FEF8DB;
470 - span{ 506 + span {
471 color: #BC0202; 507 color: #BC0202;
472 } 508 }
473 } 509 }
474 510
475 - .statistical-data{ 511 + .statistical-data {
476 padding-left: 18px; 512 padding-left: 18px;
477 height: 32px; 513 height: 32px;
478 line-height: 32px; 514 line-height: 32px;
479 background: #E6FAFA; 515 background: #E6FAFA;
480 - span{ 516 + span {
481 color: #D20000; 517 color: #D20000;
482 } 518 }
483 } 519 }
484 - .opration-wrap{ 520 +
  521 + .opration-wrap {
485 padding-left: 18px; 522 padding-left: 18px;
486 height: 49px; 523 height: 49px;
487 line-height: 49px; 524 line-height: 49px;
488 background: #f8f8f8; 525 background: #f8f8f8;
489 display: flex; 526 display: flex;
490 justify-content: space-between; 527 justify-content: space-between;
491 - .check-btn{ 528 + .check-btn {
492 padding-left: 30px; 529 padding-left: 30px;
493 background: url("../assets/images/choose.png") no-repeat 0 center; 530 background: url("../assets/images/choose.png") no-repeat 0 center;
494 background-size: 20px 20px; 531 background-size: 20px 20px;
495 cursor: pointer; 532 cursor: pointer;
496 } 533 }
497 - .isAllChecked{ 534 + .isAllChecked {
498 background: url("../assets/images/choosed.png") no-repeat 0 center; 535 background: url("../assets/images/choosed.png") no-repeat 0 center;
499 background-size: 20px 20px; 536 background-size: 20px 20px;
500 } 537 }
501 - .settle-btn{ 538 + .settle-btn {
502 width: 106px; 539 width: 106px;
503 height: 49px; 540 height: 49px;
504 background: linear-gradient(145deg, #2783E9 0%, #227ADC 100%); 541 background: linear-gradient(145deg, #2783E9 0%, #227ADC 100%);