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, 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) => { upGoogleCaptcha: (data) => {
return request({ return request({

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

@ -1,260 +1,460 @@
<template> <template>
<div class="app-container"> <div class="app-container">
<div class="search_con m-b-28"> <div class="search_con m-b-28">
<el-form :model="queryParams" ref="queryForm" :inline="true" v-show="showSearch" label-width="116px" <el-form
class="form" style="position: relative"> :model="queryParams"
<el-form-item label="平台订单号" prop="noOrder"> ref="queryForm"
<el-input size="medium" v-model="queryParams.noOrder" placeholder="请输入平台订单号" :inline="true"
@keyup.enter.native="handleQuery" style="width: 180px; border-color: #e6f1ff" /> v-show="showSearch"
</el-form-item> label-width="116px"
<el-form-item label="商户订单号" prop="merchantOrderNo"> class="form"
<el-input size="medium" v-model="queryParams.merchantOrderNo" placeholder="请输入商户订单号" style="position: relative"
@keyup.enter.native="handleQuery" style="width: 180px; border-color: #e6f1ff" /> >
</el-form-item> <el-form-item label="平台订单号" prop="noOrder">
<el-form-item label="收款卡号" prop="cardNumber"> <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="请输入收款卡号" <el-input size="medium" v-model="queryParams.cardNumber" placeholder="请输入收款卡号"
@keyup.enter.native="handleQuery" style="width: 180px; border-color: #e6f1ff" /> @keyup.enter.native="handleQuery" style="width: 180px; border-color: #e6f1ff" />
</el-form-item> </el-form-item> -->
<el-form-item label="商户名称" prop="merchantName"> <el-form-item label="商户名称" prop="merchantName">
<el-input size="medium" v-model="queryParams.merchantName" placeholder="请输入商户名称" <el-input
@keyup.enter.native="handleQuery" style="width: 180px; border-color: #e6f1ff" /> size="medium"
</el-form-item> v-model="queryParams.merchantName"
<el-form-item label="开户名" prop="accountName"> 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="请输入开户名" <el-input size="medium" v-model="queryParams.accountName" placeholder="请输入开户名"
@keyup.enter.native="handleQuery" style="width: 180px; border-color: #e6f1ff" /> @keyup.enter.native="handleQuery" style="width: 180px; border-color: #e6f1ff" />
</el-form-item> </el-form-item> -->
<el-form-item label="代付金额" prop="tranAmt"> <el-form-item label="代付金额" prop="tranAmt">
<el-input size="medium" v-model="queryParams.tranAmt" placeholder="请输入代付金额" <el-input
@keyup.enter.native="handleQuery" style="width: 180px; border-color: #e6f1ff" /> size="medium"
</el-form-item> v-model="queryParams.tranAmt"
<el-form-item label="批次号" prop="batchNo"> placeholder="请输入代付金额"
<el-input size="medium" v-model="queryParams.batchNo" placeholder="请输入批次号" @keyup.enter.native="handleQuery"
@keyup.enter.native="handleQuery" style="width: 180px; border-color: #e6f1ff" /> style="width: 180px; border-color: #e6f1ff"
</el-form-item> />
</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-form-item label="订单状态" prop="orderStatus">
<el-select v-model="queryParams.orderStatus" placeholder="请选择状态" clearable size="medium"> <el-select
<el-option v-for="dict in sysOrderStatus" :key="dict.dictValue" :label="dict.dictLabel" v-model="queryParams.orderStatus"
:value="dict.dictValue" /> placeholder="请选择状态"
</el-select> clearable
</el-form-item> 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-form-item label="创建时间">
<el-date-picker v-model="dateRange" size="medium" style="width: 360px" <el-date-picker
value-format="yyyy-MM-dd HH:mm:ss" type="datetimerange" range-separator="-" start-placeholder="开始日期" v-model="dateRange"
end-placeholder="结束日期" :unlink-panels="true" size="medium"
:default-time="['00:00:00', '23:59:59']"></el-date-picker> style="width: 360px"
</el-form-item> value-format="yyyy-MM-dd HH:mm:ss"
<el-form-item> type="datetimerange"
<el-button type="primary" size="medium" @click="handleQuery">搜索</el-button> range-separator="-"
<el-button size="medium" @click="resetQuery">重置</el-button> start-placeholder="开始日期"
</el-form-item> end-placeholder="结束日期"
</el-form> :unlink-panels="true"
</div> :default-time="['00:00:00', '23:59:59']"
<div class="bg bg-white"> ></el-date-picker>
<el-row :gutter="10" class="m-b-16"> </el-form-item>
<el-col :span="1.5"> <el-form-item>
<el-button type="primary" size="medium" <el-button type="primary" size="medium" @click="handleQuery"
@click="handleExport">导出</el-button> >搜索</el-button
</el-col> >
<right-toolbar :showSearch.sync="showSearch" @queryTable="getList"></right-toolbar> <el-button size="medium" @click="resetQuery">重置</el-button>
</el-row> </el-form-item>
</el-form>
<el-table :data="otcCoinList" v-loading="loading"> </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="outTradeNo" />
<el-table-column label="商户名称" align="center" prop="merchantName" /> <el-table-column label="商户名称" align="center" prop="merchantName" />
<el-table-column label="批次号" align="center" prop="batchNo" min-width="120" /> <el-table-column
<el-table-column :label="'代付金额'" align="center" prop="tranAmt"> label="批次号"
<template slot-scope="scope"> align="center"
{{ scope.row.tranAmt }} prop="batchNo"
</template> min-width="120"
</el-table-column> />
<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"> <el-table-column
<template slot-scope="scope"> :label="'商户手续费'"
{{ scope.row.merchantFee }} align="center"
</template> prop="merchantFee"
</el-table-column> >
<template slot-scope="scope">
{{ scope.row.merchantFee }}
</template>
</el-table-column>
<el-table-column :label="'商户单笔手续费'" align="center" prop="merchantSingleFee"> <el-table-column
<template slot-scope="scope"> :label="'商户单笔手续费'"
{{ scope.row.merchantSingleFee }} align="center"
</template> prop="merchantSingleFee"
</el-table-column> >
<el-table-column :label="'商户费率(%)'" align="center" prop="merchantSingleFee"> <template slot-scope="scope">
<template slot-scope="scope"> {{ scope.row.merchantSingleFee }}
{{ parseFloat(NumberMul(scope.row.merchantRate, 100)).toFixed(2) }} </template>
</template> </el-table-column>
</el-table-column> <el-table-column
<el-table-column label="银行名称" align="center" prop="bankName" /> :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="cardNumber" />
<el-table-column label="开户名" align="center" prop="accountName" /> <el-table-column label="开户名" align="center" prop="accountName" />
<el-table-column label="开户行" align="center" prop="branchName" /> <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="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="notifyStatus" :formatter="notifyStatusFormat" /> -->
<el-table-column label="更新时间" align="center" prop="updateTime" min-width="180" />
</el-table> <el-table-column label="备注" align="center" prop="orderMsg" />
<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="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> </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> </template>
<script> <script>
import { paymentDaiFuRecord, common_api } from "@/api/form"; import { paymentDaiFuRecord, common_api } from "@/api/form";
export default { export default {
name: "otcStoreDaiFuOrder", name: "otcStoreDaiFuOrder",
components: { components: {},
}, computed: {
computed:{ classObje(status) {
classObje(status){ return (status) => {
return(status)=>{ if (status == "processing") {
if(status=='processing'){ return { color: "rgba(255, 124, 30, 1)" };
return {'color':'rgba(255, 124, 30, 1)'}
}
if(status=='fail_appeal'){
return {'color':'rgba(237, 80, 89, 1)'}
}
}
} }
if (status == "fail_appeal") {
return { color: "rgba(237, 80, 89, 1)" };
}
};
}, },
data() { },
return { data() {
dateRange: [], return {
sysOrderStatus: [], orderStatusType: [
notifyStatusOptions: [], {
// label: "成功",
loading: true, value: 2,
// },
ids: [], {
// label: "失败",
single: true, value: 3,
// },
multiple: true, ],
// dateRange: [],
showSearch: true, sysOrderStatus: [],
// notifyStatusOptions: [],
total: 0, //
// OTC loading: true,
otcCoinList: [], //
// ids: [],
title: "", //
// single: true,
open: false, //
openTest: false, multiple: true,
// //
queryParams: { showSearch: true,
pageNum: 1, //
pageSize: 10, total: 0,
noOrder: null, // OTC
merchantOrderNo: null, otcCoinList: [],
cardNumber: null, //
merchantName: null, title: "",
accountName: null, //
tranAmt: null, open: false,
orderStatus: null, openTest: false,
batchNo: null //
}, queryParams: {
// pageNum: 1,
form: {}, pageSize: 10,
// noOrder: null,
rules: { merchantOrderNo: null,
}, // cardNumber: null,
}; merchantName: null,
}, // accountName: null,
created() { tranAmt: null,
this.getList(); 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.getDicts("d_order_status").then((response) => {
this.sysOrderStatus = response.data; this.sysOrderStatus = response.data;
this.sysOrderStatus.unshift({ this.sysOrderStatus.unshift({
dictLabel:'全部', dictLabel: "全部",
dictValue:null, dictValue: null,
}); });
}); });
this.getDicts("notify_status").then(response => { this.getDicts("notify_status").then((response) => {
this.notifyStatusOptions = response.data; this.notifyStatusOptions = response.data;
this.notifyStatusOptions.unshift({ this.notifyStatusOptions.unshift({
dictLabel:'全部', dictLabel: "全部",
dictValue:null, 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) { sysOrderStatusFormat(row, column) {
return this.selectDictLabel(this.sysOrderStatus, row.orderStatus); return this.selectDictLabel(this.sysOrderStatus, row.orderStatus);
}, },
notifyStatusFormat(row, column) { notifyStatusFormat(row, column) {
return this.selectDictLabel(this.notifyStatusOptions, row.notifyStatus); return this.selectDictLabel(this.notifyStatusOptions, row.notifyStatus);
}, },
// //
cancel() { cancel() {
this.open = false; this.open = false;
this.openTest = false; this.openTest = false;
this.reset(); this.reset();
}, },
// //
reset() { reset() {
this.form = { this.form = {};
}; this.resetForm("form");
this.resetForm("form"); },
}, /** 搜索按钮操作 */
/** 搜索按钮操作 */ handleQuery() {
handleQuery() { this.queryParams.pageNum = 1;
this.queryParams.pageNum = 1; this.getList();
this.getList(); },
}, /** 重置按钮操作 */
/** 重置按钮操作 */ resetQuery() {
resetQuery() { this.dateRange = [];
this.dateRange = [] this.resetForm("queryForm");
this.resetForm("queryForm"); this.handleQuery();
this.handleQuery(); },
},
/** 导出按钮操作 */ /** 导出按钮操作 */
handleExport() { handleExport() {
const queryParams = this.queryParams; const queryParams = this.queryParams;
this.$confirm('是否确认导出所有数据项?', "警告", { this.$confirm("是否确认导出所有数据项?", "警告", {
confirmButtonText: "确定", confirmButtonText: "确定",
cancelButtonText: "取消", cancelButtonText: "取消",
type: "warning" type: "warning",
}).then(function () { })
return paymentDaiFuRecord.exportList(queryParams); .then(function () {
}).then(response => { return paymentDaiFuRecord.exportList(queryParams);
this.download(response.msg); })
}) .then((response) => {
} this.download(response.msg);
} });
},
},
}; };
</script> </script>
Loading…
Cancel
Save