Skip to content
Toggle navigation
Toggle navigation
This project
Loading...
Sign in
杨炀
/
ztx_wx_gzt
Go to a project
Toggle navigation
Toggle navigation pinning
Projects
Groups
Snippets
Help
Project
Activity
Repository
Pipelines
Graphs
Issues
0
Merge Requests
0
Wiki
Network
Create a new issue
Builds
Commits
Issue Boards
Files
Commits
Network
Compare
Branches
Tags
134cad71
authored
2026-04-28 11:49:10 +0800
by
张猛
Browse Files
Options
Browse Files
Tag
Download
Email Patches
Plain Diff
会员认证
1 parent
d71abcc3
Show whitespace changes
Inline
Side-by-side
Showing
3 changed files
with
486 additions
and
413 deletions
myCenter/sucPay.vue
pages/index/home.vue
pages/index/perfect.vue
myCenter/sucPay.vue
View file @
134cad7
...
...
@@ -35,29 +35,29 @@
</
template
>
<
script
setup
>
import
{
import
{
ref
}
from
'vue'
import
{
}
from
'vue'
import
{
onLoad
}
from
'@dcloudio/uni-app'
import
to
from
'await-to-js'
import
*
as
api
from
'@/common/api.js'
}
from
'@dcloudio/uni-app'
import
to
from
'await-to-js'
import
*
as
api
from
'@/common/api.js'
const
orderInfo
=
ref
({
const
orderInfo
=
ref
({
orderId
:
''
,
tradeNo
:
''
,
merchantName
:
'中国跆拳道协会'
,
price
:
''
})
})
const
goBack
=
()
=>
{
const
goBack
=
()
=>
{
uni
.
reLaunch
({
url
:
'/myCenter/auth
'
url
:
'/pages/index/home
'
})
}
}
onLoad
(
async
(
option
)
=>
{
onLoad
(
async
(
option
)
=>
{
// if (option.orderId) {
// const [err, res] = await to(api.getOrderInfo(option.orderId))
// if (!err && res.data) {
...
...
@@ -66,12 +66,12 @@
// orderInfo.value.orderId = option.orderId
// }
// }
})
})
</
script
>
<
style
scoped
>
/* 全局容器 */
.success-container
{
/* 全局容器 */
.success-container
{
display
:
flex
;
flex-direction
:
column
;
align-items
:
center
;
...
...
@@ -79,16 +79,16 @@
min-height
:
100vh
;
background-color
:
#f8f9fa
;
box-sizing
:
border-box
;
}
}
/* 成功图标容器 */
.success-icon
{
/* 成功图标容器 */
.success-icon
{
margin-bottom
:
40
rpx
;
animation
:
fadeIn
0.6s
ease-out
;
}
}
/* 渐变圆形背景 */
.icon-circle
{
/* 渐变圆形背景 */
.icon-circle
{
width
:
180
rpx
;
height
:
180
rpx
;
border-radius
:
50%
;
...
...
@@ -100,34 +100,34 @@
box-shadow
:
0
8
rpx
30
rpx
rgba
(
6
,
193
,
174
,
0.3
);
/* 轻微上浮动效 */
animation
:
scaleIn
0.8s
ease-out
;
}
}
/* 对勾图标 */
.check-icon
{
/* 对勾图标 */
.check-icon
{
font-size
:
90
rpx
;
color
:
#ffffff
;
font-weight
:
bold
;
}
}
/* 支付成功标题 */
.success-title
{
/* 支付成功标题 */
.success-title
{
font-size
:
48
rpx
;
font-weight
:
700
;
color
:
#333333
;
margin-bottom
:
12
rpx
;
animation
:
slideUp
0.6s
ease-out
;
}
}
/* 副标题 */
.success-subtitle
{
/* 副标题 */
.success-subtitle
{
font-size
:
28
rpx
;
color
:
#666666
;
margin-bottom
:
60
rpx
;
animation
:
slideUp
0.8s
ease-out
;
}
}
/* 订单信息卡片 */
.info-card
{
/* 订单信息卡片 */
.info-card
{
width
:
100%
;
background
:
#ffffff
;
border-radius
:
20
rpx
;
...
...
@@ -135,55 +135,55 @@
box-shadow
:
0
6
rpx
20
rpx
rgba
(
0
,
0
,
0
,
0.05
);
margin-bottom
:
80
rpx
;
animation
:
fadeIn
1s
ease-out
;
}
}
/* 单个信息项 */
.info-item
{
/* 单个信息项 */
.info-item
{
display
:
flex
;
justify-content
:
space-between
;
align-items
:
center
;
padding
:
24
rpx
0
;
border-bottom
:
1
rpx
solid
#f5f5f5
;
}
}
/* 最后一项去掉下划线 */
.info-item
:last-child
{
/* 最后一项去掉下划线 */
.info-item
:last-child
{
border-bottom
:
none
;
}
}
/* 标签样式 */
.label
{
/* 标签样式 */
.label
{
font-size
:
32
rpx
;
color
:
#666666
;
white-space
:
nowrap
;
margin-right
:
20
rpx
;
flex-shrink
:
0
;
}
}
/* 值样式 */
.value
{
/* 值样式 */
.value
{
font-size
:
32
rpx
;
color
:
#333333
;
text-align
:
right
;
word-break
:
break-all
;
word-wrap
:
break-word
;
}
}
/* 金额特殊样式 */
.amount
{
/* 金额特殊样式 */
.amount
{
color
:
#cd1e27
;
font-weight
:
600
;
}
}
/* 确定按钮区域 */
.confirm-btn-area
{
/* 确定按钮区域 */
.confirm-btn-area
{
width
:
100%
;
padding
:
0
20
rpx
;
box-sizing
:
border-box
;
}
}
/* 确定按钮(渐变+动效) */
.confirm-btn
{
/* 确定按钮(渐变+动效) */
.confirm-btn
{
width
:
100%
;
height
:
90
rpx
;
line-height
:
90
rpx
;
...
...
@@ -198,20 +198,20 @@
/* 禁止默认样式 */
position
:
relative
;
overflow
:
hidden
;
}
}
/* 按钮点击反馈 */
.confirm-btn
::after
{
/* 按钮点击反馈 */
.confirm-btn
::after
{
border
:
none
;
}
}
.confirm-btn
:active
{
.confirm-btn
:active
{
transform
:
scale
(
0.98
);
box-shadow
:
0
4
rpx
10
rpx
rgba
(
6
,
193
,
174
,
0.2
);
}
}
/* 动画定义 */
@keyframes
fadeIn
{
/* 动画定义 */
@keyframes
fadeIn
{
0
%
{
opacity
:
0
;
}
...
...
@@ -219,9 +219,9 @@
100
%
{
opacity
:
1
;
}
}
}
@keyframes
scaleIn
{
@keyframes
scaleIn
{
0
%
{
transform
:
scale
(
0
);
}
...
...
@@ -233,9 +233,9 @@
100
%
{
transform
:
scale
(
1
);
}
}
}
@keyframes
slideUp
{
@keyframes
slideUp
{
0
%
{
opacity
:
0
;
transform
:
translateY
(
30
rpx
);
...
...
@@ -245,5 +245,5 @@
opacity
:
1
;
transform
:
translateY
(
0
);
}
}
}
</
style
>
...
...
pages/index/home.vue
View file @
134cad7
...
...
@@ -22,16 +22,20 @@
</view>
<view
class=
"unit-member-box"
>
<view
class=
"unit-btn"
@
click=
"goPath('/myCenter/auth')"
>
<image
:src=
"config.loginImage_api + '/fs/static/dg/icon02@3x.png'"
class=
"btn-icon"
></image><text>
基本信息
</text>
<image
:src=
"config.loginImage_api + '/fs/static/dg/icon02@3x.png'"
class=
"btn-icon"
></image>
<text>
基本信息
</text>
</view>
<view
class=
"unit-btn"
@
click=
"goPath('/myCenter/perfect')"
>
<image
:src=
"config.loginImage_api + '/fs/static/dg/icon03@3x.png'"
class=
"btn-icon"
></image><text>
认证缴费
</text>
<image
:src=
"config.loginImage_api + '/fs/static/dg/icon03@3x.png'"
class=
"btn-icon"
></image>
<text>
认证缴费
</text>
</view>
<view
class=
"unit-btn"
@
click=
"goPath('/myCenter/reviewList')"
>
<image
:src=
"config.loginImage_api + '/fs/static/dg/icon04@3x.png'"
class=
"btn-icon"
></image><text>
认证详情
</text>
<image
:src=
"config.loginImage_api + '/fs/static/dg/icon04@3x.png'"
class=
"btn-icon"
></image>
<text>
认证详情
</text>
</view>
<view
class=
"unit-btn "
@
click=
"goPath('/myCenter/examPointApplyList')"
>
<image
:src=
"config.loginImage_api + '/fs/static/dg/icon05@3x.png'"
class=
"btn-icon"
></image><text>
考点申请
</text>
<image
:src=
"config.loginImage_api + '/fs/static/dg/icon05@3x.png'"
class=
"btn-icon"
></image>
<text>
考点申请
</text>
</view>
<!--
<view
class=
"unit-btn mt-20"
@
click=
"goPath('/myCenter/examPointApplyList')"
>
<image
:src=
"config.loginImage_api + '/fs/static/dg/icon06@3x.png'"
class=
"btn-icon"
></image><text>
考点详情
</text>
...
...
@@ -42,38 +46,54 @@
</view>
</view>
<view
class=
"section personal-section"
>
<view
class=
"flex f-a-c"
><text
class=
"title-border"
></text>
<text
class=
"section-title"
>
个人会员
</text></view>
<view
class=
"flex f-a-c"
>
<text
class=
"title-border"
></text>
<text
class=
"section-title"
>
个人会员
</text>
</view>
<view
class=
"personal-member-box"
>
<view
class=
"personal-btn"
@
click=
"goPath('/personalVip/addVip')"
>
<image
:src=
"config.loginImage_api + '/fs/static/dg/home_btn01@3x.png'"
class=
"circle-icon"
></image><text>
添加会员
</text>
<image
:src=
"config.loginImage_api + '/fs/static/dg/home_btn01@3x.png'"
class=
"circle-icon"
></image>
<text>
添加会员
</text>
</view>
<view
class=
"personal-btn"
@
click=
"goPath('/personalVip/payment')"
>
<image
:src=
"config.loginImage_api + '/fs/static/dg/home_btn02@3x.png'"
class=
"circle-icon"
></image><text>
会员缴费
</text>
<image
:src=
"config.loginImage_api + '/fs/static/dg/home_btn02@3x.png'"
class=
"circle-icon"
></image>
<text>
会员缴费
</text>
</view>
<view
class=
"personal-btn"
@
click=
"goPath('/personalVip/list')"
>
<image
:src=
"config.loginImage_api + '/fs/static/dg/home_btn03@3x.png'"
class=
"circle-icon"
></image><text>
会员查询
</text>
<image
:src=
"config.loginImage_api + '/fs/static/dg/home_btn03@3x.png'"
class=
"circle-icon"
></image>
<text>
会员查询
</text>
</view>
<view
class=
"personal-btn"
@
click=
"goPath('/personalVip/mobilize')"
>
<image
:src=
"config.loginImage_api + '/fs/static/dg/btn04@3x.png'"
class=
"circle-icon"
></image><text>
会员调动
</text>
<image
:src=
"config.loginImage_api + '/fs/static/dg/btn04@3x.png'"
class=
"circle-icon"
></image>
<text>
会员调动
</text>
</view>
</view>
</view>
<view
class=
"section level-section"
>
<view
class=
"flex f-a-c"
><text
class=
"title-border"
></text>
<text
class=
"section-title"
>
级位管理
</text></view>
<view
class=
"flex f-a-c"
>
<text
class=
"title-border"
></text>
<text
class=
"section-title"
>
级位管理
</text>
</view>
<view
class=
"level-list"
>
<view
class=
"level-item"
@
click=
"goPath('/level/apply')"
>
<image
:src=
"config.loginImage_api + '/fs/static/dg/icon07@3x.png'"
class=
"level-icon"
></image><text>
级位考试
</text><view
class=
"arrow"
></view>
<image
:src=
"config.loginImage_api + '/fs/static/dg/icon07@3x.png'"
class=
"level-icon"
></image>
<text>
级位考试
</text>
<view
class=
"arrow"
></view>
</view>
<view
class=
"level-item"
@
click=
"goPath('/personalVip/changeLevel')"
>
<image
:src=
"config.loginImage_api + '/fs/static/dg/icon08@3x.png'"
class=
"level-icon"
></image><text>
级位变更
</text><view
class=
"arrow"
></view>
<image
:src=
"config.loginImage_api + '/fs/static/dg/icon08@3x.png'"
class=
"level-icon"
></image>
<text>
级位变更
</text>
<view
class=
"arrow"
></view>
</view>
<view
class=
"level-item"
@
click=
"goPath('/pages/index/msgList')"
>
<image
:src=
"config.loginImage_api + '/fs/static/dg/icon09@3x.png'"
class=
"level-icon"
></image><text>
通知公告
</text><view
class=
"arrow"
></view>
<image
:src=
"config.loginImage_api + '/fs/static/dg/icon09@3x.png'"
class=
"level-icon"
></image>
<text>
通知公告
</text>
<view
class=
"arrow"
></view>
</view>
<view
class=
"level-item"
@
click=
"goPath('/myCenter/order?type=2')"
>
<image
:src=
"config.loginImage_api + '/fs/static/dg/icon10@3x.png'"
class=
"level-icon"
></image><text>
我的订单
</text><view
class=
"arrow"
></view>
<image
:src=
"config.loginImage_api + '/fs/static/dg/icon10@3x.png'"
class=
"level-icon"
></image>
<text>
我的订单
</text>
<view
class=
"arrow"
></view>
</view>
</view>
</view>
...
...
@@ -490,24 +510,27 @@
</view>
<!-- 绑定手机号弹框 -->
<uni-popup
ref=
"bindingPhonePopup"
type=
"center"
:mask-click=
"false
"
>
<uni-popup
ref=
"bindingPhonePopup"
:mask-click=
"false"
type=
"center
"
>
<view
class=
"dialog-wrapper"
>
<view
class=
"dialog-close"
@
click=
"closeBindingPhoneDialog"
>
✕
</view>
<view
class=
"dialog-icon"
>
<uni-icons
type=
"phone"
size=
"48"
color=
"#AD181F
"
></uni-icons>
<uni-icons
color=
"#AD181F"
size=
"48"
type=
"phone
"
></uni-icons>
</view>
<view
class=
"dialog-title"
>
绑定手机号
</view>
<view
class=
"dialog-content"
>
<view
class=
"form-item"
>
<input
class=
"form-input"
v-model=
"bindingForm.phone"
placeholder=
"请输入手机号"
maxlength=
"11"
type=
"number"
/>
<input
v-model=
"bindingForm.phone"
class=
"form-input"
maxlength=
"11"
placeholder=
"请输入手机号"
type=
"number"
/>
</view>
<view
class=
"form-item captcha-row"
>
<input
class=
"form-input captcha-input"
v-model=
"bindingForm.captcha"
placeholder=
"图形验证码"
maxlength=
"4"
/>
<image
class=
"captcha-img"
:src=
"captchaUrl"
@
click=
"refreshCaptcha"
mode=
"aspectFit"
></image>
<input
v-model=
"bindingForm.captcha"
class=
"form-input captcha-input"
maxlength=
"4"
placeholder=
"图形验证码"
/>
<image
:src=
"captchaUrl"
class=
"captcha-img"
mode=
"aspectFit"
@
click=
"refreshCaptcha"
></image>
</view>
<view
class=
"form-item captcha-row"
>
<input
class=
"form-input sms-input"
v-model=
"bindingForm.code"
placeholder=
"短信验证码"
maxlength=
"6"
type=
"number"
/>
<button
class=
"sms-btn"
:disabled=
"smsCountdown > 0"
@
click=
"sendSmsCode"
>
<input
v-model=
"bindingForm.code"
class=
"form-input sms-input"
maxlength=
"6"
placeholder=
"短信验证码"
type=
"number"
/>
<button
:disabled=
"smsCountdown > 0"
class=
"sms-btn"
@
click=
"sendSmsCode"
>
{{ smsCountdown > 0 ? smsCountdown + 's' : '获取验证码' }}
</button>
</view>
...
...
@@ -520,11 +543,11 @@
</uni-popup>
<!-- 申请成为考点弹框 -->
<uni-popup
ref=
"examPointPopup"
type=
"center"
:mask-click=
"false
"
>
<uni-popup
ref=
"examPointPopup"
:mask-click=
"false"
type=
"center
"
>
<view
class=
"dialog-wrapper exam-dialog"
>
<view
class=
"dialog-close"
@
click=
"closeExamPointDialog"
>
✕
</view>
<view
class=
"dialog-icon success-icon"
>
<uni-icons
type=
"checkmark"
size=
"48"
color=
"#29c490
"
></uni-icons>
<uni-icons
color=
"#29c490"
size=
"48"
type=
"checkmark
"
></uni-icons>
</view>
<view
class=
"dialog-title"
>
申请成为考点
</view>
<view
class=
"dialog-message"
>
...
...
@@ -547,6 +570,7 @@
import
*
as
api
from
'@/common/api.js'
;
import
*
as
loginServer
from
'@/common/login.js'
;
import
config
from
'@/config.js'
import
{
getInfo
}
from
'@/common/login'
import
{
onLoad
,
onShow
,
...
...
@@ -830,15 +854,15 @@ function sendSmsCode() {
const
phone
=
bindingForm
.
value
.
phone
const
strTemp
=
/^1
[
2|3|4|5|6|7|8|9
][
0-9
]{9}
$/
if
(
!
phone
)
{
uni
.
showToast
({
title
:
'请输入手机号'
,
icon
:
'none'
})
uni
.
showToast
({
title
:
'请输入手机号'
,
icon
:
'none'
})
return
}
if
(
!
strTemp
.
test
(
phone
))
{
uni
.
showToast
({
title
:
'请输入正确的手机号'
,
icon
:
'none'
})
uni
.
showToast
({
title
:
'请输入正确的手机号'
,
icon
:
'none'
})
return
}
if
(
!
bindingForm
.
value
.
captcha
)
{
uni
.
showToast
({
title
:
'请输入图形验证码'
,
icon
:
'none'
})
uni
.
showToast
({
title
:
'请输入图形验证码'
,
icon
:
'none'
})
return
}
api
.
getSmsCode
({
...
...
@@ -846,7 +870,7 @@ function sendSmsCode() {
telNo
:
phone
,
captcha
:
bindingForm
.
value
.
captcha
}).
then
(
res
=>
{
uni
.
showToast
({
title
:
'发送成功'
,
icon
:
'success'
})
uni
.
showToast
({
title
:
'发送成功'
,
icon
:
'success'
})
smsCountdown
.
value
=
60
smsTimer
=
setInterval
(()
=>
{
smsCountdown
.
value
--
...
...
@@ -865,25 +889,25 @@ function closeBindingPhoneDialog() {
}
async
function
submitBindingPhone
()
{
const
{
phone
,
captcha
,
code
,
uuid
}
=
bindingForm
.
value
const
{
phone
,
captcha
,
code
,
uuid
}
=
bindingForm
.
value
if
(
!
phone
)
{
uni
.
showToast
({
title
:
'请输入手机号'
,
icon
:
'none'
})
uni
.
showToast
({
title
:
'请输入手机号'
,
icon
:
'none'
})
return
}
if
(
!
captcha
)
{
uni
.
showToast
({
title
:
'请输入图形验证码'
,
icon
:
'none'
})
uni
.
showToast
({
title
:
'请输入图形验证码'
,
icon
:
'none'
})
return
}
if
(
!
code
)
{
uni
.
showToast
({
title
:
'请输入短信验证码'
,
icon
:
'none'
})
uni
.
showToast
({
title
:
'请输入短信验证码'
,
icon
:
'none'
})
return
}
try
{
await
api
.
editPhone
({
phone
,
captcha
,
code
,
uuid
})
uni
.
showToast
({
title
:
'修改成功'
,
icon
:
'success'
})
await
api
.
editPhone
({
phone
,
captcha
,
code
,
uuid
})
uni
.
showToast
({
title
:
'修改成功'
,
icon
:
'success'
})
closeBindingPhoneDialog
()
setTimeout
(()
=>
{
uni
.
reLaunch
({
url
:
'/pages/index/home'
})
uni
.
reLaunch
({
url
:
'/pages/index/home'
})
},
1500
)
}
catch
(
e
)
{
// 错误已由 request.js 处理
...
...
@@ -897,11 +921,12 @@ function closeExamPointDialog() {
function
goExamPointApply
()
{
closeExamPointDialog
()
uni
.
navigateTo
({
url
:
'/myCenter/examPointApplyList'
})
uni
.
navigateTo
({
url
:
'/myCenter/examPointApplyList'
})
}
async
function
handleNoDisplay
()
{
await
api
.
noDisplay
()
await
getInfo
()
closeExamPointDialog
()
}
...
...
@@ -934,9 +959,11 @@ function checkDialogs() {
:deep
(
.uni-section
)
{
background-color
:
transparent
!important
;
}
.mt-20
{
.mt-20
{
margin-top
:
-20
rpx
;
}
.page
{
width
:
100vw
;
overflow
:
hidden
;
...
...
@@ -954,7 +981,7 @@ function checkDialogs() {
}
.welcome
{
padding
:
30
rpx
;
padding
:
30
rpx
;
line-height
:
48
rpx
;
font-size
:
32
rpx
;
...
...
@@ -1136,12 +1163,14 @@ function checkDialogs() {
}
.section-title
{
.section-title
{
font-size
:
32
rpx
;
font-weight
:
bold
;
color
:
#fff
;
margin-bottom
:
20
rpx
;
}
}
.personal-section
{
.personal-member-box
{
display
:
flex
;
...
...
@@ -1281,6 +1310,7 @@ function checkDialogs() {
border-radius
:
16
rpx
;
padding
:
0
;
margin
:
0
;
&::after
{
border
:
none
;
}
...
...
@@ -1306,6 +1336,7 @@ function checkDialogs() {
font-weight
:
500
;
padding
:
0
;
margin
:
0
;
&::after
{
border
:
none
;
}
...
...
pages/index/perfect.vue
View file @
134cad7
...
...
@@ -2,17 +2,17 @@
<view
class=
"perfect-page"
>
<!-- 顶部步骤条 -->
<view
class=
"steps-bar"
>
<view
class=
"step-item"
:class=
"
{ active: activeStep >= 1, current: activeStep == 1 }
" @click="switchStep(1)">
<view
:class=
"
{ active: activeStep >= 1, current: activeStep == 1 }" class="step-item
" @click="switchStep(1)">
<view
class=
"step-circle"
>
1
</view>
<view
class=
"step-text"
>
完善信息
</view>
</view>
<view
class=
"step-line"
:class=
"
{ active: activeStep >= 2 }
">
</view>
<view
class=
"step-item"
:class=
"
{ active: activeStep >= 2, current: activeStep == 2 }
" @click="switchStep(2)">
<view
:class=
"
{ active: activeStep >= 2 }" class="step-line
">
</view>
<view
:class=
"
{ active: activeStep >= 2, current: activeStep == 2 }" class="step-item
" @click="switchStep(2)">
<view
class=
"step-circle"
>
2
</view>
<view
class=
"step-text"
>
会员认证
</view>
</view>
<view
class=
"step-line"
:class=
"
{ active: activeStep >= 3 }
">
</view>
<view
class=
"step-item"
:class=
"
{ active: activeStep >= 3, current: activeStep == 3 }
" @click="switchStep(3)">
<view
:class=
"
{ active: activeStep >= 3 }" class="step-line
">
</view>
<view
:class=
"
{ active: activeStep >= 3, current: activeStep == 3 }" class="step-item
" @click="switchStep(3)">
<view
class=
"step-circle"
>
3
</view>
<view
class=
"step-text"
>
审核详情
</view>
</view>
...
...
@@ -40,10 +40,11 @@
<!--
<text
class=
"logout-text"
>
退出账号
</text>
-->
</view>
<!-- 步骤1:完善信息 -->
<view
class=
"wBox"
v-if=
"activeStep == 1
"
>
<view
v-if=
"activeStep == 1"
class=
"wBox
"
>
<uni-forms
ref=
"baseForm"
:modelValue=
"form"
label-width=
"70"
>
<uni-forms-item
label=
"单位名称"
required
>
<uni-easyinput
class=
"input-with-border"
v-model=
"form.baseName"
:disabled=
"!editIng"
placeholder=
"单位名称"
/>
<uni-easyinput
v-model=
"form.baseName"
:disabled=
"!editIng"
class=
"input-with-border"
placeholder=
"单位名称"
/>
</uni-forms-item>
<uni-forms-item
label=
"单位类型"
required
>
<view
style=
"width: 100%;"
>
...
...
@@ -51,13 +52,16 @@
</view>
</uni-forms-item>
<uni-forms-item
label=
"联系人"
required
>
<uni-easyinput
class=
"input-with-border"
v-model=
"form.contact"
:disabled=
"!editIng"
placeholder=
"请输入联系人姓名"
/>
<uni-easyinput
v-model=
"form.contact"
:disabled=
"!editIng"
class=
"input-with-border"
placeholder=
"请输入联系人姓名"
/>
</uni-forms-item>
<uni-forms-item
label=
"联系方式"
required
>
<uni-easyinput
class=
"input-with-border"
v-model=
"form.phone"
:disabled=
"!editIng"
placeholder=
"请输入联系方式"
/>
<uni-easyinput
v-model=
"form.phone"
:disabled=
"!editIng"
class=
"input-with-border"
placeholder=
"请输入联系方式"
/>
</uni-forms-item>
<uni-forms-item
label=
"机构介绍"
required
>
<uni-easyinput
class=
"input-with-border"
v-model=
"form.introduce"
placeholder=
"请输入机构介绍"
:disabled=
"!editIng"
type=
'textarea'
/>
<uni-easyinput
v-model=
"form.introduce"
:disabled=
"!editIng"
class=
"input-with-border"
placeholder=
"请输入机构介绍"
type=
'textarea'
/>
</uni-forms-item>
</uni-forms>
<view
class=
"fixedBottom"
>
...
...
@@ -66,7 +70,7 @@
</view>
<!-- 步骤2:会员认证 -->
<view
class=
"wBox"
v-if=
"activeStep == 2
"
>
<view
v-if=
"activeStep == 2"
class=
"wBox
"
>
<view
class=
"status-box"
>
<view
class=
"status-row"
>
<text
class=
"status-label"
>
认证状态:
</text>
...
...
@@ -87,38 +91,42 @@
<uni-forms-item
label=
"选择所属协会"
required
>
<view
class=
"picker-wrapper"
>
<uni-data-picker
class=
"custom-picker"
:disabled=
"!editIng"
v-model=
"form.parentId"
:localdata=
"assoList"
:disabled=
"!editIng"
:level=
"3"
:localdata=
"assoList"
class=
"custom-picker"
popup-title=
"请选择所属协会"
@
change=
"changCase"
></uni-data-picker>
</view>
</uni-forms-item>
<uni-forms-item
label=
"机构名称"
required
>
<uni-easyinput
class=
"input-with-border"
v-model=
"form.name"
:disabled=
"!editIng"
placeholder=
"请输入机构名称"
/>
<uni-easyinput
v-model=
"form.name"
:disabled=
"!editIng"
class=
"input-with-border"
placeholder=
"请输入机构名称"
/>
</uni-forms-item>
<uni-forms-item
label=
"认证地址"
required
>
<view
class=
"picker-wrapper"
>
<uni-data-picker
class=
"custom-picker"
v-model=
"coordinates1"
:localdata=
"regionOptions"
class=
"custom-picker"
popup-title=
"请选择所在地区"
@
change=
"changeAddress"
></uni-data-picker>
</view>
</uni-forms-item>
<uni-forms-item
label=
"认证详细地址"
required
>
<uni-easyinput
class=
"input-with-border"
v-model=
"form.adress"
:disabled=
"!editIng"
placeholder=
"请输入详细地址"
/>
<uni-easyinput
v-model=
"form.adress"
:disabled=
"!editIng"
class=
"input-with-border"
placeholder=
"请输入详细地址"
/>
</uni-forms-item>
<uni-forms-item
label=
"联系人"
required
>
<uni-easyinput
class=
"input-with-border"
v-model=
"form.siteContact"
:disabled=
"!editIng"
placeholder=
"请输入联系人"
/>
<uni-easyinput
v-model=
"form.siteContact"
:disabled=
"!editIng"
class=
"input-with-border"
placeholder=
"请输入联系人"
/>
</uni-forms-item>
<uni-forms-item
label=
"联系方式"
required
>
<uni-easyinput
class=
"input-with-border"
v-model=
"form.siteTel"
:disabled=
"!editIng"
placeholder=
"请输入联系方式"
/>
<uni-easyinput
v-model=
"form.siteTel"
:disabled=
"!editIng"
class=
"input-with-border"
placeholder=
"请输入联系方式"
/>
</uni-forms-item>
<uni-forms-item
label=
"营业执照"
required
>
<view
class=
"upload-box"
>
...
...
@@ -126,16 +134,25 @@
<image
:src=
"config.baseUrl_api + '/fs/static/yyzz@2x.png'"
class=
"placeholder-img"
/>
</view>
<view
v-else
class=
"license-preview"
>
<image
:src=
"getImageUrl(getBusinessLicenseUrl())"
class=
"license-img"
@
click=
"previewImage(getImageUrl(getBusinessLicenseUrl()))"
></image>
<view
class=
"delete-btn"
v-if=
"editIng"
@
click=
"removeBusinessLicense"
>
×
</view>
<image
:src=
"getImageUrl(getBusinessLicenseUrl())"
class=
"license-img"
@
click=
"previewImage(getImageUrl(getBusinessLicenseUrl()))"
></image>
<view
v-if=
"editIng"
class=
"delete-btn"
@
click=
"removeBusinessLicense"
>
×
</view>
</view>
</view>
</uni-forms-item>
<uni-forms-item
label=
"营业执照名称"
required
>
<uni-easyinput
class=
"input-with-border"
v-model=
"form.companyName"
:disabled=
"!editIng"
placeholder=
"请输入营业执照名称"
/>
<uni-easyinput
v-model=
"form.companyName"
:disabled=
"!editIng"
class=
"input-with-border"
placeholder=
"请输入营业执照名称"
/>
</uni-forms-item>
<uni-forms-item
label=
"社会信用代码"
required
>
<uni-easyinput
class=
"input-with-border"
v-model=
"form.creditCode"
:disabled=
"!editIng"
placeholder=
"请输入社会信用代码"
@
blur=
"onCreditCodeBlur"
/>
<uni-easyinput
v-model=
"form.creditCode"
:disabled=
"!editIng"
class=
"input-with-border"
placeholder=
"请输入社会信用代码"
@
blur=
"onCreditCodeBlur"
@
change=
"onCreditCodeBlur"
/>
</uni-forms-item>
<uni-forms-item
label=
"法人身份证"
required
>
<view
class=
"idcard-box"
>
...
...
@@ -144,8 +161,9 @@
<image
:src=
"config.baseUrl_api + '/fs/static/sfz_zm@2x.png'"
class=
"placeholder-img"
/>
</view>
<view
v-else
class=
"idcard-preview"
>
<image
:src=
"getImageUrl(form.legalIdcPhoto1)"
class=
"idcard-img"
@
click=
"previewImage(getImageUrl(form.legalIdcPhoto1))"
></image>
<view
class=
"delete-btn"
v-if=
"editIng"
@
click=
"removeIdCardFront"
>
×
</view>
<image
:src=
"getImageUrl(form.legalIdcPhoto1)"
class=
"idcard-img"
@
click=
"previewImage(getImageUrl(form.legalIdcPhoto1))"
></image>
<view
v-if=
"editIng"
class=
"delete-btn"
@
click=
"removeIdCardFront"
>
×
</view>
</view>
</view>
</view>
...
...
@@ -155,17 +173,20 @@
<image
:src=
"config.baseUrl_api + '/fs/static/sfz_fm@2x.png'"
class=
"placeholder-img"
/>
</view>
<view
v-else
class=
"idcard-preview"
>
<image
:src=
"getImageUrl(form.legalIdcPhoto2)"
class=
"idcard-img"
@
click=
"previewImage(getImageUrl(form.legalIdcPhoto2))"
></image>
<view
class=
"delete-btn"
v-if=
"editIng"
@
click=
"removeIdCardBack"
>
×
</view>
<image
:src=
"getImageUrl(form.legalIdcPhoto2)"
class=
"idcard-img"
@
click=
"previewImage(getImageUrl(form.legalIdcPhoto2))"
></image>
<view
v-if=
"editIng"
class=
"delete-btn"
@
click=
"removeIdCardBack"
>
×
</view>
</view>
</view>
</view>
</uni-forms-item>
<uni-forms-item
label=
"法人姓名"
required
>
<uni-easyinput
class=
"input-with-border"
v-model=
"form.legal"
:disabled=
"!editIng"
placeholder=
"请输入法人姓名"
/>
<uni-easyinput
v-model=
"form.legal"
:disabled=
"!editIng"
class=
"input-with-border"
placeholder=
"请输入法人姓名"
/>
</uni-forms-item>
<uni-forms-item
label=
"法人证件号"
required
>
<uni-easyinput
class=
"input-with-border"
v-model=
"form.legalIdcCode"
:disabled=
"!editIng"
placeholder=
"请输入法人证件号"
/>
<uni-easyinput
v-model=
"form.legalIdcCode"
:disabled=
"!editIng"
class=
"input-with-border"
placeholder=
"请输入法人证件号"
/>
</uni-forms-item>
<uni-forms-item
label=
"上传机构照片"
required
>
<view
class=
"pictures-box"
>
...
...
@@ -173,8 +194,9 @@
<image
:src=
"config.baseUrl_api + '/fs/static/jgzp@2x.png'"
class=
"placeholder-img"
/>
</view>
<view
v-else
class=
"pictures-preview"
>
<image
:src=
"getImageUrl(form.pictures.split(',')[0])"
class=
"picture-img"
@
click=
"previewImage(form.pictures.split(',').map(url => getImageUrl(url)))"
></image>
<view
class=
"delete-btn"
v-if=
"editIng"
@
click=
"removePictures"
>
×
</view>
<image
:src=
"getImageUrl(form.pictures.split(',')[0])"
class=
"picture-img"
@
click=
"previewImage(form.pictures.split(',').map(url => getImageUrl(url)))"
></image>
<view
v-if=
"editIng"
class=
"delete-btn"
@
click=
"removePictures"
>
×
</view>
</view>
</view>
</uni-forms-item>
...
...
@@ -182,7 +204,7 @@
<view
class=
"notice-box"
>
<checkbox-group
@
change=
"onNoticeChange"
>
<label
class=
"notice-label"
>
<checkbox
:checked=
"form.notice"
value=
"1"
color=
"#e64329"
/>
<checkbox
:checked=
"form.notice"
color=
"#e64329"
value=
"1"
/>
<text
class=
"notice-text"
>
我已阅读并同意
</text>
<text
class=
"notice-link"
@
click
.
stop=
"showNotice(1)"
>
《注册须知》
</text>
<text
class=
"notice-link"
@
click
.
stop=
"showNotice(2)"
>
《入会须知》
</text>
...
...
@@ -195,12 +217,12 @@
<view
class=
"fixedBottom"
>
<button
class=
"btn-gray"
@
click=
"activeStep = 1"
>
上一步
</button>
<button
class=
"btn-red"
:disabled=
"btn
"
@
click=
"submitStep2()"
>
下一步
</button>
<button
:disabled=
"btn"
class=
"btn-red
"
@
click=
"submitStep2()"
>
下一步
</button>
</view>
</view>
<!-- 步骤3:审核详情(只展示,无提交按钮) -->
<view
class=
"wBox"
v-if=
"activeStep == 3
"
>
<view
v-if=
"activeStep == 3"
class=
"wBox
"
>
<view
class=
"audit-detail"
>
<view
class=
"audit-title"
>
审核详情
</view>
<view
v-if=
"auditLoading"
class=
"loading-box"
>
...
...
@@ -209,14 +231,16 @@
<view
v-else-if=
"auditList.length === 0"
class=
"empty-box"
>
<text>
暂无审核记录
</text>
</view>
<view
class=
"audit-list"
v-else
>
<view
class=
"audit-item"
v-for=
"(item, index) in auditList"
:key=
"index
"
>
<view
v-else
class=
"audit-list"
>
<view
v-for=
"(item, index) in auditList"
:key=
"index"
class=
"audit-item
"
>
<view
class=
"audit-item-header"
>
<text
class=
"audit-dept"
>
{{
item
.
auditDeptName
||
'待审核'
}}
</text>
<text
class=
"audit-status"
:class=
"getAuditStatusClass(item.auditResult)"
>
{{
getAuditStatusText
(
item
.
auditResult
)
}}
</text>
<text
:class=
"getAuditStatusClass(item.auditResult)"
class=
"audit-status"
>
{{
getAuditStatusText
(
item
.
auditResult
)
}}
</text>
</view>
<view
class=
"audit-item-body"
>
<view
class=
"audit-row"
>
<view
class=
"audit-row"
>
<text
class=
"audit-label"
>
审核日期:
</text>
<text
class=
"audit-value"
>
{{
formatDate
(
item
.
auditTime
)
}}
</text>
</view>
...
...
@@ -239,40 +263,40 @@
<!-- 自定义弹框 -->
<custom-modal
ref=
"customModalRef"
:title=
"modalConfig.title"
:cancelText=
"modalConfig.cancelText"
:confirmText=
"modalConfig.confirmText"
:content=
"modalConfig.content"
:isHtml=
"modalConfig.isHtml"
:showCancel=
"modalConfig.showCancel"
:showConfirm=
"modalConfig.showConfirm"
:cancelText=
"modalConfig.cancelText"
:confirmText=
"modalConfig.confirmText"
@
confirm=
"onModalConfirm"
:title=
"modalConfig.title"
@
cancel=
"onModalCancel"
@
confirm=
"onModalConfirm"
></custom-modal>
</
template
>
<
script
setup
>
import
{
import
{
ref
,
reactive
,
computed
,
watch
}
from
'vue'
;
import
*
as
api
from
'@/common/api.js'
;
import
{
}
from
'vue'
;
import
*
as
api
from
'@/common/api.js'
;
import
{
onLoad
,
onShow
}
from
'@dcloudio/uni-app'
;
import
config
from
'@/config.js'
import
customModal
from
'@/components/custom-modal.vue'
// import uniDataSelect from '@/uni_modules/uni-data-select/components/uni-data-select/uni-data-select.vue'
const
app
=
getApp
();
}
from
'@dcloudio/uni-app'
;
import
config
from
'@/config.js'
import
customModal
from
'@/components/custom-modal.vue'
// import uniDataSelect from '@/uni_modules/uni-data-select/components/uni-data-select/uni-data-select.vue'
const
app
=
getApp
();
// 自定义弹框 ref
const
customModalRef
=
ref
(
null
)
// 自定义弹框 ref
const
customModalRef
=
ref
(
null
)
// 弹框配置
const
modalConfig
=
ref
({
// 弹框配置
const
modalConfig
=
ref
({
title
:
''
,
content
:
''
,
isHtml
:
false
,
...
...
@@ -280,24 +304,24 @@
showConfirm
:
true
,
cancelText
:
'取消'
,
confirmText
:
'确定'
})
})
// 弹框确认回调
function
onModalConfirm
()
{
// 弹框确认回调
function
onModalConfirm
()
{
if
(
modalConfig
.
value
.
onConfirm
)
{
modalConfig
.
value
.
onConfirm
()
}
}
}
// 弹框取消回调
function
onModalCancel
()
{
// 弹框取消回调
function
onModalCancel
()
{
if
(
modalConfig
.
value
.
onCancel
)
{
modalConfig
.
value
.
onCancel
()
}
}
}
// 显示自定义弹框方法
function
showModal
(
options
)
{
// 显示自定义弹框方法
function
showModal
(
options
)
{
modalConfig
.
value
=
{
title
:
options
.
title
||
''
,
content
:
options
.
content
||
''
,
...
...
@@ -310,107 +334,112 @@
onCancel
:
options
.
onCancel
}
customModalRef
.
value
?.
open
()
}
}
const
form
=
ref
({
const
form
=
ref
({
type
:
'1'
,
notice
:
false
});
});
// 类型列表
const
typeList
=
ref
([{
// 类型列表
const
typeList
=
ref
([{
value
:
'1'
,
text
:
'企业'
},
{
},
{
value
:
'2'
,
text
:
'国家组织'
},
{
},
{
value
:
'3'
,
text
:
'社会组织'
},
{
},
{
value
:
'4'
,
text
:
'其他'
}])
}])
// 类型索引
const
typeIndex
=
computed
(()
=>
{
// 类型索引
const
typeIndex
=
computed
(()
=>
{
return
typeList
.
value
.
findIndex
(
item
=>
String
(
item
.
value
)
===
String
(
form
.
value
.
type
))
})
})
// 类型选择
function
typeChange
(
e
)
{
// 类型选择
function
typeChange
(
e
)
{
const
index
=
e
.
detail
.
value
form
.
value
.
type
=
typeList
.
value
[
index
].
value
}
}
// 地址选项
const
options
=
ref
([])
const
regionOptions
=
ref
([])
// 地址选项
const
options
=
ref
([])
const
regionOptions
=
ref
([])
// 协会树
const
assoList
=
ref
([])
const
assoFullName
=
ref
(
''
)
// 协会完整路径名称
// 协会树
const
assoList
=
ref
([])
const
assoFullName
=
ref
(
''
)
// 协会完整路径名称
// 步骤相关
const
activeStep
=
ref
(
1
)
const
list1
=
ref
([{
// 步骤相关
const
activeStep
=
ref
(
1
)
const
list1
=
ref
([{
title
:
'完善信息'
},
{
},
{
title
:
'会员认证'
}])
const
creditCode
=
ref
(
''
)
// 编辑状态
const
editIng
=
ref
(
true
);
}])
const
creditCode
=
ref
(
''
)
// 编辑状态
const
editIng
=
ref
(
true
);
// 认证状态
const
authenticationStatus
=
ref
()
const
result
=
ref
(
false
)
// 认证状态
const
authenticationStatus
=
ref
()
const
result
=
ref
(
false
)
// 地址级联
const
coordinates1
=
ref
([])
// 地址级联
const
coordinates1
=
ref
([])
// 按钮状态
const
btn
=
ref
(
false
)
// 按钮状态
const
btn
=
ref
(
false
)
// 费用相关
const
memberFee
=
ref
(
''
)
const
preferentialPolicy
=
ref
(
false
)
const
preferentialData
=
ref
({})
// 费用相关
const
memberFee
=
ref
(
''
)
const
preferentialPolicy
=
ref
(
false
)
const
preferentialData
=
ref
({})
// 考点审核状态
const
auditStatus
=
ref
(
'0'
)
// 考点审核状态
const
auditStatus
=
ref
(
'0'
)
// 审核详情
const
auditList
=
ref
([])
const
auditLoading
=
ref
(
false
)
// 审核详情
const
auditList
=
ref
([])
const
auditLoading
=
ref
(
false
)
// 社会信用代码校验状态(true=校验通过,false=校验失败/已存在)
const
creditCodeValid
=
ref
(
true
)
// 社会信用代码校验状态(true=校验通过,false=校验失败/已存在)
const
creditCodeValid
=
ref
(
true
)
// 须知勾选
function
onNoticeChange
(
e
)
{
// 须知勾选
function
onNoticeChange
(
e
)
{
const
values
=
e
.
detail
.
value
form
.
value
.
notice
=
values
.
includes
(
'1'
)
}
}
// 社会信用代码失焦校验
function
onCreditCodeBlur
()
{
// 社会信用代码失焦校验
function
onCreditCodeBlur
()
{
return
new
Promise
((
resolve
,
reject
)
=>
{
const
creditCode
=
form
.
value
.
creditCode
if
(
!
creditCode
)
return
api
.
creditCodeExist
(
creditCode
).
then
(
res
=>
{
if
(
res
.
data
)
{
creditCodeValid
.
value
=
false
uni
.
showToast
({
title
:
'社会信用代码已存在,请联系中跆协修改'
,
icon
:
'none'
,
duration
:
3000
})
uni
.
showToast
({
title
:
'社会信用代码已存在,请联系中跆协修改'
,
icon
:
'none'
,
duration
:
3000
})
return
reject
()
}
else
{
creditCodeValid
.
value
=
true
return
resolve
()
}
}).
catch
(()
=>
{
creditCodeValid
.
value
=
true
return
reject
()
})
}
})
}
// 查看须知 - 跳转到须知页面
function
showNotice
(
type
)
{
// 查看须知 - 跳转到须知页面
function
showNotice
(
type
)
{
const
pageMap
=
{
1
:
'/pages/index/notice-registration'
,
2
:
'/pages/index/notice-membership'
,
...
...
@@ -418,12 +447,12 @@
}
const
url
=
pageMap
[
type
]
if
(
url
)
{
uni
.
navigateTo
({
url
})
}
uni
.
navigateTo
({
url
})
}
}
// 切换步骤(参考PC端handelActive逻辑)
function
switchStep
(
step
)
{
// 切换步骤(参考PC端handelActive逻辑)
function
switchStep
(
step
)
{
// 如果没有认证状态,不允许切换
if
(
!
authenticationStatus
.
value
)
return
// 根据认证状态判断可以切换到哪些步骤
...
...
@@ -438,10 +467,10 @@
activeStep
.
value
=
step
}
}
}
}
// 获取审核详情
function
getMyCertStageFN
()
{
// 获取审核详情
function
getMyCertStageFN
()
{
auditLoading
.
value
=
true
api
.
getMyRecent
().
then
(
res
=>
{
auditLoading
.
value
=
false
...
...
@@ -458,44 +487,44 @@
auditLoading
.
value
=
false
auditList
.
value
=
[]
})
}
}
// 审核状态文字
function
getAuditStatusText
(
status
)
{
// 审核状态文字
function
getAuditStatusText
(
status
)
{
const
map
=
{
0
:
'待审核'
,
1
:
'审核通过'
,
2
:
'审核拒绝'
}
return
map
[
status
]
||
'待审核'
}
}
// 审核状态样式
function
getAuditStatusClass
(
status
)
{
// 审核状态样式
function
getAuditStatusClass
(
status
)
{
if
(
status
==
1
)
return
'status-pass'
if
(
status
==
2
)
return
'status-reject'
return
'status-pending'
}
}
// 日期格式化
function
formatDate
(
time
)
{
// 日期格式化
function
formatDate
(
time
)
{
if
(
!
time
)
return
''
const
date
=
new
Date
(
time
)
const
year
=
date
.
getFullYear
()
const
month
=
String
(
date
.
getMonth
()
+
1
).
padStart
(
2
,
'0'
)
const
day
=
String
(
date
.
getDate
()).
padStart
(
2
,
'0'
)
return
`
${
year
}
-
${
month
}
-
${
day
}
`
}
}
// 图片URL处理:如果不是http开头,拼接baseUrl_api
function
getImageUrl
(
url
)
{
// 图片URL处理:如果不是http开头,拼接baseUrl_api
function
getImageUrl
(
url
)
{
if
(
!
url
)
return
''
if
(
url
.
indexOf
(
'http'
)
===
0
)
return
url
return
config
.
baseUrl_api
+
url
}
}
// 解析营业执照URL
function
getBusinessLicenseUrl
()
{
// 解析营业执照URL
function
getBusinessLicenseUrl
()
{
if
(
!
form
.
value
.
businessLicense
)
return
''
try
{
const
arr
=
JSON
.
parse
(
form
.
value
.
businessLicense
)
...
...
@@ -507,9 +536,9 @@
return
form
.
value
.
businessLicense
}
return
''
}
}
onLoad
(
option
=>
{
onLoad
(
option
=>
{
getTree
()
if
(
app
.
globalData
.
isLogin
)
{
init
()
...
...
@@ -522,9 +551,9 @@
if
(
activeStep
.
value
===
3
)
{
getMyCertStageFN
()
}
});
});
function
init
()
{
function
init
()
{
getDetail
()
getRegionsList
()
...
...
@@ -532,15 +561,16 @@
canUseDiscountApi
()
getZtxDiscountPolicyApi
()
getMyStatusAPI
()
}
}
// 获取详情
function
getDetail
()
{
// 获取详情
function
getDetail
()
{
api
.
getMyOwnMemberInfo
().
then
(
res
=>
{
// if (res.data.memberInfo) {
// Object.assign(form.value, res.data.memberInfo)
// }
form
.
value
=
{
...
res
.
data
.
dept
,
...
res
.
data
.
memberInfo
}
form
.
value
=
{...
res
.
data
.
dept
,
...
res
.
data
.
memberInfo
}
form
.
value
.
deptType
=
res
.
data
.
memberInfo
.
deptType
||
res
.
data
.
dept
.
deptType
if
(
form
.
value
.
type
)
{
form
.
value
.
type
=
String
(
form
.
value
.
type
)
}
...
...
@@ -575,13 +605,13 @@
// 尝试从协会树中查找完整路径
const
result
=
findAssoNodeWithPath
(
assoList
.
value
,
form
.
value
.
parentId
,
[])
if
(
result
)
{
assoFullName
.
value
=
getAssoFullName
(
result
.
path
.
map
(
id
=>
({
value
:
id
})))
assoFullName
.
value
=
getAssoFullName
(
result
.
path
.
map
(
id
=>
({
value
:
id
})))
}
else
{
// 如果树还没加载完,延迟设置
setTimeout
(()
=>
{
const
res
=
findAssoNodeWithPath
(
assoList
.
value
,
form
.
value
.
parentId
,
[])
if
(
res
)
{
assoFullName
.
value
=
getAssoFullName
(
res
.
path
.
map
(
id
=>
({
value
:
id
})))
assoFullName
.
value
=
getAssoFullName
(
res
.
path
.
map
(
id
=>
({
value
:
id
})))
}
},
500
)
}
...
...
@@ -600,7 +630,8 @@
const
license
=
JSON
.
parse
(
form
.
value
.
businessLicense
)
form
.
value
.
businessLicense
=
license
.
url
||
license
form
.
value
.
businessLicenseName
=
license
.
name
}
catch
(
e
)
{}
}
catch
(
e
)
{
}
}
// 设置认证状态对应的按钮状态
...
...
@@ -627,10 +658,10 @@
// adress.value = form.value.adress
form
.
value
.
name
=
form
.
value
.
baseName
})
}
}
// 格式化地区树(修复:对齐PC端接口返回的id/name结构)
function
formatRegionTree
(
node
)
{
// 格式化地区树(修复:对齐PC端接口返回的id/name结构)
function
formatRegionTree
(
node
)
{
const
result
=
{
value
:
node
.
id
,
text
:
node
.
name
...
...
@@ -639,20 +670,20 @@
result
.
children
=
node
.
children
.
map
(
child
=>
formatRegionTree
(
child
))
}
return
result
}
}
// 获取地区列表
function
getRegionsList
()
{
// 获取地区列表
function
getRegionsList
()
{
api
.
regionsList
().
then
(
res
=>
{
options
.
value
=
res
.
data
// 转换为级联选择器格式
regionOptions
.
value
=
res
.
data
// map(item => formatRegionTree(item))
});
}
}
// 获取协会树
function
getTree
()
{
// 获取协会树
function
getTree
()
{
console
.
log
(
'获取协会树'
)
api
.
certifiedDeptTreeRegister
({
selfDeptId
:
-
1
,
// 修复:传数字类型,避免后端类型转换错误
...
...
@@ -668,10 +699,10 @@
},
100
)
}
})
}
}
// 格式化协会树
function
formatTree
(
node
)
{
// 格式化协会树
function
formatTree
(
node
)
{
const
result
=
{
value
:
node
.
id
,
text
:
node
.
label
||
node
.
text
...
...
@@ -680,10 +711,10 @@
result
.
children
=
node
.
children
.
map
(
child
=>
formatTree
(
child
))
}
return
result
}
}
// 恢复协会完整路径名称
function
restoreAssoFullName
()
{
// 恢复协会完整路径名称
function
restoreAssoFullName
()
{
if
(
!
form
.
value
.
parentId
||
!
assoList
.
value
||
assoList
.
value
.
length
===
0
)
{
return
}
...
...
@@ -691,16 +722,16 @@
const
result
=
findAssoNodeWithPath
(
assoList
.
value
,
form
.
value
.
parentId
,
[])
if
(
result
)
{
// 使用路径数组重建完整名称
assoFullName
.
value
=
getAssoFullName
(
result
.
path
.
map
(
id
=>
({
value
:
id
})))
}
assoFullName
.
value
=
getAssoFullName
(
result
.
path
.
map
(
id
=>
({
value
:
id
})))
}
}
// 查找协会节点及其父路径
function
findAssoNodeWithPath
(
list
,
targetId
,
currentPath
)
{
// 查找协会节点及其父路径
function
findAssoNodeWithPath
(
list
,
targetId
,
currentPath
)
{
for
(
const
item
of
list
)
{
const
newPath
=
[...
currentPath
,
item
.
value
]
if
(
item
.
value
===
targetId
)
{
return
{
node
:
item
,
path
:
newPath
}
return
{
node
:
item
,
path
:
newPath
}
}
if
(
item
.
children
&&
item
.
children
.
length
>
0
)
{
const
found
=
findAssoNodeWithPath
(
item
.
children
,
targetId
,
newPath
)
...
...
@@ -708,10 +739,10 @@
}
}
return
null
}
}
// 协会选择(修复:100%对齐PC端el-cascader emitPath: false逻辑,只取最后一级ID)
function
changCase
(
e
)
{
// 协会选择(修复:100%对齐PC端el-cascader emitPath: false逻辑,只取最后一级ID)
function
changCase
(
e
)
{
const
valueArr
=
e
.
detail
?.
value
||
e
;
// 取最后一级的value(纯ID)
const
lastNode
=
valueArr
[
valueArr
.
length
-
1
];
...
...
@@ -719,11 +750,11 @@
console
.
log
(
'最终提交的parentId:'
,
form
.
value
.
parentId
);
assoFullName
.
value
=
getAssoFullName
(
valueArr
)
console
.
log
(
'协会完整路径:'
,
assoFullName
.
value
);
}
}
// 地址选择(核心修复:从对象中提取纯value,对齐PC端格式)
// 地址选择(核心修复:从对象中提取纯value,对齐PC端格式)
// 地址选择(还原成你之前能用的版本:纯ID数组赋值)
function
changeAddress
(
e
)
{
function
changeAddress
(
e
)
{
const
selectedValue
=
e
.
detail
?.
value
??
e
;
console
.
log
(
"选择的地址:"
,
selectedValue
);
...
...
@@ -736,31 +767,31 @@
coordinates1
.
value
=
selectedValue
;
console
.
log
(
'最终地址ID:'
,
form
.
value
.
provinceId
,
form
.
value
.
cityId
,
form
.
value
.
regionId
);
}
}
// 获取会员认证费用
function
getMyMemberCertUnitFeeApi
()
{
// 获取会员认证费用
function
getMyMemberCertUnitFeeApi
()
{
api
.
getMyMemberCertUnitFee
().
then
(
res
=>
{
memberFee
.
value
=
res
.
data
})
}
}
// 检查是否可用优惠政策
function
canUseDiscountApi
()
{
// 检查是否可用优惠政策
function
canUseDiscountApi
()
{
api
.
canUseDiscount
().
then
(
res
=>
{
preferentialPolicy
.
value
=
res
.
data
})
}
}
// 获取优惠政策详情
function
getZtxDiscountPolicyApi
()
{
// 获取优惠政策详情
function
getZtxDiscountPolicyApi
()
{
api
.
getZtxDiscountPolicy
().
then
(
res
=>
{
preferentialData
.
value
=
res
.
data
})
}
}
// 获取考点申请状态
function
getMyStatusAPI
()
{
// 获取考点申请状态
function
getMyStatusAPI
()
{
api
.
getMyStatus
().
then
(
res
=>
{
if
(
res
.
data
&&
res
.
data
.
auditStatus
)
{
auditStatus
.
value
=
res
.
data
.
auditStatus
...
...
@@ -768,29 +799,29 @@
auditStatus
.
value
=
'0'
}
})
}
}
// 步骤1提交
function
submitStep1
()
{
// 步骤1提交
function
submitStep1
()
{
// 验证必填项
if
(
!
form
.
value
.
baseName
)
{
uni
.
showToast
({
title
:
'请填写单位名称'
,
duration
:
2000
,
icon
:
'none'
})
uni
.
showToast
({
title
:
'请填写单位名称'
,
duration
:
2000
,
icon
:
'none'
})
return
}
if
(
!
form
.
value
.
type
)
{
uni
.
showToast
({
title
:
'请选择单位类型'
,
duration
:
2000
,
icon
:
'none'
})
uni
.
showToast
({
title
:
'请选择单位类型'
,
duration
:
2000
,
icon
:
'none'
})
return
}
if
(
!
form
.
value
.
contact
)
{
uni
.
showToast
({
title
:
'请填写联系人'
,
duration
:
2000
,
icon
:
'none'
})
uni
.
showToast
({
title
:
'请填写联系人'
,
duration
:
2000
,
icon
:
'none'
})
return
}
if
(
!
form
.
value
.
phone
)
{
uni
.
showToast
({
title
:
'请填写联系电话'
,
duration
:
2000
,
icon
:
'none'
})
uni
.
showToast
({
title
:
'请填写联系电话'
,
duration
:
2000
,
icon
:
'none'
})
return
}
if
(
!
form
.
value
.
introduce
)
{
uni
.
showToast
({
title
:
'请填写机构介绍'
,
duration
:
2000
,
icon
:
'none'
})
uni
.
showToast
({
title
:
'请填写机构介绍'
,
duration
:
2000
,
icon
:
'none'
})
return
}
...
...
@@ -799,94 +830,94 @@
if
(
res
.
data
.
token
)
{
uni
.
setStorageSync
(
'token'
,
'Bearer '
+
res
.
data
.
token
)
}
uni
.
showToast
({
title
:
'操作成功'
,
duration
:
1500
,
icon
:
'success'
})
uni
.
showToast
({
title
:
'操作成功'
,
duration
:
1500
,
icon
:
'success'
})
setTimeout
(()
=>
{
activeStep
.
value
=
2
getDetail
()
},
1500
)
}
else
{
uni
.
showToast
({
title
:
res
.
msg
||
'操作失败'
,
duration
:
2000
,
icon
:
'none'
})
uni
.
showToast
({
title
:
res
.
msg
||
'操作失败'
,
duration
:
2000
,
icon
:
'none'
})
}
})
}
}
// 步骤2提交
function
submitStep2
()
{
// 步骤2提交
async
function
submitStep2
()
{
// 验证必填项
if
(
!
form
.
value
.
parentId
||
form
.
value
.
parentId
==
0
||
form
.
value
.
parentId
==
-
1
)
{
uni
.
showToast
({
title
:
'请选择所属协会'
,
duration
:
2000
,
icon
:
'none'
})
uni
.
showToast
({
title
:
'请选择所属协会'
,
duration
:
2000
,
icon
:
'none'
})
return
}
if
(
!
form
.
value
.
name
)
{
uni
.
showToast
({
title
:
'请输入机构名称'
,
duration
:
2000
,
icon
:
'none'
})
uni
.
showToast
({
title
:
'请输入机构名称'
,
duration
:
2000
,
icon
:
'none'
})
return
}
if
(
coordinates1
.
value
.
length
===
0
)
{
uni
.
showToast
({
title
:
'请选择认证地址'
,
duration
:
2000
,
icon
:
'none'
})
uni
.
showToast
({
title
:
'请选择认证地址'
,
duration
:
2000
,
icon
:
'none'
})
return
}
if
(
!
form
.
value
.
adress
)
{
uni
.
showToast
({
title
:
'请输入认证详细地址'
,
duration
:
2000
,
icon
:
'none'
})
uni
.
showToast
({
title
:
'请输入认证详细地址'
,
duration
:
2000
,
icon
:
'none'
})
return
}
if
(
!
form
.
value
.
siteContact
)
{
uni
.
showToast
({
title
:
'请输入联系人'
,
duration
:
2000
,
icon
:
'none'
})
uni
.
showToast
({
title
:
'请输入联系人'
,
duration
:
2000
,
icon
:
'none'
})
return
}
if
(
!
form
.
value
.
siteTel
)
{
uni
.
showToast
({
title
:
'请输入联系方式'
,
duration
:
2000
,
icon
:
'none'
})
uni
.
showToast
({
title
:
'请输入联系方式'
,
duration
:
2000
,
icon
:
'none'
})
return
}
if
(
!
form
.
value
.
businessLicense
)
{
uni
.
showToast
({
title
:
'请上传营业执照'
,
duration
:
2000
,
icon
:
'none'
})
uni
.
showToast
({
title
:
'请上传营业执照'
,
duration
:
2000
,
icon
:
'none'
})
return
}
if
(
!
form
.
value
.
companyName
)
{
uni
.
showToast
({
title
:
'请输入营业执照名称'
,
duration
:
2000
,
icon
:
'none'
})
uni
.
showToast
({
title
:
'请输入营业执照名称'
,
duration
:
2000
,
icon
:
'none'
})
return
}
if
(
!
form
.
value
.
creditCode
)
{
uni
.
showToast
({
title
:
'请输入社会信用代码'
,
duration
:
2000
,
icon
:
'none'
})
uni
.
showToast
({
title
:
'请输入社会信用代码'
,
duration
:
2000
,
icon
:
'none'
})
return
}
if
(
!
creditCodeValid
.
value
)
{
uni
.
showToast
({
title
:
'社会信用代码已存在,请联系中跆协修改'
,
icon
:
'none'
,
duration
:
3000
})
uni
.
showToast
({
title
:
'社会信用代码已存在,请联系中跆协修改'
,
icon
:
'none'
,
duration
:
3000
})
return
}
if
(
!
form
.
value
.
legalIdcPhoto1
||
!
form
.
value
.
legalIdcPhoto2
)
{
uni
.
showToast
({
title
:
'请上传身份证正反面'
,
duration
:
2000
,
icon
:
'none'
})
uni
.
showToast
({
title
:
'请上传身份证正反面'
,
duration
:
2000
,
icon
:
'none'
})
return
}
if
(
!
form
.
value
.
legal
)
{
uni
.
showToast
({
title
:
'请输入法人姓名'
,
duration
:
2000
,
icon
:
'none'
})
uni
.
showToast
({
title
:
'请输入法人姓名'
,
duration
:
2000
,
icon
:
'none'
})
return
}
if
(
!
form
.
value
.
legalIdcCode
)
{
uni
.
showToast
({
title
:
'请输入法人证件号'
,
duration
:
2000
,
icon
:
'none'
})
uni
.
showToast
({
title
:
'请输入法人证件号'
,
duration
:
2000
,
icon
:
'none'
})
return
}
if
(
!
form
.
value
.
pictures
)
{
uni
.
showToast
({
title
:
'请上传机构照片'
,
duration
:
2000
,
icon
:
'none'
})
uni
.
showToast
({
title
:
'请上传机构照片'
,
duration
:
2000
,
icon
:
'none'
})
return
}
if
(
!
form
.
value
.
notice
)
{
uni
.
showToast
({
title
:
'请阅读并同意注册须知、入会须知、免责声明'
,
duration
:
2000
,
icon
:
'none'
})
uni
.
showToast
({
title
:
'请阅读并同意注册须知、入会须知、免责声明'
,
duration
:
2000
,
icon
:
'none'
})
return
}
// 验证营业执照和法人信息
uni
.
showLoading
({
title
:
'验证中...'
})
api
.
checkBusinessLicense
({
await
onCreditCodeBlur
()
uni
.
showLoading
({
title
:
'验证中...'
})
await
api
.
checkBusinessLicense
({
creditCode
:
form
.
value
.
creditCode
,
companyName
:
form
.
value
.
companyName
,
legalIdcCode
:
form
.
value
.
legalIdcCode
,
legal
:
form
.
value
.
legal
}).
then
(
checkRes
=>
{
uni
.
hideLoading
()
if
(
checkRes
.
code
!==
200
)
{
if
(
checkRes
.
code
!=
200
||
!
checkRes
.
data
.
passFlag
)
{
showModal
({
title
:
'系统提示'
,
content
:
checkRes
.
msg
||
'企业信息异常请检查相关资料信息,确认无误后再次提交!'
,
content
:
'企业信息异常请检查相关资料信息,确认无误后再次提交!'
,
cancelText
:
'返回修改'
,
confirmText
:
'确认无误'
,
onConfirm
:
()
=>
submitCertification
()
...
...
@@ -905,24 +936,25 @@
onConfirm
:
()
=>
submitCertification
()
})
})
}
// 提交认证信息(100%对齐PC端入参格式)
function
submitCertification
()
{
}
// 提交认证信息(100%对齐PC端入参格式)
function
submitCertification
()
{
let
params
=
{
parentId
:
form
.
value
.
parentId
,
creditCode
:
form
.
value
.
creditCode
,
legal
:
form
.
value
.
legal
,
businessLicense
:
form
.
value
.
businessLicense
,
businessLicense
:
JSON
.
stringify
(
form
.
value
.
businessLicense
)
,
pictures
:
form
.
value
.
pictures
,
memId
:
form
.
value
.
memId
,
id
:
form
.
value
.
deptId
,
name
:
form
.
value
.
name
,
regionId
:
form
.
value
.
regionId
?.
value
,
cityId
:
form
.
value
.
cityId
.
value
.
toString
()
,
provinceId
:
form
.
value
.
provinceId
.
value
.
toString
()
,
regionId
:
form
.
value
.
regionId
,
cityId
:
form
.
value
.
cityId
,
provinceId
:
form
.
value
.
provinceId
,
adress
:
form
.
value
.
adress
,
deptType
:
app
.
globalData
.
deptType
,
deptType
:
form
.
value
.
deptType
,
legalIdcPhoto
:
[
form
.
value
.
legalIdcPhoto1
,
form
.
value
.
legalIdcPhoto2
].
join
(
','
),
applyPoints
:
'0'
,
siteContact
:
form
.
value
.
siteContact
,
...
...
@@ -930,39 +962,39 @@
companyName
:
form
.
value
.
companyName
,
legalIdcCode
:
form
.
value
.
legalIdcCode
}
console
.
log
(
666
,
params
)
console
.
log
(
666
,
params
)
// return
uni
.
showLoading
({
title
:
'提交中...'
})
uni
.
showLoading
({
title
:
'提交中...'
})
api
.
editMyMemberCertifiedInfo
(
params
).
then
(
res
=>
{
uni
.
hideLoading
()
if
(
res
.
code
===
200
)
{
uni
.
showToast
({
title
:
'提交成功'
,
duration
:
1500
,
icon
:
'success'
})
uni
.
showToast
({
title
:
'提交成功'
,
duration
:
1500
,
icon
:
'success'
})
// 跳转缴费页面
setTimeout
(()
=>
{
const
assoName
=
assoFullName
.
value
console
.
log
(
888
,
assoName
)
console
.
log
(
888
,
assoName
)
// 跳转到缴费页面
uni
.
navigateTo
({
url
:
`/myCenter/goPay?payName=
${
encodeURIComponent
(
form
.
value
.
name
||
''
)}
&assoName=
${
encodeURIComponent
(
assoName
)}
`
})
},
1500
)
}
else
{
uni
.
showToast
({
title
:
res
.
msg
||
'提交失败'
,
duration
:
2000
,
icon
:
'none'
})
uni
.
showToast
({
title
:
res
.
msg
||
'提交失败'
,
duration
:
2000
,
icon
:
'none'
})
}
}).
catch
(()
=>
{
uni
.
hideLoading
()
})
}
}
// 营业执照上传
function
onBusinessLicenseSelect
()
{
// 营业执照上传
function
onBusinessLicenseSelect
()
{
uni
.
chooseImage
({
count
:
1
,
sizeType
:
[
'compressed'
],
sourceType
:
[
'album'
,
'camera'
],
success
:
(
res
)
=>
{
if
(
res
.
tempFilePaths
&&
res
.
tempFilePaths
.
length
>
0
)
{
uni
.
showLoading
({
title
:
'上传中...'
})
uni
.
showLoading
({
title
:
'上传中...'
})
// 先上传文件
api
.
uploadFile
(
res
).
then
(
uploadRes
=>
{
if
(
uploadRes
.
code
!==
200
)
{
...
...
@@ -978,9 +1010,9 @@
'Authorization'
:
uni
.
getStorageSync
(
'token'
)
}
}).
then
(
ocrRes
=>
{
return
{
url
,
ocrRes
}
return
{
url
,
ocrRes
}
})
}).
then
(({
url
,
ocrRes
})
=>
{
}).
then
(({
url
,
ocrRes
})
=>
{
uni
.
hideLoading
()
const
data
=
JSON
.
parse
(
ocrRes
.
data
)
let
name
=
'营业执照'
...
...
@@ -996,37 +1028,37 @@
}])
}).
catch
(()
=>
{
uni
.
hideLoading
()
uni
.
showToast
({
title
:
'上传失败'
,
icon
:
'none'
})
uni
.
showToast
({
title
:
'上传失败'
,
icon
:
'none'
})
})
}
}
})
}
}
function
removeBusinessLicense
()
{
function
removeBusinessLicense
()
{
form
.
value
.
businessLicense
=
''
form
.
value
.
businessLicenseName
=
''
}
}
// 删除身份证正面
function
removeIdCardFront
()
{
// 删除身份证正面
function
removeIdCardFront
()
{
form
.
value
.
legalIdcPhoto1
=
''
}
}
// 删除身份证反面
function
removeIdCardBack
()
{
// 删除身份证反面
function
removeIdCardBack
()
{
form
.
value
.
legalIdcPhoto2
=
''
}
}
// 身份证上传
function
onIdCardFrontSelect
()
{
// 身份证上传
function
onIdCardFrontSelect
()
{
uni
.
chooseImage
({
count
:
1
,
sizeType
:
[
'compressed'
],
sourceType
:
[
'album'
,
'camera'
],
success
:
(
res
)
=>
{
if
(
res
.
tempFilePaths
&&
res
.
tempFilePaths
.
length
>
0
)
{
uni
.
showLoading
({
title
:
'上传中...'
})
uni
.
showLoading
({
title
:
'上传中...'
})
api
.
uploadImg
(
res
).
then
(
data
=>
{
if
(
data
.
code
===
200
)
{
form
.
value
.
legalIdcPhoto1
=
data
.
msg
...
...
@@ -1034,14 +1066,14 @@
uni
.
hideLoading
()
}).
catch
(()
=>
{
uni
.
hideLoading
()
uni
.
showToast
({
title
:
'上传失败'
,
icon
:
'none'
})
uni
.
showToast
({
title
:
'上传失败'
,
icon
:
'none'
})
})
}
}
})
}
}
function
onIdCardBackSelect
()
{
function
onIdCardBackSelect
()
{
uni
.
chooseImage
({
count
:
1
,
sizeType
:
[
'compressed'
],
...
...
@@ -1049,7 +1081,7 @@
success
:
(
res
)
=>
{
if
(
res
.
tempFilePaths
&&
res
.
tempFilePaths
.
length
>
0
)
{
const
tempPath
=
res
.
tempFilePaths
[
0
]
uni
.
showLoading
({
title
:
'上传中...'
})
uni
.
showLoading
({
title
:
'上传中...'
})
api
.
uploadImg
(
res
).
then
(
data
=>
{
if
(
data
.
code
===
200
)
{
form
.
value
.
legalIdcPhoto2
=
data
.
msg
...
...
@@ -1059,15 +1091,15 @@
uni
.
hideLoading
()
}).
catch
(()
=>
{
uni
.
hideLoading
()
uni
.
showToast
({
title
:
'上传失败'
,
icon
:
'none'
})
uni
.
showToast
({
title
:
'上传失败'
,
icon
:
'none'
})
})
}
}
})
}
}
// 提取身份证信息
function
extractIdCardInfo
(
tempPath
)
{
// 提取身份证信息
function
extractIdCardInfo
(
tempPath
)
{
if
(
tempPath
)
{
uni
.
uploadFile
({
url
:
config
.
baseUrl_api
+
'/person/info/getPersonInfoFromCert/0'
,
...
...
@@ -1085,20 +1117,20 @@
}
})
}
}
}
// 机构照片上传
function
onPicturesSelect
()
{
// 机构照片上传
function
onPicturesSelect
()
{
uni
.
chooseImage
({
count
:
3
,
sizeType
:
[
'compressed'
],
sourceType
:
[
'album'
,
'camera'
],
success
:
(
res
)
=>
{
if
(
res
.
tempFilePaths
&&
res
.
tempFilePaths
.
length
>
0
)
{
uni
.
showLoading
({
title
:
'上传中...'
})
uni
.
showLoading
({
title
:
'上传中...'
})
// 循环上传多张图片
const
promises
=
res
.
tempFilePaths
.
map
(
path
=>
{
return
api
.
uploadImg
({
tempFilePaths
:
[
path
]
})
return
api
.
uploadImg
({
tempFilePaths
:
[
path
]
})
})
Promise
.
all
(
promises
).
then
(
results
=>
{
uni
.
hideLoading
()
...
...
@@ -1106,15 +1138,15 @@
form
.
value
.
pictures
=
urls
.
join
(
','
)
}).
catch
(()
=>
{
uni
.
hideLoading
()
uni
.
showToast
({
title
:
'上传失败'
,
icon
:
'none'
})
uni
.
showToast
({
title
:
'上传失败'
,
icon
:
'none'
})
})
}
}
})
}
}
// 预览图片
function
previewImage
(
url
)
{
// 预览图片
function
previewImage
(
url
)
{
if
(
Array
.
isArray
(
url
))
{
uni
.
previewImage
({
urls
:
url
...
...
@@ -1124,15 +1156,15 @@
urls
:
[
url
]
})
}
}
}
// 删除机构照片
function
removePictures
()
{
// 删除机构照片
function
removePictures
()
{
form
.
value
.
pictures
=
''
}
}
// 去缴费 - 参考PC payTheFees逻辑,先校验基础信息
function
goPay
()
{
// 去缴费 - 参考PC payTheFees逻辑,先校验基础信息
function
goPay
()
{
// 检查基础信息是否完善
if
(
!
form
.
value
.
siteContact
)
{
uni
.
showToast
({
...
...
@@ -1147,13 +1179,14 @@
uni
.
navigateTo
({
url
:
`/myCenter/goPay?payName=
${
encodeURIComponent
(
form
.
value
.
name
||
''
)}
&assoName=
${
encodeURIComponent
(
assoName
)}
`
})
}
}
// 根据协会ID获取协会名称(只获取最后一级)
function
getAssoName
(
parentId
)
{
// 根据协会ID获取协会名称(只获取最后一级)
function
getAssoName
(
parentId
)
{
if
(
!
parentId
||
!
assoList
.
value
||
assoList
.
value
.
length
===
0
)
{
return
''
}
// 递归查找协会名称
function
findInTree
(
list
)
{
for
(
const
item
of
list
)
{
...
...
@@ -1167,11 +1200,12 @@
}
return
null
}
return
findInTree
(
assoList
.
value
)
||
''
}
}
// 根据选择的值数组获取完整的协会路径名称
function
getAssoFullName
(
valueArr
)
{
// 根据选择的值数组获取完整的协会路径名称
function
getAssoFullName
(
valueArr
)
{
if
(
!
valueArr
||
valueArr
.
length
===
0
||
!
assoList
.
value
||
assoList
.
value
.
length
===
0
)
{
return
''
}
...
...
@@ -1190,22 +1224,22 @@
}
}
return
pathNames
.
join
(
'/'
)
}
}
// 去认证 - 提交认证信息
function
doCertification
()
{
// 去认证 - 提交认证信息
function
doCertification
()
{
submitStep2
()
}
}
// 审核详情 - 跳转到审核详情页面
function
goAuditDetail
()
{
// 审核详情 - 跳转到审核详情页面
function
goAuditDetail
()
{
uni
.
navigateTo
({
url
:
'/myCenter/certAuditDetail'
})
}
}
// 退出登录
function
handleLogout
()
{
// 退出登录
function
handleLogout
()
{
uni
.
showModal
({
title
:
'提示'
,
content
:
'确定要退出当前账号吗?'
,
...
...
@@ -1220,15 +1254,15 @@
}
}
});
}
}
// 监听步骤变化,加载审核详情
watch
(
activeStep
,
(
newVal
)
=>
{
// 监听步骤变化,加载审核详情
watch
(
activeStep
,
(
newVal
)
=>
{
console
.
log
(
'activeStep changed:'
,
newVal
)
if
(
newVal
===
3
)
{
getMyCertStageFN
()
}
})
})
</
script
>
<
style
lang=
"scss"
scoped
>
...
...
@@ -1410,15 +1444,15 @@
}
}
.logout-icon
{
.logout-icon
{
font-size
:
28
rpx
;
color
:
#e64329
;
}
}
.logout-text
{
.logout-text
{
font-size
:
24
rpx
;
color
:
#e64329
;
}
}
.status-box
{
...
...
@@ -1773,6 +1807,7 @@
display
:
block
;
//
overflow
:
hidden
;
}
:deep
(
.uni-data-picker
.selected-area
)
{
width
:
100%
;
padding
:
0
20
rpx
;
...
...
@@ -1781,6 +1816,7 @@
justify-content
:
flex-start
;
align-items
:
center
;
}
:deep
(
.uni-data-picker
.selected-text
)
{
font-size
:
28
rpx
;
color
:
#333
;
...
...
@@ -1791,6 +1827,7 @@
max-width
:
100%
;
flex
:
1
;
}
:deep
(
.uni-data-picker
.uni-data-picker__input
)
{
text-align
:
left
!important
;
white-space
:
nowrap
;
...
...
@@ -1798,15 +1835,18 @@
text-overflow
:
ellipsis
;
width
:
100%
;
}
:deep
(
.selected-list
)
{
justify-content
:
start
;
overflow
:
hidden
;
max-width
:
100%
;
}
:deep
(
.selected-item
)
{
max-width
:
200
rpx
;
overflow
:
hidden
;
}
:deep
(
.uni-data-picker__view
)
{
overflow
:
hidden
;
text-overflow
:
ellipsis
;
...
...
@@ -1824,15 +1864,16 @@
font-size
:
32
rpx
!important
;
padding
:
24
rpx
30
rpx
!important
;
}
:deep
(
.item-text
)
{
font-size
:
32
rpx
!important
;
}
:deep
(
.selected-item-text
)
{
font-size
:
32
rpx
!important
;
}
/* 修复选择器容器宽度问题 */
.picker-wrapper
{
width
:
100%
;
...
...
@@ -1962,7 +2003,8 @@
text-align
:
right
;
font-size
:
28
rpx
;
}
radio-group
label
,
checkbox-group
label
{
padding-right
:
0
rpx
;
radio-group
label
,
checkbox-group
label
{
padding-right
:
0
rpx
;
}
</
style
>
...
...
Write
Preview
Styling with
Markdown
is supported
Attach a file
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to post a comment