Merge remote-tracking branch 'origin/master'
# Conflicts: # personal/addVip_per.vue
Showing
10 changed files
with
1012 additions
and
206 deletions
| ... | @@ -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; | ... | ... |
myCenter/transferPay.vue
0 → 100644
| 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": "申请考点", | ... | ... |
pages/index/notice-membership-vip.vue
0 → 100644
| 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> |
| ... | @@ -69,66 +69,63 @@ | ... | @@ -69,66 +69,63 @@ |
| 69 | :placeholderStyle="placeholderStyle" v-model="baseFormData.address" | 69 | :placeholderStyle="placeholderStyle" v-model="baseFormData.address" |
| 70 | placeholder="请输入详细地址" /></uni-forms-item> | 70 | placeholder="请输入详细地址" /></uni-forms-item> |
| 71 | 71 | ||
| 72 | <uni-forms-item label="头像" required> | 72 | <uni-forms-item label="头像" required> |
| 73 | <uni-file-picker v-model="photoArr" @delete="delPhoto" return-type="object" limit="1" | 73 | <uni-file-picker v-model="photoArr" @delete="delPhoto" return-type="object" limit="1" |
| 74 | @select="upPhoto" :del-ico="false" :image-styles="imageStylesTx"></uni-file-picker> | 74 | @select="upPhoto" :del-ico="false" :image-styles="imageStylesTx"></uni-file-picker> |
| 75 | <image mode="aspectFill" v-if="baseFormData.photo2" style="height:200rpx;width:200rpx;" :src="config.baseUrl_api + baseFormData.photo2"/> | 75 | <image mode="aspectFill" v-if="baseFormData.photo2" style="height:200rpx;width:200rpx;" :src="config.baseUrl_api + baseFormData.photo2"/> |
| 76 | </uni-forms-item> --> | 76 | </uni-forms-item> --> |
| 77 | </view> | 77 | </view> |
| 78 | </uni-forms> | 78 | </uni-forms> |
| 79 | </view> | 79 | </view> |
| 80 | </view> | 80 | </view> |
| 81 | <view class="fixed-agreeline"> | 81 | <view class="fixed-agreeline"> |
| 82 | <view class="agreeline"> | 82 | <view class="agreeline"> |
| 83 | <image v-if="agree" :src="config.baseUrl_api+'/fs/static/login/xz_dwn@2x.png'" | 83 | <image @click="changeAgree(agree)" v-if="agree" |
| 84 | @click="changeAgree(agree)"></image> | 84 | :src="config.baseUrl_api+'/fs/static/login/xz_dwn@2x.png'"></image> |
| 85 | <image v-else :src="config.baseUrl_api+'/fs/static/login/xz@2x.png'" @click="changeAgree(agree)"> | 85 | <image @click="changeAgree(agree)" v-else :src="config.baseUrl_api+'/fs/static/login/xz@2x.png'"> |
| 86 | </image> | 86 | </image> |
| 87 | <view>我已阅读 | 87 | <view>我已阅读<text @click="openpopup">《入会须知》</text></view> |
| 88 | <text @click="openpopup">《入会须知》</text> | 88 | </view> |
| 89 | </view> | 89 | </view> |
| 90 | </view> | 90 | <view class="fixedBottom"><button class="btn-red" @click="goSubmit">确 定</button></view> |
| 91 | </view> | 91 | |
| 92 | <view class="fixedBottom"> | 92 | <!-- 会员须知 --> |
| 93 | <button class="btn-red" @click="goSubmit">确 定</button> | 93 | <uni-popup ref="popup" type="bottom" background-color="#fff" animation :disable-scroll="true" |
| 94 | </view> | 94 | :mask-click="false"> |
| 95 | 95 | <view class="tt">注册须知</view> | |
| 96 | <!-- 会员须知 --> | 96 | <view class="tt">入会须知</view> |
| 97 | <uni-popup ref="popup" :disable-scroll="true" :mask-click="false" animation background-color="#fff" | 97 | <view class="popBody"> |
| 98 | type="bottom"> | 98 | _{{baseFormData.name}}_欢迎您申请成为中国跆拳道协会(以下简称中国跆协)会员,请确保本次申请是经过您本人或监护人授权同意后的自愿行为,请您务必仔细阅读本入会须知。 |
| 99 | <view class="tt">入会须知</view> | 99 | <br /> |
| 100 | <view class="popBody"> | 100 | 一、中国跆协会员分为个人会员和单位会员。 |
| 101 | _{{ baseFormData.name }}_欢迎您申请成为中国跆拳道协会(以下简称中国跆协)会员,请确保本次申请是经过您本人或监护人授权同意后的自愿行为,请您务必仔细阅读本入会须知。 | 101 | <br /> |
| 102 | <br/> | 102 | 二、成为本协会会员条件:遵守中国跆协章程和协会各项规章制度及相关决议,按期交纳会费,积极支持和参与中国跆拳道事业发展的社会各届人士或地方跆拳道协会、俱乐部、培训机构等,均可自愿申请成为中国跆协会员。<br /> |
| 103 | 一、中国跆协会员分为个人会员和单位会员。 | 103 | 三、个人会员为在中国工作和生活的跆拳道爱好者,16 周岁以下应有监护人协助申请,会员须为中国公民。<br /> |
| 104 | <br/> | 104 | 四、会员入会需向所在区域内中国跆协单位会员提出入会申请,并按程序报中国跆协批准,按规定交纳会费。<br /> |
| 105 | 二、成为本协会会员条件:遵守中国跆协章程和协会各项规章制度及相关决议,按期交纳会费,积极支持和参与中国跆拳道事业发展的社会各届人士或地方跆拳道协会、俱乐部、培训机构等,均可自愿申请成为中国跆协会员。<br/> | 105 | 五、会员享有《中国跆拳道协会会员管理办法》规定的会员权利。 |
| 106 | 三、个人会员为在中国工作和生活的跆拳道爱好者,16 周岁以下应有监护人协助申请,会员须为中国公民。<br/> | 106 | <br /> |
| 107 | 四、会员入会需向所在区域内中国跆协单位会员提出入会申请,并按程序报中国跆协批准,按规定交纳会费。<br/> | 107 | 六、会员应履行《中国跆拳道协会会员管理办法》规定的会员义务。 |
| 108 | 五、会员享有《中国跆拳道协会会员管理办法》规定的会员权利。 | 108 | <br /> |
| 109 | <br/> | 109 | 七、凡中国跆协会员,须按照《中国跆拳道协会会员会费标准(2021 版)》按时交纳年度会费。<br /> |
| 110 | 六、会员应履行《中国跆拳道协会会员管理办法》规定的会员义务。 | 110 | 八、会员行为违反《中国跆拳道协会会员管理办法》中规定的,按照相关处罚规定进行处理。<br /> |
| 111 | <br/> | 111 | 九、其它会员相关内容请查看《中国跆拳道协会章程》《中国跆拳道协会会员管理办法》。<br /> |
| 112 | 七、凡中国跆协会员,须按照《中国跆拳道协会会员会费标准(2021 版)》按时交纳年度会费。<br/> | 112 | |
| 113 | 八、会员行为违反《中国跆拳道协会会员管理办法》中规定的,按照相关处罚规定进行处理。<br/> | 113 | <button @click="closepopup" class="btn-red">我已阅读</button> |
| 114 | 九、其它会员相关内容请查看《中国跆拳道协会章程》《中国跆拳道协会会员管理办法》。<br/> | 114 | </view> |
| 115 | 115 | </uni-popup> | |
| 116 | <button class="btn-red" @click="closepopup">我已阅读</button> | 116 | |
| 117 | </view> | 117 | <uni-popup ref="infoConfirm" type="center" :disable-scroll="true" :mask-click="false"> |
| 118 | </uni-popup> | 118 | <view class="tt">确认信息</view> |
| 119 | 119 | <view class="popBody"> | |
| 120 | <uni-popup ref="infoConfirm" :disable-scroll="true" :mask-click="false" type="center"> | 120 | <view> |
| 121 | <view class="tt">确认信息</view> | 121 | |
| 122 | <view class="popBody"> | 122 | </view> |
| 123 | <view> | 123 | |
| 124 | 124 | <button @click="closepopup" class="btn-red">已确认</button> | |
| 125 | </view> | 125 | </view> |
| 126 | 126 | </uni-popup> | |
| 127 | <button class="btn-red" @click="closepopup">已确认</button> | 127 | |
| 128 | </view> | 128 | </view> |
| 129 | </uni-popup> | ||
| 130 | |||
| 131 | </view> | ||
| 132 | </template> | 129 | </template> |
| 133 | 130 | ||
| 134 | <script setup> | 131 | <script setup> |
| ... | @@ -793,3 +790,4 @@ function getUserInfo() { | ... | @@ -793,3 +790,4 @@ function getUserInfo() { |
| 793 | text-align: left !important; | 790 | text-align: left !important; |
| 794 | } | 791 | } |
| 795 | </style> | 792 | </style> |
| 793 | ... | ... |
| ... | @@ -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 { | ... | ... |
-
Please register or sign in to post a comment