浏览代码

feat(KIP-9392): Rollout Kerry+ |Office temp parking H5

john 2 年之前
父节点
当前提交
428c0b6a9c
共有 31 个文件被更改,包括 567 次插入926 次删除
  1. 153 211
      src/api/mockData/checkout.qh6.response.json
  2. 2 0
      src/components/install.js
  3. 0 1
      src/lib/Sensorsdata-UniPlugin-JS/index.js
  4. 4 2
      src/pages/parkingFee/components/base/parkingReceipt/parkingApplication.vue
  5. 1 1
      src/pages/parkingFee/components/base/parkingReceipt/parkingOrderDetail.vue
  6. 15 11
      src/pages/parkingFee/components/officeBlue/parkingFeeCoupon.vue
  7. 13 33
      src/pages/parkingFee/components/officeBlue/parkingFeeDetail.vue
  8. 21 42
      src/pages/parkingFee/components/officeBlue/parkingFeeDetailSuccess.vue
  9. 5 3
      src/pages/parkingFee/components/officeBlue/parkingFeeList.vue
  10. 10 8
      src/pages/parkingFee/components/officeBlue/parkingReceipt/parkingApplication.vue
  11. 4 4
      src/pages/parkingFee/components/officeBlue/parkingReceipt/parkingChangeHeader.vue
  12. 6 6
      src/pages/parkingFee/components/officeBlue/parkingReceipt/parkingChooseHeader.vue
  13. 9 8
      src/pages/parkingFee/components/officeBlue/parkingReceipt/parkingOrderDetail.vue
  14. 17 20
      src/pages/parkingFee/components/officeBlue/parkingReceipt/parkingReceipt.vue
  15. 2 10
      src/pages/parkingFee/components/purple/vehicleAddOrEdit.vue
  16. 5 1
      src/pages/parkingFee/mixins/base.js
  17. 21 1
      src/pages/parkingFee/mixins/parkingFee.js
  18. 7 1
      src/pages/parkingFee/mixins/parkingFeeCoupon.js
  19. 7 1
      src/pages/parkingFee/mixins/parkingFeeDetail.js
  20. 15 4
      src/pages/parkingFee/mixins/parkingFeeSuccess.js
  21. 81 317
      src/pages/parkingFee/mixins/parkingReceipt/parkingApplication.js
  22. 16 0
      src/pages/parkingFee/mixins/parkingReceipt/parkingChangeHeader.js
  23. 1 0
      src/pages/parkingFee/mixins/parkingReceipt/parkingOrderDetail.js
  24. 28 142
      src/pages/parkingFee/mixins/parkingReceipt/parkingReceipt.js
  25. 3 1
      src/pages/parkingFee/parkingFeeDetail.vue
  26. 16 3
      src/pages/parkingFee/parkingFeeMsg.vue
  27. 8 2
      src/pages/parkingFee/parkingFeeSuccess.vue
  28. 4 1
      src/pages/parkingFee/parkingReceipt/parkingReceipt.vue
  29. 80 83
      src/store/index.js
  30. 8 4
      src/store/order.js
  31. 5 5
      src/utils/index.js

+ 153 - 211
src/api/mockData/checkout.qh6.response.json

@@ -1,232 +1,174 @@
 {
   "parkingRecord": {
-    "vehicleNo": "粤BDF1412", 
-    "enterTime": "2023-01-06 19:24:50", 
-    "serviceMin": 84, 
-    "totalFee": 1, 
-    "actualPayFee": 0, 
-    "thirdPartyId": "B1vrk1fRLoLuNEnKaUVrN", 
-    "totalFeeInYuan": 0.01
-  }, 
+    "vehicleNo": "闽E114414",
+    "enterTime": "2023-04-08 04:52:52",
+    "serviceMin": 300,
+    "totalFee": 1501,
+    "actualPayFee": 0,
+    "thirdPartyId": "5e0779697a3b4e92a437bcb696522f43",
+    "thirdParkOrderNo": "8f3727f9ec6145ef9f02938c9d7fdc28",
+    "createdByQrCode": false,
+    "totalFeeInYuan": 15.01
+  },
   "discountInfo": {
-    "usingTotalDiscount": 5, 
-    "memberLevelDiscount": false, 
+    "usingTotalDiscount": 20,
+    "memberLevelDiscount": false,
     "points": [
       {
-        "available": 5450, 
-        "maxDiscountFee": 20, 
-        "pointsPerUnit": 1500, 
-        "unitAmount": 5, 
-        "newMember": false, 
-        "label": "5450积分可减免"
+        "available": 2700,
+        "maxDiscountFee": 20,
+        "pointsPerUnit": 500,
+        "unitAmount": 5,
+        "newMember": false,
+        "label": "已选择兑换10元",
+        "discountFee": 10
       }
-    ], 
+    ],
     "coupons": [
       {
-        "code": "0uwn32xo2of_t", 
-        "name": "积分商城兑换券", 
-        "expirationDate": "2023-03-31 23:59:59", 
-        "discountFee": 5, 
-        "superposition": "1", 
+        "code": "w2gcs5kll15_t",
+        "name": "停车电子券(可叠加2)",
+        "expirationDate": "2023-04-30 23:59:59",
+        "discountFee": 5,
+        "defaultSelected": true,
+        "superposition": "2",
+        "limitCountPerOrder": 2
+      },
+      {
+        "code": "l03mko16krp_t",
+        "name": "周末一小时券",
+        "expirationDate": "2023-05-31 23:59:59",
+        "discountFee": 5,
+        "defaultSelected": true,
+        "superposition": "2",
         "limitCountPerOrder": 0
-      }, 
-      {
-        "code": "hbnptz3kau5_t", 
-        "name": "积分商城兑换券", 
-        "expirationDate": "2023-03-31 23:59:59", 
-        "discountFee": 5, 
-        "superposition": "1", 
+      },
+      {
+        "code": "l03mko16krp_t",
+        "name": "周末一小时券",
+        "expirationDate": "2023-05-31 23:59:59",
+        "discountFee": 5,
+        "defaultSelected": true,
+        "superposition": "2",
         "limitCountPerOrder": 0
-      }, 
-      {
-        "code": "vic3iqevsxg_t", 
-        "name": "积分商城兑换券", 
-        "expirationDate": "2023-03-31 23:59:59", 
-        "discountFee": 5, 
-        "superposition": "1", 
+      },
+      {
+        "code": "l03mko16krp_t",
+        "name": "周末一小时券",
+        "expirationDate": "2023-05-31 23:59:59",
+        "discountFee": 5,
+        "defaultSelected": true,
+        "superposition": "2",
         "limitCountPerOrder": 0
-      }, 
-      {
-        "code": "e7magsgvvmp_t", 
-        "name": "积分商城兑换券", 
-        "expirationDate": "2023-03-31 23:59:59", 
-        "discountFee": 5, 
-        "superposition": "1", 
+      },
+      {
+        "code": "l03mko16krp_t",
+        "name": "周末一小时券",
+        "expirationDate": "2023-05-31 23:59:59",
+        "discountFee": 5,
+        "defaultSelected": true,
+        "superposition": "2",
         "limitCountPerOrder": 0
-      }, 
-      {
-        "code": "xtifg1r1q2t_t", 
-        "name": "积分商城兑换券", 
-        "expirationDate": "2023-03-31 23:59:59", 
-        "discountFee": 5, 
-        "superposition": "1", 
+      },
+      {
+        "code": "l03mko16krp_t",
+        "name": "周末一小时券",
+        "expirationDate": "2023-05-31 23:59:59",
+        "discountFee": 5,
+        "defaultSelected": true,
+        "superposition": "2",
+        "limitCountPerOrder": 0
+      },
+      {
+        "code": "l03mko16krp_t",
+        "name": "周末一小时券",
+        "expirationDate": "2023-05-31 23:59:59",
+        "discountFee": 5,
+        "defaultSelected": true,
+        "superposition": "2",
+        "limitCountPerOrder": 0
+      },
+      {
+        "code": "l03mko16krp_t",
+        "name": "周末一小时券",
+        "expirationDate": "2023-05-31 23:59:59",
+        "discountFee": 5,
+        "defaultSelected": true,
+        "superposition": "2",
+        "limitCountPerOrder": 0
+      },
+      {
+        "code": "l03mko16krp_t",
+        "name": "周末一小时券",
+        "expirationDate": "2023-05-31 23:59:59",
+        "discountFee": 5,
+        "defaultSelected": true,
+        "superposition": "2",
+        "limitCountPerOrder": 0
+      },
+      {
+        "code": "l03mko16krp_t",
+        "name": "周末一小时券",
+        "expirationDate": "2023-05-31 23:59:59",
+        "discountFee": 5,
+        "defaultSelected": true,
+        "superposition": "2",
+        "limitCountPerOrder": 0
+      },
+      {
+        "code": "l03mko16krp_t",
+        "name": "周末一小时券",
+        "expirationDate": "2023-05-31 23:59:59",
+        "discountFee": 5,
+        "defaultSelected": true,
+        "superposition": "2",
+        "limitCountPerOrder": 0
+      },
+      {
+        "code": "l03mko16krp_t",
+        "name": "周末一小时券",
+        "expirationDate": "2023-05-31 23:59:59",
+        "discountFee": 5,
+        "defaultSelected": true,
+        "superposition": "2",
+        "limitCountPerOrder": 0
+      },
+      {
+        "code": "l03mko16krp_t",
+        "name": "周末一小时券",
+        "expirationDate": "2023-05-31 23:59:59",
+        "discountFee": 5,
+        "defaultSelected": true,
+        "superposition": "2",
+        "limitCountPerOrder": 0
+      },
+      {
+        "code": "l03mko16krp_t2",
+        "name": "周末一小时券",
+        "expirationDate": "2023-05-31 23:59:59",
+        "discountFee": 5,
+        "defaultSelected": false,
+        "superposition": "1",
         "limitCountPerOrder": 0
-      }, 
-      {
-        "code": "gwpohn04hxs_t", 
-        "name": "可叠加电子券2(上限3)", 
-        "expirationDate": "2023-03-10 23:59:59", 
-        "discountFee": 5, 
-        "defaultSelected": true, 
-        "superposition": "2", 
-        "limitCountPerOrder": 3
-      }, 
-      {
-        "code": "2ryj2z6xyb7_t", 
-        "name": "可叠加电子券2(上限3)", 
-        "expirationDate": "2023-03-10 23:59:59", 
-        "discountFee": 5, 
-        "superposition": "2", 
-        "limitCountPerOrder": 3
-      }, 
-      {
-        "code": "dv97sa11phj_t", 
-        "name": "可叠加电子券2(上限3)", 
-        "expirationDate": "2023-03-10 23:59:59", 
-        "discountFee": 5, 
-        "superposition": "2", 
-        "limitCountPerOrder": 3
-      }, 
-      {
-        "code": "rxoyldb7k40_t", 
-        "name": "可叠加电子券2(上限3)", 
-        "expirationDate": "2023-03-10 23:59:59", 
-        "discountFee": 5, 
-        "superposition": "2", 
-        "limitCountPerOrder": 3
-      }, 
-      {
-        "code": "dcjja5kg6u1_t", 
-        "name": "可叠加电子券2(上限3)", 
-        "expirationDate": "2023-03-10 23:59:59", 
-        "discountFee": 5, 
-        "superposition": "2", 
-        "limitCountPerOrder": 3
-      }, 
-      {
-        "code": "u0ybm5n8txq_t", 
-        "name": "可叠加电子券2(上限3)", 
-        "expirationDate": "2023-03-10 23:59:59", 
-        "discountFee": 5, 
-        "superposition": "2", 
-        "limitCountPerOrder": 3
-      }, 
-      {
-        "code": "qk4wvrk9s04_t", 
-        "name": "可叠加电子券2(上限3)", 
-        "expirationDate": "2023-03-10 23:59:59", 
-        "discountFee": 5, 
-        "superposition": "2", 
-        "limitCountPerOrder": 3
-      }, 
-      {
-        "code": "gf4cwhgkq8n_t", 
-        "name": "可叠加电子券2(上限3)", 
-        "expirationDate": "2023-03-10 23:59:59", 
-        "discountFee": 5, 
-        "superposition": "2", 
-        "limitCountPerOrder": 3
-      }, 
-      {
-        "code": "5utf424l8f3_t", 
-        "name": "可叠加电子券2(上限3)", 
-        "expirationDate": "2023-03-10 23:59:59", 
-        "discountFee": 5, 
-        "superposition": "2", 
-        "limitCountPerOrder": 3
-      }, 
-      {
-        "code": "06yq5t60xaa_t", 
-        "name": "可叠加电子券2(上限3)", 
-        "expirationDate": "2023-03-10 23:59:59", 
-        "discountFee": 5, 
-        "superposition": "2", 
-        "limitCountPerOrder": 3
-      }, 
-      {
-        "code": "hplv3n26pck_t", 
-        "name": "可叠加电子券2(上限3)", 
-        "expirationDate": "2023-03-10 23:59:59", 
-        "discountFee": 5, 
-        "superposition": "2", 
-        "limitCountPerOrder": 3
-      }, 
-      {
-        "code": "1q938eflsbc_t", 
-        "name": "可叠加电子券2(上限3)", 
-        "expirationDate": "2023-03-10 23:59:59", 
-        "discountFee": 5, 
-        "superposition": "2", 
-        "limitCountPerOrder": 3
-      }, 
-      {
-        "code": "pspiwou65fl_t", 
-        "name": "可叠加电子券2(上限3)", 
-        "expirationDate": "2023-03-10 23:59:59", 
-        "discountFee": 5, 
-        "superposition": "2", 
-        "limitCountPerOrder": 3
-      }, 
-      {
-        "code": "3htmstjwway_t", 
-        "name": "可叠加电子券2(上限3)", 
-        "expirationDate": "2023-03-10 23:59:59", 
-        "discountFee": 5, 
-        "superposition": "2", 
-        "limitCountPerOrder": 3
-      }, 
-      {
-        "code": "ote7fpbvl9z_t", 
-        "name": "可叠加电子券2(上限3)", 
-        "expirationDate": "2023-03-10 23:59:59", 
-        "discountFee": 5, 
-        "superposition": "2", 
-        "limitCountPerOrder": 3
-      }, 
-      {
-        "code": "mpjtd2bj4y7_t", 
-        "name": "可叠加电子券2(上限3)", 
-        "expirationDate": "2023-03-10 23:59:59", 
-        "discountFee": 5, 
-        "superposition": "2", 
-        "limitCountPerOrder": 3
-      }, 
-      {
-        "code": "n09uhdzgu1z_t", 
-        "name": "可叠加电子券2(上限3)", 
-        "expirationDate": "2023-03-10 23:59:59", 
-        "discountFee": 5, 
-        "superposition": "2", 
-        "limitCountPerOrder": 3
-      }, 
-      {
-        "code": "wzjfo0idpvo_t", 
-        "name": "可叠加电子券2(上限3)", 
-        "expirationDate": "2023-03-10 23:59:59", 
-        "discountFee": 5, 
-        "superposition": "2", 
-        "limitCountPerOrder": 3
       }
     ]
-  }, 
+  },
   "parkingRule": {
-    "maxOneDayDiscountFee": 60, 
-    "enableNewMemberPoints": false, 
-    "enablePoints": true, 
-    "enableCoupon": true, 
-    "maxOneDayCoupons": 5, 
-    "remainCoupons": 5, 
-    "enablePaperCoupons": false, 
-    "maxPointsTime": 3, 
-    "enableConsume": false, 
-    "enableConsumeSplit": false, 
-    "availableDiscountFee": 50, 
+    "maxOneDayDiscountFee": 600,
+    "enableNewMemberPoints": false,
+    "enablePoints": true,
+    "enableCoupon": true,
+    "enablePaperCoupons": false,
+    "maxPointsTime": 7,
+    "enableConsume": false,
+    "enableConsumeSplit": false,
+    "availableDiscountFee": 600,
     "hourPrice": 5
-  }, 
+  },
   "parkInfo": {
-    "parkName": "VLhpfQGTMDYpsBZxvfBoeygjb", 
-    "description": "计费基础规则:15分钟内免费,首小时15元,其后每小时5元,全天封顶60元。\n嘉湾汇会员停车礼遇:\n银卡:每月可免费领取2张首2小时停车券\n金卡:每月可免费领取5张首2小时停车券\n铂金卡:每月可免费领取10张首2小时停车券\n*数量有限,领完即止\n仅限开具一个月内的停车费电子发票 ", 
-    "parkMallCode": 5, 
+    "parkName": "深圳前海湾停车场",
+    "description": "计费基础规则:\n15分钟内免费,首小时15元,其后每小时5元,全天封顶60元。\n嘉湾汇会员停车礼遇:\n银卡:每月可免费领取2张首2小时停车券\n金卡:每月可免费领取5张首2小时停车券\n铂金卡:每月可免费领取10张首2小时停车券\n*数量有限,领完即止\n仅限开具一个月内的停车费电子发票 ",
+    "parkMallCode": 5,
     "buildingId": "QHKC-P1"
   }
 }

+ 2 - 0
src/components/install.js

@@ -18,6 +18,7 @@ import kButton from '@/kui/components/k-button/k-button'
 import kTab from '@/kui/components/k-tab/k-tab'
 import kIllustration from '@/kui/components/k-illustration/k-illustration'
 import kPlateNumberKeyboard from '@/kui/components/k-plate-number-input/k-plate-number-keyboard'
+import theme from '@/kui/theme/theme'
 
 // import uniImage from './uni-image/index';
 // src/components/wx-points-commit/wx-points-commit.vue
@@ -46,6 +47,7 @@ function plugins(Vue) {
   Vue.component('k-tab', kTab)
   Vue.component('k-illustration', kIllustration)
   Vue.component('k-plate-number-keyboard', kPlateNumberKeyboard) // 修改程度深,不建议置换
+  Vue.prototype.$theme = theme
   // Vue.component('image', uniImage)
 }
 

+ 0 - 1
src/lib/Sensorsdata-UniPlugin-JS/index.js

@@ -38,7 +38,6 @@ Object.keys(commonAPI).forEach((key) => {
             return oldTrack.apply(sa, arr);
         };
     }
-
 });
 
 

+ 4 - 2
src/pages/parkingFee/components/base/parkingReceipt/parkingApplication.vue

@@ -23,7 +23,7 @@
               mode="widthFix"
             />
           </div>
-          <div v-if="headerInfo.invoiceTitleType == 'COMPANY'" class="duty-paragraph">
+          <div v-if="headerInfo.invoiceTitleType === 'COMPANY'" class="duty-paragraph">
             税号:{{ headerInfo.taxNo }}
           </div>
         </div>
@@ -133,13 +133,14 @@
               class="van-field__control"
               style="white-space: nowrap"
               type="text"
+              @blur="mailboxChange"
               placeholder="请输入电子邮箱"
               v-model="condition.email"
             />
           </div>
         </div>
         <div class="part-item default-email top" @click="changeDefaultEMail">
-          <van-checkbox v-model="condition.emailAsDefault" icon-size="30PX"
+          <van-checkbox v-model="condition.emailAsDefault" icon-size="30PX" @change="emailAsDefaultChange"
                         checked-color="#ed1c24"
             ><span class="text">保存电子邮箱为默认邮箱</span></van-checkbox
           >
@@ -151,6 +152,7 @@
           rows="3"
           placeholder-style="color:#999999"
           placeholder="选填"
+          @change="emailAsDefaultChange"
           v-model="condition.remark"
         ></textarea>
       </div>

+ 1 - 1
src/pages/parkingFee/components/base/parkingReceipt/parkingOrderDetail.vue

@@ -14,7 +14,7 @@
           <template>
             <div class="item-header">
               <div>{{ item.orderNo }}-{{ item.vehicleNo }}</div>
-              <div class="red">¥{{ item.totalPaidAmount }}</div>
+              <div class="red">¥{{ getOrderItemPrice(item) }}</div>
             </div>
             <div class="item-bottom">
               <div>{{ item.parkName }}</div>

+ 15 - 11
src/pages/parkingFee/components/officeBlue/parkingFeeCoupon.vue

@@ -1,6 +1,6 @@
 <template>
-  <div>
-    <scroll-view scroll-y="true" class="scroll-Y">
+  <div scroll-y="true" :class="['scroll-Y' , theme]">
+    <div >
       <div class="parkingFeeCoupon">
         <van-checkbox-group :value="checkedCouponList">
           <div class="card-list" v-if="couponList.length">
@@ -10,10 +10,10 @@
                 <div class="cro_right_bottom"></div>
                 <div class="img">
                   <div>
-                    <span style="font-weight: bold; color: #064c8a">¥</span>
+                    <span style="font-weight: bold; color: var(--k-color-primary)">¥</span>
                     <span class="itemValue">{{ item.discountFee }}</span>
                   </div>
-                  <span style="color: #064c8a; font-size: 30px">停车劵</span>
+                  <span style="color: var(--k-color-primary); font-size: 30px">停车劵</span>
                 </div>
               </div>
               <div class="item-content cro_">
@@ -24,7 +24,7 @@
                   <span class="span">有效期至 {{ item.expirationDate }}</span>
                 </div>
                 <div class="erwm_box">
-                  <van-checkbox color="#fff" @click="checkboxItemChange(`coupon${index}`, index)" checked-color="#064C8A" :disabled="item.disabled" :name="`coupon${index}`" />
+                  <van-checkbox color="#fff" @click="checkboxItemChange(`coupon${index}`, index)" checked-color="var(--k-color-primary)" :disabled="item.disabled" :name="`coupon${index}`" />
                 </div>
               </div>
             </div>
@@ -56,8 +56,11 @@
             进行兑换
           </div>
         </div>
+        <div style="height: 60px;">
+          
+        </div>
       </div>
-    </scroll-view>
+    </div>
     <div class="flewx">
       <div class="flewx-content">
         <div style="color: #333; font-size: 24px; padding-top: 5px">合计:</div>
@@ -103,11 +106,13 @@ export default {
 
   .parkingFeeCoupon {
     min-height: 99.88vh;
+    background: #f4f7ff;
   }
 }
 
 .card-list {
   width: 100%;
+  //background: #f4f7ff;
   display: flex;
   flex-direction: column;
   padding: 24px 20px;
@@ -151,7 +156,7 @@ export default {
         .itemValue {
           font-size: 50px;
           font-weight: 600;
-          color: #064c8a;
+          color: var(--k-color-primary);
         }
       }
     }
@@ -312,7 +317,7 @@ export default {
 
     .guide-mini {
       display: inline-block;
-      color: #064c8a;
+      color: var(--k-color-primary);
       text-decoration: underline;
       margin: 0 5px;
     }
@@ -344,14 +349,13 @@ export default {
   background-color: #fff;
   position: fixed;
   bottom: 0;
-  position: fixed;
   font-size: 30px;
   display: flex;
   align-items: center;
   justify-content: space-around;
   // padding-bottom: constant(safe-area-inset-bottom);
   // padding-bottom: env(safe-area-inset-bottom);
-  padding-bottom: 20px;
+  padding-bottom: 40px;
 
   .flewx-content {
     position: absolute;
@@ -372,7 +376,7 @@ export default {
     line-height: 70px;
     color: #fff;
     // background-image: linear-gradient(to right, #7e4fa1, #433c7f);
-    background-color: #064c8a;
+    background-color: var(--k-color-primary);
     // box-shadow: 2px 3px 5px #888888;
     position: absolute;
     right: 16px;

+ 13 - 33
src/pages/parkingFee/components/officeBlue/parkingFeeDetail.vue

@@ -1,6 +1,6 @@
 <template>
   <div v-if="orderDetail && orderDetail.parkingRecord && orderDetail.parkingRecord.vehicleNo">
-    <scroll-view class="scroll-Y">
+    <div class="scroll-Y">
       <div >
         <!-- <div @click="scan">扫一扫</div> -->
         <div class="warp">
@@ -51,7 +51,7 @@
           </div>
           <div
             class="warp_index warp_index_da"
-            v-if="enablePoints"
+            v-if="orderDetail && orderDetail.discountInfo"
           >
             <div>积分减免</div>
             <div class="warp_index_color" @click="showPointsMathPopup('bottom')">
@@ -69,13 +69,13 @@
           </div>
           <div
             class="warp_index warp_index_da"
-            v-if="enableCoupon"
+            v-if="orderDetail && orderDetail.discountInfo"
           >
             <div>优惠劵</div>
             <div class="warp_index_color" @click="coupon">
               <div
                 style="margin-right: 10px"
-                :class="maxOneDayCoupons > 0 ? 'text-red' : 'text-disable'"
+                :class="coupons.length > 0 ? 'text-red' : 'text-disable'"
               >
                 {{ couponDesc }}
               </div>
@@ -125,7 +125,8 @@
             <span class="title">缴费说明</span>
           </div>
           <div class="info" :class="!isShowDescription ? 'info_show' : ''">
-            <span>{{ orderDetail.parkInfo.description }}</span>
+            <!--            <span>{{ orderDetail.parkInfo.description }}</span>-->
+            <div v-html="setDescription()"></div>
           </div>
 
           <div
@@ -143,19 +144,8 @@
             <van-icon name="arrow-up" />
           </div>
         </div>
-        <!-- 占位 -->
-        <div
-          class="flewx"
-          style="
-            background-color: transparent;
-            color: transparent;
-            position: relative;
-          "
-        >
-          占位
-        </div>
       </div>
-    </scroll-view>
+    </div>
     <div class="flewx">
       <div class="flewx-content">
         合计<span style="color: #333; font-size: 36px; padding-left: 20px">{{
@@ -167,14 +157,7 @@
         >
         <!-- <van-count-down :time="3 * 60 * 1000" /> -->
         <div class="count-down-box">
-          <van-count-down
-            v-if="orderDetail.parkingRecord.vehicleNo"
-            format="mm:ss"
-            :time="refreshTime * 1000"
-            @finish="resetCountDown()"
-          >
-            <!--  -->
-          </van-count-down>
+          <van-count-down v-if="orderDetail.parkingRecord.vehicleNo" format="mm:ss" ref="countDown" :time="refreshTime * 1000" @finish="resetCountDown()" />
           <span class="desc">后同步最新费用</span>
         </div>
       </div>
@@ -196,15 +179,11 @@
       :maskClick="false"
       :close-on-click-overlay="false"
     >
-      <div class="popue_box">
+      <div class="popue_box" v-if="orderDetail && orderDetail.discountInfo">
         <div class="popue_box_index1">积分减免</div>
         <div class="popue_box_index">
           <div>减免规则</div>
-          <div style="color: #999999">
-            {{ pointsPerHour }}积分抵扣{{
-              orderDetail.parkInfo.parkMallCode === 5 ? integralToValue + '元' : '1小时'
-            }}
-          </div>
+          <div style="color: #989898">{{ pointsPerHour }}积分抵扣{{ orderDetail.parkInfo.parkMallCode === 5 ? unitAmount + '元' : '1小时' }}</div>
         </div>
         <div class="popue_box_index">
           <div>可用积分</div>
@@ -214,11 +193,11 @@
           <div>抵扣{{ orderDetail.parkInfo.parkMallCode === 5 ? '金额' : '时长' }}</div>
           <div class="popue_box_index" style="width: 325px">
             <div class="popue_box_index4_xs">
-              <div class="popue_box_index4_xs_index1" @click="$store.dispatch('order/pointsMath',{type: 'minus'})">
+              <div class="popue_box_index4_xs_index1" @click="$store.dispatch('order/pointsMath',{type: 'minus', callback: pointsMathCallback})">
                 -
               </div>
               <div class="popue_box_index4_xs_index2">{{ pointsTime }}</div>
-              <div class="popue_box_index4_xs_index3" @click="$store.dispatch('order/pointsMath',{type: 'add'})">
+              <div class="popue_box_index4_xs_index3" @click="$store.dispatch('order/pointsMath',{type: 'add', callback: pointsMathCallback})">
                 +
               </div>
             </div>
@@ -264,6 +243,7 @@ export default {
   flex-direction: column;
   height: 100vh;
   background: #f4f7ff;
+  padding-bottom: 300px;
   //padding-bottom: 20px;
 }
 

+ 21 - 42
src/pages/parkingFee/components/officeBlue/parkingFeeDetailSuccess.vue

@@ -1,5 +1,5 @@
 <template>
-  <scroll-view
+  <div
     scroll-y="true"
     class="scroll-Y"
     style="background-color: #f4f7ff"
@@ -7,19 +7,20 @@
     <div class="detail-box">
       <div class="parking-info mgb-40">
         <div class="parking-price">
-          <div class="price">{{ (detail.payFee / 100) | currency }}</div>
+          <div class="price">{{ detail.actualPayFee | currency }}</div>
           <div class="price-text">
-            {{ ['支付成功', '支付失败', '已退款'][detail.payStatus] }}
+<!--            {{ ['支付成功', '支付失败', '已退款'][detail.payStatus] }}-->
+            {{ detail.refundStatus !== 'NO_REFUND' ? '已退款' : {'PAID': '支付成功', 'FAILED': '支付失败'}[detail.payStatus || 'FAIED'] }}
           </div>
         </div>
         <div class="parking-part">
           <div class="parking-info-item">
             <span class="info-key">支付方式</span>
-            <span class="info-value">{{ detail.paykind || '' }}</span>
+            <span class="info-value">{{ detail.paymentMethod || '' }}</span>
           </div>
           <div class="parking-info-item">
             <span class="info-key">支付时间</span>
-            <span class="info-value">{{ detail.createTime || '' }}</span>
+            <span class="info-value">{{ detail.paymentTime }}</span>
           </div>
           <div class="parking-info-item">
             <span class="info-key">车牌号</span>
@@ -43,15 +44,15 @@
           </uni-view> -->
           <div class="parking-info-item">
             <span class="info-key">停车时长</span>
-            <span class="info-value">{{ detail.parkDuration }}</span>
+            <span class="info-value">{{ detail.serviceMin | parkingTime }}</span>
           </div>
           <div class="parking-info-item pb0">
             <span class="info-key">开票状态</span>
-            <span class="info-value">{{ isInvoiceName }}</span>
+            <span class="info-value">{{ detail.invoiceStatusText }}</span>
           </div>
         </div>
       </div>
-      <div class="parking-info mb-save">
+      <div class="parking-info mb-save" v-if="detail.discountInfo">
         <div class="parking-part">
           <div class="parking-info-item" v-if="false">
             <!--todo: 杭州首停不显示暂时根据groupId写死-->
@@ -62,49 +63,35 @@
           </div>
           <div class="parking-info-item">
             <span class="info-key">会员等级减免</span>
-            <span class="info-value fw">{{
-              (detail.discountInfo.memberLevelDiscount  / 100) | currency
-            }}</span>
+            <span class="info-value fw">{{ detail.discountInfo && detail.discountInfo.memberLevelDiscount | currency }}</span>
           </div>
           <div class="parking-info-item">
             <span class="info-key">消费减免</span>
-            <span class="info-value fw">{{
-              (detail.discountInfo.consumeDiscount / 100) | currency
-            }}</span>
+            <span class="info-value fw">{{ detail.discountInfo.consumeDiscount | currency }}</span>
           </div>
 
           <div class="parking-info-item">
             <span class="info-key">积分减免</span>
-            <span class="info-value fw">{{
-              (detail.discountInfo.pointsDiscount / 100) | currency
-            }}</span>
+            <span class="info-value fw">{{ detail.discountInfo.pointsDiscount | currency }}</span>
           </div>
           <div class="parking-info-item">
             <span class="info-key">会员卡券</span>
-            <span class="info-value fw">{{
-              (detail.discountInfo.couponDiscount / 100) | currency
-            }}</span>
+            <span class="info-value fw">{{ detail.discountInfo.couponDiscount | currency }}</span>
           </div>
           <div class="parking-info-item" v-if="detail.paperCouponCode">
             <span class="info-key">纸质优惠券</span>
-            <span class="info-value fw">{{
-              (detail.discountInfo.paperCouponDiscount / 100) | currency
-            }}</span>
+            <span class="info-value fw">{{ detail.discountInfo.paperCouponDiscount | currency }}</span>
           </div>
           <div class="parking-info-item pb0">
             <span class="info-key">使用优惠总计</span>
-            <span class="info-value fw">{{
-              ((detail.discountInfo.usingTotalDiscount || 0) / 100) | currency
-            }}</span>
+            <span class="info-value fw">{{ (detail.discountInfo.usingTotalDiscount || 0) | currency }}</span>
           </div>
           <div
             class="parking-info-item"
             v-if="detail.discountInfo.usingTotalDiscount > detail.discountInfo.actualUsedDiscount"
           >
             <span class="info-key">实际优惠总计</span>
-            <span class="info-value fw">{{
-              (detail.discountInfo.actualUsedDiscount / 100) | currency
-            }}</span>
+            <span class="info-value fw">{{ detail.discountInfo.actualUsedDiscount | currency }}</span>
           </div>
         </div>
         <div class="parking-detail"></div>
@@ -112,19 +99,19 @@
           <div class="parking-info-item">
             <span class="info-key">应缴</span>
             <span class="info-value fw">{{
-              (detail.totalFee ) | currency
+              detail.totalFee | currency
             }}</span>
           </div>
           <div class="parking-info-item">
             <span class="info-key">实缴</span>
             <span class="info-value fw">{{
-              (detail.actualPayFee / 100) | currency
+              detail.actualPayFee | currency
             }}</span>
           </div>
         </div>
       </div>
     </div>
-  </scroll-view>
+  </div>
 </template>
 
 <script>
@@ -136,22 +123,14 @@ export default {
 
 <style lang="less" scoped>
 .scroll-Y {
-  // width: 100%;
-  // display: flex;
-  // flex-direction: column;
-  // height: 100vh;
-  // background: #f2f2f2;
-  // padding-bottom: 20px;
+  height: 100vh;
+  overflow-y: scroll;
   .detail-box {
     padding: 30px;
     .parking-info {
-      // margin: 20px;
-      // border-radius: 30px;
-      // background-color: #ffffff;
       background: #fafbff;
       border-radius: 4px;
       border: 1px solid #d8dae0;
-
       .parking-price {
         text-align: center;
         padding: 30px 0px 50px;

+ 5 - 3
src/pages/parkingFee/components/officeBlue/parkingFeeList.vue

@@ -25,16 +25,17 @@
         </div>
         <div class="choice_card_index">{{ item.parkName }} </div>
         <div class="choice_card_index orderno-box">
-          <div class="orderno">订单号 : {{ item.id }}</div>
+          <div class="orderno">订单号 : {{ item.orderNo }}</div>
           <van-icon name="arrow" />
         </div>
         <div class="choice_card_index">
-          <div>入场时间 : {{ item.entertime }}</div>
+          <div>入场时间 : {{ item.enterTime }}</div>
         </div>
         <div class="choice_card_index mb0 pb0">
           <div>停车时长 : {{ item.serviceMin | parkingTime }}</div>
           <div :class="['status-box', item.payStatus !== 1 && 'other']">
-            {{ ['支付成功', '支付失败', '已退款'][item.refundStatus] }}
+            <!-- {{ ['支付成功', '支付失败', '已退款'][item.refundStatus] }} -->
+            {{ item.refundStatus !== 'NO_REFUND' ? '已退款' : {'PAID': '支付成功', 'FAILED': '支付失败'}[item.paymentStatus || 'FAIED'] }}
           </div>
         </div>
       </div>
@@ -44,6 +45,7 @@
           >{{ numberOfElements? '查看更多' : '没有更多数据了' }}
         </div>
       </div>
+      <div style="height: 10vh;"></div>
     </div>
   </scroll-view>
 </template>

+ 10 - 8
src/pages/parkingFee/components/officeBlue/parkingReceipt/parkingApplication.vue

@@ -1,6 +1,6 @@
 <template>
   <div>
-    <scroll-view class="scroll-Y" scroll-y>
+    <div class="scroll-Y" scroll-y>
       <div class="push-box">
         <div class="choose-invoice-header lines" @click="changeHeader">
           <div class="invoice-header-info" v-if="headerInfo.titleName">
@@ -112,7 +112,7 @@
           <div class="part-item lines">
             <span class="part-item-key">总金额</span>
             <span class="part-item-value"
-            ><span class="purple">{{ invoiceAmount.toFixed(2) }} 元</span></span
+            ><span class="purple">{{ invoiceAmount }} 元</span></span
             >
           </div>
           <div class="part-item top" v-if="type == ''">
@@ -143,8 +143,9 @@
                 class="van-field__control"
                 style="white-space: nowrap"
                 type="text"
+                @blur="mailboxChange"
                 placeholder="请输入电子邮箱"
-                v-model="condition.mailbox"
+                v-model="condition.email"
               />
               <!-- <textarea
                 rows="1"
@@ -154,9 +155,9 @@
               ></textarea> -->
             </div>
           </div>
-          <div class="part-item default-email">
+          <div class="part-item default-email" @click="changeDefaultEMail">
             <!-- @click="changeDefaultEMail" -->
-            <van-checkbox v-model="isDefaultEMail" icon-size="30PX"
+            <van-checkbox v-model="condition.emailAsDefault" @change="emailAsDefaultChange" icon-size="30PX"
             ><span class="text">保存电子邮箱为默认邮箱</span></van-checkbox
             >
             <!-- <van-checkbox-group v-model="isDefaultEMail">
@@ -173,6 +174,7 @@
             rows="3"
             placeholder-style="color:#999999"
             placeholder="选填"
+            @blur="storeRemarkChange"
             v-model="condition.remark"
           ></textarea>
         </div>
@@ -188,16 +190,16 @@
           占位
         </div>
       </div>
-    </scroll-view>
+    </div>
     <div class="push-btn">
       <div
-        v-if="headerInfo.invoiceTitleName || true"
+        v-if="headerInfo.titleName || true"
         :class="{
           btn: true,
           'push-again-btn': true,
           'blue-push-again-btn': custTypeId === 1,
           'green-push-again-btn': custTypeId === 2,
-        }"
+        }"s
         @click="submit"
       >
         提交

+ 4 - 4
src/pages/parkingFee/components/officeBlue/parkingReceipt/parkingChangeHeader.vue

@@ -30,7 +30,7 @@
               v-model="condition.invoiceTitleName"
             /> -->
               <van-field
-                v-model="condition.invoiceTitleName"
+                v-model="condition.titleName"
                 right-icon="arrow"
                 input-align="right"
                 placeholder="请输入抬头名称"
@@ -46,7 +46,7 @@
               v-model="condition.corporationTax"
             /> -->
               <van-field
-                v-model="condition.corporationTax"
+                v-model="condition.taxNo"
                 right-icon="arrow"
                 input-align="right"
                 placeholder="请输入公司税号"
@@ -58,7 +58,7 @@
             <div class="part-item-value">
               <van-switch
                 active-color="#064C8A"
-                v-model="isDefault"
+                v-model="condition.defaultOrNot"
                 @change="switch1Change"
               />
             </div>
@@ -104,7 +104,7 @@
               <span class="part-item-key">开户账户</span>
               <div class="part-item-value">
                 <van-field
-                  v-model="condition.accountNumber"
+                  v-model="condition.depositAccount"
                   right-icon="arrow"
                   input-align="right"
                   placeholder="请输入开户账户"

+ 6 - 6
src/pages/parkingFee/components/officeBlue/parkingReceipt/parkingChooseHeader.vue

@@ -1,6 +1,6 @@
 <template>
   <div>
-    <scroll-view class="scroll-Y" scroll-y>
+    <div class="scroll-Y" scroll-y>
       <div>
         <div class="choose-invoice-header" v-if="list.length">
           <van-radio-group class="radios">
@@ -15,15 +15,15 @@
                 <div class="invoice-header-text">
                   <div class="invoice-header-name">
                     <div class="invoice-header-name-text">
-                      {{ item.invoiceTitleName
-                      }}<span class="isDefault" v-if="item.setDefault === 1"
+                      {{ item.titleName
+                      }}<span class="isDefault" v-if="item.defaultOrNot"
                         >默认</span
                       >
                     </div>
                     <div class="invoice-header-name-icon">
                       <div
                         class="edit-header"
-                        @click.stop="changeHeader('edit', item.id)"
+                        @click.stop="changeHeader('edit', item.id, item)"
                       >
                         <img
                           class="invoice-header-arrow"
@@ -41,7 +41,7 @@
                     </div>
                   </div>
                   <div class="duty-paragraph">
-                    税号 {{ item.corporationTax }}
+                    税号 {{ item.taxNo }}
                   </div>
                 </div>
               </div>
@@ -53,7 +53,7 @@
           <div class="">您还没添加发票抬头</div>
         </div>
       </div>
-    </scroll-view>
+    </div>
     <div class="footer">
       <div
         :class="{

+ 9 - 8
src/pages/parkingFee/components/officeBlue/parkingReceipt/parkingOrderDetail.vue

@@ -1,5 +1,5 @@
 <template>
-  <scroll-view class="scroll-Y" scroll-y>
+  <div class="scroll-Y">
     <div>
       <div class="order-price">
         <div class="text">开票金额</div>
@@ -8,25 +8,26 @@
       <div class="tab-header">缴费订单总数 <span class="red">{{ orderList.length }}单</span></div>
       <div class="order-list">
         <div class="order-item" v-for="(item, index) in orderList" :key="index" @click="gotoDetail(item)">
-          <!-- 0:停车缴费  1:活动报名 2:积分兑换 -->
-          <template v-if="item.invoiceCategory === 0">
+          <!-- 0:停车缴费  1:活动报名 2:积分兑换 v-if="item.invoiceCategory === 0"-->
+          <template>
             <div class="item-header">
               <div class="carNo">{{ item.vehicleNo }}</div>
-              <div class="price">¥{{ getOrderItemPrice(item) }}</div>
+              <div class="price">¥{{item.totalPaidAmount }}</div>
+              <!-- getOrderItemPrice(item) -->
             </div>
             <div class="item-bottom">
               <div>{{ item.parkName }}</div>
               <div>订单号: {{ item.orderNo }}</div>
               <div>入场时间: {{ item.enterTime }}</div>
-              <div>停车时长: {{ item.serviceMin }}分钟</div>
+              <div>停车时长: {{ item.serviceMin | parkingTime }}分钟</div>
             </div>
           </template>
-          <template v-else-if="item.invoiceCategory === 1"></template>
-          <template v-else-if="item.invoiceCategory === 2"></template>
+<!--          <template v-else-if="item.invoiceCategory === 1"></template>-->
+<!--          <template v-else-if="item.invoiceCategory === 2"></template>-->
         </div>
       </div>
     </div>
-  </scroll-view>
+  </div>
 </template>
 
 <script>

+ 17 - 20
src/pages/parkingFee/components/officeBlue/parkingReceipt/parkingReceipt.vue

@@ -1,6 +1,6 @@
 <template>
   <div
-    class="scroll-Y"
+    :class="['scroll-Y',theme]"
     @scrolltolower="scrollLower"
   >
     <!-- <authorize ref="authorize"></authorize> -->
@@ -16,10 +16,10 @@
       </div>
     </div>
     <div class="choice_select">
-      <div :class="tabIndex === 1 ? 'choice_select_ews' : 'choice_select_ew'" />
+      <div :class="tabIndex == 1 ? 'choice_select_ews' : 'choice_select_ew'" />
     </div>
     <!-- 开票列表 -->
-    <scroll-view class="choice_card" :style="{ height: height }">
+    <div class="choice_card" :style="{ height: height }">
       <div class="suggestion-list">
         <van-checkbox-group v-model="ids" @change="checkboxChange">
           <label
@@ -51,8 +51,8 @@
                   ]"
                 >
                   ¥{{
-                    
-                      item.totalPaidAmount
+
+                    item.totalPaidAmount || item.invoiceTotalAmount
                   }}
                 </div>
               </div>
@@ -68,7 +68,7 @@
                     入场时间: {{ item.enterTime }}
                   </div>
                   <div class="choice_card_index mb0">
-                    停车时长: {{ item.serviceMin  }}
+                    停车时长: {{ item.serviceMin | parkingTime  }}
                   </div>
                 </div>
                 <div class="right" @click.stop>
@@ -102,20 +102,16 @@
                 <div class="right">
                   <!-- 0:已提交申请(待开票) 1:开票中  2:开票完成 3:开票失败 -->
                   <div class="choice_card_status">
-                    {{
-                      ['已提交申请(待开票)', '开票中', '开票完成', '开票失败'][
-                        item.status ? item.status : 1
-                        ]
-                    }}
+                    {{ statusObj[item.status||'FAILED'].name }}
                   </div>
-                  <div v-if="item.status === 3" class="try-again" @click="tryGoToInvoicing(item)">
+                  <div v-if="/FAILED|3/.test(item.status)" class="try-again" @click="tryGoToInvoicing(item)">
                     重新开票
                   </div>
                 </div>
               </div>
               <!-- 失败重试 -->
-              <div class="failureReason" v-if="item.status === 3">
-                <span @click.stop="showFailureReason(item)"
+              <div class="failureReason" v-if="item.status === 'FAILED'">
+                <span @click.stop="showFailureReason(item.errorMessage)"
                 ><van-icon name="info" /> 失败原因</span
                 >
               </div>
@@ -128,7 +124,7 @@
           <div v-else class="no-more-data">没有更多了</div>
         </div>
       </div>
-    </scroll-view>
+    </div>
     <div class="flewx" v-if="tabIndex == 1">
       <div class="priceBtn">
         <div>
@@ -372,16 +368,17 @@ export default {
 
 .flewx {
   width: 100%;
-  height: 150px;
+  //height: 150px;
+  padding-top: 20px;
   background-color: #fafbff;
   position: fixed;
   bottom: 0;
   display: flex;
   align-items: center;
   // justify-content: space-between;
-  padding-bottom: 20px;
-  padding-bottom: constant(safe-area-inset-bottom);
-  padding-bottom: env(safe-area-inset-bottom);
+  padding-bottom: 25px;
+  //padding-bottom: constant(safe-area-inset-bottom);
+  //padding-bottom: env(safe-area-inset-bottom);
 
   // .checkAll {
   // 	.checkboxItem {
@@ -391,7 +388,7 @@ export default {
   // }
   .priceBtn {
     width: 100%;
-    padding: 0 30px;
+    padding: 0 30px 20px;
     display: flex;
     align-items: center;
     margin-right: 20px;

+ 2 - 10
src/pages/parkingFee/components/purple/vehicleAddOrEdit.vue

@@ -1,19 +1,11 @@
 <template>
   <div :class="['wrap', theme]">
     <!-- <wx-points-commit ref='wxPointsCommit'></wx-points-commit> -->
-    <div :style="{ border: custTypeId === 0 ? '' : '1px solid #C69C6D' }">
-      <div class="search_tip_1" v-if="custTypeId === 0">
+    <div>
+      <div class="search_tip_1">
         <div class="title">车辆类型</div>
         <k-tab type="fill" @change="toggleType" :tabs="['普通车牌', '新能源', '特殊车牌']" />
       </div>
-      <!--  -->
-      <div class="switch-container-else" v-else>
-        <div v-for="(item, index) in licensePlateTypeArr" :key="index" class="switch-item" :class="index == carType ? 'switch-selected' : 'switch-else'" @click="toggleType(index)">
-          <div :class="index == carType ? 'switch-blue-color' : 'switch-blue-bg'" v-if="custTypeId === 1">{{ item.label }}</div>
-          <div :class="index == carType ? 'switch-green-color' : 'switch-green-bg'" v-if="custTypeId === 2">{{ item.label }}</div>
-          <div class="switch-line" v-if="index == carType"></div>
-        </div>
-      </div>
       <div class="input-box">
         <!-- <div v-for="i in carType === 1 ? 8 : 7" class="li" :key="`numArr${i}`" @click="clickShowKeyboard(i)" :class="[active === i ? 'active' : '']">
                   {{ numArr[i] }}

+ 5 - 1
src/pages/parkingFee/mixins/base.js

@@ -10,16 +10,20 @@ export default {
   computed: {
     ...mapState({
       custTypeId: (state) => state.custTypeId,
+      source: (state) => state.source,
     }),
   },
   mounted() {
     const com = ['purpleCom', 'blueCom', 'greenCom', 'officeBlueCom', 'purpleCom'];
-    if ( this.custTypeId < 3 || ! this.custTypeId) {
+    if ( this.custTypeId < 3 || !this.custTypeId) {
       this.componentName = 'baseParkingFeeCom';
       this.theme = 'theme-mall'
     } else {
       this.componentName = com[this.custTypeId];
       this.theme = 'theme-office'
     }
+    if ( this.source === 'KIP' ) {
+      this.theme = 'theme-office'
+    }
   },
 }

+ 21 - 1
src/pages/parkingFee/mixins/parkingFee.js

@@ -558,14 +558,34 @@ export default {
             针对微信的小程序码进行的兼容改造
             微信扫码结束之后的返回参数 {"errMsg": "scanCode:ok", "scanType": "WX_CODE", "charSet": "ISO8859-1", "rawData": "bGsoP3gyT1Aud3QpbW1JeHRfVHJsUjg4JnR5cGU9dW5saWNlbnNlZElu", "path": "pages/automatic/automaticIndex?scene=code%3D9988%26type%3DunlicensedIn"}
             */
-          if(res.scanType && res.scanType == 'WX_CODE') {
+          if(res.scanType && res.scanType === 'WX_CODE' && res.path) {
             const params = getUrlParams(`?${decodeURIComponent(res.path.replace(/.*scene=/g, ''))}`)
             this.$store.commit('SET_UNLICENSED_INFO', params);
             this.$nextTick(() => {
               this.qrCodesRule(params.code);
             })
           }
+          // 兜底逻辑,如果是其他小程序扫描,则提取rawData,进行解析提取入参
+          if(res.scanType && res.scanType === 'WX_CODE' && !res?.path){
+            let path = atob(res.rawData)
+            path = path.replace(/.*([a-z0-9]{6}&type)/g, '8b$1')
+            const regex = /(\w+)&type=(\w+)/;
+            const match = path.match(regex);
+            const obj = { code: match[1], type: match[2] };
+            this.$store.commit('SET_UNLICENSED_INFO', obj);
+            this.$nextTick(() => {
+              this.qrCodesRule(obj.code);
+            })
+          }
         };
+        runScanFn({
+         "errMsg": "scanCode:ok",
+         "result": "*",
+         "scanType": "WX_CODE",
+         "charSet": "ISO8859-1",
+         "rawData": "bG8kUWVkLjNZdVZpKkQ3dlhpbHJyVjM1NzNhMCZ0eXBlPXVubGljZW5zZWRJbg=="
+         })
+        return
         // 微信小程序
         const platform = getPlatform();
         if (platform === 'miniprogram') {

+ 7 - 1
src/pages/parkingFee/mixins/parkingFeeCoupon.js

@@ -20,6 +20,12 @@ export default {
       remainPrice: 0, // 剩余可用优惠额度
     };
   },
+  props:{
+    theme:{
+      type: String,
+      default: ''
+    }
+  },
   computed: {
     ...mapState({
       custTypeId: (state) => state.custTypeId,
@@ -131,7 +137,7 @@ export default {
       // 对分好组的优惠券进行不同规则处理
       Object.keys(groupedData).forEach(key => {
         const { selectedList, noSelectedList } = groupedData[key]; // 取出已选择的和未选择的
-        const { superposition, limitCountPerOrder = 0 } = [...selectedList, ...noSelectedList][0]; // 获取当前批次兑换的类型和可选上限
+        const { superposition, limitCountPerOrder = 0 } = selectedList.concat(noSelectedList)[0]; // 获取当前批次兑换的类型和可选上限
         switch (superposition) {
           case '1': // 不可叠加
             couponList = couponList.map((item, index) => {

+ 7 - 1
src/pages/parkingFee/mixins/parkingFeeDetail.js

@@ -23,6 +23,12 @@ export default {
       msData: {},
     };
   },
+  props:{
+    theme:{
+      type: String,
+      default: ''
+    }
+  },
   beforeRouteLeave(to, from, next) {
     // 设置下一个路由的 meta
     if (/index|home/.test(to.name)) {
@@ -438,7 +444,7 @@ export default {
     couponCount() { },
     // 重置倒计时
     resetCountDown() {
-      this.$refs.countDown.reset();
+      this.$refs?.countDown?.reset();
       this.$store.dispatch('order/orderInit', {
         gateId: this.$route.query?.gateId,
         vehicleNo: this.$route.query?.vehicleNo,

+ 15 - 4
src/pages/parkingFee/mixins/parkingFeeSuccess.js

@@ -1,8 +1,15 @@
-import payIcon from '../static/images/hint.png';
+// import payIcon from '../static/images/hint.png';
+import payIcon from '../static/images/pay-success.png';
 import { mapState } from 'vuex';
 import uni from '@/utils/uniHooks';
 
 export default {
+  props:{
+    theme:{
+      type: String,
+      default: ''
+    }
+  },
   onLoad(params) {
     const parkInfo = JSON.parse(uni.getStorageSync('parkinfo'));
     this.carno = params.carno;
@@ -12,7 +19,7 @@ export default {
   },
   data() {
     return {
-      carno: '',
+      vehicleNo: '',
       outParkCharging: 15,
       blueIcon: this.$picUrl + '/images/icon-success-blue.png',
       greenIcon: this.$picUrl + '/images/icon-success-green.png',
@@ -23,11 +30,12 @@ export default {
       custTypeId: (state) => state.custTypeId,
     }),
     icon() {
-      return this.custTypeId === 0
+      return payIcon
+      /*return this.custTypeId === 0
         ? payIcon
         : this.custTypeId === 1
         ? this.blueIcon
-        : this.greenIcon;
+        : this.greenIcon;*/
     },
   },
   mounted() {
@@ -36,6 +44,9 @@ export default {
         title: '提示',
       });
     }, 300);
+    if ( this.$router.query?.vehicleNo ) {
+      this.vehicleNo = this.$route.query.vehicleNo  
+    }
   },
   methods: {
     page_button() {

+ 81 - 317
src/pages/parkingFee/mixins/parkingReceipt/parkingApplication.js

@@ -1,12 +1,9 @@
-
-// const app = getApp()
 const app = {};
 import arrowIcon from '../../static/images/arrows.png';
 import { mapState } from 'vuex';
-// import MemberCacheTool from '@/utils/member-cache-tool.js';
 import uni from '@/utils/uniHooks';
 import { getUrlParams } from '@/utils/index.js';
-import { Dialog, Toast } from 'vant';
+import { Toast } from 'vant';
 import { invoicesDetail, submitInvoice, invoiceEmails, invoicesOrders } from '@/api/parking';
 
 export default {
@@ -19,18 +16,13 @@ export default {
       isDefaultEMail: false,
       ids: [],
       condition: {
-        // openid: this.openid,
-        // groupId: this.groupId,
-        // vipcode: this.member?.vipcode,
-        // invoiceName: '', // 否|发票名称
-        // invoiceCategory: 0, // 发票类型 0:停车缴费  1:活动
         invoiceType: 'GVATE', // 发票类型:gvat-增值税普通发票svat-增值税专⽤发票gvate-增值税电⼦普票发票svate-增值税电⼦专⽤发票
         remark: '',
         invoiceTitle: {}, // long|发票抬头id
         parkOrderList: [], // 被选中的缴费记录id
         email: '',
         id: '',
-        emailAsDefault: true
+        emailAsDefault: true,
       },
       headerInfo: {},
       // 总金额,单位分
@@ -44,76 +36,46 @@ export default {
       parkingOrder: null,
       pagesize: 10,
       page: 0,
-      parkingDetailList: []
+      parkingDetailList: [],
     };
   },
   created() {
-    // const options = this.$route.query;
-    // console.log('===>onLoad', options);
-    // this.pageOptions = options;
     // 埋点本地化
     this.preUrl = uni.getStorageSync('previousUrl');
-    uni.setStorageSync(
-      'previousUrl',
-      '/pages/parkingFee/parkingReceipt/parkingApplication.vue'
-    );
+    uni.setStorageSync('previousUrl', '/pages/parkingFee/parkingReceipt/parkingApplication.vue');
   },
   mounted() {
-    // console.log(253, this.ids);
     setTimeout(() => {
       uni.setNavigationBarTitle({
         title: '发票申请',
       });
     }, 300);
-    this.getEmail()
-    // console.clear();
+    this.getEmail();
     const query = getUrlParams();
-    // console.log('是否重新回到改页面', this.pageOptions);
-    // console.log('是否重新回到改页面', query);
-    // console.log(260, this.$route.query);
     this.pageOptions = query;
-    
-    console.log('this.pageOptions::', this.pageOptions)
-    
     if (this.pageOptions) {
       const options = this.pageOptions;
-      // console.log('===>onShow', options);
-      // console.log('===>onShow', options.ids);
-      console.log(typeof this.invoiceAmount)
       if (this.pageOptions.againInvoiceFlag) {
-        this.getInvoicesOrders(options.invoiceId)
+        this.getInvoicesOrders(options.invoiceId);
       } else {
         this.invoiceAmount = Number(options.money).toFixed(2);
         this.$store.commit('setTempParkingOrder', options.invoiceDetailList);
         this.$store.commit('setTempParkingMoney', this.invoiceAmount);
-        // if (typeof options.invoiceDetailList === 'object') {
-          this.parkingDetailList = JSON.parse(options.invoiceDetailList)
-        // }
-        
+        this.parkingDetailList = JSON.parse(options.invoiceDetailList);
       }
-      
-      console.log('this.invoiceAmount', this.invoiceAmount)
       if (options.ids) {
         const ids = options.ids;
         if (ids.indexOf(',') > -1) {
           this.ids = ids.split(',');
         } else {
-          this.ids =
-            typeof ids === 'string'
-              ? ids.indexOf('[') > -1
-                ? JSON.parse(ids)
-                : [ids]
-              : ids;
+          this.ids = typeof ids === 'string' ? (ids.indexOf('[') > -1 ? JSON.parse(ids) : [ids]) : ids;
         }
         this.orderQuantity = this.ids.length;
-        // console.log('获取订单信息');
         this.getParkOrderInfo();
-        this.getInvoiceEmailInfo();
       }
       if (options.header) {
         if (typeof options.header == 'string') {
           this.headerInfo = JSON.parse(options.header);
-          console.log('this.headerInfo:::', this.headerInfo)
         } else if (typeof options.header == 'object') {
           this.headerInfo = options.header;
         }
@@ -130,22 +92,25 @@ export default {
       mallId: (state) => state.mallId,
       kipUserId: (state) => state.kipUserId,
       userInfo: (state) => state.userInfo,
-      member: (state) => state.member,
+      storeEmail: (state) => state.invoice.email,
+      storeOldEmail: (state) => state.invoice.oldEmail,
+      storeEmailAsDefault: (state) => state.invoice.emailAsDefault,
+      storeRemark: (state) => state.invoice.remark,
+      storeOldRemark: (state) => state.invoice.oldrRemark,
     }),
   },
   methods: {
     getInvoicesOrders: async function (id) {
       try {
-        const res = await invoicesOrders(id)
-        this.invoiceAmount = res.invoiceTotalAmount
-        this.orderQuantity = res.invoicedOrders.length
-        this.parkingOrder = res.invoicedOrders
+        const res = await invoicesOrders(id);
+        this.invoiceAmount = res.invoiceTotalAmount;
+        this.orderQuantity = res.invoicedOrders.length;
+        this.parkingOrder = res.invoicedOrders;
         this.$store.commit('setTempParkingOrder', JSON.stringify(res.invoicedOrders));
         this.$store.commit('setTempParkingMoney', res.invoiceTotalAmount);
-        this.ids = res.invoicedOrders.map(item=>{
-          return item.id
-        })
-        console.log('1.28 查看发票关联的订单支付详情::::', res)
+        this.ids = res.invoicedOrders.map((item) => {
+          return item.id;
+        });
       } catch {
         uni.showToast({
           title: '服务器开小差了呢,请您稍后再试',
@@ -155,10 +120,22 @@ export default {
     },
     getEmail: async function () {
       try {
-        const res = await invoiceEmails()
-        this.condition.email = res.email
-        this.condition.emailAsDefault = res.emailAsDefault
-        console.log('邮箱::::', res)
+        const res = await invoiceEmails();
+        this.condition.emailAsDefault = res.emailAsDefault || this.storeEmailAsDefault;
+        if (res.email === this.storeOldEmail) {
+          this.condition.email = this.storeEmail;
+        } else {
+          this.condition.email = res.email;
+          this.$store.commit('invoice/set_email', res.email);
+          this.$store.commit('invoice/set_old_email', res.email);
+        }
+        if (res.remark === this.storeOldRemark) {
+          this.condition.remark = this.storeRemark;
+        } else {
+          this.condition.remark = res.remark;
+          this.$store.commit('invoice/set_remark', res.remark);
+          this.$store.commit('invoice/set_old_remark', res.remark);
+        }
       } catch {
         uni.showToast({
           title: '服务器开小差了呢,请您稍后再试',
@@ -176,11 +153,11 @@ export default {
       this.$router.push({
         path: 'parkingChooseHeader',
         query: {
-          ids:this.ids,
+          ids: this.ids,
           invoiceDetailList: JSON.stringify(this.invoiceDetailList),
           money: this.invoiceAmount,
-          invoiceId: this.pageOptions?.invoiceId
-        }
+          invoiceId: this.pageOptions?.invoiceId,
+        },
       });
     },
     gotoDetail() {
@@ -188,301 +165,88 @@ export default {
         path: 'parkingOrderDetail?useParkingOrderCache=true',
         query: {
           invoiceDetailList: this.pageOptions.againInvoiceFlag ? JSON.stringify(this.parkingOrder) : this.pageOptions.invoiceDetailList,
-          money: this.invoiceAmount
-        }
+          money: this.invoiceAmount,
+        },
       });
-      // this.$router.push({
-      //   path:
-      //     '/pages/parkingFee/parkingFeeDetailSuccess?orderNo=' +
-      //     this.orderInfo.orderNo,
-      // })
     },
     // 查询全部抬头列表信息
     getInvoiceTitle: async function () {
       const self = this;
       const params = {
         page: this.page,
-        size: this.pagesize
+        size: this.pagesize,
       };
       self.$md(params);
       try {
-        const res = await invoicesDetail(params)
+        const res = await invoicesDetail(params);
         if (res) {
-          console.log('res:::', res)
           const list = res.content;
           let currentIndex = 0;
           list.map((item, index) => {
             if (item.defaultOrNot) currentIndex = index;
           });
-          const headerInfo = list[currentIndex] || {};
-          self.headerInfo = headerInfo;
+          self.headerInfo = list[currentIndex] || {};
         }
-      } catch(err) {
-        console.log(111, err)
+      } catch (err) {
         uni.showToast({
           title: err.langMessage,
           icon: 'none',
         });
       }
-      // uni.request({
-      //   url: self.$baseURL + 'api/1.0/invoiceTitle/page',
-      //   method: 'GET',
-      //   data: params,
-      //   header: JSON.parse(uni.getStorageSync('handleUser')),
-      //   success: (res) => {
-      //     // console.log('开票信息', res.data);
-      //     if (res.data.code === 0) {
-      //       const list = res.data.data;
-      //       let currentIndex = 0;
-      //       list.map((item, index) => {
-      //         if (item.setDefault == 1) currentIndex = index;
-      //       });
-      //       const headerInfo = list[currentIndex] || {};
-      //       self.headerInfo = headerInfo;
-      //       // console.log('发票抬头--', self.headerInfo);
-      //     } else {
-      //       // uni.showToast({
-      //       //   title: res.data.msg,
-      //       //   duration: 2000,
-      //       //   icon: 'none',
-      //       // });
-      //       Toast({
-      //         message: res.data.msg,
-      //       });
-      //     }
-      //   },
-      //   fail: () => {
-      //     Toast({
-      //       message: '服务器开小差了呢,请您稍后再试',
-      //     });
-      //     /* uni.showToast({
-      //      title: '服务器开小差了呢,请您稍后再试',
-      //      icon: 'none',
-      //      }); */
-      //   },
-      // });
     },
     // 根据选中的停车缴费记录id获取详情信息
     getParkOrderInfo() {
       // 如果当前是活动开票的话,则不差详情
       if (this.type) return;
-      const self = this;
-      // console.log('根据选中的停车缴费记录id获取详情信息', this.ids);
-      // self.$md(this.ids);
-      // console.log(
-      //   'getParkOrderInfo',
-      //   self.$baseURL + 'api/1.0/invoice/myParkOrderListByIds'
-      // );
-      // return;
-      self.parkingOrder = this.pageOptions.invoiceDetailList;
-      // self.invoiceAmount = (datas.invoiceAmount / 100).toFixed(2);
-      // self.orderInfo = datas.list[0];
-      // console.log('self.parkingOrder:::', JSON.parse(self.parkingOrder))
-      // uni.request({
-      //   url: self.$baseURL + 'api/1.0/invoice/myParkOrderListByIds',
-      //   method: 'POST',
-      //   data: typeof this.ids === 'string' ? [this.ids] : this.ids,
-      //   header: JSON.parse(uni.getStorageSync('handleUser')),
-      //   success: (res) => {
-      //     if (res.data.code === 0) {
-      //       const datas = res.data.data;
-      //       console.log('387387387387387387387获取详情信息', datas);
-      //       self.parkingOrder = datas;
-      //       self.invoiceAmount = (datas.invoiceAmount / 100).toFixed(2);
-      //       self.orderInfo = datas.list[0];
-      //     } else {
-      //       /* uni.showToast({
-      //        title: res.data.msg,
-      //        duration: 2000,
-      //        icon: 'none',
-      //        }); */
-      //       Toast({
-      //         message: res.data.msg,
-      //       });
-      //     }
-      //   },
-      //   fail: () => {
-      //     /* uni.showToast({
-      //      title: '服务器开小差了呢,请您稍后再试',
-      //      icon: 'none',
-      //      }); */
-      //     Toast({
-      //       message: '服务器开小差了呢,请您稍后再试',
-      //     });
-      //   },
-      // });
-    },
-    // 获取用户邮箱信息
-    getInvoiceEmailInfo() {
-      const self = this;
-      // const openId = MemberCacheTool.getOpenId(app);
-      var data = {
-        openid: this.openId,
-        groupId: this.groupId,
-        vipcode: this.member?.vipcode,
-      };
-      self.$md(data);
-      // console.log(
-      //   '获取用户邮箱信息',
-      //   self.$baseURL + 'api/1.0/invoice/getInvoiceEmailInfo'
-      // );
-      // console.log(421, data);
-      // uni.request({
-      //   url: self.$baseURL + 'api/1.0/invoice/getInvoiceEmailInfo',
-      //   method: 'POST',
-      //   data: data,
-      //   header: JSON.parse(uni.getStorageSync('handleUser')),
-      //   success: (res) => {
-      //     if (res.data.code === 0) {
-      //       console.log('获取用户邮箱信息', res.data);
-      //       if (res.data.data) {
-      //         this.emailAsDefault = true;
-      //         this.condition.mailbox = res.data.data;
-      //       } else {
-      //         this.emailAsDefault = false;
-      //         this.condition.mailbox = '';
-      //       }
-      //     } else {
-      //       /* uni.showToast({
-      //        title: res.data.msg,
-      //        duration: 2000,
-      //        icon: 'none',
-      //        }); */
-      //       Toast({
-      //         message: res.data.msg,
-      //       });
-      //     }
-      //   },
-      //   fail: () => {
-      //     Toast({
-      //       title: '服务器开小差了呢,请您稍后再试',
-      //     });
-      //     /* uni.showToast({
-      //      title: '服务器开小差了呢,请您稍后再试',
-      //      icon: 'none',
-      //      }); */
-      //   },
-      // });
+      this.parkingOrder = this.pageOptions.invoiceDetailList;
     },
     submit: async function () {
       const self = this;
       if (!self.condition.email) {
-        /* uni.showToast({
-         title: '请输入电子邮箱地址',
-         duration: 2000,
-         icon: 'none',
-         }); */
         Toast({
           message: '请输入电子邮箱地址',
         });
         return false;
       }
-      // const re =
-      //   /^[A-Za-z\d]+([-_.][A-Za-z\d]+)*@([A-Za-z\d]+[-.])+[A-Za-z\d]{2,4}$/;
-      // if (re.test(self.condition.mailbox)) {
-      //   uni.showToast({
-      //     title: '电子邮箱格式有误,请输入正确的电子邮箱',
-      //     duration: 2000,
-      //     icon: 'none',
-      //   });
-      //   return false;
-      // }
       const params = self.condition;
-      params.parkOrderList = self.ids.map(item=>{
-        return item = {
-          id: item
-        }
+      params.parkOrderList = self.ids.map((item) => {
+        return (item = {
+          id: item,
+        });
       });
 
-      
-      params.invoiceTitle.id = this.headerInfo.id
-      params.totalAmount = Number(this.invoiceAmount)
+      params.invoiceTitle.id = this.headerInfo.id;
+      params.totalAmount = Number(this.invoiceAmount);
       if (this.pageOptions.invoiceId) {
-        params.id = this.pageOptions.invoiceId
+        params.id = this.pageOptions.invoiceId;
       }
-      console.log('params.parkOrderList::', params)
-  // params.openid = this.openid;
-  // params.groupId = this.groupId;
-  // params.vipcode = this.member?.vipcode;
-  // console.log('提交发票请求的入参', params);
-  if (self.isSubmitFlag) {
-  // 勾选默认邮箱埋点
-//   if (self.isDefaultEMail) {
-//   self.sensorsClick('$SetDefaultEmail', {
-//   redirect_path: '',
-//   mailbox: self.condition.mailbox,
-// });
-// }
-  self.isSubmitFlag = false;
-  console.log(488, '前往开票', params);
-  try {
-    const res = await submitInvoice(params)
-    if (res) {
-      Toast({
-        message: '开票成功',
-      });
-      this.$router.replace({
-        path: 'parkingReceipt',
-      });
+      if (self.isSubmitFlag) {
+        self.isSubmitFlag = false;
+        try {
+          const res = await submitInvoice(params);
+          if (res) {
+            Toast({
+              message: '开票成功',
+            });
+            this.$router.replace({
+              path: 'parkingReceipt',
+            });
+          }
+        } catch (err) {
+          console.log(111, err);
+        }
+      }
+    },
+    mailboxChange() {
+      if (this.storeOldEmail !== this.condition.email) {
+        this.$store.commit('invoice/set_email', this.condition.email);
+      }
+    },
+    emailAsDefaultChange() {
+      this.$store.commit('invoice/set_emailAsDefault', this.condition.emailAsDefault);
+    },
+    storeRemarkChange() {
+      this.$store.commit('invoice/set_remark', this.condition.remark);
     }
-  } catch (err) {
-    console.log(111, err);
-  }
-//   uni.request({
-//   // url: self.$baseURL + 'api/1.0/invoice/addMyInvoiceInfo',
-//   url: self.$baseURL + 'api/temporary-parking-service/invoices',
-//   method: 'POST',
-//   data: params,
-//   header: JSON.parse(uni.getStorageSync('handleUser')),
-//   success: (res) => {
-//   console.log('提交发票请求', res.data);
-//   if (res.data.code === 0) {
-//   // 因为合并开票接口中无法判断是否是一个CO(一个发票id可以直接进发票详情)还是两个CO,所以统一返回到发票列表页面 ?
-//   this.$router.replace({
-//   path: 'parkingReceipt',
-// });
-// } else {
-//   /* uni.showToast({
-//    title: res.data.msg,
-//    duration: 2000,
-//    icon: 'none',
-//    }); */
-//   Toast({
-//   message: res.data.msg,
-// });
-// }
-// },
-//   fail: () => {
-//   self.isSubmitFlag = true;
-//   /* uni.showToast({
-//    title: '服务器开小差了呢,请您稍后再试',
-//    icon: 'none',
-//    }); */
-//   oast({
-//   message: '服务器开小差了呢,请您稍后再试',
-// });
-// },
-// });
-}
-},
-  // 埋点方法
-  sensorsClick(eventName, params) {
-  let optionsQuery = uni.getStorageSync('options_query');
-  let fixedParams = {
-  cta_itemno: '',
-  cta_name: '',
-  previous_path: this.preUrl || '',
-  $location: uni.getStorageSync('mallid'),
-  $brand_id: uni.getStorageSync('groupId'),
-  $channel: optionsQuery.channel || '',
-  // $utm_lbs: this.optionsQuery.utm_lbs || '',
-  $utm_channel: optionsQuery.utm_channel || '',
-  $utm_method: optionsQuery.utm_method || '',
-  $utm_source: optionsQuery.utm_source || '',
-  $utm_function: optionsQuery.utm_function || '',
-  $utm_user: optionsQuery.utm_user || '',
-},
-  finalParams = Object.assign(fixedParams, params);
-},
-},
+  },
 };

+ 16 - 0
src/pages/parkingFee/mixins/parkingReceipt/parkingChangeHeader.js

@@ -149,6 +149,22 @@ export default {
     submit: async function () {
       let res = null
       try {
+        if ( this.isCompany ) {
+          if ( !this.condition?.titleName ) {
+            uni.showToast({
+              title: '请输入公司名称',
+              icon: 'none',
+            });
+            return
+          }
+          if ( !this.condition?.taxNo ) {
+            uni.showToast({
+              title: '请输入公司税号',
+              icon: 'none',
+            });
+            return
+          }
+        }
         if (this.type === 'add') {
           
           res = await invoicesNewtitles(this.condition)

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

@@ -27,6 +27,7 @@ export default {
       console.log('tempParkingOrder.invoiceDetailList:::', tempParkingOrder.invoiceDetailList)
       const orderList = JSON.parse(tempParkingOrder.invoiceDetailList);
       console.log(231,options)
+      console.log(231, orderList)
       // orderList.forEach((item) => {
       //   item.invoiceCategory = 0;
       // });

+ 28 - 142
src/pages/parkingFee/mixins/parkingReceipt/parkingReceipt.js

@@ -15,6 +15,12 @@ import CacheTool from '@/utils/cache-tool'
 import { invoicesCompleted, invoicesNotapplied } from '@/api/parking';
 import { Dialog } from 'vant';
 export default {
+  props:{
+    theme:{
+      type: String,
+      default: ''
+    }
+  },
   data() {
     return {
       globalData: app.globalData,
@@ -39,7 +45,24 @@ export default {
       preUrl: '',
       invoiceDetailList: [],
       boxids: [],
-      choosekMax: 200
+      choosekMax: 200,
+      statusObj:{
+        'COMPLETE': {
+          name: '开票完成'
+        },
+        'SUBMITTED': {
+          name: '开票中'
+        },
+        'FAILED': {
+          name:'开票失败'
+        },
+        3: {
+          name:'开票失败'
+        },
+        2: {
+          name:'开票中'
+        }
+      }
     };
   },
   components: {
@@ -69,10 +92,9 @@ export default {
     }),
   },
   created() {
-    // this.getInvoiceList();
-    // this.options = options
     // 埋点本地化
     this.preUrl = uni.getStorageSync('previousUrl');
+    this.$store.dispatch('invoice/init')
     uni.setStorageSync(
       'previousUrl',
       '/pages/parkingFee/parkingReceipt/parkingReceipt.vue'
@@ -168,7 +190,7 @@ export default {
           if (this.ids > 2) {
             Dialog.confirm({
               message: '确认要删除该发票抬头吗?',
-              confirmButtonColor: '#644A79'
+              confirmButtonColor: this.$theme[this.theme].primaryColor,
             })
               .then(() => {
                 
@@ -199,84 +221,20 @@ export default {
         page: this.page,
         size: this.pagesize,
       };
-      console.log(273, params);
-      // return;
-
-      // self.$md(data);
       try {
         let res = null;
         if (this.tabIndex === 1) {
           res = await invoicesNotapplied(params)
         } else {
           res = await invoicesCompleted(params)
-        //   res = {
-        //     content: [      
-        //         {
-        //             id: 2,
-        //             titleName: "XX科技公司",
-        //             taxNo: "yedUsFwdWbxeTeQOv",
-        //             defaultOrNot: true,
-        //             companyAddress: "上海静安",
-        //             companyTel: "02189878983",
-        //             depositBank: "招商银行",
-        //             depositAccount: "43499892879472445",
-        //             invoiceTitleType: "COMPANY",
-        //             status: 2,
-        //             invoiceTotalAmount:0.4
-        //         },
-        //         {
-        //             id: 1,
-        //             titleName: "XX科技公司",
-        //             taxNo: "yedUsFwdkelQ",
-        //             defaultOrNot: true,
-        //             companyAddress: "上海静安",
-        //             companyTel: "02189878983",
-        //             depositBank: "招商银行",
-        //             depositAccount: "43499892879472445",
-        //             invoiceTitleType: "COMPANY",
-        //             status: 2,
-        //             invoiceTotalAmount: 10.00
-        //         }
-        //     ],
-        //     "pageable": {
-        //         "sort": {
-        //             "unsorted": false,
-        //             "sorted": true,
-        //             "empty": false
-        //         },
-        //         "pageNumber": 0,
-        //         "pageSize": 4,
-        //         "offset": 0,
-        //         "unpaged": false,
-        //         "paged": true
-        //     },
-        //     "last": true,
-        //     "totalPages": 1,
-        //     "totalElements": 3,
-        //     "first": true,
-        //     "sort": {
-        //         "unsorted": false,
-        //         "sorted": true,
-        //         "empty": false
-        //     },
-        //     "number": 0,
-        //     "numberOfElements": 3,
-        //     "size": 4,
-        //     "empty": false
-        // }
         }
           console.log('99', res)
           if (res) {
             this.total = res.size;
-            // setTimeout(() => {
-            //   this.list = res.content
-            // }, 3000);
             const listarr = res.content
             if (listarr.length > 0) {
               this.list = this.list.concat(res.content)
             }
-            // this.list = this.list.concat(res.content);
-            console.log(111, res.content)
             // 返回数据量小于pagesize,则表示此为最后一页
             if (res.content.length < this.pagesize) {
               this.isLoadMore = true;
@@ -289,68 +247,11 @@ export default {
             this.loadStatus = 'nomore';
           }
       } catch(err) {
-        console.log(201, err);
-        // uni.showToast({
-        //   title: '服务器开小差了呢,请您稍后再试',
-        //   icon: 'none',
-        // });
         this.isLoadMore = false;
         if (this.page > 1) {
           this.page -= 1;
         }
       }
-      // const url =
-      //   this.tabIndex === 1
-      //   ? 'temporary-parking-service/invoices/not-applied'
-      //   :'temporary-parking-service/invoices/completed'
-      // uni.request({
-      //   url: self.$baseURL + url,
-      //   method: 'POST',
-      //   data: data,
-      //   header: JSON.parse(uni.getStorageSync('handleUser')),
-      //   success: (res) => {
-      //     console.log(379, res);
-      //     // const res = {
-      //     //   data: myNotInvoicedList
-      //     // }
-      //     if (res.data.code === 0) {
-      //       if (res.data.data) {
-      //         this.total = res.data.data.length;
-      //         this.list = this.list.concat(res.data.data);
-      //         // 返回数据量小于pagesize,则表示此为最后一页
-      //         if (res.data.data.length < this.pagesize) {
-      //           this.isLoadMore = true;
-      //           this.loadStatus = 'nomore';
-      //         } else {
-      //           this.isLoadMore = false;
-      //         }
-      //       } else {
-      //         this.isLoadMore = true;
-      //         this.loadStatus = 'nomore';
-      //       }
-      //     } else {
-      //       uni.showToast({
-      //         title: res.data.msg,
-      //         duration: 2000,
-      //         icon: 'none',
-      //       });
-      //       this.isLoadMore = false;
-      //       if (this.page > 1) {
-      //         this.page -= 1;
-      //       }
-      //     }
-      //   },
-      //   fail: () => {
-      //     uni.showToast({
-      //       title: '服务器开小差了呢,请您稍后再试',
-      //       icon: 'none',
-      //     });
-      //     this.isLoadMore = false;
-      //     if (this.page > 1) {
-      //       this.page -= 1;
-      //     }
-      //   },
-      // });
     },
     checkboxChange(ids) {
       this.boxids = ids
@@ -361,7 +262,7 @@ export default {
           title: '选择上限提示',
           message: '合并开票订单数量上限为200条,超出的部分请多次开具',
           confirmButtonText: '关闭',
-          confirmButtonColor: '#644A79'
+          confirmButtonColor: this.$theme[this.theme].primaryColor,
         }).then(() => {
           // on close
         });
@@ -396,28 +297,13 @@ export default {
       } else {
         this.totalNum = 0;
       }
-      /* console.log(439, this.list)
-       return
-       if (list && list.length > 0) {
-       let totalNum = 0;
-       let ids = [];
-       list.forEach(item => {
-       if (item.checked) {
-       const payfee = item.payfee;
-       totalNum += payfee;
-       ids.push(item.id)
-       }
-       });
-       this.ids = ids;
-       this.totalNum = totalNum;
-       } */
     },
     showFailureReason(reson) {
       this.$dialog({
         title: '开票失败原因',
         message: reson,
         confirmButtonText: '关闭',
-        confirmButtonColor: '#644A79',
+        confirmButtonColor: this.$theme[this.theme].primaryColor,
       }).then(() => {
         // on confirm
         console.log('confirm');

+ 3 - 1
src/pages/parkingFee/parkingFeeDetail.vue

@@ -1,10 +1,11 @@
 <template>
-  <component :is="componentName"></component>
+  <component :is="componentName" :theme="theme"></component>
 </template>
 
 <script>
 import officeBlueCom from './components/officeBlue/parkingFeeDetail.vue';
 import baseParkingFeeCom from './components/base/parkingFeeDetail.vue';
+import parkingFeeDetail from './components/purple/parkingFeeDetail.vue';
 import baseMixins from './mixins/base';
 
 export default {
@@ -13,6 +14,7 @@ export default {
   components: {
     officeBlueCom,
     baseParkingFeeCom,
+    purpleCom: parkingFeeDetail
   },
 };
 </script>

+ 16 - 3
src/pages/parkingFee/parkingFeeMsg.vue

@@ -56,16 +56,17 @@
 
 <script>
 import { qrCodes,unlicensedCarCheckIn } from "@/api/parking";
+import baseMixins from "@/pages/parkingFee/mixins/base";
 import uni from '@/utils/uniHooks';
 import { initWxJsSdkConfig } from '@/utils/login';
-import { getPlatform,getUrlParams } from '@/utils/index';
+import { getPlatform,getUrlParams } from '@/utils';
 import {mapState} from "vuex";
 
 export default {
+  mixins: [baseMixins],
   name: 'parkingFeeMsg',
   data() {
     return {
-      theme: 'theme-mall',
       type: '',
       vehicleNo: '',
     };
@@ -106,13 +107,25 @@ export default {
          针对微信的小程序码进行的兼容改造
          微信扫码结束之后的返回参数 {"errMsg": "scanCode:ok", "scanType": "WX_CODE", "charSet": "ISO8859-1", "rawData": "bGsoP3gyT1Aud3QpbW1JeHRfVHJsUjg4JnR5cGU9dW5saWNlbnNlZElu", "path": "pages/automatic/automaticIndex?scene=code%3D9988%26type%3DunlicensedIn"}
          */
-        if(res.scanType && res.scanType === 'WX_CODE') {
+        if(res.scanType && res.scanType === 'WX_CODE' && res?.path) {
           const params = getUrlParams(`?${decodeURIComponent(res.path.replace(/.*scene=/g, ''))}`)
           this.$store.commit('SET_UNLICENSED_INFO', params);
           this.$nextTick(() => {
             this.qrCodesRule(params.code);
           })
         }
+        // 兜底逻辑,如果是其他小程序扫描,则提取rawData,进行解析提取入参
+        if(res.scanType && res.scanType === 'WX_CODE' && !res?.path){
+          let path = atob(res.rawData)
+          path = path.replace(/.*([a-z0-9]{6}&type)/g, '8b$1')
+          const regex = /(\w+)&type=(\w+)/;
+          const match = path.match(regex);
+          const obj = { code: match[1], type: match[2] };
+          this.$store.commit('SET_UNLICENSED_INFO', obj);
+          this.$nextTick(() => {
+            this.qrCodesRule(obj.code);
+          })
+        }
       };
       // 微信小程序
       const platform = getPlatform();

+ 8 - 2
src/pages/parkingFee/parkingFeeSuccess.vue

@@ -1,17 +1,23 @@
 <template>
-  <component :is="componentName"></component>
-</div>
+  <div>
+    <component :is="componentName" :theme="theme"></component>
+  </div>
 </template>
 
 <script>
 import officeBlueCom from './components/officeBlue/parkingFeeSuccess.vue';
 import baseParkingFeeCom from './components/base/parkingFeeSuccess.vue';
+import purpleCom from './components/purple/parkingFeeSuccess.vue';
 import baseMixins from './mixins/base'
 export default {
   mixins:[baseMixins],
   components: {
     officeBlueCom,
     baseParkingFeeCom,
+    purpleCom
   },
+  mounted() {
+    this.componentName = 'purpleCom';
+  }
 };
 </script>

+ 4 - 1
src/pages/parkingFee/parkingReceipt/parkingReceipt.vue

@@ -1,5 +1,5 @@
 <template>
-  <component :is="componentName"></component>
+  <component :is="componentName" :theme="theme"></component>
 </template>
 
 <script>
@@ -12,5 +12,8 @@ export default {
     officeBlueCom,
     baseParkingFeeCom,
   },
+  mounted() {
+    // this.componentName = 'baseParkingFeeCom';
+  }
 };
 </script>

+ 80 - 83
src/store/index.js

@@ -1,20 +1,21 @@
 import Vue from 'vue';
 import Vuex from 'vuex';
-import { Encrypt, Decrypt } from '@/utils/crypto';
+import { Encrypt,Decrypt } from '@/utils/crypto';
 import { crmQueryMemberInfo } from '@/utils/api-crm-member';
 import uni from '@/utils/uniHooks';
-import { kipAllCities, kipGetUserDetail } from '@/utils/api-kip';
+import { kipAllCities,kipGetUserDetail } from '@/utils/api-kip';
 import cachedViews from './cachedViews';
 import order from './order';
+import invoice from './invoice';
 import { lbsDictionary } from '@/common/js/BaseDictionary';
 import { getGroupIdAndMallIdByLsbId } from '@/utils';
 // import { parkingLots } from '@/utils/api-crm-ms';
 
 Vue.use(Vuex);
 
-function getValue(state, key) {
+function getValue( state,key ) {
   let value = state[key];
-  if (!value) {
+  if ( !value ) {
     value = uni.getStorageSync(key);
   }
   // console.log(1414141414141414, { key, value });
@@ -58,115 +59,116 @@ const store = new Vuex.Store({
     endlessLoop: ''
   },
   mutations: {
-    SET_GROUP_ID(state, payload) {
-      uni.setStorageSync('groupId', payload);
+    SET_GROUP_ID( state,payload ) {
+      uni.setStorageSync('groupId',payload);
       state.groupId = payload;
     },
-    SET_KIP_USER_ID(state, payload) {
-      uni.setStorageSync('kipUserId', payload);
+    SET_KIP_USER_ID( state,payload ) {
+      uni.setStorageSync('kipUserId',payload);
       state.kipUserId = payload;
     },
-    SET_MALL_ID(state, payload) {
-      uni.setStorageSync('mallId', payload);
+    SET_MALL_ID( state,payload ) {
+      uni.setStorageSync('mallId',payload);
       state.mallId = payload;
     },
-    SET_OPENID(state, payload) {
-      uni.setStorageSync('openid', payload);
+    SET_OPENID( state,payload ) {
+      uni.setStorageSync('openid',payload);
       state.openid = payload;
     },
-    SET_WX_ACCESS_TOKEN(state, payload) {
-      uni.setStorageSync('wxAccessToken', payload);
+    SET_WX_ACCESS_TOKEN( state,payload ) {
+      uni.setStorageSync('wxAccessToken',payload);
       state.access_token = payload;
     },
-    SET_WX_REFRESH_TOKEN(state, payload) {
-      uni.setStorageSync('wxRefreshToken', payload);
+    SET_WX_REFRESH_TOKEN( state,payload ) {
+      uni.setStorageSync('wxRefreshToken',payload);
       state.refresh_token = payload;
     },
-    SET_MEMBER(state, payload) {
-      uni.setStorageSync('member', payload);
+    SET_MEMBER( state,payload ) {
+      uni.setStorageSync('member',payload);
       state.member = payload;
     },
-    SET_USER_INFO(state, payload) {
-      uni.setStorageSync('userInfo', payload);
+    SET_USER_INFO( state,payload ) {
+      uni.setStorageSync('userInfo',payload);
       state.userInfo = payload;
     },
-    SET_MOBILE(state, payload) {
-      uni.setStorageSync('mobile', payload);
+    SET_MOBILE( state,payload ) {
+      uni.setStorageSync('mobile',payload);
       state.mobile = payload;
     },
-    SET_PARAMS_SCENE(state, payload) {
-      uni.setStorageSync('paramsScene', payload);
+    SET_PARAMS_SCENE( state,payload ) {
+      uni.setStorageSync('paramsScene',payload);
       state.paramsScene = payload;
     },
-    SET_PARK_FEE(state, payload) {
+    SET_PARK_FEE( state,payload ) {
       state.parkFee = payload;
     },
-    SET_MARKET_LIST(state, payload) {
+    SET_MARKET_LIST( state,payload ) {
       state.marketList = payload;
     },
-    SET_PROJECT_ID(state, payload) {
-      uni.setStorageSync('projectId', payload);
+    SET_PROJECT_ID( state,payload ) {
+      uni.setStorageSync('projectId',payload);
       state.projectId = payload;
     },
-    SET_IS_LOGIN(state, payload) {
+    SET_IS_LOGIN( state,payload ) {
       state.isLogin = payload;
       // uni.setStorageSync('passLogin', payload);
     },
-    SET_ACCESS_TOKEN(state, payload) {
+    SET_ACCESS_TOKEN( state,payload ) {
       state.accessToken = payload;
       // uni.setStorageSync('accessToken', payload);
-      uni.setStorageSync('kipAccessToken', payload);
+      uni.setStorageSync('kipAccessToken',payload);
     },
-    setTempParkingOrder(state, payload) {
+    setTempParkingOrder( state,payload ) {
       state.tempParkingOrder = payload;
     },
-    setTempParkingMoney(state, payload) {
+    setTempParkingMoney( state,payload ) {
       state.tempParkingMoney = payload;
     },
     // setbonusCopy
-    SET_BONUS_COPY(state, payload) {
+    SET_BONUS_COPY( state,payload ) {
       state.bonusCopy = payload;
     },
-    SET_CUST_TYPE_ID(state, payload) {
-      uni.setStorageSync('custTypeId', payload);
+    SET_CUST_TYPE_ID( state,payload ) {
+      uni.setStorageSync('custTypeId',payload);
       state.custTypeId = payload;
     },
-    SET_SOURCE(state, payload) {
-      uni.setStorageSync('source', payload);
+    SET_SOURCE( state,payload ) {
+      uni.setStorageSync('source',payload);
       state.source = payload;
     },
-    SET_APPID(state, payload) {
-      uni.setStorageSync('appId', payload);
+    SET_APPID( state,payload ) {
+      uni.setStorageSync('appId',payload);
       state.appId = payload;
     },
-    SET_BRAND_INFO(state, payload) {
-      uni.setStorageSync('brandInfo', payload);
+    SET_BRAND_INFO( state,payload ) {
+      uni.setStorageSync('brandInfo',payload);
       state.brandInfo = payload;
     },
-    SET_CUR_MARKET(state, payload) {
-      uni.setStorageSync('curMarket', payload);
+    SET_CUR_MARKET( state,payload ) {
+      uni.setStorageSync('curMarket',payload);
       state.curMarket = payload;
     },
-    SET_IS_INIT(state, payload) {
+    SET_IS_INIT( state,payload ) {
       // TODO: 与小程序通信时打开
       state.isInit = payload;
     },
-    SET_LBS_ID(state, payload) {
+    SET_LBS_ID( state,payload ) {
       state.lbsId = payload;
     },
-    SET_BRAND_ID(state, payload) {
+    SET_BRAND_ID( state,payload ) {
       state.brandId = payload;
     },
     // 无牌车
-    SET_UNLICENSED_INFO(state, payload) {
+    SET_UNLICENSED_INFO( state,payload ) {
+      console.log(163, payload);
       state.unlicensedInfo = payload;
     },
-    SET_ENDLESS_LOOP(state, payload) {
+    SET_ENDLESS_LOOP( state,payload ) {
       state.endlessLoop = payload;
     },
   },
   actions: {
-    async baseInit({ commit, dispatch }, { options, callback }) {
+    async baseInit( {commit,dispatch},{options,callback} ) {
       try {
         // console.log(
         //   'Encrypt',
@@ -175,7 +177,7 @@ const store = new Vuex.Store({
         //     '8aaa81947c6e1ca0017c7201e82d0001#8aaa80cc7d4fc7b3017d55c4d6120000#8aaa80b47c784020017c78b00d060022#ozdsB4yx3I7ez2Ba3DgEmeSR-CFY#13601829387'
         //   )
         // );
-        console.log(128, options);
+        console.log(128,options);
         // if (!pageId) return;
         let {
           groupId = '',
@@ -198,7 +200,7 @@ const store = new Vuex.Store({
           // brandInfo = {},
           // curMarket = {}
         } = options;
-        console.log({ lbsId });
+        console.log({lbsId});
 
         /* {
          buildingId: mallId,
@@ -208,35 +210,30 @@ const store = new Vuex.Store({
          * */
         // const resp = await parkingLots();
         // console.log(171171, resp);
-        commit('SET_SOURCE', source);
-        commit('SET_APPID', appId);
-        
+        commit('SET_SOURCE',source);
+        commit('SET_APPID',appId);
+
         // let { groupId, mallId } =
-        if (source !== 'CRM') {
+        if ( source !== 'CRM' ) {
           const groupIdAndMallId = getGroupIdAndMallIdByLsbId(lbsId);
           groupId = groupIdAndMallId.groupId;
           mallId = groupIdAndMallId.mallId;
         }
-        console.log(152, { source, custTypeId, kipUserId });
-
-        if (source === 'CRM') {
-          commit('SET_CUST_TYPE_ID', custTypeId);
-          // commit('SET_CUR_MARKET', curMarket)
-          // commit('SET_BRAND_INFO', brandInfo)
-        }
+        commit('SET_LBS_ID',lbsId);
+        commit('SET_CUST_TYPE_ID',custTypeId);
         // 如果为 false,则表示当前用户是从小程序端未登录进入的
-        if (!isLogin) {
+        if ( !isLogin ) {
           // 如果用户未登录,清理原来的数据, 小程序入口不需要处理
         }
         const href = window.location.href;
-        commit('SET_GROUP_ID', groupId);
-        commit('SET_MALL_ID', mallId);
-        commit('SET_BRAND_ID', brandId);
+        commit('SET_GROUP_ID',groupId);
+        commit('SET_MALL_ID',mallId);
+        commit('SET_BRAND_ID',brandId);
         // console.log('用户扫码进入的', unlicensedInfo, unlicensedInfo?.type);
         // 如果是无牌车
-        if (unlicensedInfo?.type) {
+        if ( unlicensedInfo?.type ) {
           // console.log('用户扫码进入的', unlicensedInfo);
-          commit('SET_UNLICENSED_INFO', unlicensedInfo)
+          commit('SET_UNLICENSED_INFO',unlicensedInfo)
           // commit('SET_ENDLESS_LOOP', true)
         }
         /*if (/dev-|8080|qa-/.test(href)) {
@@ -248,12 +245,11 @@ const store = new Vuex.Store({
          mallId = '8a888aed7d0295e5017d029ff1f40000';
          commit('SET_MALL_ID', '8a888aed7d0295e5017d029ff1f40000');
          }*/
-        commit('SET_LBS_ID', lbsId);
-        commit('SET_OPENID', openid || uni.getStorageSync('openid'));
-        if (isLogin) {
-          commit('SET_ACCESS_TOKEN', accessToken);
-          commit('SET_KIP_USER_ID', kipUserId);
-          commit('SET_MOBILE', mobile);
+        commit('SET_OPENID',openid || uni.getStorageSync('openid'));
+        if ( isLogin ) {
+          commit('SET_ACCESS_TOKEN',accessToken);
+          commit('SET_KIP_USER_ID',kipUserId);
+          commit('SET_MOBILE',mobile);
           const memberRes = await crmQueryMemberInfo({
             groupId,
             kipUserId,
@@ -266,31 +262,32 @@ const store = new Vuex.Store({
             options: {},
           });
           const marketListRes = await kipAllCities();
-          if (memberRes.code === 0) {
+          if ( memberRes.code === 0 ) {
             dispatch('getUserDetail');
-            commit('SET_MEMBER', memberRes.data);
+            commit('SET_MEMBER',memberRes.data);
           }
           // console.log(929292, marketListRes);
         }
         callback && callback();
-      } catch (e) {
+      } catch ( e ) {
         console.log(e);
         callback && callback();
       }
     },
-    async getUserDetail({ commit }) {
+    async getUserDetail( {commit} ) {
       const res = await kipGetUserDetail();
-      commit('SET_USER_INFO', res.data);
+      commit('SET_USER_INFO',res.data);
       // console.log('user_info', res);
     },
-    clearUnlicensed({state, commit}) {
-      commit('SET_UNLICENSED_INFO', '');
-      commit('SET_ENDLESS_LOOP', '');
+    clearUnlicensed( {state,commit} ) {
+      commit('SET_UNLICENSED_INFO','');
+      commit('SET_ENDLESS_LOOP','');
     }
   },
   modules: {
     cachedViews,
     order,
+    invoice
   },
 });
 

+ 8 - 4
src/store/order.js

@@ -382,11 +382,11 @@ const actions = {
     if (type === 'add' && state.pointsTime >= maxPointsTime) {
       // 以下是深圳积分上限规则
       // 超出抵扣上限,每日最高可抵扣${this.parkFee.parkInfoEntity.maxOneDayHour}元 '优惠金额' >= '每日最高可抵扣'
-      if (state.usingTotalDiscount >= state.maxOneDayDiscountFee) {
-        msg = `超出抵扣上限,每日最高可抵扣${state.maxDiscountFee}元`
+      if (state.usingTotalDiscount >= state.maxOneDayDiscountFee && !msg) {
+          msg = `超出抵扣上限,每日最高可抵扣${state.maxOneDayDiscountFee}元`
       }
-      // 超出抵扣上限,每次最高可抵扣${this.integralMaxMoney}元 '积分兑换时长' >= '深圳前海停车积分上限'
-      if (state.pointsTime >= maxPointsTime) {
+      // 超出抵扣上限,每次最高可抵扣${this.integralMaxMoney}元 '积分兑换时长' >= '深圳前海停车积分上限'q
+      if (state.pointsTime >= maxPointsTime && !msg) {
         msg = `超出抵扣上限,每次最高可抵扣${state.maxDiscountFee}元`
       }
       callback({
@@ -417,6 +417,10 @@ const actions = {
       discountInfo: { points },
       parkingRule,
     } = state.orderDetail;
+    if(!points) {
+      callback && callback();
+      return
+    }
     const [{ pointsPerHour, available, discountFee }] = points;
     const { maxPointsTime, enablePoints } = parkingRule;
     commit('setAvailable', available);

+ 5 - 5
src/utils/index.js

@@ -170,12 +170,12 @@ export function initEnv() {
   const href = window.location.href;
   console.log('当前页面的url地址  ', href);
   if (/dev-|8080/.test(href)) {
-    /*window.env = 'qa';
+    window.env = 'qa';
     window.profileApi = 'https://qa-apim.kerryplus.com/c/api';
-    window.api = 'qaApi';*/
-    window.env = 'dev';
+    window.api = 'qaApi';
+    /* window.env = 'dev';
     window.profileApi = 'https://dev-gateway-kip.kerryonvip.com/api';
-    window.api = 'devApi';
+    window.api = 'devApi'; */
     return;
   }
   if (/qa-/.test(href)) {
@@ -211,7 +211,7 @@ export function requestInit() {
 
 // websocket 链接
 export function getUrl() {
-  return `https://crm.kerryplus.com/xcrm-api`; // TODO: 临时更改websocket域名为prod
+  // return `https://crm.kerryplus.com/xcrm-api`; // TODO: 临时更改websocket域名为prod
   // 如果 kerry+ 这边的访问环境是 sl 或者 lt,需要把 wss 指向 qa 环境。
   const href = `${window.location.href}`;
   if (/dev-|8080/.test(href)) {