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
4ffcd319
authored
2026-04-24 12:36:49 +0800
by
张猛
Browse Files
Options
Browse Files
Tag
Download
Email Patches
Plain Diff
考点审核
1 parent
e3bced87
Hide whitespace changes
Inline
Side-by-side
Showing
3 changed files
with
168 additions
and
150 deletions
config.js
myCenter/examPointApply.vue
myCenter/examPointApplyList.vue
config.js
View file @
4ffcd31
// dev
// const baseUrl_api = 'http://192.168.1.125:8787'
const
baseUrl_api
=
'https://tk001.wxjylt.com/stage-api/'
const
loginImage_api
=
'http://tk001.wxjylt.com/stage-api'
const
loginImage_api
=
'http
s
://tk001.wxjylt.com/stage-api'
const
payUrl
=
'https://wxpay.cmbc.com.cn/mobilePlatform/appserver/lcbpPay.do'
// prod
...
...
myCenter/examPointApply.vue
View file @
4ffcd31
<
template
>
<view
class=
"container"
>
<!-- 自定义弹窗 -->
<custom-modal
ref=
"customModalRef"
:title=
"modalConfig.title"
:content=
"modalConfig.content"
:showCancel=
"modalConfig.showCancel"
:cancelText=
"modalConfig.cancelText"
:confirmText=
"modalConfig.confirmText"
@
confirm=
"onModalConfirm"
/>
<custom-modal
ref=
"customModalRef"
:cancelText=
"modalConfig.cancelText"
:confirmText=
"modalConfig.confirmText"
:content=
"modalConfig.content"
:showCancel=
"modalConfig.showCancel"
:title=
"modalConfig.title"
@
confirm=
"onModalConfirm"
/>
<!-- 考官选择类型 -->
<!--
<view
class=
"radio-section"
>
<radio-group
class=
"radio-group"
@
change=
"onSelfSelectChange"
>
...
...
@@ -16,23 +18,28 @@
</label>
</radio-group>
</view>
-->
<!-- 温馨提示 -->
<view
v-if=
"form.selfSelect == '1'"
class=
"tip-box"
>
<text
class=
"tip-text"
>
温馨提示: 您可以自行录入考官信息,如果暂时没有合适的考官,也可以选择由省跆协指派(支持多选)进行考点申报,同时请尽快完成考点考官的认证。
</text>
<text
class=
"tip-text"
>
温馨提示:
您可以自行录入考官信息,如果暂时没有合适的考官,也可以选择由省跆协指派(支持多选)进行考点申报,同时请尽快完成考点考官的认证。
</text>
</view>
<!-- 省跆协指派提示 -->
<view
v-if=
"form.selfSelect == '0'"
class=
"tip-box"
>
<text
class=
"tip-text"
>
温馨提示:关于考官指派,请联系
{{
shenForm
.
baseName
||
''
}}
,联系电话:
{{
shenForm
.
phone
||
''
}}
</text>
<text
class=
"tip-text"
>
温馨提示:关于考官指派,请联系
{{
shenForm
.
baseName
||
''
}}
,联系电话:
{{
shenForm
.
phone
||
''
}}
</text>
</view>
<view
class=
"section"
>
<!-- 自行录入考官区域 -->
<view
v-if=
"form.selfSelect == '1'"
class=
"section examiner-section"
>
<button
class=
"add-btn"
@
click=
"handelAddExamine"
>
+ 添加考官
</button>
</view>
<view
v-if=
"form.selfSelect == '1'"
class=
"examiner-list"
>
<view
v-for=
"(item, index) in list"
:key=
"item.id"
class=
"examiner-item"
>
<view
class=
"info"
>
...
...
@@ -56,6 +63,7 @@ import {ref} from 'vue'
import
{
onLoad
,
onShow
}
from
'@dcloudio/uni-app'
import
*
as
api
from
'@/common/api.js'
import
customModal
from
'@/components/custom-modal.vue'
const
app
=
getApp
();
const
form
=
ref
({
selfSelect
:
'1'
// 1:自行录入 0:省跆协指派
...
...
@@ -85,7 +93,7 @@ onLoad((option) => {
onShow
(()
=>
{
// if (memId.value) {
getExaminer
()
getExaminer
()
// }
getShenMemberInfoFn
()
})
...
...
@@ -147,7 +155,7 @@ async function handelSubmit() {
if
(
form
.
value
.
selfSelect
==
'1'
&&
list
.
value
.
length
==
0
)
{
return
uni
.
showToast
({
title
:
'请添加考官'
,
icon
:
'none'
})
}
modalAction
=
'success'
modalConfig
.
value
=
{
title
:
'提示'
,
...
...
@@ -187,7 +195,7 @@ async function onModalConfirm() {
}
else
if
(
modalAction
===
'submitSuccess'
)
{
uni
.
navigateBack
()
}
modalAction
=
''
//
modalAction = ''
}
function
confirmApply
()
{
...
...
myCenter/examPointApplyList.vue
View file @
4ffcd31
<
template
>
<view
class=
"exam-point-list"
>
<!-- 顶部申请按钮 -->
<view
class=
"apply-btn-box"
>
<button
class=
"apply-btn"
:disabled=
"memberInfo.isPoints==0||formInfo.auditStatus==2||formInfo.auditStatus==1"
@
click=
"goApply"
>
申请考点
</button>
</view>
<!-- 列表 -->
<view
class=
"list-content"
>
<view
v-if=
"list.length === 0 && !loading"
class=
"empty-tip"
>
<text>
暂无申请记录
</text>
</view>
<view
v-for=
"(item, index) in list"
:key=
"index"
class=
"list-item"
:class=
"
{ 'success-row': item.shenAuditStatus == 2 }"
>
<view
class=
"item-row"
>
<text
class=
"item-label"
>
审核协会
</text>
<text
class=
"item-value"
>
{{
item
.
auditDeptName
||
'-'
}}
</text>
</view>
<view
class=
"item-row"
>
<text
class=
"item-label"
>
审核日期
</text>
<text
class=
"item-value"
>
{{
formatDate
(
item
.
auditTime
)
}}
</text>
</view>
<view
class=
"item-row"
>
<text
class=
"item-label"
>
审核状态
</text>
<text
class=
"item-status"
:class=
"getStatusClass(item.auditResult)"
>
{{
item
.
auditResult
==
0
?
'审核未通过'
:
'审核通过'
}}
</text>
</view>
<view
class=
"item-row"
>
<text
class=
"item-label"
>
理由
</text>
<text
class=
"item-value"
>
{{
item
.
auditMsg
?
item
.
auditMsg
:
'/'
}}
</text>
</view>
</view>
<view
v-if=
"loading"
class=
"loading-tip"
>
<text>
加载中...
</text>
</view>
<view
v-if=
"noMore && list.length > 0"
class=
"no-more-tip"
>
<text>
没有更多了
</text>
</view>
</view>
</view>
<view
class=
"exam-point-list"
>
<!-- 顶部申请按钮 -->
<view
class=
"apply-btn-box"
>
<button
:disabled=
"memberInfo.isPoints==0||formInfo.auditStatus==2||formInfo.auditStatus==1"
class=
"apply-btn"
@
click=
"goApply"
>
申请考点
</button>
</view>
<!-- 列表 -->
<view
class=
"list-content"
>
<view
v-if=
"list.length === 0 && !loading"
class=
"empty-tip"
>
<text>
暂无申请记录
</text>
</view>
<view
v-for=
"(item, index) in list"
:key=
"index"
:class=
"
{ 'success-row': item.shenAuditStatus == 2 }"
class="list-item"
>
<view
class=
"item-row"
>
<text
class=
"item-label"
>
审核协会
</text>
<text
class=
"item-value"
>
{{
item
.
auditDeptName
||
'-'
}}
</text>
</view>
<view
class=
"item-row"
>
<text
class=
"item-label"
>
审核日期
</text>
<text
class=
"item-value"
>
{{
formatDate
(
item
.
auditTime
)
}}
</text>
</view>
<view
class=
"item-row"
>
<text
class=
"item-label"
>
审核状态
</text>
<text
:class=
"getStatusClass(item.auditResult)"
class=
"item-status"
>
{{
item
.
auditResult
==
1
?
'审核通过'
:
item
.
auditResult
==
0
?
'审核拒绝'
:
'待审核'
}}
</text>
</view>
<view
class=
"item-row"
>
<text
class=
"item-label"
>
理由
</text>
<text
class=
"item-value"
>
{{
item
.
auditMsg
?
item
.
auditMsg
:
'/'
}}
</text>
</view>
</view>
<view
v-if=
"loading"
class=
"loading-tip"
>
<text>
加载中...
</text>
</view>
<view
v-if=
"noMore && list.length > 0"
class=
"no-more-tip"
>
<text>
没有更多了
</text>
</view>
</view>
</view>
</
template
>
<
script
setup
>
import
{
ref
}
from
'vue'
import
{
onLoad
,
onReachBottom
}
from
'@dcloudio/uni-app'
import
{
getMyRecentExam
}
from
'@/common/api'
import
{
ref
}
from
'vue'
import
{
onLoad
,
onReachBottom
}
from
'@dcloudio/uni-app'
import
{
getMyRecentExam
}
from
'@/common/api'
import
{
onShow
}
from
"@/unpackage/dist/dev/mp-weixin/common/vendor"
;
const
app
=
getApp
()
const
list
=
ref
([])
const
loading
=
ref
(
false
)
...
...
@@ -60,155 +64,161 @@ const pageNum = ref(1)
const
pageSize
=
ref
(
10
)
const
memberInfo
=
app
.
globalData
.
memberInfo
const
formInfo
=
ref
({})
onShow
(()
=>
{
loadData
()
})
onLoad
(()
=>
{
loadData
()
loadData
()
})
function
loadData
()
{
if
(
loading
.
value
)
return
loading
.
value
=
true
getMyRecentExam
().
then
(
res
=>
{
formInfo
.
value
=
res
.
data
if
(
res
.
data
&&
res
.
data
.
auditLogs
)
{
try
{
list
.
value
=
JSON
.
parse
(
res
.
data
.
auditLogs
)
}
catch
(
e
)
{
list
.
value
=
[]
}
}
else
{
list
.
value
=
[]
}
}).
finally
(()
=>
{
loading
.
value
=
false
})
if
(
loading
.
value
)
return
loading
.
value
=
true
getMyRecentExam
().
then
(
res
=>
{
formInfo
.
value
=
res
.
data
if
(
res
.
data
&&
res
.
data
.
auditLogs
)
{
try
{
list
.
value
=
JSON
.
parse
(
res
.
data
.
auditLogs
)
}
catch
(
e
)
{
list
.
value
=
[]
}
}
else
{
list
.
value
=
[]
}
}).
finally
(()
=>
{
loading
.
value
=
false
})
}
onReachBottom
(()
=>
{
if
(
!
noMore
.
value
)
{
pageNum
.
value
++
loadData
()
}
if
(
!
noMore
.
value
)
{
pageNum
.
value
++
loadData
()
}
})
function
goApply
()
{
uni
.
navigateTo
({
url
:
'/pages/index/notice-examPointApply'
})
uni
.
navigateTo
({
url
:
'/pages/index/notice-examPointApply'
})
}
function
getStatusClass
(
status
)
{
return
{
'status-1'
:
status
==
0
,
'status-2'
:
status
!
=
0
,
}
return
{
'status-2'
:
status
==
1
,
'status-1'
:
status
=
=
0
,
}
}
function
formatDate
(
dateStr
)
{
if
(
!
dateStr
)
return
'-'
const
date
=
new
Date
(
dateStr
)
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
}
`
if
(
!
dateStr
)
return
'-'
const
date
=
new
Date
(
dateStr
)
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
}
`
}
</
script
>
<
style
lang=
"scss"
scoped
>
.exam-point-list
{
min-height
:
100vh
;
background
:
#f5f5f5
;
min-height
:
100vh
;
background
:
#f5f5f5
;
}
.apply-btn-box
{
padding
:
20
rpx
30
rpx
;
padding
:
20
rpx
30
rpx
;
}
.apply-btn
{
width
:
100%
;
height
:
80
rpx
;
line-height
:
80
rpx
;
background
:
#C4121B
;
color
:
#fff
;
font-size
:
28
rpx
;
border-radius
:
44
rpx
;
border
:
none
;
&::after
{
border
:
none
;
}
&[
disabled
]
{
background
:
#f3d4d5
!important
;
color
:
#b7b5b5
!important
;
border
:
2
rpx
solid
#e0e0e0
!important
;
opacity
:
1
;
}
width
:
100%
;
height
:
80
rpx
;
line-height
:
80
rpx
;
background
:
#C4121B
;
color
:
#fff
;
font-size
:
28
rpx
;
border-radius
:
44
rpx
;
border
:
none
;
&::after
{
border
:
none
;
}
&[
disabled
]
{
background
:
#f3d4d5
!important
;
color
:
#b7b5b5
!important
;
border
:
2
rpx
solid
#e0e0e0
!important
;
opacity
:
1
;
}
}
.list-content
{
padding
:
0
20
rpx
20
rpx
;
padding
:
0
20
rpx
20
rpx
;
}
.empty-tip
,
.loading-tip
,
.no-more-tip
{
text-align
:
center
;
padding
:
60
rpx
0
;
color
:
#999
;
font-size
:
26
rpx
;
text-align
:
center
;
padding
:
60
rpx
0
;
color
:
#999
;
font-size
:
26
rpx
;
}
.list-item
{
background
:
#fff
;
border-radius
:
16
rpx
;
padding
:
24
rpx
;
margin-bottom
:
20
rpx
;
background
:
#fff
;
border-radius
:
16
rpx
;
padding
:
24
rpx
;
margin-bottom
:
20
rpx
;
}
.list-item.success-row
{
border-left
:
6
rpx
solid
#19be6b
;
border-left
:
6
rpx
solid
#19be6b
;
}
.item-row
{
display
:
flex
;
margin-bottom
:
16
rpx
;
&:last-child
{
margin-bottom
:
0
;
}
display
:
flex
;
margin-bottom
:
16
rpx
;
&:last-child
{
margin-bottom
:
0
;
}
}
.item-label
{
width
:
140
rpx
;
font-size
:
26
rpx
;
color
:
#999
;
width
:
140
rpx
;
font-size
:
26
rpx
;
color
:
#999
;
}
.item-value
{
flex
:
1
;
font-size
:
26
rpx
;
color
:
#333
;
flex
:
1
;
font-size
:
26
rpx
;
color
:
#333
;
}
.item-status
{
font-size
:
26
rpx
;
padding
:
4
rpx
16
rpx
;
border-radius
:
20
rpx
;
font-size
:
26
rpx
;
padding
:
4
rpx
16
rpx
;
border-radius
:
20
rpx
;
}
.status-1
{
background
:
#fff7e6
;
color
:
#fa8c16
;
background
:
#fff7e6
;
color
:
#fa8c16
;
}
.status-2
{
background
:
#e6fff7
;
color
:
#52c41a
;
background
:
#e6fff7
;
color
:
#52c41a
;
}
.status-3
{
background
:
#fff1f0
;
color
:
#ff4d4f
;
background
:
#fff1f0
;
color
:
#ff4d4f
;
}
</
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