@uxda/appkit 4.3.13 → 4.3.15
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/COMPONENT_USAGE.md +3 -3
- package/dist/appkit.css +12 -105
- package/dist/index.js +449 -1060
- package/package.json +5 -2
- package/src/balance/api/index.ts +1 -1
- package/src/balance/components/PromoterCard.vue +0 -1
- package/src/notice/api/index.ts +1 -1
- package/src/notice/components/NoticeList2.vue +73 -234
- package/src/notice/components/useCommonList.ts +0 -1
- package/src/payment/api/endpoints.ts +14 -2
- package/src/payment/api/index.ts +1 -2
- package/src/payment/components/RechargeResult.vue +1 -0
- package/src/payment/components/RechargeView.vue +45 -13
- package/src/payment/components/TradeView.vue +153 -326
- package/src/payment/services/request-payment.ts +0 -2
- package/src/payment/types.ts +0 -1
- package/src/register/components/SelfRegistration.vue +1 -1
- package/src/shared/components/AppVerify.vue +6 -15
- package/src/shared/components/OcrBusinessLicense.vue +37 -20
- package/src/shared/components/OcrIcon.vue +67 -105
- package/src/shared/components/index.ts +1 -3
- package/src/shared/composables/index.ts +0 -1
- package/src/shared/composables/useDeviceEnv.ts +35 -1
- package/src/shared/composables/useUpload.ts +51 -96
- package/src/shared/http/Http.ts +0 -1
- package/src/shared/tracking/tracking-sdk.ts +1 -0
- package/src/shared/weixin/jssdk.ts +0 -1
- package/src/user/api/index.ts +1 -1
- package/src/user/components/UserAuth.vue +1 -1
- package/src/user/components/UserFeedback.vue +0 -1
- package/src/user/components/UserInfo.vue +0 -2
- package/types/global.d.ts +0 -2
- package/src/shared/components/OcrBank.vue +0 -202
- package/src/shared/components/OcrInvoice.vue +0 -322
- package/src/shared/composables/useCompress.ts +0 -64
|
@@ -1,58 +1,28 @@
|
|
|
1
1
|
<template>
|
|
2
2
|
<view class="view recharge-view2">
|
|
3
3
|
<view class="flex-grow">
|
|
4
|
-
<rights-picker
|
|
5
|
-
:items="amounts"
|
|
6
|
-
:selected="state.selected"
|
|
7
|
-
@change="onAmountSelect"
|
|
8
|
-
/>
|
|
4
|
+
<rights-picker :items="amounts" :selected="state.selected" @change="onAmountSelect" />
|
|
9
5
|
<div class="bean-buy" v-if="amounts[state.selected]">
|
|
10
6
|
<div class="left">
|
|
11
7
|
<div class="title">使用云豆支付</div>
|
|
12
|
-
<div class="amount" v-if="!selectBean ||
|
|
13
|
-
|
|
14
|
-
</div>
|
|
15
|
-
<div class="amount" v-else>
|
|
16
|
-
扣减后余额
|
|
17
|
-
{{ formatAmount(balance - amounts[state.selected].paymentAmount) }}
|
|
18
|
-
</div>
|
|
8
|
+
<div class="amount" v-if="!selectBean">余额 {{ formatAmount(balance || 0) }}</div>
|
|
9
|
+
<div class="amount" v-else>扣减后余额 {{ formatAmount(balance - amounts[state.selected].paymentAmount) }}</div>
|
|
19
10
|
</div>
|
|
20
|
-
<div class="right" @click="selectBean = !selectBean">
|
|
21
|
-
<div class="amount">
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
<img
|
|
25
|
-
class="icon"
|
|
26
|
-
:src="
|
|
27
|
-
selectBean
|
|
28
|
-
? 'https://cdn.ddjf.com/static/images/appkit/select.svg'
|
|
29
|
-
: 'https://cdn.ddjf.com/static/images/appkit/not-select.svg'
|
|
30
|
-
"
|
|
31
|
-
/>
|
|
32
|
-
</div>
|
|
33
|
-
|
|
34
|
-
<div class="balance-warning" v-if="isCombinedPayment">
|
|
35
|
-
云豆余额不足,还需额外支付{{ formatAmount(extraPaymentAmount) }}元
|
|
11
|
+
<div class="right" v-if="balance >= amounts[state.selected].paymentAmount" @click="selectBean = !selectBean">
|
|
12
|
+
<div class="amount">-{{ formatAmount(amounts[state.selected].paymentAmount || 0) }}</div>
|
|
13
|
+
<img class="icon"
|
|
14
|
+
:src="selectBean ? 'https://cdn.ddjf.com/static/images/appkit/select.svg' : 'https://cdn.ddjf.com/static/images/appkit/not-select.svg'" />
|
|
36
15
|
</div>
|
|
37
16
|
</div>
|
|
38
17
|
|
|
39
|
-
<div class="balance-warning-tip" v-if="isCombinedPayment">
|
|
40
|
-
请在支付完成前确保元豆余额不被消耗,否则本次权益可能购买失败
|
|
41
|
-
</div>
|
|
42
18
|
|
|
43
19
|
<slot name="banner"></slot>
|
|
44
20
|
</view>
|
|
45
21
|
|
|
46
22
|
<view class="amount-footer">
|
|
47
|
-
<view class="agreement" v-if="!selectBean
|
|
48
|
-
<nut-checkbox v-model="state.agreed"
|
|
49
|
-
|
|
50
|
-
v-track-click
|
|
51
|
-
class="link inline"
|
|
52
|
-
@click="onAgreementLinkClick"
|
|
53
|
-
>《大道云平台云豆充值服务协议》</a
|
|
54
|
-
></nut-checkbox
|
|
55
|
-
>
|
|
23
|
+
<view class="agreement" v-if="!selectBean">
|
|
24
|
+
<nut-checkbox v-model="state.agreed">我已阅读并同意<a v-track-click class="link inline"
|
|
25
|
+
@click="onAgreementLinkClick">《大道云平台云豆充值服务协议》</a></nut-checkbox>
|
|
56
26
|
</view>
|
|
57
27
|
<div class="buy-amount">
|
|
58
28
|
<div class="left">
|
|
@@ -61,54 +31,29 @@
|
|
|
61
31
|
<i>¥</i>{{ formatAmount(currentAmount) }}
|
|
62
32
|
</span>
|
|
63
33
|
</div>
|
|
64
|
-
<nut-button
|
|
65
|
-
|
|
66
|
-
shape="square"
|
|
67
|
-
:loading="state.buttonLoading"
|
|
68
|
-
v-track-click
|
|
69
|
-
@click="onPayClick"
|
|
70
|
-
class="recharge-button"
|
|
71
|
-
>购买</nut-button
|
|
72
|
-
>
|
|
34
|
+
<nut-button block shape="square" :loading="state.buttonLoading" v-track-click @click="onPayClick"
|
|
35
|
+
class="recharge-button">购买</nut-button>
|
|
73
36
|
</div>
|
|
74
37
|
</view>
|
|
75
|
-
<nut-dialog
|
|
76
|
-
|
|
77
|
-
custom-class="trade-dialog"
|
|
78
|
-
v-model:visible="showDialog"
|
|
79
|
-
@cancel="showDialog = !showDialog"
|
|
80
|
-
@ok="beanPay"
|
|
81
|
-
>
|
|
38
|
+
<nut-dialog title="确认购买" custom-class="trade-dialog" v-model:visible="showDialog" @cancel="showDialog = !showDialog"
|
|
39
|
+
@ok="beanPay">
|
|
82
40
|
<template v-if="amounts[state.selected]">
|
|
83
|
-
<div class="item">
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
}}
|
|
87
|
-
</div>
|
|
88
|
-
<div class="item">
|
|
89
|
-
权益增加:{{
|
|
90
|
-
formatAmount(amounts[state.selected].priceRightNum || 0)
|
|
91
|
-
}}笔
|
|
92
|
-
</div>
|
|
93
|
-
<div class="item">
|
|
94
|
-
扣减后云豆余额:{{
|
|
95
|
-
formatAmount(balance - amounts[state.selected].paymentAmount)
|
|
96
|
-
}}
|
|
97
|
-
</div>
|
|
41
|
+
<div class="item">云豆扣减:{{ formatAmount(amounts[state.selected].paymentAmount || 0) }}</div>
|
|
42
|
+
<div class="item">权益增加:{{ formatAmount(amounts[state.selected].priceRightNum || 0) }}笔</div>
|
|
43
|
+
<div class="item">扣减后云豆余额:{{ formatAmount(balance - amounts[state.selected].paymentAmount) }}</div>
|
|
98
44
|
</template>
|
|
99
45
|
</nut-dialog>
|
|
100
46
|
</view>
|
|
101
47
|
</template>
|
|
102
48
|
|
|
103
49
|
<script lang="ts" setup>
|
|
104
|
-
import { computed, onMounted, reactive, ref } from
|
|
105
|
-
import RightsPicker, { Amount } from
|
|
106
|
-
import { endpoints, useHttp } from
|
|
107
|
-
import {
|
|
108
|
-
import {
|
|
109
|
-
import
|
|
110
|
-
import {
|
|
111
|
-
import { isWechat } from "../../shared/composables/useDeviceEnv";
|
|
50
|
+
import { computed, onMounted, reactive, ref } from 'vue'
|
|
51
|
+
import RightsPicker, { Amount } from './RightsPicker.vue'
|
|
52
|
+
import { endpoints, useHttp } from '../api'
|
|
53
|
+
import { requestBrandWCPayByBean, requestPaymentByBean } from '../services'
|
|
54
|
+
import Taro, { showToast, useRouter } from '@tarojs/taro'
|
|
55
|
+
import { useAmount } from '../../shared/composables/useAmount'
|
|
56
|
+
import { isAlipay,isAndroid,isChrome,isIOS,isSafari,isWechat } from '../../shared/composables/useDeviceEnv'
|
|
112
57
|
|
|
113
58
|
// 充值用户界面
|
|
114
59
|
// 配置了必须的属性后
|
|
@@ -118,11 +63,11 @@ export interface RechargeViewProps {
|
|
|
118
63
|
/**
|
|
119
64
|
* header头中的appcode,一般情况下与app参数一致,当无应用权限时,此参数未空
|
|
120
65
|
**/
|
|
121
|
-
headerApp: string
|
|
66
|
+
headerApp: string,
|
|
122
67
|
/**
|
|
123
68
|
* 应用
|
|
124
69
|
**/
|
|
125
|
-
app: string
|
|
70
|
+
app: string,
|
|
126
71
|
/**
|
|
127
72
|
* 充值场景
|
|
128
73
|
*/
|
|
@@ -130,20 +75,16 @@ export interface RechargeViewProps {
|
|
|
130
75
|
/**
|
|
131
76
|
* 租户
|
|
132
77
|
*/
|
|
133
|
-
tenant: string
|
|
78
|
+
tenant: string,
|
|
134
79
|
/**
|
|
135
80
|
* h5支付完成后跳转地址
|
|
136
81
|
*/
|
|
137
|
-
payFinishJumpUrl?:
|
|
138
|
-
/**
|
|
139
|
-
* 所有应用
|
|
140
|
-
**/
|
|
141
|
-
apps?: string;
|
|
82
|
+
payFinishJumpUrl?: ''
|
|
142
83
|
}
|
|
143
84
|
|
|
144
|
-
const props = defineProps<RechargeViewProps>()
|
|
145
|
-
const { formatAmount } = useAmount()
|
|
146
|
-
const { params } = useRouter()
|
|
85
|
+
const props = defineProps<RechargeViewProps>()
|
|
86
|
+
const { formatAmount } = useAmount()
|
|
87
|
+
const { params } = useRouter()
|
|
147
88
|
|
|
148
89
|
const emit = defineEmits<{
|
|
149
90
|
(event: 'complete', value: { result: boolean, type: string }): void,
|
|
@@ -156,249 +97,156 @@ const state = reactive({
|
|
|
156
97
|
selected: 0,
|
|
157
98
|
// agreementOpen: false,
|
|
158
99
|
buttonLoading: false,
|
|
159
|
-
|
|
100
|
+
thirdPayId: '',
|
|
101
|
+
})
|
|
160
102
|
|
|
161
|
-
|
|
162
|
-
const
|
|
163
|
-
const
|
|
103
|
+
|
|
104
|
+
const balance = ref<number>(0)
|
|
105
|
+
const amounts = ref<Amount[]>([])
|
|
106
|
+
const selectBean = ref<boolean>(false)
|
|
164
107
|
|
|
165
108
|
const onAgreementLinkClick = (e) => {
|
|
166
|
-
e.preventDefault()
|
|
167
|
-
e.stopImmediatePropagation()
|
|
168
|
-
emit(
|
|
109
|
+
e.preventDefault()
|
|
110
|
+
e.stopImmediatePropagation()
|
|
111
|
+
emit('agree')
|
|
169
112
|
// state.agreementOpen = true
|
|
170
|
-
}
|
|
113
|
+
}
|
|
171
114
|
|
|
172
115
|
const onAmountSelect = (selected: number) => {
|
|
173
|
-
state.selected = selected
|
|
174
|
-
selectBean.value = false
|
|
175
|
-
}
|
|
176
|
-
|
|
177
|
-
// 计算额外支付金额(当云豆余额不足时)
|
|
178
|
-
const extraPaymentAmount = computed(() => {
|
|
179
|
-
if (!selectBean.value || !amounts.value[state.selected]) {
|
|
180
|
-
return 0;
|
|
181
|
-
}
|
|
182
|
-
const paymentAmount = amounts.value[state.selected].paymentAmount || 0;
|
|
183
|
-
const currentBalance = balance.value || 0;
|
|
184
|
-
return Math.max(0, paymentAmount - currentBalance);
|
|
185
|
-
});
|
|
116
|
+
state.selected = selected
|
|
117
|
+
selectBean.value = false
|
|
118
|
+
}
|
|
186
119
|
|
|
187
|
-
// 计算待支付金额
|
|
188
120
|
const currentAmount = computed(() => {
|
|
189
|
-
|
|
190
|
-
|
|
191
|
-
}
|
|
192
|
-
|
|
193
|
-
// 如果选择了云豆支付
|
|
194
|
-
if (selectBean.value) {
|
|
195
|
-
// 如果余额不足,返回额外需要支付的金额
|
|
196
|
-
if (balance.value < amounts.value[state.selected].paymentAmount) {
|
|
197
|
-
return extraPaymentAmount.value;
|
|
198
|
-
}
|
|
199
|
-
// 如果余额充足,返回0(全部用云豆支付)
|
|
200
|
-
return 0;
|
|
201
|
-
}
|
|
202
|
-
|
|
203
|
-
// 如果没有选择云豆支付,返回全额
|
|
204
|
-
return amounts.value[state.selected].paymentAmount || 0;
|
|
205
|
-
});
|
|
206
|
-
|
|
207
|
-
// 判断是否为组合支付
|
|
208
|
-
const isCombinedPayment = computed(() => {
|
|
209
|
-
return (
|
|
210
|
-
selectBean.value &&
|
|
211
|
-
amounts.value[state.selected] &&
|
|
212
|
-
balance.value < amounts.value[state.selected].paymentAmount
|
|
213
|
-
);
|
|
214
|
-
});
|
|
121
|
+
return amounts.value[state.selected] && !selectBean.value ? amounts.value[state.selected].paymentAmount : 0
|
|
122
|
+
})
|
|
215
123
|
|
|
216
124
|
onMounted(() => {
|
|
217
|
-
const $http = useHttp({ Appcode: props.headerApp, Tenant: props.tenant })
|
|
218
|
-
$http
|
|
219
|
-
.
|
|
220
|
-
|
|
221
|
-
|
|
222
|
-
|
|
223
|
-
.
|
|
224
|
-
|
|
225
|
-
|
|
226
|
-
|
|
227
|
-
});
|
|
228
|
-
});
|
|
229
|
-
|
|
230
|
-
// 云豆支付对话框
|
|
231
|
-
const showDialog = ref<boolean>(false);
|
|
125
|
+
const $http = useHttp({ Appcode: props.headerApp, Tenant: props.tenant })
|
|
126
|
+
$http.get<any[]>(endpoints.获取增值权益类目, {
|
|
127
|
+
rightCode: props.app === 'corporateStar' ? 'riskQueryCompany' : 'riskQueryMulti',
|
|
128
|
+
scene: isWechat() ? '' : 'APP'
|
|
129
|
+
}).then((res: any) => {
|
|
130
|
+
balance.value = res.balance
|
|
131
|
+
amounts.value = res.paymentCaseConfigVOS
|
|
132
|
+
emit('loaded')
|
|
133
|
+
})
|
|
134
|
+
})
|
|
232
135
|
|
|
233
|
-
//
|
|
136
|
+
// 云豆支付
|
|
137
|
+
const showDialog = ref<boolean>(false)
|
|
234
138
|
async function beanPay() {
|
|
235
|
-
const $http = useHttp({ Appcode: props.headerApp, Tenant: props.tenant })
|
|
236
|
-
|
|
237
|
-
const response: any = await $http.post(
|
|
238
|
-
`/payment/paymentCaseConfig/purchase/${amounts.value[state.selected].id}`
|
|
239
|
-
);
|
|
139
|
+
const $http = useHttp({ Appcode: props.headerApp, Tenant: props.tenant })
|
|
140
|
+
$http.post(`/payment/paymentCaseConfig/purchase/${amounts.value[state.selected].id}`).then((response: any) => {
|
|
240
141
|
if (response) {
|
|
241
|
-
showDialog.value = false
|
|
242
|
-
emit(
|
|
142
|
+
showDialog.value = false
|
|
143
|
+
emit('complete', { result: response, type: 'bean' })
|
|
243
144
|
} else {
|
|
244
145
|
showToast({
|
|
245
|
-
title:
|
|
246
|
-
icon:
|
|
247
|
-
})
|
|
146
|
+
title: response.message,
|
|
147
|
+
icon: 'none',
|
|
148
|
+
})
|
|
248
149
|
}
|
|
249
|
-
}
|
|
250
|
-
showToast({
|
|
251
|
-
title: error?.message || "支付失败",
|
|
252
|
-
icon: "none",
|
|
253
|
-
});
|
|
254
|
-
}
|
|
150
|
+
})
|
|
255
151
|
}
|
|
256
152
|
|
|
257
|
-
// 执行微信支付(用于组合支付或纯微信支付)
|
|
258
|
-
function proceedWechatPayment() {
|
|
259
|
-
if (!state.agreed) {
|
|
260
|
-
showToast({
|
|
261
|
-
title: "请勾选《大道云平台云豆充值协议》",
|
|
262
|
-
icon: "none",
|
|
263
|
-
});
|
|
264
|
-
return false;
|
|
265
|
-
}
|
|
266
153
|
|
|
267
|
-
|
|
154
|
+
const onPayClick = () => {
|
|
155
|
+
// 用云豆支付
|
|
156
|
+
if (selectBean.value) {
|
|
157
|
+
showDialog.value = true
|
|
158
|
+
return
|
|
159
|
+
}
|
|
268
160
|
|
|
269
|
-
|
|
270
|
-
|
|
271
|
-
|
|
272
|
-
|
|
273
|
-
|
|
274
|
-
|
|
275
|
-
|
|
276
|
-
|
|
277
|
-
|
|
278
|
-
|
|
161
|
+
// 微信支付
|
|
162
|
+
if (!selectBean.value && !state.agreed) {
|
|
163
|
+
showToast({
|
|
164
|
+
title: '请勾选《大道云平台云豆充值协议》',
|
|
165
|
+
icon: 'none',
|
|
166
|
+
})
|
|
167
|
+
return false
|
|
168
|
+
}
|
|
169
|
+
state.buttonLoading = true
|
|
170
|
+
|
|
171
|
+
if (Taro.getEnv() === 'WEB') {
|
|
172
|
+
// if (!isWechat()) {
|
|
173
|
+
// showToast({
|
|
174
|
+
// title: '请使用微信浏览器打开',
|
|
175
|
+
// icon: 'none',
|
|
176
|
+
// })
|
|
177
|
+
// state.buttonLoading = false
|
|
178
|
+
// return false
|
|
179
|
+
// }
|
|
279
180
|
requestBrandWCPayByBean({
|
|
280
181
|
caseConfigId: amounts.value[state.selected].id,
|
|
281
|
-
amount:
|
|
282
|
-
app:
|
|
182
|
+
amount: amounts.value[state.selected].paymentAmount,
|
|
183
|
+
app: 'loankitMp',
|
|
283
184
|
tenant: props.tenant,
|
|
284
185
|
accountAuthFlag: false,
|
|
285
|
-
channelCode:
|
|
186
|
+
channelCode: getChannelCode(),
|
|
286
187
|
payFinishJumpUrl: props.payFinishJumpUrl,
|
|
287
|
-
fromMini: !!params.from
|
|
288
|
-
|
|
188
|
+
fromMini: !!params.from
|
|
189
|
+
}).then((result: any) => {
|
|
190
|
+
state.buttonLoading = false;
|
|
191
|
+
if (typeof result === "boolean" && result) {
|
|
192
|
+
window.location.href = props.payFinishJumpUrl as string;
|
|
193
|
+
} else if (typeof result === 'object' && result?.paymentType === 'H5' && result?.prePayStr) {
|
|
194
|
+
state.thirdPayId = result?.thirdPayId || ''
|
|
195
|
+
window.location.href = result?.prePayStr;
|
|
196
|
+
} else {
|
|
197
|
+
emit('complete', { result, type: 'wePay' })
|
|
198
|
+
}
|
|
289
199
|
})
|
|
290
|
-
.then((result) => {
|
|
291
|
-
state.buttonLoading = false;
|
|
292
|
-
if (typeof result === "boolean" && result) {
|
|
293
|
-
window.location.href = props.payFinishJumpUrl as string;
|
|
294
|
-
} else {
|
|
295
|
-
emit("complete", {
|
|
296
|
-
result,
|
|
297
|
-
type: isCombinedPayment.value ? "combined" : "wePay",
|
|
298
|
-
});
|
|
299
|
-
}
|
|
300
|
-
})
|
|
301
|
-
.catch((error) => {
|
|
302
|
-
state.buttonLoading = false;
|
|
303
|
-
showToast({
|
|
304
|
-
title: error.message || "支付失败",
|
|
305
|
-
icon: "none",
|
|
306
|
-
});
|
|
307
|
-
});
|
|
308
200
|
} else {
|
|
309
201
|
wx.login({
|
|
310
202
|
success({ code }: { code: string }) {
|
|
311
|
-
requestPaymentByBean(
|
|
312
|
-
|
|
313
|
-
|
|
314
|
-
|
|
315
|
-
|
|
316
|
-
|
|
317
|
-
|
|
318
|
-
|
|
319
|
-
|
|
320
|
-
|
|
321
|
-
|
|
322
|
-
|
|
323
|
-
|
|
324
|
-
|
|
325
|
-
result: true,
|
|
326
|
-
type: isCombinedPayment.value ? "combined" : "wePay",
|
|
327
|
-
});
|
|
328
|
-
}
|
|
329
|
-
})
|
|
330
|
-
.catch((error) => {
|
|
331
|
-
state.buttonLoading = false;
|
|
332
|
-
showToast({
|
|
333
|
-
title: error.message || "支付失败",
|
|
334
|
-
icon: "none",
|
|
335
|
-
});
|
|
336
|
-
});
|
|
337
|
-
},
|
|
338
|
-
fail() {
|
|
339
|
-
state.buttonLoading = false;
|
|
340
|
-
showToast({
|
|
341
|
-
title: "登录失败,请重试",
|
|
342
|
-
icon: "none",
|
|
343
|
-
});
|
|
344
|
-
},
|
|
345
|
-
});
|
|
203
|
+
requestPaymentByBean({
|
|
204
|
+
caseConfigId: amounts.value[state.selected].id,
|
|
205
|
+
amount: amounts.value[state.selected].paymentAmount,
|
|
206
|
+
app: props.app,
|
|
207
|
+
tenant: props.tenant,
|
|
208
|
+
user: code,
|
|
209
|
+
}, props.headerApp).then(result => {
|
|
210
|
+
state.buttonLoading = false
|
|
211
|
+
if (result) {
|
|
212
|
+
emit('complete', { result: true, type: 'wePay' })
|
|
213
|
+
}
|
|
214
|
+
})
|
|
215
|
+
}
|
|
216
|
+
})
|
|
346
217
|
}
|
|
347
218
|
}
|
|
348
219
|
|
|
349
|
-
|
|
350
|
-
|
|
351
|
-
if (
|
|
352
|
-
|
|
353
|
-
|
|
354
|
-
|
|
355
|
-
|
|
356
|
-
|
|
357
|
-
// 检验云豆是否已经改变,改变则刷新选择
|
|
358
|
-
const res = await checkBalance()
|
|
359
|
-
if (!res) return
|
|
220
|
+
// 根据环境判断渠道编码
|
|
221
|
+
function getChannelCode() {
|
|
222
|
+
if (isWechat()) {
|
|
223
|
+
return 'centergzh';
|
|
224
|
+
} else if (isAlipay() || isAndroid() || (isIOS() && !isChrome() && !isSafari())) {
|
|
225
|
+
return 'YundouZfb';
|
|
226
|
+
} else {
|
|
227
|
+
return 'distributor';
|
|
360
228
|
}
|
|
361
|
-
|
|
362
|
-
// 纯微信支付
|
|
363
|
-
proceedWechatPayment();
|
|
364
229
|
}
|
|
365
230
|
|
|
366
|
-
|
|
367
|
-
|
|
368
|
-
|
|
369
|
-
|
|
370
|
-
|
|
371
|
-
|
|
372
|
-
|
|
373
|
-
|
|
374
|
-
|
|
375
|
-
|
|
376
|
-
|
|
377
|
-
|
|
378
|
-
|
|
379
|
-
if (data.commonAccount < balance.value) {
|
|
380
|
-
showModal({
|
|
381
|
-
title: '温馨提示',
|
|
382
|
-
content: '云豆不足,请刷新后再次确认',
|
|
383
|
-
showCancel: false,
|
|
384
|
-
confirmText: '刷新',
|
|
385
|
-
confirmColor: '#017fff',
|
|
386
|
-
success: () => {
|
|
387
|
-
balance.value = data.commonAccount;
|
|
388
|
-
}
|
|
389
|
-
})
|
|
390
|
-
resolve(false)
|
|
391
|
-
|
|
392
|
-
} else {
|
|
393
|
-
resolve(true)
|
|
394
|
-
}
|
|
395
|
-
}).catch((error) => {
|
|
396
|
-
state.buttonLoading = false;
|
|
397
|
-
resolve(false)
|
|
398
|
-
})
|
|
231
|
+
const payResultCheck = () => {
|
|
232
|
+
if (!state.thirdPayId) return
|
|
233
|
+
|
|
234
|
+
const $http = useHttp()
|
|
235
|
+
$http.get<any>(endpoints.获取支付结果, {
|
|
236
|
+
thirdPayId: state.thirdPayId
|
|
237
|
+
}).then(response => {
|
|
238
|
+
if (response.payStatus === 'paid') {
|
|
239
|
+
emit("complete", {
|
|
240
|
+
result: true,
|
|
241
|
+
type: "wePay",
|
|
242
|
+
});
|
|
243
|
+
}
|
|
399
244
|
})
|
|
400
245
|
}
|
|
401
246
|
|
|
247
|
+
defineExpose({
|
|
248
|
+
payResultCheck
|
|
249
|
+
})
|
|
402
250
|
</script>
|
|
403
251
|
|
|
404
252
|
<style lang="scss">
|
|
@@ -415,16 +263,15 @@ const onPayClick = async () => {
|
|
|
415
263
|
.bean-buy {
|
|
416
264
|
margin: 0 15px;
|
|
417
265
|
padding: 10px;
|
|
418
|
-
background: #
|
|
266
|
+
background: #FFFBF3;
|
|
419
267
|
border-radius: 5px;
|
|
420
268
|
display: flex;
|
|
421
269
|
justify-content: space-between;
|
|
422
270
|
align-items: center;
|
|
423
|
-
flex-wrap: wrap;
|
|
424
271
|
|
|
425
272
|
.left {
|
|
426
273
|
.title {
|
|
427
|
-
color: #
|
|
274
|
+
color: #FD6701;
|
|
428
275
|
font-size: 14px;
|
|
429
276
|
font-weight: 600;
|
|
430
277
|
line-height: 20px;
|
|
@@ -435,7 +282,7 @@ const onPayClick = async () => {
|
|
|
435
282
|
color: #353535;
|
|
436
283
|
font-size: 13px;
|
|
437
284
|
line-height: 16px;
|
|
438
|
-
background-image: url(
|
|
285
|
+
background-image: url('https://cdn.ddjf.com/static/images/appkit/yundou.png');
|
|
439
286
|
background-repeat: no-repeat;
|
|
440
287
|
background-size: 16px 16px;
|
|
441
288
|
padding-left: 24px;
|
|
@@ -462,24 +309,9 @@ const onPayClick = async () => {
|
|
|
462
309
|
}
|
|
463
310
|
}
|
|
464
311
|
|
|
465
|
-
.balance-warning {
|
|
466
|
-
width: 100%;
|
|
467
|
-
padding: 8px 10px;
|
|
468
|
-
margin-top: 10px;
|
|
469
|
-
background: #fdefe6;
|
|
470
|
-
border-radius: 5px;
|
|
471
|
-
color: #fd6701;
|
|
472
|
-
font-size: 12px;
|
|
473
|
-
|
|
474
|
-
&-tip {
|
|
475
|
-
margin: 10px 26px 0;
|
|
476
|
-
color: #666666;
|
|
477
|
-
font-size: 10px;
|
|
478
|
-
}
|
|
479
|
-
}
|
|
480
|
-
|
|
481
312
|
.amount-footer {
|
|
482
313
|
padding: 10px 0;
|
|
314
|
+
padding-bottom: 20px;
|
|
483
315
|
|
|
484
316
|
.agreement {
|
|
485
317
|
font-size: 12px;
|
|
@@ -504,7 +336,7 @@ const onPayClick = async () => {
|
|
|
504
336
|
font-size: 13px;
|
|
505
337
|
|
|
506
338
|
.amount {
|
|
507
|
-
color: #
|
|
339
|
+
color: #FD6701;
|
|
508
340
|
font-size: 20px;
|
|
509
341
|
font-weight: 600;
|
|
510
342
|
|
|
@@ -516,12 +348,7 @@ const onPayClick = async () => {
|
|
|
516
348
|
}
|
|
517
349
|
|
|
518
350
|
.recharge-button {
|
|
519
|
-
background: linear-gradient(
|
|
520
|
-
90deg,
|
|
521
|
-
#ffebc1 0%,
|
|
522
|
-
#ffd7a7 52.29%,
|
|
523
|
-
#ffb875 100%
|
|
524
|
-
);
|
|
351
|
+
background: linear-gradient(90deg, #FFEBC1 0%, #FFD7A7 52.29%, #FFB875 100%);
|
|
525
352
|
color: #353535;
|
|
526
353
|
margin: 12px 0;
|
|
527
354
|
border: 0;
|
|
@@ -542,7 +369,7 @@ const onPayClick = async () => {
|
|
|
542
369
|
|
|
543
370
|
.link {
|
|
544
371
|
display: inline;
|
|
545
|
-
color: #
|
|
372
|
+
color: #FD6701;
|
|
546
373
|
}
|
|
547
374
|
}
|
|
548
375
|
}
|
|
@@ -550,7 +377,7 @@ const onPayClick = async () => {
|
|
|
550
377
|
.trade-dialog {
|
|
551
378
|
.nut-dialog__header {
|
|
552
379
|
font-size: 16px;
|
|
553
|
-
color: #262626
|
|
380
|
+
color: #262626
|
|
554
381
|
}
|
|
555
382
|
|
|
556
383
|
.item {
|
|
@@ -561,13 +388,13 @@ const onPayClick = async () => {
|
|
|
561
388
|
|
|
562
389
|
.nut-dialog__footer-cancel {
|
|
563
390
|
color: #353535 !important;
|
|
564
|
-
border-color: #
|
|
391
|
+
border-color: #CCCCCC !important;
|
|
565
392
|
}
|
|
566
393
|
|
|
567
394
|
.nut-dialog__footer-ok {
|
|
568
395
|
border: none;
|
|
569
396
|
color: #353535;
|
|
570
|
-
background: linear-gradient(90deg, #
|
|
397
|
+
background: linear-gradient(90deg, #FFEBC1 0%, #FFB875 100%);
|
|
571
398
|
}
|
|
572
399
|
}
|
|
573
400
|
</style>
|
package/src/payment/types.ts
CHANGED
|
@@ -124,7 +124,7 @@ async function submit() {
|
|
|
124
124
|
<nut-form-item label="你的姓名" required>
|
|
125
125
|
<div class="self-registration__input">
|
|
126
126
|
<input v-model="formState.name" class="nut-input-text" placeholder="请输入或拍照识别" type="text" :maxlength="20" />
|
|
127
|
-
<OcrIcon
|
|
127
|
+
<OcrIcon @complete="onOCRInfo">
|
|
128
128
|
<template #icon>
|
|
129
129
|
<img style="width: 20px; height: 20px; margin-left: 5px;"
|
|
130
130
|
src="data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSI0MCIgaGVpZ2h0PSI0MCIgZmlsbD0ibm9uZSI+PHBhdGggb3BhY2l0eT0iLjAxIiBmaWxsLXJ1bGU9ImV2ZW5vZGQiIGNsaXAtcnVsZT0iZXZlbm9kZCIgZD0iTTQwIDB2NDBIMFYwaDQweiIgZmlsbD0iI0M0QzRDNCIvPjxwYXRoIGZpbGwtcnVsZT0iZXZlbm9kZCIgY2xpcC1ydWxlPSJldmVub2RkIiBkPSJNMzMuMDQ0IDE3LjM2M2MuOTYgMCAxLjczOS0uNzkgMS43MzktMS43NjYgMC0uOTc1LS43NzktMS43NjYtMS43NC0xLjc2Ni0uOTYgMC0xLjczOC43OS0xLjczOCAxLjc2NnMuNzc4IDEuNzY2IDEuNzM5IDEuNzY2eiIgZmlsbD0iIzRCQ0I5MyIvPjxwYXRoIGZpbGwtcnVsZT0iZXZlbm9kZCIgY2xpcC1ydWxlPSJldmVub2RkIiBkPSJNMCAzMS44MTJWMTQuNzg4YzAtMi4yNTggMi4wNDktNC4wOTcgNC41NjQtNC4wOTdoMy44NDRsMS4xMzYtMy42NThDOS44ODggNS45MTMgMTEuMjM3IDUgMTIuNTQ4IDVIMjcuNDVjMS4zOSAwIDIuNjguODc2IDMuMDEgMi4wNDRsMS4xMzMgMy42NDdoMy44NDRjMi41MTUgMCA0LjU2NCAxLjgzOSA0LjU2NCA0LjA5N3YxLjczOWMwIC41MDMtLjQ1NC45MS0xLjAxNC45MXMtMS4wMTQtLjQwNy0xLjAxNC0uOTF2LTEuNzRjMC0xLjI1My0xLjEzOS0yLjI3NS0yLjUzNi0yLjI3NWgtMy44NDRjLS45MDcgMC0xLjcxMS0uNTQ5LTEuOTU1LTEuMzMybC0xLjEzNi0zLjY2YS4zNDIuMzQyIDAgMCAwLS4wMDctLjAyNWMtLjExLS4zOTYtLjYzOS0uNjc0LTEuMDQ1LS42NzRoLTE0LjljLS4zOTkgMC0uOTUuMzY2LTEuMDUzLjY5OWwtMS4xMzYgMy42NmMtLjI0Ny43ODYtMS4wNDUgMS4zMy0xLjk1NSAxLjMzMkg0LjU2NGMtMS4zOTcgMC0yLjUzNiAxLjAyMi0yLjUzNiAyLjI3NnYxNy4wMjRjMCAxLjI1NCAxLjEzOSAyLjI3NiAyLjUzNiAyLjI3NmgzMC44N2MxLjM5NyAwIDIuNTM1LTEuMDIyIDIuNTM1LTIuMjc2VjIxLjU5NmMwLS41MDMuNDU0LS45MSAxLjAxNC0uOTFzMS4wMTUuNDA3IDEuMDE1LjkxVjMxLjgxYy0uMDAzIDIuMjYtMi4wNSA0LjEtNC41NjcgNC4xSDQuNTY0QzIuMDQ5IDM1LjkxIDAgMzQuMDcgMCAzMS44MTF6IiBmaWxsPSIjNEJDQjkzIi8+PHBhdGggZmlsbC1ydWxlPSJldmVub2RkIiBjbGlwLXJ1bGU9ImV2ZW5vZGQiIGQ9Ik0xMi4xNzQgMjEuNzc4YzAtNC44NyAzLjcwNS04LjgzIDguMjYtOC44MyA0LjU1NiAwIDguMjYyIDMuOTYgOC4yNjIgOC44M3MtMy43MDYgOC44MzItOC4yNjEgOC44MzJjLTQuNTU2IDAtOC4yNjEtMy45NjItOC4yNjEtOC44MzJ6bTEuNzc5LjEzYzAgMy43OTYgMi45MDcgNi44ODMgNi40ODIgNi44ODMgMy41NzQgMCA2LjQ4MS0zLjA4NyA2LjQ4MS02Ljg4M3MtMi45MDctNi44ODMtNi40ODItNi44ODNjLTMuNTc0IDAtNi40ODEgMy4wODctNi40ODEgNi44ODN6IiBmaWxsPSIjNEJDQjkzIi8+PC9zdmc+" />
|