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
4eb1ea9e
authored
2026-06-01 17:49:33 +0800
by
lttnew
Browse Files
Options
Browse Files
Tag
Download
Email Patches
Plain Diff
个人会员+订单对公转账点击
1 parent
0b892d13
Show whitespace changes
Inline
Side-by-side
Showing
13 changed files
with
124 additions
and
43 deletions
login/loginC.vue
myCenter/order.vue
myCenter/transferPay.vue
pages/index/daoGuanOrder.vue
pages/index/daoGuanPerson.vue
pages/invoice/apply.vue
pages/invoice/applyFeisui.vue
personal/addVip_per.vue
personal/home.vue
personal/levelRecord.vue
personal/memberInfo.vue
personalVip/addVip.vue
personalVip/order.vue
login/loginC.vue
View file @
4eb1ea9
...
...
@@ -237,6 +237,7 @@ function login() {
goHomeAfterLogin
()
}).
catch
((
err
)
=>
{
console
.
error
(
'登录失败:'
,
err
)
refreshCodeWhenNotServerError
(
err
)
uni
.
showToast
({
title
:
'登录失败'
,
icon
:
'none'
})
}).
finally
(()
=>
{
loading
.
value
=
false
...
...
@@ -261,6 +262,9 @@ function login() {
.
then
(()
=>
{
app
.
globalData
.
isLogin
=
true
goHomeAfterLogin
()
}).
catch
((
err
)
=>
{
console
.
error
(
'短信登录失败:'
,
err
)
refreshCodeWhenNotServerError
(
err
)
}).
finally
(()
=>
{
loading
.
value
=
false
})
...
...
@@ -293,6 +297,19 @@ function getCode() {
})
}
function
isServer500
(
err
)
{
const
message
=
String
(
err
?.
message
||
err
?.
errMsg
||
''
)
return
err
?.
statusCode
===
500
||
err
?.
code
===
500
||
err
?.
data
?.
code
===
500
||
message
.
includes
(
'HTTP 500'
)
}
function
refreshCodeWhenNotServerError
(
err
)
{
if
(
isServer500
(
err
))
return
getCode
()
}
function
getCaptchaSms
()
{
if
(
!
form2
.
value
.
telNo
)
{
uni
.
showToast
({
title
:
'手机号不能为空'
,
icon
:
'none'
})
...
...
myCenter/order.vue
View file @
4eb1ea9
...
...
@@ -53,7 +53,13 @@
<view
class=
"data-header"
>
<text
class=
"member-label"
>
{{
getOrderLabel
(
item
)
}}
·
</text>
<text
class=
"value ml10"
>
{{
item
.
wfCode
||
'——'
}}
·
</text>
<text
class=
"pay-type ml10"
>
{{
String
(
item
.
payType
)
===
'3'
?
'对公转账'
:
'民生付'
}}
</text>
<text
v-if=
"String(item.payType) === '3'"
:class=
"
{ 'pay-type-link': canClickTransferPay(item) }"
class="pay-type ml10"
@click.stop="handleTransferPay(item)"
>对公转账
</text>
<text
v-else
class=
"pay-type ml10"
>
民生付
</text>
</view>
<text
:class=
"
{
'status-wait': item.payStatus == 3,
...
...
@@ -361,6 +367,17 @@ const isRefundDisabled = (item) => String(item?.payStatus) !== '1' || hasInvoice
const
canShowRefund
=
(
item
)
=>
!
isRefundDisabled
(
item
)
const
canClickTransferPay
=
(
item
)
=>
{
return
String
(
item
?.
payType
)
===
'3'
&&
String
(
item
?.
payStatus
)
!==
'2'
}
const
handleTransferPay
=
(
item
)
=>
{
if
(
!
canClickTransferPay
(
item
))
return
uni
.
navigateTo
({
url
:
`/myCenter/transferPay?orderId=${item.id
}
`
}
)
}
// 数据请求核心方法
const
initData
=
async
()
=>
{
...
...
@@ -1258,6 +1275,10 @@ const confirmRefund = async (item) => {
flex
-
shrink
:
0
;
}
.
pay
-
type
.
pay
-
type
-
link
{
color
:
#
1677
ff
;
}
.
date
-
text
{
color
:
#
666
;
}
...
...
myCenter/transferPay.vue
View file @
4eb1ea9
...
...
@@ -27,33 +27,34 @@
<view
class=
"bank-row"
>
<text
class=
"bank-label"
>
收款人姓名
</text>
<text
class=
"bank-value"
>
中国跆拳道协会
</text>
<
!--
<view
class=
"copy-btn"
@
tap
.
stop=
"handleCopy('秦琦五洋赫公司')"
>
复制
</view>
--
>
<
view
class=
"copy-btn"
@
tap
.
stop=
"handleCopy('中国跆拳道协会')"
>
复制
</view
>
</view>
<view
class=
"bank-row"
>
<text
class=
"bank-label"
>
收款银行
</text>
<text
class=
"bank-value"
>
中国民生银行
</text>
<
!--
<view
class=
"copy-btn"
@
tap
.
stop=
"handleCopy('中国民生银行')"
>
复制
</view>
--
>
<
view
class=
"copy-btn"
@
tap
.
stop=
"handleCopy('中国民生银行')"
>
复制
</view
>
</view>
<view
class=
"bank-row"
>
<text
class=
"bank-label"
>
收款卡号
</text>
<text
class=
"bank-value card-number"
>
{{
form
.
ziZhangBu
||
'-'
}}
</text>
<
!--
<view
class=
"copy-btn"
@
tap
.
stop=
"handleCopy(form.ziZhangBu)"
>
复制
</view>
--
>
<
view
class=
"copy-btn"
@
tap
.
stop=
"handleCopy(form.ziZhangBu)"
>
复制
</view
>
</view>
<view
class=
"bank-row"
>
<text
class=
"bank-label"
>
收款金额
</text>
<text
class=
"bank-value highlight"
>
¥
{{
form
.
price
||
'0.00'
}}
</text>
<
!--
<view
class=
"copy-btn"
@
tap
.
stop=
"handleCopy(form.price)"
>
复制
</view>
--
>
<
view
class=
"copy-btn"
@
tap
.
stop=
"handleCopy(form.price)"
>
复制
</view
>
</view>
</view>
<!-- 金额说明 -->
<view
class=
"card notice-card"
>
<view
class=
"danger-title"
>
<
!--
<
view
class=
"danger-title"
>
<text>
请使用认证机构下的账号进行对公转账。
</text>
</view>
<view
class=
"notice-line"
>
1. 本订单将为您保留7天,请您及时支付;逾期未支付,订单将自动取消。
</view>
<view
class=
"notice-line"
>
2. 请通过网上银行(网银)或银行柜台或手机银行向以下账号划转款项。
</view>
<view
class=
"notice-line"
>
3. 转账金额与订单金额必须保持一致,不得多转、少转。
</view>
</view>
-->
<view
class=
"notice-line"
>
1. 请使用注册机构账号对公转账。
</view>
<view
class=
"notice-line"
>
2. 本订单将为您保留7天,请您及时支付;逾期未支付,订单将自动取消。
</view>
<view
class=
"notice-line"
>
3. 请通过网上银行(网银)或银行柜台或手机银行向以下账号划转款项。
</view>
<view
class=
"notice-line"
>
4. 转账金额与订单金额必须保持一致,不得多转、少转。
</view>
</view>
<!-- 温馨提示 -->
...
...
pages/index/daoGuanOrder.vue
View file @
4eb1ea9
...
...
@@ -86,7 +86,13 @@
<view
class=
"data-header"
>
<text
class=
"member-label"
>
{{
getOrderLabel
(
item
)
}}
·
</text>
<text
class=
"value ml10"
>
{{
item
.
wfCode
||
'——'
}}
·
</text>
<text
class=
"pay-type ml10"
>
{{
String
(
item
.
payType
)
===
'3'
?
'对公转账'
:
'民生付'
}}
</text>
<text
v-if=
"String(item.payType) === '3'"
:class=
"
{ 'pay-type-link': canClickTransferPay(item) }"
class="pay-type ml10"
@click.stop="handleTransferPay(item)"
>对公转账
</text>
<text
v-else
class=
"pay-type ml10"
>
民生付
</text>
</view>
<text
:class=
"
{
'status-wait': item.payStatus == 3,
...
...
@@ -437,6 +443,17 @@ const isRefundDisabled = (item) => String(item?.payStatus) !== '1' || String(ite
const
canShowRefund
=
(
item
)
=>
!
isRefundDisabled
(
item
)
const
canClickTransferPay
=
(
item
)
=>
{
return
String
(
item
?.
payType
)
===
'3'
&&
String
(
item
?.
payStatus
)
!==
'2'
}
const
handleTransferPay
=
(
item
)
=>
{
if
(
!
canClickTransferPay
(
item
))
return
uni
.
navigateTo
({
url
:
`/myCenter/transferPay?orderId=${item.id
}
`
}
)
}
const
encodeQueryValue
=
(
value
)
=>
encodeURIComponent
(
value
||
''
)
const
getPayName
=
(
item
)
=>
{
...
...
@@ -1511,6 +1528,10 @@ const onTabSwitch = (index, url) => {
flex
-
shrink
:
0
;
}
.
pay
-
type
.
pay
-
type
-
link
{
color
:
#
1677
ff
;
}
.
date
-
text
{
color
:
#
666
;
}
...
...
pages/index/daoGuanPerson.vue
View file @
4eb1ea9
...
...
@@ -363,12 +363,12 @@ async function goAuthPayV2() {
showAuthPayDialog
(
'当前账号状态暂无法办理缴费业务'
)
return
}
if
(
authPayDisabled
.
value
)
{
showAuthPayDialog
(
'您已成功提交审核,请耐心等待。'
)
return
}
const
canGoPay
=
await
handelGetMyRecent
()
if
(
!
canGoPay
)
return
// if (authPayDisabled.value) {
// showAuthPayDialog('您有一笔缴费正在审核中,请勿重复缴费。您可前往【认证详情】查看审核进度。')
// return
// }
goPath
(
'/myCenter/perfect'
)
}
...
...
pages/invoice/apply.vue
View file @
4eb1ea9
...
...
@@ -93,7 +93,7 @@
maxlength=
"20"
placeholder=
"请输入纳税人识别号"
/>
<text
class=
"hint"
>
企业税务登记证上的号码,一般为
15、18 或 20
位
</text>
<text
class=
"hint"
>
企业税务登记证上的号码,一般为
15~20
位
</text>
</view>
<!-- 接收方式 -->
...
...
@@ -216,7 +216,7 @@ const validateForm = () => {
// 纳税人识别号格式校验
if
(
form
.
type
===
'1'
)
{
const
taxReg
=
/^
[
A-Z0-9
]{
15}
$|^
[
A-Z0-9
]{18}
$|^
[
A-Z0-9
]{
20}
$/
;
const
taxReg
=
/^
[
A-Z0-9
]{
0,
20}
$/
;
if
(
!
taxReg
.
test
(
form
.
taxno
))
{
uni
.
showToast
({
title
:
'纳税人识别号格式不正确'
,
icon
:
'none'
});
return
false
;
...
...
pages/invoice/applyFeisui.vue
View file @
4eb1ea9
...
...
@@ -74,7 +74,7 @@
placeholder=
"请输入纳税人识别号"
:disabled=
"!showIndividualType"
/>
<text
class=
"hint"
>
企业税务登记证上的号码,一般为
15、18 或 20
位
</text>
<text
class=
"hint"
>
企业税务登记证上的号码,一般为
15~20
位
</text>
</view>
<!-- 开票金额(只读) -->
...
...
@@ -171,7 +171,7 @@ const validateForm = () => {
// 纳税人识别号格式校验
if
(
form
.
type
===
'0'
)
{
const
taxReg
=
/^
[
A-Z0-9
]{
15}
$|^
[
A-Z0-9
]{18}
$|^
[
A-Z0-9
]{
20}
$/
;
const
taxReg
=
/^
[
A-Z0-9
]{
0,
20}
$/
;
if
(
!
taxReg
.
test
(
form
.
taxno
))
{
uni
.
showToast
({
title
:
'纳税人识别号格式不正确'
,
icon
:
'none'
});
return
false
;
...
...
personal/addVip_per.vue
View file @
4eb1ea9
...
...
@@ -51,16 +51,15 @@
<uni-easyinput
v-model=
"baseFormData.phone"
:placeholderStyle=
"placeholderStyle"
:styles=
"inputstyle"
placeholder=
"请输入联系方式"
/>
</uni-forms-item>
<uni-forms-item
label=
"会员编号"
name=
"perCode"
>
<uni-easyinput
v-model=
"baseFormData.perCode"
:placeholderStyle=
"placeholderStyle"
:styles=
"inputstyle"
placeholder=
"会员编号"
/>
<uni-forms-item
label=
"会员编号"
name=
"perCode"
v-if=
"baseFormData.perCode"
>
{{
baseFormData
.
perCode
}}
</uni-forms-item>
<uni-forms-item
label=
"会员有效期"
name=
"validityDate"
>
<uni-easyinput
v-model=
"baseFormData.validityDate"
:placeholderStyle=
"placeholderStyle"
:styles=
"inputstyle"
placeholder=
"会员有效期"
/>
<uni-forms-item
label=
"会员有效期"
name=
"validityDate"
v-if=
"baseFormData.validityDate"
>
{{
baseFormData
.
validityDate
?.
slice
(
0
,
10
)
}}
</uni-forms-item>
<!--
<uni-forms-item
label=
"所在地区"
>
<uni-data-picker
class=
"fixUniFormItemStyle"
v-model=
"baseFormData.cityId"
:localdata=
"regionsList"
popup-title=
"请选择所在地区"
></uni-data-picker>
...
...
@@ -204,8 +203,8 @@ const validityDateText = ref('')
onLoad
(
async
(
option
)
=>
{
if
(
option
.
name
&&
option
.
idcCode
)
{
baseFormData
.
value
.
name
=
option
.
name
baseFormData
.
value
.
idcCode
=
option
.
idcCode
baseFormData
.
value
.
name
=
decodeURIComponent
(
option
.
name
)
baseFormData
.
value
.
idcCode
=
decodeURIComponent
(
option
.
idcCode
)
giveBirthDay
()
}
...
...
personal/home.vue
View file @
4eb1ea9
...
...
@@ -221,7 +221,7 @@ const perInfo = computed(() => userStore.perInfo ?? {})
console
.
log
(
222
,
userInfo
.
value
)
console
.
log
(
333
,
perInfo
.
value
)
// 是否已绑定学员
(根据会员卡号判断)
// 是否已绑定学员
:绑定非会员时只有姓名,没有会员卡号,也应视为已绑定,避免反复弹绑定框。
const
isBound
=
computed
(()
=>
{
const
perName
=
perInfo
.
value
?.
perName
return
perName
!==
undefined
&&
perName
!==
null
&&
perName
!==
''
...
...
@@ -237,9 +237,6 @@ const showConfirm = ref(false)
let
hasOpenedBindPopup
=
false
onShow
(()
=>
{
// 重置绑定弹框标志,确保每次进入页面都能正确弹出
hasOpenedBindPopup
=
false
let
webUserName
=
uni
.
getStorageSync
(
'webUserName'
)
if
(
!
webUserName
)
{
// 登录后需要等待数据加载完成
...
...
@@ -265,7 +262,8 @@ onShow(() => {
const
checkAndOpenBindPopup
=
()
=>
{
// 确保 userStore 数据已更新
const
currentPerInfo
=
userStore
.
perInfo
if
(
currentPerInfo
&&
!
currentPerInfo
.
perCode
&&
!
hasOpenedBindPopup
)
{
const
hasBoundName
=
currentPerInfo
?.
perName
if
(
currentPerInfo
&&
!
hasBoundName
&&
!
hasOpenedBindPopup
)
{
hasOpenedBindPopup
=
true
nextTick
(()
=>
{
openBindPopup
()
...
...
@@ -482,8 +480,10 @@ const goToOrder = () => {
// 导航到缴费
const
goToPay
=
()
=>
{
const
perId
=
userInfo
.
value
.
perId
??
''
const
name
=
perInfo
.
value
?.
perName
?
encodeURIComponent
(
perInfo
.
value
.
perName
)
:
''
const
idcCode
=
perInfo
.
value
?.
perIdcCode
?
encodeURIComponent
(
perInfo
.
value
.
perIdcCode
)
:
''
uni
.
navigateTo
({
url
:
`/personal/addVip_per?perId=
${
perId
}
`
url
:
`/personal/addVip_per?perId=
${
perId
}
&name=
${
name
}
&idcCode=
${
idcCode
}
`
});
};
...
...
personal/levelRecord.vue
View file @
4eb1ea9
...
...
@@ -174,9 +174,13 @@
perId
.
value
=
userInfo
.
perId
;
getLevelRecords
();
}
else
{
const
userId
=
userInfo
?.
id
;
if
(
!
userId
)
{
return
;
}
// 如果userInfo中没有perId,尝试通过getAssoPers获取
try
{
const
res
=
await
getAssoPers
(
userI
nfo
?.
id
||
''
);
const
res
=
await
getAssoPers
(
userI
d
);
perId
.
value
=
res
.
data
[
10
]
||
''
;
if
(
perId
.
value
)
{
getLevelRecords
();
...
...
personal/memberInfo.vue
View file @
4eb1ea9
...
...
@@ -137,9 +137,13 @@
perId
.
value
=
userInfo
.
perId
;
getMemberInfo
();
}
else
{
const
userId
=
userInfo
?.
id
;
if
(
!
userId
)
{
return
;
}
// 如果userInfo中没有perId,尝试通过getAssoPers获取
try
{
const
res
=
await
getAssoPers
(
userI
nfo
?.
id
||
''
);
const
res
=
await
getAssoPers
(
userI
d
);
perId
.
value
=
res
.
data
[
10
]
||
''
;
if
(
perId
.
value
)
{
getMemberInfo
();
...
...
personalVip/addVip.vue
View file @
4eb1ea9
...
...
@@ -52,12 +52,10 @@
v-model=
"baseFormData.phone"
placeholder=
"请输入联系方式"
/>
</uni-forms-item>
<uni-forms-item
label=
"会员编号"
name=
"perCode"
v-if=
"baseFormData.perCode"
>
<uni-easyinput
:styles=
"inputstyle"
:placeholderStyle=
"placeholderStyle"
v-model=
"baseFormData.perCode"
placeholder=
"请输入会员编号"
/>
{{
baseFormData
.
perCode
}}
</uni-forms-item>
<uni-forms-item
label=
"会员有效期"
name=
"validityDate"
v-if=
"baseFormData.validityDate"
>
<uni-easyinput
:styles=
"inputstyle"
:placeholderStyle=
"placeholderStyle"
v-model=
"baseFormData.validityDate"
placeholder=
"请输入会员有效期"
/>
{{
baseFormData
.
validityDate
?.
slice
(
0
,
10
)
}}
</uni-forms-item>
...
...
personalVip/order.vue
View file @
4eb1ea9
...
...
@@ -37,7 +37,13 @@
<view
class=
"data-header"
>
<text
class=
"member-label"
>
{{
getOrderLabel
(
item
)
}}
·
</text>
<text
class=
"value ml10"
>
{{
item
.
wfCode
||
'——'
}}
·
</text>
<text
class=
"pay-type"
>
{{
getPayTypeText
(
item
)
}}
</text>
<text
v-if=
"String(item.payType) === '3'"
:class=
"
{ 'pay-type-link': canClickTransferPay(item) }"
class="pay-type"
@click.stop="handleTransferPay(item)"
>对公转账
</text>
<text
v-else
class=
"pay-type"
>
民生付
</text>
</view>
<text
:class=
"
{
'status-wait': item.payStatus == 4,
...
...
@@ -238,11 +244,17 @@ const loadMore = () => {
pageNum
.
value
++
;
initData
();
}
;
const
getPayWay
=
(
item
)
=>
{
uni
.
redirectTo
({
const
canClickTransferPay
=
(
item
)
=>
{
return
String
(
item
?.
payType
)
===
'3'
&&
String
(
item
?.
payStatus
)
!==
'2'
}
const
handleTransferPay
=
(
item
)
=>
{
if
(
!
canClickTransferPay
(
item
))
return
uni
.
navigateTo
({
url
:
`/myCenter/transferPay?orderId=${item.id
}
`
}
);
}
)
}
// 切换标签
const
switchTab
=
(
index
)
=>
{
currentTab
.
value
=
index
;
...
...
@@ -888,6 +900,10 @@ const goToDetail = (item) => {
margin
-
left
:
10
rpx
;
}
.
pay
-
type
.
pay
-
type
-
link
{
color
:
#
1677
ff
;
}
.
status
-
tag
{
font
-
size
:
24
rpx
;
color
:
#
999
;
...
...
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