瀏覽代碼

个人支付无优惠

chenlei 1 年之前
父節點
當前提交
a816ac94f3

+ 1 - 1
src/manifest.json

@@ -83,7 +83,7 @@
   },
   "quickapp": {},
   "mp-weixin": {
-    "appid": "wx72ba78af2cf68cf0",
+    "appid": "wxf69daeba7aec5be4",
     "setting": {
       "urlCheck": false,
       "minified": true

+ 23 - 1
src/pages.json

@@ -120,5 +120,27 @@
       "type": "page"
     }
   ],
-  "subPackages": []
+  "subPackages": [
+    {
+      "root": "pagesSubExample",
+      "pages": [
+        {
+          "path": "index",
+          "type": "page"
+        },
+        {
+          "path": "list/index",
+          "type": "page"
+        },
+        {
+          "path": "login/index",
+          "type": "page"
+        },
+        {
+          "path": "webview/index",
+          "type": "page"
+        }
+      ]
+    }
+  ]
 }

+ 19 - 6
src/pages/order/components/payType.vue

@@ -12,17 +12,18 @@
       <div class="childs-fc-mbd2 ml-spacd2 mt-spacd2">
         <div>
           结算金额
-          <ay-numer class="ml-spacd4" :value="props.payselData?.amount" pre="" unit="元" />
-          (结算价
-          {{ props.payselData.actualPrice }} 元/公斤)
+          <ay-numer class="ml-spacd4" :value="amount" pre="" unit="元" />
+          (结算价 {{ actualPrice }} 元/公斤)
         </div>
         <rebateDetail
+          :showSwitchRebate="props.type === 0"
           :allAmount="props.payselData.allAmount"
           :carrierRebate="props.payselData.carrierRebate"
           :rebateDetail="props.payselData.rebateDetail"
+          @switchRebate="methods.switchRebate"
         />
         <template v-if="props.type === 1">
-          <div class="pt-spacd2 top-line">{{ props.payselData.carrierOrgName }}</div>
+          <div class="mt-spacd2 pt-spacd2 top-line">{{ props.payselData.carrierOrgName }}</div>
           <div>[{{ props.payselData.carNumber }}]</div>
           <div class="justify-start" v-if="props.payselData.balanceEnable">
             <div>
@@ -48,21 +49,33 @@ defineOptions({
 const props = withDefaults(
   defineProps<{
     type: 0 | 1
-    payselData: 待支付订单_可选支付方式物流支付实体类
+    payselData: 待支付订单_可选支付方式物流支付实体类 & 待支付订单_可选支付方式个人支付实体类
     checked: boolean
   }>(),
   {
     checked: false,
   },
 )
-const emits = defineEmits(['reData', 'choose'])
+const emits = defineEmits(['reData', 'choose', 'switchRebate'])
 const data = reactive({
   showRebateDetail: false,
+  /** 享受优惠 */
+  enjoyRebate: true,
 })
+const amount = computed(() =>
+  data.enjoyRebate ? props.payselData?.amount : props.payselData?.allAmount,
+)
+const actualPrice = computed(() =>
+  data.enjoyRebate ? props.payselData.actualPrice : props.payselData.platformPrice,
+)
 const methods = {
   choose() {
     emits('choose', props.type)
   },
+  switchRebate(checked) {
+    data.enjoyRebate = checked
+    emits('switchRebate', checked)
+  },
 }
 </script>
 <style lang="scss" scoped></style>

+ 33 - 3
src/pages/order/components/rebateDetail.vue

@@ -1,7 +1,18 @@
 <template>
   <div class="inline-block" v-if="props.carrierRebate">
     <div :class="{ 'text-right': props.type === 1 }">
-      <div class="inline" @click="data.showRebateDetail = !data.showRebateDetail">
+      <switch
+        checked
+        class="nm-spac switch"
+        color="#0084f4"
+        @change="methods.switchChange"
+        v-if="props.showSwitchRebate"
+      />
+      <div
+        class="inline"
+        @click="data.showRebateDetail = !data.showRebateDetail"
+        v-if="data.switchChecked"
+      >
         优惠金额
         <span class="price-color font-bold">{{ props.carrierRebate }}</span>
@@ -12,9 +23,10 @@
           v-if="props.rebateDetail?.length"
         />
       </div>
+      <div v-else class="inline">无优惠</div>
     </div>
     <div
-      v-if="props.rebateDetail?.length && data.showRebateDetail"
+      v-if="props.rebateDetail?.length && showRebateDetail"
       class="chunk m-b-0 mt-spacd2 childs-fcjb-mbd2 rebate-detail money-bg"
     >
       <div class="mb-spac">
@@ -40,13 +52,31 @@ const props = withDefaults(
     carrierRebate: number
     allAmount: number
     rebateDetail: 待支付订单_可选支付方式优惠明细实体类[]
+    /** 展示切换享受优惠 */
+    showSwitchRebate: boolean
   }>(),
   {
     type: 0,
+    showSwitchRebate: false,
   },
 )
+const emits = defineEmits(['switchRebate'])
 const data = reactive({
   showRebateDetail: false,
+  switchChecked: true,
 })
+const showRebateDetail = computed(() => data.switchChecked && data.showRebateDetail)
+const methods = {
+  switchChange(e) {
+    data.switchChecked = e.detail.value
+    emits('switchRebate', data.switchChecked)
+  },
+}
 </script>
-<style lang="scss" scoped></style>
+<style lang="scss" scoped>
+.switch {
+  // 使其水平对齐
+  height: 50rpx;
+  transform: scale(0.5);
+}
+</style>

+ 24 - 11
src/pages/order/prePay.vue

@@ -14,6 +14,7 @@
         :paysel-data="personPay"
         :checked="data.fpayType === 0"
         @choose="methods.choose"
+        @switchRebate="methods.switchRebate"
       />
       <pay-type
         :type="1"
@@ -71,7 +72,6 @@ const data = ay.initData({
   showCarRebateDetail: false,
   /** 原生支付状态 */
   nativePayState: enums.ReqState.unasked,
-
   rowList: [
     {
       align: 'left',
@@ -123,6 +123,8 @@ const data = ay.initData({
       ],
     },
   ],
+  /** 享受优惠 */
+  enjoyRebate: true,
 })
 
 const noCanPay = computed(
@@ -138,20 +140,27 @@ const pageParams = computed(() => store.curPage.pageConfig.params)
 const personPay = computed(() => data.paysel?.personPay)
 const carrierPay = computed(() => data.paysel?.carrierPay)
 /** 当前支付方式 */
-const curPay = computed<待支付订单_可选支付方式物流支付实体类>(() => {
-  let rv: 待支付订单_可选支付方式物流支付实体类 = {
+const curPay = computed<
+  待支付订单_可选支付方式物流支付实体类 & 待支付订单_可选支付方式个人支付实体类
+>(() => {
+  let rv: 待支付订单_可选支付方式物流支付实体类 & 待支付订单_可选支付方式个人支付实体类 = {
     buttonMsg: '请选择支付方式',
     buttonEnable: false,
   }
   if (data.fpayType === 0) {
     rv = {
       ...data.paysel?.personPay,
-      wxAmount: data.paysel.personPay.amount,
+      amount: data.paysel.personPay.amount,
+    }
+    if (!data.enjoyRebate) {
+      rv.buttonMsg = rv.buttonMsgNoRebate
+      rv.amount = rv.allAmount
     }
   }
   if (data.fpayType === 1) {
     rv = data.paysel?.carrierPay
   }
+
   return rv
 })
 const computedStationInfo = computed(() => {
@@ -176,13 +185,13 @@ const computedStationInfo = computed(() => {
 })
 
 const methods = {
-  switchRebateDetail(type = 0) {
-    if (type === 1) {
-      data.showCarRebateDetail = !data.showCarRebateDetail
-    } else {
-      data.showPerRebateDetail = !data.showPerRebateDetail
-    }
+  /** 个人支付-有无优惠切换 */
+  switchRebate(checked) {
+    data.enjoyRebate = checked
+    // 自动选择个人支付
+    data.fpayType = 0
   },
+
   choose(fpayType) {
     data.fpayType = fpayType
   },
@@ -199,7 +208,11 @@ const methods = {
     if ([1, 2, 3].includes(curPay.value.payType)) {
       const li = await uni.login()
       params.jsCode = li.code
-      params.wxAmount = curPay.value.wxAmount
+      params.wxAmount = curPay.value.amount
+    }
+    // 个人支付
+    if (data.fpayType === 0) {
+      params.personRebate = data.enjoyRebate ? 0 : 1
     }
     // 物流支付
     if (data.fpayType === 1) {

+ 2 - 0
src/types/schemas/allinpay.d.ts

@@ -746,6 +746,8 @@ interface WxpayParam {
   orgId?: number
   /** undefined */
   orgName?: string
+  /** 个人微信支付选择是否享受优惠:默认0享受,1不享受 */
+  personRebate?: number
   /** undefined */
   truckId?: number
   /** undefined */

+ 5 - 1
src/types/schemas/pay.d.ts

@@ -397,11 +397,13 @@ interface OrderPayParam {
   orderId?: number
   /** 支付方式(0:所属物流/大象余额 1:所属物流/微信 2:所属物流/大象余额+微信 3:个人支付/微信 11:组合支付 ) */
   payType?: number
+  /** 个人微信支付选择是否享受优惠:默认0享受,1不享受 */
+  personRebate?: number
   /** 交易模式(1经销模式;2直销模式,默认经销模式1) */
   tradeType?: number
   /** 卡车id */
   truckId?: number
-  /** 所属物流支付微信支付金额 */
+  /** 微信支付金额 */
   wxAmount?: number
 }
 interface Org {
@@ -963,6 +965,8 @@ interface WxpayParam {
   orgId?: number
   /** undefined */
   orgName?: string
+  /** 个人微信支付选择是否享受优惠:默认0享受,1不享受 */
+  personRebate?: number
   /** undefined */
   truckId?: number
   /** undefined */

+ 2 - 2
src/utils/config/interFaces/allinpay.ts

@@ -341,11 +341,11 @@ export default {
 
     resType: {} as ResponseEntity,
   },
-  /**  B2B充值回调 */
+  /** 微信充值通联单边账处理 */
   recharge: {
     realUrl: '/allinpay/pay/callback/recharge',
 
-
+    resType: {} as boolean,
   },
   /** 分账退款申请回调 */
   splitRefund_1: {

+ 12 - 12
src/utils/config/interFaces/index.ts

@@ -1,28 +1,28 @@
-import websocket from './websocket'
 import account from './account'
+import settle from './settle'
+import websocket from './websocket'
+import tms from './tms'
+import message from './message'
 import allinpay from './allinpay'
 import pay from './pay'
-import message from './message'
-import tms from './tms'
-import settle from './settle'
 import user from './user'
 import strategy from './strategy'
 
 export default {
-  /** websocket打印中心 */
-  websocket,
   /** 账户中心 */
   account,
+  /** 结算中心 */
+  settle,
+  /** websocket打印中心 */
+  websocket,
+  /** 运力中心 */
+  tms,
+  /** 消息中心 */
+  message,
   /** 通联支付 */
   allinpay,
   /** 支付中心 */
   pay,
-  /** 消息中心 */
-  message,
-  /** 运力中心 */
-  tms,
-  /** 结算中心 */
-  settle,
   /** 用户中心 */
   user,
   /** 运营策略中心 */