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
5d5e4447
authored
2026-04-14 11:17:45 +0800
by
张猛
Browse Files
Options
Browse Files
Tag
Download
Email Patches
Plain Diff
团体支付
1 parent
f6e7f935
Show whitespace changes
Inline
Side-by-side
Showing
9 changed files
with
364 additions
and
317 deletions
.idea/UniappTool.xml
.idea/inspectionProfiles/Project_Default.xml
common/pay.js
config.js
myCenter/auth.vue
myCenter/goPay.vue
myCenter/payOrder.vue
pages/index/home.vue
personalVip/payment.vue
.idea/UniappTool.xml
0 → 100644
View file @
5d5e444
<?xml version="1.0" encoding="UTF-8"?>
<project
version=
"4"
>
<component
name=
"cn.fjdmy.uniapp.UniappProjectDataService"
>
<option
name=
"basePath"
value=
"$PROJECT_DIR$"
/>
<option
name=
"generalBasePath"
value=
"$PROJECT_DIR$"
/>
<option
name=
"manifestPath"
value=
"$PROJECT_DIR$/manifest.json"
/>
<option
name=
"pagesPath"
value=
"$PROJECT_DIR$/pages.json"
/>
<option
name=
"scanNum"
value=
"1"
/>
<option
name=
"type"
value=
"store"
/>
<option
name=
"uniapp"
value=
"true"
/>
<option
name=
"uniappHx"
value=
"true"
/>
<option
name=
"vueVersion"
value=
"3"
/>
</component>
</project>
\ No newline at end of file
.idea/inspectionProfiles/Project_Default.xml
0 → 100644
View file @
5d5e444
<component
name=
"InspectionProjectProfileManager"
>
<profile
version=
"1.0"
>
<option
name=
"myName"
value=
"Project Default"
/>
<inspection_tool
class=
"Eslint"
enabled=
"true"
level=
"WARNING"
enabled_by_default=
"true"
/>
<inspection_tool
class=
"HtmlDeprecatedAttribute"
enabled=
"false"
level=
"WARNING"
enabled_by_default=
"false"
/>
<inspection_tool
class=
"JSEqualityComparisonWithCoercion"
enabled=
"false"
level=
"WARNING"
enabled_by_default=
"false"
/>
<inspection_tool
class=
"JSUnresolvedReference"
enabled=
"false"
level=
"WEAK WARNING"
enabled_by_default=
"false"
/>
</profile>
</component>
\ No newline at end of file
common/pay.js
View file @
5d5e444
...
...
@@ -85,9 +85,13 @@ async function minShengPay(orderId, encryptedData) {
uni
.
hideLoading
()
// 8. 调起微信支付
const
[
payErr
]
=
await
to
(
invokeWechatPayment
(
payParams
,
orderId
))
const
[
payErr
,
paySuccess
]
=
await
to
(
invokeWechatPayment
(
payParams
,
orderId
))
if
(
payErr
)
{
handlePaymentError
(
payErr
,
orderId
)
}
if
(
paySuccess
)
{
return
paySuccess
}
}
...
...
config.js
View file @
5d5e444
// dev
//
const baseUrl_api = 'http://192.168.1.137:8787'
const
baseUrl_api
=
'http://tk001.wxjylt.com/stage-api'
const
baseUrl_api
=
'http://192.168.1.137:8787'
//
const baseUrl_api = 'http://tk001.wxjylt.com/stage-api'
const
payUrl
=
'https://wxpay.cmbc.com.cn/mobilePlatform/appserver/lcbpPay.do'
// prod
...
...
myCenter/auth.vue
View file @
5d5e444
...
...
@@ -3,7 +3,8 @@
<view
v-if=
"showDirectly&&directUnderFlag==0"
>
<view
class=
"flexbox"
>
<view>
有效日期至
<text
class=
"text-primary"
>
{{
form
?.
validityDate
?.
slice
(
0
,
10
)
}}
</text>
有效日期至
<text
class=
"text-primary"
>
{{
form
?.
validityDate
?.
slice
(
0
,
10
)
}}
</text>
</view>
<view>
<text
v-if=
"activeStatus==0&&authenticationStatusa"
class=
"text-danger"
>
未激活
</text>
...
...
@@ -18,87 +19,92 @@
</view>
</view>
<view
class=
"flexbox"
style=
"justify-content: flex-end;padding: 0 30rpx 40rpx;"
>
<button
class=
"btn-red"
style=
"margin: 0 20rpx 0 0;"
size=
"mini"
v-if=
"activeStatus==0&&authenticationStatusa"
@
click=
"payTheFees"
>
激活
</button>
<button
v-if=
"activeStatus==0&&authenticationStatusa"
class=
"btn-red"
size=
"mini"
style=
"margin: 0 20rpx 0 0;"
@
click=
"payTheFees"
>
激活
</button>
<view
v-else
>
<button
class=
"btn-red"
style=
"margin: 0 20rpx 0 0;"
size=
"mini"
:disabled=
"auditStatus==1||auditStatus==2||form.isPoints==0"
@
click=
"showApplyDialog"
>
考点申请
</button>
<button
class=
"btn-red"
style=
"margin: 0 20rpx 0 0;"
size=
"mini"
:disabled=
"btn"
@
click=
"payTheFees"
>
去缴费
</button>
<button
class=
"btn-red-kx"
style=
"margin: 0 20rpx 0 0;"
size=
"mini"
v-if=
"form.deptType!=1"
@
click=
"auditEditFN"
>
审核详情
</button>
<button
:disabled=
"auditStatus==1||auditStatus==2||form.isPoints==0"
class=
"btn-red"
size=
"mini"
style=
"margin: 0 20rpx 0 0;"
@
click=
"showApplyDialog"
>
考点申请
</button>
<button
:disabled=
"btn"
class=
"btn-red"
size=
"mini"
style=
"margin: 0 20rpx 0 0;"
@
click=
"payTheFees"
>
去缴费
</button>
<button
v-if=
"form.deptType!=1"
class=
"btn-red-kx"
size=
"mini"
style=
"margin: 0 20rpx 0 0;"
@
click=
"auditEditFN"
>
审核详情
</button>
</view>
</view>
</view>
<view
class=
"mainbox"
>
<uni-list>
<uni-list-item
v-if=
"authenticationStatusa != 1&&authenticationStatusa != 0&&authenticationStatusa != 3"
title=
"所属协会"
:rightText=
"form.aname
"
>
:rightText=
"form.aname"
title=
"所属协会
"
>
</uni-list-item>
<uni-list-item
title=
"会员编号"
v-if=
"form.menCode"
:rightText=
"form.menCode"
/>
<uni-list-item
title=
"机构名称"
:rightText=
"form.name"
/>
<uni-list-item
v-if=
"form.menCode"
:rightText=
"form.menCode"
title=
"会员编号"
/>
<uni-list-item
:rightText=
"form.name"
title=
"机构名称"
/>
<uni-list-item
title=
"所属省份"
>
<template
v-slot:footer
>
<view
class=
"frrr"
>
<uni-data-picker
readonly
:clear-icon=
"false"
v-model=
"form.belongProvinceId
"
:localdata=
"options"
>
<uni-data-picker
v-model=
"form.belongProvinceId"
:clear-icon=
"false"
:localdata=
"options
"
readonly
>
</uni-data-picker>
</view>
</
template
>
</uni-list-item>
<uni-list-item
title=
"社会信用代码"
<uni-list-item
v-if=
"authenticationStatusa != 1&&authenticationStatusa != 0&&authenticationStatusa != 3&&newResult||form.associateId&&form.associateId>0||activeStatus==1"
:rightText=
"form.creditCode"
/>
<uni-list-item
v-if=
"form.certSiteContact"
title=
"联系人"
:rightText=
"form.certSiteContact"
/>
<uni-list-item
v-else
title=
"联系人"
:rightText=
"form.contact"
/>
<uni-list-item
v-if=
"form.certSiteTel"
title=
"联系方式"
:rightText=
"form.certSiteTel"
/>
<uni-list-item
v-else
title=
"联系方式"
:rightText=
"form.phone"
/>
:rightText=
"form.creditCode"
title=
"社会信用代码"
/>
<uni-list-item
v-if=
"form.certSiteContact"
:rightText=
"form.certSiteContact"
title=
"联系人"
/>
<uni-list-item
v-else
:rightText=
"form.contact"
title=
"联系人"
/>
<uni-list-item
v-if=
"form.certSiteTel"
:rightText=
"form.certSiteTel"
title=
"联系方式"
/>
<uni-list-item
v-else
:rightText=
"form.phone"
title=
"联系方式"
/>
<uni-list-item
title=
"认证地址"
>
<
template
v-slot:footer
>
<view
class=
"frrr"
>
<uni-data-picker
readonly
:clear-icon=
"false"
v-if=
"form.certRegionId
"
v-model=
"form.certRegionId"
:localdata=
"options"
>
<uni-data-picker
v-if=
"form.certRegionId"
v-model=
"form.certRegionId"
:clear-icon=
"false
"
:localdata=
"options"
readonly
>
</uni-data-picker>
<uni-data-picker
readonly
:clear-icon=
"false"
v-else-if=
"form.certCityId
"
v-model=
"form.certCityId"
:localdata=
"options"
>
<uni-data-picker
v-else-if=
"form.certCityId"
v-model=
"form.certCityId"
:clear-icon=
"false
"
:localdata=
"options"
readonly
>
</uni-data-picker>
<uni-data-picker
readonly
:clear-icon=
"false"
v-else-if=
"form.certProvinceId
"
v-model=
"form.certProvinceId"
:localdata=
"options"
>
<uni-data-picker
v-else-if=
"form.certProvinceId"
v-model=
"form.certProvinceId"
:clear-icon=
"false
"
:localdata=
"options"
readonly
>
</uni-data-picker>
</view>
</
template
>
</uni-list-item>
<uni-list-item
title=
"认证详细地址"
:rightText=
"form.certAddress"
/>
<uni-list-item
title=
"法人姓名"
:rightText=
"form.certLegal||'--'"
/>
<uni-list-item
:rightText=
"form.certAddress"
title=
"认证详细地址"
/>
<uni-list-item
:rightText=
"form.certLegal||'--'"
title=
"法人姓名"
/>
<uni-list-item
v-if=
"form.deptType==6"
title=
"是否为考点"
:rightText=
"form.isPoints==0?'是':'否'"
/>
<uni-list-item
title=
"法人身份证"
clickable
>
<uni-list-item
v-if=
"form.deptType==6"
:rightText=
"form.isPoints==0?'是':'否'"
title=
"是否为考点"
/>
<uni-list-item
clickable
title=
"法人身份证"
>
<
template
v-slot:footer
>
<view
v-if=
"form.legalIdcPhotoArr&&form.legalIdcPhotoArr?.length>0"
class=
"frrr"
>
<image
class=
"ylImage"
mode=
"aspectFit"
@
click=
"showImage(form.legalIdcPhotoArr,index)
"
v-for=
"(item,index) in form.legalIdcPhotoArr"
:key=
"item"
:src=
"item
"
>
<image
v-for=
"(item,index) in form.legalIdcPhotoArr"
:key=
"item"
:src=
"item
"
class=
"ylImage"
mode=
"aspectFit"
@
click=
"showImage(form.legalIdcPhotoArr,index)
"
>
</image>
</view>
</
template
>
</uni-list-item>
<uni-list-item
title=
"营业执照"
clickable
>
<uni-list-item
clickable
title=
"营业执照"
>
<
template
v-slot:footer
>
<view
class=
"frrr"
@
click=
"download(form.businessLicenseArr[0]?.url)
"
v-if=
"form.businessLicenseArr&&form.businessLicenseArr?.length>0
"
>
<text
class=
"text-primary"
>
{{
form
.
businessLicenseArr
[
0
]?.
name
}}
</text>
<view
v-if=
"form.businessLicenseArr&&form.businessLicenseArr?.length>0"
class=
"frrr
"
@
click=
"download(form.businessLicenseArr[0]?.url)
"
>
<text
class=
"text-primary"
>
{{
form
.
businessLicenseArr
[
0
]?.
name
}}
</text>
</view>
</
template
>
</uni-list-item>
<uni-list-item
title=
"机构照片"
clickable
>
<uni-list-item
clickable
title=
"机构照片"
>
<
template
v-slot:footer
>
<view
class=
"frrr"
>
<view
v-if=
"form.picturesArr&&form.picturesArr?.length>0"
class=
"photoBook"
@
click=
"showImage(form.picturesArr,0)"
>
<image
mode=
"aspectFit"
class=
"ylImage"
:src=
"form.picturesArr[0]
"
>
<image
:src=
"form.picturesArr[0]"
class=
"ylImage"
mode=
"aspectFit
"
>
</image>
<text>
共
{{
form
.
picturesArr
?.
length
}}
张
</text>
<text>
共
{{
form
.
picturesArr
?.
length
}}
张
</text>
</view>
</view>
</
template
>
...
...
@@ -106,8 +112,8 @@
</uni-list>
</view>
<!-- 弹窗添加触摸事件拦截 -->
<uni-popup
ref=
"applyPopup"
type=
"center"
@
touchmove
.
stop
.
prevent=
"() => {}
"
@
open=
"onPopupOpen"
@
close=
"onPopupClose
"
>
<uni-popup
ref=
"applyPopup"
type=
"center"
@
close=
"onPopupClose
"
@
open=
"onPopupOpen"
@
touchmove
.
stop
.
prevent=
"() => {}
"
>
<view
class=
"apply-dialog"
@
touchmove
.
stop
.
prevent=
"() => {}"
>
<view
class=
"dialog-title"
>
考点申请
</view>
<view
class=
"dialog-content"
>
...
...
@@ -124,58 +130,60 @@
</template>
<
script
setup
>
import
*
as
api
from
'@/common/api.js'
import
config
from
'@/config.js'
import
*
as
loginServer
from
'@/common/login.js'
;
import
*
as
api
from
'@/common/api.js'
import
config
from
'@/config.js'
import
*
as
loginServer
from
'@/common/login.js'
;
import
_
from
'underscore'
import
{
import
_
from
'underscore'
import
{
ref
,
onUnmounted
}
from
'vue'
import
{
}
from
'vue'
import
{
onLoad
,
onShow
}
from
'@dcloudio/uni-app'
const
app
=
getApp
()
const
form
=
ref
({
}
from
'@dcloudio/uni-app'
const
app
=
getApp
()
const
form
=
ref
({
type
:
1
})
const
userType
=
ref
()
const
activeStatus
=
ref
(
0
)
const
directUnderFlag
=
ref
(
0
)
const
showDirectly
=
ref
(
true
)
const
authenticationStatusa
=
ref
()
const
result
=
ref
(
false
)
const
newResult
=
ref
(
false
)
const
btn
=
ref
(
false
)
const
type
=
ref
(
true
)
const
flag
=
ref
(
false
)
const
pr
=
ref
({})
const
applicationForMembership1
=
ref
({})
const
options
=
ref
([])
const
applyPopup
=
ref
(
null
)
// 新增:控制弹窗显示状态(用于锁定滚动)
const
popupShow
=
ref
(
false
)
// 考点审核状态 0 未提交 1 审核中 2 审核成功 3 审核失败
const
auditStatus
=
ref
(
0
)
onShow
(()
=>
{
})
const
userType
=
ref
()
const
activeStatus
=
ref
(
0
)
const
directUnderFlag
=
ref
(
0
)
const
showDirectly
=
ref
(
true
)
const
authenticationStatusa
=
ref
()
const
result
=
ref
(
false
)
const
resultNoProvince
=
ref
(
false
)
const
newResult
=
ref
(
false
)
const
btn
=
ref
(
false
)
const
type
=
ref
(
true
)
const
flag
=
ref
(
false
)
const
pr
=
ref
({})
const
applicationForMembership1
=
ref
({})
const
options
=
ref
([])
const
applyPopup
=
ref
(
null
)
// 新增:控制弹窗显示状态(用于锁定滚动)
const
popupShow
=
ref
(
false
)
// 考点审核状态 0 未提交 1 审核中 2 审核成功 3 审核失败
const
auditStatus
=
ref
(
0
)
onShow
(()
=>
{
init
()
if
(
form
.
value
.
deptType
!=
1
)
{
// 修复:原代码deptType未定义,改为form.value.deptType
getMyStatusAPI
()
}
})
})
// 页面卸载时恢复滚动(防止异常锁死)
onUnmounted
(()
=>
{
// 页面卸载时恢复滚动(防止异常锁死)
onUnmounted
(()
=>
{
uni
.
setPageScrollEnabled
({
enabled
:
true
})
popupShow
.
value
=
false
})
})
function
init
()
{
function
init
()
{
api
.
regionsList
().
then
(
res
=>
{
options
.
value
=
res
.
data
})
...
...
@@ -184,6 +192,7 @@
userType
.
value
=
app
.
globalData
.
userType
newResult
.
value
=
res
.
data
.
newResult
result
.
value
=
res
.
data
.
result
resultNoProvince
.
value
=
res
.
data
.
resultNoProvince2
authenticationStatusa
.
value
=
res
.
data
.
authenticationStatus
showDirectly
.
value
=
!
res
.
data
.
memberInfo
.
associateId
activeStatus
.
value
=
res
.
data
.
memberInfo
.
activeStatus
...
...
@@ -194,7 +203,8 @@
}
else
if
(
authenticationStatusa
.
value
==
1
)
{
btn
.
value
=
true
}
else
{
btn
.
value
=
!
result
.
value
// btn.value = !result.value
btn
.
value
=
!
resultNoProvince
.
value
}
// 认证信息
if
(
authenticationStatusa
.
value
==
0
||
authenticationStatusa
.
value
==
3
)
{
...
...
@@ -270,9 +280,9 @@
console
.
log
(
form
.
value
.
picturesArr
)
}
})
}
}
async
function
getMyStatusAPI
()
{
async
function
getMyStatusAPI
()
{
const
{
data
}
=
await
api
.
getMyStatus
()
...
...
@@ -281,10 +291,10 @@
}
else
{
auditStatus
.
value
=
0
}
}
}
// 新增:弹窗打开时锁定滚动
function
onPopupOpen
()
{
// 新增:弹窗打开时锁定滚动
function
onPopupOpen
()
{
popupShow
.
value
=
true
// 1. 小程序API锁定页面滚动
uni
.
setPageScrollEnabled
({
...
...
@@ -296,10 +306,10 @@
enabled
:
false
})
},
100
)
}
}
// 新增:弹窗关闭时恢复滚动
function
onPopupClose
()
{
// 新增:弹窗关闭时恢复滚动
function
onPopupClose
()
{
popupShow
.
value
=
false
// 恢复页面滚动
uni
.
setPageScrollEnabled
({
...
...
@@ -310,51 +320,54 @@
enabled
:
true
})
},
100
)
}
}
function
showApplyDialog
()
{
function
showApplyDialog
()
{
applyPopup
.
value
.
open
()
}
}
// 关闭申请弹窗
function
closeApplyDialog
()
{
// 关闭申请弹窗
function
closeApplyDialog
()
{
applyPopup
.
value
.
close
()
}
}
// 跳转到考点申请页面
function
goToApplyPage
()
{
// 跳转到考点申请页面
function
goToApplyPage
()
{
closeApplyDialog
()
uni
.
navigateTo
({
url
:
`/myCenter/examPointApply?memId=
${
form
.
value
.
memId
}
`
})
}
}
function
auditEditFN
()
{
function
auditEditFN
()
{
uni
.
navigateTo
({
url
:
`/myCenter/reviewList`
})
}
}
function
showImage
(
arr
,
index
)
{
function
showImage
(
arr
,
index
)
{
uni
.
previewImage
({
urls
:
arr
,
current
:
index
,
success
:
function
(
res
)
{}
})
success
:
function
(
res
)
{
}
})
}
function
download
(
url
)
{
function
download
(
url
)
{
console
.
log
(
url
)
if
(
url
.
indexOf
(
'.png'
)
>
-
1
||
url
.
indexOf
(
'.jpg'
)
>
-
1
)
{
if
(
url
.
indexOf
(
'http'
)
>
-
1
)
{
uni
.
previewImage
({
urls
:
[
url
],
success
:
function
(
res
)
{}
success
:
function
(
res
)
{
}
})
}
else
{
uni
.
previewImage
({
urls
:
[
config
.
baseUrl_api
+
url
],
success
:
function
(
res
)
{}
success
:
function
(
res
)
{
}
})
}
}
else
{
...
...
@@ -364,16 +377,16 @@
goWebView
(
config
.
baseUrl_api
+
url
)
}
}
}
}
function
goWebView
(
url
)
{
function
goWebView
(
url
)
{
url
=
url
.
replace
(
"http://"
,
"https://"
)
uni
.
showLoading
({
title
:
'下载中'
});
uni
.
downloadFile
({
url
:
url
,
success
:
function
(
res
)
{
success
:
function
(
res
)
{
uni
.
hideLoading
();
var
filePath
=
res
.
tempFilePath
;
uni
.
showLoading
({
...
...
@@ -382,10 +395,10 @@
uni
.
openDocument
({
filePath
:
filePath
,
showMenu
:
true
,
success
:
function
(
res
)
{
success
:
function
(
res
)
{
uni
.
hideLoading
();
},
fail
:
function
(
err
)
{
fail
:
function
(
err
)
{
uni
.
hideLoading
();
uni
.
showToast
({
title
:
err
,
...
...
@@ -395,7 +408,7 @@
}
});
},
fail
:
function
(
error
)
{
fail
:
function
(
error
)
{
uni
.
hideLoading
();
uni
.
showToast
({
title
:
`下载失败`
,
...
...
@@ -404,9 +417,9 @@
});
}
});
}
}
function
payTheFees
()
{
function
payTheFees
()
{
if
(
!
form
.
value
.
name
)
{
uni
.
showToast
({
title
:
`请先完善单位信息`
,
...
...
@@ -417,12 +430,12 @@
uni
.
navigateTo
({
url
:
`/myCenter/perfect`
})
}
}
</
script
>
<
style
scoped
lang=
"scss"
>
//
新增:锁定滚动的核心样式
.lock-scroll
{
<
style
lang=
"scss"
scoped
>
//
新增:锁定滚动的核心样式
.lock-scroll
{
position
:
fixed
!important
;
top
:
0
;
left
:
0
;
...
...
@@ -430,13 +443,13 @@
bottom
:
0
;
overflow
:
hidden
!important
;
height
:
100vh
!important
;
}
}
.height1
{
.height1
{
height
:
100
rpx
;
}
}
.photobox
{
.photobox
{
position
:
relative
;
margin
:
30
rpx
auto
;
...
...
@@ -447,17 +460,17 @@
display
:
block
;
margin
:
auto
;
}
}
}
.ylImage
{
.ylImage
{
width
:
300
rpx
;
height
:
200
rpx
;
display
:
block
;
box-shadow
:
0
0
10
rpx
#ddd
;
border-radius
:
8
rpx
;
}
}
.photoBook
{
.photoBook
{
position
:
relative
;
border-radius
:
10
rpx
;
overflow
:
hidden
;
...
...
@@ -480,86 +493,86 @@
bottom
:
4
rpx
;
right
:
8
rpx
;
}
}
}
.frrr
{
.frrr
{
width
:
100%
;
text-align
:
right
;
text-align
:
right
;
display
:
flex
;
flex-wrap
:
wrap
;
justify-content
:
flex-end
;
}
}
:deep
(
.selected-list
)
{
:deep
(
.selected-list
)
{
font-size
:
32
rpx
;
padding
:
0
;
}
}
:deep
(
.input-value
)
{
:deep
(
.input-value
)
{
padding
:
0
;
}
}
:deep
(
.uni-list-item__extra-text
)
{
:deep
(
.uni-list-item__extra-text
)
{
font-size
:
32
rpx
;
color
:
#000
;
}
}
:deep
(
.uni-list-item__extra
)
{
:deep
(
.uni-list-item__extra
)
{
flex
:
1
1
auto
;
}
}
:deep
(
.uni-list-item__content
)
{
:deep
(
.uni-list-item__content
)
{
flex
:
0
0
auto
;
}
}
:deep
(
.uni-list-item__content-title
)
{
:deep
(
.uni-list-item__content-title
)
{
color
:
#999
;
}
}
.flexbox
{
.flexbox
{
padding
:
30
rpx
;
background-color
:
#fff
;
justify-content
:
space-between
;
}
}
.mainbox
{
.mainbox
{
margin
:
30
rpx
;
}
}
.apply-dialog
{
.apply-dialog
{
width
:
530
rpx
;
background
:
#fff
;
border-radius
:
16
rpx
;
padding
:
40
rpx
;
//
新增:禁止弹窗内部滚动
touch-action
:
none
;
}
}
.dialog-title
{
.dialog-title
{
font-size
:
32
rpx
;
font-weight
:
bold
;
text-align
:
center
;
margin-bottom
:
30
rpx
;
}
}
.dialog-content
{
.dialog-content
{
margin
:
40
rpx
;
}
}
.remind
{
.remind
{
color
:
#FF8124
;
font-size
:
26
rpx
;
margin-top
:
40
rpx
;
}
}
.dialog-buttons
{
.dialog-buttons
{
display
:
flex
;
justify-content
:
space-between
;
margin-top
:
40
rpx
;
}
}
.btn-cancel
{
.btn-cancel
{
width
:
225
rpx
;
height
:
80
rpx
;
line-height
:
80
rpx
;
...
...
@@ -569,9 +582,9 @@
color
:
#333
;
text-align
:
center
;
font-size
:
14px
;
}
}
.btn-confirm
{
.btn-confirm
{
width
:
225
rpx
;
height
:
80
rpx
;
line-height
:
80
rpx
;
...
...
@@ -580,10 +593,10 @@
font-size
:
14px
;
color
:
#fff
;
text-align
:
center
;
}
}
//
新增:给
uni-popup
蒙版添加禁止滚动样式
:deep
(
.uni-popup__mask
)
{
//
新增:给
uni-popup
蒙版添加禁止滚动样式
:deep
(
.uni-popup__mask
)
{
touch-action
:
none
!important
;
}
}
</
style
>
...
...
myCenter/goPay.vue
View file @
5d5e444
...
...
@@ -5,13 +5,13 @@
<view
class=
"yearRow"
>
<view
class=
"label"
>
缴费年限
</view>
<view
class=
"control"
>
<image
class=
"icon"
@
click=
"minusYear"
src=
"/static/dd_02.png"
mode=
"widthFix
"
v-if=
"form.renewYear > 1
"
></image>
<image
class=
"icon"
src=
"/static/dd_02_g.png"
mode=
"widthFix"
v-else
></image>
<image
v-if=
"form.renewYear > 1"
class=
"icon"
mode=
"widthFix"
src=
"/static/dd_02.png
"
@
click=
"minusYear
"
></image>
<image
v-else
class=
"icon"
mode=
"widthFix"
src=
"/static/dd_02_g.png"
></image>
<text
class=
"num"
>
{{
form
.
renewYear
}}
年
</text>
<image
class=
"icon"
src=
"/static/btn_03.png"
mode=
"widthFix"
@
click=
"plusYear
"
v-if=
"form.renewYear
< 5
"
></image>
<image
class=
"icon"
src=
"/static/btn_03_g.png"
mode=
"widthFix"
v-else
></image>
<image
v-if=
"form.renewYear
< 5
"
class=
"icon"
mode=
"widthFix"
src=
"/static/btn_03.png
"
@
click=
"plusYear
"
></image>
<image
v-else
class=
"icon"
mode=
"widthFix"
src=
"/static/btn_03_g.png"
></image>
</view>
</view>
</view>
...
...
@@ -23,18 +23,19 @@
<text
class=
"value red"
>
{{
(
form
.
renewYear
*
memberFee
).
toFixed
(
2
)
}}
元
</text>
</view>
<view
class=
"hintRow"
v-if=
"preferentialPolicy
"
>
<view
v-if=
"preferentialPolicy"
class=
"hintRow
"
>
<text
class=
"hintText"
>
温馨提示:根据中国跆协
{{
preferentialData
.
name
||
'优惠'
}}
政策减免一年费用,每个单位在政策有效期内只享受一次
</text>
class=
"hintText"
>
温馨提示:根据中国跆协
{{
preferentialData
.
name
||
'优惠'
}}
政策减免一年费用,每个单位在政策有效期内只享受一次
</text>
</view>
</view>
<view
class=
"payRow "
>
<radio-group
@
change=
"onPayTypeChange"
>
<label
class=
"radioItem"
>
<radio
value=
"1"
:checked=
"payType === '1'"
class=
"custom-radio"
/>
<radio
:checked=
"payType === '1'"
class=
"custom-radio"
value=
"1"
/>
<view
class=
"payInfo"
>
<image
class=
"icon"
src=
"/static/min.png"
mode=
"widthFix
"
></image>
<image
class=
"icon"
mode=
"widthFix"
src=
"/static/min.png
"
></image>
<text>
民生付
</text>
</view>
</label>
...
...
@@ -53,62 +54,63 @@
<text
class=
"label"
>
减免费用
</text>
<text
class=
"value red"
>
-
{{
memberFee
.
toFixed
(
2
)
}}
元
</text>
</view>
<button
class=
"payBtn"
@
click=
"handelPay"
:loading=
"isPaying
"
>
立即支付 ¥
{{
memberTotalFee
}}
</button>
<button
:loading=
"isPaying"
class=
"payBtn"
@
click=
"handelPay
"
>
立即支付 ¥
{{
memberTotalFee
}}
</button>
</view>
</view>
</
template
>
<
script
setup
>
import
{
import
{
ref
,
computed
}
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'
import
{
minShengPay
}
from
'@/common/pay.js'
const
form
=
ref
({
const
form
=
ref
({
renewYear
:
1
})
const
memberFee
=
ref
(
0
)
const
preferentialPolicy
=
ref
(
false
)
const
preferentialData
=
ref
({
})
const
memberFee
=
ref
(
0
)
const
preferentialPolicy
=
ref
(
false
)
const
preferentialData
=
ref
({
name
:
'优惠'
})
const
payType
=
ref
(
'1'
)
const
isPaying
=
ref
(
false
)
})
const
payType
=
ref
(
'1'
)
const
isPaying
=
ref
(
false
)
const
memberTotalFee
=
computed
(()
=>
{
const
memberTotalFee
=
computed
(()
=>
{
if
(
preferentialPolicy
.
value
)
{
return
(
memberFee
.
value
*
form
.
value
.
renewYear
-
memberFee
.
value
*
1
).
toFixed
(
2
)
}
else
{
return
(
memberFee
.
value
*
form
.
value
.
renewYear
).
toFixed
(
2
)
}
})
})
// 年限减
const
minusYear
=
()
=>
{
// 年限减
const
minusYear
=
()
=>
{
if
(
form
.
value
.
renewYear
>
1
)
{
form
.
value
.
renewYear
--
}
}
// 年限加
const
plusYear
=
()
=>
{
}
// 年限加
const
plusYear
=
()
=>
{
if
(
form
.
value
.
renewYear
<
6
)
{
form
.
value
.
renewYear
++
}
}
}
// 支付方式切换
const
onPayTypeChange
=
(
e
)
=>
{
// 支付方式切换
const
onPayTypeChange
=
(
e
)
=>
{
payType
.
value
=
e
.
detail
.
value
}
}
// 支付操作
const
handelPay
=
async
()
=>
{
// 支付操作
const
handelPay
=
async
()
=>
{
if
(
memberTotalFee
.
value
<
0
)
{
uni
.
showToast
({
title
:
'支付金额异常'
,
...
...
@@ -146,28 +148,33 @@
})
return
}
if
(
data
.
payResult
.
encryptedData
)
{
const
res
=
minShengPay
(
data
.
orderId
,
data
.
payResult
.
encryptedData
)
console
.
log
(
res
)
}
// 需要支付回调
if
(
data
.
orderId
)
{
await
to
(
api
.
callBack2
(
data
.
orderId
))
uni
.
hideLoading
()
isPaying
.
value
=
false
// if (data.orderId) {
// await to(api.callBack2(data.orderId))
// uni.hideLoading()
// isPaying.value = false
//
// uni.redirectTo({
// url: `/myCenter/sucPay?orderId=${data.orderId}`
// })
// }
uni
.
redirectTo
({
url
:
`/myCenter/sucPay?orderId=
${
data
.
orderId
}
`
})
}
}
onLoad
((
option
)
=>
{
}
onLoad
((
option
)
=>
{
// 接收年限
form
.
value
.
renewYear
=
Number
(
option
.
renewYear
||
1
)
// 初始化获取费用和优惠
init
()
})
})
// 初始化接口
async
function
init
()
{
// 初始化接口
async
function
init
()
{
uni
.
showLoading
({
title
:
'加载中...'
})
...
...
@@ -180,78 +187,78 @@
if
(
err
)
{
console
.
error
(
'初始化失败:'
,
err
)
}
}
}
// 获取会员单价
async
function
getMyMemberCertUnitFeeApi
()
{
// 获取会员单价
async
function
getMyMemberCertUnitFeeApi
()
{
const
[
err
,
res
]
=
await
to
(
api
.
getMyMemberCertUnitFee
())
if
(
!
err
&&
res
.
data
)
{
memberFee
.
value
=
Number
(
res
.
data
||
1500
)
}
}
}
// 是否可用优惠
async
function
canUseDiscountApi
()
{
// 是否可用优惠
async
function
canUseDiscountApi
()
{
const
[
err
,
res
]
=
await
to
(
api
.
canUseDiscount
())
if
(
!
err
&&
res
.
data
!==
undefined
)
{
preferentialPolicy
.
value
=
res
.
data
}
}
}
// 获取优惠政策详情
async
function
getZtxDiscountPolicyApi
()
{
// 获取优惠政策详情
async
function
getZtxDiscountPolicyApi
()
{
const
[
err
,
res
]
=
await
to
(
api
.
getZtxDiscountPolicy
())
if
(
!
err
&&
res
.
data
)
{
preferentialData
.
value
=
res
.
data
}
}
}
</
script
>
<
style
scoped
>
/* 整体容器 */
.container
{
/* 整体容器 */
.container
{
min-height
:
100vh
;
background-color
:
#f7f7f7
;
}
}
/* 内容区域 */
.content
{
/* 内容区域 */
.content
{
padding
:
20
rpx
20
rpx
120
rpx
;
}
}
/* 卡片 */
.card
{
/* 卡片 */
.card
{
background
:
#fff
;
border-radius
:
8
rpx
;
padding
:
25
rpx
20
rpx
;
margin-bottom
:
20
rpx
;
}
}
/* 缴费年限行 */
.yearRow
{
/* 缴费年限行 */
.yearRow
{
display
:
flex
;
align-items
:
center
;
justify-content
:
space-between
;
margin-bottom
:
20
rpx
;
}
}
.yearRow
.label
{
.yearRow
.label
{
font-size
:
28
rpx
;
color
:
#333
;
}
}
.yearRow
.control
{
.yearRow
.control
{
display
:
flex
;
align-items
:
center
;
}
}
.control
image
{
.control
image
{
width
:
50
rpx
;
height
:
50
rpx
;
}
}
/* 加减按钮样式 */
.num-btn
{
/* 加减按钮样式 */
.num-btn
{
width
:
40
rpx
;
height
:
40
rpx
;
border-radius
:
50%
;
...
...
@@ -260,59 +267,59 @@
justify-content
:
center
;
background-color
:
#fff
;
border
:
1
rpx
solid
#C4121B
;
}
}
.num-btn.disabled
{
.num-btn.disabled
{
border-color
:
#ccc
;
}
}
.num-btn.disabled
.btn-icon
{
.num-btn.disabled
.btn-icon
{
color
:
#ccc
;
}
}
.btn-icon
{
.btn-icon
{
font-size
:
24
rpx
;
color
:
#C4121B
;
font-weight
:
bold
;
}
}
.yearRow
.num
{
.yearRow
.num
{
font-size
:
28
rpx
;
color
:
#333
;
min-width
:
80
rpx
;
text-align
:
center
;
margin
:
0
10
rpx
;
}
}
/* 通用行 */
.row
{
/* 通用行 */
.row
{
display
:
flex
;
justify-content
:
space-between
;
align-items
:
center
;
}
}
.row
.label
{
.row
.label
{
font-size
:
28
rpx
;
color
:
#333
;
}
}
.row
.value
{
.row
.value
{
font-size
:
30
rpx
;
color
:
#C4121B
;
font-weight
:
500
;
}
}
/* 优惠提示 */
.hintRow
{
/* 优惠提示 */
.hintRow
{
display
:
flex
;
align-items
:
flex-start
;
font-size
:
24
rpx
;
line-height
:
1.4
;
}
}
.hint-icon
{
.hint-icon
{
width
:
24
rpx
;
height
:
24
rpx
;
border-radius
:
50%
;
...
...
@@ -323,25 +330,25 @@
margin-right
:
10
rpx
;
flex-shrink
:
0
;
margin-top
:
2
rpx
;
}
}
.icon
{
.icon
{
width
:
30px
;
}
}
.icon-check
{
.icon-check
{
color
:
#fff
;
font-size
:
16
rpx
;
}
}
.hintRow
.hintText
{
.hintRow
.hintText
{
color
:
#FF8124
;
flex
:
1
;
margin-top
:
10
rpx
;
}
}
/* 减免费用 */
.deductRow
{
/* 减免费用 */
.deductRow
{
background
:
#fff
;
padding
:
20
rpx
20
rpx
;
display
:
flex
;
...
...
@@ -349,64 +356,64 @@
align-items
:
center
;
margin-bottom
:
10
rpx
;
border-radius
:
8
rpx
;
}
}
.deductRow
.label
{
.deductRow
.label
{
font-size
:
28
rpx
;
color
:
#333
;
}
}
.deductRow
.value
{
.deductRow
.value
{
font-size
:
30
rpx
;
color
:
#C4121B
;
}
}
/* 支付方式行 */
.payRow
{
/* 支付方式行 */
.payRow
{
background
:
#fff
;
border-radius
:
8
rpx
;
padding
:
20
rpx
20
rpx
;
margin-bottom
:
20
rpx
;
}
}
.radioItem
{
.radioItem
{
display
:
flex
;
align-items
:
center
;
}
}
/* 自定义红色单选框 */
::v-deep
.custom-radio
.wx-radio-input
{
/* 自定义红色单选框 */
::v-deep
.custom-radio
.wx-radio-input
{
width
:
30
rpx
;
height
:
30
rpx
;
border-radius
:
50%
;
border
:
2
rpx
solid
#ccc
;
}
}
::v-deep
.custom-radio
.wx-radio-input.wx-radio-input-checked
{
::v-deep
.custom-radio
.wx-radio-input.wx-radio-input-checked
{
border-color
:
#C4121B
!important
;
background
:
#C4121B
!important
;
}
}
.payInfo
{
.payInfo
{
display
:
flex
;
align-items
:
center
;
margin-left
:
15
rpx
;
}
}
.payInfo
.icon
{
.payInfo
.icon
{
width
:
40
rpx
;
height
:
40
rpx
;
margin-right
:
10
rpx
;
}
}
.payInfo
text
{
.payInfo
text
{
font-size
:
28
rpx
;
color
:
#333
;
}
}
/* 总费用行(突出显示) */
.totalRow
{
/* 总费用行(突出显示) */
.totalRow
{
background
:
#fff
;
border-radius
:
8
rpx
;
padding
:
20
rpx
20
rpx
;
...
...
@@ -414,21 +421,21 @@
justify-content
:
space-between
;
align-items
:
center
;
margin-top
:
10
rpx
;
}
}
.totalRow
.label
{
.totalRow
.label
{
font-size
:
28
rpx
;
color
:
#333
;
}
}
.redBig
{
.redBig
{
font-size
:
32
rpx
;
color
:
#C4121B
;
font-weight
:
bold
;
}
}
/* 底部按钮 */
.bottomBtn
{
/* 底部按钮 */
.bottomBtn
{
position
:
fixed
;
bottom
:
0
;
left
:
0
;
...
...
@@ -436,9 +443,9 @@
padding
:
20
rpx
20
rpx
;
background
:
#fff
;
border-top
:
1
rpx
solid
#eee
;
}
}
.payBtn
{
.payBtn
{
width
:
100%
;
height
:
88
rpx
;
line-height
:
88
rpx
;
...
...
@@ -448,15 +455,15 @@
font-size
:
32
rpx
;
text-align
:
center
;
border
:
none
;
}
}
.payBtn
[
disabled
]
{
.payBtn
[
disabled
]
{
background-color
:
#ccc
;
color
:
#999
;
}
}
/* 通用红色文字 */
.red
{
/* 通用红色文字 */
.red
{
color
:
#C4121B
;
}
}
</
style
>
...
...
myCenter/payOrder.vue
View file @
5d5e444
...
...
@@ -109,7 +109,7 @@
const
res
=
await
api
.
goPay
(
rangeId
.
value
)
if
(
res
.
data
?.
orderId
)
{
api
.
pcallBack2
(
res
.
data
.
orderId
)
await
api
.
pcallBack2
(
res
.
data
.
orderId
)
uni
.
redirectTo
({
url
:
`/myCenter/sucPay?rangeId=
${
rangeId
.
value
}
from=payOrder`
})
...
...
pages/index/home.vue
View file @
5d5e444
...
...
@@ -330,6 +330,7 @@
};
}
})
onLoad
(
option
=>
{
let
userName
=
uni
.
getStorageSync
(
'userName'
)
if
(
!
userName
)
{
...
...
@@ -443,8 +444,7 @@
// deptInfo.value = app.globalData.dept || {}
// app.globalData.deptInfo = res.dept || {}
console
.
log
(
43
,
res
)
if
(
userType
.
value
!=
'1'
&&
app
.
globalData
.
authenticationStatus
!=
'2'
&&
app
.
globalData
.
authenticationStatus
!=
'4'
)
{
if
(
userType
.
value
!=
'1'
&&
app
.
globalData
.
authenticationStatus
!=
'2'
&&
app
.
globalData
.
authenticationStatus
!=
'4'
)
{
// 注册引导
uni
.
navigateTo
({
url
:
'/pages/index/perfect'
...
...
@@ -524,7 +524,7 @@
});
}
</
script
>
<
style
scope
lang=
"scss"
>
<
style
scope
d
lang=
"scss"
>
:deep
(
.uni-section
)
{
background-color
:
transparent
!important
;
}
...
...
personalVip/payment.vue
View file @
5d5e444
...
...
@@ -84,7 +84,7 @@
<button
class=
"action-btn submit-btn"
@
click
.
stop=
"commitFN(item)"
:disabled=
"item.auditStatus != 0"
>
:disabled=
"item.auditStatus != 0
&&item.auditStatus != 9
"
>
提交审核
</button>
</view>
...
...
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