Commit b85e5e87 authored by 许珑标's avatar 许珑标

批量支付功能(不含重新支付版)

parent eca2e0c3
import request from '@/utils/request'
// 查询 批量支付明细列表
export function listPayDetail(query) {
return request({
url: '/business/payOrder/detail/list',
method: 'get',
params: query
})
}
// 查询 批量支付明细所有列表
export function listAllPayDetail(query) {
return request({
url: '/business/payDetail/listAll',
method: 'get',
params: query
})
}
// 查询 批量支付明细详细
export function getPayDetail(id) {
return request({
url: '/business/payDetail/getInfo/' + id,
method: 'get'
})
}
// 新增 批量支付明细
export function addPayDetail(data) {
return request({
url: '/business/payDetail/add',
method: 'post',
data: data
})
}
// 修改 批量支付明细
export function updatePayDetail(data) {
return request({
url: '/business/payDetail/edit',
method: 'post',
data: data
})
}
// 删除 批量支付明细
export function delPayDetail(id) {
return request({
url: '/business/payDetail/remove/' + id,
method: 'get'
})
}
import request from '@/utils/request'
// 查询批量支付列表
export function listPayOrder(query) {
return request({
url: '/business/payOrder/list',
method: 'get',
params: query
})
}
// 查询批量支付所有列表
export function listAllPayOrder(query) {
return request({
url: '/business/payOrder/listAll',
method: 'get',
params: query
})
}
// 查询批量支付详细
export function getPayOrder(id) {
return request({
url: '/business/payOrder/getInfo/' + id,
method: 'get'
})
}
// 新增批量支付
export function addPayOrder(data) {
return request({
url: '/business/payOrder/add',
method: 'post',
data: data
})
}
// 修改批量支付
export function updatePayOrder(data) {
return request({
url: '/business/payOrder/edit',
method: 'post',
data: data
})
}
// 删除批量支付
export function delPayOrder(id) {
return request({
url: '/business/payOrder/remove/' + id,
method: 'get'
})
}
// 查看支付明细凭证
export function detailVoucherView(id) {
return request({
url: '/business/payOrder/detail/voucher/view/' + id,
method: 'get'
})
}
......@@ -70,10 +70,10 @@
<el-option v-for="item in payerCompanyArr" :key="item.id" :value="item.id" :label="item.companyName" />
</el-select>
</el-form-item>
<!-- <el-form-item label="归属客户" prop="deptId">-->
<!-- <el-cascader :props="cascaderProps" v-model="form.deptId" :options="deptOptions">-->
<!-- </el-cascader>-->
<!-- </el-form-item>-->
<el-form-item label="归属客户" prop="deptId">
<el-cascader :props="cascaderProps" v-model="form.deptId" :options="deptOptions">
</el-cascader>
</el-form-item>
<el-form-item label="发薪账户" prop="payAccNo">
<el-input v-model="form.payAccNo" placeholder="请输入发薪账户" />
</el-form-item>
......
......@@ -156,11 +156,8 @@ export default {
upload: {
// 是否显示弹出层(用户导入)
open: false,
// 弹出层标题(用户导入)
title: "",
// 是否禁用上传
isUploading: false,
// 是否更新已经存在的用户数据
uploadRadio: 1,
// 设置上传的请求头部
headers: { Authorization: "Bearer " + getToken() },
......
<template>
<div class="app-container">
<el-form :model="queryParams" ref="queryForm" size="small" :inline="true" v-show="showSearch" label-width="120px">
<el-form-item label="明细流水号" prop="bizNo">
<el-input
v-model="queryParams.bizNo"
placeholder="请输入明细流水号"
clearable
@keyup.enter.native="handleQuery"
/>
</el-form-item>
<el-form-item label="支付类型" prop="payTitle">
<el-select v-model="queryParams.payTitle" placeholder="请选择支付类型" @change="handleQuery" clearable>
<el-option v-for="dict in dict.type.pay_type_title" :key="dict.value" :label="dict.label"
:value="dict.value" />
</el-select>
</el-form-item>
<el-form-item label="支付备注" prop="payRemark">
<el-input
v-model="queryParams.payRemark"
placeholder="请输入支付备注"
clearable
@keyup.enter.native="handleQuery"
/>
</el-form-item>
<el-form-item label="收款账户名" prop="payeeAccName">
<el-input
v-model="queryParams.payeeAccName"
placeholder="请输入收款账户名"
clearable
@keyup.enter.native="handleQuery"
/>
</el-form-item>
<el-form-item label="收款账号" prop="payeeAccNo">
<el-input
v-model="queryParams.payeeAccNo"
placeholder="请输入收款账号"
clearable
@keyup.enter.native="handleQuery"
/>
</el-form-item>
<el-form-item>
<el-button type="primary" icon="el-icon-search" size="mini" @click="handleQuery">搜索</el-button>
<el-button icon="el-icon-refresh" size="mini" @click="resetQuery">重置</el-button>
</el-form-item>
</el-form>
<el-row :gutter="10" class="mb8">
<el-col :span="1.5">
<el-button
type="warning"
icon="el-icon-download"
size="mini"
@click="handleExport"
v-hasPermi="['business:payDetail:export']"
>导出</el-button>
</el-col>
<right-toolbar :showSearch.sync="showSearch" @queryTable="getList"></right-toolbar>
</el-row>
<el-table v-loading="loading" :data="payDetailList">
<el-table-column type="selection" width="55" align="center" />
<el-table-column label="明细流水号" align="center" prop="bizNo" />
<el-table-column label="支付类型" align="center" prop="payTitle" />
<el-table-column label="收款账户" align="center">
<el-table-column label="户名" align="center" prop="payeeAccName" />
<el-table-column label="账户" align="center" prop="payeeAccNo" />
<el-table-column label="类型" align="center" prop="payeeAccType" >
<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" />
<el-table-column label="手续费" align="center" prop="transFee" />
<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="transactionTime" width="180">
<template slot-scope="scope">
<span>{{ parseTime(scope.row.transactionTime) }}</span>
</template>
</el-table-column>
<el-table-column label="备注" align="center" prop="payRemark" />
<el-table-column label="操作" align="center" class-name="small-padding fixed-width">
<template slot-scope="scope">
<el-button v-if="scope.row.payStatus && 3 === scope.row.payStatus"
size="mini" type="text"
icon="el-icon-s-check"
@click="voucherView(scope.row)"
>查看凭证</el-button>
<el-button v-if="scope.row.payStatus && 4 === scope.row.payStatus && scope.row.failReason"
size="mini" type="text"
icon="el-icon-s-check"
@click="failReasonView(scope.row)"
>失败原因</el-button>
</template>
</el-table-column>
</el-table>
<pagination
v-show="total>0"
:total="total"
:page.sync="queryParams.pageNum"
:limit.sync="queryParams.pageSize"
@pagination="getList"
/>
</div>
</template>
<script>
import { listPayDetail } from "@/api/business/payDetail";
import { detailVoucherView } from '@/api/business/payOrder'
export default {
name: "PayDetail",
dicts: ['pay_status', 'pay_type_title', 'payee_acc_type'],
data() {
return {
// 根路径
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: 10,
bizNo: null,
outBizNo: null,
payTitle: null,
payRemark: null,
payeeAccName: null,
payeeAccNo: null,
payeeAccType: null,
isPrivateAcc: null,
transactionTime: null,
amount: null,
transFee: null,
payStatus: null,
failReason: null,
voucher: null,
deptId: null,
},
};
},
created() {
},
mounted() {
if (this.$route.query.orderId) {
this.queryParams.orderId = this.$route.query.orderId
}
this.getList();
},
methods: {
/** 查询 批量支付明细列表 */
getList() {
this.loading = true;
listPayDetail(this.queryParams).then(response => {
this.payDetailList = response.rows;
this.total = response.total;
this.loading = false;
});
},
/** 搜索按钮操作 */
handleQuery() {
this.queryParams.pageNum = 1;
this.getList();
},
/** 重置按钮操作 */
resetQuery() {
this.resetForm("queryForm");
this.handleQuery();
},
/** 导出按钮操作 */
handleExport() {
this.download('business/payDetail/export', {
...this.queryParams
}, `payDetail_${new Date().getTime()}.xlsx`)
},
voucherView(row) {
this.$modal.loading("正在处理...")
detailVoucherView(row.id).then(resp => {
if (200 === resp.code) {
window.open(resp.data)
}
}).finally(() => {
this.$modal.closeLoading()
})
},
failReasonView(row) {
this.$alert(row.failReason, '交易失败原因', {
confirmButtonText: '确定',
});
}
}
};
</script>
This diff is collapsed.
<template>
<div class="app-container">
<el-form :model="queryParams" ref="queryForm" size="small" :inline="true" v-show="showSearch" label-width="100px">
<el-form-item label="支付名称" prop="batchPayName">
<el-input
v-model="queryParams.batchPayName"
placeholder="请输入支付名称"
clearable
@keyup.enter.native="handleQuery"
/>
</el-form-item>
<el-form-item label="付款账户名" prop="payerAccName">
<el-input
v-model="queryParams.payerAccName"
placeholder="请输入付款账户名"
clearable
@keyup.enter.native="handleQuery"
/>
</el-form-item>
<el-form-item label="付款账号" prop="payerAccNo">
<el-input
v-model="queryParams.payerAccNo"
placeholder="请输入付款账号"
clearable
@keyup.enter.native="handleQuery"
/>
</el-form-item>
<el-form-item label="流水号" prop="batchNo">
<el-input
v-model="queryParams.batchNo"
placeholder="流水号"
clearable
@keyup.enter.native="handleQuery"
/>
</el-form-item>
<el-form-item label="支付类型" prop="payTitle">
<el-select v-model="queryParams.payTitle" placeholder="请选择支付类型" @change="handleQuery" clearable>
<el-option v-for="dict in dict.type.pay_type_title" :key="dict.value" :label="dict.label"
:value="dict.value" />
</el-select>
</el-form-item>
<el-form-item label="支付状态" prop="payTitle">
<el-select v-model="queryParams.payTitle" placeholder="请选择支付状态" @change="handleQuery" clearable>
<el-option v-for="dict in dict.type.pay_status" :key="dict.value" :label="dict.label"
:value="dict.value" />
</el-select>
</el-form-item>
<el-form-item label="支付备注" prop="payRemark">
<el-input
v-model="queryParams.payRemark"
placeholder="请输入支付备注"
clearable
@keyup.enter.native="handleQuery"
/>
</el-form-item>
<el-form-item>
<el-button type="primary" icon="el-icon-search" size="mini" @click="handleQuery">搜索</el-button>
<el-button icon="el-icon-refresh" size="mini" @click="resetQuery">重置</el-button>
</el-form-item>
</el-form>
<el-row :gutter="10" class="mb8">
<el-col :span="1.5">
<el-button
type="warning"
icon="el-icon-download"
size="mini"
@click="handleExport"
v-hasPermi="['business:payOrder:export']"
>导出</el-button>
</el-col>
<right-toolbar :showSearch.sync="showSearch" @queryTable="getList"></right-toolbar>
</el-row>
<el-table v-loading="loading" :data="payOrderList" height="700px">
<el-table-column type="selection" width="55" align="center" />
<el-table-column label="支付名称" align="center" prop="batchPayName" />
<el-table-column label="付款账户" align="center" >
<template slot-scope="scope">
{{ scope.row.payerAccName }}
<div>{{ scope.row.payerAccNo }}</div>
</template>
</el-table-column>
<el-table-column label="流水号" align="center" prop="batchNo" />
<el-table-column label="支付标题" align="center" prop="payTitle" />
<el-table-column label="详情预览" align="center">
<template slot-scope="scope">
<p style="margin: 0px;padding: 0px;">批次总笔数:{{ scope.row.totalCount }}</p>
<p style="margin: 0px;padding: 0px;">批次总金额:{{ scope.row.totalAmount }}</p>
<p style="margin: 0px;padding: 0px;">打款中笔数:{{ scope.row.dealingCount }}</p>
<p style="margin: 0px;padding: 0px;">成功笔数:{{ scope.row.successCount }}</p>
<p style="margin: 0px;padding: 0px;">成功金额:{{ scope.row.successAmount }}</p>
<p style="margin: 0px;padding: 0px;">失败笔数:{{ scope.row.failCount }}</p>
<p style="margin: 0px;padding: 0px;">失败金额:{{ scope.row.failAmount }}</p>
<p style="margin: 0px;padding: 0px;">服务费:{{ scope.row.transFee }}</p>
</template>
</el-table-column>
<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="transactionTime" width="180">
<template slot-scope="scope">
<span>{{ parseTime(scope.row.transactionTime) }}</span>
</template>
</el-table-column>
<el-table-column label="备注" align="center" prop="payRemark" />
<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-s-order"
@click="viewDetail(scope.row)"
>查看明细</el-button>
</template>
</el-table-column>
</el-table>
<pagination
v-show="total>0"
:total="total"
:page.sync="queryParams.pageNum"
:limit.sync="queryParams.pageSize"
@pagination="getList"
/>
</div>
</template>
<script>
import { listPayOrder } from "@/api/business/payOrder";
export default {
name: "PayOrder",
dicts: ['pay_status', 'pay_type_title'],
data() {
return {
// 根路径
baseURL: process.env.VUE_APP_BASE_API,
// 遮罩层
loading: true,
// 选中数组
ids: [],
// 非单个禁用
single: true,
// 非多个禁用
multiple: true,
// 显示搜索条件
showSearch: true,
// 总条数
total: 0,
// 批量支付表格数据
payOrderList: [],
// 弹出层标题
title: "",
// 是否显示弹出层
open: false,
// 查询参数
queryParams: {
pageNum: 1,
pageSize: 10,
batchPayName: null,
payerCompanyId: null,
payerAccName: null,
payerAccNo: null,
batchNo: null,
outBatchNo: null,
payTitle: null,
payRemark: null,
transactionTime: null,
totalCount: null,
totalAmount: null,
successCount: null,
failCount: null,
successAmount: null,
failAmount: null,
transFee: null,
payStatus: null,
voucher: null,
upateTime: null,
deptId: null,
},
};
},
created() {
this.getList();
},
methods: {
/** 查询批量支付列表 */
getList() {
this.loading = true;
listPayOrder(this.queryParams).then(response => {
this.payOrderList = response.rows;
this.total = response.total;
this.loading = false;
});
},
/** 搜索按钮操作 */
handleQuery() {
this.queryParams.pageNum = 1;
this.getList();
},
/** 重置按钮操作 */
resetQuery() {
this.resetForm("queryForm");
this.handleQuery();
},
/** 导出按钮操作 */
handleExport() {
this.download('business/payOrder/export', {
...this.queryParams
}, `payOrder_${new Date().getTime()}.xlsx`)
},
viewDetail(row) {
this.$router.push({ path: "/business/payDetails", query: {orderId : row.id} });
}
}
};
</script>
......@@ -60,7 +60,7 @@
<el-table-column label="用工单位" align="center" prop="companyName">
<template slot-scope="scope">
{{ scope.row.companyName }}
<el-tag>{{ scope.row.companyCode }}</el-tag>
<el-tag v-if="scope.row.companyCode">{{ scope.row.companyCode }}</el-tag>
</template>
</el-table-column>
<el-table-column label="性别" align="center" prop="gender" />
......@@ -148,10 +148,10 @@
</el-table-column>
<el-table-column label="操作" align="center" fixed="right" width="110" class-name="small-padding fixed-width">
<template slot-scope="scope">
<el-button v-if="scope.row.payStatus && 3 != scope.row.payStatus && 2 != scope.row.payStatus" size="mini"
type="text" icon="el-icon-edit" @click="handleUpdate(scope.row)"
v-hasPermi="['business:payOutDetail:edit']">修改
</el-button>
<!-- <el-button v-if="scope.row.payStatus && 3 != scope.row.payStatus && 2 != scope.row.payStatus" size="mini"-->
<!-- type="text" icon="el-icon-edit" @click="handleUpdate(scope.row)"-->
<!-- v-hasPermi="['business:payOutDetail:edit']">修改-->
<!-- </el-button>-->
<el-button v-if="scope.row.payStatus && 1 == scope.row.payStatus" size="mini" type="text" icon="el-icon-edit"
@click="checkWork(scope.row)" v-hasPermi="['business:payOutDetail:edit']">调整薪资
</el-button>
......
......@@ -56,7 +56,7 @@
<el-table-column label="用工单位" align="center" prop="companyName">
<template slot-scope="scope">
{{ scope.row.companyName }}
<el-tag>{{ scope.row.companyCode }}</el-tag>
<el-tag v-if="scope.row.companyCode">{{ scope.row.companyCode }}</el-tag>
</template>
</el-table-column>
<el-table-column label="性别" align="center" prop="gender" />
......@@ -140,10 +140,10 @@
</el-table-column>
<el-table-column label="操作" align="center" width="110" fixed="right" class-name="small-padding fixed-width">
<template slot-scope="scope">
<el-button v-if="scope.row.payStatus && 3 != scope.row.payStatus && 2 != scope.row.payStatus" size="mini"
type="text" icon="el-icon-edit" @click="handleUpdate(scope.row)"
v-hasPermi="['business:payOutDetail:edit']">修改
</el-button>
<!-- <el-button v-if="scope.row.payStatus && 3 != scope.row.payStatus && 2 != scope.row.payStatus" size="mini"-->
<!-- type="text" icon="el-icon-edit" @click="handleUpdate(scope.row)"-->
<!-- v-hasPermi="['business:payOutDetail:edit']">修改-->
<!-- </el-button>-->
<el-button v-if="scope.row.payStatus && 1 == scope.row.payStatus" size="mini" type="text" icon="el-icon-edit"
@click="checkWork(scope.row)" v-hasPermi="['business:payOutDetail:edit']">调整薪资
</el-button>
......
......@@ -164,7 +164,7 @@
</el-form-item>
<el-form-item label="付款账号" prop="payAccNo">
<el-select v-model="payForm.payAccNo" placeholder="请选择">
<el-option v-for="item in payAccList" :key="item.id" :label="item.payAccNo" :value="item.payAccNo">
<el-option v-for="item in payAccList" :key="item.id" :label="item.payAccNo + ' -- ' + item.companyName" :value="item.payAccNo">
</el-option>
</el-select>
</el-form-item>
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment