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
bbc048f7
authored
2026-04-17 15:05:28 +0800
by
lttnew
Browse Files
Options
Browse Files
Tag
Download
Plain Diff
Merge branch 'master' of
https://code.itechtop.cn/yangyang/ztx_wx_gzt
2 parents
322dceef
b9272f18
Hide whitespace changes
Inline
Side-by-side
Showing
7 changed files
with
497 additions
and
464 deletions
common/api.js
config.js
level/ztx/cert.vue
pages/index/home.vue
personal/order.vue
personal/sucPay.vue
personalVip/changeLevelAudit.vue
common/api.js
View file @
bbc048f
...
...
@@ -930,13 +930,14 @@ export function auditJi(data) {
if
(
data
.
reason
&&
data
.
reason
.
trim
()
!==
''
)
{
url
+=
`&reason=
${
data
.
reason
}
`
;
}
return
request
({
url
:
url
,
method
:
'post'
,
params
:
data
})
}
export
function
auditDuanExam
(
data
)
{
// 基础 URL
let
url
=
`/exam/info/auditDuanExam/
${
data
.
ids
}
?flag=
${
data
.
flag
}
&ids=
${
data
.
ids
}
`
;
...
...
@@ -945,13 +946,14 @@ export function auditDuanExam(data) {
if
(
data
.
reason
&&
data
.
reason
.
trim
()
!==
''
)
{
url
+=
`&reason=
${
data
.
reason
}
`
;
}
return
request
({
url
:
url
,
method
:
'post'
,
params
:
data
})
}
export
function
auditDuanScore
(
data
)
{
// 基础 URL
let
url
=
`/exam/info/auditDuanScore/
${
data
.
ids
}
?flag=
${
data
.
flag
}
&ids=
${
data
.
ids
}
`
;
...
...
@@ -960,7 +962,7 @@ export function auditDuanScore(data) {
if
(
data
.
reason
&&
data
.
reason
.
trim
()
!==
''
)
{
url
+=
`&reason=
${
data
.
reason
}
`
;
}
return
request
({
url
:
url
,
method
:
'post'
,
...
...
@@ -1367,6 +1369,13 @@ export function changeLevelAudit(data) {
})
}
export
function
changeLevelShenAudit
(
data
)
{
return
request
({
url
:
`/person/levelModRange/shenAudit/
${
data
.
ids
}
?flag=
${
data
.
flag
}
&reason=
${
data
.
reason
}
`
,
method
:
'post'
})
}
export
function
changeLevelWithDraw
(
data
)
{
return
request
({
url
:
`/person/levelModRange/withDraw/
${
data
}
`
,
...
...
config.js
View file @
bbc048f
// 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
loginImage_api
=
'http://tk001.wxjylt.com/stage-api'
const
payUrl
=
'https://wxpay.cmbc.com.cn/mobilePlatform/appserver/lcbpPay.do'
...
...
level/ztx/cert.vue
View file @
bbc048f
...
...
@@ -94,11 +94,11 @@ onLoad((option) => {
})
}
})
onShow
(()
=>
{
if
(
app
.
globalData
.
isLogin
)
{
init
()
}
else
{
app
.
firstLoadCallback
=
()
=>
{
init
()
};
...
...
pages/index/home.vue
View file @
bbc048f
...
...
@@ -58,6 +58,10 @@
<image
:src=
"config.baseUrl_api+'/fs/static/icon/3.png'"
/>
级位考试申请
</view>
<view
@
click=
"goPath('/personalVip/changeLevel')"
>
<image
:src=
"config.baseUrl_api+'/fs/static/icon/26.png'"
/>
级位变更
</view>
</view>
<view
v-if=
"userType=='3'"
class=
"girdBox"
>
<view
@
click=
"goPath('/group/apply/applyList')"
>
...
...
@@ -133,10 +137,16 @@
<!--
<view
@
click=
"goPath('/pages/exam/payment?type=1')"
>
<image
:src=
"config.baseUrl_api+'/fs/static/icon/10.png'"
/>
考试缴费单
</view>
-->
<view
@
click=
"goPath('/personalVip/changeLevel')"
>
<!--
<view
@
click=
"goPath('/personalVip/changeLevel')"
>
-->
<!--
<image
:src=
"config.baseUrl_api+'/fs/static/icon/26.png'"
/>
-->
<!-- 级位变更-->
<!--
</view>
-->
<view
@
click=
"goPath('/personalVip/changeLevelAudit')"
>
<image
:src=
"config.baseUrl_api+'/fs/static/icon/26.png'"
/>
级位变更
变更审核
</view>
<view
@
click=
"goPath('/level/auditRecord2')"
>
<image
:src=
"config.baseUrl_api+'/fs/static/icon/17.png'"
/>
审核记录
...
...
personal/order.vue
View file @
bbc048f
...
...
@@ -20,9 +20,9 @@
<view
class=
"card-header"
>
<view
class=
"date"
>
<!--
<image
v-if=
"item.payTime"
:src=
"config.baseUrl_api + '/fs/static/calendar@2x.png'"
mode=
"widthFix"
--
>
<!-- style="width:30rpx;height:30rpx;"/> -->
<!-- style="width:30rpx;height:30rpx;"/> -->
<!--
<text
v-if=
"item.payTime"
class=
"date-text"
>
{{
item
.
payTime
}}
</text>
-->
<text
class=
"value text-primary"
>
{{
item
.
wfCode
||
'——'
}}
</text>
<text
class=
"value text-primary"
>
{{
item
.
wfCode
||
'——'
}}
</text>
</view>
<view
:class=
"
{
...
...
@@ -124,7 +124,7 @@
<
script
setup
>
import
{
ref
,
reactive
,
onMounted
,
computed
}
from
'vue'
;
import
{
onReachBottom
}
from
'@dcloudio/uni-app'
import
{
useUserStore
}
from
"
..
/store/modules/user"
;
import
{
useUserStore
}
from
"
@
/store/modules/user"
;
import
*
as
api
from
'@/common/api.js'
import
config
from
'@/config.js'
...
...
@@ -242,7 +242,7 @@ const confirmDel = async () => {
uni
.
showToast
({
title
:
'删除成功'
,
icon
:
'success'
});
pageNum
.
value
=
1
;
list
.
value
=
[];
initData
();
await
initData
();
closeDelPopup
();
}
catch
(
e
)
{
uni
.
showToast
({
title
:
'删除失败'
,
icon
:
'error'
});
...
...
@@ -288,7 +288,7 @@ const confirmCancel = async () => {
uni
.
showToast
({
title
:
'取消成功'
,
icon
:
'success'
});
pageNum
.
value
=
1
;
list
.
value
=
[];
initData
();
await
initData
();
closeCancelPopup
();
}
catch
(
e
)
{
uni
.
showToast
({
title
:
'取消失败'
,
icon
:
'error'
});
...
...
@@ -309,7 +309,7 @@ const closeCancelPopup = () => {
height
:
100vh
;
display
:
flex
;
flex-direction
:
column
;
&.no-scroll
{
overflow
:
hidden
;
height
:
100vh
;
...
...
@@ -326,7 +326,7 @@ const closeCancelPopup = () => {
//
订单列表
.order-list
{
padding
:
20
rpx
;
.order-card
{
background
:
#fff
;
margin-bottom
:
20
rpx
;
...
...
@@ -342,35 +342,35 @@ const closeCancelPopup = () => {
justify-content
:
space-between
;
align-items
:
center
;
padding-bottom
:
20
rpx
;
.date
{
display
:
flex
;
align-items
:
center
;
gap
:
8
rpx
;
font-size
:
26
rpx
;
.date-text
{
color
:
#666
;
}
}
.status-tag
{
font-size
:
22
rpx
;
padding
:
6
rpx
16
rpx
;
border-radius
:
20
rpx
;
&.success
{
background
:
#e6f7ef
;
color
:
#52c41a
;
border
:
1
rpx
solid
rgba
(
82
,
196
,
26
,
0.3
);
}
&
.danger
{
background
:
#fff1f0
;
color
:
#ff4d4f
;
border
:
1
rpx
solid
rgba
(
232
,
52
,
29
,
0.3
);
}
&
.pending
{
background
:
#fff7e6
;
color
:
#faad14
;
...
...
@@ -385,13 +385,13 @@ const closeCancelPopup = () => {
align-items
:
center
;
margin-bottom
:
20
rpx
;
font-size
:
26
rpx
;
.label
{
color
:
#999
;
flex-shrink
:
0
;
width
:
140
rpx
;
}
.value
{
color
:
#333
;
word-break
:
break-all
;
...
...
@@ -417,12 +417,12 @@ const closeCancelPopup = () => {
padding
:
16
rpx
20
rpx
;
border-radius
:
8
rpx
;
font-size
:
26
rpx
;
.label
{
color
:
#999
;
text-align
:
center
;
}
.value
{
color
:
#333
;
font-weight
:
500
;
...
...
@@ -439,11 +439,11 @@ const closeCancelPopup = () => {
margin
:
0
0
16
rpx
;
padding
:
8
rpx
0
;
font-size
:
26
rpx
;
.label
{
color
:
#333
;
}
.amount
{
color
:
#EB6100
;
font-weight
:
600
;
...
...
@@ -458,7 +458,7 @@ const closeCancelPopup = () => {
align-items
:
center
;
gap
:
16
rpx
;
width
:
100%
;
.btn
{
padding
:
12
rpx
32
rpx
;
border-radius
:
40
rpx
;
...
...
@@ -470,35 +470,35 @@ const closeCancelPopup = () => {
border
:
none
;
width
:
80px
;
background
:
transparent
;
&::after
{
border
:
none
;
}
&
.btn-delete
{
background
:
#fff
;
color
:
#e4393c
;
border
:
1
rpx
solid
#e4393c
;
}
&
.btn-invoice
{
background
:
#fff
;
color
:
#e4393c
;
border
:
1
rpx
solid
#e4393c
;
}
&
.btn-cancel
{
background
:
#fff
;
color
:
#666
;
border
:
1
rpx
solid
#ccc
;
}
&
.btn-pay
{
background
:
linear-gradient
(
90deg
,
#FF755A
,
#F51722
);
color
:
#fff
;
border
:
none
;
}
&
:disabled
{
opacity
:
0.6
;
pointer-events
:
none
;
...
...
@@ -571,7 +571,7 @@ const closeCancelPopup = () => {
border
:
none
;
margin
:
0
;
padding
:
0
;
&::after
{
border
:
none
;
}
...
...
@@ -588,7 +588,7 @@ const closeCancelPopup = () => {
border
:
none
;
margin
:
0
;
padding
:
0
;
&::after
{
border
:
none
;
}
...
...
personal/sucPay.vue
View file @
bbc048f
<
template
>
<view
class=
"success-container"
>
<!-- 成功图标(渐变圆形+动效) -->
<view
class=
"success-icon"
>
<view
class=
"icon-circle"
>
<text
class=
"check-icon"
>
✓
</text>
</view>
</view>
<!-- 支付成功标题(动画) -->
<view
class=
"success-title"
>
支付成功
</view>
<view
class=
"success-subtitle"
>
支付成功,请等待审核
</view>
<!-- 订单信息卡片(带阴影) -->
<view
class=
"info-card"
>
<view
class=
"info-item"
>
<text
class=
"label"
>
交易流水号
</text>
<text
class=
"value"
>
{{
orderInfo
.
tradeNo
||
'--'
}}
</text>
</view>
<view
class=
"info-item"
>
<text
class=
"label"
>
商户名称
</text>
<text
class=
"value"
>
{{
orderInfo
.
merchantName
||
'中国跆拳道协会'
}}
</text>
</view>
<view
class=
"info-item"
>
<text
class=
"label"
>
订单金额
</text>
<text
class=
"value amount"
>
{{
orderInfo
.
price
?
orderInfo
.
price
+
'元'
:
'--'
}}
</text>
</view>
</view>
<!-- 确定按钮(渐变+动效) -->
<view
class=
"confirm-btn-area"
>
<button
class=
"confirm-btn"
@
click=
"goBack"
>
确定
</button>
</view>
</view>
<view
class=
"success-container"
>
<!-- 成功图标(渐变圆形+动效) -->
<view
class=
"success-icon"
>
<view
class=
"icon-circle"
>
<text
class=
"check-icon"
>
✓
</text>
</view>
</view>
<!-- 支付成功标题(动画) -->
<view
class=
"success-title"
>
支付成功
</view>
<view
class=
"success-subtitle"
>
支付成功,请等待审核
</view>
<!-- 订单信息卡片(带阴影) -->
<view
class=
"info-card"
>
<view
class=
"info-item"
>
<text
class=
"label"
>
交易流水号
</text>
<text
class=
"value"
>
{{
orderInfo
.
tradeNo
||
'--'
}}
</text>
</view>
<view
class=
"info-item"
>
<text
class=
"label"
>
商户名称
</text>
<text
class=
"value"
>
{{
orderInfo
.
merchantName
||
'中国跆拳道协会'
}}
</text>
</view>
<view
class=
"info-item"
>
<text
class=
"label"
>
订单金额
</text>
<text
class=
"value amount"
>
{{
orderInfo
.
price
?
orderInfo
.
price
+
'元'
:
'--'
}}
</text>
</view>
</view>
<!-- 确定按钮(渐变+动效) -->
<view
class=
"confirm-btn-area"
>
<button
class=
"confirm-btn"
@
click=
"goBack"
>
确定
</button>
</view>
</view>
</
template
>
<
script
setup
>
import
{
ref
}
from
'vue'
import
{
onLoad
}
from
'@dcloudio/uni-app'
import
to
from
'await-to-js'
import
*
as
api
from
'@/common/api.js'
const
orderInfo
=
ref
({
id
:
''
,
tradeNo
:
''
,
merchantName
:
'中国跆拳道协会'
,
price
:
''
})
const
goBack
=
()
=>
{
uni
.
reLaunch
({
url
:
'/login/login'
})
}
onLoad
(
async
(
option
)
=>
{
if
(
option
.
orderId
)
{
const
[
err
,
res
]
=
await
to
(
api
.
getOrderInfo
(
option
.
orderId
))
if
(
!
err
&&
res
.
data
)
{
orderInfo
.
value
=
res
.
data
}
else
{
orderInfo
.
value
.
id
=
option
.
orderId
}
}
})
import
{
ref
}
from
'vue'
import
{
onLoad
}
from
'@dcloudio/uni-app'
import
to
from
'await-to-js'
import
*
as
api
from
'@/common/api.js'
const
orderInfo
=
ref
({
id
:
''
,
tradeNo
:
''
,
merchantName
:
'中国跆拳道协会'
,
price
:
''
})
const
goBack
=
()
=>
{
uni
.
redirectTo
({
// url: '/login/login'
url
:
'/personal/order'
})
}
onLoad
(
async
(
option
)
=>
{
if
(
option
.
orderId
)
{
const
[
err
,
res
]
=
await
to
(
api
.
getOrderInfo
(
option
.
orderId
))
if
(
!
err
&&
res
.
data
)
{
orderInfo
.
value
=
res
.
data
}
else
{
orderInfo
.
value
.
id
=
option
.
orderId
}
}
})
</
script
>
<
style
scoped
>
/* 全局容器 */
.success-container
{
display
:
flex
;
flex-direction
:
column
;
align-items
:
center
;
padding
:
100
rpx
40
rpx
60
rpx
;
min-height
:
100vh
;
background-color
:
#f8f9fa
;
box-sizing
:
border-box
;
}
/* 成功图标容器 */
.success-icon
{
margin-bottom
:
40
rpx
;
animation
:
fadeIn
0.6s
ease-out
;
}
/* 渐变圆形背景 */
.icon-circle
{
width
:
180
rpx
;
height
:
180
rpx
;
border-radius
:
50%
;
/* 青绿色渐变 */
background
:
linear-gradient
(
135deg
,
#06c1ae
,
#04a896
);
display
:
flex
;
align-items
:
center
;
justify-content
:
center
;
box-shadow
:
0
8
rpx
30
rpx
rgba
(
6
,
193
,
174
,
0.3
);
/* 轻微上浮动效 */
animation
:
scaleIn
0.8s
ease-out
;
}
/* 对勾图标 */
.check-icon
{
font-size
:
90
rpx
;
color
:
#ffffff
;
font-weight
:
bold
;
}
/* 支付成功标题 */
.success-title
{
font-size
:
48
rpx
;
font-weight
:
700
;
color
:
#333333
;
margin-bottom
:
12
rpx
;
animation
:
slideUp
0.6s
ease-out
;
}
/* 副标题 */
.success-subtitle
{
font-size
:
28
rpx
;
color
:
#666666
;
margin-bottom
:
60
rpx
;
animation
:
slideUp
0.8s
ease-out
;
}
/* 订单信息卡片 */
.info-card
{
width
:
100%
;
background
:
#ffffff
;
border-radius
:
20
rpx
;
padding
:
40
rpx
30
rpx
;
box-shadow
:
0
6
rpx
20
rpx
rgba
(
0
,
0
,
0
,
0.05
);
margin-bottom
:
80
rpx
;
animation
:
fadeIn
1s
ease-out
;
}
/* 单个信息项 */
.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
{
border-bottom
:
none
;
}
/* 标签样式 */
.label
{
font-size
:
32
rpx
;
color
:
#666666
;
white-space
:
nowrap
;
margin-right
:
20
rpx
;
flex-shrink
:
0
;
}
/* 值样式 */
.value
{
font-size
:
32
rpx
;
color
:
#333333
;
text-align
:
right
;
word-break
:
break-all
;
word-wrap
:
break-word
;
}
/* 金额特殊样式 */
.amount
{
color
:
#cd1e27
;
font-weight
:
600
;
}
/* 确定按钮区域 */
.confirm-btn-area
{
width
:
100%
;
padding
:
0
20
rpx
;
box-sizing
:
border-box
;
}
/* 确定按钮(渐变+动效) */
.confirm-btn
{
width
:
100%
;
height
:
90
rpx
;
line-height
:
90
rpx
;
/* 按钮渐变背景 */
background
:
#fff
;
color
:
#C4121B
;
font-size
:
36
rpx
;
font-weight
:
600
;
border-radius
:
45
rpx
;
border
:
1px
solid
#C4121B
;
animation
:
slideUp
1s
ease-out
;
/* 禁止默认样式 */
position
:
relative
;
overflow
:
hidden
;
}
/* 按钮点击反馈 */
.confirm-btn
::after
{
border
:
none
;
}
.confirm-btn
:active
{
transform
:
scale
(
0.98
);
box-shadow
:
0
4
rpx
10
rpx
rgba
(
6
,
193
,
174
,
0.2
);
}
/* 动画定义 */
@keyframes
fadeIn
{
0
%
{
opacity
:
0
;
}
100
%
{
opacity
:
1
;
}
}
@keyframes
scaleIn
{
0
%
{
transform
:
scale
(
0
);
}
70
%
{
transform
:
scale
(
1.1
);
}
100
%
{
transform
:
scale
(
1
);
}
}
@keyframes
slideUp
{
0
%
{
opacity
:
0
;
transform
:
translateY
(
30
rpx
);
}
100
%
{
opacity
:
1
;
transform
:
translateY
(
0
);
}
}
</
style
>
\ No newline at end of file
/* 全局容器 */
.success-container
{
display
:
flex
;
flex-direction
:
column
;
align-items
:
center
;
padding
:
100
rpx
40
rpx
60
rpx
;
min-height
:
100vh
;
background-color
:
#f8f9fa
;
box-sizing
:
border-box
;
}
/* 成功图标容器 */
.success-icon
{
margin-bottom
:
40
rpx
;
animation
:
fadeIn
0.6s
ease-out
;
}
/* 渐变圆形背景 */
.icon-circle
{
width
:
180
rpx
;
height
:
180
rpx
;
border-radius
:
50%
;
/* 青绿色渐变 */
background
:
linear-gradient
(
135deg
,
#06c1ae
,
#04a896
);
display
:
flex
;
align-items
:
center
;
justify-content
:
center
;
box-shadow
:
0
8
rpx
30
rpx
rgba
(
6
,
193
,
174
,
0.3
);
/* 轻微上浮动效 */
animation
:
scaleIn
0.8s
ease-out
;
}
/* 对勾图标 */
.check-icon
{
font-size
:
90
rpx
;
color
:
#ffffff
;
font-weight
:
bold
;
}
/* 支付成功标题 */
.success-title
{
font-size
:
48
rpx
;
font-weight
:
700
;
color
:
#333333
;
margin-bottom
:
12
rpx
;
animation
:
slideUp
0.6s
ease-out
;
}
/* 副标题 */
.success-subtitle
{
font-size
:
28
rpx
;
color
:
#666666
;
margin-bottom
:
60
rpx
;
animation
:
slideUp
0.8s
ease-out
;
}
/* 订单信息卡片 */
.info-card
{
width
:
100%
;
background
:
#ffffff
;
border-radius
:
20
rpx
;
padding
:
40
rpx
30
rpx
;
box-shadow
:
0
6
rpx
20
rpx
rgba
(
0
,
0
,
0
,
0.05
);
margin-bottom
:
80
rpx
;
animation
:
fadeIn
1s
ease-out
;
}
/* 单个信息项 */
.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
{
border-bottom
:
none
;
}
/* 标签样式 */
.label
{
font-size
:
32
rpx
;
color
:
#666666
;
white-space
:
nowrap
;
margin-right
:
20
rpx
;
flex-shrink
:
0
;
}
/* 值样式 */
.value
{
font-size
:
32
rpx
;
color
:
#333333
;
text-align
:
right
;
word-break
:
break-all
;
word-wrap
:
break-word
;
}
/* 金额特殊样式 */
.amount
{
color
:
#cd1e27
;
font-weight
:
600
;
}
/* 确定按钮区域 */
.confirm-btn-area
{
width
:
100%
;
padding
:
0
20
rpx
;
box-sizing
:
border-box
;
}
/* 确定按钮(渐变+动效) */
.confirm-btn
{
width
:
100%
;
height
:
90
rpx
;
line-height
:
90
rpx
;
/* 按钮渐变背景 */
background
:
#fff
;
color
:
#C4121B
;
font-size
:
36
rpx
;
font-weight
:
600
;
border-radius
:
45
rpx
;
border
:
1px
solid
#C4121B
;
animation
:
slideUp
1s
ease-out
;
/* 禁止默认样式 */
position
:
relative
;
overflow
:
hidden
;
}
/* 按钮点击反馈 */
.confirm-btn
::after
{
border
:
none
;
}
.confirm-btn
:active
{
transform
:
scale
(
0.98
);
box-shadow
:
0
4
rpx
10
rpx
rgba
(
6
,
193
,
174
,
0.2
);
}
/* 动画定义 */
@keyframes
fadeIn
{
0
%
{
opacity
:
0
;
}
100
%
{
opacity
:
1
;
}
}
@keyframes
scaleIn
{
0
%
{
transform
:
scale
(
0
);
}
70
%
{
transform
:
scale
(
1.1
);
}
100
%
{
transform
:
scale
(
1
);
}
}
@keyframes
slideUp
{
0
%
{
opacity
:
0
;
transform
:
translateY
(
30
rpx
);
}
100
%
{
opacity
:
1
;
transform
:
translateY
(
0
);
}
}
</
style
>
...
...
personalVip/changeLevelAudit.vue
View file @
bbc048f
<
template
>
<view>
<view
class=
"searchbar"
>
<uni-easyinput
placeholderStyle=
"font-size:30rpx"
:input-border=
"false"
prefixIcon=
"search"
v-model=
"queryParams.code"
placeholder=
"搜索变更单号"
@
blur=
"getList"
@
clear=
"getList"
>
</uni-easyinput>
</view>
<view
class=
"vipData"
>
<view>
级位变更人数合计:
<text>
{{
statistical
.
personCount
}}
</text>
人
</view>
</view>
<view
class=
"appList"
>
<view
class=
"appItem"
v-for=
"(item,index) in list"
:key=
"index"
>
<view
class=
"status"
@
click=
"goDetail(item)"
>
<view>
<text
v-if=
"item.status == 0"
class=
"text-warning"
>
待提交
</text>
<text
v-if=
"item.status == 1"
class=
"text-primary"
>
审核中
</text>
<text
v-if=
"item.status == 2"
class=
"text-success"
>
审核通过
</text>
<text
v-if=
"item.status == 3"
class=
"text-danger"
>
审核拒绝
</text>
<text
v-if=
"item.status == 4"
class=
"text-warning"
>
已撤回
</text>
</view>
</view>
<view
class=
"name mt0"
@
click=
"goDetail(item)"
>
<text
class=
"text-primary"
>
{{
item
.
code
}}
</text>
-
{{
item
.
shenMemName
}}
</view>
<view
class=
"flexbox"
@
click=
"goDetail(item)"
>
<view>
变更人数
<view>
<text
class=
"text-danger"
>
{{
item
.
count
}}
人
</text>
</view>
</view>
<view
class=
"w50"
>
提交时间
<view>
{{
item
.
commitTime
||
'--'
}}
</view>
</view>
</view>
<view
class=
"func"
v-if=
"item.status==1"
>
<button
@
click=
"audit(item.id,'0')"
>
拒绝
</button>
<button
@
click=
"audit(item.id,'1')"
>
同意
</button>
</view>
<view
class=
"func"
v-if=
"item.status==2"
>
<button
@
click=
"handleDelete(item)"
>
撤回
</button>
</view>
</view>
</view>
<view
class=
"nodata"
v-if=
"list.length==0"
>
<image
mode=
"aspectFit"
:src=
"config.baseUrl_api + '/fs/static/nodata.png'"
></image>
<text>
暂无数据
</text>
</view>
</view>
<view>
<view
class=
"searchbar"
>
<uni-easyinput
v-model=
"queryParams.code"
:input-border=
"false"
placeholder=
"搜索变更单号"
placeholderStyle=
"font-size:30rpx"
prefixIcon=
"search"
@
blur=
"getList"
@
clear=
"getList"
>
</uni-easyinput>
</view>
<view
class=
"vipData"
>
<view>
级位变更人数合计:
<text>
{{
statistical
.
personCount
}}
</text>
人
</view>
</view>
<view
class=
"appList"
>
<view
v-for=
"(item,index) in list"
:key=
"index"
class=
"appItem"
>
<view
class=
"status"
@
click=
"goDetail(item)"
>
<view>
<text
v-if=
"userType==1?item.status == 1:item.shenAuditStatus==0"
class=
"text-primary"
>
审核中
</text>
<text
v-if=
"userType==1?item.status == 2:item.shenAuditStatus==1"
class=
"text-success"
>
审核通过
</text>
<text
v-if=
"userType==1?item.status == 3:item.shenAuditStatus==2"
class=
"text-danger"
>
审核拒绝
</text>
<text
v-if=
"userType==1?item.status == 4:item.shenAuditStatus==3"
class=
"text-warning"
>
已撤回
</text>
</view>
</view>
<view
class=
"name mt0"
@
click=
"goDetail(item)"
>
<text
class=
"text-primary"
>
{{
item
.
code
}}
</text>
-
{{
item
.
shenMemName
}}
</view>
<view
class=
"flexbox"
@
click=
"goDetail(item)"
>
<view>
变更人数
<view>
<text
class=
"text-danger"
>
{{
item
.
count
}}
人
</text>
</view>
</view>
<view
class=
"w50"
>
提交时间
<view>
{{
item
.
commitTime
||
'--'
}}
</view>
</view>
</view>
<view
v-if=
"userType==1?item.status == 1:item.shenAuditStatus==0 "
class=
"func"
>
<button
@
click=
"audit(item.id,'0')"
>
拒绝
</button>
<button
@
click=
"audit(item.id,'1')"
>
同意
</button>
</view>
<!--
<view
v-if=
"item.status==2"
class=
"func"
>
-->
<!--
<button
@
click=
"handleDelete(item)"
>
撤回
</button>
-->
<!--
</view>
-->
</view>
</view>
<view
v-if=
"list.length==0"
class=
"nodata"
>
<image
:src=
"config.baseUrl_api + '/fs/static/nodata.png'"
mode=
"aspectFit"
></image>
<text>
暂无数据
</text>
</view>
</view>
</
template
>
<
script
setup
>
import
*
as
api
from
'@/common/api.js'
import
config
from
'@/config.js'
import
{
ref
}
from
'vue'
import
{
onLoad
,
onShow
}
from
'@dcloudio/uni-app'
const
app
=
getApp
();
const
queryParams
=
ref
({
code
:
''
,
ztxList
:
0
})
const
list
=
ref
([])
const
statistical
=
ref
({
personCount
:
0
})
const
total
=
ref
(
0
)
onShow
(()
=>
{
getList
()
})
function
getList
()
{
uni
.
showLoading
({
title
:
'加载中'
})
statistical
.
value
.
personCount
=
0
api
.
getChangelevelList
(
queryParams
.
value
).
then
(
res
=>
{
list
.
value
=
res
.
rows
list
.
value
.
forEach
(
item
=>
{
statistical
.
value
.
personCount
+=
(
item
.
count
*
1
)
})
total
.
value
=
res
.
total
uni
.
hideLoading
()
})
}
import
*
as
api
from
'@/common/api.js'
import
config
from
'@/config.js'
import
{
ref
}
from
'vue'
import
{
onLoad
,
onShow
}
from
'@dcloudio/uni-app'
import
{
changeLevelShenAudit
}
from
"@/common/api.js"
;
function
goDetail
(
item
)
{
let
path
=
`/personalVip/changeLevelDetail?rangeId=
${
item
.
id
}
`
uni
.
navigateTo
({
url
:
path
});
}
const
app
=
getApp
();
const
queryParams
=
ref
({
code
:
''
,
// shenAuditStatus: 0
})
const
list
=
ref
([])
const
statistical
=
ref
({
personCount
:
0
})
const
total
=
ref
(
0
)
const
userType
=
ref
(
2
)
function
handleDelete
(
row
)
{
uni
.
showModal
({
title
:
'提示'
,
content
:
`确定撤回吗`
,
success
:
function
(
res
)
{
if
(
res
.
confirm
)
{
api
.
changeLevelWithDraw
([
row
.
id
]).
then
(
Response
=>
{
uni
.
showToast
({
icon
:
"none"
,
title
:
'撤回成功!'
})
getList
()
})
}
}
})
}
onShow
(()
=>
{
userType
.
value
=
app
.
globalData
.
userType
getList
()
})
function
audit
(
id
,
flag
)
{
if
(
flag
==
0
)
{
// 拒绝
// 弹出框填写理由
uni
.
showModal
({
title
:
'请输入拒绝理由'
,
editable
:
true
,
success
:
function
(
res
)
{
if
(
res
.
confirm
)
{
if
(
!
res
.
content
)
{
uni
.
showToast
({
title
:
'请输入拒绝理由'
,
icon
:
'none'
})
}
else
{
doApproval
(
id
,
flag
,
res
.
content
)
}
}
}
})
}
else
if
(
flag
==
'1'
)
{
// 二次确认
uni
.
showModal
({
title
:
'提示'
,
content
:
`确定审批通过吗`
,
success
:
function
(
res
)
{
if
(
res
.
confirm
)
{
doApproval
(
id
,
flag
)
}
}
})
}
}
function
getList
()
{
uni
.
showLoading
({
title
:
'加载中'
})
statistical
.
value
.
personCount
=
0
api
.
getChangelevelList
(
queryParams
.
value
).
then
(
res
=>
{
list
.
value
=
res
.
rows
list
.
value
.
forEach
(
item
=>
{
statistical
.
value
.
personCount
+=
(
item
.
count
*
1
)
})
total
.
value
=
res
.
total
uni
.
hideLoading
()
})
}
function
doApproval
(
id
,
flag
,
reason
)
{
var
obj
=
{
flag
:
flag
,
reason
:
reason
||
''
,
ids
:
[
id
]
}
console
.
log
(
obj
)
uni
.
showLoading
({
title
:
'加载中'
})
api
.
changeLevelAudit
(
obj
).
then
((
res
)
=>
{
uni
.
hideLoading
()
uni
.
showToast
({
title
:
'操作成功'
,
icon
:
'none'
})
getList
()
})
}
</
script
>
function
goDetail
(
item
)
{
let
path
=
`/personalVip/changeLevelDetail?rangeId=
${
item
.
id
}
`
uni
.
navigateTo
({
url
:
path
});
}
<
style
lang=
'scss'
scoped
>
.searchbar
{
display
:
flex
;
align-items
:
center
;
padding
:
25
rpx
;
box-sizing
:
border-box
;
function
handleDelete
(
row
)
{
uni
.
showModal
({
title
:
'提示'
,
content
:
`确定撤回吗`
,
success
:
function
(
res
)
{
if
(
res
.
confirm
)
{
api
.
changeLevelWithDraw
([
row
.
id
]).
then
(
Response
=>
{
uni
.
showToast
({
icon
:
"none"
,
title
:
'撤回成功!'
})
getList
()
})
}
}
})
}
:deep(.uni-easyinput
.uni-easyinput__content)
{
border-radius
:
35
rpx
;
border
:
none
;
height
:
70
rpx
;
}
function
audit
(
id
,
flag
)
{
if
(
flag
==
0
)
{
// 拒绝
// 弹出框填写理由
uni
.
showModal
({
title
:
'请输入拒绝理由'
,
editable
:
true
,
success
:
function
(
res
)
{
if
(
res
.
confirm
)
{
if
(
!
res
.
content
)
{
uni
.
showToast
({
title
:
'请输入拒绝理由'
,
icon
:
'none'
})
}
else
{
doApproval
(
id
,
flag
,
res
.
content
)
}
}
}
})
}
else
if
(
flag
==
'1'
)
{
// 二次确认
uni
.
showModal
({
title
:
'提示'
,
content
:
`确定审批通过吗`
,
success
:
function
(
res
)
{
if
(
res
.
confirm
)
{
doApproval
(
id
,
flag
)
}
}
})
}
}
:deep
(
.uni-easyinput__content-input
)
{
font-size
:
26
rpx
;
}
.invertedbtn-red
{
border-radius
:
50px
;
background-color
:
#fff
;
async
function
doApproval
(
id
,
flag
,
reason
)
{
let
obj
=
{
flag
:
flag
,
reason
:
reason
||
''
,
ids
:
[
id
]
}
console
.
log
(
obj
)
uni
.
showLoading
({
title
:
'加载中'
})
if
(
userType
.
value
==
1
)
{
await
api
.
changeLevelAudit
(
obj
)
}
else
{
await
api
.
changeLevelShenAudit
(
obj
)
}
uni
.
hideLoading
()
uni
.
showToast
({
title
:
'操作成功'
,
icon
:
'none'
})
getList
()
}
</
script
>
font-size
:
30
rpx
;
padding
:
10
rpx
20
rpx
;
}
}
</
style
>
\ No newline at end of file
<
style
lang=
'scss'
scoped
>
.searchbar
{
display
:
flex
;
align-items
:
center
;
padding
:
25
rpx
;
box-sizing
:
border-box
;
:deep(.uni-easyinput
.uni-easyinput__content)
{
border-radius
:
35
rpx
;
border
:
none
;
height
:
70
rpx
;
}
:deep
(
.uni-easyinput__content-input
)
{
font-size
:
26
rpx
;
}
.invertedbtn-red
{
border-radius
:
50px
;
background-color
:
#fff
;
font-size
:
30
rpx
;
padding
:
10
rpx
20
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