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
8630af21
authored
2023-12-19 16:52:56 +0800
by
杨炀
Browse Files
Options
Browse Files
Tag
Download
Email Patches
Plain Diff
no message
1 parent
9a050e3a
Expand all
Hide whitespace changes
Inline
Side-by-side
Showing
10 changed files
with
567 additions
and
514 deletions
common/login.js
level/ztx/cert.vue
level/ztx/examList.vue
level/ztx/studentList.vue
pages/exam/payment.vue
pages/exam/score.vue
pages/index/index.vue
pages/rank/scoreApproval.vue
personalVip/addVip.vue
personalVip/mobilizeDetail.vue
common/login.js
View file @
8630af2
...
...
@@ -85,7 +85,8 @@ function getInfo() {
// const personInfo = res.data.personInfo
uni
.
setStorageSync
(
'userName'
,
user
.
userName
)
// uni.setStorageSync('perId', personInfo.perId||-1)
app
.
globalData
.
deptType
=
user
.
dept
.
deptType
app
.
globalData
.
deptType
=
user
.
dept
.
deptType
app
.
globalData
.
genFlag
=
user
.
dept
.
genFlag
switch
(
user
.
dept
.
deptType
)
{
case
'1'
:
// 中跆协
app
.
globalData
.
userType
=
'1'
...
...
level/ztx/cert.vue
View file @
8630af2
...
...
@@ -70,6 +70,16 @@
const
userType
=
ref
(
''
)
onLoad
((
option
)
=>
{
queryParams
.
value
.
type
=
option
.
type
if
(
option
.
type
==
2
){
uni
.
setNavigationBarTitle
({
title
:
'段位考试详情'
})
}
if
(
option
.
type
==
3
){
uni
.
setNavigationBarTitle
({
title
:
'越段考试详情'
})
}
})
onShow
(()
=>
{
if
(
app
.
globalData
.
isLogin
)
{
...
...
level/ztx/examList.vue
View file @
8630af2
<
template
>
<view>
<!-- 级位证书发布 -->
<view
class=
"appList"
>
<view
class=
"appItem"
v-for=
"item in infoList"
>
<view
class=
"status"
@
click=
"goDetail(item)"
>
<text
:class=
"
{
'text-warning':item.isCert=='0',
'text-primary':item.isCert=='1',
'text-success':item.isCert=='2'
}">
{{
statusArr
[
item
.
isCert
]
}}
</text>
</view>
<view
class=
"date"
>
申请日期:
{{
item
.
applyTime
?.
slice
(
0
,
10
)
}}
</view>
<view
class=
"name mt0"
@
click=
"goDetail(item)"
>
{{
item
.
name
}}
</view>
<view
class=
"pp esp"
>
考级考官:
{{
item
.
examinerNames
}}
</view>
<view
class=
"flexbox"
@
click=
"goDetail(item)"
>
<view>
申请单位
<view>
{{
item
.
memberName
}}
</view>
</view>
<view>
已发/待发证书
<view>
{{
item
.
hasCerts
}}
/
<text
class=
"text-danger"
>
{{
item
.
noCerts
}}
</text></view>
</view>
<view>
考生数/通过数
<view>
{{
item
.
totalNum
}}
/
<text
class=
"text-danger"
>
{{
item
.
pass
}}
</text></view>
</view>
</view>
<view
class=
"func"
v-if=
"item.isCert != '2'"
>
<button
@
click=
"send(item)"
>
一键生成
</button>
</view>
</view>
</view>
<view
class=
"nodata"
v-if=
"infoList.length==0"
>
<image
mode=
"aspectFit"
src=
"/static/nodata.png"
></image>
<text>
暂无数据
</text>
</view>
</view>
</
template
>
<
script
setup
>
import
*
as
api
from
'@/common/api.js'
import
config
from
'@/config.js'
import
_
from
'lodash'
import
{
onMounted
,
ref
}
from
'vue'
import
{
onLoad
,
onShow
}
from
'@dcloudio/uni-app'
const
app
=
getApp
();
const
queryParams
=
ref
({
// pageNum: 1,
// pageSize: 10
})
const
statusArr
=
[
'未发放'
,
'部分发放'
,
'已发放'
]
const
current
=
ref
()
const
infoList
=
ref
([])
const
total
=
ref
(
0
)
const
deptType
=
ref
(
''
)
const
userType
=
ref
(
''
)
onLoad
((
option
)
=>
{
queryParams
.
value
.
payId
=
option
.
payId
queryParams
.
value
.
type
=
option
.
type
})
onShow
(()
=>
{
if
(
app
.
globalData
.
isLogin
)
{
init
()
}
else
{
app
.
firstLoadCallback
=
()
=>
{
init
()
};
}
})
function
init
()
{
deptType
.
value
=
app
.
globalData
.
deptType
userType
.
value
=
app
.
globalData
.
userType
getList
()
}
function
getList
()
{
uni
.
showLoading
({
title
:
'加载中'
})
api
.
getExamListByPayId
(
queryParams
.
value
).
then
(
res
=>
{
infoList
.
value
=
res
.
rows
uni
.
hideLoading
()
})
}
function
goDetail
(
item
)
{
// const form = encodeURIComponent(JSON.stringify(item))
let
path
=
`/level/ztx/studentList?type=
${
queryParams
.
value
.
type
}
&examId=
${
item
.
examId
}
&payId=
${
queryParams
.
value
.
payId
}
`
uni
.
navigateTo
({
url
:
path
});
}
function
send
(
row
)
{
uni
.
showModal
({
title
:
'提示'
,
content
:
`确定生成
${
row
.
name
}
的证书吗`
,
success
:
function
(
res
)
{
if
(
res
.
confirm
)
{
api
.
submitCert
([{
id
:
row
.
payId
}]).
then
(
res
=>
{
uni
.
showToast
({
title
:
`下发成功`
})
getList
()
})
}
}
})
}
</
script
>
<
style
scoped
lang=
"scss"
>
.mt0
{
margin-top
:
0
!important
;
}
.appList
.appItem
.name
{
width
:
80%
;
word-break
:
break-all
;
}
<
template
>
<view>
<!-- 级位证书发布 -->
<view
class=
"appList"
>
<view
class=
"appItem"
v-for=
"item in infoList"
:key=
"item.examId"
>
<view
class=
"status"
@
click=
"goDetail(item)"
>
<text
:class=
"
{
'text-warning':item.isCert=='0',
'text-primary':item.isCert=='1',
'text-success':item.isCert=='2'
}">
{{
statusArr
[
item
.
isCert
]
}}
</text>
</view>
<view
class=
"date"
>
申请日期:
{{
item
.
applyTime
?.
slice
(
0
,
10
)
}}
</view>
<view
class=
"name mt0"
@
click=
"goDetail(item)"
>
{{
item
.
name
}}
</view>
<view
class=
"pp esp"
>
考级考官:
{{
item
.
examinerNames
}}
</view>
<view
class=
"flexbox"
@
click=
"goDetail(item)"
>
<!--
<view>
申请单位
<view>
{{
item
.
memberName
}}
</view>
</view>
-->
<view>
已发/待发证书
<view>
{{
item
.
hasCerts
}}
/
<text
class=
"text-danger"
>
{{
item
.
noCerts
}}
</text></view>
</view>
<view
class=
"w50"
>
考生数/通过数
<view>
{{
item
.
totalNum
}}
/
<text
class=
"text-danger"
>
{{
item
.
pass
}}
</text></view>
</view>
</view>
<view
class=
"func"
v-if=
"item.isCert != '2'"
>
<button
@
click=
"send(item)"
>
一键生成
</button>
</view>
</view>
</view>
<view
class=
"nodata"
v-if=
"infoList.length==0"
>
<image
mode=
"aspectFit"
src=
"/static/nodata.png"
></image>
<text>
暂无数据
</text>
</view>
</view>
</
template
>
<
script
setup
>
import
*
as
api
from
'@/common/api.js'
import
config
from
'@/config.js'
import
_
from
'lodash'
import
{
onMounted
,
ref
}
from
'vue'
import
{
onLoad
,
onShow
}
from
'@dcloudio/uni-app'
const
app
=
getApp
();
const
queryParams
=
ref
({
// pageNum: 1,
// pageSize: 10
})
const
statusArr
=
[
'未发放'
,
'部分发放'
,
'已发放'
]
const
current
=
ref
()
const
infoList
=
ref
([])
const
total
=
ref
(
0
)
const
deptType
=
ref
(
''
)
const
userType
=
ref
(
''
)
onLoad
((
option
)
=>
{
queryParams
.
value
.
payId
=
option
.
payId
queryParams
.
value
.
type
=
option
.
type
if
(
option
.
type
==
2
)
{
uni
.
setNavigationBarTitle
({
title
:
'段位考试详情'
})
}
if
(
option
.
type
==
3
)
{
uni
.
setNavigationBarTitle
({
title
:
'越段考试详情'
})
}
})
onShow
(()
=>
{
if
(
app
.
globalData
.
isLogin
)
{
init
()
}
else
{
app
.
firstLoadCallback
=
()
=>
{
init
()
};
}
})
function
init
()
{
deptType
.
value
=
app
.
globalData
.
deptType
userType
.
value
=
app
.
globalData
.
userType
getList
()
}
function
getList
()
{
uni
.
showLoading
({
title
:
'加载中'
})
api
.
getExamListByPayId
(
queryParams
.
value
).
then
(
res
=>
{
infoList
.
value
=
res
.
rows
uni
.
hideLoading
()
})
}
function
goDetail
(
item
)
{
// const form = encodeURIComponent(JSON.stringify(item))
let
path
=
`/level/ztx/studentList?type=
${
queryParams
.
value
.
type
}
&examId=
${
item
.
examId
}
&payId=
${
queryParams
.
value
.
payId
}
`
uni
.
navigateTo
({
url
:
path
});
}
function
send
(
row
)
{
uni
.
showModal
({
title
:
'提示'
,
content
:
`确定一键下发
${
row
.
name
}
的证书`
,
success
:
function
(
res
)
{
if
(
res
.
confirm
)
{
api
.
submitCert
([{
id
:
queryParams
.
value
.
payId
,
children
:
[{
id
:
row
.
examId
}]
}]).
then
(
res
=>
{
uni
.
showToast
({
title
:
`下发成功`
})
getList
()
})
}
}
})
}
</
script
>
<
style
scoped
lang=
"scss"
>
.mt0
{
margin-top
:
0
!important
;
}
.appList
.appItem
.name
{
width
:
80%
;
word-break
:
break-all
;
}
</
style
>
\ No newline at end of file
...
...
level/ztx/studentList.vue
View file @
8630af2
...
...
@@ -5,9 +5,9 @@
v-model=
"queryParams.name"
placeholder=
"搜索姓名"
@
blur=
"getList()"
@
clear=
"getList()"
>
</uni-easyinput>
</view>
<view
class=
"indexboxre"
>
<view
class=
"indexboxre"
style=
"height: calc(100vh - 180rpx)"
>
<view
class=
"userlist"
>
<view
class=
"item"
v-for=
"n in list"
>
<view
class=
"item"
v-for=
"n in list"
:key=
"n.id"
>
<view
class=
"w100"
>
<view
class=
"status"
>
<text
class=
"text-success"
v-if=
"n.isCert == '1' "
>
已发送
</text>
...
...
pages/exam/payment.vue
View file @
8630af2
This diff is collapsed.
Click to expand it.
pages/exam/score.vue
View file @
8630af2
<
template
>
<view>
<!--
<uni-segmented-control
class=
"whitebg"
:current=
"current"
:values=
"navs"
@
clickItem=
"onClickItem"
styleType=
"text"
activeColor=
"#AD181F"
></uni-segmented-control>
-->
<!-- 成绩录入 -->
<view
class=
"appList"
>
<view
class=
"appItem"
v-for=
"item in infoList"
:key=
"item.recordId"
>
<view
@
click=
"goDetail(item)"
>
<view
class=
"status"
>
<text
:class=
"
{
'text-primary':item.scoreStatus=='0',
'text-success':item.scoreStatus=='2',
'text-danger':item.scoreStatus=='3',
'text-warning':item.scoreStatus=='4'
}">
{{
item
.
scoreStatusStr
}}
</text>
</view>
<view
class=
"date"
v-if=
"item.status!='0'&&item.submitTime"
>
提交时间:
{{
item
.
submitTime
}}
</view>
<view
class=
"name mt0"
>
{{
item
.
name
}}
</view>
<view
class=
"pp esp"
>
考段日期:
{{
item
.
startTime
?.
substring
(
0
,
16
)
}}
至
{{
item
.
endTime
?.
substring
(
0
,
16
)
}}
</view>
<view
class=
"flexbox"
>
<view>
申请日期
<view>
{{
item
.
applyTime
?.
substring
(
0
,
10
)
}}
</view>
</view>
<view>
考段考生数
<view>
{{
item
.
totalNum
||
'--'
}}
</view>
</view>
<view>
总金额
<view><text
class=
"text-danger"
>
¥
{{
(
item
.
totalAmount
*
1
).
toFixed
(
2
)
}}
</text></view>
</view>
</view>
</view>
<!--
<view
class=
"func"
v-if=
"(item.scoreStatus=='0'||item.scoreStatus=='3' || item.scoreStatus=='4')&& item.rankStatus == '1'"
>
<button
@
click=
"scoreEdit(item)"
>
成绩维护
</button>
</view>
-->
</view>
</view>
<view
class=
"nodata"
v-if=
"infoList.length==0"
>
<image
mode=
"aspectFit"
src=
"/static/nodata.png"
></image>
<text>
暂无数据
</text>
</view>
</view>
</
template
>
<
script
setup
>
import
*
as
examApi
from
'@/common/api_exam.js'
import
_
from
'lodash'
import
{
ref
}
from
'vue'
import
{
onLoad
,
onShow
}
from
'@dcloudio/uni-app'
const
app
=
getApp
();
const
queryParams
=
ref
({
status
:
'0'
,
rankStatus
:
'1'
})
const
current
=
ref
()
const
navs
=
ref
([
'审核中'
,
'审核通过'
,
'审核拒绝'
])
const
statusArr
=
[
'审批中'
,
'审批通过'
,
'审批拒绝'
,
'审批撤回'
]
const
deptType
=
ref
(
''
)
const
infoList
=
ref
([])
const
total
=
ref
(
0
)
onLoad
((
options
)
=>
{
queryParams
.
value
.
type
=
options
.
type
})
onShow
(()
=>
{
if
(
app
.
globalData
.
isLogin
)
{
init
()
}
else
{
app
.
firstLoadCallback
=
()
=>
{
init
()
};
}
})
function
init
(){
uni
.
showLoading
({
title
:
'加载中'
})
deptType
.
value
=
app
.
globalData
.
deptType
getList
()
}
function
onClickItem
(
e
)
{
uni
.
showLoading
({
title
:
'加载中'
})
queryParams
.
value
.
status
=
e
.
currentIndex
getList
()
}
function
getList
()
{
examApi
.
getRankScoreList
(
queryParams
.
value
).
then
(
res
=>
{
infoList
.
value
=
res
.
rows
total
.
value
=
res
.
total
uni
.
hideLoading
()
})
}
function
scoreEdit
(
item
)
{
console
.
log
(
item
.
sourceData
)
var
obj
=
{
flag
:
flag
,
reason
:
null
,
id
:
item
.
recordId
}
if
(
flag
==
'2'
)
{
// 拒绝
// 弹出框填写理由
uni
.
showModal
({
title
:
'请输入拒绝理由'
,
editable
:
true
,
success
:
function
(
res
)
{
if
(
res
.
confirm
)
{
if
(
!
res
.
content
)
{
uni
.
showToast
({
title
:
'请输入拒绝理由'
,
icon
:
'none'
})
}
else
{
obj
.
reason
=
res
.
content
doApproval
(
obj
)
}
}
}
})
}
else
if
(
flag
==
'1'
)
{
// 二次确认
uni
.
showModal
({
title
:
'提示'
,
content
:
`确定审批通过吗`
,
success
:
function
(
res
)
{
if
(
res
.
confirm
)
{
doApproval
(
obj
)
}
}
})
}
}
function
doApproval
(
obj
)
{
examApi
.
doMergeFlows
(
obj
).
then
((
res
)
=>
{
uni
.
showToast
({
title
:
'操作成功'
,
icon
:
'none'
})
getList
()
})
}
function
goDetail
(
item
)
{
let
path
=
`/pages/rank/applyDetail?examId=
${
item
.
examId
}
`
uni
.
navigateTo
({
url
:
path
});
}
</
script
>
<
style
lang=
"scss"
scoped
>
</
style
>
<
template
>
<view>
<!--
<uni-segmented-control
class=
"whitebg"
:current=
"current"
:values=
"navs"
@
clickItem=
"onClickItem"
styleType=
"text"
activeColor=
"#AD181F"
></uni-segmented-control>
-->
<!-- 成绩录入 -->
<view
class=
"appList"
>
<view
class=
"appItem"
v-for=
"item in infoList"
:key=
"item.recordId"
>
<view
@
click=
"goDetail(item)"
>
<view
class=
"status"
>
<text
:class=
"
{
'text-primary':item.scoreStatus=='0',
'text-success':item.scoreStatus=='2',
'text-danger':item.scoreStatus=='3',
'text-warning':item.scoreStatus=='4'
}">
{{
item
.
scoreStatusStr
}}
</text>
</view>
<view
class=
"date"
v-if=
"item.status!='0'&&item.submitTime"
>
提交时间:
{{
item
.
submitTime
}}
</view>
<view
class=
"name mt0"
>
{{
item
.
name
}}
</view>
<view
class=
"pp esp"
>
考段日期:
{{
item
.
startTime
?.
substring
(
0
,
16
)
}}
至
{{
item
.
endTime
?.
substring
(
0
,
16
)
}}
</view>
<view
class=
"flexbox"
>
<view>
申请日期
<view>
{{
item
.
applyTime
?.
substring
(
0
,
10
)
}}
</view>
</view>
<view>
考段考生数
<view>
{{
item
.
totalNum
||
'--'
}}
</view>
</view>
<view>
总金额
<view><text
class=
"text-danger"
>
¥
{{
(
item
.
totalAmount
*
1
).
toFixed
(
2
)
}}
</text></view>
</view>
</view>
</view>
<!--
<view
class=
"func"
v-if=
"(item.scoreStatus=='0'||item.scoreStatus=='3' || item.scoreStatus=='4')&& item.rankStatus == '1'"
>
<button
@
click=
"scoreEdit(item)"
>
成绩维护
</button>
</view>
-->
</view>
</view>
<view
class=
"nodata"
v-if=
"infoList.length==0"
>
<image
mode=
"aspectFit"
src=
"/static/nodata.png"
></image>
<text>
暂无数据
</text>
</view>
</view>
</
template
>
<
script
setup
>
import
*
as
examApi
from
'@/common/api_exam.js'
import
_
from
'lodash'
import
{
ref
}
from
'vue'
import
{
onLoad
,
onShow
}
from
'@dcloudio/uni-app'
const
app
=
getApp
();
const
queryParams
=
ref
({
status
:
'0'
,
rankStatus
:
'1'
})
const
current
=
ref
()
const
navs
=
ref
([
'审核中'
,
'审核通过'
,
'审核拒绝'
])
const
statusArr
=
[
'审批中'
,
'审批通过'
,
'审批拒绝'
,
'审批撤回'
]
const
deptType
=
ref
(
''
)
const
infoList
=
ref
([])
const
total
=
ref
(
0
)
onLoad
((
options
)
=>
{
queryParams
.
value
.
type
=
options
.
type
if
(
options
.
type
==
2
)
{
uni
.
setNavigationBarTitle
({
title
:
'段位成绩录入'
})
}
if
(
options
.
type
==
3
)
{
uni
.
setNavigationBarTitle
({
title
:
'越段成绩录入'
})
}
})
onShow
(()
=>
{
if
(
app
.
globalData
.
isLogin
)
{
init
()
}
else
{
app
.
firstLoadCallback
=
()
=>
{
init
()
};
}
})
function
init
()
{
uni
.
showLoading
({
title
:
'加载中'
})
deptType
.
value
=
app
.
globalData
.
deptType
getList
()
}
function
onClickItem
(
e
)
{
uni
.
showLoading
({
title
:
'加载中'
})
queryParams
.
value
.
status
=
e
.
currentIndex
getList
()
}
function
getList
()
{
examApi
.
getRankScoreList
(
queryParams
.
value
).
then
(
res
=>
{
infoList
.
value
=
res
.
rows
total
.
value
=
res
.
total
uni
.
hideLoading
()
})
}
function
scoreEdit
(
item
)
{
console
.
log
(
item
.
sourceData
)
var
obj
=
{
flag
:
flag
,
reason
:
null
,
id
:
item
.
recordId
}
if
(
flag
==
'2'
)
{
// 拒绝
// 弹出框填写理由
uni
.
showModal
({
title
:
'请输入拒绝理由'
,
editable
:
true
,
success
:
function
(
res
)
{
if
(
res
.
confirm
)
{
if
(
!
res
.
content
)
{
uni
.
showToast
({
title
:
'请输入拒绝理由'
,
icon
:
'none'
})
}
else
{
obj
.
reason
=
res
.
content
doApproval
(
obj
)
}
}
}
})
}
else
if
(
flag
==
'1'
)
{
// 二次确认
uni
.
showModal
({
title
:
'提示'
,
content
:
`确定审批通过吗`
,
success
:
function
(
res
)
{
if
(
res
.
confirm
)
{
doApproval
(
obj
)
}
}
})
}
}
function
doApproval
(
obj
)
{
examApi
.
doMergeFlows
(
obj
).
then
((
res
)
=>
{
uni
.
showToast
({
title
:
'操作成功'
,
icon
:
'none'
})
getList
()
})
}
function
goDetail
(
item
)
{
let
path
=
`/pages/rank/applyDetail?examId=
${
item
.
examId
}
`
uni
.
navigateTo
({
url
:
path
});
}
</
script
>
<
style
lang=
"scss"
scoped
>
</
style
>
\ No newline at end of file
...
...
pages/index/index.vue
View file @
8630af2
This diff is collapsed.
Click to expand it.
pages/rank/scoreApproval.vue
View file @
8630af2
<
template
>
<view>
<uni-segmented-control
class=
"whitebg"
:current=
"current"
:values=
"navs"
@
clickItem=
"onClickItem"
styleType=
"text"
activeColor=
"#AD181F"
></uni-segmented-control>
<!-- 段位考试审核 -->
<view
class=
"appList"
>
<view
class=
"appItem"
v-for=
"item in infoList"
:key=
"item.recordId"
>
<view
@
click=
"goDetail(item)"
>
<view
class=
"status"
>
<text
:class=
"
{
'text-primary':item.auditStatus=='0',
'text-success':item.auditStatus=='1',
'text-danger':item.auditStatus=='2',
'text-warning':item.auditStatus=='3'
}">
{{
item
.
statusStr
}}
</text>
</view>
<view
class=
"date"
v-if=
"item.status!='0'&&item.submitTime"
>
<uni-icons
type=
"calendar-filled"
size=
"16"
color=
"#AD181F"
></uni-icons>
提交时间:
{{
item
.
submitTime
}}
</view>
<view
class=
"name mt10"
><text
class=
"dot"
></text>
{{
item
.
name
}}
</view>
<view
class=
"pp esp"
>
考段日期:
{{
item
.
startTime
.
substring
(
0
,
16
)
}}
至
{{
item
.
endTime
.
substring
(
0
,
16
)
}}
</view>
<view
class=
"flexbox"
>
<view>
申请日期
<view>
{{
item
.
applyTime
.
substring
(
0
,
10
)
}}
</view>
</view>
<view>
考段考生数
<view>
{{
item
.
totalNum
}}
</view>
</view>
<view>
总金额
<view>
<text
class=
"text-danger"
>
¥
{{
(
item
.
totalAmount
*
1
).
toFixed
(
2
)
}}
</text>
</view>
</view>
</view>
</view>
<view
class=
"func"
v-if=
"item.auditStatus=='0'"
>
<button
@
click=
"audit(item,'2')"
>
拒绝
</button>
<button
@
click=
"audit(item,'1')"
>
同意
</button>
</view>
</view>
</view>
<view
class=
"nodata"
v-if=
"infoList.length==0"
>
<image
mode=
"aspectFit"
src=
"/static/nodata.png"
></image>
<text>
暂无数据
</text>
</view>
</view>
</
template
>
<
script
setup
>
import
*
as
examApi
from
'@/common/api_exam.js'
import
_
from
'lodash'
import
{
ref
}
from
'vue'
import
{
onLoad
,
onShow
}
from
'@dcloudio/uni-app'
const
app
=
getApp
();
const
queryParams
=
ref
({
status
:
'0'
,
rankStatus
:
'1'
})
const
current
=
ref
()
const
navs
=
ref
([
'审核中'
,
'审核通过'
,
'审核拒绝'
])
const
statusArr
=
[
'审批中'
,
'审批通过'
,
'审批拒绝'
,
'审批撤回'
]
const
deptType
=
ref
(
''
)
const
infoList
=
ref
([])
const
total
=
ref
(
0
)
onLoad
((
options
)
=>
{
queryParams
.
value
.
type
=
options
.
type
})
onShow
(()
=>
{
if
(
app
.
globalData
.
isLogin
)
{
init
()
}
else
{
app
.
firstLoadCallback
=
()
=>
{
init
()
};
}
})
function
init
(){
uni
.
showLoading
({
title
:
'加载中'
})
deptType
.
value
=
app
.
globalData
.
deptType
getList
()
}
function
onClickItem
(
e
)
{
uni
.
showLoading
({
title
:
'加载中'
})
queryParams
.
value
.
status
=
e
.
currentIndex
getList
()
}
function
getList
()
{
examApi
.
getVerityList
(
queryParams
.
value
).
then
(
res
=>
{
uni
.
hideLoading
()
const
list
=
[]
_
.
each
(
res
.
rows
,
r
=>
{
const
item
=
JSON
.
parse
(
r
.
content
)
item
.
recordId
=
r
.
recordId
item
.
auditStatus
=
r
.
auditStatus
item
.
submitStatus
=
r
.
submitStatus
item
.
distributeTime
=
r
.
distributeTime
item
.
statusStr
=
statusArr
[
r
.
auditStatus
]
item
.
sourceData
=
r
item
.
scoreStatus
=
r
.
scoreStatus
item
.
status
=
r
.
status
item
.
isView
=
r
.
isView
item
.
payStatus
=
r
.
payStatus
item
.
rankStatus
=
r
.
rankStatus
item
.
processCentBar
=
r
.
processCentBar
list
.
push
(
item
)
})
infoList
.
value
=
list
total
.
value
=
res
.
total
})
}
function
audit
(
item
,
flag
)
{
console
.
log
(
item
.
sourceData
)
var
obj
=
{
flag
:
flag
,
reason
:
null
,
id
:
item
.
recordId
}
if
(
flag
==
'2'
)
{
// 拒绝
// 弹出框填写理由
uni
.
showModal
({
title
:
'请输入拒绝理由'
,
editable
:
true
,
success
:
function
(
res
)
{
if
(
res
.
confirm
)
{
if
(
!
res
.
content
)
{
uni
.
showToast
({
title
:
'请输入拒绝理由'
,
icon
:
'none'
})
}
else
{
obj
.
reason
=
res
.
content
doApproval
(
obj
)
}
}
}
})
}
else
if
(
flag
==
'1'
)
{
// 二次确认
uni
.
showModal
({
title
:
'提示'
,
content
:
`确定审批通过吗`
,
success
:
function
(
res
)
{
if
(
res
.
confirm
)
{
doApproval
(
obj
)
}
}
})
}
}
function
doApproval
(
obj
)
{
examApi
.
doMergeFlows
(
obj
).
then
((
res
)
=>
{
uni
.
showToast
({
title
:
'操作成功'
,
icon
:
'none'
})
getList
()
})
}
function
goDetail
(
item
)
{
let
path
=
`/pages/rank/applyDetail?examId=
${
item
.
examId
}
`
uni
.
navigateTo
({
url
:
path
});
}
</
script
>
<
style
lang=
"scss"
scoped
>
</
style
>
<
template
>
<view>
<uni-segmented-control
class=
"whitebg"
:current=
"current"
:values=
"navs"
@
clickItem=
"onClickItem"
styleType=
"text"
activeColor=
"#AD181F"
></uni-segmented-control>
<!-- 段位考试审核 -->
<view
class=
"appList"
>
<view
class=
"appItem"
v-for=
"item in infoList"
:key=
"item.recordId"
>
<view
@
click=
"goDetail(item)"
>
<view
class=
"status"
>
<text
:class=
"
{
'text-primary':item.auditStatus=='0',
'text-success':item.auditStatus=='1',
'text-danger':item.auditStatus=='2',
'text-warning':item.auditStatus=='3'
}">
{{
item
.
statusStr
}}
</text>
</view>
<view
class=
"date"
v-if=
"item.status!='0'&&item.submitTime"
>
<uni-icons
type=
"calendar-filled"
size=
"16"
color=
"#AD181F"
></uni-icons>
提交时间:
{{
item
.
submitTime
}}
</view>
<view
class=
"name mt10"
><text
class=
"dot"
></text>
{{
item
.
name
}}
</view>
<view
class=
"pp esp"
>
考段日期:
{{
item
.
startTime
.
substring
(
0
,
16
)
}}
至
{{
item
.
endTime
.
substring
(
0
,
16
)
}}
</view>
<view
class=
"flexbox"
>
<view>
申请日期
<view>
{{
item
.
applyTime
.
substring
(
0
,
10
)
}}
</view>
</view>
<view>
考段考生数
<view>
{{
item
.
totalNum
}}
</view>
</view>
<view>
总金额
<view>
<text
class=
"text-danger"
>
¥
{{
(
item
.
totalAmount
*
1
).
toFixed
(
2
)
}}
</text>
</view>
</view>
</view>
</view>
<view
class=
"func"
v-if=
"item.auditStatus=='0'"
>
<button
@
click=
"audit(item,'2')"
>
拒绝
</button>
<button
@
click=
"audit(item,'1')"
>
同意
</button>
</view>
</view>
</view>
<view
class=
"nodata"
v-if=
"infoList.length==0"
>
<image
mode=
"aspectFit"
src=
"/static/nodata.png"
></image>
<text>
暂无数据
</text>
</view>
</view>
</
template
>
<
script
setup
>
import
*
as
examApi
from
'@/common/api_exam.js'
import
_
from
'lodash'
import
{
ref
}
from
'vue'
import
{
onLoad
,
onShow
}
from
'@dcloudio/uni-app'
const
app
=
getApp
();
const
queryParams
=
ref
({
status
:
'0'
,
rankStatus
:
'1'
})
const
current
=
ref
()
const
navs
=
ref
([
'审核中'
,
'审核通过'
,
'审核拒绝'
])
const
statusArr
=
[
'审批中'
,
'审批通过'
,
'审批拒绝'
,
'审批撤回'
]
const
deptType
=
ref
(
''
)
const
infoList
=
ref
([])
const
total
=
ref
(
0
)
onLoad
((
options
)
=>
{
queryParams
.
value
.
type
=
options
.
type
if
(
options
.
type
==
2
)
{
uni
.
setNavigationBarTitle
({
title
:
'段位考试审核'
})
}
if
(
options
.
type
==
3
)
{
uni
.
setNavigationBarTitle
({
title
:
'越段考试审核'
})
}
})
onShow
(()
=>
{
if
(
app
.
globalData
.
isLogin
)
{
init
()
}
else
{
app
.
firstLoadCallback
=
()
=>
{
init
()
};
}
})
function
init
()
{
uni
.
showLoading
({
title
:
'加载中'
})
deptType
.
value
=
app
.
globalData
.
deptType
getList
()
}
function
onClickItem
(
e
)
{
uni
.
showLoading
({
title
:
'加载中'
})
queryParams
.
value
.
status
=
e
.
currentIndex
getList
()
}
function
getList
()
{
examApi
.
getVerityList
(
queryParams
.
value
).
then
(
res
=>
{
uni
.
hideLoading
()
const
list
=
[]
_
.
each
(
res
.
rows
,
r
=>
{
const
item
=
JSON
.
parse
(
r
.
content
)
item
.
recordId
=
r
.
recordId
item
.
auditStatus
=
r
.
auditStatus
item
.
submitStatus
=
r
.
submitStatus
item
.
distributeTime
=
r
.
distributeTime
item
.
statusStr
=
statusArr
[
r
.
auditStatus
]
item
.
sourceData
=
r
item
.
scoreStatus
=
r
.
scoreStatus
item
.
status
=
r
.
status
item
.
isView
=
r
.
isView
item
.
payStatus
=
r
.
payStatus
item
.
rankStatus
=
r
.
rankStatus
item
.
processCentBar
=
r
.
processCentBar
list
.
push
(
item
)
})
infoList
.
value
=
list
total
.
value
=
res
.
total
})
}
function
audit
(
item
,
flag
)
{
console
.
log
(
item
.
sourceData
)
var
obj
=
{
flag
:
flag
,
reason
:
null
,
id
:
item
.
recordId
}
if
(
flag
==
'2'
)
{
// 拒绝
// 弹出框填写理由
uni
.
showModal
({
title
:
'请输入拒绝理由'
,
editable
:
true
,
success
:
function
(
res
)
{
if
(
res
.
confirm
)
{
if
(
!
res
.
content
)
{
uni
.
showToast
({
title
:
'请输入拒绝理由'
,
icon
:
'none'
})
}
else
{
obj
.
reason
=
res
.
content
doApproval
(
obj
)
}
}
}
})
}
else
if
(
flag
==
'1'
)
{
// 二次确认
uni
.
showModal
({
title
:
'提示'
,
content
:
`确定审批通过吗`
,
success
:
function
(
res
)
{
if
(
res
.
confirm
)
{
doApproval
(
obj
)
}
}
})
}
}
function
doApproval
(
obj
)
{
examApi
.
doMergeFlows
(
obj
).
then
((
res
)
=>
{
uni
.
showToast
({
title
:
'操作成功'
,
icon
:
'none'
})
getList
()
})
}
function
goDetail
(
item
)
{
let
path
=
`/pages/rank/applyDetail?examId=
${
item
.
examId
}
`
uni
.
navigateTo
({
url
:
path
});
}
</
script
>
<
style
lang=
"scss"
scoped
>
</
style
>
\ No newline at end of file
...
...
personalVip/addVip.vue
View file @
8630af2
...
...
@@ -155,7 +155,7 @@
value
:
'3'
,
text
:
"外国护照"
},
{
value
:
'
5
'
,
value
:
'
4
'
,
text
:
'户口本'
}
])
...
...
@@ -188,7 +188,8 @@
});
onLoad
((
option
)
=>
{
if
(
option
.
tab
==
'1'
)
{
current
.
value
=
1
current
.
value
=
1
baseFormData
.
value
.
idcType
=
option
.
idcType
||
0
}
// console.log(current.value,option.tab)
getRegionsList
()
...
...
@@ -289,7 +290,7 @@
baseFormData
.
value
=
{
photo
:
''
,
sex
:
'0'
,
idcType
:
'0'
,
idcType
:
baseFormData
.
value
.
idcType
,
perType
:
'1'
,
};
}
...
...
@@ -452,7 +453,7 @@
})
return
}
if
(
baseFormData
.
value
.
idcType
==
1
||
baseFormData
.
value
.
idcType
==
3
||
baseFormData
.
value
.
idcType
==
4
)
{
if
(
baseFormData
.
value
.
idcType
==
3
)
{
//转换为大写并判断位数12
baseFormData
.
value
.
idcCode
=
baseFormData
.
value
.
idcCode
.
toUpperCase
()
// var regex = /^[a-zA-Z]/
...
...
@@ -491,15 +492,9 @@
icon
:
'none'
})
uni
.
redirectTo
({
url
:
`/personalVip/addVip?tab=
${
current
.
value
}
`
url
:
`/personalVip/addVip?tab=
${
current
.
value
}
&idcType=
${
baseFormData
.
value
.
idcType
}
`
});
}).
catch
(()
=>
{
let
msg
=
'您已注册该会员,请不要重复注册!'
uni
.
showToast
({
title
:
msg
,
icon
:
'none'
})
})
}
}
...
...
personalVip/mobilizeDetail.vue
View file @
8630af2
...
...
@@ -9,10 +9,12 @@
<view
class=
"photobox"
>
<view
class=
"colorful"
>
{{
n
.
perName
?.
slice
(
0
,
1
)
}}
</view>
</view>
<view>
<view>
<!--
{{
form
}}
-->
<view
class=
"name"
>
{{
n
.
perName
}}
</view>
<view
class=
"date"
>
申请调入一级协会
{{
n
.
sourceShenDeptName
||
'--'
}}
</view>
<view
class=
"date"
>
申请调入单位
{{
n
.
targetDeptName
||
'--'
}}
</view>
<view
class=
"date"
v-if=
"deptType==1"
>
原一级协会
<text
class=
"text-primary"
>
{{
n
.
sourceShenDeptName
||
'--'
}}
</text></view>
<view
class=
"date"
>
申请调入一级协会
<text
class=
"text-primary"
>
{{
form
.
shenDeptName
||
'--'
}}
</text></view>
<view
class=
"date"
>
申请调入单位
<text
class=
"text-primary"
>
{{
n
.
targetDeptName
||
'--'
}}
</text></view>
</view>
</view>
</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