ソースを参照

feat(KIP-9217):ui revamp 停车缴费

lock.qiu@kerryprops.com 2 年 前
コミット
c5cf3a00ad
36 ファイル変更372 行追加88 行削除
  1. 15 15
      public/index.html
  2. 10 0
      src/pages/parkingFee/mixins/parkingFee.js
  3. 10 0
      src/pages/parkingFee/mixins/parkingFeeCoupon.js
  4. 11 0
      src/pages/parkingFee/mixins/parkingFeeDetail.js
  5. 10 0
      src/pages/parkingFee/mixins/parkingFeeDetailSuccess.js
  6. 1 4
      src/pages/parkingFee/mixins/parkingFeeDiscounts.js
  7. 10 0
      src/pages/parkingFee/mixins/parkingFeeHint/parkingFeeHint.js
  8. 10 0
      src/pages/parkingFee/mixins/parkingFeeList.js
  9. 10 0
      src/pages/parkingFee/mixins/parkingFeePaperCoupon.js
  10. 10 0
      src/pages/parkingFee/mixins/parkingFeePayment.js
  11. 10 0
      src/pages/parkingFee/mixins/parkingFeeSuccess.js
  12. 10 0
      src/pages/parkingFee/mixins/parkingReceipt/parkingApplication.js
  13. 10 1
      src/pages/parkingFee/mixins/parkingReceipt/parkingChangeHeader.js
  14. 10 0
      src/pages/parkingFee/mixins/parkingReceipt/parkingChooseHeader.js
  15. 10 0
      src/pages/parkingFee/mixins/parkingReceipt/parkingHeaderDetail.js
  16. 10 0
      src/pages/parkingFee/mixins/parkingReceipt/parkingInvoice.js
  17. 10 0
      src/pages/parkingFee/mixins/parkingReceipt/parkingInvoiceImage.js
  18. 10 0
      src/pages/parkingFee/mixins/parkingReceipt/parkingOrderDetail.js
  19. 10 0
      src/pages/parkingFee/mixins/parkingReceipt/parkingReceipt.js
  20. 10 0
      src/pages/parkingFee/mixins/vehicleAddOrEdit.js
  21. 10 0
      src/pages/parkingFee/mixins/vehicleManagement.js
  22. 41 13
      src/pages/parkingFee/parkingFee.vue
  23. 39 3
      src/pages/parkingFee/parkingFeeCoupon.vue
  24. 27 4
      src/pages/parkingFee/parkingFeeDetail.vue
  25. 1 1
      src/pages/parkingFee/parkingFeeList.vue
  26. 6 6
      src/pages/parkingFee/parkingReceipt/parkingReceipt.vue
  27. 8 0
      src/pages/parkingFee/static/images/coupon-active.svg
  28. 4 0
      src/pages/parkingFee/static/images/coupon-noselect.svg
  29. BIN
      src/pages/parkingFee/static/images/white_delete.png
  30. BIN
      src/pages/parkingFee/static/images/white_detail.png
  31. BIN
      src/pages/parkingFee/static/images/white_edit.png
  32. 15 9
      src/pages/parkingFee/vehicleAddOrEdit.vue
  33. 11 19
      src/pages/parkingFee/vehicleManagement.vue
  34. 10 3
      src/store/order/points.js
  35. 1 1
      src/store/order/utils.js
  36. 2 9
      vue.config.js

+ 15 - 15
public/index.html

@@ -33,21 +33,21 @@
   <script>
     // const debug = window.localStorage.getItem('H5_DEBUG');
     // 开发环境和qa环境 打开debug
-    const debug = /dev-|qa-/.test(window?.injectConfig?.api) || window.location.href.indexOf(8080) > -1;
-    if (debug) {
-      const script = document.createElement('script');
-      script.src = 'https://unpkg.com/vconsole@latest/dist/vconsole.min.js';
-      document.head.appendChild(script);
-      script.addEventListener('load', () => {
-        setTimeout(() => {
-          window.vConsole = new window.VConsole();
-        }, 200);
-      });
-    }
-    if ( /(iPhone|iPad|iPod|iOS)/i.test(navigator.userAgent) ) {
-      // https://developers.weixin.qq.com/community/develop/doc/000ae2cb950808f90d8bc415551800
-      window.H5_LAUNCH_URL = location.href;
-    }
+    // const debug = /dev-|qa-/.test(window?.injectConfig?.api) || window.location.href.indexOf(8080) > -1;
+    // if (debug) {
+    //   const script = document.createElement('script');
+    //   script.src = 'https://unpkg.com/vconsole@latest/dist/vconsole.min.js';
+    //   document.head.appendChild(script);
+    //   script.addEventListener('load', () => {
+    //     setTimeout(() => {
+    //       window.vConsole = new window.VConsole();
+    //     }, 200);
+    //   });
+    // }
+    // if ( /(iPhone|iPad|iPod|iOS)/i.test(navigator.userAgent) ) {
+    //   // https://developers.weixin.qq.com/community/develop/doc/000ae2cb950808f90d8bc415551800
+    //   window.H5_LAUNCH_URL = location.href;
+    // }
   </script>
   <script>
       // var coverSupport = 'CSS' in window && typeof CSS.supports === 'function' && (CSS.supports('top: env(a)') || CSS.supports('top: constant(a)'))

+ 10 - 0
src/pages/parkingFee/mixins/parkingFee.js

@@ -112,6 +112,16 @@ export default {
         title: '停车缴费',
       });
     }, 300);
+    setTimeout(() => {
+      window?.toWXSendMsg({
+        type: 'uni_func',
+        funcName: 'setNavigationBarColor',
+        options: {
+          frontColor: '#000000',
+          backgroundColor: '#FBFCFF',
+        },
+      });
+    }, 500)
     const platform = getPlatform();
     if (platform === 'micromessenger') {
       await initWxJsSdkConfig(['checkJsApi', 'scanQRCode']);

+ 10 - 0
src/pages/parkingFee/mixins/parkingFeeCoupon.js

@@ -47,6 +47,16 @@ export default {
         this.launchPathInit();
       }
     }, 300);
+    setTimeout(() => {
+      window?.toWXSendMsg({
+        type: 'uni_func',
+        funcName: 'setNavigationBarColor',
+        options: {
+          frontColor: '#000000',
+          backgroundColor: '#FBFCFF',
+        },
+      });
+    }, 500)
     this.pageInit();
   },
   methods: {

+ 11 - 0
src/pages/parkingFee/mixins/parkingFeeDetail.js

@@ -37,8 +37,19 @@ export default {
         title: '停车支付',
       });
     }, 300);
+    setTimeout(() => {
+      window?.toWXSendMsg({
+        type: 'uni_func',
+        funcName: 'setNavigationBarColor',
+        options: {
+          frontColor: '#000000',
+          backgroundColor: '#FBFCFF',
+        },
+      });
+    }, 500)
     this.pageInit();
   },
+  
   computed: {
     ...mapState({
       orderDetail: (state) => state.order.orderDetail,

+ 10 - 0
src/pages/parkingFee/mixins/parkingFeeDetailSuccess.js

@@ -19,6 +19,16 @@ export default {
         title: '缴费详情',
       });
     }, 300);
+    setTimeout(() => {
+      window?.toWXSendMsg({
+        type: 'uni_func',
+        funcName: 'setNavigationBarColor',
+        options: {
+          frontColor: '#000000',
+          backgroundColor: '#FBFCFF',
+        },
+      });
+    }, 500)
     this.orderNo = this.$route.query.orderNo;
     this.getData();
   },

+ 1 - 4
src/pages/parkingFee/mixins/parkingFeeDiscounts.js

@@ -104,15 +104,12 @@ export default {
             this.consume = {
               ...this.consume,
               discountTime: this.reduceHours,
+              discountFee: this.reduceHours * this.orderDetail.parkingRule.hourPrice,
               selected: this.checkedList.indexOf(key) > -1
             }
-            if ( this.consume.selected ) {
-              this.consume.discountFee = this.reduceHours * this.orderDetail.parkingRule.hourPrice
-            }
             orderDetail.discountInfo.consume = [this.consume]
           }
         })
-        console.log(orderDetail.discountInfo.consume);
         await this.$store.dispatch('order/saveDiscounts',{orderDetail,callback: () => this.$router.back()})
       } else {
         this.$router.back();

+ 10 - 0
src/pages/parkingFee/mixins/parkingFeeHint/parkingFeeHint.js

@@ -24,6 +24,16 @@ export default {
         title: '提示',
       });
     }, 300);
+    setTimeout(() => {
+      window?.toWXSendMsg({
+        type: 'uni_func',
+        funcName: 'setNavigationBarColor',
+        options: {
+          frontColor: '#000000',
+          backgroundColor: '#FBFCFF',
+        },
+      });
+    }, 500)
   },
   methods: {
     search() {

+ 10 - 0
src/pages/parkingFee/mixins/parkingFeeList.js

@@ -38,6 +38,16 @@ export default {
         title: '缴费记录',
       });
     },301);
+    setTimeout(() => {
+      window?.toWXSendMsg({
+        type: 'uni_func',
+        funcName: 'setNavigationBarColor',
+        options: {
+          frontColor: '#000000',
+          backgroundColor: '#FBFCFF',
+        },
+      });
+    }, 500)
     this.$store.dispatch('clearUnlicensed');
     this.list = [];
     this.numberOfElements = 0;

+ 10 - 0
src/pages/parkingFee/mixins/parkingFeePaperCoupon.js

@@ -52,6 +52,16 @@ export default {
         title: '优惠券',
       });
     },300);
+    setTimeout(() => {
+      window?.toWXSendMsg({
+        type: 'uni_func',
+        funcName: 'setNavigationBarColor',
+        options: {
+          frontColor: '#000000',
+          backgroundColor: '#FBFCFF',
+        },
+      });
+    }, 500)
   },
   computed: {
     ...mapState({

+ 10 - 0
src/pages/parkingFee/mixins/parkingFeePayment.js

@@ -5,6 +5,16 @@ export default {
     const params = this.$route.query;
     this.msg = params.msg;
     this.carno = params.carno;
+    setTimeout(() => {
+      window?.toWXSendMsg({
+        type: 'uni_func',
+        funcName: 'setNavigationBarColor',
+        options: {
+          frontColor: '#000000',
+          backgroundColor: '#FBFCFF',
+        },
+      });
+    }, 500)
   },
   data() {
     return {

+ 10 - 0
src/pages/parkingFee/mixins/parkingFeeSuccess.js

@@ -38,6 +38,16 @@ export default {
         title: '提示',
       });
     }, 300);
+    setTimeout(() => {
+      window?.toWXSendMsg({
+        type: 'uni_func',
+        funcName: 'setNavigationBarColor',
+        options: {
+          frontColor: '#000000',
+          backgroundColor: '#FBFCFF',
+        },
+      });
+    }, 500)
     if ( this.$router.query?.vehicleNo ) {
       this.vehicleNo = this.$route.query.vehicleNo  
     }

+ 10 - 0
src/pages/parkingFee/mixins/parkingReceipt/parkingApplication.js

@@ -50,6 +50,16 @@ export default {
         title: '发票申请',
       });
     }, 300);
+    setTimeout(() => {
+      window?.toWXSendMsg({
+        type: 'uni_func',
+        funcName: 'setNavigationBarColor',
+        options: {
+          frontColor: '#000000',
+          backgroundColor: '#FBFCFF',
+        },
+      });
+    }, 500)
     this.getEmail();
     const query = getUrlParams();
     this.pageOptions = query;

+ 10 - 1
src/pages/parkingFee/mixins/parkingReceipt/parkingChangeHeader.js

@@ -78,7 +78,16 @@ export default {
         title: '发票抬头',
       });
     }, 300);
-    
+    setTimeout(() => {
+      window?.toWXSendMsg({
+        type: 'uni_func',
+        funcName: 'setNavigationBarColor',
+        options: {
+          frontColor: '#000000',
+          backgroundColor: '#FBFCFF',
+        },
+      });
+    }, 500)
   },
   methods: {
     radioChange: function (value) {

+ 10 - 0
src/pages/parkingFee/mixins/parkingReceipt/parkingChooseHeader.js

@@ -39,6 +39,16 @@ export default {
         title: '选择抬头',
       });
     }, 300);
+    setTimeout(() => {
+      window?.toWXSendMsg({
+        type: 'uni_func',
+        funcName: 'setNavigationBarColor',
+        options: {
+          frontColor: '#000000',
+          backgroundColor: '#FBFCFF',
+        },
+      });
+    }, 500)
     // console.log('全剧信息', this.globalData);
     this.getInvoiceTitle();
   },

+ 10 - 0
src/pages/parkingFee/mixins/parkingReceipt/parkingHeaderDetail.js

@@ -19,5 +19,15 @@ export default {
         title: '抬头详情',
       });
     }, 300);
+    setTimeout(() => {
+      window?.toWXSendMsg({
+        type: 'uni_func',
+        funcName: 'setNavigationBarColor',
+        options: {
+          frontColor: '#000000',
+          backgroundColor: '#FBFCFF',
+        },
+      });
+    }, 500)
   },
 };

+ 10 - 0
src/pages/parkingFee/mixins/parkingReceipt/parkingInvoice.js

@@ -50,6 +50,16 @@ export default {
         title: '发票详情',
       });
     }, 300);
+    setTimeout(() => {
+      window?.toWXSendMsg({
+        type: 'uni_func',
+        funcName: 'setNavigationBarColor',
+        options: {
+          frontColor: '#000000',
+          backgroundColor: '#FBFCFF',
+        },
+      });
+    }, 500)
       // const res = await invoicesDeatil(id)
     this.getInvoicedDetail(this.id);
   },

+ 10 - 0
src/pages/parkingFee/mixins/parkingReceipt/parkingInvoiceImage.js

@@ -28,6 +28,16 @@ export default {
         title: '停车发票',
       });
     }, 300);
+    setTimeout(() => {
+      window?.toWXSendMsg({
+        type: 'uni_func',
+        funcName: 'setNavigationBarColor',
+        options: {
+          frontColor: '#000000',
+          backgroundColor: '#FBFCFF',
+        },
+      });
+    }, 500)
   },
   onUnload() {
     if (this.timer) {

+ 10 - 0
src/pages/parkingFee/mixins/parkingReceipt/parkingOrderDetail.js

@@ -43,6 +43,16 @@ export default {
         title: '支付订单详情',
       });
     }, 300);
+    setTimeout(() => {
+      window?.toWXSendMsg({
+        type: 'uni_func',
+        funcName: 'setNavigationBarColor',
+        options: {
+          frontColor: '#000000',
+          backgroundColor: '#FBFCFF',
+        },
+      });
+    }, 500)
   },
   filters: {
     parkingTime(val) {

+ 10 - 0
src/pages/parkingFee/mixins/parkingReceipt/parkingReceipt.js

@@ -101,6 +101,16 @@ export default {
         title: '停车发票',
       });
     }, 300);
+    setTimeout(() => {
+      window?.toWXSendMsg({
+        type: 'uni_func',
+        funcName: 'setNavigationBarColor',
+        options: {
+          frontColor: '#000000',
+          backgroundColor: '#FBFCFF',
+        },
+      });
+    }, 500)
     const invoiceindex = Number.parseInt(uni.getStorageSync('invoiceindex') || 1)
     this.$store.dispatch('clearUnlicensed');
     if (JSON.stringify(this.member) !== '{}') {

+ 10 - 0
src/pages/parkingFee/mixins/vehicleAddOrEdit.js

@@ -40,6 +40,16 @@ export default {
         title: '绑定车牌号',
       });
     }, 300);
+    setTimeout(() => {
+      window?.toWXSendMsg({
+        type: 'uni_func',
+        funcName: 'setNavigationBarColor',
+        options: {
+          frontColor: '#000000',
+          backgroundColor: '#FBFCFF',
+        },
+      });
+    }, 500)
     const params = this.$route.query;
     // console.log(252, params);
     if (params.carType) {

+ 10 - 0
src/pages/parkingFee/mixins/vehicleManagement.js

@@ -58,6 +58,16 @@ export default {
         title: '车辆管理',
       });
     }, 300);
+    setTimeout(() => {
+      window?.toWXSendMsg({
+        type: 'uni_func',
+        funcName: 'setNavigationBarColor',
+        options: {
+          frontColor: '#000000',
+          backgroundColor: '#FBFCFF',
+        },
+      });
+    }, 500)
     this.$store.dispatch('clearUnlicensed');
     const member = uni.getStorageSync('member');
     if (member && JSON.stringify(this.member) !== '{}') {

+ 41 - 13
src/pages/parkingFee/parkingFee.vue

@@ -31,7 +31,7 @@
         <!-- 中控 -->
         <div class="parkingFee-bottom">
           <div style="height: 40px; background-color: #FBFCFF;" v-if="source !== 'CRM'"></div>
-          <div class="parkingFee-tab" v-if="supportUnlicensed && source === 'CRM'">
+          <div :class="['parkingFee-tab', tabbarActive === '无牌缴费' && 'unlicensed-box-bottom']" v-if="supportUnlicensed && source === 'CRM'">
             <div :class="['bar', tabbarActive === '手动缴费' && 'active']" @click="tabbarActiveEvent('手动缴费')">手动缴费</div>
             <div :class="['bar', tabbarActive === '无牌缴费' && 'active']" @click="tabbarActiveEvent('无牌缴费')">无牌缴费</div>
           </div>
@@ -55,26 +55,26 @@
                 <!-- <div v-for="i in carType === 1 ? 8 : 7" class="li" :key="`numArr${i}`" @click="clickShowKeyboard(i)" :class="[active === i ? 'active' : '']">
                   {{ numArr[i] }}
                 </div> -->
-                <div class="li" @click="clickShowKeyboard(0)" :class="[active === 0 ? 'active' : '']">
+                <div class="van-hairline--surround li" @click="clickShowKeyboard(0)" :class="[active === 0 ? 'active' : '']">
                   {{ numArr[0] }}
                 </div>
-                <div class="li" @click="clickShowKeyboard(1)" :class="[active === 1 ? 'active' : '']">
+                <div class="van-hairline--surround li" @click="clickShowKeyboard(1)" :class="[active === 1 ? 'active' : '']">
                   {{ numArr[1] }}
                 </div>
                 <div class="input_box_dian">·</div>
-                <div class="li" @click="clickShowKeyboard(2)" :class="[active === 2 ? 'active' : '']">
+                <div class="van-hairline--surround li" @click="clickShowKeyboard(2)" :class="[active === 2 ? 'active' : '']">
                   {{ numArr[2] }}
                 </div>
-                <div class="li" @click="clickShowKeyboard(3)" :class="[active === 3 ? 'active' : '']">
+                <div class="van-hairline--surround li" @click="clickShowKeyboard(3)" :class="[active === 3 ? 'active' : '']">
                   {{ numArr[3] }}
                 </div>
-                <div class="li" @click="clickShowKeyboard(4)" :class="[active === 4 ? 'active' : '']">
+                <div class="van-hairline--surround li" @click="clickShowKeyboard(4)" :class="[active === 4 ? 'active' : '']">
                   {{ numArr[4] }}
                 </div>
-                <div class="li" @click="clickShowKeyboard(5)" :class="[active === 5 ? 'active' : '']">
+                <div class="van-hairline--surround li" @click="clickShowKeyboard(5)" :class="[active === 5 ? 'active' : '']">
                   {{ numArr[5] }}
                 </div>
-                <div :class="['li', active === 6 ? 'active' : '']" @click="clickShowKeyboard(6)">
+                <div :class="['van-hairline--surround li', active === 6 ? 'active' : '']" @click="clickShowKeyboard(6)">
                   {{ numArr[6] }}
                 </div>
                 <div class="li dashed green-active" @click="clickShowKeyboard(7)" :class="[active === 7 ? 'active' : '']" >
@@ -128,6 +128,10 @@
             <div class="title_box">
               <span class="btn">缴费说明</span>
             </div>
+            <div class="sub_title_box">
+              <span class="btn">基础计费规则:</span>
+            </div>
+            
             <div class="info" :class="!init_ch ? 'info_show' : ''">
               <!-- <p></p> -->
               <!-- <p>{{ description }}</p> -->
@@ -223,6 +227,9 @@ export default {
         background-color: #FBFCFF;
         display: flex;
         align-items: flex-end;
+        &.unlicensed-box-bottom {
+          padding-bottom: 107px;
+        }
 
         .bar {
           color: #666666;
@@ -341,7 +348,7 @@ export default {
 
           .li {
             width: 100%;
-            border: 1px solid #d9dbe0;
+            //border: 1px solid #d9dbe0;
             box-sizing: border-box;
             height: 90px;
             display: flex;
@@ -356,6 +363,12 @@ export default {
               background-color: #fafbff;
               border-style: dashed;
             }
+            &.van-hairline--surround {
+              &::after{
+                border-radius: 7px;
+                border-color: #D9DBE0;
+              }
+            }
             &.active {
               border-color: var(--k-color-primary-01, #064c8a);
             }
@@ -458,7 +471,7 @@ export default {
             border: 1px solid #d9dbe0;
             background-color: #f4f7ff;
             line-height: 60px;
-            font-size: 26px;
+            font-size: 28px;
             border-radius: 30px;
             color: #666666;
           }
@@ -487,9 +500,12 @@ export default {
           line-height: 36px;
           text-align: center;
           margin-bottom: 60px;
+          font-family: 'PingFang SC';
+          font-style: normal;
+          font-weight: 400;
         }
         .search-btn {
-          font-size: 34px;
+          font-size: 32px;
           height: 90px;
           color: #ffffff;
           line-height: 90px;
@@ -588,6 +604,18 @@ export default {
             text-align: left;
           }
         }
+        .sub_title_box {
+          margin-bottom: 5px;
+          .btn{
+            font-family: 'PingFang SC';
+            font-style: normal;
+            font-weight: 400;
+            font-size: 26px;
+            line-height: 40px;
+            
+            color: #333333;  
+          }
+        }
 
         .info {
           padding-left: 2px;
@@ -614,8 +642,8 @@ export default {
         width: 100%;
         text-align: center;
         color: #999999;
-        margin-top: 30px;
-        margin-bottom: 32px;
+        margin-top: 25px;
+        margin-bottom: 20px;
       }
     }
   }

+ 39 - 3
src/pages/parkingFee/parkingFeeCoupon.vue

@@ -5,6 +5,23 @@
         <van-checkbox-group :value="checkedCouponList">
           <div class="card-list" v-if="couponList.length">
             <div class="item" v-for="(item, index) in couponList" :key="index">
+              <div class="coupon-active" v-if="checkedCouponList.indexOf(`coupon${index}`) > -1">
+                <svg width="690" height="197" viewBox="0 0 690 197" fill="none" xmlns="http://www.w3.org/2000/svg">
+                  <mask id="path-1-inside-1_304_8" fill="white">
+                    <path fill-rule="evenodd" clip-rule="evenodd" d="M196 0C196 5.52285 191.523 10 186 10C180.477 10 176 5.52285 176 0H4C1.79086 0 0 1.79086 0 4V193C0 195.209 1.79085 197 3.99999 197H176C176 191.477 180.477 187 186 187C191.523 187 196 191.477 196 197H686C688.209 197 690 195.209 690 193V4C690 1.79086 688.209 0 686 0H196Z"/>
+                  </mask>
+                  <path fill-rule="evenodd" clip-rule="evenodd" d="M196 0C196 5.52285 191.523 10 186 10C180.477 10 176 5.52285 176 0H4C1.79086 0 0 1.79086 0 4V193C0 195.209 1.79085 197 3.99999 197H176C176 191.477 180.477 187 186 187C191.523 187 196 191.477 196 197H686C688.209 197 690 195.209 690 193V4C690 1.79086 688.209 0 686 0H196Z" fill="var(--k-color-primary-06)"/>
+                  <path d="M196 0V-1H195V0H196ZM176 0H177V-1H176V0ZM176 197V198H177V197H176ZM196 197H195V198H196V197ZM186 11C192.075 11 197 6.07513 197 0H195C195 4.97056 190.971 9 186 9V11ZM175 0C175 6.07513 179.925 11 186 11V9C181.029 9 177 4.97056 177 0H175ZM4 1H176V-1H4V1ZM1 4C1 2.34314 2.34315 1 4 1V-1C1.23858 -1 -1 1.23857 -1 4H1ZM1 193V4H-1V193H1ZM3.99999 196C2.34314 196 1 194.657 1 193H-1C-1 195.761 1.23856 198 3.99999 198V196ZM176 196H3.99999V198H176V196ZM186 186C179.925 186 175 190.925 175 197H177C177 192.029 181.029 188 186 188V186ZM197 197C197 190.925 192.075 186 186 186V188C190.971 188 195 192.029 195 197H197ZM686 196H196V198H686V196ZM689 193C689 194.657 687.657 196 686 196V198C688.761 198 691 195.761 691 193H689ZM689 4V193H691V4H689ZM686 1C687.657 1 689 2.34314 689 4H691C691 1.23858 688.761 -1 686 -1V1ZM196 1H686V-1H196V1Z" fill="var(--k-color-primary-01)" mask="url(#path-1-inside-1_304_8)"/>
+                  <path d="M185.5 12.486V184.514" stroke="#CCCCCC" stroke-linecap="square" stroke-dasharray="8"/>
+                </svg>  
+              </div>
+              <div class="coupon-active" v-else>
+                <svg width="690" height="197" viewBox="0 0 690 197" fill="none" xmlns="http://www.w3.org/2000/svg">
+                  <path fill-rule="evenodd" clip-rule="evenodd" d="M196 0C196 5.52285 191.523 10 186 10C180.477 10 176 5.52285 176 0H4C1.79086 0 0 1.79086 0 4V193C0 195.209 1.79085 197 3.99999 197H176C176 191.477 180.477 187 186 187C191.523 187 196 191.477 196 197H686C688.209 197 690 195.209 690 193V4C690 1.79086 688.209 0 686 0H196Z" fill="#FAFBFF"/>
+                  <path d="M185.5 10.5V187.5" stroke="#D8DAE0" stroke-linecap="square" stroke-dasharray="8"/>
+                </svg>
+              </div>
+
               <div class="item-image">
                 <div class="discountFee-box">
                   <span>¥</span>
@@ -29,7 +46,7 @@
           </div>
         </van-checkbox-group>
         <!-- 为避免冲突,小程序 和 H5 跳转 CRM小程序:积分商城 的逻辑分开处理 -->
-        <div :class="['guide-box', 'mgb-110', !couponList.length && 'flex-bottom']" v-if="platform === 'miniprogram'">
+        <div :class="['guide-box', 'mgb-110', !couponList.length && 'flex-bottom']" v-if="platform === 'miniprogram' && source === 'KIP'">
           <div class="guide-title">优惠券兑换指导</div>
           <div class="guide-desc" @click="navigateToMiniProgram">
             停车优惠券可直接使用,若您还没有兑换或继续兑换,可前往
@@ -37,7 +54,7 @@
             进行兑换
           </div>
         </div>
-        <div :class="['guide-box', 'mgb-110', !couponList.length && 'flex-bottom']" v-if="platform === 'micromessenger'">
+        <div :class="['guide-box', 'mgb-110', !couponList.length && 'flex-bottom']" v-if="platform === 'micromessenger' && source === 'KIP'">
           <div class="guide-title">优惠券兑换指导</div>
           <div class="guide-desc">
             停车优惠券可直接使用,若您还没有兑换或继续兑换,可前往
@@ -122,12 +139,30 @@ export default {
     display: flex;
     margin-bottom: 16px;
     border-radius: 4px;
-    background-image: url("./static/images/coupon-bg.png");
+    //background-image: url("./static/images/coupon-bg.png");
     background-repeat: no-repeat;
     background-position: 100% 100%;
     background-size:100% 100%;
     color: var(--k-color-primary);
+    position: relative;
+    z-index: 2;
+    .coupon-active {
+      position: absolute;
+      z-index: 0;
+      left: 0;
+      right: 0;
+      top: 0;
+      bottom: 0;
+      display: block;
+      width: 100%;
+      height: 100%;      
+    }
+    svg{
+      width: 100%;
+      height: 100%;
+    }
     .item-image {
+      z-index: 2;
       width: 190px;
       text-align: center;
       font-size: 24px;
@@ -141,6 +176,7 @@ export default {
     }
 
     .item-content {
+      z-index: 2;
       display: flex;
       flex: 1;
       padding-left: 44px;

+ 27 - 4
src/pages/parkingFee/parkingFeeDetail.vue

@@ -21,7 +21,7 @@
           <div class="value">{{ orderDetail.parkingRecord.serviceMin | parkingTime }}</div>
         </div>
         <div class="van-hairline--bottom hr"></div>
-        <div class="info-item-box">
+        <div class="info-item-box npb">
           <div class="label pb--27">应缴</div>
           <div class="value bold-fz">
             {{ ( orderDetail.parkingRecord.totalFeeInYuan ) | currency }}
@@ -37,13 +37,15 @@
         </div>
         <div class="info-item-box" v-if="orderDetail && orderDetail.discountInfo">
           <div class="label">积分减免</div>
-          <div :class="['value', integralDesc === '今日已达上限' ? 'text-disable' : 'text-red']" @click="showPointsMathPopup('bottom')">{{ integralDesc }}
+          <div :class="['value']" @click="showPointsMathPopup('bottom')">
+            <span :class="[integralDesc === '今日已达上限' ? 'text-disable' : 'text-red']">{{ integralDesc }}</span>
             <van-icon name="arrow"/>
           </div>
         </div>
         <div class="info-item-box" v-if="orderDetail && orderDetail.discountInfo">
           <div class="label">优惠劵</div>
-          <div :class="['value', coupons.length > 0 ? 'text-red' : 'text-disable']" @click="coupon">{{ couponDesc }}
+          <div :class="['value',]" @click="coupon">
+            <span :class="[ coupons.length > 0 ? 'text-red':  'text-disable']">{{ couponDesc }}</span>
             <van-icon name="arrow"/>
           </div>
         </div>
@@ -60,7 +62,7 @@
         <div class="van-hairline--bottom hr"></div>
         <div class="info-item-box npb">
           <div class="label pb--27">应付金额</div>
-          <div class="value bold-fz">
+          <div :class="['value', 'bold-fz', usingTotalDiscount === 0 && 'text-red']">
             {{ actualPayFee | currency }}
           </div>
         </div>
@@ -70,6 +72,9 @@
         <div class="title_box">
           <span class="title">缴费说明</span>
         </div>
+        <div class="sub_title_box">
+          <span class="title">计费基础规则:</span>
+        </div>
         <div class="info" v-html="setDescription()"></div>
       </div>
 <!--      <div style="height: 50px;"></div>-->
@@ -179,6 +184,9 @@ export default {
 </script>
 
 <style lang="less" scoped>
+.text-red {
+  color: #F24439!important;
+}
 .scroll-Y {
   width: 100%;
   //display: flex;
@@ -254,6 +262,9 @@ export default {
       font-weight: 400;
       font-size: 30px;
       color: #333333;
+      .van-icon {
+        color: #999999;
+      }
 
       &.bold-fz {
         font-family: 'PingFang SC';
@@ -275,6 +286,7 @@ export default {
   padding-left: 30px;
 
   .title_box {
+    padding-bottom: 10px;
     .title {
       font-family: 'PingFang SC';
       font-style: normal;
@@ -284,6 +296,17 @@ export default {
     }
   }
 
+  .sub_title_box {
+    padding-bottom: 5px;
+    .title {
+      font-family: 'PingFang SC';
+      font-style: normal;
+      font-weight: 400;
+      font-size: 26px;
+      color: #333333;   
+    }
+  }
+
   .info {
     font-family: 'PingFang SC';
     font-style: normal;

+ 1 - 1
src/pages/parkingFee/parkingFeeList.vue

@@ -72,7 +72,7 @@
         </div>
         <div class="van-hairline--bottom"></div>
         <div class="choice_card_index orderno-box2">
-          <div class="orderFee">¥{{ item.actualPayFee }}</div>
+          <div class="orderFee">{{ item.actualPayFee | currency }}</div>
           <div class="orderDetail">查看详情</div>
           <!-- <van-icon name="arrow" /> -->
         </div>

+ 6 - 6
src/pages/parkingFee/parkingReceipt/parkingReceipt.vue

@@ -88,7 +88,7 @@
                 <div class="left">
                   
                   <div class="invoiceHeader">{{ item.invoiceHeader }}</div>
-                  <div class="choice_card_index">
+                  <div class="choice_card_index" style="margin-bottom: 10px;">
                     <div class="choice_card_index_icon">
                       <img class="car-icon" :src="require(`../static/images/vector.svg`)" />
                       <div class="choice_card_index_text">开票时间</div>
@@ -134,7 +134,7 @@
     </div>
     <div v-show="isLoadMore" :class="{ noData: !list.length }">
       <img :src="noData" v-if="!list.length" alt=""/>
-      <span v-if="!list.length">暂无数据</span>
+      <span v-if="!list.length">当前暂无开票数据</span>
       <div v-else class="no-more-data">
         没有更多啦
         </div>
@@ -190,7 +190,7 @@ export default {
     left: 0;
 
     div {
-      width: 30%;
+      width: 45%;
       text-align: center;
       height: 78px;
       line-height: 78px;
@@ -217,12 +217,12 @@ export default {
     }
 
     .choice_select_ews {
-      transform: translateX(230px);
+      transform: translateX(175px);
       transition-duration: 0.1s;
     }
 
     .choice_select_ew {
-      transform: translateX(455px);
+      transform: translateX(510px);
       transition-duration: 0.1s;
     }
   }
@@ -333,7 +333,7 @@ export default {
           font-style: normal;
           font-weight: 600;
           font-size: 32px;
-          padding: 31px 35px 11px;
+          padding: 31px 35px 20px;
           
         }
         .right {

+ 8 - 0
src/pages/parkingFee/static/images/coupon-active.svg

@@ -0,0 +1,8 @@
+<svg width="690" height="197" viewBox="0 0 690 197" fill="none" xmlns="http://www.w3.org/2000/svg">
+<mask id="path-1-inside-1_304_8" fill="white">
+<path fill-rule="evenodd" clip-rule="evenodd" d="M196 0C196 5.52285 191.523 10 186 10C180.477 10 176 5.52285 176 0H4C1.79086 0 0 1.79086 0 4V193C0 195.209 1.79085 197 3.99999 197H176C176 191.477 180.477 187 186 187C191.523 187 196 191.477 196 197H686C688.209 197 690 195.209 690 193V4C690 1.79086 688.209 0 686 0H196Z"/>
+</mask>
+<path fill-rule="evenodd" clip-rule="evenodd" d="M196 0C196 5.52285 191.523 10 186 10C180.477 10 176 5.52285 176 0H4C1.79086 0 0 1.79086 0 4V193C0 195.209 1.79085 197 3.99999 197H176C176 191.477 180.477 187 186 187C191.523 187 196 191.477 196 197H686C688.209 197 690 195.209 690 193V4C690 1.79086 688.209 0 686 0H196Z" fill="#E6EDF3"/>
+<path d="M196 0V-1H195V0H196ZM176 0H177V-1H176V0ZM176 197V198H177V197H176ZM196 197H195V198H196V197ZM186 11C192.075 11 197 6.07513 197 0H195C195 4.97056 190.971 9 186 9V11ZM175 0C175 6.07513 179.925 11 186 11V9C181.029 9 177 4.97056 177 0H175ZM4 1H176V-1H4V1ZM1 4C1 2.34314 2.34315 1 4 1V-1C1.23858 -1 -1 1.23857 -1 4H1ZM1 193V4H-1V193H1ZM3.99999 196C2.34314 196 1 194.657 1 193H-1C-1 195.761 1.23856 198 3.99999 198V196ZM176 196H3.99999V198H176V196ZM186 186C179.925 186 175 190.925 175 197H177C177 192.029 181.029 188 186 188V186ZM197 197C197 190.925 192.075 186 186 186V188C190.971 188 195 192.029 195 197H197ZM686 196H196V198H686V196ZM689 193C689 194.657 687.657 196 686 196V198C688.761 198 691 195.761 691 193H689ZM689 4V193H691V4H689ZM686 1C687.657 1 689 2.34314 689 4H691C691 1.23858 688.761 -1 686 -1V1ZM196 1H686V-1H196V1Z" fill="#064C8A" mask="url(#path-1-inside-1_304_8)"/>
+<path d="M185.5 12.486V184.514" stroke="#CCCCCC" stroke-linecap="square" stroke-dasharray="8"/>
+</svg>

+ 4 - 0
src/pages/parkingFee/static/images/coupon-noselect.svg

@@ -0,0 +1,4 @@
+<svg width="690" height="197" viewBox="0 0 690 197" fill="none" xmlns="http://www.w3.org/2000/svg">
+<path fill-rule="evenodd" clip-rule="evenodd" d="M196 0C196 5.52285 191.523 10 186 10C180.477 10 176 5.52285 176 0H4C1.79086 0 0 1.79086 0 4V193C0 195.209 1.79085 197 3.99999 197H176C176 191.477 180.477 187 186 187C191.523 187 196 191.477 196 197H686C688.209 197 690 195.209 690 193V4C690 1.79086 688.209 0 686 0H196Z" fill="#FAFBFF"/>
+<path d="M185.5 10.5V187.5" stroke="#D8DAE0" stroke-linecap="square" stroke-dasharray="8"/>
+</svg>

BIN
src/pages/parkingFee/static/images/white_delete.png


BIN
src/pages/parkingFee/static/images/white_detail.png


BIN
src/pages/parkingFee/static/images/white_edit.png


+ 15 - 9
src/pages/parkingFee/vehicleAddOrEdit.vue

@@ -10,29 +10,29 @@
         <!-- <div v-for="i in carType === 1 ? 8 : 7" class="li" :key="`numArr${i}`" @click="clickShowKeyboard(i)" :class="[active === i ? 'active' : '']">
                   {{ numArr[i] }}
                 </div> -->
-        <div class="li" @click="clickShowKeyboard(0)" :class="[active === 0 ? 'active' : '']">
+        <div class="van-hairline--surround li" @click="clickShowKeyboard(0)" :class="[active === 0 ? 'active' : '']">
           {{ numArr[0] }}
         </div>
-        <div class="li" @click="clickShowKeyboard(1)" :class="[active === 1 ? 'active' : '']">
+        <div class="van-hairline--surround li" @click="clickShowKeyboard(1)" :class="[active === 1 ? 'active' : '']">
           {{ numArr[1] }}
         </div>
         <div class="input_box_dian">·</div>
-        <div class="li" @click="clickShowKeyboard(2)" :class="[active === 2 ? 'active' : '']">
+        <div class="van-hairline--surround li" @click="clickShowKeyboard(2)" :class="[active === 2 ? 'active' : '']">
           {{ numArr[2] }}
         </div>
-        <div class="li" @click="clickShowKeyboard(3)" :class="[active === 3 ? 'active' : '']">
+        <div class="van-hairline--surround li" @click="clickShowKeyboard(3)" :class="[active === 3 ? 'active' : '']">
           {{ numArr[3] }}
         </div>
-        <div class="li" @click="clickShowKeyboard(4)" :class="[active === 4 ? 'active' : '']">
+        <div class="van-hairline--surround li" @click="clickShowKeyboard(4)" :class="[active === 4 ? 'active' : '']">
           {{ numArr[4] }}
         </div>
-        <div class="li" @click="clickShowKeyboard(5)" :class="[active === 5 ? 'active' : '']">
+        <div class="van-hairline--surround li" @click="clickShowKeyboard(5)" :class="[active === 5 ? 'active' : '']">
           {{ numArr[5] }}
         </div>
-        <div :class="['li', carType !== 1 && 'dashed', active === 6 ? 'active' : '']" @click="clickShowKeyboard(6)">
+        <div :class="[' van-hairline--surround li', active === 6 ? 'active' : '']" @click="clickShowKeyboard(6)">
           {{ numArr[6] }}
         </div>
-        <div class="li dashed green-active" @click="clickShowKeyboard(7)" :class="[active === 7 ? 'active' : '']" >
+        <div class="van-hairline--surround li dashed green-active" @click="clickShowKeyboard(7)" :class="[active === 7 ? 'active' : '']" >
           <span v-if="numArr[7] && carType === 1">{{ numArr[7] }}</span>
           <img v-else :src="require('./static/images/unlicensed/leaf.svg')">
         </div>
@@ -125,7 +125,7 @@ export default {
 
     .li {
       width: 100%;
-      border: 1px solid #d9dbe0;
+      //border: 1px solid #d9dbe0;
       box-sizing: border-box;
       height: 90px;
       display: flex;
@@ -143,6 +143,12 @@ export default {
       &.active {
         border-color: var(--k-color-primary);
       }
+      &.van-hairline--surround {
+        &::after{
+          border-radius: 7px;
+          border-color: #D9DBE0;
+        }
+      }
       &.green-active {
         background: #F8FFED;
         border-color: #7DB124;

+ 11 - 19
src/pages/parkingFee/vehicleManagement.vue

@@ -14,15 +14,8 @@
           :key="item.id"
         >
           <div class="plate_border">
-            <div
-              class="plate_tag"
-              :class="'bgc-' + item.licensePlateType"
-            ></div>
             <div
               class="plate_plate_index plate_plate_index1"
-              :style="{
-                padding: '0 0 0 14px',
-              }"
             >
               我的车牌
             </div>
@@ -48,15 +41,15 @@
           " v-if="custTypeId > 0"></div> -->
             <div class="plate_plate_index plate_plate_index4">
               <div class="item" @click.stop="toPay(item.vehicleNo)">
-                <img :src="require(`./static/images/icon-edit.png`)" alt=""/><span>查询</span>
+                <img :src="require(`./static/images/white_detail.png`)" alt=""/><span>查询</span>
               </div>
               <div class="item" @click="toEdit(item)">
-                <img :src="require(`./static/images/icon-find.png`)" alt=""/><span
+                <img :src="require(`./static/images/white_edit.png`)" alt=""/><span
               >编辑</span
               >
               </div>
               <div class="item" @click="toDelete(item)">
-                <img :src="require(`./static/images/icon-del-white.png`)" alt=""/><span
+                <img :src="require(`./static/images/white_delete.png`)" alt=""/><span
               >删除</span
               >
               </div>
@@ -252,7 +245,7 @@ export default {
     }
 
     .plate_plate_index {
-      padding-left: 37px;
+      // padding-left: 37px;
       padding-top: 10px;
       font-size: 26px;
     }
@@ -260,7 +253,7 @@ export default {
     .plate_plate_index1,
     .plate_plate_index3 {
       font-size: 28px;
-      font-weight: 400;
+      // font-weight: 400;
       color: #ffffff;
       line-height: 40px;
       display: flex;
@@ -275,7 +268,6 @@ export default {
       .licensePlateTypeDesc {
         margin-left: 5px;
         font-size: 28px;
-        font-weight: 500;
         color: #ffffff;
         line-height: 40px;
         margin-left: 20px;
@@ -284,13 +276,13 @@ export default {
       &.bb {
         padding-bottom: 23px;
         margin-bottom: 23px;
-        border-bottom: 1px solid #ffffff;
+        border-bottom: 0.5px solid #ffffff;
       }
     }
 
     .plate_plate_index1 {
       display: inline-block;
-      padding-left: 14px;
+      // padding-left: 14px;
     }
 
     .plate_plate_index2 {
@@ -335,9 +327,9 @@ export default {
         }
 
         img {
-          width: 45px;
-          height: 45px;
-          // margin-right: 10px;
+          width: 27px;
+          height: 27px;
+          margin-right: 15px;
         }
 
         span {
@@ -471,7 +463,7 @@ export default {
     justify-content: center;
     align-items: center;
     margin-bottom: 11px;
-    padding-top: 57px;
+    padding-top: 60px;
     //vertical-align: middle;
   }
   .add_plate_no_data_info{

+ 10 - 3
src/store/order/points.js

@@ -27,7 +27,7 @@ export default {
         available, // 用户可用的积分(当前车辆在) available是用户选择抵扣N小时后剩余的可用积分
         maxDiscountFee, // 单次上限(元)
         unitAmount, // 兑换值(元)
-        unlimitUsePoints, // 前海积分最大上限
+        unlimitUsePoints= "LIMIT", // 前海积分最大上限
         unitHour, // 兑换值(小时)
         pointsPerUnit = 0, // 500积分对应的价值
         discountFee,
@@ -40,14 +40,21 @@ export default {
     commit('setAvailable',available);
     commit('setMaxPointsTime',maxPointsTime);
     commit('setMaxDiscountFee',maxDiscountFee);
-    commit('setPointsTime',discountFee || 0);
+    let pointsTime = 0
+    // 深圳
+    if ( parkMallCode === 5 ) {
+      pointsTime = discountFee || 0
+    } else  {
+      pointsTime = discountFee ?  discountFee/ unitAmount: 0
+    }
+    commit('setPointsTime',pointsTime);
     commit('setPointsPerUnit',pointsPerUnit);
     commit('setMaxOneDayDiscountFee',maxOneDayDiscountFee);
     commit('setPointsPerHour',pointsPerUnit);
     commit('setUnitAmount',unitAmount);
     commit('setUnlimitUsePoints', unlimitUsePoints);
     commit('setUnitHour', unitHour);
-    commit('setIntegralDesc',discountFee ? `已选择兑换${ discountFee }元` : available > pointsPerUnit ? `${ available }积分可减免` : `${ pointsPerUnit }积分可停车1小时`); // 积分优惠处的描述
+    commit('setIntegralDesc',pointsTime ? `已选择兑换${ pointsTime }${parkMallCode === 5 ? '元' : '小时'}` : available > pointsPerUnit ? `${ available }积分可减免` : `${ pointsPerUnit }积分可停车1小时`); // 积分优惠处的描述
   },
   // 当前最大可选优惠时间
   /*

+ 1 - 1
src/store/order/utils.js

@@ -38,7 +38,7 @@ export function setSelected( types,orderDetail ) {
           }
           orderDetail.discountInfo.points = [{
             ...points,
-            selected: points.hasOwnProperty('selected') ? points.selected : points?.defaultSelected || false
+            selected: points.hasOwnProperty('discountFee')
           }]
         }
         break

+ 2 - 9
vue.config.js

@@ -122,15 +122,8 @@ module.exports = {
         },
       },
       '/msApi': {
-        // target: 'http://172.21.201.251:8080',
-        // target: 'http://172.21.203.156:8080',
-        target: 'http://172.21.202.63:8080',
-        // target: 'http://172.21.202.133:8080',
-        // target: 'https://dev-kip-service-internal.kerryonvip.com/temporary-parking-service', //代理地址,这里设置的地址会代替axios中设置的baseURL
-        // target: 'http://172.21.203.140:8080', //代理地址,这里设置的地址会代替axios中设置的baseURL   2023-2-9
-        // target: 'http://172.21.203.20:8080', //代理地址,这里设置的地址会代替axios中设置的baseURL
-        // target: 'http://172.21.200.89:8080', //代理地址,这里设置的地址会代替axios中设置的baseURL
-        // target: 'http://172.21.201.227:8080', // 代理地址,这里设置的地址会代替axios中设置的baseURL
+        target: 'https://dev-kip-service-internal.kerryonvip.com/temporary-parking-service', //代理地址,这里设置的地址会代替axios中设置的baseURL
+        // target: 'http://172.20.51.70:8080', // 代理地址,这里设置的地址会代替axios中设置的baseURL
         changeOrigin: true, // 如果接口跨域,需要进行这个参数配置
         //ws: true, // proxy websockets
         //pathRewrite方法重写url