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>
<template>
<div class="app-container">
<div style="padding:20px 10px 10px 10px;box-shadow: 0 2px 4px rgba(0, 0, 0, .12), 0 0 6px rgba(0, 0, 0, .04)">
<el-form ref="batchForm" :model="batchForm" :rules="batchRules" label-width="120px">
<el-row :gutter="10">
<el-col :span="12">
<el-form-item label="支付名称" prop="batchPayName">
<el-input v-model="batchForm.batchPayName" placeholder="请输入支付名称" />
</el-form-item>
</el-col>
<el-col :span="12">
<el-form-item label="支付类型" prop="payTitle">
<el-select v-model="batchForm.payTitle" placeholder="请选择支付类型">
<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-col>
<el-col :span="12">
<el-form-item label="付款账号" prop="payerAccNo">
<el-select v-model="batchForm.payerAccNo" placeholder="请选择付款账号">
<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>
</el-col>
<el-col :span="12">
<el-form-item label="备注" prop="payRemark">
<el-input v-model="batchForm.payRemark" placeholder="请输入支付备注" />
</el-form-item>
</el-col>
</el-row>
</el-form>
</div>
<div style="padding:10px;margin-top:20px;box-shadow: 0 2px 4px rgba(0, 0, 0, .12), 0 0 6px rgba(0, 0, 0, .04)">
<el-row :gutter="10" class="mb8">
<el-col :span="1.5">
<el-button
type="primary"
icon="el-icon-plus"
size="mini"
@click="handleAdd"
>新增</el-button>
</el-col>
<el-col :span="1.5">
<el-button
type="danger"
icon="el-icon-delete"
size="mini"
:disabled="multiple"
@click="handleDelete"
>删除</el-button>
</el-col>
<el-col :span="1.5">
<el-button type="info" icon="el-icon-upload2" @click="importClick"
v-hasPermi="['business:outPersonal:add']">导入</el-button>
</el-col>
</el-row>
<el-table v-loading="loading" :data="transList" @selection-change="handleSelectionChange" :height="640"
:summary-method="getSummaries" :key="formTableKey"
:highlight-current-row="true"
show-summary :highlight-selection-row="true" :stripe="true">
<el-table-column type="selection" width="55" align="center" />
<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="payTitle" />
<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-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.transList">明细条数: {{ this.transList.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>
<!-- 添加或修改 批量支付明细对话框 -->
<el-dialog title="新增收款人" :visible.sync="addPanelOpen" width="600px" append-to-body>
<el-form ref="form" :model="form" :rules="rules" label-width="120px">
<el-form-item label="支付类型" prop="payTitle">
<el-select v-model="form.payTitle" placeholder="请选择支付类型">
<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="payeeAccName">
<el-input v-model="form.payeeAccName" placeholder="请输入收款人户名" />
</el-form-item>
<el-form-item label="收款人账户" prop="payeeAccNo">
<el-input v-model="form.payeeAccNo" placeholder="请输入收款人账户" />
</el-form-item>
<el-form-item label="收款账户类型" prop="payeeAccType">
<el-select v-model="form.payeeAccType" placeholder="请选择收款账户类型" disabled>
<el-option v-for="dict in dict.type.payee_acc_type" :key="dict.value" :label="dict.label"
:value="dict.value * 1" />
</el-select>
</el-form-item>
<el-form-item label="公户/私户" prop="isPrivateAcc">
<el-select v-model="form.isPrivateAcc" placeholder="请选择收款账户类型" disabled>
<el-option label="对私账户" :value="1" />
<el-option label="对公账户" :value="2" />
</el-select>
</el-form-item>
<el-form-item label="金额" prop="amount">
<el-input-number style="width: 100%" v-model="form.amount" :precision="2" :step="0.1" placeholder="请输入支付金额" />
</el-form-item>
<el-form-item label="备注" prop="payRemark">
<el-input v-model="form.payRemark" placeholder="请输入支付备注" />
</el-form-item>
</el-form>
<div slot="footer" class="dialog-footer">
<el-button type="primary" @click="addDetail">确 定</el-button>
<el-button @click="addPanelOpen = false">取 消</el-button>
</div>
</el-dialog>
<!-- 导入对话框 -->
<el-dialog title="导入人员信息" :visible.sync="upload.open" width="400px" append-to-body>
<el-upload ref="upload" :limit="1" accept=".xlsx, .xls" :headers="upload.headers"
:action="upload.url + '?templateType=' + upload.uploadRadio" :disabled="upload.isUploading"
:on-progress="handleFileUploadProgress" :on-success="handleFileSuccess" :auto-upload="false" drag>
<i class="el-icon-upload"></i>
<div class="el-upload__text">将文件拖到此处,或<em>点击上传</em></div>
<div class="el-upload__tip text-center" slot="tip">
<!-- <div class="el-upload__tip" slot="tip">-->
<!-- <el-checkbox v-model="upload.updateSupport" /> 是否更新已经存在的用户数据 -->
<!-- </div>-->
<span>仅允许导入xls、xlsx格式文件。</span>
<a style="color:#1890ff;margin:0px;line-height:14px" class="download" download="收款人明细模板"
href="/收款人明细模板.xlsx" target="_blank">下载模板</a>
</div>
</el-upload>
<div slot="footer" class="dialog-footer">
<el-button type="primary" @click="importByExcel">确 定</el-button>
<el-button @click="upload.open = false">取 消</el-button>
</div>
</el-dialog>
</div>
</template>
<script>
import { listAllAccInfo } from '@/api/business/accInfo'
import { getToken } from '@/utils/auth'
import { addPayOrder } from '@/api/business/payOrder'
export default {
name: "batchToBank",
dicts: ['pay_type_title', 'payee_acc_type'],
data() {
return {
formTableKey: 1,
upload: {
// 是否显示弹出层(用户导入)
open: false,
// 是否禁用上传
isUploading: false,
// 设置上传的请求头部
headers: { Authorization: "Bearer " + getToken() },
// 上传的地址
url: process.env.VUE_APP_BASE_API + "/business/payOrder/detail/importByExcel"
},
indexList: [],
payAccList: [],
batchForm: {},
batchRules: {
payTitle: [
{ required: true, message: "支付类型不能为空", trigger: "blur" }
],
batchPayName: [
{ required: true, message: "支付名称不能为空", trigger: "blur" }
],
payerAccNo: [
{ required: true, message: "请选择付款账号", trigger: "blur" }
],
},
addPanelOpen: false,
// 非多个禁用
multiple: true,
loading: false,
transList: [],
form: {
},
rules: {
payTitle: [
{ required: true, message: "支付类型不能为空", trigger: "blur" }
],
payeeAccName: [
{ required: true, message: "收款人户名不能为空", trigger: "blur" }
],
payeeAccNo: [
{ required: true, message: "收款人账户不能为空", trigger: "blur" }
],
payeeAccType: [
{ required: true, message: "请选择收款账户类型", trigger: "blur" }
],
amount: [
{ required: true, message: "转账金额不能为空", trigger: "blur" },
{
validator: (rule, value, callback) => {
if (value < 0.01) {
callback(new Error('转账金额必须大于0'));
} else {
callback();
}
}, trigger: 'blur'
}
],
}
};
},
created() {
},
mounted() {
this.getPayAccList()
},
methods: {
getPayAccList() {
listAllAccInfo().then(resp => {
if (resp.code == 200) {
this.payAccList = resp.data
}
})
},
// 新增明细
handleAdd() {
this.addPanelOpen = true
this.form = {
amount: 0,
payeeAccType: 1,
isPrivateAcc: 1
}
if (this.batchForm.payTitle) {
this.form.payTitle = this.batchForm.payTitle
}
},
// 删除明细
handleDelete(index, pStr) {
this.$confirm('确定执行删除操作吗?', '提示', {
confirmButtonText: '确定',
cancelButtonText: '取消',
type: 'warning'
}).then(() => {
if (pStr && pStr === 'delRow') {
this.transList.splice(index, 1)
} else if (this.indexList && this.indexList.length > 0) {
let transMap = new Map();
this.transList.forEach((item, _index) => {
transMap.set(_index, item)
})
this.indexList.forEach(item => {
transMap.delete(item)
})
this.transList = [...transMap.values()]
this.indexList = [];
}
this.formTableKey += 1
}).catch(() => {});
},
// 多选框选中数据
handleSelectionChange(selection) {
this.indexList = []
selection.map(item => {
this.indexList.push(this.transList.findIndex(dataItem => dataItem === item))
});
this.single = selection.length !== 1
this.multiple = !selection.length
},
addDetail() {
this.$refs["form"].validate(valid => {
if (valid) {
this.transList.push(this.form)
this.addPanelOpen = false
}
this.formTableKey += 1
});
},
importClick() {
this.$refs["batchForm"].validate(valid => {
if (valid) {
this.upload.open = true
}
});
},
handleFileUploadProgress(event, file, fileList) {
this.upload.isUploading = true;
},
// 文件上传成功处理
handleFileSuccess(response, file, fileList) {
this.upload.open = false;
this.upload.isUploading = false;
this.$refs.upload.clearFiles();
this.$alert("<div style='overflow: auto;overflow-x: hidden;max-height: 70vh;padding: 10px 20px 0;'>" + response.msg + "</div>", "导入结果", { dangerouslyUseHTMLString: true });
if (response.data && response.data.length > 0) {
response.data.forEach((item, index) => {
this.transList.push({
payTitle: this.batchForm.payTitle,
payeeAccName: item.payeeAccName,
payeeAccNo: item.payeeAccNo,
payeeAccType: 1,
isPrivateAcc: 1,
amount: item.amount,
payRemark: item.payRemark
})
})
}
this.formTableKey += 1
},
importByExcel() {
this.$refs.upload.submit();
},
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() {
if (!this.transList) {
return this.$modal.msgWarning("支付明细列表不能为空!");
}
this.$refs["batchForm"].validate(valid => {
if (valid) {
this.$confirm('确定提交支付吗?', '提示', {
confirmButtonText: '确定',
cancelButtonText: '取消',
type: 'warning'
}).then(() => {
this.batchForm.details = this.transList;
addPayOrder(this.batchForm).then(resp => {
if (200 === resp.code) {
this.$modal.msgSuccess("操作成功");
this.$router.push({ path: "/transfer/record" });
}
})
}).catch(() => {});
}
});
}
}
};
</script>
<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