Browse Source

代付订单增加手动处理

master
j1ack 2 years ago
parent
commit
857bfe64ae
  1. 10
      src/api/form.js
  2. 348
      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({

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

@ -1,52 +1,103 @@
<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"
ref="queryForm"
:inline="true"
v-show="showSearch"
label-width="116px"
class="form"
style="position: relative"
>
<el-form-item label="平台订单号" prop="noOrder"> <el-form-item label="平台订单号" prop="noOrder">
<el-input size="medium" v-model="queryParams.noOrder" placeholder="请输入平台订单号" <el-input
@keyup.enter.native="handleQuery" style="width: 180px; border-color: #e6f1ff" /> size="medium"
v-model="queryParams.noOrder"
placeholder="请输入平台订单号"
@keyup.enter.native="handleQuery"
style="width: 180px; border-color: #e6f1ff"
/>
</el-form-item> </el-form-item>
<el-form-item label="商户订单号" prop="merchantOrderNo"> <el-form-item label="商户订单号" prop="merchantOrderNo">
<el-input size="medium" v-model="queryParams.merchantOrderNo" placeholder="请输入商户订单号" <el-input
@keyup.enter.native="handleQuery" style="width: 180px; border-color: #e6f1ff" /> size="medium"
v-model="queryParams.merchantOrderNo"
placeholder="请输入商户订单号"
@keyup.enter.native="handleQuery"
style="width: 180px; border-color: #e6f1ff"
/>
</el-form-item> </el-form-item>
<el-form-item label="收款卡号" prop="cardNumber"> <!-- <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"
v-model="queryParams.merchantName"
placeholder="请输入商户名称"
@keyup.enter.native="handleQuery"
style="width: 180px; border-color: #e6f1ff"
/>
</el-form-item> </el-form-item>
<el-form-item label="开户名" prop="accountName"> <!-- <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"
v-model="queryParams.tranAmt"
placeholder="请输入代付金额"
@keyup.enter.native="handleQuery"
style="width: 180px; border-color: #e6f1ff"
/>
</el-form-item> </el-form-item>
<el-form-item label="批次号" prop="batchNo"> <el-form-item label="批次号" prop="batchNo">
<el-input size="medium" v-model="queryParams.batchNo" placeholder="请输入批次号" <el-input
@keyup.enter.native="handleQuery" style="width: 180px; border-color: #e6f1ff" /> 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="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="请选择状态"
clearable
size="medium"
>
<el-option
v-for="dict in sysOrderStatus"
:key="dict.dictValue"
:label="dict.dictLabel"
:value="dict.dictValue"
/>
</el-select> </el-select>
</el-form-item> </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"
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-form-item> <el-form-item>
<el-button type="primary" size="medium" @click="handleQuery">搜索</el-button> <el-button type="primary" size="medium" @click="handleQuery"
>搜索</el-button
>
<el-button size="medium" @click="resetQuery">重置</el-button> <el-button size="medium" @click="resetQuery">重置</el-button>
</el-form-item> </el-form-item>
</el-form> </el-form>
@ -54,50 +105,80 @@
<div class="bg bg-white"> <div class="bg bg-white">
<el-row :gutter="10" class="m-b-16"> <el-row :gutter="10" class="m-b-16">
<el-col :span="1.5"> <el-col :span="1.5">
<el-button type="primary" size="medium" <el-button type="primary" size="medium" @click="handleExport"
@click="handleExport">导出</el-button> >导出</el-button
>
</el-col> </el-col>
<right-toolbar :showSearch.sync="showSearch" @queryTable="getList"></right-toolbar> <right-toolbar
:showSearch.sync="showSearch"
@queryTable="getList"
></right-toolbar>
</el-row> </el-row>
<el-table :data="otcCoinList" v-loading="loading"> <el-table :data="otcCoinList" v-loading="loading">
<el-table-column label="平台订单号" align="center" prop="noOrder" /> <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
label="批次号"
align="center"
prop="batchNo"
min-width="120"
/>
<el-table-column :label="'代付金额'" align="center" prop="tranAmt"> <el-table-column :label="'代付金额'" align="center" prop="tranAmt">
<template slot-scope="scope"> <template slot-scope="scope">
{{ scope.row.tranAmt }} {{ scope.row.tranAmt }}
</template> </template>
</el-table-column> </el-table-column>
<el-table-column :label="'商户手续费'" align="center" prop="merchantFee"> <el-table-column
:label="'商户手续费'"
align="center"
prop="merchantFee"
>
<template slot-scope="scope"> <template slot-scope="scope">
{{ scope.row.merchantFee }} {{ scope.row.merchantFee }}
</template> </template>
</el-table-column> </el-table-column>
<el-table-column :label="'商户单笔手续费'" align="center" prop="merchantSingleFee"> <el-table-column
:label="'商户单笔手续费'"
align="center"
prop="merchantSingleFee"
>
<template slot-scope="scope"> <template slot-scope="scope">
{{ scope.row.merchantSingleFee }} {{ scope.row.merchantSingleFee }}
</template> </template>
</el-table-column> </el-table-column>
<el-table-column :label="'商户费率(%)'" align="center" prop="merchantSingleFee"> <el-table-column
:label="'商户费率(%)'"
align="center"
prop="merchantSingleFee"
>
<template slot-scope="scope"> <template slot-scope="scope">
{{ parseFloat(NumberMul(scope.row.merchantRate, 100)).toFixed(2) }} {{ parseFloat(NumberMul(scope.row.merchantRate, 100)).toFixed(2) }}
</template> </template>
</el-table-column> </el-table-column>
<el-table-column label="银行名称" align="center" prop="bankName" /> <!-- <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="address" />
<!-- <el-table-column label="订单状态" align="center" prop="orderStatus" :formatter="sysOrderStatusFormat" /> --> <!-- <el-table-column label="订单状态" align="center" prop="orderStatus" :formatter="sysOrderStatusFormat" /> -->
<el-table-column label="订单状态" align="center" prop="orderStatus" width="180"> <el-table-column
label="订单状态"
align="center"
prop="orderStatus"
width="180"
>
<template slot-scope="scope"> <template slot-scope="scope">
<span :style="classObje(scope.row.orderStatus)">{{ sysOrderStatusFormat(scope.row) }}</span> <span :style="classObje(scope.row.orderStatus)">{{
sysOrderStatusFormat(scope.row)
}}</span>
</template> </template>
</el-table-column> </el-table-column>
@ -105,18 +186,91 @@
<el-table-column label="备注" align="center" prop="orderMsg" /> <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" prop="createTime" min-width="180" /> <el-table-column
<el-table-column label="更新时间" align="center" prop="updateTime" min-width="180" /> 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> </el-table>
<pagination v-show="total > 0" :total="total" :page.sync="queryParams.pageNum" <pagination
:limit.sync="queryParams.pageSize" @pagination="getList" /> 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> </div>
</template> </template>
@ -124,22 +278,31 @@
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() { data() {
return { return {
orderStatusType: [
{
label: "成功",
value: 2,
},
{
label: "失败",
value: 3,
},
],
dateRange: [], dateRange: [],
sysOrderStatus: [], sysOrderStatus: [],
notifyStatusOptions: [], notifyStatusOptions: [],
@ -168,42 +331,78 @@ export default {
pageSize: 10, pageSize: 10,
noOrder: null, noOrder: null,
merchantOrderNo: null, merchantOrderNo: null,
cardNumber: null, // cardNumber: null,
merchantName: null, merchantName: null,
accountName: null, // accountName: null,
tranAmt: null, tranAmt: null,
orderStatus: null, orderStatus: null,
batchNo: null batchNo: null,
}, },
// //
form: {}, form: {},
// //
rules: { rules: {
type: [{ required: true, message: "请选择订单类型", trigger: "blur" }],
merchantId: [
{ required: true, message: "请选择商户", trigger: "blur" },
],
amount: [{ required: true, message: "请输入金额", trigger: "blur" }],
}, },
}; };
}, },
created() { created() {
this.getList(); 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: { 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() { getList() {
this.loading = true; this.loading = true;
paymentDaiFuRecord.listInfo(this.addSESDateRange(this.queryParams, this.dateRange)).then(response => { paymentDaiFuRecord
.listInfo(this.addSESDateRange(this.queryParams, this.dateRange))
.then((response) => {
this.otcCoinList = response.rows; this.otcCoinList = response.rows;
this.total = Number(response.total); this.total = Number(response.total);
this.loading = false; this.loading = false;
@ -225,8 +424,7 @@ export default {
}, },
// //
reset() { reset() {
this.form = { this.form = {};
};
this.resetForm("form"); this.resetForm("form");
}, },
/** 搜索按钮操作 */ /** 搜索按钮操作 */
@ -236,7 +434,7 @@ export default {
}, },
/** 重置按钮操作 */ /** 重置按钮操作 */
resetQuery() { resetQuery() {
this.dateRange = [] this.dateRange = [];
this.resetForm("queryForm"); this.resetForm("queryForm");
this.handleQuery(); this.handleQuery();
}, },
@ -244,17 +442,19 @@ export default {
/** 导出按钮操作 */ /** 导出按钮操作 */
handleExport() { handleExport() {
const queryParams = this.queryParams; const queryParams = this.queryParams;
this.$confirm('是否确认导出所有数据项?', "警告", { this.$confirm("是否确认导出所有数据项?", "警告", {
confirmButtonText: "确定", confirmButtonText: "确定",
cancelButtonText: "取消", cancelButtonText: "取消",
type: "warning" type: "warning",
}).then(function () { })
.then(function () {
return paymentDaiFuRecord.exportList(queryParams); return paymentDaiFuRecord.exportList(queryParams);
}).then(response => {
this.download(response.msg);
}) })
} .then((response) => {
} this.download(response.msg);
});
},
},
}; };
</script> </script>
Loading…
Cancel
Save