4b004652 by lttnew

B2B

1 parent 59468e57
...@@ -1548,14 +1548,31 @@ export function creditCodeExist(code) { ...@@ -1548,14 +1548,31 @@ export function creditCodeExist(code) {
1548 } 1548 }
1549 1549
1550 // 生成单位订单renewYear 1550 // 生成单位订单renewYear
1551 export function certifiedNew(renewYear) { 1551 export function certifiedNew(data) {
1552 let url = '/system/certifiedNew/commit'
1553 const params = []
1554 if (data.renewYear) params.push(`renewYear=${data.renewYear}`)
1555 if (data.type) params.push(`type=${data.type}`)
1556 if (data.contactPerson) params.push(`contactPerson=${data.contactPerson}`)
1557 if (data.contactTel) params.push(`contactTel=${data.contactTel}`)
1558 if (params.length > 0) {
1559 url += '?' + params.join('&')
1560 }
1552 return request({ 1561 return request({
1553 url: `/system/certifiedNew/commit?renewYear=${renewYear}`, 1562 url,
1554 method: 'post', 1563 method: 'post',
1555 showLoading: false 1564 showLoading: false
1556 }) 1565 })
1557 } 1566 }
1558 1567
1568 // 订单详情
1569 export function orderDetail(orderId) {
1570 return request({
1571 url: `/common/order/${orderId}`,
1572 method: 'get'
1573 })
1574 }
1575
1559 // 模拟回调 1576 // 模拟回调
1560 export function callBack2(orderId) { 1577 export function callBack2(orderId) {
1561 return request({ 1578 return request({
...@@ -1638,9 +1655,18 @@ export function getMyStatus() { ...@@ -1638,9 +1655,18 @@ export function getMyStatus() {
1638 } 1655 }
1639 1656
1640 // 个人会员缴费支付 1657 // 个人会员缴费支付
1641 export function goPay(id, payType) { 1658 export function goPay(params) {
1659 let url = `/person/paymentRangeNew/pay/${params.id}/${params.payType}`
1660 const queryParams = []
1661 if (params.id) queryParams.push(`id=${params.id}`)
1662 if (params.contactPerson) queryParams.push(`contactPerson=${params.contactPerson}`)
1663 if (params.contactTel) queryParams.push(`contactTel=${params.contactTel}`)
1664 if (params.payType) queryParams.push(`payType=${params.payType}`)
1665 if (queryParams.length > 0) {
1666 url += '?' + queryParams.join('&')
1667 }
1642 return request({ 1668 return request({
1643 url: `/person/paymentRangeNew/pay/${id}/${payType}`, 1669 url,
1644 method: 'post', 1670 method: 'post',
1645 showLoading: false 1671 showLoading: false
1646 }) 1672 })
...@@ -1866,10 +1892,16 @@ export function confirmExam(examId) { ...@@ -1866,10 +1892,16 @@ export function confirmExam(examId) {
1866 1892
1867 // 提交级位考试订单 1893 // 提交级位考试订单
1868 export function commitJiExam(params) { 1894 export function commitJiExam(params) {
1895 let url = `/exam/info/commitJi/${params.id}/${params.addresId}/${params.payType}`
1896 const queryParams = []
1897 if (params.contactPerson) queryParams.push(`contactPerson=${params.contactPerson}`)
1898 if (params.contactTel) queryParams.push(`contactTel=${params.contactTel}`)
1899 if (queryParams.length > 0) {
1900 url += '?' + queryParams.join('&')
1901 }
1869 return request({ 1902 return request({
1870 url: `/exam/info/commitJi/${params.id}/${params.addresId}/${params.payType}`, 1903 url,
1871 method: 'post', 1904 method: 'post',
1872 params,
1873 showLoading: false 1905 showLoading: false
1874 }) 1906 })
1875 } 1907 }
......
...@@ -75,11 +75,32 @@ ...@@ -75,11 +75,32 @@
75 <view class="payment-section"> 75 <view class="payment-section">
76 <view class="section-title">支付方式</view> 76 <view class="section-title">支付方式</view>
77 <view class="payment-methods"> 77 <view class="payment-methods">
78 <view class="payment-item selected"> 78 <radio-group @change="onPayTypeChange">
79 <image :src="config.baseUrl_api + '/fs/static/min.png'" class="icon" mode="widthFix"></image> 79 <label class="payment-item" :class="{ selected: payType === '1' }">
80 <text class="payment-name">民生付</text> 80 <radio :checked="payType === '1'" value="1" />
81 <view class="check-icon"></view> 81 <image :src="config.baseUrl_api + '/fs/static/min.png'" class="icon ml10" mode="widthFix"></image>
82 </view> 82 <text class="payment-name ml10">民生付</text>
83 <!-- <view v-if="payType === '1'" class="check-icon"></view> -->
84 </label>
85 <label class="payment-item" :class="{ selected: payType === '3' }">
86 <radio :checked="payType === '3'" value="3" />
87 <image :src="config.baseUrl_api + '/fs/static/min.png'" class="icon ml10" mode="widthFix"></image>
88 <text class="payment-name ml10">对公转账</text>
89 <!-- <view v-if="payType === '3'" class="check-icon"></view> -->
90 </label>
91 </radio-group>
92 </view>
93 </view>
94
95 <!-- 对公转账表单 -->
96 <view v-if="payType === '3'" class="info-card transfer-form">
97 <view class="form-item">
98 <text class="form-label">联系人</text>
99 <input class="form-input" v-model="formData.contactPerson" placeholder="请输入联系人" />
100 </view>
101 <view class="form-item">
102 <text class="form-label">联系方式</text>
103 <input class="form-input" v-model="formData.contactTel" type="number" placeholder="请输入联系方式" />
83 </view> 104 </view>
84 </view> 105 </view>
85 </view> 106 </view>
...@@ -116,6 +137,11 @@ const examData = ref({}); ...@@ -116,6 +137,11 @@ const examData = ref({});
116 const selectedAddress = ref({}); 137 const selectedAddress = ref({});
117 const memberInfo = ref({}); 138 const memberInfo = ref({});
118 const deptInfo = ref({}); 139 const deptInfo = ref({});
140 const payType = ref('1');
141 const formData = ref({
142 contactPerson: '',
143 contactTel: ''
144 });
119 145
120 // 级别标签 146 // 级别标签
121 const levelTags = computed(() => { 147 const levelTags = computed(() => {
...@@ -203,39 +229,71 @@ const goAddressManage = () => { ...@@ -203,39 +229,71 @@ const goAddressManage = () => {
203 }); 229 });
204 }; 230 };
205 231
232 const onPayTypeChange = (e) => {
233 payType.value = e.detail.value
234 formData.value.contactPerson = ''
235 formData.value.contactTel = ''
236 };
237
206 const handleSubmit = async () => { 238 const handleSubmit = async () => {
207 if (!selectedAddress.value.id) { 239 if (!selectedAddress.value.id) {
208 return uni.showToast({title: '请先选择地址', icon: 'none'}); 240 return uni.showToast({title: '请先选择地址', icon: 'none'});
209 } 241 }
210 242
243 // 对公转账校验
244 if (payType.value === '3') {
245 if (!formData.value.contactPerson) {
246 return uni.showToast({title: '请输入联系人', icon: 'none'});
247 }
248 if (!formData.value.contactTel) {
249 return uni.showToast({title: '请输入联系方式', icon: 'none'});
250 }
251 // 手机号格式校验
252 if (!/^1[3-9]\d{9}$/.test(formData.value.contactTel)) {
253 return uni.showToast({title: '请输入正确的手机号', icon: 'none'});
254 }
255 }
256
211 uni.showModal({ 257 uni.showModal({
212 title: '提示', 258 title: '提示',
213 content: `确定提交订单吗?`, 259 content: `确定提交订单吗?`,
214 success: async (res) => { 260 success: async (res) => {
215 if (res.confirm) { 261 if (res.confirm) {
216 uni.showLoading({ 262 uni.showLoading({
217 title: '支付中...', 263 title: '提交中...',
218 mask: true 264 mask: true
219 }) 265 })
220 try { 266 try {
221 const commitRes = await api.commitJiExam({ 267 const commitRes = await api.commitJiExam({
222 addresId: selectedAddress.value.id, 268 addresId: selectedAddress.value.id,
223 id: examId.value, 269 id: examId.value,
224 payType: '2' 270 payType: payType.value,
271 contactPerson: formData.value.contactPerson,
272 contactTel: formData.value.contactTel
225 }) 273 })
226 if (commitRes.data && commitRes.data.payResult.encryptedData) { 274
275 // 对公转账
276 if (commitRes.data.payFlag == 2) {
277 uni.hideLoading();
278 uni.redirectTo({
279 url: `/myCenter/transferPay?orderId=${commitRes.data.orderId}`
280 });
281 return;
282 }
283
284 // 民生付
285 if (commitRes.data.payResult && commitRes.data.payResult.encryptedData) {
227 const res = await minShengPay(commitRes.data.orderId, commitRes.data.payResult.encryptedData) 286 const res = await minShengPay(commitRes.data.orderId, commitRes.data.payResult.encryptedData)
228 if (res == 'OK') { 287 if (res == 'OK') {
229 uni.showToast({title: '支付成功', icon: 'success'}); 288 uni.showToast({title: '支付成功', icon: 'success'});
230 setTimeout(() => { 289 setTimeout(() => {
231 // uni.navigateBack();
232 uni.redirectTo({ 290 uni.redirectTo({
233 url: '/level/apply' 291 url: '/level/apply'
234 }) 292 })
235 }, 1500) 293 }, 1500)
236 } 294 }
237 } 295 }
238 296
239 } catch (e) { 297 } catch (e) {
240 uni.hideLoading(); 298 uni.hideLoading();
241 console.error('提交失败', e); 299 console.error('提交失败', e);
...@@ -434,7 +492,7 @@ const handleSubmit = async () => { ...@@ -434,7 +492,7 @@ const handleSubmit = async () => {
434 border-radius: 16rpx; 492 border-radius: 16rpx;
435 padding: 30rpx; 493 padding: 30rpx;
436 margin-bottom: 20rpx; 494 margin-bottom: 20rpx;
437 495
438 .section-title { 496 .section-title {
439 font-size: 32rpx; 497 font-size: 32rpx;
440 font-weight: 600; 498 font-weight: 600;
...@@ -442,7 +500,7 @@ const handleSubmit = async () => { ...@@ -442,7 +500,7 @@ const handleSubmit = async () => {
442 margin-bottom: 20rpx; 500 margin-bottom: 20rpx;
443 position: relative; 501 position: relative;
444 padding-left: 20rpx; 502 padding-left: 20rpx;
445 503
446 &::before { 504 &::before {
447 content: ''; 505 content: '';
448 position: absolute; 506 position: absolute;
...@@ -455,41 +513,55 @@ const handleSubmit = async () => { ...@@ -455,41 +513,55 @@ const handleSubmit = async () => {
455 border-radius: 3rpx; 513 border-radius: 3rpx;
456 } 514 }
457 } 515 }
458 516
459 .payment-methods { 517 .payment-methods {
460 background: #f8f9fa; 518 background: #f8f9fa;
461 border-radius: 12rpx; 519 border-radius: 12rpx;
462 padding: 20rpx; 520 padding: 20rpx;
463 521
464 .payment-item { 522 .payment-item {
465 display: flex; 523 display: flex;
466 align-items: center; 524 align-items: center;
467 padding: 16rpx; 525 padding: 16rpx;
468 border-radius: 12rpx; 526 border-radius: 12rpx;
469 border: 2rpx solid transparent; 527 border: 2rpx solid transparent;
470 528
471 &.selected { 529 &.selected {
472 border-color: #e4393c; 530 border-color: #e4393c;
473 background: #fff; 531 background: #fff;
474 532
475 .check-icon { 533 .check-icon {
476 display: flex; 534 display: flex;
477 } 535 }
478 } 536 }
479 537
538 // 覆盖原生 radio 样式
539 ::v-deep radio .wx-radio-input,
540 ::v-deep radio .uni-radio-input {
541 width: 36rpx;
542 height: 36rpx;
543 border-color: #ccc !important;
544 }
545
546 ::v-deep radio .wx-radio-input.wx-radio-input-checked,
547 ::v-deep radio .uni-radio-input-checked {
548 border-color: #e4393c !important;
549 background: #e4393c !important;
550 }
551
480 .payment-icon { 552 .payment-icon {
481 width: 48rpx; 553 width: 48rpx;
482 height: 48rpx; 554 height: 48rpx;
483 margin-right: 16rpx; 555 margin-right: 16rpx;
484 } 556 }
485 557
486 .payment-name { 558 .payment-name {
487 flex: 1; 559 flex: 1;
488 font-size: 30rpx; 560 font-size: 30rpx;
489 color: #333; 561 color: #333;
490 font-weight: 500; 562 font-weight: 500;
491 } 563 }
492 564
493 .check-icon { 565 .check-icon {
494 width: 40rpx; 566 width: 40rpx;
495 height: 40rpx; 567 height: 40rpx;
...@@ -553,6 +625,34 @@ const handleSubmit = async () => { ...@@ -553,6 +625,34 @@ const handleSubmit = async () => {
553 } 625 }
554 } 626 }
555 627
628 /* 对公转账表单 */
629 .transfer-form {
630 .form-item {
631 display: flex;
632 align-items: center;
633 padding: 20rpx 0;
634 border-bottom: 1rpx solid #f5f5f5;
635
636 &:last-child {
637 border-bottom: none;
638 }
639 }
640
641 .form-label {
642 font-size: 28rpx;
643 color: #333;
644 width: 140rpx;
645 flex-shrink: 0;
646 }
647
648 .form-input {
649 flex: 1;
650 font-size: 28rpx;
651 color: #333;
652 text-align: right;
653 }
654 }
655
556 .icon { 656 .icon {
557 width: 40rpx; 657 width: 40rpx;
558 height: 40rpx; 658 height: 40rpx;
......
...@@ -53,8 +53,27 @@ ...@@ -53,8 +53,27 @@
53 <text>民生付</text> 53 <text>民生付</text>
54 </view> 54 </view>
55 </label> 55 </label>
56 <label class="radioItem mt10" >
57 <radio :checked="payType === '3'" class="custom-radio" value="3"/>
58 <view class="payInfo">
59 <image :src="config.baseUrl_api + '/fs/static/min.png'" class="icon" mode="widthFix"></image>
60 <text>对公转账</text>
61 </view>
62 </label>
56 </radio-group> 63 </radio-group>
57 </view> 64 </view>
65
66 <!-- 对公转账表单 -->
67 <view v-if="payType === '3'" class="card transfer-form">
68 <view class="form-item">
69 <text class="form-label">联系人</text>
70 <input class="form-input" v-model="form.contactPerson" placeholder="请输入联系人" />
71 </view>
72 <view class="form-item">
73 <text class="form-label">联系电话</text>
74 <input class="form-input" v-model="form.contactTel" type="number" placeholder="请输入联系电话" />
75 </view>
76 </view>
58 77
59 <view class="totalRow "> 78 <view class="totalRow ">
60 <text class="label">支付费用合计</text> 79 <text class="label">支付费用合计</text>
...@@ -88,7 +107,9 @@ import {minShengPay} from '@/common/pay.js' ...@@ -88,7 +107,9 @@ import {minShengPay} from '@/common/pay.js'
88 import config from '@/config.js' 107 import config from '@/config.js'
89 108
90 const form = ref({ 109 const form = ref({
91 renewYear: 1 110 renewYear: 1,
111 contactPerson: '',
112 contactTel: ''
92 }) 113 })
93 const memberFee = ref(0) 114 const memberFee = ref(0)
94 const preferentialPolicy = ref(false) 115 const preferentialPolicy = ref(false)
...@@ -135,7 +156,33 @@ const handelPay = async () => { ...@@ -135,7 +156,33 @@ const handelPay = async () => {
135 }) 156 })
136 return 157 return
137 } 158 }
138 159
160 // 对公转账校验
161 if (payType.value === '3') {
162 if (!form.value.contactPerson) {
163 uni.showToast({
164 title: '请输入联系人',
165 icon: 'none'
166 })
167 return
168 }
169 if (!form.value.contactTel) {
170 uni.showToast({
171 title: '请输入联系电话',
172 icon: 'none'
173 })
174 return
175 }
176 // 手机号格式校验
177 if (!/^1[3-9]\d{9}$/.test(form.value.contactTel)) {
178 uni.showToast({
179 title: '请输入正确的手机号',
180 icon: 'none'
181 })
182 return
183 }
184 }
185
139 // 显示 loading 186 // 显示 loading
140 uni.showLoading({ 187 uni.showLoading({
141 title: '支付中...', 188 title: '支付中...',
...@@ -143,8 +190,21 @@ const handelPay = async () => { ...@@ -143,8 +190,21 @@ const handelPay = async () => {
143 }) 190 })
144 if (isPaying.value) return 191 if (isPaying.value) return
145 isPaying.value = true 192 isPaying.value = true
193
194 // 构建请求参数
195 const params = {
196 renewYear: form.value.renewYear,
197 type: payType.value
198 }
199
200 // 对公转账需要传联系人信息
201 if (payType.value === '3') {
202 params.contactPerson = form.value.contactPerson
203 params.contactTel = form.value.contactTel
204 }
205
146 // 创建订单 - 参考PC端逻辑 206 // 创建订单 - 参考PC端逻辑
147 const [orderErr, orderRes] = await to(api.certifiedNew(form.value.renewYear)) 207 const [orderErr, orderRes] = await to(api.certifiedNew(params))
148 if (orderErr) { 208 if (orderErr) {
149 uni.hideLoading() 209 uni.hideLoading()
150 isPaying.value = false 210 isPaying.value = false
...@@ -154,7 +214,7 @@ const handelPay = async () => { ...@@ -154,7 +214,7 @@ const handelPay = async () => {
154 }) 214 })
155 return 215 return
156 } 216 }
157 217
158 const data = orderRes.data 218 const data = orderRes.data
159 // 无需支付,直接成功 219 // 无需支付,直接成功
160 if (data.payFlag == 0) { 220 if (data.payFlag == 0) {
...@@ -165,6 +225,18 @@ const handelPay = async () => { ...@@ -165,6 +225,18 @@ const handelPay = async () => {
165 }) 225 })
166 return 226 return
167 } 227 }
228
229 // 对公转账 - 跳转转账信息页面
230 if (data.payFlag == 2) {
231 uni.hideLoading()
232 isPaying.value = false
233 uni.redirectTo({
234 url: `/myCenter/transferPay?orderId=${data.orderId}`
235 })
236 return
237 }
238
239 // 民生支付
168 if (data.payResult && data.payResult.encryptedData) { 240 if (data.payResult && data.payResult.encryptedData) {
169 try { 241 try {
170 const res = await minShengPay(data.orderId, data.payResult.encryptedData) 242 const res = await minShengPay(data.orderId, data.payResult.encryptedData)
...@@ -370,6 +442,36 @@ async function getZtxDiscountPolicyApi() { ...@@ -370,6 +442,36 @@ async function getZtxDiscountPolicyApi() {
370 line-height: 1.4; 442 line-height: 1.4;
371 } 443 }
372 444
445 /* 对公转账表单 */
446 .transfer-form {
447 margin-bottom: 20rpx;
448 }
449
450 .form-item {
451 display: flex;
452 align-items: center;
453 padding: 20rpx 0;
454 border-bottom: 1rpx solid #f5f5f5;
455
456 &:last-child {
457 border-bottom: none;
458 }
459 }
460
461 .form-label {
462 font-size: 28rpx;
463 color: #333;
464 width: 140rpx;
465 flex-shrink: 0;
466 }
467
468 .form-input {
469 flex: 1;
470 font-size: 28rpx;
471 color: #333;
472 text-align: right;
473 }
474
373 .hint-icon { 475 .hint-icon {
374 width: 24rpx; 476 width: 24rpx;
375 height: 24rpx; 477 height: 24rpx;
......
...@@ -25,22 +25,37 @@ ...@@ -25,22 +25,37 @@
25 </view> 25 </view>
26 </view> 26 </view>
27 27
28 <!-- 支付方式选择(修复v-model报错 + 默认勾选) --> 28 <!-- 支付方式选择 -->
29 <view class="pay-type-section"> 29 <view class="pay-type-section">
30 <text class="section-title">选择支付方式</text> 30 <view class="section-title">选择支付方式</view>
31 <!-- uni-app小程序原生radio-group写法 --> 31 <view class="payment-methods">
32 <radio-group :value="payType" @change="handlePayTypeChange"> 32 <radio-group @change="handlePayTypeChange">
33 <label class="radio-item"> 33 <label class="payment-item" :class="{ selected: payType === '1' }">
34 <!-- checked属性实现默认勾选 --> 34 <radio :checked="payType === '1'" value="0" />
35 <radio :checked="payType === '0'" color="#E60012" value="0"/> 35 <image :src="config.baseUrl_api + '/fs/static/min.png'" class="icon ml10" mode="widthFix"></image>
36 <view class="pay-method"> 36 <text class="pay-name ml10">民生付</text>
37 <image :src="config.baseUrl_api + '/fs/static/min.png'" class="icon" mode="widthFix"></image> 37 </label>
38 <text class="pay-name">民生付</text> 38 <label class="payment-item" :class="{ selected: payType === '3' }">
39 </view> 39 <radio :checked="payType === '3'" value="1" />
40 </label> 40 <image :src="config.baseUrl_api + '/fs/static/min.png'" class="icon ml10" mode="widthFix"></image>
41 </radio-group> 41 <text class="pay-name ml10">对公转账</text>
42 </label>
43 </radio-group>
44 </view>
42 </view> 45 </view>
43 46
47 <!-- 对公转账表单 -->
48 <view v-if="payType === '3'" class="transfer-form">
49 <view class="form-item">
50 <text class="form-label">联系人</text>
51 <input class="form-input" v-model="form.contactPerson" placeholder="请输入联系人" />
52 </view>
53 <view class="form-item">
54 <text class="form-label">联系电话</text>
55 <input class="form-input" v-model="form.contactTel" type="number" placeholder="请输入联系电话" />
56 </view>
57 </view>
58
44 <!-- 底部支付按钮 --> 59 <!-- 底部支付按钮 -->
45 <view class="fixed-bottom"> 60 <view class="fixed-bottom">
46 <button :loading="payLoading" class="pay-btn red-bg" @click="handlePay">立即支付</button> 61 <button :loading="payLoading" class="pay-btn red-bg" @click="handlePay">立即支付</button>
...@@ -62,8 +77,12 @@ import {minShengPay} from "@/common/pay"; ...@@ -62,8 +77,12 @@ import {minShengPay} from "@/common/pay";
62 // 核心数据 77 // 核心数据
63 const formData = ref({}) // 订单统计数据 78 const formData = ref({}) // 订单统计数据
64 const rangeId = ref('') // 核心业务ID 79 const rangeId = ref('') // 核心业务ID
65 const payType = ref('0') // 支付方式(默认0=民生付) 80 const payType = ref('1') // 支付方式(默认0=民生付)
66 const payLoading = ref(false) // 支付按钮加载状态 81 const payLoading = ref(false) // 支付按钮加载状态
82 const form = ref({
83 contactPerson: '',
84 contactTel: ''
85 })
67 86
68 // 页面加载接收参数 87 // 页面加载接收参数
69 onLoad(async (options) => { 88 onLoad(async (options) => {
...@@ -93,7 +112,12 @@ async function getCount() { ...@@ -93,7 +112,12 @@ async function getCount() {
93 112
94 // 支付方式切换 113 // 支付方式切换
95 function handlePayTypeChange(e) { 114 function handlePayTypeChange(e) {
96 payType.value = e.detail.value 115 payType.value = e.detail.value == '0' ? '1' : '3'
116 console.log('支付方式:', payType.value)
117 if (payType.value === '3') {
118 form.value.contactPerson = ''
119 form.value.contactTel = ''
120 }
97 } 121 }
98 122
99 // 立即支付核心逻辑 123 // 立即支付核心逻辑
...@@ -105,23 +129,55 @@ async function handlePay() { ...@@ -105,23 +129,55 @@ async function handlePay() {
105 icon: 'none' 129 icon: 'none'
106 }) 130 })
107 } 131 }
108 132
133 // 对公转账校验
134 if (payType.value === '3') {
135 if (!form.value.contactPerson) {
136 return uni.showToast({ title: '请输入联系人', icon: 'none' })
137 }
138 if (!form.value.contactTel) {
139 return uni.showToast({ title: '请输入联系电话', icon: 'none' })
140 }
141 // 手机号格式校验
142 if (!/^1[3-9]\d{9}$/.test(form.value.contactTel)) {
143 return uni.showToast({ title: '请输入正确的手机号', icon: 'none' })
144 }
145 }
146
109 try { 147 try {
110 payLoading.value = true 148 payLoading.value = true
111 uni.showLoading({ 149 uni.showLoading({
112 title: '支付中...', 150 title: '提交中...',
113 mask: true 151 mask: true
114 }) 152 })
115 const res = await api.goPay(rangeId.value, '2') 153
116 if (res.data.payResult && res.data.payResult.encryptedData) { 154 // 构建请求参数
117 const reason = await minShengPay(res.data.orderId, res.data.payResult.encryptedData) 155 const params = {
156 id: rangeId.value,
157 payType: payType.value
158 }
159 if (payType.value === '3') {
160 params.contactPerson = form.value.contactPerson
161 params.contactTel = form.value.contactTel
162 }
163
164 const res = await api.goPay(params)
165 const resData = res.data
166
167 // 对公转账 - 跳转转账信息页面
168 if (resData.payFlag == 2) {
169 uni.hideLoading()
170 uni.redirectTo({
171 url: `/myCenter/transferPay?orderId=${resData.orderId}`
172 })
173 return
174 }
175
176 // 民生付
177 if (resData.payResult && resData.payResult.encryptedData) {
178 const reason = await minShengPay(resData.orderId, resData.payResult.encryptedData)
118 if (reason == 'OK') { 179 if (reason == 'OK') {
119 // // 支付成功,跳转到成功页面 180 uni.showToast({ title: '支付成功', icon: 'success' })
120 // uni.redirectTo({
121 // url: `/myCenter/sucPay?orderId=${res.data.orderId}`
122 // })
123
124 uni.showToast({title: '支付成功', icon: 'success'});
125 setTimeout(() => { 181 setTimeout(() => {
126 uni.hideLoading() 182 uni.hideLoading()
127 uni.redirectTo({ 183 uni.redirectTo({
...@@ -130,9 +186,7 @@ async function handlePay() { ...@@ -130,9 +186,7 @@ async function handlePay() {
130 }, 1500) 186 }, 1500)
131 } 187 }
132 } 188 }
133 189
134 // 跳转到支付成功页
135
136 } catch (err) { 190 } catch (err) {
137 console.log(err) 191 console.log(err)
138 const errMsg = err?.data?.msg || err?.message || '支付失败,请稍后重试' 192 const errMsg = err?.data?.msg || err?.message || '支付失败,请稍后重试'
...@@ -216,35 +270,111 @@ async function handlePay() { ...@@ -216,35 +270,111 @@ async function handlePay() {
216 270
217 // 支付方式区域 271 // 支付方式区域
218 .pay-type-section { 272 .pay-type-section {
219 margin-bottom: 80rpx; 273 margin-bottom: 30rpx;
220 274
221 .section-title { 275 .section-title {
222 font-size: 32rpx; 276 font-size: 32rpx;
277 font-weight: 600;
223 color: #333; 278 color: #333;
224 margin-bottom: 20rpx; 279 margin-bottom: 20rpx;
225 display: block; 280 position: relative;
281 padding-left: 20rpx;
282
283 &::before {
284 content: '';
285 position: absolute;
286 left: 0;
287 top: 50%;
288 transform: translateY(-50%);
289 width: 6rpx;
290 height: 28rpx;
291 background: linear-gradient(180deg, #FF755A, #F51722);
292 border-radius: 3rpx;
293 }
226 } 294 }
227 295 }
228 .radio-item { 296
297 .payment-methods {
298 background: #f8f9fa;
299 border-radius: 12rpx;
300 padding: 20rpx;
301
302 .payment-item {
229 display: flex; 303 display: flex;
230 align-items: center; 304 align-items: center;
231 font-size: 32rpx; 305 padding: 16rpx;
232 padding: 10rpx 0; 306 border-radius: 12rpx;
233 307 border: 2rpx solid transparent;
234 .pay-method { 308
235 display: flex; 309 &.selected {
236 align-items: center; 310 border-color: #e4393c;
311 background: #fff;
312 }
313
314 // 覆盖原生 radio 样式
315 ::v-deep radio .wx-radio-input,
316 ::v-deep radio .uni-radio-input {
317 width: 36rpx;
318 height: 36rpx;
319 border-color: #ccc !important;
320 }
321
322 ::v-deep radio .wx-radio-input.wx-radio-input-checked,
323 ::v-deep radio .uni-radio-input-checked {
324 border-color: #e4393c !important;
325 background: #e4393c !important;
326 }
327
328 .icon {
329 width: 40rpx;
330 height: 40rpx;
331 }
332
333 .pay-name {
334 font-size: 30rpx;
335 color: #333;
336 font-weight: 500;
337 }
338
339 .ml10 {
237 margin-left: 10rpx; 340 margin-left: 10rpx;
238
239 .pay-name {
240 font-size: 32rpx;
241 margin-left: 20rpx;
242 color: #333;
243 }
244 } 341 }
245 } 342 }
246 } 343 }
247 344
345 // 对公转账表单
346 .transfer-form {
347 background: #f8f9fa;
348 border-radius: 12rpx;
349 padding: 20rpx;
350 margin-bottom: 30rpx;
351
352 .form-item {
353 display: flex;
354 align-items: center;
355 padding: 20rpx 0;
356 border-bottom: 1rpx solid #eee;
357
358 &:last-child {
359 border-bottom: none;
360 }
361 }
362
363 .form-label {
364 font-size: 28rpx;
365 color: #333;
366 width: 140rpx;
367 flex-shrink: 0;
368 }
369
370 .form-input {
371 flex: 1;
372 font-size: 28rpx;
373 color: #333;
374 text-align: right;
375 }
376 }
377
248 // 底部支付按钮 378 // 底部支付按钮
249 .fixed-bottom { 379 .fixed-bottom {
250 position: fixed; 380 position: fixed;
......
...@@ -77,6 +77,17 @@ ...@@ -77,6 +77,17 @@
77 @select="upPicArr" @delete="delpicArr"> 77 @select="upPicArr" @delete="delpicArr">
78 </uni-file-picker> 78 </uni-file-picker>
79 </uni-forms-item> 79 </uni-forms-item>
80 <view class="notice-box">
81 <checkbox-group @change="onNoticeChange">
82 <label class="notice-label">
83 <checkbox :checked="form.notice" color="#e64329" value="1"/>
84 <text class="notice-text">我已阅读并同意</text>
85 <text class="notice-link" @click.stop="showNotice(1)">《注册须知》</text>
86 <text class="notice-link" @click.stop="showNotice(2)">《入会须知》</text>
87 <text class="notice-link" @click.stop="showNotice(3)">《免责声明》</text>
88 </label>
89 </checkbox-group>
90 </view>
80 </uni-forms> 91 </uni-forms>
81 <view class="fixedBottom"> 92 <view class="fixedBottom">
82 <button class="btn-red" @click="submit()">确定</button> 93 <button class="btn-red" @click="submit()">确定</button>
...@@ -134,7 +145,8 @@ ...@@ -134,7 +145,8 @@
134 type: '1', 145 type: '1',
135 applyPoints: '0', 146 applyPoints: '0',
136 renewYear: 1, 147 renewYear: 1,
137 legalIdcCode: '' 148 legalIdcCode: '',
149 notice: false
138 }); 150 });
139 const years = ref(['1', '2', '3', '4', '5']) 151 const years = ref(['1', '2', '3', '4', '5'])
140 const yesno = ref([{ 152 const yesno = ref([{
...@@ -458,6 +470,13 @@ ...@@ -458,6 +470,13 @@
458 }) 470 })
459 return 471 return
460 } 472 }
473 if (!form.value.notice) {
474 uni.showToast({
475 title: '请阅读并同意注册须知、入会须知、免责声明',
476 icon: 'none'
477 })
478 return
479 }
461 if (form.value.parentId == -1 || form.value.parentId == 0) { 480 if (form.value.parentId == -1 || form.value.parentId == 0) {
462 uni.showToast({ 481 uni.showToast({
463 title: '请选择所属协会', 482 title: '请选择所属协会',
...@@ -784,6 +803,25 @@ ...@@ -784,6 +803,25 @@
784 function delpicArr(e) { 803 function delpicArr(e) {
785 picArr.value.splice(e.index, 1) 804 picArr.value.splice(e.index, 1)
786 } 805 }
806
807 // 须知勾选
808 function onNoticeChange(e) {
809 const values = e.detail.value
810 form.value.notice = values.includes('1')
811 }
812
813 // 查看须知 - 跳转到须知页面
814 function showNotice(type) {
815 const pageMap = {
816 1: '/pages/index/notice-registration',
817 2: '/pages/index/notice-membership',
818 3: '/pages/index/notice-disclaimer'
819 }
820 const url = pageMap[type]
821 if (url) {
822 uni.navigateTo({url})
823 }
824 }
787 </script> 825 </script>
788 826
789 <style lang="scss" scoped> 827 <style lang="scss" scoped>
...@@ -837,6 +875,25 @@ ...@@ -837,6 +875,25 @@
837 border-radius: 15rpx; 875 border-radius: 15rpx;
838 } 876 }
839 877
878 .notice-box {
879 padding: 20rpx 0;
880 }
881
882 .notice-label {
883 display: flex;
884 align-items: center;
885 flex-wrap: wrap;
886 font-size: 24rpx;
887 }
888
889 .notice-text {
890 color: #666;
891 }
892
893 .notice-link {
894 color: #007AFF;
895 }
896
840 .imgArea { 897 .imgArea {
841 padding: 1px; 898 padding: 1px;
842 display: flex; 899 display: flex;
......
1 <template>
2 <view class="container">
3 <!-- 订单信息 -->
4 <view class="card info-card">
5 <view class="info-row">
6 <text class="info-label">订单号</text>
7 <text class="info-value">{{ form.tradeNo || '-' }}</text>
8 </view>
9 <view class="info-row">
10 <text class="info-label">缴费单位</text>
11 <text class="info-value">{{ form.orderName || '-' }}</text>
12 </view>
13 <view class="info-row">
14 <text class="info-label">订单金额</text>
15 <text class="info-value highlight">{{ form.price || '0.00' }}</text>
16 </view>
17 </view>
18
19 <!-- 转账提示 -->
20 <view class="transfer-tip">
21 请通过网上银行(网银)或银行柜台或手机银行
22 </view>
23
24 <!-- 转账信息卡片 -->
25 <view class="card bank-card">
26 <view class="card-title">转账信息</view>
27 <view class="bank-row">
28 <text class="bank-label">收款人姓名</text>
29 <text class="bank-value">秦琦五洋赫公司</text>
30 <text class="copy-btn" @click="handelCoPy('秦琦五洋赫公司')">复制</text>
31 </view>
32 <view class="bank-row">
33 <text class="bank-label">收款银行</text>
34 <text class="bank-value">中国民生银行</text>
35 <text class="copy-btn" @click="handelCoPy('中国民生银行')">复制</text>
36 </view>
37 <view class="bank-row">
38 <text class="bank-label">收款卡号</text>
39 <text class="bank-value card-number">{{ form.ziZhangBu || '-' }}</text>
40 <text class="copy-btn" @click="handelCoPy(form.ziZhangBu)">复制</text>
41 </view>
42 <view class="bank-row">
43 <text class="bank-label">收款金额</text>
44 <text class="bank-value highlight">{{ form.price || '0.00' }}</text>
45 <text class="copy-btn" @click="handelCoPy(form.price)">复制</text>
46 </view>
47 </view>
48
49 <!-- 金额说明 -->
50 <view class="card notice-card">
51 <view class="notice-line">1. 请通过网上银行(网银)或银行柜台或手机银行向以下账号划转款项。</view>
52 <view class="notice-line">2. 转账金额与订单金额必须保持一致,不得多转、少转。</view>
53 </view>
54
55 <!-- 温馨提示 -->
56 <view class="card warning-card">
57 <view class="warning-title">
58 <text class="warning-icon">!</text>
59 <text>温馨提示</text>
60 </view>
61 <view class="warning-content">
62 <view class="warning-line">1. 转账时请务必核对账户余额,否则造成的资金损失由您自行承担。</view>
63 <view class="warning-line">2. 转账成功后请及时查询交易状态。</view>
64 </view>
65 </view>
66
67 <!-- 底部按钮 -->
68 <view class="bottomBtn">
69 <button class="cancelBtn" @click="handelClose">取 消</button>
70 <button class="confirmBtn" @click="handelClose">确 定</button>
71 </view>
72 </view>
73 </template>
74
75 <script setup>
76 import { ref } from 'vue'
77 import { onLoad } from '@dcloudio/uni-app'
78 import * as api from '@/common/api.js'
79
80 const form = ref({
81 tradeNo: '',
82 orderName: '',
83 price: '',
84 ziZhangBu: ''
85 })
86 const orderId = ref('')
87
88 onLoad((option) => {
89 orderId.value = option.orderId || ''
90 getOrderDetail()
91 })
92
93 async function getOrderDetail() {
94 if (!orderId.value) return
95 uni.showLoading({ title: '加载中...' })
96 try {
97 const res = await api.orderDetail(orderId.value)
98 if (res.data) {
99 form.value = res.data
100 }
101 } catch (e) {
102 console.error('获取订单详情失败', e)
103 } finally {
104 uni.hideLoading()
105 }
106 }
107
108 function handelCoPy(text) {
109 if (!text || text === '-') {
110 uni.showToast({ title: '暂无内容可复制', icon: 'none' })
111 return
112 }
113 uni.setClipboardData({
114 data: String(text),
115 success: () => {
116 uni.showToast({ title: '复制成功', icon: 'success' })
117 },
118 fail: () => {
119 uni.showToast({ title: '复制失败', icon: 'none' })
120 }
121 })
122 }
123
124 function handelClose() {
125 uni.navigateBack({
126 delta: 2
127 })
128 }
129 </script>
130
131 <style lang="scss" scoped>
132 .hidden-input {
133 position: fixed;
134 left: -9999px;
135 opacity: 0;
136 }
137
138 .container {
139 min-height: 100vh;
140 background-color: #f7f7f7;
141 padding: 20rpx 20rpx 120rpx;
142 }
143
144 /* 订单信息卡片 */
145 .info-card {
146 background: #fff;
147 border-radius: 8rpx;
148 padding: 25rpx 20rpx;
149 margin-bottom: 20rpx;
150
151 .info-row {
152 display: flex;
153 justify-content: space-between;
154 align-items: center;
155 padding: 16rpx 0;
156 border-bottom: 1rpx solid #f5f5f5;
157
158 &:last-child {
159 border-bottom: none;
160 }
161
162 .info-label {
163 font-size: 28rpx;
164 color: #666;
165 }
166
167 .info-value {
168 font-size: 28rpx;
169 color: #333;
170 font-weight: 500;
171 }
172
173 .highlight {
174 color: #FF8124;
175 font-weight: 600;
176 }
177 }
178 }
179
180 /* 转账提示 */
181 .transfer-tip {
182 background-color: #E8F4FF;
183 color: #409EFF;
184 padding: 20rpx;
185 border-radius: 8rpx;
186 font-size: 28rpx;
187 text-align: center;
188 font-weight: 500;
189 margin-bottom: 20rpx;
190 }
191
192 /* 银行卡信息 */
193 .bank-card {
194 background: #fff;
195 border-radius: 8rpx;
196 padding: 25rpx 20rpx;
197 margin-bottom: 20rpx;
198
199 .card-title {
200 font-size: 30rpx;
201 font-weight: 600;
202 color: #333;
203 margin-bottom: 20rpx;
204 padding-bottom: 16rpx;
205 border-bottom: 1rpx solid #e4e7ed;
206 }
207
208 .bank-row {
209 display: flex;
210 align-items: center;
211 padding: 16rpx 0;
212 font-size: 28rpx;
213
214 .bank-label {
215 color: #666;
216 width: 160rpx;
217 flex-shrink: 0;
218 }
219
220 .bank-value {
221 flex: 1;
222 color: #333;
223 font-weight: 500;
224
225 &.card-number {
226 font-family: monospace;
227 letter-spacing: 2rpx;
228 }
229
230 &.highlight {
231 color: #FF8124;
232 }
233 }
234
235 .copy-btn {
236 color: #007AFF;
237 font-size: 26rpx;
238 padding: 8rpx 16rpx;
239 }
240 }
241 }
242
243 /* 金额说明 */
244 .notice-card {
245 background: #FEF0F0;
246 border-radius: 8rpx;
247 padding: 25rpx 20rpx;
248 margin-bottom: 20rpx;
249
250 .notice-line {
251 font-size: 26rpx;
252 color: #F56C6C;
253 line-height: 1.6;
254 margin-bottom: 8rpx;
255
256 &:last-child {
257 margin-bottom: 0;
258 }
259 }
260 }
261
262 /* 温馨提示 */
263 .warning-card {
264 background: #FDF6EC;
265 border-radius: 8rpx;
266 padding: 25rpx 20rpx;
267
268 .warning-title {
269 display: flex;
270 align-items: center;
271 font-size: 28rpx;
272 color: #E6A23C;
273 font-weight: 600;
274 margin-bottom: 16rpx;
275
276 .warning-icon {
277 width: 36rpx;
278 height: 36rpx;
279 background: #E6A23C;
280 color: #fff;
281 border-radius: 50%;
282 display: flex;
283 align-items: center;
284 justify-content: center;
285 font-size: 24rpx;
286 margin-right: 10rpx;
287 }
288 }
289
290 .warning-content {
291 .warning-line {
292 font-size: 26rpx;
293 color: #E6A23C;
294 line-height: 1.6;
295 margin-bottom: 8rpx;
296
297 &:last-child {
298 margin-bottom: 0;
299 }
300 }
301 }
302 }
303
304 /* 底部按钮 */
305 .bottomBtn {
306 position: fixed;
307 bottom: 0;
308 left: 0;
309 right: 0;
310 display: flex;
311 gap: 20rpx;
312 padding: 20rpx 30rpx;
313 background: #fff;
314 border-top: 1rpx solid #eee;
315 }
316
317 .cancelBtn {
318 flex: 1;
319 height: 88rpx;
320 line-height: 88rpx;
321 background: #f5f5f5;
322 color: #666;
323 border-radius: 44rpx;
324 font-size: 32rpx;
325 border: none;
326 }
327
328 .confirmBtn {
329 flex: 1;
330 height: 88rpx;
331 line-height: 88rpx;
332 background: #C4121B;
333 color: #fff;
334 border-radius: 44rpx;
335 font-size: 32rpx;
336 border: none;
337 }
338 </style>
...@@ -83,6 +83,13 @@ ...@@ -83,6 +83,13 @@
83 } 83 }
84 }, 84 },
85 { 85 {
86 "path": "pages/index/notice-membership-vip",
87 "style": {
88 "navigationBarTitleText": "入会须知",
89 "enablePullDownRefresh": false
90 }
91 },
92 {
86 "path": "pages/index/notice-disclaimer", 93 "path": "pages/index/notice-disclaimer",
87 "style": { 94 "style": {
88 "navigationBarTitleText": "免责声明", 95 "navigationBarTitleText": "免责声明",
...@@ -1026,6 +1033,13 @@ ...@@ -1026,6 +1033,13 @@
1026 } 1033 }
1027 }, 1034 },
1028 { 1035 {
1036 "path": "transferPay",
1037 "style": {
1038 "navigationBarTitleText": "对公转账",
1039 "enablePullDownRefresh": false
1040 }
1041 },
1042 {
1029 "path": "examPointApply", 1043 "path": "examPointApply",
1030 "style": { 1044 "style": {
1031 "navigationBarTitleText": "申请考点", 1045 "navigationBarTitleText": "申请考点",
......
1 <template>
2 <view class="notice-page">
3 <view class="notice-body">
4 <view class="notice-content">
5 欢迎您申请成为中国跆拳道协会(以下简称中国跆协)会员,请确保本次申请是经过您本人或监护人授权同意后的自愿行为,请您务必仔细阅读本入会须知。
6 </view>
7 <view class="notice-item">一、中国跆协会员分为个人会员和单位会员。</view>
8 <view class="notice-item">
9 二、成为本协会会员条件:遵守中国跆协章程和协会各项规章制度及相关决议,按期交纳会费,积极支持和参与中国跆拳道事业发展的社会各届人士或地方跆拳道协会、俱乐部、培训机构等,均可自愿申请成为中国跆协会员。
10 </view>
11 <view class="notice-item">三、个人会员为在中国工作和生活的跆拳道爱好者,16 周岁以下应有监护人协助申请,会员须为中国公民。</view>
12 <view class="notice-item">四、会员入会需向所在区域内中国跆协单位会员提出入会申请,并按程序报中国跆协批准,按规定交纳会费。</view>
13 <view class="notice-item">五、会员享有《中国跆拳道协会会员管理办法》规定的会员权利。</view>
14 <view class="notice-item">六、会员应履行《中国跆拳道协会会员管理办法》规定的会员义务。</view>
15 <view class="notice-item">七、凡中国跆协会员,须按照《中国跆拳道协会会员会费标准(2021 版)》按时交纳年度会费。</view>
16 <view class="notice-item">八、会员行为违反《中国跆拳道协会会员管理办法》中规定的,按照相关处罚规定进行处理。</view>
17 <view class="notice-item">九、其它会员相关内容请查看《中国跆拳道协会章程》《中国跆拳道协会会员管理办法》。</view>
18 </view>
19 </view>
20 </template>
21
22 <script setup>
23 </script>
24
25 <style lang="scss" scoped>
26 .notice-page {
27 min-height: 100vh;
28 background: #f7f7f7;
29 }
30
31 .notice-header {
32 background: #fff;
33 padding: 30rpx;
34 text-align: center;
35 border-bottom: 1rpx solid #eee;
36 }
37
38 .notice-title {
39 font-size: 34rpx;
40 font-weight: 600;
41 color: #333;
42 }
43
44 .notice-body {
45 padding: 30rpx;
46 background: #fff;
47 margin: 20rpx;
48 border-radius: 12rpx;
49 }
50
51 .notice-content {
52 font-size: 28rpx;
53 color: #333;
54 line-height: 1.8;
55 margin-bottom: 20rpx;
56 }
57
58 .notice-item {
59 font-size: 28rpx;
60 color: #333;
61 line-height: 1.8;
62 margin-bottom: 20rpx;
63 text-indent: 2em;
64 }
65 </style>
...@@ -92,6 +92,7 @@ ...@@ -92,6 +92,7 @@
92 <!-- 会员须知 --> 92 <!-- 会员须知 -->
93 <uni-popup ref="popup" type="bottom" background-color="#fff" animation :disable-scroll="true" 93 <uni-popup ref="popup" type="bottom" background-color="#fff" animation :disable-scroll="true"
94 :mask-click="false"> 94 :mask-click="false">
95 <view class="tt">注册须知</view>
95 <view class="tt">入会须知</view> 96 <view class="tt">入会须知</view>
96 <view class="popBody"> 97 <view class="popBody">
97 _{{baseFormData.name}}_欢迎您申请成为中国跆拳道协会(以下简称中国跆协)会员,请确保本次申请是经过您本人或监护人授权同意后的自愿行为,请您务必仔细阅读本入会须知。 98 _{{baseFormData.name}}_欢迎您申请成为中国跆拳道协会(以下简称中国跆协)会员,请确保本次申请是经过您本人或监护人授权同意后的自愿行为,请您务必仔细阅读本入会须知。
......
...@@ -79,50 +79,17 @@ ...@@ -79,50 +79,17 @@
79 </uni-forms> 79 </uni-forms>
80 </view> 80 </view>
81 <view class="agreeline"> 81 <view class="agreeline">
82 <image @click="changeAgree(agree)" v-if="agree" 82 <checkbox-group @change="onAgreeChange">
83 :src="config.baseUrl_api+'/fs/static/login/xz_dwn@2x.png'"></image> 83 <label class="agree-label">
84 <image @click="changeAgree(agree)" v-else :src="config.baseUrl_api+'/fs/static/login/xz@2x.png'"> 84 <checkbox :checked="agree" color="#C40F18" value="1" />
85 </image> 85 <text class="agree-text">我已阅读并同意</text>
86 <view>我已阅读<text @click="openpopup">《入会须知》</text></view> 86 <text class="notice-link" @click.stop="showNotice(1)">《注册须知》</text>
87 <text class="notice-link" @click.stop="showNotice(2)">《入会须知》</text>
88 </label>
89 </checkbox-group>
87 </view> 90 </view>
88 </view> 91 </view>
89 <view class="fixedBottom"><button class="btn-red" @click="goSubmit">确 定</button></view> 92 <view class="fixedBottom"><button class="btn-red" @click="goSubmit">确 定</button></view>
90
91 <!-- 会员须知 -->
92 <uni-popup ref="popup" type="bottom" background-color="#fff" animation :disable-scroll="true"
93 :mask-click="false">
94 <view class="tt">入会须知</view>
95 <view class="popBody">
96 _{{baseFormData.name}}_欢迎您申请成为中国跆拳道协会(以下简称中国跆协)会员,请确保本次申请是经过您本人或监护人授权同意后的自愿行为,请您务必仔细阅读本入会须知。
97 <br />
98 一、中国跆协会员分为个人会员和单位会员。
99 <br />
100 二、成为本协会会员条件:遵守中国跆协章程和协会各项规章制度及相关决议,按期交纳会费,积极支持和参与中国跆拳道事业发展的社会各届人士或地方跆拳道协会、俱乐部、培训机构等,均可自愿申请成为中国跆协会员。<br />
101 三、个人会员为在中国工作和生活的跆拳道爱好者,16 周岁以下应有监护人协助申请,会员须为中国公民。<br />
102 四、会员入会需向所在区域内中国跆协单位会员提出入会申请,并按程序报中国跆协批准,按规定交纳会费。<br />
103 五、会员享有《中国跆拳道协会会员管理办法》规定的会员权利。
104 <br />
105 六、会员应履行《中国跆拳道协会会员管理办法》规定的会员义务。
106 <br />
107 七、凡中国跆协会员,须按照《中国跆拳道协会会员会费标准(2021 版)》按时交纳年度会费。<br />
108 八、会员行为违反《中国跆拳道协会会员管理办法》中规定的,按照相关处罚规定进行处理。<br />
109 九、其它会员相关内容请查看《中国跆拳道协会章程》《中国跆拳道协会会员管理办法》。<br />
110
111 <button @click="closepopup" class="btn-red">我已阅读</button>
112 </view>
113 </uni-popup>
114
115 <uni-popup ref="infoConfirm" type="center" :disable-scroll="true" :mask-click="false">
116 <view class="tt">确认信息</view>
117 <view class="popBody">
118 <view>
119
120 </view>
121
122 <button @click="closepopup" class="btn-red">已确认</button>
123 </view>
124 </uni-popup>
125
126 </view> 93 </view>
127 </template> 94 </template>
128 95
...@@ -137,8 +104,6 @@ ...@@ -137,8 +104,6 @@
137 import config from '@/config.js' 104 import config from '@/config.js'
138 import * as aes2 from '@/common/utils.js' 105 import * as aes2 from '@/common/utils.js'
139 const current = ref(0) 106 const current = ref(0)
140 const popup = ref(null)
141 const infoConfirm = ref(null)
142 const agree = ref(false) 107 const agree = ref(false)
143 const perId = ref() 108 const perId = ref()
144 const photoArr = ref({}) 109 const photoArr = ref({})
...@@ -244,8 +209,21 @@ ...@@ -244,8 +209,21 @@
244 } 209 }
245 210
246 211
247 function changeAgree(item) { 212 function onAgreeChange(e) {
248 agree.value = !item 213 const values = e.detail.value
214 agree.value = values.includes('1')
215 }
216
217 // 查看须知 - 跳转到须知页面
218 function showNotice(type) {
219 const pageMap = {
220 1: '/pages/index/notice-registration',
221 2: '/pages/index/notice-membership-vip'
222 }
223 const url = pageMap[type]
224 if (url) {
225 uni.navigateTo({url})
226 }
249 } 227 }
250 228
251 //身份证识别 229 //身份证识别
...@@ -444,17 +422,6 @@ ...@@ -444,17 +422,6 @@
444 } 422 }
445 423
446 424
447 function openpopup() {
448 popup.value.open()
449 }
450
451
452 function closepopup() {
453 agree.value = true
454 popup.value.close()
455 }
456
457
458 function changeIdcType(e) { 425 function changeIdcType(e) {
459 console.log(e) 426 console.log(e)
460 // 切换证件照类型把当前页面数据清空 427 // 切换证件照类型把当前页面数据清空
...@@ -473,7 +440,7 @@ ...@@ -473,7 +440,7 @@
473 if (!agree.value) { 440 if (!agree.value) {
474 uni.showToast({ 441 uni.showToast({
475 icon: 'none', 442 icon: 'none',
476 title: '请阅入会须知', 443 title: '请阅读并同意注册须知、入会须知',
477 duration: 2000 444 duration: 2000
478 }); 445 });
479 return 446 return
...@@ -647,21 +614,24 @@ ...@@ -647,21 +614,24 @@
647 } 614 }
648 615
649 .agreeline { 616 .agreeline {
650 padding: 20rpx 40rpx; 617 padding: 20rpx 30rpx;
651 box-sizing: border-box; 618 box-sizing: border-box;
652 display: flex; 619 }
653 font-size: 30rpx;
654 620
621 .agree-label {
622 display: flex;
623 align-items: center;
624 flex-wrap: wrap;
625 font-size: 24rpx;
626 }
655 627
656 text { 628 .agree-text {
657 color: #014A9F; 629 color: #666;
658 } 630 margin-left: 10rpx;
631 }
659 632
660 image { 633 .notice-link {
661 width: 40rpx; 634 color: #007AFF;
662 height: 40rpx;
663 margin-right: 20rpx;
664 }
665 } 635 }
666 636
667 .upCard { 637 .upCard {
......
Styling with Markdown is supported
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!