Browse Source

代付订单增加手动处理

master
j1ack 2 years ago
parent
commit
857bfe64ae
  1. 10
      src/api/form.js
  2. 640
      src/views/otc/otcStoreDaiFuOrder/index.vue

10
src/api/form.js

@ -275,6 +275,14 @@ export const paymentDaiFuRecord = {
params: query,
})
},
// 手工处理
payHandle: (data) => {
return request({
url: '/order/PaymentRecord/paymentHandle?' + qs.stringify(data),
method: 'post',
})
},
}
/**
@ -303,7 +311,7 @@ export const payGetMerchantTotalInfo = {
/**
* 用户模块
*/
export const payAgentUser = {
export const payAgentUser = {
// 更新密钥
upGoogleCaptcha: (data) => {
return request({

640
src/views/otc/otcStoreDaiFuOrder/index.vue

@ -1,260 +1,460 @@
<template>
<div class="app-container">
<div class="search_con m-b-28">
<el-form :model="queryParams" ref="queryForm" :inline="true" v-show="showSearch" label-width="116px"
class="form" style="position: relative">
<el-form-item label="平台订单号" prop="noOrder">
<el-input size="medium" v-model="queryParams.noOrder" placeholder="请输入平台订单号"
@keyup.enter.native="handleQuery" style="width: 180px; border-color: #e6f1ff" />
</el-form-item>
<el-form-item label="商户订单号" prop="merchantOrderNo">
<el-input size="medium" v-model="queryParams.merchantOrderNo" placeholder="请输入商户订单号"
@keyup.enter.native="handleQuery" style="width: 180px; border-color: #e6f1ff" />
</el-form-item>
<el-form-item label="收款卡号" prop="cardNumber">
<div class="app-container">
<div class="search_con m-b-28">
<el-form
:model="queryParams"
ref="queryForm"
:inline="true"
v-show="showSearch"
label-width="116px"
class="form"
style="position: relative"
>
<el-form-item label="平台订单号" prop="noOrder">
<el-input
size="medium"
v-model="queryParams.noOrder"
placeholder="请输入平台订单号"
@keyup.enter.native="handleQuery"
style="width: 180px; border-color: #e6f1ff"
/>
</el-form-item>
<el-form-item label="商户订单号" prop="merchantOrderNo">
<el-input
size="medium"
v-model="queryParams.merchantOrderNo"
placeholder="请输入商户订单号"
@keyup.enter.native="handleQuery"
style="width: 180px; border-color: #e6f1ff"
/>
</el-form-item>
<!-- <el-form-item label="收款卡号" prop="cardNumber">
<el-input size="medium" v-model="queryParams.cardNumber" placeholder="请输入收款卡号"
@keyup.enter.native="handleQuery" style="width: 180px; border-color: #e6f1ff" />
</el-form-item>
<el-form-item label="商户名称" prop="merchantName">
<el-input size="medium" v-model="queryParams.merchantName" placeholder="请输入商户名称"
@keyup.enter.native="handleQuery" style="width: 180px; border-color: #e6f1ff" />
</el-form-item>
<el-form-item label="开户名" prop="accountName">
</el-form-item> -->
<el-form-item label="商户名称" prop="merchantName">
<el-input
size="medium"
v-model="queryParams.merchantName"
placeholder="请输入商户名称"
@keyup.enter.native="handleQuery"
style="width: 180px; border-color: #e6f1ff"
/>
</el-form-item>
<!-- <el-form-item label="开户名" prop="accountName">
<el-input size="medium" v-model="queryParams.accountName" placeholder="请输入开户名"
@keyup.enter.native="handleQuery" style="width: 180px; border-color: #e6f1ff" />
</el-form-item>
<el-form-item label="代付金额" prop="tranAmt">
<el-input size="medium" v-model="queryParams.tranAmt" placeholder="请输入代付金额"
@keyup.enter.native="handleQuery" style="width: 180px; border-color: #e6f1ff" />
</el-form-item>
<el-form-item label="批次号" prop="batchNo">
<el-input size="medium" v-model="queryParams.batchNo" placeholder="请输入批次号"
@keyup.enter.native="handleQuery" style="width: 180px; border-color: #e6f1ff" />
</el-form-item>
</el-form-item> -->
<el-form-item label="代付金额" prop="tranAmt">
<el-input
size="medium"
v-model="queryParams.tranAmt"
placeholder="请输入代付金额"
@keyup.enter.native="handleQuery"
style="width: 180px; border-color: #e6f1ff"
/>
</el-form-item>
<el-form-item label="批次号" prop="batchNo">
<el-input
size="medium"
v-model="queryParams.batchNo"
placeholder="请输入批次号"
@keyup.enter.native="handleQuery"
style="width: 180px; border-color: #e6f1ff"
/>
</el-form-item>
<el-form-item label="订单状态" prop="orderStatus">
<el-select v-model="queryParams.orderStatus" placeholder="请选择状态" clearable size="medium">
<el-option v-for="dict in sysOrderStatus" :key="dict.dictValue" :label="dict.dictLabel"
:value="dict.dictValue" />
</el-select>
</el-form-item>
<el-form-item label="订单状态" prop="orderStatus">
<el-select
v-model="queryParams.orderStatus"
placeholder="请选择状态"
clearable
size="medium"
>
<el-option
v-for="dict in sysOrderStatus"
:key="dict.dictValue"
:label="dict.dictLabel"
:value="dict.dictValue"
/>
</el-select>
</el-form-item>
<el-form-item label="创建时间">
<el-date-picker v-model="dateRange" size="medium" style="width: 360px"
value-format="yyyy-MM-dd HH:mm:ss" type="datetimerange" range-separator="-" start-placeholder="开始日期"
end-placeholder="结束日期" :unlink-panels="true"
:default-time="['00:00:00', '23:59:59']"></el-date-picker>
</el-form-item>
<el-form-item>
<el-button type="primary" size="medium" @click="handleQuery">搜索</el-button>
<el-button size="medium" @click="resetQuery">重置</el-button>
</el-form-item>
</el-form>
</div>
<div class="bg bg-white">
<el-row :gutter="10" class="m-b-16">
<el-col :span="1.5">
<el-button type="primary" size="medium"
@click="handleExport">导出</el-button>
</el-col>
<right-toolbar :showSearch.sync="showSearch" @queryTable="getList"></right-toolbar>
</el-row>
<el-table :data="otcCoinList" v-loading="loading">
<el-form-item label="创建时间">
<el-date-picker
v-model="dateRange"
size="medium"
style="width: 360px"
value-format="yyyy-MM-dd HH:mm:ss"
type="datetimerange"
range-separator="-"
start-placeholder="开始日期"
end-placeholder="结束日期"
:unlink-panels="true"
:default-time="['00:00:00', '23:59:59']"
></el-date-picker>
</el-form-item>
<el-form-item>
<el-button type="primary" size="medium" @click="handleQuery"
>搜索</el-button
>
<el-button size="medium" @click="resetQuery">重置</el-button>
</el-form-item>
</el-form>
</div>
<div class="bg bg-white">
<el-row :gutter="10" class="m-b-16">
<el-col :span="1.5">
<el-button type="primary" size="medium" @click="handleExport"
>导出</el-button
>
</el-col>
<right-toolbar
:showSearch.sync="showSearch"
@queryTable="getList"
></right-toolbar>
</el-row>
<el-table-column label="平台订单号" align="center" prop="noOrder" />
<el-table :data="otcCoinList" v-loading="loading">
<el-table-column label="平台订单号" align="center" prop="noOrder" />
<el-table-column label="商户订单号" align="center" prop="outTradeNo" />
<el-table-column label="商户名称" align="center" prop="merchantName" />
<el-table-column label="批次号" align="center" prop="batchNo" min-width="120" />
<el-table-column :label="'代付金额'" align="center" prop="tranAmt">
<template slot-scope="scope">
{{ scope.row.tranAmt }}
</template>
</el-table-column>
<el-table-column label="商户订单号" align="center" prop="outTradeNo" />
<el-table-column label="商户名称" align="center" prop="merchantName" />
<el-table-column
label="批次号"
align="center"
prop="batchNo"
min-width="120"
/>
<el-table-column :label="'代付金额'" align="center" prop="tranAmt">
<template slot-scope="scope">
{{ scope.row.tranAmt }}
</template>
</el-table-column>
<el-table-column :label="'商户手续费'" align="center" prop="merchantFee">
<template slot-scope="scope">
{{ scope.row.merchantFee }}
</template>
</el-table-column>
<el-table-column
:label="'商户手续费'"
align="center"
prop="merchantFee"
>
<template slot-scope="scope">
{{ scope.row.merchantFee }}
</template>
</el-table-column>
<el-table-column :label="'商户单笔手续费'" align="center" prop="merchantSingleFee">
<template slot-scope="scope">
{{ scope.row.merchantSingleFee }}
</template>
</el-table-column>
<el-table-column :label="'商户费率(%)'" align="center" prop="merchantSingleFee">
<template slot-scope="scope">
{{ parseFloat(NumberMul(scope.row.merchantRate, 100)).toFixed(2) }}
</template>
</el-table-column>
<el-table-column label="银行名称" align="center" prop="bankName" />
<el-table-column
:label="'商户单笔手续费'"
align="center"
prop="merchantSingleFee"
>
<template slot-scope="scope">
{{ scope.row.merchantSingleFee }}
</template>
</el-table-column>
<el-table-column
:label="'商户费率(%)'"
align="center"
prop="merchantSingleFee"
>
<template slot-scope="scope">
{{ parseFloat(NumberMul(scope.row.merchantRate, 100)).toFixed(2) }}
</template>
</el-table-column>
<!-- <el-table-column label="银行名称" align="center" prop="bankName" />
<el-table-column label="卡号" align="center" prop="cardNumber" />
<el-table-column label="开户名" align="center" prop="accountName" />
<el-table-column label="开户行" align="center" prop="branchName" />
<!-- <el-table-column label="订单状态" align="center" prop="orderStatus" :formatter="sysOrderStatusFormat" /> -->
<el-table-column label="订单状态" align="center" prop="orderStatus" width="180">
<template slot-scope="scope">
<span :style="classObje(scope.row.orderStatus)">{{ sysOrderStatusFormat(scope.row) }}</span>
</template>
</el-table-column>
<el-table-column label="开户行" align="center" prop="branchName" /> -->
<!-- <el-table-column label="异步通知状态" align="center" prop="notifyStatus" :formatter="notifyStatusFormat" /> -->
<el-table-column label="地址" align="center" prop="address" />
<el-table-column label="备注" align="center" prop="orderMsg" />
<!-- <el-table-column label="订单状态" align="center" prop="orderStatus" :formatter="sysOrderStatusFormat" /> -->
<el-table-column
label="订单状态"
align="center"
prop="orderStatus"
width="180"
>
<template slot-scope="scope">
<span :style="classObje(scope.row.orderStatus)">{{
sysOrderStatusFormat(scope.row)
}}</span>
</template>
</el-table-column>
<el-table-column label="创建时间" align="center" prop="createTime" min-width="180" />
<el-table-column label="更新时间" align="center" prop="updateTime" min-width="180" />
<!-- <el-table-column label="异步通知状态" align="center" prop="notifyStatus" :formatter="notifyStatusFormat" /> -->
</el-table>
<pagination v-show="total > 0" :total="total" :page.sync="queryParams.pageNum"
:limit.sync="queryParams.pageSize" @pagination="getList" />
</div>
<el-table-column label="备注" align="center" prop="orderMsg" />
<el-table-column
label="创建时间"
align="center"
prop="createTime"
min-width="180"
/>
<el-table-column
label="更新时间"
align="center"
prop="updateTime"
min-width="180"
/>
<el-table-column
label="操作"
align="center"
class-name="small-padding fixed-width"
>
<template slot-scope="scope">
<el-button
size="medium"
v-if="scope.row.orderStatus == 'processreview'||scope.row.orderStatus == 'processing'"
type="text"
@click="handleOrder(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>
<!-- 处理当前订单 -->
<el-dialog
v-dialogDrag
title="手工处理"
:visible.sync="open"
width="500px"
append-to-body
:close-on-click-modal="false"
:before-close="cancel"
>
<el-form ref="formDeal" :model="form" :rules="rules" label-width="120px">
<el-form-item label="订单状态" prop="status">
<el-select
v-model="form.status"
placeholder="请选择订单状态"
clearable
size="medium"
>
<el-option
v-for="(item, i) in orderStatusType"
:key="i"
:label="item.label"
:value="item.value"
></el-option>
</el-select>
</el-form-item>
<el-form-item label="谷歌动态验证码" prop="googleCode">
<el-input
v-model="form.googleCode"
placeholder="请输入谷歌动态验证码"
style="width: 217px"
/>
</el-form-item>
</el-form>
<div slot="footer" class="dialog-footer">
<el-button
:disabled="!form.status || !form.googleCode"
:type="form.status && form.googleCode ? 'primary' : 'info'"
icon=""
size="medium"
@click="submitForm('processsuccess', 'formDeal')"
>确定</el-button
>
<el-button plain size="medium" @click="cancel">取消</el-button>
</div>
</el-dialog>
</div>
</template>
<script>
import { paymentDaiFuRecord, common_api } from "@/api/form";
export default {
name: "otcStoreDaiFuOrder",
components: {
},
computed:{
classObje(status){
return(status)=>{
if(status=='processing'){
return {'color':'rgba(255, 124, 30, 1)'}
}
if(status=='fail_appeal'){
return {'color':'rgba(237, 80, 89, 1)'}
}
}
name: "otcStoreDaiFuOrder",
components: {},
computed: {
classObje(status) {
return (status) => {
if (status == "processing") {
return { color: "rgba(255, 124, 30, 1)" };
}
if (status == "fail_appeal") {
return { color: "rgba(237, 80, 89, 1)" };
}
};
},
data() {
return {
dateRange: [],
sysOrderStatus: [],
notifyStatusOptions: [],
//
loading: true,
//
ids: [],
//
single: true,
//
multiple: true,
//
showSearch: true,
//
total: 0,
// OTC
otcCoinList: [],
//
title: "",
//
open: false,
openTest: false,
//
queryParams: {
pageNum: 1,
pageSize: 10,
noOrder: null,
merchantOrderNo: null,
cardNumber: null,
merchantName: null,
accountName: null,
tranAmt: null,
orderStatus: null,
batchNo: null
},
//
form: {},
//
rules: {
},
};
},
created() {
this.getList();
},
data() {
return {
orderStatusType: [
{
label: "成功",
value: 2,
},
{
label: "失败",
value: 3,
},
],
dateRange: [],
sysOrderStatus: [],
notifyStatusOptions: [],
//
loading: true,
//
ids: [],
//
single: true,
//
multiple: true,
//
showSearch: true,
//
total: 0,
// OTC
otcCoinList: [],
//
title: "",
//
open: false,
openTest: false,
//
queryParams: {
pageNum: 1,
pageSize: 10,
noOrder: null,
merchantOrderNo: null,
// cardNumber: null,
merchantName: null,
// accountName: null,
tranAmt: null,
orderStatus: null,
batchNo: null,
},
//
form: {},
//
rules: {
type: [{ required: true, message: "请选择订单类型", trigger: "blur" }],
merchantId: [
{ required: true, message: "请选择商户", trigger: "blur" },
],
amount: [{ required: true, message: "请输入金额", trigger: "blur" }],
},
};
},
created() {
this.getList();
this.getDicts("d_order_status").then(response => {
this.sysOrderStatus = response.data;
this.sysOrderStatus.unshift({
dictLabel:'全部',
dictValue:null,
this.getDicts("d_order_status").then((response) => {
this.sysOrderStatus = response.data;
this.sysOrderStatus.unshift({
dictLabel: "全部",
dictValue: null,
});
});
this.getDicts("notify_status").then(response => {
this.notifyStatusOptions = response.data;
this.notifyStatusOptions.unshift({
dictLabel:'全部',
dictValue:null,
});
this.getDicts("notify_status").then((response) => {
this.notifyStatusOptions = response.data;
this.notifyStatusOptions.unshift({
dictLabel: "全部",
dictValue: null,
});
});
},
methods: {
/** 提交按钮 */
submitForm(t, f) {
this.$refs[f].validate((valid) => {
if (valid) {
if (!this.form.status) {
return;
}
let form = {
orderNo: this.form.orderNo,
status: this.form.status,
googleCode: this.form.googleCode,
};
paymentDaiFuRecord
.payHandle(form)
.then((response) => {
this.open = false;
this.msgSuccess("处理成功");
this.getList();
})
.catch(() => {});
}
});
},
/** 手工处理 */
handleOrder(row) {
this.reset();
this.form.orderNo = row.noOrder;
this.open = true;
},
getList() {
this.loading = true;
paymentDaiFuRecord
.listInfo(this.addSESDateRange(this.queryParams, this.dateRange))
.then((response) => {
this.otcCoinList = response.rows;
this.total = Number(response.total);
this.loading = false;
});
},
methods: {
getList() {
this.loading = true;
paymentDaiFuRecord.listInfo(this.addSESDateRange(this.queryParams, this.dateRange)).then(response => {
this.otcCoinList = response.rows;
this.total = Number(response.total);
this.loading = false;
});
},
sysOrderStatusFormat(row, column) {
return this.selectDictLabel(this.sysOrderStatus, row.orderStatus);
},
notifyStatusFormat(row, column) {
return this.selectDictLabel(this.notifyStatusOptions, row.notifyStatus);
},
sysOrderStatusFormat(row, column) {
return this.selectDictLabel(this.sysOrderStatus, row.orderStatus);
},
notifyStatusFormat(row, column) {
return this.selectDictLabel(this.notifyStatusOptions, row.notifyStatus);
},
//
cancel() {
this.open = false;
this.openTest = false;
this.reset();
},
//
reset() {
this.form = {
};
this.resetForm("form");
},
/** 搜索按钮操作 */
handleQuery() {
this.queryParams.pageNum = 1;
this.getList();
},
/** 重置按钮操作 */
resetQuery() {
this.dateRange = []
this.resetForm("queryForm");
this.handleQuery();
},
//
cancel() {
this.open = false;
this.openTest = false;
this.reset();
},
//
reset() {
this.form = {};
this.resetForm("form");
},
/** 搜索按钮操作 */
handleQuery() {
this.queryParams.pageNum = 1;
this.getList();
},
/** 重置按钮操作 */
resetQuery() {
this.dateRange = [];
this.resetForm("queryForm");
this.handleQuery();
},
/** 导出按钮操作 */
handleExport() {
const queryParams = this.queryParams;
this.$confirm('是否确认导出所有数据项?', "警告", {
confirmButtonText: "确定",
cancelButtonText: "取消",
type: "warning"
}).then(function () {
return paymentDaiFuRecord.exportList(queryParams);
}).then(response => {
this.download(response.msg);
})
}
}
/** 导出按钮操作 */
handleExport() {
const queryParams = this.queryParams;
this.$confirm("是否确认导出所有数据项?", "警告", {
confirmButtonText: "确定",
cancelButtonText: "取消",
type: "warning",
})
.then(function () {
return paymentDaiFuRecord.exportList(queryParams);
})
.then((response) => {
this.download(response.msg);
});
},
},
};
</script>
Loading…
Cancel
Save