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
37a8c626
authored
2026-04-15 19:26:40 +0800
by
张猛
Browse Files
Options
Browse Files
Tag
Download
Email Patches
Plain Diff
团体审核
1 parent
584ddc04
Hide whitespace changes
Inline
Side-by-side
Showing
5 changed files
with
926 additions
and
1001 deletions
common/api.js
config.js
group/apply/applyList.vue
group/apply/mergeUpDetail.vue
level/ztx/memberAudit.vue
common/api.js
View file @
37a8c62
...
...
@@ -500,6 +500,15 @@ export function getGroupList(params) {
})
}
// 会员审核列表
export
function
listNewAPI
(
params
)
{
return
request
({
url
:
`/system/certifiedNew/list`
,
method
:
'get'
,
params
})
}
// 查询
export
function
pickUp
(
data
)
{
return
request
({
...
...
@@ -733,6 +742,22 @@ export function groupAudit(data) {
})
}
export
function
ztxAudit
(
params
)
{
return
request
({
url
:
`/system/certifiedNew/audit/
${
params
.
ids
}
?flag=
${
params
.
flag
}
&reason=
${
params
.
reason
}
`
,
method
:
'post'
,
params
})
}
export
function
shenAudit
(
params
)
{
return
request
({
url
:
`/system/certifiedNew/shenAudit/
${
params
.
ids
}
?flag=
${
params
.
flag
}
&reason=
${
params
.
reason
}
`
,
method
:
'post'
,
params
})
}
export
function
groupMergeApi
(
data
)
{
return
request
({
url
:
`/member/certified/merge`
,
...
...
@@ -1894,3 +1919,16 @@ export function getExamInfo(examId) {
})
}
/**
* 团体考试记录
* @param id
* @returns {*}
*/
export
function
GroupGetLogs
(
id
)
{
return
request
({
url
:
`/system/certifiedNew/getLogs/
${
id
}
`
,
method
:
'get'
})
}
...
...
config.js
View file @
37a8c62
// 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'
...
...
group/apply/applyList.vue
View file @
37a8c62
<
template
>
<view>
<view
class=
"text-center whitebg"
v-if=
"userType=='2'"
>
<view
class=
"cardNav"
>
<view
class=
"active"
>
审核
</view>
<view
@
click=
"goMerge"
>
合并
</view>
<view
@
click=
"goMergeUp"
>
提交
</view>
</view>
</view>
<!-- 团队会员审核 -->
<uni-segmented-control
class=
"whitebg"
:current=
"current"
:values=
"navs"
@
clickItem=
"onClickItem"
styleType=
"text"
activeColor=
"#AD181F"
></uni-segmented-control>
<view
class=
"appList"
>
<view
class=
"vipData"
v-if=
"userType == '1'"
v-show=
"totalCost>0"
>
<view>
费用合计:
<text>
¥
{{
totalCost
.
toFixed
(
2
)
}}
</text>
</view>
</view>
<view
class=
"appItem"
v-for=
"(item,index) in list"
:key=
"index"
>
<view
class=
"status"
@
click=
"goDetail(item)"
>
<text
v-if=
"item.auditStatus == 0"
class=
"text-primary"
>
审核中
</text>
<text
v-if=
"item.auditStatus == 1"
class=
"text-success"
>
审核通过
</text>
<text
v-if=
"item.auditStatus == 2"
class=
"text-danger"
>
审核拒绝
</text>
<text
v-if=
"item.auditStatus == 3"
class=
"text-warning"
>
审核撤回
</text>
</view>
<view
class=
"date"
>
<uni-icons
type=
"calendar-filled"
size=
"16"
color=
"#AD181F"
></uni-icons>
{{
item
.
content
.
commitTime
}}
提交
</view>
<view
class=
"text-primary"
@
click=
"goDetail(item)"
v-if=
"item.content?.wfCode"
>
{{
item
.
content
?.
wfCode
}}
</view>
<view
class=
"name w100 mt0"
@
click=
"goDetail(item)"
>
<!--
<text
class=
"dot"
></text>
-->
{{
item
.
content
.
certName
}}
</view>
<view
class=
"flexbox"
@
click=
"goDetail(item)"
>
<view
v-if=
"userType == '3'"
>
所属省份
<view>
{{
item
.
content
.
province
}}
</view>
</view>
<view
v-if=
"userType == '2'"
>
所属一级
<view>
{{
item
.
content
.
firstDeptName
}}
</view>
</view>
<view
v-if=
"userType == '2'"
>
所属二级
<view>
{{
item
.
content
.
secondDeptName
}}
</view>
</view>
<view
v-if=
"deptType == 1"
>
会员/新会员/年限
<view>
{{
item
.
content
.
allCount
}}
/
<text
class=
"text-danger"
>
{{
item
.
content
.
newCount
}}
</text>
/
{{
item
.
content
.
renewYear
}}
</view>
</view>
<view
v-else
>
年限
<view>
{{
item
.
content
.
renewYear
}}
</view>
</view>
<view
v-if=
"deptType == 1"
>
费用合计
<view>
¥
{{
(
item
?.
content
?.
allFee
*
1
).
toFixed
(
2
)
}}
</view>
</view>
<view
v-if=
"deptType == 1"
@
click
.
stop=
"viewSettleFile(item.doc)"
>
缴费状态
<view>
<text
v-if=
"item.doc?.settleFlag==0"
class=
"text-warning"
>
已结算
</text>
<text
v-if=
"item.doc?.settleFlag==1&&item.doc.payFlag==0"
class=
"text-success"
>
已上传
</text>
<text
v-if=
"item.doc?.settleFlag==1&&item.doc.payFlag==1"
class=
"text-danger"
>
未上传
</text>
</view>
</view>
</view>
<view
class=
"func"
v-if=
"(userType == '1'&&item.auditStatus == 0)"
>
<button
@
click=
"audit(item.recordId,'0')"
>
拒绝
</button>
<button
@
click=
"audit(item.recordId,'1')"
>
同意
</button>
</view>
<!-- 中跆协 -->
<view
class=
"func"
v-if=
"(userType == '1'&&item.auditStatus == 1&&item.canTui==1)"
>
<button
@
click=
"sendBack(item)"
>
撤回
</button>
</view>
<!-- 市 -->
<view
class=
"func"
v-if=
"userType == '3'"
>
<button
@
click=
"goGroupInfo(item)"
>
机构资料
</button>
<button
v-if=
"item.auditStatus == 1&&item.isView==1&&item.content.allCount > 0"
@
click=
"sendBack(item)"
>
撤回
</button>
<button
v-if=
"item.auditStatus == 0"
@
click=
"audit(item.recordId,'0')"
>
拒绝
</button>
<button
v-if=
"item.auditStatus == 0"
@
click=
"audit(item.recordId,'1')"
>
同意
</button>
</view>
<!-- 省 -->
<view
class=
"func"
v-if=
"userType == '2'"
>
<button
@
click=
"goGroupInfo(item)"
>
机构资料
</button>
<button
v-if=
"item.auditStatus == 1"
@
click=
"sendBack(item)"
>
撤回
</button>
<button
v-if=
"item.auditStatus == 0"
@
click=
"audit(item.recordId,'0')"
>
拒绝
</button>
<button
v-if=
"item.auditStatus == 0"
@
click=
"audit(item.recordId,'1')"
>
同意
</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
v-if=
"userType=='2'"
class=
"block-btn-box"
>
<button
@
click=
"goMerge"
class=
"btn-red-kx"
>
前往合并 >
</button>
</view>
-->
</view>
<view>
<!-- 团队会员审核 -->
<uni-segmented-control
:current=
"current"
:values=
"navs"
activeColor=
"#AD181F"
class=
"whitebg"
styleType=
"text"
@
clickItem=
"onClickItem"
></uni-segmented-control>
<view
class=
"appList"
>
<view
v-show=
"statistical.totalCost>0"
class=
"vipData"
>
<view>
费用合计:
<text>
¥
{{
statistical
.
totalCost
.
toFixed
(
2
)
}}
</text>
</view>
</view>
<view
v-for=
"(item,index) in list"
:key=
"index"
class=
"appItem"
>
<view
class=
"status"
@
click=
"goDetail(item)"
>
<text
v-if=
"item.auditStatus == 1"
class=
"text-primary"
>
审核中
</text>
<text
v-if=
"item.auditStatus == 2"
class=
"text-success"
>
审核通过
</text>
<text
v-if=
"item.auditStatus == 3"
class=
"text-danger"
>
审核拒绝
</text>
</view>
<view
class=
"date"
>
<uni-icons
color=
"#AD181F"
size=
"16"
type=
"calendar-filled"
></uni-icons>
{{
item
.
commitTime
}}
提交
</view>
<view
v-if=
"item.wfCode"
>
{{
item
?.
wfCode
}}
</view>
<view
class=
"name w100 mt0"
@
click=
"goDetail(item)"
>
{{
item
.
memName
}}
</view>
<view
class=
"text"
@
click=
"goDetail(item)"
>
{{
item
.
shenMemName
}}
</view>
<view
class=
"flexbox"
@
click=
"goDetail(item)"
>
<view>
新会员/年限
<view>
{{
item
.
isNew
==
1
?
'是'
:
"否"
}}
/
{{
item
.
renewYear
}}
</view>
</view>
<view>
费用合计
<view>
{{
(
item
.
allPrice
*
1
).
toFixed
(
2
)
}}
</view>
</view>
<view>
政策优惠
<view>
<text
class=
"text-danger"
>
{{
item
.
discount
?
item
.
discount
:
'--'
}}
</text>
</view>
</view>
<view>
付款费用
<view>
<text
class=
"text-warning"
>
¥
{{
item
.
finalPrice
}}
</text>
</view>
</view>
<view>
协会信息
<view>
<text
:class=
"
{'text-danger':item.checkPass == 0 }">
{{
item
.
checkPass
==
0
?
'异常'
:
'正常'
}}
</text>
</view>
</view>
</view>
<view
class=
"func"
>
<button
@
click=
"goGroupInfo(item)"
>
机构资料
</button>
<button
v-if=
"queryParams.auditStatus==1"
@
click=
"audit(item.id,'0')"
>
拒绝
</button>
<button
v-if=
"queryParams.auditStatus==1"
@
click=
"audit(item.id,'1')"
>
同意
</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
v-if=
"userType=='2'"
class=
"block-btn-box"
>
<button
@
click=
"goMerge"
class=
"btn-red-kx"
>
前往合并 >
</button>
</view>
-->
</view>
</
template
>
<
script
setup
>
import
*
as
api
from
'@/common/api.js'
import
config
from
'@/config.js'
import
{
onMounted
,
ref
}
from
'vue'
import
{
onLoad
}
from
'@dcloudio/uni-app'
const
app
=
getApp
();
const
queryParams
=
ref
({
// pageNum: 1,
// pageSize: 10
auditStatus
:
'0'
})
const
navs
=
ref
([
'审核中'
,
'审核通过'
,
'审核拒绝'
,
'撤回'
])
const
current
=
ref
()
const
list
=
ref
([])
const
total
=
ref
(
0
)
const
deptType
=
ref
(
''
)
const
userType
=
ref
(
''
)
const
totalCost
=
ref
(
0
)
onLoad
(()
=>
{
if
(
app
.
globalData
.
isLogin
)
{
init
()
}
else
{
import
*
as
api
from
'@/common/api.js'
import
config
from
'@/config.js'
import
{
onMounted
,
ref
}
from
'vue'
import
{
onLoad
}
from
'@dcloudio/uni-app'
app
.
firstLoadCallback
=
()
=>
{
init
()
};
}
})
const
app
=
getApp
();
const
queryParams
=
ref
({
auditStatus
:
'1'
})
const
navs
=
ref
([
'审核中'
,
'审核通过'
,
'审核拒绝'
])
const
current
=
ref
()
const
list
=
ref
([])
const
total
=
ref
(
0
)
const
deptType
=
ref
(
''
)
const
userType
=
ref
(
''
)
const
totalCost
=
ref
(
0
)
const
statistical
=
ref
({})
onLoad
(()
=>
{
if
(
app
.
globalData
.
isLogin
)
{
init
()
}
else
{
app
.
firstLoadCallback
=
()
=>
{
init
()
};
}
})
function
init
()
{
deptType
.
value
=
app
.
globalData
.
deptType
userType
.
value
=
app
.
globalData
.
userType
// console.log(userType.value)
getList
()
}
function
init
()
{
deptType
.
value
=
app
.
globalData
.
deptType
userType
.
value
=
app
.
globalData
.
userType
// console.log(userType.value)
getList
()
}
function
onClickItem
(
e
)
{
console
.
log
(
e
)
queryParams
.
value
.
auditStatus
=
e
.
currentIndex
getList
()
}
function
onClickItem
(
e
)
{
queryParams
.
value
.
auditStatus
=
e
.
currentIndex
+
1
getList
()
}
function
getList
()
{
uni
.
showLoading
({
title
:
'加载中'
,
mask
:
true
})
if
(
deptType
.
value
==
2
||
deptType
.
value
==
3
)
{
// 省
queryParams
.
value
.
mergeFlag
=
0
}
else
if
(
deptType
.
value
==
1
)
{
queryParams
.
value
.
noEmpty
=
1
}
else
if
(
deptType
.
value
==
4
||
deptType
.
value
==
5
)
{
queryParams
.
value
.
noEmpty
=
1
}
totalCost
.
value
=
0
api
.
getGroupList
(
queryParams
.
value
).
then
(
res
=>
{
uni
.
hideLoading
()
list
.
value
=
res
.
rows
list
.
value
.
forEach
(
item
=>
{
item
.
content
=
JSON
.
parse
(
item
.
content
)
if
(
item
.
doc
){
item
.
doc
=
JSON
.
parse
(
item
.
doc
)
}
totalCost
.
value
=
totalCost
.
value
+
(
item
.
content
.
allFee
*
1
)
})
total
.
value
=
res
.
total
})
}
async
function
getList
()
{
uni
.
showLoading
({
title
:
'加载中'
,
mask
:
true
})
statistical
.
value
=
{
allCount
:
0
,
totalCost
:
0
,
renewYear
:
0
,
newCount
:
0
}
const
res
=
await
api
.
listNewAPI
(
queryParams
.
value
)
list
.
value
=
res
.
rows
for
(
const
val
of
list
.
value
)
{
statistical
.
value
.
renewYear
+=
val
.
renewYear
statistical
.
value
.
totalCost
+=
val
.
finalPrice
*
1
if
(
val
.
isNew
==
1
)
{
statistical
.
value
.
newCount
+=
1
}
statistical
.
value
.
allCount
+=
1
}
total
.
value
=
res
.
total
}
function
audit
(
recordId
,
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
(
recordId
,
flag
,
res
.
content
)
}
}
}
})
}
else
if
(
flag
==
'1'
)
{
// 二次确认
uni
.
showModal
({
title
:
'提示'
,
content
:
`确定审批通过吗`
,
success
:
function
(
res
)
{
if
(
res
.
confirm
)
{
doApproval
(
recordId
,
flag
)
}
}
})
}
}
function
audit
(
recordId
,
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
(
recordId
,
flag
,
res
.
content
)
}
}
}
})
}
else
if
(
flag
==
'1'
)
{
// 二次确认
uni
.
showModal
({
title
:
'提示'
,
content
:
`确定审批通过吗`
,
success
:
function
(
res
)
{
if
(
res
.
confirm
)
{
doApproval
(
recordId
,
flag
)
}
}
})
}
}
function
doApproval
(
recordId
,
flag
,
reason
)
{
var
obj
=
{
flag
:
flag
,
reason
:
reason
||
''
,
recordI
ds
:
[]
}
obj
.
recordI
ds
.
push
(
recordId
)
console
.
log
(
obj
)
uni
.
showLoading
({
title
:
'加载中'
,
mask
:
true
})
api
.
group
Audit
(
obj
).
then
((
res
)
=>
{
uni
.
hideLoading
()
uni
.
showToast
({
title
:
'操作成功'
,
icon
:
'none'
})
getList
()
})
}
function
doApproval
(
recordId
,
flag
,
reason
)
{
let
obj
=
{
flag
:
flag
,
reason
:
reason
||
''
,
i
ds
:
[]
}
obj
.
i
ds
.
push
(
recordId
)
console
.
log
(
obj
)
uni
.
showLoading
({
title
:
'加载中'
,
mask
:
true
})
api
.
ztx
Audit
(
obj
).
then
((
res
)
=>
{
uni
.
hideLoading
()
uni
.
showToast
({
title
:
'操作成功'
,
icon
:
'none'
})
getList
()
})
}
function
goDetail
(
item
)
{
const
auditLog
=
encodeURIComponent
(
JSON
.
stringify
(
item
.
auditLog
))
const
form
=
encodeURIComponent
(
JSON
.
stringify
(
item
))
function
goDetail
(
item
)
{
const
form
=
encodeURIComponent
(
JSON
.
stringify
(
item
))
if
(
userType
.
value
==
'1'
)
{
// 查看
let
path
=
`/group/apply/mergeUpDetail?form=
${
form
}
`
uni
.
navigateTo
({
url
:
path
});
}
if
(
userType
.
value
==
'2'
||
userType
.
value
==
'3'
)
{
// 审核记录
let
path
=
`/group/apply/record?certId=
${
item
.
content
.
certId
}
`
uni
.
navigateTo
({
url
:
path
});
}
}
if
(
userType
.
value
==
'1'
)
{
// 查看
let
path
=
`/group/apply/mergeUpDetail?form=
${
form
}
`
uni
.
navigateTo
({
url
:
path
});
}
else
if
(
userType
.
value
==
'2'
||
userType
.
value
==
'3'
)
{
// 审核记录
let
path
=
`/group/apply/record?certId=
${
item
.
content
.
certId
}
`
uni
.
navigateTo
({
url
:
path
});
}
}
function
goMerge
()
{
let
path
=
`/group/apply/merge`
uni
.
redirectTo
({
url
:
path
});
}
function
goMerge
()
{
let
path
=
`/group/apply/merge
`
uni
.
redirectTo
({
url
:
path
});
}
function
goMergeUp
()
{
let
path
=
`/group/apply/mergeUp
`
uni
.
redirectTo
({
url
:
path
});
}
function
goMergeUp
()
{
let
path
=
`/group/apply/mergeUp`
uni
.
redirectTo
({
url
:
path
});
}
function
sendBack
(
row
)
{
uni
.
showModal
({
title
:
'提示'
,
content
:
`确定撤回
${
row
.
content
.
certName
}
吗`
,
success
:
function
(
res
)
{
if
(
res
.
confirm
)
{
api
.
certifiedwithDraw
({
recordId
:
row
.
recordId
,
reason
:
row
.
reason
}).
then
(
res
=>
{
uni
.
showToast
({
title
:
'操作成功'
,
icon
:
'none'
})
getList
()
})
}
}
})
}
function
sendBack
(
row
)
{
uni
.
showModal
({
title
:
'提示'
,
content
:
`确定撤回
${
row
.
content
.
certName
}
吗`
,
success
:
function
(
res
)
{
if
(
res
.
confirm
)
{
api
.
certifiedwithDraw
({
recordId
:
row
.
recordId
,
reason
:
row
.
reason
}).
then
(
res
=>
{
uni
.
showToast
({
title
:
'操作成功'
,
icon
:
'none'
})
getList
()
})
function
goGroupInfo
(
row
)
{
uni
.
navigateTo
({
url
:
`/group/groupInfo?memId=
${
row
.
memId
}
`
})
}
}
}
})
}
function
viewSettleFile
(
doc
)
{
let
url
if
(
doc
.
payEvidence
)
{
url
=
JSON
.
parse
(
doc
.
payEvidence
)[
0
].
url
||
null
console
.
log
(
url
)
if
(
url
)
{
showImg
(
url
)
}
}
}
function
goGroupInfo
(
row
)
{
uni
.
navigateTo
({
url
:
`/group/groupInfo?memId=
${
row
.
content
?.
memId
}
`
})
}
function viewSettleFile(doc){
let url
if(doc.payEvidence){
url = JSON.parse(doc.payEvidence)[0].url || null
console.log(url)
if(url){showImg(url)}
}
}
function showImg(n) {
var str = ''
if(n.indexOf('http')==-1){
str = config.baseUrl_api + n
} else {
str = n
}
if (n.indexOf('png') > -1 || n.indexOf('jpg') > -1 || n.indexOf(
'jpeg') > -1) {
uni.previewImage({
urls: [str],
success: function(res) {
console.log('success', res)
},
fail: function(res) {
console.log('fail', res)
},
complete: function(res) {
console.log('complete', res)
}
})
} else {
goWebView(str)
}
}
function goWebView(url) {
url = url.replace("http://", "https://")
uni.showLoading({
title: '下载中'
});
uni.downloadFile({
url: url,
success: function(res) {
uni.hideLoading();
var filePath = res.tempFilePath;
uni.showLoading({
title: '正在打开'
});
uni.openDocument({
filePath: filePath,
showMenu: true,
success: function(res) {
uni.hideLoading();
},
fail: function(err) {
uni.hideLoading();
uni.showToast({
title: err,
icon: 'none',
duration: 2000
});
}
});
},
fail: function(error) {
uni.hideLoading();
uni.showToast({
title: `
下载失败
`,
icon: 'none',
duration: 2000
});
}
});
}
function
showImg
(
n
)
{
var
str
=
''
if
(
n
.
indexOf
(
'http'
)
==
-
1
)
{
str
=
config
.
baseUrl_api
+
n
}
else
{
str
=
n
}
if
(
n
.
indexOf
(
'png'
)
>
-
1
||
n
.
indexOf
(
'jpg'
)
>
-
1
||
n
.
indexOf
(
'jpeg'
)
>
-
1
)
{
uni
.
previewImage
({
urls
:
[
str
],
success
:
function
(
res
)
{
console
.
log
(
'success'
,
res
)
},
fail
:
function
(
res
)
{
console
.
log
(
'fail'
,
res
)
},
complete
:
function
(
res
)
{
console
.
log
(
'complete'
,
res
)
}
})
}
else
{
goWebView
(
str
)
}
}
function
goWebView
(
url
)
{
url
=
url
.
replace
(
"http://"
,
"https://"
)
uni
.
showLoading
({
title
:
'下载中'
});
uni
.
downloadFile
({
url
:
url
,
success
:
function
(
res
)
{
uni
.
hideLoading
();
var
filePath
=
res
.
tempFilePath
;
uni
.
showLoading
({
title
:
'正在打开'
});
uni
.
openDocument
({
filePath
:
filePath
,
showMenu
:
true
,
success
:
function
(
res
)
{
uni
.
hideLoading
();
},
fail
:
function
(
err
)
{
uni
.
hideLoading
();
uni
.
showToast
({
title
:
err
,
icon
:
'none'
,
duration
:
2000
});
}
});
},
fail
:
function
(
error
)
{
uni
.
hideLoading
();
uni
.
showToast
({
title
:
`下载失败`
,
icon
:
'none'
,
duration
:
2000
});
}
});
}
</
script
>
<
style
scoped
>
.mt0
{
margin-top
:
0
!important
;
}
.mt0
{
margin-top
:
0
!important
;
}
.appList
.appItem
.name
{
width
:
80%
;
word-break
:
break-all
;
}
.name
{
margin-bottom
:
10
rpx
!important
;
}
.appList
.appItem
.name
{
width
:
80%
;
word-break
:
break-all
;
}
</
style
>
\ No newline at end of file
.text
{
font-size
:
26
rpx
;
color
:
#999
;
margin-bottom
:
10
rpx
;
}
</
style
>
...
...
group/apply/mergeUpDetail.vue
View file @
37a8c62
<
template
>
<view
class=
"hasfixedbottom"
>
<view
class=
"wBox"
>
<view
class=
"tt"
>
{{
form
.
content
?.
certName
}}
</view>
<view>
<view
class=
"date"
v-if=
"form.content?.commitTime"
>
提交日期:
<text>
{{
form
.
content
?.
commitTime
}}
</text>
</view>
<view
class=
"date"
>
提交单位:
<text>
{{
form
.
content
?.
memberName
}}
</text>
</view>
</view>
<view
class=
"vipData mt30"
style=
"flex-wrap: wrap;padding: 20rpx;"
>
<view
class=
"w50"
>
团队会员合计:
<text>
{{
form
.
content
?.
allCount
}}
个
</text>
</view>
<view
class=
"w50"
>
新会员合计:
<text>
{{
form
.
content
?.
newCount
}}
个
</text>
</view>
<view
class=
"w50"
>
年限合计:
<text>
{{
form
.
content
?.
renewYear
}}
年
</text>
</view>
<view
class=
"w50"
>
费用合计:
<text>
{{
(
form
.
content
?.
allFee
*
1
).
toFixed
(
2
)
}}
元
</text>
</view>
</view>
<!-- 成员 -->
<view
class=
"userlist"
>
<view
class=
"item"
style=
"padding: 20rpx 0 0;"
v-for=
"(n,index) in list"
:key=
"index"
@
click=
"goGroupInfo(n)"
>
<view
style=
"width: 100%"
>
<view
class=
"name text-primary underLine"
>
{{
n
.
memberName
}}
</view>
<view
class=
"date"
>
单位类型:
<text
v-if=
"n.deptType==2"
>
一级协会
</text>
<text
v-if=
"n.deptType==3"
>
直属协会
</text>
<text
v-if=
"n.deptType==4"
>
二级协会
</text>
<text
v-if=
"n.deptType==5"
>
三级协会
</text>
<text
v-if=
"n.deptType==6"
>
职业性单位会员
</text>
</view>
<view
class=
"flexbox"
style=
"background-color: rgba(244, 249, 253, 1);padding:10rpx;"
>
<view>
<view>
原有效期
<text>
{{
n
.
validityTime
?.
slice
(
0
,
10
)
||
'-'
}}
</text>
</view>
<view>
提交日期
<text>
{{
n
.
commitTime
?.
slice
(
0
,
10
)
||
'-'
}}
</text>
</view>
</view>
<view>
年限
<text>
{{
n
.
renewYear
}}
</text>
<view
v-if=
"deptType==1"
>
会员证
<text
v-if=
"form.content?.sendJiaoFeiFlag==1"
class=
"text-success"
>
已下发
</text>
<text
v-else
class=
"text-warning"
>
未下发
</text>
</view>
</view>
<view>
单价
<text>
¥
{{
n
.
unitPrice
}}
</text>
<view>
总价
<text>
¥
{{
n
.
allFee
}}
</text>
</view>
</view>
</view>
</view>
</view>
</view>
</view>
<view
class=
"h3-padding"
>
审核记录
</view>
<view
class=
"wBox"
>
<view
class=
"stepItem"
v-for=
"(n,index) in auditList"
:key=
"index"
>
<view
class=
"time"
>
{{
n
.
handleDate
||
'待审批'
}}
</view>
<view
class=
"content"
>
<view
class=
"status"
>
<text
v-if=
"n.auditStatus==1"
class=
"text-success"
>
审核通过
</text>
<text
v-if=
"n.auditStatus==2"
class=
"text-danger"
>
审核拒绝
</text>
<text
v-if=
"n.auditStatus==0"
class=
"text-primary"
>
审核中
</text>
<text
v-if=
"n.auditStatus==3"
class=
"text-warning"
>
已撤回
</text>
<text
v-if=
"n.auditStatus==100"
class=
"text-primary"
>
审核中
</text>
</view>
<!--
<view
class=
"name"
>
第
{{
index
+
1
}}
步
</view>
-->
<view
class=
"deptName"
>
{{
n
.
handlerDeptName
}}
</view>
<view
v-if=
"n.reason"
>
备注:
{{
n
.
reason
||
'/'
}}
</view>
</view>
</view>
</view>
<!--
<view
class=
"fixedBottom"
v-if=
"(deptType == 1)&&form.auditStatus == 0"
>
<button
class=
"btn-red-kx"
@
click=
"audit(form.id,'2')"
>
拒绝
</button>
<button
class=
"btn-red"
@
click=
"audit(form.id,'1')"
>
同意
</button>
</view>
<view
class=
"fixedBottom"
v-if=
"(deptType == 2 || deptType == 3)&&form.auditStatus == 0"
>
<button
class=
"btn-red-kx"
@
click=
"audit(form.id,'2')"
>
拒绝
</button>
<button
class=
"btn-red"
@
click=
"audit(form.id,'1')"
>
同意
</button>
</view>
-->
</view>
<view
class=
"hasfixedbottom"
>
<view
class=
"wBox"
>
<view
class=
"tt"
>
{{
form
?.
certName
}}
</view>
<view>
<view
v-if=
"form.commitTime"
class=
"date"
>
提交日期:
<text>
{{
form
?.
commitTime
}}
</text>
</view>
<view
class=
"date"
>
提交单位:
<text>
{{
form
?.
memName
}}
</text>
</view>
</view>
<view
class=
"vipData mt30"
style=
"flex-wrap: wrap;padding: 20rpx;"
>
<view
class=
"w50"
>
年限合计:
<text>
{{
form
?.
renewYear
}}
个
</text>
</view>
<view
class=
"w50"
>
费用合计:
<text>
{{
form
?.
allPrice
}}
个
</text>
</view>
<view
class=
"w50"
>
政策优惠:
<text>
{{
form
?.
discount
}}
年
</text>
</view>
<view
class=
"w50"
>
付款费用:
<text>
{{
(
form
?.
finalPrice
*
1
).
toFixed
(
2
)
}}
元
</text>
</view>
</view>
<!-- 成员 -->
<view
class=
"userlist"
>
<view
v-for=
"(n,index) in list"
:key=
"index"
class=
"item"
style=
"padding: 20rpx 0 0;"
@
click=
"goGroupInfo(n)"
>
<view
style=
"width: 100%"
>
<view
class=
"name text-primary underLine"
>
{{
n
.
memberName
}}
</view>
<!--
<view
class=
"date"
>
单位类型:-->
<!--
<text
v-if=
"n.deptType==2"
>
一级协会
</text>
-->
<!--
<text
v-if=
"n.deptType==3"
>
直属协会
</text>
-->
<!--
<text
v-if=
"n.deptType==4"
>
二级协会
</text>
-->
<!--
<text
v-if=
"n.deptType==5"
>
三级协会
</text>
-->
<!--
<text
v-if=
"n.deptType==6"
>
职业性单位会员
</text>
-->
<!--
</view>
-->
<view
class=
"flexbox"
style=
"background-color: rgba(244, 249, 253, 1);padding:10rpx;"
>
<view>
<view>
原有效期
<text>
{{
n
.
originValidityTime
?.
slice
(
0
,
10
)
||
'-'
}}
</text>
</view>
<view>
提交日期
<text>
{{
n
.
commitTime
?.
slice
(
0
,
10
)
||
'-'
}}
</text>
</view>
</view>
<view>
年限
<text>
{{
n
.
renewYear
}}
</text>
</view>
<view>
费用
<text>
¥
{{
n
.
unitPrice
}}
</text>
<view>
总价
<text>
¥
{{
n
.
finalPrice
}}
</text>
</view>
</view>
</view>
</view>
</view>
</view>
</view>
<view
class=
"h3-padding"
>
审核记录
</view>
<view
class=
"wBox"
>
<view
v-for=
"(n,index) in auditList"
:key=
"index"
class=
"stepItem"
>
<view
class=
"time"
>
{{
form
.
auditTime
||
'待审批'
}}
</view>
<view
class=
"content"
>
<view
class=
"status"
>
<text
v-if=
"n.auditResult==1"
class=
"text-success"
>
审核通过
</text>
<text
v-if=
"n.auditResult!=1"
class=
"text-danger"
>
审核拒绝
</text>
</view>
<view
class=
"name"
>
{{
n
.
auditDeptName
}}
</view>
<!--
<view
class=
"name"
>
第
{{
index
+
1
}}
步
</view>
-->
<view
class=
"deptName"
>
{{
n
.
index
}}
</view>
<view
v-if=
"n.auditMsg"
>
备注:
{{
n
.
auditMsg
||
'/'
}}
</view>
</view>
</view>
</view>
</view>
</
template
>
<
script
setup
>
import
*
as
api
from
'@/common/api.js'
import
config
from
'@/config.js'
import
{
onMounted
,
ref
}
from
'vue'
import
{
onLoad
}
from
'@dcloudio/uni-app'
const
app
=
getApp
();
const
queryParams
=
ref
({
recordId
:
''
})
import
*
as
api
from
'@/common/api.js'
import
{
onMounted
,
ref
}
from
'vue'
import
{
onLoad
}
from
'@dcloudio/uni-app'
import
{
GroupGetLogs
}
from
"@/common/api.js"
;
const
form
=
ref
({})
const
list
=
ref
([])
const
listArr
=
ref
([])
const
id
=
ref
()
const
auditList
=
ref
([])
const
app
=
getApp
();
const
queryParams
=
ref
({
recordId
:
''
})
const
feelList
=
ref
([])
const
total
=
ref
(
0
)
const
totalYear
=
ref
(
0
)
const
deptType
=
ref
()
let
rangeId
=
''
onLoad
((
option
)
=>
{
if
(
'form'
in
option
)
{
form
.
value
=
JSON
.
parse
(
decodeURIComponent
(
option
.
form
))
}
list
.
value
=
form
.
content
?.
certifiedSimpleList
||
[]
listArr
.
value
=
form
.
content
?.
certifiedSimpleList
||
[]
queryParams
.
value
.
recordId
=
form
.
value
.
recordId
console
.
log
(
form
.
value
)
if
(
app
.
globalData
.
isLogin
)
{
init
()
}
else
{
const
form
=
ref
({})
const
list
=
ref
([])
const
listArr
=
ref
([])
const
id
=
ref
()
const
auditList
=
ref
([])
app
.
firstLoadCallback
=
()
=>
{
init
()
};
}
const
feelList
=
ref
([])
const
total
=
ref
(
0
)
const
totalYear
=
ref
(
0
)
const
deptType
=
ref
()
let
rangeId
=
''
onLoad
((
option
)
=>
{
if
(
'form'
in
option
)
{
form
.
value
=
JSON
.
parse
(
decodeURIComponent
(
option
.
form
))
list
.
value
=
[
form
.
value
]
GetLogs
()
}
console
.
log
(
form
.
value
)
//
// list.value = form.content?.certifiedSimpleList || []
// listArr.value = form.content?.certifiedSimpleList || []
// queryParams.value.recordId = form.value.recordId
// console.log(form.value)
// if (app.globalData.isLogin) {
// init()
// } else {
//
// app.firstLoadCallback = () => {
// init()
// };
// }
})
})
async
function
GetLogs
()
{
const
res
=
await
api
.
GroupGetLogs
(
form
.
value
.
id
)
auditList
.
value
=
res
.
data
}
function
init
()
{
deptType
.
value
=
app
.
globalData
.
deptType
getForm
()
}
function
init
()
{
deptType
.
value
=
app
.
globalData
.
deptType
getForm
()
}
function
getForm
()
{
uni
.
showLoading
({
title
:
'加载中'
})
api
.
getDetailList
(
queryParams
.
value
).
then
(
res
=>
{
uni
.
hideLoading
()
list
.
value
=
res
.
rows
list
.
value
[
0
].
rangeId
==
0
?
id
.
value
=
list
.
value
[
0
].
certId
:
id
.
value
=
list
.
value
[
0
].
rangeId
if
(
id
.
value
)
{
auditFN
()
}
})
}
function
getForm
()
{
uni
.
showLoading
({
title
:
'加载中'
})
api
.
getDetailList
(
queryParams
.
value
).
then
(
res
=>
{
uni
.
hideLoading
()
list
.
value
=
res
.
rows
list
.
value
[
0
].
rangeId
==
0
?
id
.
value
=
list
.
value
[
0
].
certId
:
id
.
value
=
list
.
value
[
0
].
rangeId
if
(
id
.
value
)
{
auditFN
()
}
})
}
function
auditFN
()
{
api
.
getGroupHistoryByRelateId
(
id
.
value
).
then
(
res
=>
{
auditList
.
value
=
res
.
data
})
}
function
auditFN
()
{
api
.
getGroupHistoryByRelateId
(
id
.
value
).
then
(
res
=>
{
auditList
.
value
=
res
.
data
})
}
function
audit
(
rangeId
,
flag
)
{
if
(
flag
==
'2'
)
{
// 拒绝
// 弹出框填写理由
uni
.
showModal
({
title
:
'请输入拒绝理由'
,
editable
:
true
,
success
:
function
(
res
)
{
if
(
res
.
confirm
)
{
if
(
!
res
.
content
)
{
uni
.
showToast
({
title
:
'请输入拒绝理由'
,
icon
:
'none'
})
}
else
{
doApproval
(
rangeId
,
flag
,
res
.
content
)
}
}
}
})
}
else
if
(
flag
==
'1'
)
{
// 二次确认
uni
.
showModal
({
title
:
'提示'
,
content
:
`确定审批通过吗`
,
success
:
function
(
res
)
{
if
(
res
.
confirm
)
{
doApproval
(
rangeId
,
flag
)
}
}
})
}
}
function
audit
(
rangeId
,
flag
)
{
if
(
flag
==
'2'
)
{
// 拒绝
// 弹出框填写理由
uni
.
showModal
({
title
:
'请输入拒绝理由'
,
editable
:
true
,
success
:
function
(
res
)
{
if
(
res
.
confirm
)
{
if
(
!
res
.
content
)
{
uni
.
showToast
({
title
:
'请输入拒绝理由'
,
icon
:
'none'
})
}
else
{
doApproval
(
rangeId
,
flag
,
res
.
content
)
}
}
}
})
}
else
if
(
flag
==
'1'
)
{
// 二次确认
uni
.
showModal
({
title
:
'提示'
,
content
:
`确定审批通过吗`
,
success
:
function
(
res
)
{
if
(
res
.
confirm
)
{
doApproval
(
rangeId
,
flag
)
}
}
})
}
}
function
doApproval
(
rangeId
,
flag
,
reason
)
{
var
obj
=
{
flag
:
flag
,
reason
:
reason
||
''
,
rangeIds
:
rangeIds
}
console
.
log
(
obj
)
uni
.
showLoading
({
title
:
'加载中'
})
api
.
mobilizeAudit
(
obj
).
then
((
res
)
=>
{
uni
.
hideLoading
()
uni
.
showToast
({
title
:
'操作成功'
,
icon
:
'none'
})
uni
.
navigateBack
()
})
}
function
goGroupInfo
(
row
){
uni
.
navigateTo
({
url
:
`/group/groupInfo?memId=
${
row
.
memId
}
`
})
}
</
script
>
function
doApproval
(
rangeId
,
flag
,
reason
)
{
var
obj
=
{
flag
:
flag
,
reason
:
reason
||
''
,
rangeIds
:
rangeIds
}
console
.
log
(
obj
)
uni
.
showLoading
({
title
:
'加载中'
})
api
.
mobilizeAudit
(
obj
).
then
((
res
)
=>
{
uni
.
hideLoading
()
uni
.
showToast
({
title
:
'操作成功'
,
icon
:
'none'
})
uni
.
navigateBack
()
})
}
<
style
scoped
lang=
"scss"
>
.date
{
margin-top
:
10
rpx
;
font-size
:
26
rpx
;
color
:
#999
;
}
.wBox
{
width
:
700
rpx
;
padding
:
30
rpx
;
margin
:
20
rpx
auto
0
;
background
:
#FFFFFF
;
box-shadow
:
0
rpx
12
rpx
116
rpx
0
rpx
rgba
(
196
,
203
,
214
,
0.1
);
border-radius
:
15
rpx
;
.tt
{
color
:
#0A1629
;
font-size
:
30
rpx
;
}
}
.userlist
{
.item
{
border-bottom
:
1px
dashed
#e5e5e5
;
position
:
relative
;
.date
{
margin-top
:
10
rpx
;
}
.name
{
text
{
margin-left
:
1em
;
color
:
#4C5359
;
font-size
:
26
rpx
;
}
}
.nian
{
position
:
absolute
;
right
:
0
;
font-size
:
30
rpx
;
color
:
#AD181F
;
}
}
}
function
goGroupInfo
(
row
)
{
uni
.
navigateTo
({
url
:
`/group/groupInfo?memId=
${
row
.
memId
}
`
})
}
</
script
>
.info
{
display
:
flex
;
margin
:
30
rpx
0
20
rpx
;
font-size
:
28
rpx
;
<
style
lang=
"scss"
scoped
>
.date
{
margin-top
:
10
rpx
;
font-size
:
26
rpx
;
color
:
#999
;
}
view
{
color
:
#7D8592
;
margin-right
:
20
rpx
;
}
}
.wBox
{
width
:
700
rpx
;
padding
:
30
rpx
;
margin
:
20
rpx
auto
0
;
background
:
#FFFFFF
;
box-shadow
:
0
rpx
12
rpx
116
rpx
0
rpx
rgba
(
196
,
203
,
214
,
0.1
);
border-radius
:
15
rpx
;
.tt
{
color
:
#0A1629
;
font-size
:
30
rpx
;
}
}
.fixedBottom
{
justify-content
:
center
;
.userlist
{
.item
{
border-bottom
:
1px
dashed
#e5e5e5
;
position
:
relative
;
.date
{
margin-top
:
10
rpx
;
}
.name
{
text
{
margin-left
:
1em
;
color
:
#4C5359
;
font-size
:
26
rpx
;
}
}
.nian
{
position
:
absolute
;
right
:
0
;
font-size
:
30
rpx
;
color
:
#AD181F
;
}
}
}
button
{
margin
:
0
20
rpx
;
width
:
286
rpx
;
}
.info
{
display
:
flex
;
margin
:
30
rpx
0
20
rpx
;
font-size
:
28
rpx
;
view
{
color
:
#7D8592
;
margin-right
:
20
rpx
;
}
}
.btn-red
{
width
:
286
rpx
;
}
}
</
style
>
\ No newline at end of file
.fixedBottom
{
justify-content
:
center
;
button
{
margin
:
0
20
rpx
;
width
:
286
rpx
;
}
.btn-red
{
width
:
286
rpx
;
}
}
</
style
>
...
...
level/ztx/memberAudit.vue
View file @
37a8c62
<
template
>
<view
class=
"audit-page"
>
<!-- 顶部标签栏 -->
<view
class=
"tab-bar"
>
<view
v-for=
"tab in tabs"
:key=
"tab.value"
class=
"tab-item"
:class=
"
{ active: currentTab === tab.value }"
@click="onTabChange(tab.value)"
>
<text
class=
"tab-text"
>
{{
tab
.
label
}}
</text>
<view
class=
"tab-indicator"
v-if=
"currentTab === tab.value"
></view>
</view>
</view>
<!-- 列表内容 -->
<scroll-view
scroll-y
class=
"list-content"
@
scrolltolower=
"onLoadMore"
>
<view
class=
"loading-wrap"
v-if=
"loading && list.length === 0"
>
<uni-load-more
status=
"loading"
></uni-load-more>
</view>
<view
class=
"empty-wrap"
v-else-if=
"!loading && list.length === 0"
>
<uni-load-more
status=
"noMore"
></uni-load-more>
<view>
<!-- 团队会员审核 -->
<uni-segmented-control
:current=
"current"
:values=
"navs"
activeColor=
"#AD181F"
class=
"whitebg"
styleType=
"text"
@
clickItem=
"onClickItem"
>
</uni-segmented-control>
<view
class=
"appList"
>
<view
v-show=
"statistical.totalCost>0"
class=
"vipData"
>
<view>
费用合计:
<text>
¥
{{
statistical
.
totalCost
.
toFixed
(
2
)
}}
</text>
</view>
</view>
<view
class=
"card-list"
v-else
>
<view
class=
"card-item"
v-for=
"item in list"
:key=
"item.recordId || item.id"
@
click=
"goDetail(item)"
>
<view
class=
"card-header"
>
<text
class=
"company-name"
>
{{
item
.
memName
||
'-'
}}
</text>
<text
class=
"status-badge"
:class=
"getStatusClass(item.shenAuditStatus)"
>
{{
getStatusText
(
item
.
shenAuditStatus
)
}}
</text>
</view>
<view
class=
"card-body"
>
<view
class=
"info-row"
>
<text
class=
"label"
>
所属协会
</text>
<text
class=
"value"
>
{{
item
.
shenMemName
||
'-'
}}
</text>
</view>
<view
class=
"info-row"
>
<text
class=
"label"
>
会员编号
</text>
<text
class=
"value"
>
{{
item
.
wfCode
||
'-'
}}
</text>
</view>
<view
class=
"info-row"
>
<text
class=
"label"
>
认证年限
</text>
<text
class=
"value"
>
{{
item
.
renewYear
?
item
.
renewYear
+
'年'
:
'-'
}}
</text>
</view>
<view
class=
"info-row"
>
<text
class=
"label"
>
付款费用
</text>
<text
class=
"value text-red"
>
¥
{{
Number
(
item
.
finalPrice
||
0
).
toFixed
(
2
)
}}
</text>
<view
v-for=
"(item,index) in list"
:key=
"index"
class=
"appItem"
>
<view
class=
"status"
@
click=
"goDetail(item)"
>
<text
v-if=
"item.shenAuditStatus == 1"
class=
"text-primary"
>
审核中
</text>
<text
v-if=
"item.shenAuditStatus == 2"
class=
"text-success"
>
审核通过
</text>
<text
v-if=
"item.shenAuditStatus == 3"
class=
"text-danger"
>
审核拒绝
</text>
</view>
<view
class=
"date"
>
<uni-icons
color=
"#AD181F"
size=
"16"
type=
"calendar-filled"
></uni-icons>
{{
item
.
commitTime
}}
提交
</view>
<view
v-if=
"item.wfCode"
>
{{
item
?.
wfCode
}}
</view>
<view
class=
"name w100 mt0"
@
click=
"goDetail(item)"
>
{{
item
.
memName
}}
</view>
<view
class=
"text"
@
click=
"goDetail(item)"
>
{{
item
.
shenMemName
}}
</view>
<view
class=
"flexbox"
@
click=
"goDetail(item)"
>
<view>
新会员/年限
<view>
{{
item
.
isNew
==
1
?
'是'
:
"否"
}}
/
{{
item
.
renewYear
}}
</view>
<view
class=
"info-row"
>
<text
class=
"label"
>
提交日期
</text>
<text
class=
"value"
>
{{
formatDate
(
item
.
commitTime
)
}}
</text>
</view>
<view>
费用合计
<view>
{{
(
item
.
allPrice
*
1
).
toFixed
(
2
)
}}
</view>
</view>
<view>
政策优惠
<view>
<text
class=
"text-danger"
>
{{
item
.
discount
?
item
.
discount
:
'--'
}}
</text>
</view>
</view>
<view
class=
"card-footer"
>
<view
class=
"tag-row"
>
<view
class=
"tag"
:class=
"item.isNew == 1 ? 'tag-new' : 'tag-renew'"
>
{{
item
.
isNew
==
1
?
'新会员'
:
'续费'
}}
</view>
<view>
付款费用
<view>
<text
class=
"text-warning"
>
¥
{{
item
.
finalPrice
}}
</text>
</view>
<view
class=
"btn-row"
>
<view
class=
"btn btn-default"
@
click
.
stop=
"goInstitutionInfo(item)"
>
机构资料
</view>
<view
class=
"btn btn-primary"
@
click
.
stop=
"goAudit(item)"
v-if=
"item.shenAuditStatus == 1"
>
审核
</view>
</view>
<view>
协会信息
<view>
<text
:class=
"
{'text-danger':item.checkPass == 0 }">
{{
item
.
checkPass
==
0
?
'异常'
:
'正常'
}}
</text>
</view>
</view>
</view>
<view
class=
"func"
>
<button
@
click=
"goGroupInfo(item)"
>
机构资料
</button>
<button
v-if=
"queryParams.shenAuditStatus==1"
@
click=
"audit(item.id,'0')"
>
拒绝
</button>
<button
v-if=
"queryParams.shenAuditStatus==1"
@
click=
"audit(item.id,'1')"
>
同意
</button>
</view>
</view>
<view
class=
"load-more-wrap"
v-if=
"list.length > 0"
>
<uni-load-more
:status=
"loadStatus"
></uni-load-more>
</view>
</scroll-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
v-if=
"userType=='2'"
class=
"block-btn-box"
>
<button
@
click=
"goMerge"
class=
"btn-red-kx"
>
前往合并 >
</button>
</view>
-->
</view>
</
template
>
<
script
setup
>
import
*
as
api
from
'@/common/api_exam.js'
import
{
ref
}
from
'vue'
import
{
onLoad
}
from
'@dcloudio/uni-app'
const
tabs
=
[
{
label
:
'全部'
,
value
:
''
},
{
label
:
'审核中'
,
value
:
'1'
},
{
label
:
'审核通过'
,
value
:
'2'
},
{
label
:
'审核拒绝'
,
value
:
'3'
}
]
const
currentTab
=
ref
(
''
)
const
list
=
ref
([])
const
loading
=
ref
(
false
)
const
loadStatus
=
ref
(
'more'
)
import
*
as
api
from
'@/common/api.js'
import
config
from
'@/config.js'
import
{
onMounted
,
ref
}
from
'vue'
import
{
onLoad
}
from
'@dcloudio/uni-app'
const
app
=
getApp
();
const
queryParams
=
ref
({
pageNum
:
1
,
pageSize
:
10
,
auditFlag
:
'1'
,
shenAuditStatus
:
'1'
,
mergeFlag
:
'0'
,
auditFlag
:
'1'
})
const
navs
=
ref
([
'审核中'
,
'审核通过'
,
'审核拒绝'
])
const
current
=
ref
()
const
list
=
ref
([])
const
total
=
ref
(
0
)
const
userType
=
ref
(
''
)
const
totalCost
=
ref
(
0
)
const
statistical
=
ref
({})
onLoad
(()
=>
{
getList
()
if
(
app
.
globalData
.
isLogin
)
{
init
()
}
else
{
app
.
firstLoadCallback
=
()
=>
{
init
()
};
}
})
function
onTabChange
(
value
)
{
currentTab
.
value
=
value
list
.
value
=
[]
queryParams
.
value
.
pageNum
=
1
function
init
()
{
userType
.
value
=
app
.
globalData
.
userType
// console.log(userType.value)
getList
()
}
function
getList
()
{
if
(
loading
.
value
)
return
loading
.
value
=
true
loadStatus
.
value
=
'loading'
const
params
=
{
...
queryParams
.
value
,
shenAuditStatus
:
currentTab
.
value
}
api
.
certifiedNewList
(
params
).
then
(
res
=>
{
if
(
res
.
rows
)
{
if
(
queryParams
.
value
.
pageNum
===
1
)
{
list
.
value
=
res
.
rows
}
else
{
list
.
value
=
[...
list
.
value
,
...
res
.
rows
]
}
loadStatus
.
value
=
res
.
rows
.
length
>=
queryParams
.
value
.
pageSize
?
'more'
:
'noMore'
}
else
{
list
.
value
=
[]
loadStatus
.
value
=
'noMore'
}
}).
catch
(
err
=>
{
console
.
error
(
'获取会员审核列表失败'
,
err
)
loadStatus
.
value
=
'noMore'
}).
finally
(()
=>
{
loading
.
value
=
false
})
}
function
onLoadMore
()
{
if
(
loadStatus
.
value
===
'noMore'
||
loading
.
value
)
return
queryParams
.
value
.
pageNum
++
function
onClickItem
(
e
)
{
queryParams
.
value
.
shenAuditStatus
=
e
.
currentIndex
+
1
getList
()
}
function
getStatusText
(
status
)
{
const
map
=
{
1
:
'审核中'
,
2
:
'审核通过'
,
3
:
'审核拒绝'
,
4
:
'已撤回'
}
return
map
[
status
]
||
'-'
async
function
getList
()
{
uni
.
showLoading
({
title
:
'加载中'
,
mask
:
true
})
statistical
.
value
=
{
allCount
:
0
,
totalCost
:
0
,
renewYear
:
0
,
newCount
:
0
}
const
res
=
await
api
.
listNewAPI
(
queryParams
.
value
)
list
.
value
=
res
.
rows
for
(
const
val
of
list
.
value
)
{
statistical
.
value
.
renewYear
+=
val
.
renewYear
statistical
.
value
.
totalCost
+=
val
.
finalPrice
*
1
if
(
val
.
isNew
==
1
)
{
statistical
.
value
.
newCount
+=
1
}
statistical
.
value
.
allCount
+=
1
}
total
.
value
=
res
.
total
}
function
getStatusClass
(
status
)
{
const
map
=
{
1
:
'status-warning'
,
2
:
'status-success'
,
3
:
'status-danger'
,
4
:
'status-gray'
function
audit
(
recordId
,
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
(
recordId
,
flag
,
res
.
content
)
}
}
}
})
}
else
if
(
flag
==
'1'
)
{
// 二次确认
uni
.
showModal
({
title
:
'提示'
,
content
:
`确定审批通过吗`
,
success
:
function
(
res
)
{
if
(
res
.
confirm
)
{
doApproval
(
recordId
,
flag
)
}
}
})
}
return
map
[
status
]
||
''
}
function
formatDate
(
dateStr
)
{
if
(
!
dateStr
)
return
'-'
if
(
typeof
dateStr
===
'string'
&&
dateStr
.
indexOf
(
'T'
)
>
-
1
)
{
return
dateStr
.
slice
(
0
,
10
)
function
doApproval
(
recordId
,
flag
,
reason
)
{
let
obj
=
{
flag
:
flag
,
reason
:
reason
||
''
,
ids
:
[]
}
return
dateStr
obj
.
ids
.
push
(
recordId
)
console
.
log
(
obj
)
uni
.
showLoading
({
title
:
'加载中'
,
mask
:
true
})
api
.
shenAudit
(
obj
).
then
((
res
)
=>
{
uni
.
hideLoading
()
uni
.
showToast
({
title
:
'操作成功'
,
icon
:
'none'
})
getList
()
})
}
function
goDetail
(
item
)
{
const
form
=
encodeURIComponent
(
JSON
.
stringify
(
item
))
let
path
=
`/group/apply/mergeUpDetail?form=
${
form
}
`
uni
.
navigateTo
({
url
:
`/group/groupOrderDetail?form=
${
encodeURIComponent
(
JSON
.
stringify
(
item
))}
`
})
url
:
path
})
;
}
function
go
InstitutionInfo
(
item
)
{
function
go
GroupInfo
(
row
)
{
uni
.
navigateTo
({
url
:
`/
level/ztx/institutionInfo?memId=
${
item
.
memId
}
`
url
:
`/
group/groupInfo?memId=
${
row
.
memId
}
`
})
}
function
goAudit
(
item
)
{
uni
.
navigateTo
({
url
:
`/level/ztx/memberAuditPage?type=single&ids=
${
item
.
recordId
||
item
.
id
}
`
})
}
</
script
>
<
style
lang=
"scss"
scoped
>
.audit-page
{
min-height
:
100vh
;
background-color
:
#f5f5f5
;
}
.tab-bar
{
display
:
flex
;
background-color
:
#fff
;
padding
:
0
20
rpx
;
position
:
sticky
;
top
:
0
;
z-index
:
100
;
.tab-item
{
flex
:
1
;
display
:
flex
;
flex-direction
:
column
;
align-items
:
center
;
padding
:
24
rpx
0
;
position
:
relative
;
.tab-text
{
font-size
:
28
rpx
;
color
:
#666
;
}
.tab-indicator
{
position
:
absolute
;
bottom
:
0
;
left
:
50%
;
transform
:
translateX
(
-50%
);
width
:
80
rpx
;
height
:
6
rpx
;
background-color
:
#AD181F
;
border-radius
:
3
rpx
;
}
&
.active
{
.tab-text
{
color
:
#AD181F
;
font-weight
:
600
;
function
showImg
(
n
)
{
var
str
=
''
if
(
n
.
indexOf
(
'http'
)
==
-
1
)
{
str
=
config
.
baseUrl_api
+
n
}
else
{
str
=
n
}
if
(
n
.
indexOf
(
'png'
)
>
-
1
||
n
.
indexOf
(
'jpg'
)
>
-
1
||
n
.
indexOf
(
'jpeg'
)
>
-
1
)
{
uni
.
previewImage
({
urls
:
[
str
],
success
:
function
(
res
)
{
console
.
log
(
'success'
,
res
)
},
fail
:
function
(
res
)
{
console
.
log
(
'fail'
,
res
)
},
complete
:
function
(
res
)
{
console
.
log
(
'complete'
,
res
)
}
}
})
}
else
{
goWebView
(
str
)
}
}
.list-content
{
height
:
calc
(
100vh
-
100
rpx
);
padding
:
20
rpx
;
box-sizing
:
border-box
;
}
.loading-wrap
,
.empty-wrap
{
padding
:
100
rpx
0
;
text-align
:
center
;
}
.card-list
{
.card-item
{
background-color
:
#fff
;
border-radius
:
16
rpx
;
padding
:
30
rpx
;
margin-bottom
:
20
rpx
;
box-shadow
:
0
4
rpx
12
rpx
rgba
(
0
,
0
,
0
,
0.05
);
.card-header
{
display
:
flex
;
justify-content
:
space-between
;
align-items
:
center
;
margin-bottom
:
24
rpx
;
padding-bottom
:
20
rpx
;
border-bottom
:
1
rpx
solid
#f0f0f0
;
.company-name
{
font-size
:
32
rpx
;
font-weight
:
600
;
color
:
#333
;
flex
:
1
;
margin-right
:
20
rpx
;
}
.status-badge
{
font-size
:
24
rpx
;
padding
:
6
rpx
16
rpx
;
border-radius
:
20
rpx
;
flex-shrink
:
0
;
&.status-warning
{
background-color
:
#fff7e6
;
color
:
#fa8c16
;
}
&
.status-success
{
background-color
:
#f6ffed
;
color
:
#52c41a
;
}
&
.status-danger
{
background-color
:
#fff1f0
;
color
:
#f5222d
;
function
goWebView
(
url
)
{
url
=
url
.
replace
(
"http://"
,
"https://"
)
uni
.
showLoading
({
title
:
'下载中'
});
uni
.
downloadFile
({
url
:
url
,
success
:
function
(
res
)
{
uni
.
hideLoading
();
var
filePath
=
res
.
tempFilePath
;
uni
.
showLoading
({
title
:
'正在打开'
});
uni
.
openDocument
({
filePath
:
filePath
,
showMenu
:
true
,
success
:
function
(
res
)
{
uni
.
hideLoading
();
},
fail
:
function
(
err
)
{
uni
.
hideLoading
();
uni
.
showToast
({
title
:
err
,
icon
:
'none'
,
duration
:
2000
});
}
&
.status-gray
{
background-color
:
#f5f5f5
;
color
:
#999
;
}
}
});
},
fail
:
function
(
error
)
{
uni
.
hideLoading
();
uni
.
showToast
({
title
:
`下载失败`
,
icon
:
'none'
,
duration
:
2000
});
}
});
}
</
script
>
.card-body
{
.info-row
{
display
:
flex
;
justify-content
:
space-between
;
padding
:
12
rpx
0
;
.label
{
font-size
:
26
rpx
;
color
:
#999
;
flex-shrink
:
0
;
}
.value
{
font-size
:
26
rpx
;
color
:
#333
;
text-align
:
right
;
flex
:
1
;
margin-left
:
20
rpx
;
}
.text-red
{
color
:
#AD181F
;
}
}
}
.card-footer
{
display
:
flex
;
justify-content
:
space-between
;
align-items
:
center
;
margin-top
:
20
rpx
;
padding-top
:
20
rpx
;
border-top
:
1
rpx
solid
#f0f0f0
;
.tag-row
{
display
:
flex
;
gap
:
12
rpx
;
.tag
{
font-size
:
24
rpx
;
padding
:
6
rpx
16
rpx
;
border-radius
:
20
rpx
;
font-weight
:
500
;
&.tag-new
{
background-color
:
rgba
(
#AD181F
,
0.1
);
color
:
#AD181F
;
}
&
.tag-renew
{
background-color
:
rgba
(
#999
,
0.1
);
color
:
#666
;
}
}
}
.btn-row
{
display
:
flex
;
gap
:
16
rpx
;
.btn
{
font-size
:
26
rpx
;
padding
:
12
rpx
24
rpx
;
border-radius
:
8
rpx
;
}
<
style
scoped
>
.mt0
{
margin-top
:
0
!important
;
}
.btn-default
{
background-color
:
#f5f5f5
;
color
:
#666
;
}
.appList
.appItem
.name
{
width
:
80%
;
word-break
:
break-all
;
}
.btn-primary
{
background-color
:
#AD181F
;
color
:
#fff
;
}
}
}
}
.name
{
margin-bottom
:
10
rpx
!important
;
}
.load-more-wrap
{
padding
:
20
rpx
0
;
text-align
:
center
;
.text
{
font-size
:
26
rpx
;
color
:
#999
;
margin-bottom
:
10
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