Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Submit feedback
Contribute to GitLab
Sign in / Register
Toggle navigation
G
gk
Project
Project
Details
Activity
Releases
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Board
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Charts
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
micro_app
gk
Commits
62c0316b
Commit
62c0316b
authored
Dec 01, 2025
by
daniel
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
feat(gps押金): bug修复
parent
be86be3f
Hide whitespace changes
Inline
Side-by-side
Showing
2 changed files
with
160 additions
and
59 deletions
+160
-59
gpsDeposit.jsp
src/main/webapp/WEB-INF/views/cmpt/gpsDeposit.jsp
+101
-56
gunRule.jsp
src/main/webapp/WEB-INF/views/cmpt/gunRule.jsp
+59
-3
No files found.
src/main/webapp/WEB-INF/views/cmpt/gpsDeposit.jsp
View file @
62c0316b
...
@@ -241,6 +241,35 @@
...
@@ -241,6 +241,35 @@
<
/div
>
<
/div
>
<
/template
>
<
/template
>
<
/n-modal
>
<
/n-modal
>
<
n
-
modal
:
mask
-
closable
=
"false"
:
loading
=
"loading"
style
=
"width: 300px"
title
=
"批量退款"
preset
=
"card"
draggable
v
-
model
:
show
=
"showRefundModal"
>
<
n
-
form
ref
=
"refundOrderFormRef"
:
model
=
"refundOrderValue"
:
rules
=
"refundOrderRules"
size
=
"small"
label
-
placement
=
"left"
label
-
width
=
"auto"
>
<
n
-
form
-
item
label
=
"退款金额"
path
=
"markNo"
>
<
n
-
input
-
number
clearable
type
=
"number"
v
-
model
:
value
=
"refundOrderValue.refundAmount"
placeholder
=
"请输入退款金额"
digits
=
"2"
:
min
=
"0"
:
max
=
"depositForm.amount"
/>
<
/n-form-item
>
<
/n-form
>
<
template
#
footer
>
<
div
class
=
"flex gap-x-2 flex-row items-center"
>
<
n
-
button
class
=
"flex-1"
:
loading
=
"loading"
@
click
=
"onRefundCancel"
>
取消
<
/n-button
>
<
n
-
button
class
=
"flex-1"
:
loading
=
"loading"
type
=
'error'
@
click
=
"onRefundSubmit"
>
提交退款
<
/n-button
>
<
/div
>
<
/template
>
<
/n-modal
>
<
/n-space
>
<
/n-space
>
</script>
</script>
<script>
<script>
...
@@ -530,7 +559,7 @@
...
@@ -530,7 +559,7 @@
{
{
type
:
'selection'
,
type
:
'selection'
,
disabled
(
row
)
{
disabled
(
row
)
{
return
!
[
TradeStatusEnum
.
PAY_SUCCESS
.
value
].
includes
(
row
.
tradeStatus
)
return
TradeStatusEnum
.
PAY_SUCCESS
.
value
!==
row
.
tradeStatus
&&
row
.
refundStatus
!=
RefundStatusEnum
.
REFUND_SUCCESS
.
value
}
}
},
},
{
{
...
@@ -584,7 +613,7 @@
...
@@ -584,7 +613,7 @@
type
:
PayTypeEnum
[
row
.
payType
].
color
,
type
:
PayTypeEnum
[
row
.
payType
].
color
,
},
PayTypeEnum
[
row
.
payType
].
name
),
},
PayTypeEnum
[
row
.
payType
].
name
),
]),
]),
row
.
refundStatus
&&
h
(
NSpace
,
{},
[
row
.
refundStatus
!=
null
&&
h
(
NSpace
,
{},
[
h
(
'span'
,
{},
"退款状态"
),
h
(
'span'
,
{},
"退款状态"
),
h
(
NTag
,
{
h
(
NTag
,
{
size
:
"small"
,
size
:
"small"
,
...
@@ -593,7 +622,6 @@
...
@@ -593,7 +622,6 @@
type
:
RefundStatusEnum
[
row
.
refundStatus
].
color
,
type
:
RefundStatusEnum
[
row
.
refundStatus
].
color
,
},
RefundStatusEnum
[
row
.
refundStatus
].
name
),
},
RefundStatusEnum
[
row
.
refundStatus
].
name
),
]),
]),
])
])
}
}
},
},
...
@@ -744,6 +772,8 @@
...
@@ -744,6 +772,8 @@
})
})
// 删除自助选号
// 删除自助选号
const
showEditModal
=
ref
(
false
)
const
showEditModal
=
ref
(
false
)
// 退款订单的modal
const
showRefundModal
=
ref
(
false
)
// 订单列表
// 订单列表
const
orders
=
ref
([])
const
orders
=
ref
([])
// 反馈表单
// 反馈表单
...
@@ -752,16 +782,31 @@
...
@@ -752,16 +782,31 @@
markNo
:
''
,
markNo
:
''
,
cmptId
:
getCId
(),
cmptId
:
getCId
(),
})
})
// 当前操作的订单
// 金额
const
refundOrderValue
=
reactive
({
refundAmount
:
0
,
})
// 反馈的校验规则
// 反馈的校验规则
editOrderRules
=
{
const
editOrderRules
=
{
markNo
:
{
markNo
:
{
required
:
true
,
required
:
true
,
message
:
'请输入参赛号'
,
message
:
'请输入参赛号'
,
trigger
:
'blur'
trigger
:
'blur'
}
}
}
}
// 退款订单的校验规则
const
refundOrderRules
=
reactive
({
refundAmount
:
{
required
:
true
,
message
:
'请输入退款金额'
,
trigger
:
'blur'
}
})
// 反馈的formRef
// 反馈的formRef
const
editOrderFormRef
=
ref
(
null
)
const
editOrderFormRef
=
ref
(
null
)
// 退款订单的formRef
const
refundOrderFormRef
=
ref
(
null
)
/***----------------订单列表 end -----------------*/
/***----------------订单列表 end -----------------*/
/***----------------押金配置 start -----------------*/
/***----------------押金配置 start -----------------*/
...
@@ -850,6 +895,7 @@
...
@@ -850,6 +895,7 @@
page
:
1
,
page
:
1
,
size
:
1
,
size
:
1
,
cmptId
:
getCId
(),
cmptId
:
getCId
(),
markNo
:
query
.
markNo
,
}
}
let
paramsList
=
tradeStatusOptions
.
value
.
map
(
v
=>
({
let
paramsList
=
tradeStatusOptions
.
value
.
map
(
v
=>
({
...
params
,
...
params
,
...
@@ -880,7 +926,7 @@
...
@@ -880,7 +926,7 @@
let
params
=
{
let
params
=
{
applyId
:
row
.
applyId
,
applyId
:
row
.
applyId
,
refundAmount
:
row
.
refundAmount
,
refundAmount
:
row
.
refundAmount
,
refundReason
:
row
.
markNo
()
+
"gps押金退款"
,
refundReason
:
row
.
markNo
+
"gps押金退款"
,
operatorCode
:
getUId
(),
operatorCode
:
getUId
(),
}
}
const
[
err
,
res
]
=
await
to
(
fetch
(
ORDER_REFUND_URL
,
{
const
[
err
,
res
]
=
await
to
(
fetch
(
ORDER_REFUND_URL
,
{
...
@@ -896,7 +942,7 @@
...
@@ -896,7 +942,7 @@
return
return
}
}
if
(
res
.
code
===
200
)
{
if
(
res
.
code
===
200
)
{
message
.
success
(
'退款成功'
)
message
.
success
(
'退款
操作
成功'
)
fetchOrders
()
fetchOrders
()
}
else
{
}
else
{
message
.
error
(
res
.
message
)
message
.
error
(
res
.
message
)
...
@@ -967,6 +1013,44 @@
...
@@ -967,6 +1013,44 @@
const
onEditCancel
=
()
=>
{
const
onEditCancel
=
()
=>
{
showEditModal
.
value
=
false
showEditModal
.
value
=
false
}
}
// 退款订单相关
const
onRefundCancel
=
()
=>
{
showRefundModal
.
value
=
false
}
// 提交退款订单
const
onRefundSubmit
=
async
()
=>
{
refundOrderFormRef
.
value
?.
validate
(
async
(
errors
)
=>
{
if
(
errors
)
return
message
.
error
(
'请检查表单是否填写完整'
)
loading
.
value
=
true
const
[
err
,
result
]
=
await
to
(
fetch
(
ORDER_BATCH_REFUND_URL
,
{
method
:
"POST"
,
headers
:
{
'Content-Type'
:
'application/json'
},
body
:
JSON
.
stringify
({
applyIds
:
checkedRowKeys
.
value
,
refundAmount
:
refundOrderValue
.
refundAmount
,
operatorCode
:
getUId
(),
cmptId
:
getCId
()
})
}).
then
(
res
=>
res
.
json
())
)
loading
.
value
=
false
if
(
err
)
{
message
.
error
(
err
)
return
}
if
(
result
.
code
===
200
)
{
// 将所有的状态改为退款中
result
.
data
.
length
&&
confirm
(
result
.
data
.
map
(
v
=>
v
.
markNo
+
":"
+
v
.
result
).
join
(
'
\
n'
))
await
fetchOrders
()
checkedRowKeys
.
value
=
[]
}
else
{
message
.
error
(
result
.
message
)
}
})
}
// 富文本编辑器 .setContent() .getContent()
// 富文本编辑器 .setContent() .getContent()
let
editor
;
let
editor
;
/***---------------- 自助选号相关 end -----------------*/
/***---------------- 自助选号相关 end -----------------*/
...
@@ -1045,6 +1129,7 @@
...
@@ -1045,6 +1129,7 @@
depositForm
.
value
.
notice
=
res
.
data
.
notice
depositForm
.
value
.
notice
=
res
.
data
.
notice
depositForm
.
value
.
content
=
res
.
data
.
content
depositForm
.
value
.
content
=
res
.
data
.
content
depositForm
.
value
.
roadIds
=
res
.
data
.
roadIds
.
split
(
','
).
map
(
v
=>
Number
(
v
))
depositForm
.
value
.
roadIds
=
res
.
data
.
roadIds
.
split
(
','
).
map
(
v
=>
Number
(
v
))
refundOrderValue
.
refundAmount
=
res
.
data
.
amount
editor
.
setContent
(
res
.
data
.
content
)
editor
.
setContent
(
res
.
data
.
content
)
}
}
}
else
{
}
else
{
...
@@ -1053,55 +1138,8 @@
...
@@ -1053,55 +1138,8 @@
}
}
// 批量退款
// 批量退款
const
batchRefund
=
async
()
=>
{
const
batchRefund
=
async
()
=>
{
let
refundAmount
=
0
;
showRefundModal
.
value
=
true
let
confirmFlag
=
confirm
(
'是否对选中的订单进行退款?'
)
refundOrderValue
.
refundAmount
=
depositForm
.
value
.
amount
if
(
!
confirmFlag
)
{
message
.
error
(
'已取消批量退款'
)
checkedRowKeys
.
value
=
[]
return
}
confirmFlag
=
confirm
(
'是否确定全额退款吗?'
)
if
(
!
confirmFlag
)
{
// 请输入退款金额
refundAmount
=
prompt
(
'请输入退款金额'
)
if
(
!
refundAmount
)
{
message
.
error
(
'请输入退款金额'
)
return
}
if
(
Number
(
refundAmount
)
>
Number
(
depositForm
.
value
.
amount
))
{
message
.
error
(
'退款金额不能大于押金金额'
)
return
}
}
// 批量退款 调用接口
loading
.
value
=
true
const
[
err
,
result
]
=
await
to
(
fetch
(
ORDER_BATCH_REFUND_URL
,
{
method
:
"POST"
,
headers
:
{
'Content-Type'
:
'application/json'
},
body
:
JSON
.
stringify
({
applyIds
:
checkedRowKeys
.
value
,
refundAmount
:
refundAmount
>
0
?
Number
(
refundAmount
)
:
null
,
operatorCode
:
getUId
(),
cmptId
:
getCId
()
})
}).
then
(
res
=>
res
.
json
())
)
loading
.
value
=
false
if
(
err
)
{
message
.
error
(
err
)
return
}
if
(
result
.
code
===
200
)
{
checkedRowKeys
.
value
=
[]
result
.
data
.
length
&&
confirm
(
result
.
data
.
map
(
v
=>
v
.
markNo
+
":"
+
v
.
result
).
join
(
'
\
n'
))
message
.
success
(
'退款操作成功,等待微信反馈结果'
)
fetchOrders
()
}
else
{
message
.
error
(
result
.
message
)
}
}
}
// 一键退款
// 一键退款
const
refundAll
=
async
()
=>
{
const
refundAll
=
async
()
=>
{
...
@@ -1131,7 +1169,6 @@
...
@@ -1131,7 +1169,6 @@
}
}
if
(
result
.
code
===
200
)
{
if
(
result
.
code
===
200
)
{
result
.
data
.
length
&&
confirm
(
result
.
data
.
map
(
v
=>
v
.
markNo
+
":"
+
v
.
result
).
join
(
'
\
n'
))
result
.
data
.
length
&&
confirm
(
result
.
data
.
map
(
v
=>
v
.
markNo
+
":"
+
v
.
result
).
join
(
'
\
n'
))
message
.
success
(
'退款操作成功,等待微信反馈结果'
)
fetchOrders
()
fetchOrders
()
}
else
{
}
else
{
message
.
error
(
result
.
message
)
message
.
error
(
result
.
message
)
...
@@ -1141,6 +1178,7 @@
...
@@ -1141,6 +1178,7 @@
onMounted
(()
=>
{
onMounted
(()
=>
{
fetchOrders
()
fetchOrders
()
getCmptInfo
()
getCmptInfo
()
getDeposit
()
editor
=
UE
.
getEditor
(
'rich-text-container'
);
editor
=
UE
.
getEditor
(
'rich-text-container'
);
})
})
...
@@ -1186,6 +1224,13 @@
...
@@ -1186,6 +1224,13 @@
editOrderFormRef
,
editOrderFormRef
,
editOrder
,
editOrder
,
onEditCancel
,
onEditCancel
,
// 退款订单相关
refundOrderValue
,
refundOrderRules
,
refundOrderFormRef
,
showRefundModal
,
onRefundCancel
,
onRefundSubmit
,
}
}
}
}
})
})
...
...
src/main/webapp/WEB-INF/views/cmpt/gunRule.jsp
View file @
62c0316b
...
@@ -230,7 +230,7 @@
...
@@ -230,7 +230,7 @@
<
n
-
form
-
item
label
=
"组别名称"
path
=
"roadName"
>
<
n
-
form
-
item
label
=
"组别名称"
path
=
"roadName"
>
<
div
class
=
"flex flex-col"
>
<
div
class
=
"flex flex-col"
>
<
n
-
input
v
-
model
:
value
=
"gunRuleValue.roadName"
placeholder
=
"请输入组别名称"
/>
<
n
-
input
v
-
model
:
value
=
"gunRuleValue.roadName"
placeholder
=
"请输入组别名称"
/>
<
n
-
gradient
-
text
type
=
"warning"
>
注:
组别名仅支持数字和字母,并且不可重复
<
/n-gradient-text
>
<
n
-
gradient
-
text
type
=
"warning"
>
注:
导入名单里的组别名要跟设置的组别名一致
<
/n-gradient-text
>
<
/div
>
<
/div
>
<
/n-form-item
>
<
/n-form-item
>
<
n
-
form
-
item
label
=
"出发日期"
path
=
"startTime"
>
<
n
-
form
-
item
label
=
"出发日期"
path
=
"startTime"
>
...
@@ -498,8 +498,8 @@
...
@@ -498,8 +498,8 @@
const
uploadUrl
=
window
.
location
.
origin
+
'/api-common/v1/upload?folder=gk/gunApply'
+
'&cmptId='
+
getCId
()
const
uploadUrl
=
window
.
location
.
origin
+
'/api-common/v1/upload?folder=gk/gunApply'
+
'&cmptId='
+
getCId
()
const
downloadWeChatImgUrl
=
window
.
location
.
origin
+
'/api-common/v1/download-wechat-image'
const
downloadWeChatImgUrl
=
window
.
location
.
origin
+
'/api-common/v1/download-wechat-image'
// 添加全局 loading 指令
// 添加全局 loading 指令
//
const ECC_BASE_URL = "https://ecc.geexek.com"
const
ECC_BASE_URL
=
"https://ecc.geexek.com"
const
ECC_BASE_URL
=
"http://localhost:8081"
//
const ECC_BASE_URL = "http://localhost:8081"
const
SAVE_OR_UPDATE
=
ECC_BASE_URL
+
"/api-pick/v1/save-or-update-wave"
const
SAVE_OR_UPDATE
=
ECC_BASE_URL
+
"/api-pick/v1/save-or-update-wave"
// 更新名单
// 更新名单
const
UPDATE_ENROLL_WAVE
=
ECC_BASE_URL
+
"/api-pick/v1/update-enroll-wave"
const
UPDATE_ENROLL_WAVE
=
ECC_BASE_URL
+
"/api-pick/v1/update-enroll-wave"
...
@@ -760,6 +760,7 @@
...
@@ -760,6 +760,7 @@
// 更新菜单
// 更新菜单
const
updateMenu
=
(
value
)
=>
{
const
updateMenu
=
(
value
)
=>
{
activeMenu
.
value
=
value
activeMenu
.
value
=
value
getGunRulesStats
()
}
}
// 更新枪次选项
// 更新枪次选项
...
@@ -925,6 +926,8 @@
...
@@ -925,6 +926,8 @@
const
ruleIndex
=
ref
(
0
)
const
ruleIndex
=
ref
(
0
)
// 删除确认弹窗
// 删除确认弹窗
const
showDeleteModal
=
ref
(
false
)
const
showDeleteModal
=
ref
(
false
)
// 是否是第一次加载
const
isFirst
=
ref
(
false
)
// 号码簿规则校验
// 号码簿规则校验
const
gunRuleRules
=
{
const
gunRuleRules
=
{
roadName
:
{
roadName
:
{
...
@@ -949,7 +952,59 @@
...
@@ -949,7 +952,59 @@
ruleIndex
.
value
=
index
ruleIndex
.
value
=
index
gunRuleValue
.
value
=
gunRules
.
value
[
index
]
gunRuleValue
.
value
=
gunRules
.
value
[
index
]
getPlayers
()
getPlayers
()
if
(
!
isFirst
.
value
)
return
getGunRulesStats
()
}
}
// 获取分枪组别统计
const
getGunRulesStats
=
async
()
=>
{
const
params
=
{
cmptId
:
getCId
()
}
loading
.
value
=
true
;
// 发起请求
const
[
err
,
res
]
=
await
to
(
fetch
(
RULE_LIST
+
new
URLSearchParams
(
params
).
toString
(),
{
method
:
"GET"
,
headers
:
{
'Content-Type'
:
'application/json'
},
}).
then
(
res
=>
res
.
json
()))
loading
.
value
=
false
if
(
err
)
{
message
.
error
(
err
.
message
)
}
if
(
res
.
code
!==
200
)
return
message
.
error
(
res
.
message
)
// 获取所有分组的名单总数
const
totalApplies
=
res
.
data
.
map
(
v
=>
v
.
details
.
reduce
((
detailPre
,
detailCur
)
=>
detailPre
+
detailCur
.
totalReservations
??
0
,
0
))
// 获取所有分组的名单总数
const
request
=
res
.
data
.
map
(
v
=>
{
const
playerParams
=
{
cmptId
:
getCId
(),
roadName
:
v
.
roadName
,
current
:
1
,
size
:
1
,
}
return
fetch
(
ENROLL_PAGE
,
{
method
:
"POST"
,
headers
:
{
'Content-Type'
:
'application/json'
},
body
:
JSON
.
stringify
(
playerParams
)
}).
then
(
res
=>
res
.
json
())
})
let
allPlayersTotals
=
[]
await
Promise
.
all
(
request
).
then
(
list
=>
{
allPlayersTotals
=
list
.
map
(
v
=>
v
.
data
.
total
)
})
// 统计数据组装
gunRules
.
value
.
forEach
((
v
,
index
)
=>
{
v
.
totalPlayer
=
allPlayersTotals
[
index
]
v
.
totalApply
=
totalApplies
[
index
]
})
}
// 获取分枪组别列表
// 获取分枪组别列表
const
getGunRules
=
async
()
=>
{
const
getGunRules
=
async
()
=>
{
const
params
=
{
const
params
=
{
...
@@ -1006,6 +1061,7 @@
...
@@ -1006,6 +1061,7 @@
}
else
{
}
else
{
gunRuleValue
.
value
=
initialValue
gunRuleValue
.
value
=
initialValue
}
}
isFirst
.
value
=
true
}
}
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
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 comment