Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Support
Submit feedback
Contribute to GitLab
Sign in / Register
Toggle navigation
薪
薪瑞通-前端
Project
Project
Details
Activity
Releases
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Boards
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
许珑标
薪瑞通-前端
Commits
60c1b033
Commit
60c1b033
authored
Feb 17, 2025
by
许珑标
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
失败明细重新支付
parent
ef36c567
Changes
4
Hide whitespace changes
Inline
Side-by-side
Showing
4 changed files
with
280 additions
and
1 deletion
+280
-1
src/api/business/payOrder.js
src/api/business/payOrder.js
+9
-1
src/views/business/payDetail/rePay.vue
src/views/business/payDetail/rePay.vue
+227
-0
src/views/business/payOrder/batchToBank.vue
src/views/business/payOrder/batchToBank.vue
+5
-0
src/views/business/payOrder/index.vue
src/views/business/payOrder/index.vue
+39
-0
No files found.
src/api/business/payOrder.js
View file @
60c1b033
...
...
@@ -52,7 +52,6 @@ export function delPayOrder(id) {
})
}
// 查看支付明细凭证
export
function
detailVoucherView
(
id
)
{
return
request
({
...
...
@@ -60,3 +59,12 @@ export function detailVoucherView(id) {
method
:
'
get
'
})
}
// 重新支付
export
function
doRepay
(
data
)
{
return
request
({
url
:
'
/business/payOrder/repay
'
,
method
:
'
post
'
,
data
:
data
})
}
src/views/business/payDetail/rePay.vue
0 → 100644
View file @
60c1b033
<
template
>
<div
class=
"app-container"
>
<el-descriptions
class=
"margin-top"
title=
"批量订单信息"
:column=
"6"
size=
"18px"
>
<el-descriptions-item>
<template
slot=
"label"
>
批量支付名称
</
template
>
{{ batchInfo.batchName }}
</el-descriptions-item>
<el-descriptions-item>
<
template
slot=
"label"
>
批量流水号
</
template
>
{{ batchInfo.batchNo }}
</el-descriptions-item>
</el-descriptions>
<el-table
v-loading=
"loading"
:data=
"payDetailList"
height=
"600px"
:key=
"formTableKey"
:summary-method=
"getSummaries"
show-summary
>
<el-table-column
label=
"明细流水号"
align=
"center"
prop=
"bizNo"
/>
<el-table-column
label=
"收款账户"
align=
"center"
>
<el-table-column
label=
"户名"
align=
"center"
prop=
"payeeAccName"
width=
"200"
>
<
template
slot-scope=
"scope"
>
<el-input
size=
"small"
style=
"width: 170px"
v-model=
"scope.row.payeeAccName"
>
</el-input>
</
template
>
</el-table-column>
<el-table-column
label=
"账户"
align=
"center"
prop=
"payeeAccNo"
width=
"200"
>
<
template
slot-scope=
"scope"
>
<el-input
size=
"small"
style=
"width: 170px"
v-model=
"scope.row.payeeAccNo"
>
</el-input>
</
template
>
</el-table-column>
<el-table-column
label=
"类型"
align=
"center"
prop=
"payeeAccType"
width=
"200"
>
<
template
slot-scope=
"scope"
>
<el-row>
<el-col
:span=
"12"
>
<dict-tag
:options=
"dict.type.payee_acc_type"
:value=
"scope.row.payeeAccType"
/>
</el-col>
<el-col
:span=
"12"
>
<el-tag
v-if=
"scope.row.isPrivateAcc && scope.row.isPrivateAcc === 1"
>
对私账户
</el-tag>
<el-tag
v-if=
"scope.row.isPrivateAcc && scope.row.isPrivateAcc === 2"
>
对公账户
</el-tag>
</el-col>
</el-row>
</
template
>
</el-table-column>
</el-table-column>
<el-table-column
label=
"交易金额"
align=
"center"
prop=
"amount"
width=
"200"
>
<
template
slot-scope=
"scope"
>
<el-input-number
size=
"small"
style=
"width: 170px"
:step=
"1"
:min=
"0.01"
@
change=
"calculation(scope.row)"
v-model=
"scope.row.amount"
>
</el-input-number>
</
template
>
</el-table-column>
<el-table-column
label=
"支付类型"
align=
"center"
prop=
"payTitle"
/>
<el-table-column
label=
"支付状态"
align=
"center"
prop=
"payStatus"
>
<
template
slot-scope=
"scope"
>
<dict-tag
:options=
"dict.type.pay_status"
:value=
"scope.row.payStatus"
/>
</
template
>
</el-table-column>
<el-table-column
label=
"备注"
align=
"center"
prop=
"payRemark"
/>
<el-table-column
label=
"失败原因"
align=
"center"
prop=
"failReason"
:show-overflow-tooltip=
"true"
/>
<el-table-column
label=
"操作"
align=
"center"
class-name=
"small-padding fixed-width"
>
<
template
slot-scope=
"scope"
>
<el-button
size=
"mini"
type=
"text"
icon=
"el-icon-delete"
@
click=
"handleDelete(scope.$index, 'delRow')"
>
删除
</el-button>
</
template
>
</el-table-column>
</el-table>
<el-row
:gutter=
"10"
class=
"mb8"
style=
"margin-top: 15px"
>
<el-col
:span=
"1.5"
style=
"float: right"
>
<span
v-if=
"this.payDetailList"
>
明细条数: {{ this.payDetailList.length }} 条
</span>
<el-button
style=
"margin-left: 100px"
type=
"primary"
icon=
"el-icon-s-promotion"
size=
"mini"
@
click=
"confirmPay"
>
确认支付
</el-button>
</el-col>
</el-row>
</div>
</template>
<
script
>
import
{
listPayDetail
}
from
"
@/api/business/payDetail
"
;
import
{
doRepay
}
from
'
@/api/business/payOrder
'
export
default
{
name
:
"
rePay
"
,
props
:
{
value
:
[
String
,
Object
,
Array
],
batchInfo
:
{
type
:
Object
,
default
:
{
batchName
:
''
,
batchNo
:
''
,
batchId
:
0
}
}
},
dicts
:
[
'
pay_status
'
,
'
pay_type_title
'
,
'
payee_acc_type
'
],
data
()
{
return
{
formTableKey
:
1
,
// 根路径
baseURL
:
process
.
env
.
VUE_APP_BASE_API
,
// 遮罩层
loading
:
true
,
// 选中数组
ids
:
[],
// 非单个禁用
single
:
true
,
// 非多个禁用
multiple
:
true
,
// 显示搜索条件
showSearch
:
true
,
// 总条数
total
:
0
,
// 批量支付明细表格数据
payDetailList
:
[],
// 弹出层标题
title
:
""
,
// 是否显示弹出层
open
:
false
,
// 查询参数
queryParams
:
{
pageNum
:
1
,
pageSize
:
1000
,
payStatus
:
4
,
},
};
},
mounted
()
{
this
.
queryParams
.
orderId
=
this
.
batchInfo
.
batchId
this
.
getList
();
},
methods
:
{
/** 查询 批量支付明细列表 */
getList
()
{
this
.
loading
=
true
;
listPayDetail
(
this
.
queryParams
).
then
(
response
=>
{
this
.
payDetailList
=
response
.
rows
;
this
.
total
=
response
.
total
;
this
.
loading
=
false
;
this
.
formTableKey
+=
1
});
},
/** 搜索按钮操作 */
handleQuery
()
{
this
.
queryParams
.
pageNum
=
1
;
this
.
getList
();
},
/** 重置按钮操作 */
resetQuery
()
{
this
.
resetForm
(
"
queryForm
"
);
this
.
handleQuery
();
},
handleDelete
(
index
,
pStr
)
{
this
.
$confirm
(
'
确定执行删除操作吗?
'
,
'
提示
'
,
{
confirmButtonText
:
'
确定
'
,
cancelButtonText
:
'
取消
'
,
type
:
'
warning
'
}).
then
(()
=>
{
if
(
pStr
&&
pStr
===
'
delRow
'
)
{
this
.
payDetailList
.
splice
(
index
,
1
)
}
else
if
(
this
.
indexList
&&
this
.
indexList
.
length
>
0
)
{
let
transMap
=
new
Map
();
this
.
payDetailList
.
forEach
((
item
,
_index
)
=>
{
transMap
.
set
(
_index
,
item
)
})
this
.
indexList
.
forEach
(
item
=>
{
transMap
.
delete
(
item
)
})
this
.
payDetailList
=
[...
transMap
.
values
()]
this
.
indexList
=
[];
}
this
.
formTableKey
+=
1
}).
catch
(()
=>
{});
},
getSummaries
(
param
)
{
const
{
columns
,
data
}
=
param
;
const
sums
=
[];
columns
.
forEach
((
column
,
index
)
=>
{
if
(
index
===
0
)
{
sums
[
index
]
=
'
合计
'
;
return
;
}
else
if
(
index
===
4
)
{
const
values
=
data
.
map
(
item
=>
Number
(
item
[
column
.
property
]));
if
(
!
values
.
every
(
value
=>
isNaN
(
value
)))
{
sums
[
index
]
=
values
.
reduce
((
prev
,
curr
)
=>
{
const
value
=
Number
(
curr
);
if
(
!
isNaN
(
value
))
{
return
prev
+
curr
;
}
else
{
return
prev
;
}
},
0
);
sums
[
index
]
+=
'
元
'
;
}
else
{
sums
[
index
]
=
'
N/A
'
;
}
}
});
return
sums
;
},
confirmPay
()
{
this
.
$confirm
(
'
确定提交支付吗?
'
,
'
提示
'
,
{
confirmButtonText
:
'
确定
'
,
cancelButtonText
:
'
取消
'
,
type
:
'
warning
'
}).
then
(()
=>
{
doRepay
({
batchId
:
this
.
batchInfo
.
batchId
,
batchNo
:
this
.
batchInfo
.
batchNo
,
orders
:
this
.
payDetailList
}).
then
(
resp
=>
{
if
(
200
===
resp
.
code
)
{
this
.
$modal
.
msgSuccess
(
"
操作成功
"
);
this
.
$emit
(
'
closeRePayPanel
'
,
'
child
'
)
}
})
}).
catch
(()
=>
{});
},
calculation
()
{
this
.
formTableKey
+=
1
}
}
};
</
script
>
src/views/business/payOrder/batchToBank.vue
View file @
60c1b033
...
...
@@ -249,6 +249,9 @@ export default {
},
// 新增明细
handleAdd
()
{
if
(
this
.
transList
&&
this
.
transList
>=
1000
)
{
return
this
.
$modal
.
msgWarning
(
"
单次支付不能超过1000条
"
)
}
this
.
addPanelOpen
=
true
this
.
form
=
{
amount
:
0
,
...
...
@@ -363,6 +366,8 @@ export default {
confirmPay
()
{
if
(
!
this
.
transList
)
{
return
this
.
$modal
.
msgWarning
(
"
支付明细列表不能为空!
"
);
}
else
if
(
this
.
transList
>=
1000
)
{
return
this
.
$modal
.
msgWarning
(
"
单次支付不能超过1000条
"
)
}
this
.
$refs
[
"
batchForm
"
].
validate
(
valid
=>
{
if
(
valid
)
{
...
...
src/views/business/payOrder/index.vue
View file @
60c1b033
...
...
@@ -114,6 +114,12 @@
icon=
"el-icon-s-order"
@
click=
"viewDetail(scope.row)"
>
查看明细
</el-button>
<el-button
v-if=
"scope.row.payStatus && scope.row.payStatus === 4 || scope.row.payStatus === 5"
size=
"mini"
type=
"text"
icon=
"el-icon-s-promotion"
@
click=
"doRepay(scope.row)"
>
失败补发
</el-button>
</
template
>
</el-table-column>
</el-table>
...
...
@@ -126,17 +132,27 @@
@
pagination=
"getList"
/>
<el-dialog
title=
"失败补发"
:visible.sync=
"rePayPanel"
width=
"90%"
append-to-body
class=
"dialogIp"
>
<RePay
ref=
"rePay"
:batch-info=
"rePayObj"
@
closeRePayPanel=
"closeRePayPanel"
/>
<div
slot=
"footer"
class=
"dialog-footer"
>
<el-button
@
click=
"closeRePayPanel"
>
关 闭
</el-button>
</div>
</el-dialog>
</div>
</template>
<
script
>
import
{
listPayOrder
}
from
"
@/api/business/payOrder
"
;
import
RePay
from
'
@/views/business/payDetail/rePay.vue
'
export
default
{
name
:
"
PayOrder
"
,
components
:
{
RePay
},
dicts
:
[
'
pay_status
'
,
'
pay_type_title
'
],
data
()
{
return
{
rePayObj
:
{},
rePayPanel
:
false
,
// 根路径
baseURL
:
process
.
env
.
VUE_APP_BASE_API
,
// 遮罩层
...
...
@@ -215,7 +231,30 @@ export default {
},
viewDetail
(
row
)
{
this
.
$router
.
push
({
path
:
"
/business/payDetails
"
,
query
:
{
orderId
:
row
.
id
}
});
},
doRepay
(
row
)
{
if
(
row
.
id
)
{
this
.
rePayObj
=
{
batchName
:
row
.
batchPayName
,
batchNo
:
row
.
batchNo
,
batchId
:
row
.
id
}
this
.
rePayPanel
=
true
}
},
closeRePayPanel
(
child
)
{
this
.
rePayPanel
=
false
if
(
child
&&
child
===
'
child
'
)
{
this
.
getList
()
}
}
}
};
</
script
>
<
style
scoped
lang=
"scss"
>
.
dialogIp
:
:
v-deep
{
.el-dialog__body
{
padding
:
0
!
important
;
}
}
</
style
>
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