@uxda/appkit 4.3.11 → 4.3.12
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/dist/appkit.css +105 -12
- package/dist/index.js +1093 -403
- package/package.json +2 -5
- package/src/balance/components/PromoterCard.vue +1 -0
- package/src/notice/components/NoticeList2.vue +234 -73
- package/src/notice/components/useCommonList.ts +1 -0
- package/src/payment/api/endpoints.ts +2 -0
- package/src/payment/api/index.ts +1 -0
- package/src/payment/components/RechargeResult.vue +0 -1
- package/src/payment/components/TradeView.vue +329 -121
- package/src/payment/services/request-payment.ts +2 -0
- package/src/payment/types.ts +1 -0
- package/src/register/components/SelfRegistration.vue +1 -1
- package/src/shared/components/AppVerify.vue +15 -6
- package/src/shared/components/OcrBank.vue +202 -0
- package/src/shared/components/OcrBusinessLicense.vue +20 -37
- package/src/shared/components/OcrIcon.vue +105 -67
- package/src/shared/components/OcrInvoice.vue +322 -0
- package/src/shared/components/index.ts +3 -1
- package/src/shared/composables/index.ts +1 -0
- package/src/shared/composables/useCompress.ts +64 -0
- package/src/shared/composables/useUpload.ts +96 -51
- package/src/shared/http/Http.ts +1 -0
- package/src/shared/tracking/tracking-sdk.ts +0 -1
- package/src/shared/weixin/jssdk.ts +1 -0
- package/src/user/components/UserAuth.vue +1 -1
- package/src/user/components/UserFeedback.vue +1 -0
- package/src/user/components/UserInfo.vue +2 -0
- package/types/global.d.ts +2 -0
|
@@ -1,28 +1,58 @@
|
|
|
1
1
|
<template>
|
|
2
2
|
<view class="view recharge-view2">
|
|
3
3
|
<view class="flex-grow">
|
|
4
|
-
<rights-picker
|
|
4
|
+
<rights-picker
|
|
5
|
+
:items="amounts"
|
|
6
|
+
:selected="state.selected"
|
|
7
|
+
@change="onAmountSelect"
|
|
8
|
+
/>
|
|
5
9
|
<div class="bean-buy" v-if="amounts[state.selected]">
|
|
6
10
|
<div class="left">
|
|
7
11
|
<div class="title">使用云豆支付</div>
|
|
8
|
-
<div class="amount" v-if="!selectBean
|
|
9
|
-
|
|
12
|
+
<div class="amount" v-if="!selectBean || isCombinedPayment">
|
|
13
|
+
余额 {{ formatAmount(balance || 0) }}
|
|
14
|
+
</div>
|
|
15
|
+
<div class="amount" v-else>
|
|
16
|
+
扣减后余额
|
|
17
|
+
{{ formatAmount(balance - amounts[state.selected].paymentAmount) }}
|
|
18
|
+
</div>
|
|
10
19
|
</div>
|
|
11
|
-
<div class="right"
|
|
12
|
-
<div class="amount"
|
|
13
|
-
|
|
14
|
-
|
|
20
|
+
<div class="right" @click="selectBean = !selectBean">
|
|
21
|
+
<div class="amount">
|
|
22
|
+
-{{ formatAmount(amounts[state.selected].paymentAmount || 0) }}
|
|
23
|
+
</div>
|
|
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) }}元
|
|
15
36
|
</div>
|
|
16
37
|
</div>
|
|
17
38
|
|
|
39
|
+
<div class="balance-warning-tip" v-if="isCombinedPayment">
|
|
40
|
+
请在支付完成前确保元豆余额不被消耗,否则本次权益可能购买失败
|
|
41
|
+
</div>
|
|
18
42
|
|
|
19
43
|
<slot name="banner"></slot>
|
|
20
44
|
</view>
|
|
21
45
|
|
|
22
46
|
<view class="amount-footer">
|
|
23
|
-
<view class="agreement" v-if="!selectBean">
|
|
24
|
-
<nut-checkbox v-model="state.agreed"
|
|
25
|
-
|
|
47
|
+
<view class="agreement" v-if="!selectBean || isCombinedPayment">
|
|
48
|
+
<nut-checkbox v-model="state.agreed"
|
|
49
|
+
>我已阅读并同意<a
|
|
50
|
+
v-track-click
|
|
51
|
+
class="link inline"
|
|
52
|
+
@click="onAgreementLinkClick"
|
|
53
|
+
>《大道云平台云豆充值服务协议》</a
|
|
54
|
+
></nut-checkbox
|
|
55
|
+
>
|
|
26
56
|
</view>
|
|
27
57
|
<div class="buy-amount">
|
|
28
58
|
<div class="left">
|
|
@@ -31,29 +61,54 @@
|
|
|
31
61
|
<i>¥</i>{{ formatAmount(currentAmount) }}
|
|
32
62
|
</span>
|
|
33
63
|
</div>
|
|
34
|
-
<nut-button
|
|
35
|
-
|
|
64
|
+
<nut-button
|
|
65
|
+
block
|
|
66
|
+
shape="square"
|
|
67
|
+
:loading="state.buttonLoading"
|
|
68
|
+
v-track-click
|
|
69
|
+
@click="onPayClick"
|
|
70
|
+
class="recharge-button"
|
|
71
|
+
>购买</nut-button
|
|
72
|
+
>
|
|
36
73
|
</div>
|
|
37
74
|
</view>
|
|
38
|
-
<nut-dialog
|
|
39
|
-
|
|
75
|
+
<nut-dialog
|
|
76
|
+
title="确认购买"
|
|
77
|
+
custom-class="trade-dialog"
|
|
78
|
+
v-model:visible="showDialog"
|
|
79
|
+
@cancel="showDialog = !showDialog"
|
|
80
|
+
@ok="beanPay"
|
|
81
|
+
>
|
|
40
82
|
<template v-if="amounts[state.selected]">
|
|
41
|
-
<div class="item"
|
|
42
|
-
|
|
43
|
-
|
|
83
|
+
<div class="item">
|
|
84
|
+
云豆扣减:{{
|
|
85
|
+
formatAmount(amounts[state.selected].paymentAmount || 0)
|
|
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>
|
|
44
98
|
</template>
|
|
45
99
|
</nut-dialog>
|
|
46
100
|
</view>
|
|
47
101
|
</template>
|
|
48
102
|
|
|
49
103
|
<script lang="ts" setup>
|
|
50
|
-
import { computed, onMounted, reactive, ref } from
|
|
51
|
-
import RightsPicker, { Amount } from
|
|
52
|
-
import { endpoints, useHttp } from
|
|
53
|
-
import {
|
|
54
|
-
import
|
|
55
|
-
import {
|
|
56
|
-
import {
|
|
104
|
+
import { computed, onMounted, reactive, ref } from "vue";
|
|
105
|
+
import RightsPicker, { Amount } from "./RightsPicker.vue";
|
|
106
|
+
import { endpoints, useHttp } from "../api";
|
|
107
|
+
import { endpoints as balanceEndpoints } from "../../balance/api";
|
|
108
|
+
import { requestBrandWCPayByBean, requestPaymentByBean } from "../services";
|
|
109
|
+
import Taro, { showToast, useRouter, showModal } from "@tarojs/taro";
|
|
110
|
+
import { useAmount } from "../../shared/composables/useAmount";
|
|
111
|
+
import { isWechat } from "../../shared/composables/useDeviceEnv";
|
|
57
112
|
|
|
58
113
|
// 充值用户界面
|
|
59
114
|
// 配置了必须的属性后
|
|
@@ -63,11 +118,11 @@ export interface RechargeViewProps {
|
|
|
63
118
|
/**
|
|
64
119
|
* header头中的appcode,一般情况下与app参数一致,当无应用权限时,此参数未空
|
|
65
120
|
**/
|
|
66
|
-
headerApp: string
|
|
121
|
+
headerApp: string;
|
|
67
122
|
/**
|
|
68
123
|
* 应用
|
|
69
124
|
**/
|
|
70
|
-
app: string
|
|
125
|
+
app: string;
|
|
71
126
|
/**
|
|
72
127
|
* 充值场景
|
|
73
128
|
*/
|
|
@@ -75,16 +130,20 @@ export interface RechargeViewProps {
|
|
|
75
130
|
/**
|
|
76
131
|
* 租户
|
|
77
132
|
*/
|
|
78
|
-
tenant: string
|
|
133
|
+
tenant: string;
|
|
79
134
|
/**
|
|
80
135
|
* h5支付完成后跳转地址
|
|
81
136
|
*/
|
|
82
|
-
payFinishJumpUrl?:
|
|
137
|
+
payFinishJumpUrl?: "";
|
|
138
|
+
/**
|
|
139
|
+
* 所有应用
|
|
140
|
+
**/
|
|
141
|
+
apps?: string;
|
|
83
142
|
}
|
|
84
143
|
|
|
85
|
-
const props = defineProps<RechargeViewProps>()
|
|
86
|
-
const { formatAmount } = useAmount()
|
|
87
|
-
const { params } = useRouter()
|
|
144
|
+
const props = defineProps<RechargeViewProps>();
|
|
145
|
+
const { formatAmount } = useAmount();
|
|
146
|
+
const { params } = useRouter();
|
|
88
147
|
|
|
89
148
|
const emit = defineEmits<{
|
|
90
149
|
(event: 'complete', value: { result: boolean, type: string }): void,
|
|
@@ -97,121 +156,249 @@ const state = reactive({
|
|
|
97
156
|
selected: 0,
|
|
98
157
|
// agreementOpen: false,
|
|
99
158
|
buttonLoading: false,
|
|
100
|
-
})
|
|
159
|
+
});
|
|
101
160
|
|
|
102
|
-
|
|
103
|
-
const
|
|
104
|
-
const
|
|
105
|
-
const selectBean = ref<boolean>(false)
|
|
161
|
+
const balance = ref<number>(0);
|
|
162
|
+
const amounts = ref<Amount[]>([]);
|
|
163
|
+
const selectBean = ref<boolean>(false);
|
|
106
164
|
|
|
107
165
|
const onAgreementLinkClick = (e) => {
|
|
108
|
-
e.preventDefault()
|
|
109
|
-
e.stopImmediatePropagation()
|
|
110
|
-
emit(
|
|
166
|
+
e.preventDefault();
|
|
167
|
+
e.stopImmediatePropagation();
|
|
168
|
+
emit("agree");
|
|
111
169
|
// state.agreementOpen = true
|
|
112
|
-
}
|
|
170
|
+
};
|
|
113
171
|
|
|
114
172
|
const onAmountSelect = (selected: number) => {
|
|
115
|
-
state.selected = selected
|
|
116
|
-
selectBean.value = false
|
|
117
|
-
}
|
|
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
|
+
});
|
|
118
186
|
|
|
187
|
+
// 计算待支付金额
|
|
119
188
|
const currentAmount = computed(() => {
|
|
120
|
-
|
|
121
|
-
|
|
189
|
+
if (!amounts.value[state.selected]) {
|
|
190
|
+
return 0;
|
|
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
|
+
});
|
|
122
215
|
|
|
123
216
|
onMounted(() => {
|
|
124
|
-
const $http = useHttp({ Appcode: props.headerApp, Tenant: props.tenant })
|
|
125
|
-
$http
|
|
126
|
-
|
|
127
|
-
|
|
128
|
-
|
|
129
|
-
|
|
130
|
-
|
|
131
|
-
|
|
132
|
-
|
|
217
|
+
const $http = useHttp({ Appcode: props.headerApp, Tenant: props.tenant });
|
|
218
|
+
$http
|
|
219
|
+
.get<any[]>(endpoints.获取增值权益类目, {
|
|
220
|
+
rightCode:
|
|
221
|
+
props.app === "corporateStar" ? "riskQueryCompany" : "riskQueryMulti",
|
|
222
|
+
})
|
|
223
|
+
.then((res: any) => {
|
|
224
|
+
balance.value = res.balance;
|
|
225
|
+
amounts.value = res.paymentCaseConfigVOS;
|
|
226
|
+
emit("loaded");
|
|
227
|
+
});
|
|
228
|
+
});
|
|
229
|
+
|
|
230
|
+
// 云豆支付对话框
|
|
231
|
+
const showDialog = ref<boolean>(false);
|
|
133
232
|
|
|
134
|
-
//
|
|
135
|
-
const showDialog = ref<boolean>(false)
|
|
233
|
+
// 处理确认支付(纯云豆支付)
|
|
136
234
|
async function beanPay() {
|
|
137
|
-
const $http = useHttp({ Appcode: props.headerApp, Tenant: props.tenant })
|
|
138
|
-
|
|
235
|
+
const $http = useHttp({ Appcode: props.headerApp, Tenant: props.tenant });
|
|
236
|
+
try {
|
|
237
|
+
const response: any = await $http.post(
|
|
238
|
+
`/payment/paymentCaseConfig/purchase/${amounts.value[state.selected].id}`
|
|
239
|
+
);
|
|
139
240
|
if (response) {
|
|
140
|
-
showDialog.value = false
|
|
141
|
-
emit(
|
|
241
|
+
showDialog.value = false;
|
|
242
|
+
emit("complete", { result: response, type: "bean" });
|
|
142
243
|
} else {
|
|
143
244
|
showToast({
|
|
144
|
-
title: response
|
|
145
|
-
icon:
|
|
146
|
-
})
|
|
245
|
+
title: (response as any)?.message || "支付失败",
|
|
246
|
+
icon: "none",
|
|
247
|
+
});
|
|
147
248
|
}
|
|
148
|
-
})
|
|
149
|
-
|
|
150
|
-
|
|
151
|
-
|
|
152
|
-
|
|
153
|
-
// 用云豆支付
|
|
154
|
-
if (selectBean.value) {
|
|
155
|
-
showDialog.value = true
|
|
156
|
-
return
|
|
249
|
+
} catch (error: any) {
|
|
250
|
+
showToast({
|
|
251
|
+
title: error?.message || "支付失败",
|
|
252
|
+
icon: "none",
|
|
253
|
+
});
|
|
157
254
|
}
|
|
255
|
+
}
|
|
158
256
|
|
|
159
|
-
|
|
160
|
-
|
|
257
|
+
// 执行微信支付(用于组合支付或纯微信支付)
|
|
258
|
+
function proceedWechatPayment() {
|
|
259
|
+
if (!state.agreed) {
|
|
161
260
|
showToast({
|
|
162
|
-
title:
|
|
163
|
-
icon:
|
|
164
|
-
})
|
|
165
|
-
return false
|
|
261
|
+
title: "请勾选《大道云平台云豆充值协议》",
|
|
262
|
+
icon: "none",
|
|
263
|
+
});
|
|
264
|
+
return false;
|
|
166
265
|
}
|
|
167
|
-
state.buttonLoading = true
|
|
168
266
|
|
|
169
|
-
|
|
267
|
+
state.buttonLoading = true;
|
|
268
|
+
|
|
269
|
+
if (Taro.getEnv() === "WEB") {
|
|
170
270
|
if (!isWechat()) {
|
|
171
271
|
showToast({
|
|
172
|
-
title:
|
|
173
|
-
icon:
|
|
174
|
-
})
|
|
175
|
-
state.buttonLoading = false
|
|
176
|
-
return false
|
|
272
|
+
title: "请使用微信浏览器打开",
|
|
273
|
+
icon: "none",
|
|
274
|
+
});
|
|
275
|
+
state.buttonLoading = false;
|
|
276
|
+
return false;
|
|
177
277
|
}
|
|
278
|
+
// 组合支付或纯微信支付:传递caseConfigId和amount,后端会自动处理云豆扣减
|
|
178
279
|
requestBrandWCPayByBean({
|
|
179
280
|
caseConfigId: amounts.value[state.selected].id,
|
|
180
|
-
amount:
|
|
181
|
-
app:
|
|
281
|
+
amount: currentAmount.value,
|
|
282
|
+
app: "loankitMp",
|
|
182
283
|
tenant: props.tenant,
|
|
183
284
|
accountAuthFlag: false,
|
|
184
|
-
channelCode:
|
|
285
|
+
channelCode: "centergzh",
|
|
185
286
|
payFinishJumpUrl: props.payFinishJumpUrl,
|
|
186
|
-
fromMini: !!params.from
|
|
187
|
-
|
|
188
|
-
console.log(result, '------requestBrandWCPay')
|
|
189
|
-
state.buttonLoading = false
|
|
190
|
-
if (typeof result === 'boolean' && result) {
|
|
191
|
-
window.location.href = props.payFinishJumpUrl as string
|
|
192
|
-
} else {
|
|
193
|
-
emit('complete', { result, type: 'wePay' })
|
|
194
|
-
}
|
|
287
|
+
fromMini: !!params.from,
|
|
288
|
+
useCloudBean: isCombinedPayment.value
|
|
195
289
|
})
|
|
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
|
+
});
|
|
196
308
|
} else {
|
|
197
309
|
wx.login({
|
|
198
310
|
success({ code }: { code: string }) {
|
|
199
|
-
requestPaymentByBean(
|
|
200
|
-
|
|
201
|
-
|
|
202
|
-
|
|
203
|
-
|
|
204
|
-
|
|
205
|
-
|
|
206
|
-
|
|
207
|
-
|
|
208
|
-
|
|
209
|
-
|
|
210
|
-
|
|
211
|
-
|
|
212
|
-
|
|
311
|
+
requestPaymentByBean(
|
|
312
|
+
{
|
|
313
|
+
caseConfigId: amounts.value[state.selected].id,
|
|
314
|
+
amount: currentAmount.value,
|
|
315
|
+
app: props.app,
|
|
316
|
+
tenant: props.tenant,
|
|
317
|
+
user: code,
|
|
318
|
+
},
|
|
319
|
+
props.headerApp
|
|
320
|
+
)
|
|
321
|
+
.then((result) => {
|
|
322
|
+
state.buttonLoading = false;
|
|
323
|
+
if (result) {
|
|
324
|
+
emit("complete", {
|
|
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
|
+
});
|
|
346
|
+
}
|
|
347
|
+
}
|
|
348
|
+
|
|
349
|
+
const onPayClick = async () => {
|
|
350
|
+
// 用云豆支付(纯云豆支付)
|
|
351
|
+
if (selectBean.value && !isCombinedPayment.value) {
|
|
352
|
+
showDialog.value = true;
|
|
353
|
+
return;
|
|
354
|
+
}
|
|
355
|
+
|
|
356
|
+
if (isCombinedPayment.value) {
|
|
357
|
+
// 检验云豆是否已经改变,改变则刷新选择
|
|
358
|
+
const res = await checkBalance()
|
|
359
|
+
if (!res) return
|
|
213
360
|
}
|
|
361
|
+
|
|
362
|
+
// 纯微信支付
|
|
363
|
+
proceedWechatPayment();
|
|
364
|
+
}
|
|
365
|
+
|
|
366
|
+
/**
|
|
367
|
+
* 校验余额是否充足
|
|
368
|
+
*/
|
|
369
|
+
async function checkBalance() {
|
|
370
|
+
const $http = useHttp()
|
|
371
|
+
return new Promise((resolve, reject) => {
|
|
372
|
+
state.buttonLoading = true;
|
|
373
|
+
$http
|
|
374
|
+
.get<any>(balanceEndpoints.获取余额明细, {
|
|
375
|
+
app: props.apps,
|
|
376
|
+
})
|
|
377
|
+
.then((data) => {
|
|
378
|
+
state.buttonLoading = false;
|
|
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
|
+
})
|
|
399
|
+
})
|
|
214
400
|
}
|
|
401
|
+
|
|
215
402
|
</script>
|
|
216
403
|
|
|
217
404
|
<style lang="scss">
|
|
@@ -228,15 +415,16 @@ const onPayClick = () => {
|
|
|
228
415
|
.bean-buy {
|
|
229
416
|
margin: 0 15px;
|
|
230
417
|
padding: 10px;
|
|
231
|
-
background: #
|
|
418
|
+
background: #fffbf3;
|
|
232
419
|
border-radius: 5px;
|
|
233
420
|
display: flex;
|
|
234
421
|
justify-content: space-between;
|
|
235
422
|
align-items: center;
|
|
423
|
+
flex-wrap: wrap;
|
|
236
424
|
|
|
237
425
|
.left {
|
|
238
426
|
.title {
|
|
239
|
-
color: #
|
|
427
|
+
color: #fd6701;
|
|
240
428
|
font-size: 14px;
|
|
241
429
|
font-weight: 600;
|
|
242
430
|
line-height: 20px;
|
|
@@ -247,7 +435,7 @@ const onPayClick = () => {
|
|
|
247
435
|
color: #353535;
|
|
248
436
|
font-size: 13px;
|
|
249
437
|
line-height: 16px;
|
|
250
|
-
background-image: url(
|
|
438
|
+
background-image: url("https://cdn.ddjf.com/static/images/appkit/yundou.png");
|
|
251
439
|
background-repeat: no-repeat;
|
|
252
440
|
background-size: 16px 16px;
|
|
253
441
|
padding-left: 24px;
|
|
@@ -274,9 +462,24 @@ const onPayClick = () => {
|
|
|
274
462
|
}
|
|
275
463
|
}
|
|
276
464
|
|
|
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
|
+
|
|
277
481
|
.amount-footer {
|
|
278
482
|
padding: 10px 0;
|
|
279
|
-
padding-bottom: 20px;
|
|
280
483
|
|
|
281
484
|
.agreement {
|
|
282
485
|
font-size: 12px;
|
|
@@ -301,7 +504,7 @@ const onPayClick = () => {
|
|
|
301
504
|
font-size: 13px;
|
|
302
505
|
|
|
303
506
|
.amount {
|
|
304
|
-
color: #
|
|
507
|
+
color: #fd6701;
|
|
305
508
|
font-size: 20px;
|
|
306
509
|
font-weight: 600;
|
|
307
510
|
|
|
@@ -313,7 +516,12 @@ const onPayClick = () => {
|
|
|
313
516
|
}
|
|
314
517
|
|
|
315
518
|
.recharge-button {
|
|
316
|
-
background: linear-gradient(
|
|
519
|
+
background: linear-gradient(
|
|
520
|
+
90deg,
|
|
521
|
+
#ffebc1 0%,
|
|
522
|
+
#ffd7a7 52.29%,
|
|
523
|
+
#ffb875 100%
|
|
524
|
+
);
|
|
317
525
|
color: #353535;
|
|
318
526
|
margin: 12px 0;
|
|
319
527
|
border: 0;
|
|
@@ -334,7 +542,7 @@ const onPayClick = () => {
|
|
|
334
542
|
|
|
335
543
|
.link {
|
|
336
544
|
display: inline;
|
|
337
|
-
color: #
|
|
545
|
+
color: #fd6701;
|
|
338
546
|
}
|
|
339
547
|
}
|
|
340
548
|
}
|
|
@@ -342,7 +550,7 @@ const onPayClick = () => {
|
|
|
342
550
|
.trade-dialog {
|
|
343
551
|
.nut-dialog__header {
|
|
344
552
|
font-size: 16px;
|
|
345
|
-
color: #262626
|
|
553
|
+
color: #262626;
|
|
346
554
|
}
|
|
347
555
|
|
|
348
556
|
.item {
|
|
@@ -353,13 +561,13 @@ const onPayClick = () => {
|
|
|
353
561
|
|
|
354
562
|
.nut-dialog__footer-cancel {
|
|
355
563
|
color: #353535 !important;
|
|
356
|
-
border-color: #
|
|
564
|
+
border-color: #cccccc !important;
|
|
357
565
|
}
|
|
358
566
|
|
|
359
567
|
.nut-dialog__footer-ok {
|
|
360
568
|
border: none;
|
|
361
569
|
color: #353535;
|
|
362
|
-
background: linear-gradient(90deg, #
|
|
570
|
+
background: linear-gradient(90deg, #ffebc1 0%, #ffb875 100%);
|
|
363
571
|
}
|
|
364
572
|
}
|
|
365
573
|
</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 @complete="onOCRInfo">
|
|
127
|
+
<OcrIcon :has-upload-vo="false" @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+" />
|