72 changed files with 3383 additions and 766 deletions
@ -0,0 +1,60 @@ |
|||||
|
import request from '@/utils/request' |
||||
|
|
||||
|
// 查询钱包列表
|
||||
|
export function listCoinAddress(query) { |
||||
|
return request({ |
||||
|
url: '/coin/coinAddress/list', |
||||
|
method: 'get', |
||||
|
params: query |
||||
|
}) |
||||
|
} |
||||
|
// 清除钱包详细
|
||||
|
export function clear(query) { |
||||
|
return request({ |
||||
|
url: '/coin/coinAddress/clearCoinAddressInfo', |
||||
|
method: 'get', |
||||
|
params: query |
||||
|
}) |
||||
|
} |
||||
|
// 查询钱包详细
|
||||
|
export function getCoinAddress(id) { |
||||
|
return request({ |
||||
|
url: '/coin/coinAddress/' + id, |
||||
|
method: 'get' |
||||
|
}) |
||||
|
} |
||||
|
|
||||
|
// 新增钱包
|
||||
|
export function addCoinAddress(data) { |
||||
|
return request({ |
||||
|
url: '/coin/coinAddress', |
||||
|
method: 'post', |
||||
|
data: data |
||||
|
}) |
||||
|
} |
||||
|
|
||||
|
// 修改钱包
|
||||
|
export function updateCoinAddress(data) { |
||||
|
return request({ |
||||
|
url: '/coin/coinAddress', |
||||
|
method: 'put', |
||||
|
data: data |
||||
|
}) |
||||
|
} |
||||
|
|
||||
|
// 删除钱包
|
||||
|
export function delCoinAddress(id) { |
||||
|
return request({ |
||||
|
url: '/coin/coinAddress/' + id, |
||||
|
method: 'delete' |
||||
|
}) |
||||
|
} |
||||
|
|
||||
|
// 导出钱包
|
||||
|
export function exportCoinAddress(query) { |
||||
|
return request({ |
||||
|
url: '/coin/coinAddress/export', |
||||
|
method: 'get', |
||||
|
params: query |
||||
|
}) |
||||
|
} |
@ -0,0 +1,53 @@ |
|||||
|
import request from '@/utils/request' |
||||
|
|
||||
|
// 查询波场USDT同步列表
|
||||
|
export function listTronUsdtSync(query) { |
||||
|
return request({ |
||||
|
url: '/tron/tronUsdtSync/list', |
||||
|
method: 'get', |
||||
|
params: query |
||||
|
}) |
||||
|
} |
||||
|
|
||||
|
// 查询波场USDT同步详细
|
||||
|
export function getTronUsdtSync(txid) { |
||||
|
return request({ |
||||
|
url: '/tron/tronUsdtSync/' + txid, |
||||
|
method: 'get' |
||||
|
}) |
||||
|
} |
||||
|
|
||||
|
// 新增波场USDT同步
|
||||
|
export function addTronUsdtSync(data) { |
||||
|
return request({ |
||||
|
url: '/tron/tronUsdtSync', |
||||
|
method: 'post', |
||||
|
data: data |
||||
|
}) |
||||
|
} |
||||
|
|
||||
|
// 修改波场USDT同步
|
||||
|
export function updateTronUsdtSync(data) { |
||||
|
return request({ |
||||
|
url: '/tron/tronUsdtSync', |
||||
|
method: 'put', |
||||
|
data: data |
||||
|
}) |
||||
|
} |
||||
|
|
||||
|
// 删除波场USDT同步
|
||||
|
export function delTronUsdtSync(txid) { |
||||
|
return request({ |
||||
|
url: '/tron/tronUsdtSync/' + txid, |
||||
|
method: 'delete' |
||||
|
}) |
||||
|
} |
||||
|
|
||||
|
// 导出波场USDT同步
|
||||
|
export function exportTronUsdtSync(query) { |
||||
|
return request({ |
||||
|
url: '/tron/tronUsdtSync/export', |
||||
|
method: 'get', |
||||
|
params: query |
||||
|
}) |
||||
|
} |
@ -0,0 +1,403 @@ |
|||||
|
<template> |
||||
|
<div class="app-container"> |
||||
|
<div class="flexBet searchTop"> |
||||
|
<div class="title flex m20"> |
||||
|
<div class="bar"></div> |
||||
|
<div class="text">{{ $route.meta.title }}</div> |
||||
|
</div> |
||||
|
<el-row :gutter="10" class="mb8"> |
||||
|
<el-col :span="1.5"> |
||||
|
<el-button type="primary" plain icon="el-icon-plus" size="mini" @click="handleAdd" |
||||
|
v-hasPermi="['coin:coinAddress:add']">新增</el-button> |
||||
|
</el-col> |
||||
|
<right-toolbar :showSearch.sync="showSearch" @queryTable="getList"></right-toolbar> |
||||
|
</el-row> |
||||
|
</div> |
||||
|
<div class="bg"> |
||||
|
<el-form :model="queryParams" ref="queryForm" :inline="true" v-show="showSearch" class="flex form" |
||||
|
label-width="88px" style="padding:0 20px"> |
||||
|
<el-form-item label="钱包名称" prop="name"> |
||||
|
<el-input v-model="queryParams.name" placeholder="请输入钱包名称" clearable size="medium" |
||||
|
@keyup.enter.native="handleQuery" /> |
||||
|
</el-form-item> |
||||
|
<el-form-item label="钱包地址" prop="address"> |
||||
|
<el-input v-model="queryParams.address" placeholder="请输入钱包地址" clearable size="medium" |
||||
|
@keyup.enter.native="handleQuery" /> |
||||
|
</el-form-item> |
||||
|
<el-form-item label="支付类型" prop="payType"> |
||||
|
<el-select v-model="queryParams.payType" placeholder="请选择支付类型" clearable size="medium"> |
||||
|
<el-option v-for="(item, i) in sortLevType" :key="i" :label="item.typeName" :value="item.payType"></el-option> |
||||
|
</el-select> |
||||
|
</el-form-item> |
||||
|
|
||||
|
<el-form-item label="渠道类型" prop="channelType"> |
||||
|
<el-select v-model="queryParams.channelType" placeholder="请选择渠道类型" clearable size="medium"> |
||||
|
<el-option v-for="(item, i) in payChannelCon" :key="i" :label="item.channelName" |
||||
|
:value="item.payChannel"></el-option> |
||||
|
</el-select> |
||||
|
</el-form-item> |
||||
|
|
||||
|
|
||||
|
<el-form-item> |
||||
|
<el-button type="primary" icon="el-icon-search" size="medium" @click="handleQuery">搜索</el-button> |
||||
|
<el-button icon="el-icon-refresh" size="medium" @click="resetQuery">重置</el-button> |
||||
|
</el-form-item> |
||||
|
</el-form> |
||||
|
|
||||
|
<el-table v-loading="loading" :data="coinAddressList"> |
||||
|
<el-table-column label="钱包名称" align="center" prop="name" min-width="120"/> |
||||
|
<el-table-column label="钱包地址" align="center" prop="address" min-width="150"/> |
||||
|
<el-table-column label="支付类型" align="center" prop="payType" min-width="120"/> |
||||
|
<el-table-column label="渠道类型" align="center" prop="channelType" /> |
||||
|
<el-table-column label="备注" align="center" prop="remark" /> |
||||
|
<el-table-column label="日最大收款限额" align="center" prop="dayReceiveMax" /> |
||||
|
<el-table-column label="状态" align="center" prop="status" width="140px"> |
||||
|
<template slot-scope="scope"> |
||||
|
<el-switch v-model="scope.row.status" active-text="开" inactive-text="关" :active-value="'open'" |
||||
|
:inactive-value="'close'" @change="switchStatusChange(scope.row)"> |
||||
|
</el-switch> |
||||
|
</template> |
||||
|
</el-table-column> |
||||
|
<el-table-column label="最后收款时间" align="center" prop="lastReceiveTime" width="180" /> |
||||
|
<el-table-column label="今日已收金额" align="center" prop="todayReceived" /> |
||||
|
<el-table-column label="日最大收款笔数" align="center" prop="dayMaxNumber" /> |
||||
|
<el-table-column label="今日已收笔数" align="center" prop="todayNumber" /> |
||||
|
<el-table-column label="单笔下限" align="center" prop="singleMin" /> |
||||
|
<el-table-column label="单笔上限" align="center" prop="singleMax" /> |
||||
|
<el-table-column label="单笔最大" align="center" prop="singleReceiveMax" /> |
||||
|
<el-table-column label="已支付统计" align="center" prop="paidCnt" /> |
||||
|
<el-table-column label="操作" align="center" class-name="small-padding fixed-width"> |
||||
|
<template slot-scope="scope"> |
||||
|
<el-button size="mini" type="text" @click="handleKill(scope.row)">清除</el-button> |
||||
|
<el-button size="mini" type="text" @click="handleUpdate(scope.row)" |
||||
|
v-hasPermi="['coin:coinAddress:edit']">设置</el-button> |
||||
|
<el-button size="mini" type="text" @click="handleDelete(scope.row)" |
||||
|
v-hasPermi="['coin:coinAddress:remove']">删除</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 :title="title" :visible.sync="open" width="500px" append-to-body> |
||||
|
<el-form ref="form" :model="form" :rules="rules" label-width="80px"> |
||||
|
<el-form-item label="钱包名称" prop="name"> |
||||
|
<el-input v-model="form.name" placeholder="请输入钱包名称" /> |
||||
|
</el-form-item> |
||||
|
<el-form-item label="钱包地址" prop="address"> |
||||
|
<el-input v-model="form.address" placeholder="请输入钱包地址" /> |
||||
|
</el-form-item> |
||||
|
<el-form-item label="支付类型" prop="payType"> |
||||
|
<el-select v-model="form.payType" placeholder="请选择支付类型"> |
||||
|
<el-option v-for="(item, i) in paymentChannelsList" :key="i" :label="item.name" |
||||
|
:value="item.payType+'-'+item.channelType"></el-option> |
||||
|
</el-select> |
||||
|
</el-form-item> |
||||
|
<!-- <el-form-item label="渠道类型" prop="channelType"> |
||||
|
<el-select v-model="form.channelType" placeholder="请选择渠道类型"> |
||||
|
<el-option v-for="(item, i) in paymentChannelsList" :key="i" :label="item.channelName" |
||||
|
:value="item.channelType"></el-option> |
||||
|
</el-select> |
||||
|
</el-form-item> --> |
||||
|
<el-form-item label="备注" prop="remark"> |
||||
|
<el-input v-model="form.remark" placeholder="请输入备注" /> |
||||
|
</el-form-item> |
||||
|
</el-form> |
||||
|
<div slot="footer" class="dialog-footer"> |
||||
|
<el-button type="primary" @click="submitForm('form')">确 定</el-button> |
||||
|
<el-button @click="cancel">取 消</el-button> |
||||
|
</div> |
||||
|
</el-dialog> |
||||
|
|
||||
|
<!-- 添加 --> |
||||
|
<el-dialog :title="title" :visible.sync="openSetting" width="500px" append-to-body> |
||||
|
<el-form ref="formSetting" :model="form" :rules="rules" label-width="120px"> |
||||
|
<el-form-item label="收款金额区间" prop="username"> |
||||
|
<el-input v-model="form.singleMin" placeholder="" style="width:150px" @input="change" /> - |
||||
|
<el-input v-model="form.singleMax" placeholder="" style="width:150px" @input="change" /> |
||||
|
</el-form-item> |
||||
|
<el-form-item label="日最大收款限额" prop="dayReceiveMax"> |
||||
|
<el-input v-model="form.dayReceiveMax" placeholder="请输入日最大收款限额" @input="change" /> |
||||
|
</el-form-item> |
||||
|
<el-form-item label="日最大收款笔数" prop="dayMaxNumber"> |
||||
|
<el-input v-model="form.dayMaxNumber" placeholder="请输入日最大收款笔数" @input="change" /> |
||||
|
</el-form-item> |
||||
|
<el-form-item label="单笔最大" prop="singleReceiveMax"> |
||||
|
<el-input v-model="form.singleReceiveMax" placeholder="请输入单笔最大" @input="change" /> |
||||
|
</el-form-item> |
||||
|
|
||||
|
|
||||
|
</el-form> |
||||
|
<div slot="footer" class="dialog-footer"> |
||||
|
<el-button type="primary" @click="submitForm('formSetting')">保 存</el-button> |
||||
|
<el-button @click="cancel">取 消</el-button> |
||||
|
</div> |
||||
|
</el-dialog> |
||||
|
|
||||
|
</div> |
||||
|
</template> |
||||
|
|
||||
|
<script> |
||||
|
import { listCoinAddress, getCoinAddress, delCoinAddress, addCoinAddress, updateCoinAddress, exportCoinAddress, clear } from "@/api/coin/coinAddress"; |
||||
|
import { common_api } from "@/api/form"; |
||||
|
|
||||
|
export default { |
||||
|
name: "CoinAddress", |
||||
|
components: { |
||||
|
}, |
||||
|
data() { |
||||
|
return { |
||||
|
paymentChannelsList: [], |
||||
|
sortLevType: [], |
||||
|
payChannelCon: [], |
||||
|
|
||||
|
// 遮罩层 |
||||
|
loading: true, |
||||
|
// 选中数组 |
||||
|
ids: [], |
||||
|
// 非单个禁用 |
||||
|
single: true, |
||||
|
// 非多个禁用 |
||||
|
multiple: true, |
||||
|
// 显示搜索条件 |
||||
|
showSearch: true, |
||||
|
// 总条数 |
||||
|
total: 0, |
||||
|
// 钱包表格数据 |
||||
|
coinAddressList: [], |
||||
|
// 弹出层标题 |
||||
|
title: "", |
||||
|
// 是否显示弹出层 |
||||
|
open: false, |
||||
|
openSetting: false, |
||||
|
// 查询参数 |
||||
|
queryParams: { |
||||
|
pageNum: 1, |
||||
|
pageSize: 10, |
||||
|
name: null, |
||||
|
address: null, |
||||
|
payType: null, |
||||
|
channelType: null, |
||||
|
dayReceiveMax: null, |
||||
|
status: null, |
||||
|
lastReceiveTime: null, |
||||
|
todayReceived: null, |
||||
|
dayMaxNumber: null, |
||||
|
todayNumber: null, |
||||
|
singleMin: null, |
||||
|
singleMax: null, |
||||
|
singleReceiveMax: null, |
||||
|
paidCnt: null |
||||
|
}, |
||||
|
// 表单参数 |
||||
|
form: {}, |
||||
|
// 表单校验 |
||||
|
rules: { |
||||
|
payType: [ |
||||
|
{ required: true, message: "支付类型不能为空", trigger: "blur" } |
||||
|
], |
||||
|
channelType: [ |
||||
|
{ required: true, message: "渠道类型不能为空", trigger: "blur" } |
||||
|
], |
||||
|
name: [ |
||||
|
{ required: true, message: "钱包名称不能为空", trigger: "blur" } |
||||
|
], |
||||
|
address: [ |
||||
|
{ required: true, message: "钱包地址不能为空", trigger: "blur" } |
||||
|
], |
||||
|
remark: [ |
||||
|
{ required: true, message: "备注不能为空", trigger: "blur" } |
||||
|
], |
||||
|
dayReceiveMax: [ |
||||
|
{ required: true, message: "日最大收款限额(0表示不限制)不能为空", trigger: "blur" } |
||||
|
], |
||||
|
status: [ |
||||
|
{ required: true, message: "状态 open已使用 close:未使用不能为空", trigger: "blur" } |
||||
|
], |
||||
|
createTime: [ |
||||
|
{ required: true, message: "添加时间不能为空", trigger: "blur" } |
||||
|
], |
||||
|
todayReceived: [ |
||||
|
{ required: true, message: "今日已收金额不能为空", trigger: "blur" } |
||||
|
], |
||||
|
dayMaxNumber: [ |
||||
|
{ required: true, message: "日最大收款笔数不能为空", trigger: "blur" } |
||||
|
], |
||||
|
todayNumber: [ |
||||
|
{ required: true, message: "今日已收笔数不能为空", trigger: "blur" } |
||||
|
], |
||||
|
singleMin: [ |
||||
|
{ required: true, message: "单笔下限不能为空", trigger: "blur" } |
||||
|
], |
||||
|
singleMax: [ |
||||
|
{ required: true, message: "单笔上限不能为空", trigger: "blur" } |
||||
|
], |
||||
|
singleReceiveMax: [ |
||||
|
{ required: true, message: "单笔最大不能为空", trigger: "blur" } |
||||
|
], |
||||
|
paidCnt: [ |
||||
|
{ required: true, message: "已支付统计不能为空", trigger: "blur" } |
||||
|
] |
||||
|
} |
||||
|
}; |
||||
|
}, |
||||
|
created() { |
||||
|
this.getList(); |
||||
|
this.init(); |
||||
|
}, |
||||
|
methods: { |
||||
|
change() { |
||||
|
this.$forceUpdate() |
||||
|
}, |
||||
|
// 状态有效无效 |
||||
|
switchStatusChange(rows) { |
||||
|
this.reset() |
||||
|
this.form = rows; |
||||
|
this.form.status = rows.status |
||||
|
updateCoinAddress(this.form).then((res) => { |
||||
|
if (res.code === 200) { |
||||
|
this.$message.success("编辑成功"); |
||||
|
} |
||||
|
}); |
||||
|
|
||||
|
}, |
||||
|
init() { |
||||
|
common_api.payTypeAll().then((response) => { |
||||
|
this.sortLevType = response.data |
||||
|
}); |
||||
|
common_api.payChannelAll().then((response) => { |
||||
|
this.payChannelCon = response.data |
||||
|
}); |
||||
|
common_api.getPaymentChannelsList().then((response) => { |
||||
|
this.paymentChannelsList = response.data |
||||
|
}); |
||||
|
|
||||
|
}, |
||||
|
/** 查询钱包列表 */ |
||||
|
getList() { |
||||
|
this.loading = true; |
||||
|
listCoinAddress(this.queryParams).then(response => { |
||||
|
this.coinAddressList = response.rows; |
||||
|
this.total = Number(response.total); |
||||
|
this.loading = false; |
||||
|
}); |
||||
|
}, |
||||
|
// 取消按钮 |
||||
|
cancel() { |
||||
|
this.open = false; |
||||
|
this.openSetting = false |
||||
|
this.reset(); |
||||
|
}, |
||||
|
// 表单重置 |
||||
|
reset() { |
||||
|
this.form = { |
||||
|
|
||||
|
}; |
||||
|
this.resetForm("form"); |
||||
|
}, |
||||
|
/** 搜索按钮操作 */ |
||||
|
handleQuery() { |
||||
|
this.queryParams.pageNum = 1; |
||||
|
this.getList(); |
||||
|
}, |
||||
|
/** 重置按钮操作 */ |
||||
|
resetQuery() { |
||||
|
this.resetForm("queryForm"); |
||||
|
this.handleQuery(); |
||||
|
}, |
||||
|
// 多选框选中数据 |
||||
|
handleSelectionChange(selection) { |
||||
|
this.ids = selection.map(item => item.id) |
||||
|
this.single = selection.length !== 1 |
||||
|
this.multiple = !selection.length |
||||
|
}, |
||||
|
/** 新增按钮操作 */ |
||||
|
handleAdd() { |
||||
|
this.reset(); |
||||
|
this.open = true; |
||||
|
this.title = "添加钱包"; |
||||
|
|
||||
|
}, |
||||
|
/** 修改按钮操作 */ |
||||
|
handleUpdate(row) { |
||||
|
this.reset(); |
||||
|
const id = row.id || this.ids |
||||
|
getCoinAddress(id).then(response => { |
||||
|
this.form = response.data; |
||||
|
this.openSetting = true; |
||||
|
this.title = "修改钱包"; |
||||
|
}); |
||||
|
}, |
||||
|
/** 提交按钮 */ |
||||
|
submitForm(type) { |
||||
|
this.$refs[type].validate(valid => { |
||||
|
if (valid) { |
||||
|
this.form.channelType=this.form.payType.split('-')[1]; |
||||
|
this.form.payType=this.form.payType.split('-')[0]; |
||||
|
if (this.form.id != null) { |
||||
|
updateCoinAddress(this.form).then(response => { |
||||
|
this.msgSuccess("设置成功"); |
||||
|
this.openSetting = false; |
||||
|
this.getList(); |
||||
|
}); |
||||
|
} else { |
||||
|
addCoinAddress(this.form).then(response => { |
||||
|
this.msgSuccess("新增成功"); |
||||
|
this.open = false; |
||||
|
this.getList(); |
||||
|
}); |
||||
|
} |
||||
|
} |
||||
|
}); |
||||
|
}, |
||||
|
/** 清除按钮操作 */ |
||||
|
handleKill(row) { |
||||
|
const ids = row.id || this.ids; |
||||
|
this.$confirm('是否确认清除钱包编号为"' + ids + '"的数据项?', "警告", { |
||||
|
confirmButtonText: "确定", |
||||
|
cancelButtonText: "取消", |
||||
|
type: "warning" |
||||
|
}).then(function () { |
||||
|
return clear({ |
||||
|
address: row.address, |
||||
|
payType: row.payType |
||||
|
}); |
||||
|
}).then(() => { |
||||
|
this.getList(); |
||||
|
this.msgSuccess("清除成功"); |
||||
|
}) |
||||
|
}, |
||||
|
|
||||
|
|
||||
|
/** 删除按钮操作 */ |
||||
|
handleDelete(row) { |
||||
|
const ids = row.id || this.ids; |
||||
|
this.$confirm('是否确认删除钱包编号为"' + ids + '"的数据项?', "警告", { |
||||
|
confirmButtonText: "确定", |
||||
|
cancelButtonText: "取消", |
||||
|
type: "warning" |
||||
|
}).then(function () { |
||||
|
return delCoinAddress(ids); |
||||
|
}).then(() => { |
||||
|
this.getList(); |
||||
|
this.msgSuccess("删除成功"); |
||||
|
}) |
||||
|
}, |
||||
|
/** 导出按钮操作 */ |
||||
|
handleExport() { |
||||
|
const queryParams = this.queryParams; |
||||
|
this.$confirm('是否确认导出所有钱包数据项?', "警告", { |
||||
|
confirmButtonText: "确定", |
||||
|
cancelButtonText: "取消", |
||||
|
type: "warning" |
||||
|
}).then(function () { |
||||
|
return exportCoinAddress(queryParams); |
||||
|
}).then(response => { |
||||
|
this.download(response.msg); |
||||
|
}) |
||||
|
} |
||||
|
} |
||||
|
}; |
||||
|
</script> |
@ -1,273 +0,0 @@ |
|||||
<template> |
|
||||
<div class="app-container"> |
|
||||
<div class="flexBet searchTop"> |
|
||||
<div class="title flex m20"> |
|
||||
<div class="bar"></div> |
|
||||
<div class="text">挂号详情</div> |
|
||||
</div> |
|
||||
</div> |
|
||||
<div class="detailCon m20"> |
|
||||
<div class="top"> |
|
||||
患者信息 |
|
||||
</div> |
|
||||
<div class="bottom"> |
|
||||
<div class="bottomFlex"> |
|
||||
<div class="item"> |
|
||||
<div class="valCon flex m20"> |
|
||||
<div class="label"> |
|
||||
患者姓名 |
|
||||
</div> |
|
||||
<div class="val"> |
|
||||
赖尚荣 |
|
||||
</div> |
|
||||
</div> |
|
||||
<div class="valCon flex m20"> |
|
||||
<div class="label"> |
|
||||
证件类型 |
|
||||
</div> |
|
||||
<div class="val"> |
|
||||
赖尚荣 |
|
||||
</div> |
|
||||
</div> |
|
||||
<div class="valCon flex m20"> |
|
||||
<div class="label"> |
|
||||
微信昵称 |
|
||||
</div> |
|
||||
<div class="val"> |
|
||||
赖尚荣 |
|
||||
</div> |
|
||||
</div> |
|
||||
<div class="valCon flex m20"> |
|
||||
<div class="label"> |
|
||||
就诊人地址 |
|
||||
</div> |
|
||||
<div class="val"> |
|
||||
北京市朝阳区**路**号**小区 |
|
||||
</div> |
|
||||
</div> |
|
||||
</div> |
|
||||
<div class="item"> |
|
||||
<div class="valCon flex m20"> |
|
||||
<div class="label"> |
|
||||
就诊卡号 |
|
||||
</div> |
|
||||
<div class="val"> |
|
||||
赖尚荣 |
|
||||
</div> |
|
||||
</div> |
|
||||
<div class="valCon flex m20"> |
|
||||
<div class="label"> |
|
||||
证件号码 |
|
||||
</div> |
|
||||
<div class="val"> |
|
||||
371890199507070909 |
|
||||
</div> |
|
||||
</div> |
|
||||
<div class="valCon flex m20"> |
|
||||
<div class="label"> |
|
||||
手机号码 |
|
||||
</div> |
|
||||
<div class="val"> |
|
||||
15678900988 |
|
||||
</div> |
|
||||
</div> |
|
||||
</div> |
|
||||
<div class="item"> |
|
||||
<div class="valCon flex m20"> |
|
||||
<div class="label"> |
|
||||
患者头像 |
|
||||
</div> |
|
||||
<div class="val"> |
|
||||
<el-avatar :size="size" :src="circleUrl"></el-avatar> |
|
||||
</div> |
|
||||
</div> |
|
||||
<div class="valCon flex m20"> |
|
||||
<div class="label"> |
|
||||
关系 |
|
||||
</div> |
|
||||
<div class="val"> |
|
||||
本人 |
|
||||
</div> |
|
||||
</div> |
|
||||
</div> |
|
||||
</div> |
|
||||
</div> |
|
||||
</div> |
|
||||
<div class="detailCon m20"> |
|
||||
<div class="top"> |
|
||||
预约信息 |
|
||||
</div> |
|
||||
<div class="bottom"> |
|
||||
<div class="bottomFlex"> |
|
||||
<div class="item"> |
|
||||
<div class="valCon flex m20"> |
|
||||
<div class="label"> |
|
||||
患者姓名 |
|
||||
</div> |
|
||||
<div class="val"> |
|
||||
赖尚荣 |
|
||||
</div> |
|
||||
</div> |
|
||||
<div class="valCon flex m20"> |
|
||||
<div class="label"> |
|
||||
证件类型 |
|
||||
</div> |
|
||||
<div class="val"> |
|
||||
赖尚荣 |
|
||||
</div> |
|
||||
</div> |
|
||||
<div class="valCon flex m20"> |
|
||||
<div class="label"> |
|
||||
微信昵称 |
|
||||
</div> |
|
||||
<div class="val"> |
|
||||
赖尚荣 |
|
||||
</div> |
|
||||
</div> |
|
||||
<div class="valCon flex m20"> |
|
||||
<div class="label"> |
|
||||
就诊人地址 |
|
||||
</div> |
|
||||
<div class="val"> |
|
||||
北京市朝阳区**路**号**小区 |
|
||||
</div> |
|
||||
</div> |
|
||||
</div> |
|
||||
<div class="item"> |
|
||||
<div class="valCon flex m20"> |
|
||||
<div class="label"> |
|
||||
就诊卡号 |
|
||||
</div> |
|
||||
<div class="val"> |
|
||||
赖尚荣 |
|
||||
</div> |
|
||||
</div> |
|
||||
<div class="valCon flex m20"> |
|
||||
<div class="label"> |
|
||||
证件号码 |
|
||||
</div> |
|
||||
<div class="val"> |
|
||||
371890199507070909 |
|
||||
</div> |
|
||||
</div> |
|
||||
<div class="valCon flex m20"> |
|
||||
<div class="label"> |
|
||||
手机号码 |
|
||||
</div> |
|
||||
<div class="val"> |
|
||||
15678900988 |
|
||||
</div> |
|
||||
</div> |
|
||||
</div> |
|
||||
<div class="item"> |
|
||||
<div class="valCon flex m20"> |
|
||||
<div class="label"> |
|
||||
患者头像 |
|
||||
</div> |
|
||||
<div class="val"> |
|
||||
<el-avatar :size="size" :src="circleUrl"></el-avatar> |
|
||||
</div> |
|
||||
</div> |
|
||||
<div class="valCon flex m20"> |
|
||||
<div class="label"> |
|
||||
关系 |
|
||||
</div> |
|
||||
<div class="val"> |
|
||||
本人 |
|
||||
</div> |
|
||||
</div> |
|
||||
</div> |
|
||||
</div> |
|
||||
<div> |
|
||||
<div class="valCon flex m20"> |
|
||||
<div class="label"> |
|
||||
挂号备注 |
|
||||
</div> |
|
||||
<div class="val"> |
|
||||
<el-input placeholder="请输入内容" v-model="input" clearable size="medium"> |
|
||||
</el-input> |
|
||||
</div> |
|
||||
</div> |
|
||||
<div class="btnCon"> |
|
||||
<el-button type="primary" size="medium">保存</el-button> |
|
||||
<el-button plain size="medium">取消</el-button> |
|
||||
</div> |
|
||||
</div> |
|
||||
</div> |
|
||||
|
|
||||
</div> |
|
||||
</div> |
|
||||
</template> |
|
||||
|
|
||||
<script> |
|
||||
|
|
||||
export default { |
|
||||
name: "detail", |
|
||||
components: { |
|
||||
|
|
||||
}, |
|
||||
data() { |
|
||||
return { |
|
||||
circleUrl: "https://cube.elemecdn.com/3/7c/3ea6beec64369c2642b92c6726f1epng.png", |
|
||||
squareUrl: "https://cube.elemecdn.com/9/c2/f0ee8a3c7c9638a54940382568c9dpng.png", |
|
||||
sizeList: ["large", "medium", "small"], |
|
||||
size:'large', |
|
||||
input: '' |
|
||||
}; |
|
||||
}, |
|
||||
created() { |
|
||||
}, |
|
||||
methods: { |
|
||||
|
|
||||
|
|
||||
} |
|
||||
} |
|
||||
</script> |
|
||||
|
|
||||
<style lang="scss" scoped> |
|
||||
.btnCon{ |
|
||||
margin-left: 140px; |
|
||||
} |
|
||||
::v-deep .el-input--medium .el-input__inner { |
|
||||
height: 45px; |
|
||||
line-height: 45px; |
|
||||
width: 560px; |
|
||||
} |
|
||||
|
|
||||
.detailCon { |
|
||||
background: #fff; |
|
||||
-webkit-box-shadow: 4px 4px 40px rgb(0 0 0 / 5%); |
|
||||
box-shadow: 4px 4px 40px rgb(0 0 0 / 5%); |
|
||||
border-color: rgba(0, 0, 0, 0.05); |
|
||||
border-radius: 12px; |
|
||||
|
|
||||
.top { |
|
||||
background: #F2F2F2; |
|
||||
color: #006EFF; |
|
||||
font-size: 18px; |
|
||||
padding: 20px; |
|
||||
} |
|
||||
|
|
||||
.bottomFlex { |
|
||||
display: flex; |
|
||||
} |
|
||||
|
|
||||
.bottom { |
|
||||
|
|
||||
.item { |
|
||||
margin-right: 150px; |
|
||||
} |
|
||||
|
|
||||
padding: 40px; |
|
||||
|
|
||||
.label { |
|
||||
color: #999; |
|
||||
width: 80px; |
|
||||
margin-right: 60px; |
|
||||
} |
|
||||
|
|
||||
.val {} |
|
||||
|
|
||||
} |
|
||||
} |
|
||||
</style> |
|
@ -0,0 +1,643 @@ |
|||||
|
<template> |
||||
|
<div class="app-container"> |
||||
|
<div class="flexBet searchTop"> |
||||
|
<div class="title flex m20"> |
||||
|
<div class="bar"></div> |
||||
|
<div class="text">{{ $route.meta.title }}</div> |
||||
|
</div> |
||||
|
<el-row :gutter="10" class="mb8"> |
||||
|
|
||||
|
<right-toolbar :showSearch.sync="showSearch" @queryTable="getList"></right-toolbar> |
||||
|
</el-row> |
||||
|
</div> |
||||
|
<div class="bg"> |
||||
|
<el-form :model="queryParams" ref="queryForm" :inline="true" v-show="showSearch" label-width="96px" |
||||
|
class="flex form" style="padding:0 20px"> |
||||
|
<el-form-item label="批次号" prop="batchNo"> |
||||
|
<el-input size="medium" v-model="queryParams.batchNo" placeholder="请输入批次号" |
||||
|
@keyup.enter.native="handleQuery" style="width: 215px;border-color: #E6F1FF;" /> |
||||
|
</el-form-item> |
||||
|
<el-form-item label="商户订单号" prop="outTradeNo"> |
||||
|
<el-input size="medium" v-model="queryParams.outTradeNo" placeholder="请输入商户订单号" |
||||
|
@keyup.enter.native="handleQuery" style="width: 215px;border-color: #E6F1FF;" /> |
||||
|
</el-form-item> |
||||
|
<el-form-item label="平台订单号" prop="noOrder"> |
||||
|
<el-input size="medium" v-model="queryParams.noOrder" placeholder="请输入平台订单号" |
||||
|
@keyup.enter.native="handleQuery" style="width: 215px;border-color: #E6F1FF;" /> |
||||
|
</el-form-item> |
||||
|
<el-form-item label="商户名称" prop="storeName"> |
||||
|
<el-input size="medium" v-model="queryParams.storeName" placeholder="请输入商户名称" |
||||
|
@keyup.enter.native="handleQuery" style="width: 215px;border-color: #E6F1FF;" /> |
||||
|
</el-form-item> |
||||
|
<el-form-item label="开户名" prop="acctName"> |
||||
|
<el-input size="medium" v-model="queryParams.acctName" placeholder="请输入开户名" |
||||
|
@keyup.enter.native="handleQuery" style="width: 215px;border-color: #E6F1FF;" /> |
||||
|
</el-form-item> |
||||
|
<el-form-item label="银行地址" prop="acctId"> |
||||
|
<el-input size="medium" v-model="queryParams.acctId" placeholder="请输入银行地址" |
||||
|
@keyup.enter.native="handleQuery" style="width: 215px;border-color: #E6F1FF;" /> |
||||
|
</el-form-item> |
||||
|
<!-- <el-form-item label="身份证号码" prop="certId"> |
||||
|
<el-input size="medium" v-model="queryParams.certId" placeholder="请输入身份证号码" |
||||
|
@keyup.enter.native="handleQuery" style="width: 215px;border-color: #E6F1FF;" /> |
||||
|
</el-form-item> --> |
||||
|
|
||||
|
<el-form-item label="代付状态" prop="orderStatus"> |
||||
|
<el-select v-model="queryParams.orderStatus" placeholder="请选择代付状态" size="medium"> |
||||
|
<el-option v-for="dict in dict.type.payment_status" :key="dict.value" :label="dict.label" |
||||
|
:value="dict.value" /> |
||||
|
</el-select> |
||||
|
</el-form-item> |
||||
|
|
||||
|
<el-form-item label="入金渠道" prop="channelType"> |
||||
|
<el-select v-model="queryParams.channelType" placeholder="请选择入金渠道" clearable size="medium"> |
||||
|
<el-option v-for="(item, i) in userLevType" :key="i" :label="item.channelName" |
||||
|
:value="item.payChannel"></el-option> |
||||
|
</el-select> |
||||
|
</el-form-item> |
||||
|
<el-form-item label="出金渠道" prop="outChannel"> |
||||
|
<el-select v-model="queryParams.outChannel" placeholder="请选择出金渠道" clearable size="medium"> |
||||
|
<el-option v-for="(item, i) in userLevType" :key="i" :label="item.channelName" |
||||
|
:value="item.payChannel"></el-option> |
||||
|
</el-select> |
||||
|
</el-form-item> |
||||
|
|
||||
|
<el-form-item label="是否发起代付" prop="isPayment"> |
||||
|
<el-select v-model="queryParams.isPayment" placeholder="请选择是否发起代付" size="medium"> |
||||
|
<el-option v-for="dict in dict.type.yes_no" :key="dict.value" :label="dict.label" |
||||
|
:value="dict.value" /> |
||||
|
</el-select> |
||||
|
</el-form-item> |
||||
|
|
||||
|
<el-form-item label="用户类型" prop="userType"> |
||||
|
<el-select v-model="queryParams.userType" placeholder="请选择用户类型" size="medium"> |
||||
|
<el-option v-for="dict in typeCon" :key="dict.value" :label="dict.label" :value="dict.value" /> |
||||
|
</el-select> |
||||
|
</el-form-item> |
||||
|
|
||||
|
<el-form-item label="订单来源" prop="sourceType"> |
||||
|
<el-select v-model="queryParams.sourceType" placeholder="请选择订单来源" size="medium"> |
||||
|
<el-option v-for="dict in dict.type.source_type" :key="dict.value" :label="dict.label" |
||||
|
:value="dict.value" /> |
||||
|
</el-select> |
||||
|
</el-form-item> |
||||
|
|
||||
|
<el-form-item label="代付时间"> |
||||
|
<el-date-picker v-model="dateRange" style="width: 240px;border-color: #E6F1FF;" |
||||
|
value-format="yyyy-MM-dd" type="daterange" range-separator="-" start-placeholder="开始日期" |
||||
|
end-placeholder="结束日期" :picker-options="pickerOptions" :unlink-panels="true"></el-date-picker> |
||||
|
</el-form-item> |
||||
|
|
||||
|
<el-form-item> |
||||
|
<div class="searchTop flexBet" style="align-items: center;"> |
||||
|
<el-row :gutter="10" class="mb8"> |
||||
|
<el-button type="primary" icon="" size="medium" @click="handleQuery">搜索</el-button> |
||||
|
<el-button icon="el-icon-refresh" size="medium" @click="resetQuery">重置</el-button> |
||||
|
</el-row> |
||||
|
|
||||
|
<el-row :gutter="10" class="mb8" style="margin-left:20px"> |
||||
|
<el-col :span="1.5"> |
||||
|
<el-button type="primary" plain icon="" size="medium" @click="handleExport" |
||||
|
v-hasPermi="['record:platform_payment_coin_export']">导出</el-button> |
||||
|
</el-col> |
||||
|
<!-- <el-col :span="1.5"> |
||||
|
<el-button type="primary" plain icon="" size="medium" @click="handleSay" |
||||
|
v-hasPermi="['record:platform_payment_audit_save']">审核</el-button> |
||||
|
</el-col> --> |
||||
|
</el-row> |
||||
|
</div> |
||||
|
|
||||
|
</el-form-item> |
||||
|
|
||||
|
|
||||
|
|
||||
|
</el-form> |
||||
|
<el-table stripe v-loading="loading" :data="infoList"> |
||||
|
<!-- <el-table-column type="selection" width="55" align="center" :selectable="selectable" /> @selection-change="handleSelectionChange" --> |
||||
|
<el-table-column :label="'批次号\n渠道订单号'" align="center" prop="storeNo" min-width="230"> |
||||
|
<template slot-scope="scope"> |
||||
|
{{ scope.row.batchNo }}<br /> |
||||
|
{{ scope.row.transactionId }} |
||||
|
</template> |
||||
|
</el-table-column> |
||||
|
<el-table-column :label="'商户订单号\n平台订单号'" align="center" prop="storeNo" min-width="180"> |
||||
|
<template slot-scope="scope"> |
||||
|
{{ scope.row.outTradeNo }}<br /> |
||||
|
{{ scope.row.noOrder }} |
||||
|
</template> |
||||
|
</el-table-column> |
||||
|
<!-- <el-table-column :label="'开户名\n身份证号'" align="center" prop="storeNo" min-width="150"> |
||||
|
<template slot-scope="scope"> |
||||
|
{{ scope.row.acctName }}<br /> |
||||
|
{{ scope.row.certId }} |
||||
|
</template> |
||||
|
</el-table-column> --> |
||||
|
<el-table-column label="用户类型" align="center" prop="userType" min-width="120"> |
||||
|
<template slot-scope="scope"> |
||||
|
<el-tag :type=" |
||||
|
scope.row.userType == 'store' |
||||
|
? 'success' : 'primary' |
||||
|
"> |
||||
|
{{ scope.row.userType == 'store' ? '商户' : '代理商' }} |
||||
|
</el-tag> |
||||
|
</template> |
||||
|
</el-table-column> |
||||
|
|
||||
|
<el-table-column :label="'币种名称'" align="center" prop="storeNo" min-width="150"> |
||||
|
<template slot-scope="scope"> |
||||
|
{{ scope.row.bankName }} |
||||
|
</template> |
||||
|
</el-table-column> |
||||
|
|
||||
|
<el-table-column :label="'收款地址'" align="center" prop="storeNo" min-width="180"> |
||||
|
<template slot-scope="scope"> |
||||
|
{{ scope.row.acctId }} |
||||
|
</template> |
||||
|
</el-table-column> |
||||
|
<el-table-column :label="'代付金额\n代付手续费'" align="center" prop="storeNo"> |
||||
|
<template slot-scope="scope"> |
||||
|
{{ scope.row.tranAmt }}<br /> |
||||
|
{{ scope.row.tranFee }} |
||||
|
</template> |
||||
|
</el-table-column> |
||||
|
<el-table-column :label="'代付状态\n是否发起'" align="center" prop="storeNo"> |
||||
|
<template slot-scope="scope"> |
||||
|
{{ scope.row.orderStatusName }}<br /> |
||||
|
{{ scope.row.isPayment == 'yes' ? '已发起' : '未发起' }} |
||||
|
</template> |
||||
|
</el-table-column> |
||||
|
<el-table-column :label="'对公对私\n出款账号'" align="center" prop="storeNo" min-width="150"> |
||||
|
<template slot-scope="scope"> |
||||
|
{{ scope.row.flagCard == 'private_account' ? "对私" : '对公' }}<br /> |
||||
|
{{ scope.row.accountNo }} |
||||
|
</template> |
||||
|
</el-table-column> |
||||
|
<el-table-column :label="'入金渠道\n出金渠道'" align="center" prop="storeNo" min-width="120"> |
||||
|
<template slot-scope="scope"> |
||||
|
{{ scope.row.payChannelName }}<br /> |
||||
|
{{ scope.row.outChannelName }} |
||||
|
</template> |
||||
|
</el-table-column> |
||||
|
<el-table-column :label="'商户名称\n代付时间'" align="center" prop="storeNo" min-width="150"> |
||||
|
<template slot-scope="scope"> |
||||
|
{{ scope.row.storeName }}<br /> |
||||
|
{{ scope.row.createTime }} |
||||
|
</template> |
||||
|
</el-table-column> |
||||
|
<el-table-column :label="'订单来源'" align="center" prop="storeNo" min-width="150"> |
||||
|
<template slot-scope="scope"> |
||||
|
{{ scope.row.sourceType == 's_manual' ? '手工提单' : 'API下发' }} |
||||
|
</template> |
||||
|
</el-table-column> |
||||
|
<el-table-column label="代付信息" align="center" prop="orderMsg" /> |
||||
|
<el-table-column label="操作" align="center" class-name="small-padding fixed-width" fixed="right" |
||||
|
min-width="80"> |
||||
|
<template slot-scope="scope"> |
||||
|
<el-button v-if="scope.row.orderStatus == 'processing' || scope.row.orderStatus == 'processreview'" |
||||
|
size="small" type="text" style="color: #006EFF;" @click="handleOrder(scope.row)" |
||||
|
v-hasPermi="['record:platform_payment_coin_handle']">手工处理</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 :close-on-click-modal="false" title="信息" :visible.sync="isShowDetail" width="23%" |
||||
|
append-to-body> |
||||
|
<div class="m20">确认要处理当前代付订单?</div> |
||||
|
<el-form ref="form" :model="form" :rules="rules" label-width="115px"> |
||||
|
<el-form-item label="交易凭证hash" prop="txId"> |
||||
|
<el-input v-model="form.txId" placeholder="请输入交易凭证hash" /> |
||||
|
</el-form-item> |
||||
|
<el-form-item label="出账地址" prop="fromAddress"> |
||||
|
<el-input v-model="form.fromAddress" placeholder="请输入出账地址" /> |
||||
|
</el-form-item> |
||||
|
<el-form-item label="验证码" prop="googleCode"> |
||||
|
<el-input v-model="form.googleCode" placeholder="请输入谷歌动态验证码" /> |
||||
|
</el-form-item> |
||||
|
</el-form> |
||||
|
<el-button type="primary" icon="" size="small" @click="submitForm('processsuccess')">置为成功</el-button> |
||||
|
<el-button plain size="small" @click="submitForm('processfailed')">置为取消</el-button> |
||||
|
<el-button plain size="small" @click="cancel">取消</el-button> |
||||
|
</el-dialog> |
||||
|
|
||||
|
<!-- 审核 --> |
||||
|
<el-dialog v-dialogDrag title="代付审核" :visible.sync="isShowJudege" width="600px" append-to-body |
||||
|
:close-on-click-modal="false" :before-close="cancel"> |
||||
|
<el-form ref="form" :model="form" :rules="rules" label-width="120px"> |
||||
|
<el-form-item label="审核状态" prop="auditStatus"> |
||||
|
<el-radio-group v-model="form.auditStatus" @change="getValue"> |
||||
|
<el-radio v-for="(item, i) in statusOptions" :key="i" :value="item.label" |
||||
|
:label="item.value">{{ item.label }}</el-radio> |
||||
|
</el-radio-group> |
||||
|
</el-form-item> |
||||
|
<el-form-item label="谷歌验证码" prop="googleCode"> |
||||
|
<el-input v-model="form.googleCode" placeholder="请输入谷歌动态验证码" /> |
||||
|
</el-form-item> |
||||
|
<el-form-item label="驳回原因" prop="rejectReason" v-if="form.auditStatus == 'processreject'"> |
||||
|
<el-input v-model="form.rejectReason" placeholder="请输入驳回原因" /> |
||||
|
</el-form-item> |
||||
|
</el-form> |
||||
|
<div slot="footer" class="dialog-footer"> |
||||
|
<el-button type="primary" @click="submitForm('judge')">确 定</el-button> |
||||
|
<el-button @click="cancel">取 消</el-button> |
||||
|
</div> |
||||
|
</el-dialog> |
||||
|
</div> |
||||
|
</template> |
||||
|
|
||||
|
<script> |
||||
|
import { common_api, platform_payment_list } from "@/api/form"; |
||||
|
|
||||
|
export default { |
||||
|
name: "PkAdWeiList", |
||||
|
dicts: ['pay_status', 'source_type', 'yes_no', 'payment_status'], |
||||
|
data() { |
||||
|
return { |
||||
|
typeCon: [ |
||||
|
{ |
||||
|
label: '商户', |
||||
|
value: 'store', |
||||
|
}, |
||||
|
{ |
||||
|
label: '代理商', |
||||
|
value: 'agent', |
||||
|
}, |
||||
|
], |
||||
|
statusOptions: [ |
||||
|
{ |
||||
|
label: '通过', |
||||
|
value: 'processing', |
||||
|
}, |
||||
|
{ |
||||
|
label: '驳回', |
||||
|
value: 'processreject', |
||||
|
}, |
||||
|
], |
||||
|
detailData: {}, |
||||
|
isShowDetail: false, |
||||
|
isShowJudege: false, |
||||
|
pickerOptions: { |
||||
|
shortcuts: [ |
||||
|
{ |
||||
|
text: '最近一天', |
||||
|
onClick(picker) { |
||||
|
const end = new Date(); |
||||
|
const start = new Date(); |
||||
|
start.setTime(start.getTime() - 3600 * 1000 * 24); |
||||
|
picker.$emit('pick', [start, end]); |
||||
|
} |
||||
|
}, |
||||
|
{ |
||||
|
text: '最近三天', |
||||
|
onClick(picker) { |
||||
|
const end = new Date(); |
||||
|
const start = new Date(); |
||||
|
start.setTime(start.getTime() - 3600 * 1000 * 24 * 3); |
||||
|
picker.$emit('pick', [start, end]); |
||||
|
} |
||||
|
}, |
||||
|
{ |
||||
|
text: '最近一周', |
||||
|
onClick(picker) { |
||||
|
const end = new Date(); |
||||
|
const start = new Date(); |
||||
|
start.setTime(start.getTime() - 3600 * 1000 * 24 * 7); |
||||
|
picker.$emit('pick', [start, end]); |
||||
|
} |
||||
|
}, |
||||
|
{ |
||||
|
text: '最近一个月', |
||||
|
onClick(picker) { |
||||
|
const end = new Date(); |
||||
|
const start = new Date(); |
||||
|
start.setTime(start.getTime() - 3600 * 1000 * 24 * 30); |
||||
|
picker.$emit('pick', [start, end]); |
||||
|
} |
||||
|
}, |
||||
|
{ |
||||
|
text: '最近三个月', |
||||
|
onClick(picker) { |
||||
|
const end = new Date(); |
||||
|
const start = new Date(); |
||||
|
start.setTime(start.getTime() - 3600 * 1000 * 24 * 30 * 3); |
||||
|
picker.$emit('pick', [start, end]); |
||||
|
} |
||||
|
}, |
||||
|
{ |
||||
|
text: '最近半年', |
||||
|
onClick(picker) { |
||||
|
const end = new Date(); |
||||
|
const start = new Date(); |
||||
|
start.setTime(start.getTime() - 3600 * 1000 * 24 * 30 * 6); |
||||
|
picker.$emit('pick', [start, end]); |
||||
|
} |
||||
|
}, |
||||
|
{ |
||||
|
text: '最近一年', |
||||
|
onClick(picker) { |
||||
|
const end = new Date(); |
||||
|
const start = new Date(); |
||||
|
start.setTime(start.getTime() - 3600 * 1000 * 24 * 30 * 12); |
||||
|
picker.$emit('pick', [start, end]); |
||||
|
} |
||||
|
}, |
||||
|
{ |
||||
|
text: '最近两年', |
||||
|
onClick(picker) { |
||||
|
const end = new Date(); |
||||
|
const start = new Date(); |
||||
|
start.setTime(start.getTime() - 3600 * 1000 * 24 * 30 * 24); |
||||
|
picker.$emit('pick', [start, end]); |
||||
|
} |
||||
|
}, |
||||
|
{ |
||||
|
text: '最近三年', |
||||
|
onClick(picker) { |
||||
|
const end = new Date(); |
||||
|
const start = new Date(); |
||||
|
start.setTime(start.getTime() - 3600 * 1000 * 24 * 30 * 36); |
||||
|
picker.$emit('pick', [start, end]); |
||||
|
} |
||||
|
}, |
||||
|
] |
||||
|
}, |
||||
|
userLevType: [ |
||||
|
|
||||
|
], |
||||
|
sortLevType: [], |
||||
|
// 选中数组 |
||||
|
ids: [], |
||||
|
// 非单个禁用 |
||||
|
single: true, |
||||
|
// 非多个禁用 |
||||
|
multiple: true, |
||||
|
dateRange: [], |
||||
|
// 新增广告图片地址 |
||||
|
imageUrl: "", |
||||
|
// 遮罩层 |
||||
|
loading: true, |
||||
|
// 导出遮罩层 |
||||
|
exportLoading: false, |
||||
|
// 选中数组 |
||||
|
ids: [], |
||||
|
paymentIds: [], |
||||
|
// 非多个禁用 |
||||
|
multiple: true, |
||||
|
// 显示搜索条件 |
||||
|
showSearch: true, |
||||
|
// 总条数 |
||||
|
total: 0, |
||||
|
// 广告表格数据 |
||||
|
infoList: [], |
||||
|
// 弹出层标题 |
||||
|
title: "", |
||||
|
// 是否显示弹出层 |
||||
|
open: false, |
||||
|
// 查询参数 |
||||
|
queryParams: { |
||||
|
pageNum: 1, |
||||
|
pageSize: 20, |
||||
|
sourceType: null, |
||||
|
isPayment: null, |
||||
|
outChannel: null, |
||||
|
channelType: null, |
||||
|
orderStatus: null, |
||||
|
certId: null, |
||||
|
acctId: null, |
||||
|
acctName: null, |
||||
|
storeName: null, |
||||
|
noOrder: null, |
||||
|
outTradeNo: null, |
||||
|
batchNo: null, |
||||
|
userType: null, |
||||
|
|
||||
|
}, |
||||
|
|
||||
|
// 表单参数 |
||||
|
form: { |
||||
|
|
||||
|
}, |
||||
|
// 表单校验 |
||||
|
rules: { |
||||
|
// txId: [ |
||||
|
// { required: true, message: "请输入交易成功hash", trigger: "blur" }, |
||||
|
// ], |
||||
|
// fromAddress: [ |
||||
|
// { required: true, message: "请输入出账地址", trigger: "blur" }, |
||||
|
// ], |
||||
|
auditStatus: [ |
||||
|
{ required: true, message: "请选择审核状态", trigger: "blur" }, |
||||
|
], |
||||
|
googleCode: [ |
||||
|
{ required: true, message: "请输入谷歌动态验证码", trigger: "blur" }, |
||||
|
], |
||||
|
rejectReason: [ |
||||
|
{ required: true, message: "请输入驳回原因", trigger: "blur" }, |
||||
|
], |
||||
|
} |
||||
|
}; |
||||
|
}, |
||||
|
created() { |
||||
|
this.getList(); |
||||
|
this.init(); |
||||
|
|
||||
|
}, |
||||
|
methods: { |
||||
|
getValue(e) { |
||||
|
this.$forceUpdate() |
||||
|
}, |
||||
|
selectable(row, rowIndex) { |
||||
|
//索引是从0开始,条件1是指只有第2行数据不被禁用 |
||||
|
if (row.orderStatus == 'processreview') { |
||||
|
return true; //不禁用 |
||||
|
} else { |
||||
|
return false; //禁用 |
||||
|
} |
||||
|
}, |
||||
|
/** 手工处理 */ |
||||
|
handleOrder(row) { |
||||
|
this.reset() |
||||
|
this.detailData = row |
||||
|
this.isShowDetail = true |
||||
|
}, |
||||
|
// 审核 |
||||
|
handleSay() { |
||||
|
if (!this.paymentIds.length) { |
||||
|
this.$message.error('请选择要审核的数据') |
||||
|
return; |
||||
|
} |
||||
|
this.isShowJudege = true |
||||
|
this.form.auditStatus = 'processing' |
||||
|
}, |
||||
|
init() { |
||||
|
common_api.payChannelAll().then((response) => { |
||||
|
this.userLevType = response.data |
||||
|
}); |
||||
|
common_api.payTypeAll().then((response) => { |
||||
|
this.sortLevType = response.data |
||||
|
}); |
||||
|
}, |
||||
|
/** 导出按钮操作 */ |
||||
|
handleExport() { |
||||
|
const queryParams = this.queryParams; |
||||
|
this.$confirm("是否确认导出代付流水?", "警告", { |
||||
|
confirmButtonText: "确定", |
||||
|
cancelButtonText: "取消", |
||||
|
type: "warning", |
||||
|
}) |
||||
|
.then(function () { |
||||
|
return platform_payment_list.uexport(queryParams); |
||||
|
}) |
||||
|
.then((response) => { |
||||
|
this.download(response.msg); |
||||
|
this.queryParams.pageNum = 1; |
||||
|
this.queryParams.pageSize = 20; |
||||
|
}); |
||||
|
}, |
||||
|
// 多选框选中数据 |
||||
|
handleSelectionChange(selection) { |
||||
|
this.ids = selection.map(item => item.storeId) |
||||
|
this.paymentIds = selection.map(item => item.batchNo) |
||||
|
this.single = selection.length != 1 |
||||
|
this.multiple = !selection.length |
||||
|
}, |
||||
|
getList() { |
||||
|
this.loading = true; |
||||
|
platform_payment_list |
||||
|
.ulistInfo(this.addSESDateRange(this.queryParams, this.dateRange)) |
||||
|
.then((response) => { |
||||
|
this.infoList = response.rows; |
||||
|
this.total = Number(response.total); |
||||
|
this.loading = false; |
||||
|
}); |
||||
|
}, |
||||
|
// 取消按钮 |
||||
|
cancel() { |
||||
|
this.open = false; |
||||
|
this.isShowDetail = false; |
||||
|
this.isShowJudege = false |
||||
|
this.reset(); |
||||
|
}, |
||||
|
// 表单重置 |
||||
|
reset() { |
||||
|
this.form = {}; |
||||
|
this.resetForm("form"); |
||||
|
}, |
||||
|
/** 搜索按钮操作 */ |
||||
|
handleQuery() { |
||||
|
this.queryParams.pageNum = 1; |
||||
|
this.getList(); |
||||
|
}, |
||||
|
/** 重置按钮操作 */ |
||||
|
resetQuery() { |
||||
|
this.dateRange = []; |
||||
|
this.resetForm("queryForm"); |
||||
|
this.handleQuery(); |
||||
|
}, |
||||
|
/** 新增按钮操作 */ |
||||
|
handleAdd() { |
||||
|
this.reset(); |
||||
|
this.open = true; |
||||
|
this.title = "添加广告位信息"; |
||||
|
}, |
||||
|
/** 修改按钮操作 */ |
||||
|
handleUpdate(row) { |
||||
|
this.reset(); |
||||
|
const id = row.id || this.ids; |
||||
|
pkUserInfo.getInfo(id).then((response) => { |
||||
|
this.form = response.data; |
||||
|
this.open = true; |
||||
|
this.title = "修改广告位信息"; |
||||
|
}); |
||||
|
}, |
||||
|
/** 提交按钮 */ |
||||
|
submitForm(type) { |
||||
|
if (!this.form.googleCode) { |
||||
|
this.$message.error('请输入谷歌动态验证码') |
||||
|
return; |
||||
|
} |
||||
|
if (type == 'processsuccess' && !this.form.txId) { |
||||
|
this.$message.error('请输入交易凭证hash') |
||||
|
return; |
||||
|
} |
||||
|
if (type == 'processsuccess' && !this.form.fromAddress) { |
||||
|
this.$message.error('请输入出账地址') |
||||
|
return; |
||||
|
} |
||||
|
|
||||
|
this.$refs["form"].validate((valid) => { |
||||
|
if (valid) { |
||||
|
if (type == 'judge') { |
||||
|
const loading = this.$loading({ |
||||
|
lock: true, |
||||
|
text: `正在审核`, |
||||
|
spinner: "el-icon-loading", |
||||
|
background: "rgba(0, 0, 0, 0.7)", |
||||
|
}); |
||||
|
this.form.paymentIds = this.paymentIds.join(',') |
||||
|
platform_payment_list.platform_payment_audit_save(this.form).then((response) => { |
||||
|
loading.close(); |
||||
|
this.isShowJudege = false; |
||||
|
this.msgSuccess("审核成功"); |
||||
|
this.getList(); |
||||
|
}).catch(() => { |
||||
|
loading.close(); |
||||
|
this.isShowJudege = false; |
||||
|
}) |
||||
|
} else { |
||||
|
const loading = this.$loading({ |
||||
|
lock: true, |
||||
|
text: `正在手动处理`, |
||||
|
spinner: "el-icon-loading", |
||||
|
background: "rgba(0, 0, 0, 0.7)", |
||||
|
}); |
||||
|
let form = { |
||||
|
id: this.detailData.id, |
||||
|
status: type, |
||||
|
googleCode: this.form.googleCode, |
||||
|
fromAddress: this.form.fromAddress, |
||||
|
txId: this.form.txId, |
||||
|
} |
||||
|
platform_payment_list.platform_payment_coin_handle(form).then((response) => { |
||||
|
loading.close(); |
||||
|
this.isShowDetail = false; |
||||
|
this.msgSuccess("处理成功"); |
||||
|
this.getList(); |
||||
|
}).catch(() => { |
||||
|
loading.close(); |
||||
|
this.isShowDetail = false; |
||||
|
}) |
||||
|
} |
||||
|
|
||||
|
} |
||||
|
}); |
||||
|
}, |
||||
|
|
||||
|
}, |
||||
|
}; |
||||
|
</script> |
||||
|
<style scoped lang="scss"> |
||||
|
::v-deep .el-dialog__body { |
||||
|
padding: 20px 20px; |
||||
|
} |
||||
|
|
||||
|
::v-deep .el-dialog__headerbtn { |
||||
|
top: 10px; |
||||
|
} |
||||
|
|
||||
|
::v-deep .el-dialog__header { |
||||
|
background: #F8F8F8; |
||||
|
padding: 8px; |
||||
|
|
||||
|
.el-dialog__title { |
||||
|
font-size: 14px; |
||||
|
} |
||||
|
} |
||||
|
|
||||
|
::v-deep .el-dialog:not(.is-fullscreen) { |
||||
|
margin-top: 33vh !important; |
||||
|
} |
||||
|
</style> |
@ -0,0 +1,747 @@ |
|||||
|
<template> |
||||
|
<div class="app-container"> |
||||
|
<div class="flexBet searchTop"> |
||||
|
<div class="title flex m20"> |
||||
|
<div class="bar"></div> |
||||
|
<div class="text">{{ $route.meta.title }}</div> |
||||
|
</div> |
||||
|
<el-row :gutter="10" class="mb8"> |
||||
|
<right-toolbar :showSearch.sync="showSearch" @queryTable="getList"></right-toolbar> |
||||
|
</el-row> |
||||
|
</div> |
||||
|
<div class="bg"> |
||||
|
<el-form :model="queryParams" ref="queryForm" :inline="true" v-show="showSearch" label-width="86px" |
||||
|
class="flex form" style="padding:0 20px"> |
||||
|
<el-form-item label="商户订单号" prop="outTradeNo"> |
||||
|
<el-input size="medium" v-model="queryParams.outTradeNo" placeholder="请输入商户订单号" |
||||
|
@keyup.enter.native="handleQuery" style="width: 215px;border-color: #E6F1FF;" /> |
||||
|
</el-form-item> |
||||
|
<el-form-item label="平台订单号" prop="orderNo"> |
||||
|
<el-input size="medium" v-model="queryParams.orderNo" placeholder="请输入平台订单号" |
||||
|
@keyup.enter.native="handleQuery" style="width: 215px;border-color: #E6F1FF;" /> |
||||
|
</el-form-item> |
||||
|
<el-form-item label="交易hash" prop="transactionId"> |
||||
|
<el-input size="medium" v-model="queryParams.transactionId" placeholder="请输入交易hash" |
||||
|
@keyup.enter.native="handleQuery" style="width: 215px;border-color: #E6F1FF;" /> |
||||
|
</el-form-item> |
||||
|
<!-- <el-form-item label="支付商户号" prop="mchId"> |
||||
|
<el-input size="medium" v-model="queryParams.mchId" placeholder="请输入支付商户号" |
||||
|
@keyup.enter.native="handleQuery" style="width: 215px;border-color: #E6F1FF;" /> |
||||
|
</el-form-item> --> |
||||
|
<!-- <el-form-item label="支付商户名" prop="mchName"> |
||||
|
<el-input size="medium" v-model="queryParams.mchName" placeholder="请输入支付商户名" |
||||
|
@keyup.enter.native="handleQuery" style="width: 215px;border-color: #E6F1FF;" /> |
||||
|
</el-form-item> --> |
||||
|
<el-form-item label="商户名称" prop="storeName"> |
||||
|
<el-input size="medium" v-model="queryParams.storeName" placeholder="请输入商户名称" |
||||
|
@keyup.enter.native="handleQuery" style="width: 215px;border-color: #E6F1FF;" /> |
||||
|
</el-form-item> |
||||
|
<!-- <el-form-item label="商户编号" prop="storeNo"> |
||||
|
<el-input size="medium" v-model="queryParams.storeNo" placeholder="请输入商户编号" |
||||
|
@keyup.enter.native="handleQuery" style="width: 215px;border-color: #E6F1FF;" /> |
||||
|
</el-form-item> --> |
||||
|
|
||||
|
<el-form-item label="订单状态" prop="orderStatus"> |
||||
|
<el-select v-model="queryParams.orderStatus" placeholder="请选择订单状态" size="medium"> |
||||
|
<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="settleStatus"> |
||||
|
<el-select v-model="queryParams.settleStatus" placeholder="请选择结算状态" clearable size="medium"> |
||||
|
<el-option v-for="(item, i) in settleStatusCon" :key="i" :label="item.label" |
||||
|
:value="item.value"></el-option> |
||||
|
</el-select> |
||||
|
</el-form-item> |
||||
|
<el-form-item label="支付渠道" prop="channelType"> |
||||
|
<el-select v-model="queryParams.channelType" placeholder="请选择支付渠道" clearable size="medium"> |
||||
|
<el-option v-for="(item, i) in userLevType" :key="i" :label="item.channelName" |
||||
|
:value="item.payChannel"></el-option> |
||||
|
</el-select> |
||||
|
</el-form-item> |
||||
|
<el-form-item label="支付类型" prop="payType"> |
||||
|
<el-select v-model="queryParams.payType" placeholder="请选择支付类型" clearable size="medium"> |
||||
|
<el-option v-for="(item, i) in sortLevType" :key="i" :label="item.typeName" |
||||
|
:value="item.payType"></el-option> |
||||
|
</el-select> |
||||
|
</el-form-item> |
||||
|
<el-form-item label="交易时间"> |
||||
|
<el-date-picker v-model="dateRange" style="width: 240px;border-color: #E6F1FF;" |
||||
|
value-format="yyyy-MM-dd" type="daterange" range-separator="-" start-placeholder="开始日期" |
||||
|
end-placeholder="结束日期" :picker-options="pickerOptions" :unlink-panels="true"></el-date-picker> |
||||
|
</el-form-item> |
||||
|
|
||||
|
<el-form-item> |
||||
|
<div class="searchTop flexBet" style="align-items: center;"> |
||||
|
<el-row :gutter="10" class="mb8"> |
||||
|
<el-button type="primary" icon="" size="medium" @click="handleQuery">搜索</el-button> |
||||
|
<el-button icon="el-icon-refresh" size="medium" @click="resetQuery">重置</el-button> |
||||
|
</el-row> |
||||
|
|
||||
|
<el-row :gutter="10" class="mb8" style="margin-left:20px"> |
||||
|
<el-col :span="1.5"> |
||||
|
<el-button type="primary" plain icon="" size="medium" @click="handleExport" |
||||
|
v-hasPermi="['order:rechargeRecord:exportCoin']">导出</el-button> |
||||
|
</el-col> |
||||
|
<!-- <el-col :span="1.5"> |
||||
|
<el-button type="primary" plain icon="" size="medium" @click="handleSay" :disabled="single" |
||||
|
v-hasPermi="['order:rechargeRecord:reissueNotice']">补发通知</el-button> |
||||
|
</el-col> --> |
||||
|
</el-row> |
||||
|
</div> |
||||
|
|
||||
|
</el-form-item> |
||||
|
</el-form> |
||||
|
<el-table stripe v-loading="loading" :data="infoList"> |
||||
|
<!-- <el-table-column type="selection" width="55" align="center" /> @selection-change="handleSelectionChange" --> |
||||
|
<el-table-column :label="'交易时间\n结算时间'" align="center" prop="storeNo" min-width="150"> |
||||
|
<template slot-scope="scope"> |
||||
|
{{ scope.row.createTime }}<br /> |
||||
|
{{ scope.row.storeSettleTime }} |
||||
|
</template> |
||||
|
</el-table-column> |
||||
|
<el-table-column :label="'交易状态\n结算状态'" align="center" prop="storeNo" min-width="120"> |
||||
|
<template slot-scope="scope"> |
||||
|
<el-tag :type=" |
||||
|
scope.row.orderStatus == 'pay_unpaid' ? 'warning' : scope.row.orderStatus == 'pay_success' ? 'success' : |
||||
|
scope.row.orderStatus == 'pay_failure' ? 'danger' : scope.row.orderStatus == 'pay_processing' ? 'warning' : 'primary' |
||||
|
"> |
||||
|
{{ scope.row.orderStatus == 'pay_unpaid' ? '未支付' : scope.row.orderStatus == 'pay_success' ? |
||||
|
'支付成功' : |
||||
|
scope.row.orderStatus == 'pay_failure' ? '支付失败' : scope.row.orderStatus == |
||||
|
'pay_processing' ? '支付处理中' : '已关闭' }} |
||||
|
</el-tag> |
||||
|
<br /> |
||||
|
<el-tag :type=" |
||||
|
scope.row.storeSettle == 'yes' ? 'success' : scope.row.storeSettle == 'no' || !scope.row.storeSettle ? 'danger' : |
||||
|
scope.row.storeSettle == 'error' ? 'warning' : 'primary' |
||||
|
"> |
||||
|
{{ scope.row.storeSettle == 'yes' ? '已结算' : scope.row.storeSettle == 'no' || |
||||
|
!scope.row.storeSettle ? '未结算' : |
||||
|
scope.row.storeSettle == 'error' ? '结算失败' : '部分结算' }} |
||||
|
</el-tag> |
||||
|
</template> |
||||
|
</el-table-column> |
||||
|
<el-table-column :label="'商户订单号\n平台订单号'" align="center" prop="storeNo" min-width="160"> |
||||
|
<template slot-scope="scope"> |
||||
|
{{ scope.row.outTradeNo }}<br /> |
||||
|
{{ scope.row.orderNo }} |
||||
|
</template> |
||||
|
</el-table-column> |
||||
|
<el-table-column label="交易hash" align="center" prop="transactionId" min-width="150" /> |
||||
|
<el-table-column :label="'商户名称\n商户编号'" align="center" prop="storeNo" min-width="150"> |
||||
|
<template slot-scope="scope"> |
||||
|
{{ scope.row.storeName }}<br /> |
||||
|
{{ scope.row.storeNo }} |
||||
|
</template> |
||||
|
</el-table-column> |
||||
|
<el-table-column :label="'商户名\n商户号'" align="center" prop="storeNo" min-width="150"> |
||||
|
<template slot-scope="scope"> |
||||
|
{{ scope.row.mchName }}<br /> |
||||
|
{{ scope.row.mchId }} |
||||
|
</template> |
||||
|
</el-table-column> |
||||
|
<!-- <el-table-column :label="'商户姓名\n商户手机'" align="center" prop="storeNo" min-width="150"> |
||||
|
<template slot-scope="scope"> |
||||
|
{{ scope.row.name }}<br /> |
||||
|
{{ scope.row.mobile }} |
||||
|
</template> |
||||
|
</el-table-column> --> |
||||
|
<el-table-column :label="'交易金额\n实付金额\n到账金额'" align="center" prop="storeNo" min-width="150"> |
||||
|
<template slot-scope="scope"> |
||||
|
{{ scope.row.tranAmt }}<br /> |
||||
|
{{ scope.row.payAmt }}<br /> |
||||
|
{{ scope.row.realAmt }} |
||||
|
</template> |
||||
|
</el-table-column> |
||||
|
<el-table-column :label="'手续费率(%)\n通道费率(%)'" align="center" prop="storeNo" min-width="150"> |
||||
|
<template slot-scope="scope"> |
||||
|
{{ NumberMul(scope.row.rate, 100) }}%<br /> |
||||
|
{{ NumberMul(scope.row.channelRate, 100) }}% |
||||
|
</template> |
||||
|
</el-table-column> |
||||
|
<el-table-column :label="'渠道类型\n支付类型'" align="center" prop="storeNo" min-width="150"> |
||||
|
<template slot-scope="scope"> |
||||
|
{{ scope.row.channelType }}<br /> |
||||
|
{{ scope.row.cardType == 0 ? '借记卡' : '贷记卡' }} |
||||
|
</template> |
||||
|
</el-table-column> |
||||
|
<!-- <el-table-column label="商户类型" align="center" prop="divideType" /> --> |
||||
|
<!-- <el-table-column label="订单描述" align="center" prop="orderMsg" /> --> |
||||
|
<el-table-column label="操作" align="center" class-name="small-padding fixed-width" fixed="right" |
||||
|
min-width="80"> |
||||
|
<template slot-scope="scope"> |
||||
|
<el-button size="small" type="text" style="color: #006EFF;" |
||||
|
@click="handleViewMy(scope.row)">详情</el-button> |
||||
|
|
||||
|
<el-button v-if="scope.row.orderStatus == 'pay_unpaid' || scope.row.orderStatus == 'pay_processing'" |
||||
|
size="small" type="text" style="color: #006EFF;" @click="handleOrder(scope.row)" |
||||
|
v-hasPermi="['order:rechargeRecord:payHandleCoin']">手工处理</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 :close-on-click-modal="false" title="信息" :visible.sync="isShowDetail" width="23%" |
||||
|
append-to-body> |
||||
|
<div class="m20">确认要处理当前支付订单?</div> |
||||
|
<el-form ref="form" :model="form" :rules="rules" label-width="105px"> |
||||
|
<el-form-item label="hash" prop="hash"> |
||||
|
<el-input v-model="form.hash" placeholder="请输入hash" /> |
||||
|
</el-form-item> |
||||
|
<el-form-item label="出账地址" prop="fromAddress"> |
||||
|
<el-input v-model="form.fromAddress" placeholder="请输入出账地址" /> |
||||
|
</el-form-item> |
||||
|
<el-form-item label="验证码" prop="googleCode"> |
||||
|
<el-input v-model="form.googleCode" placeholder="请输入谷歌动态验证码" /> |
||||
|
</el-form-item> |
||||
|
</el-form> |
||||
|
<el-button type="primary" icon="" size="small" @click="submitForm('pay_success')">置为成功</el-button> |
||||
|
<el-button plain size="small" @click="submitForm('pay_failure')">置为取消</el-button> |
||||
|
<el-button plain size="small" @click="cancel">取消</el-button> |
||||
|
</el-dialog> |
||||
|
|
||||
|
|
||||
|
|
||||
|
|
||||
|
|
||||
|
<!-- 详情 --> |
||||
|
<el-dialog v-dialogDrag :close-on-click-modal="false" :title="detailTitle" :visible.sync="isShowDetailMy" |
||||
|
width="73%" append-to-body> |
||||
|
<el-form label-width="142px" :label-suffix="':'"> |
||||
|
<div class="card-detail flex"> |
||||
|
<div> |
||||
|
|
||||
|
<el-form-item label="平台订单号"> |
||||
|
{{ detailInfoList.orderNo }} |
||||
|
</el-form-item> |
||||
|
<el-form-item label='交易状态'> |
||||
|
<el-tag v-if="detailInfoList.orderStatus" :type=" |
||||
|
detailInfoList.orderStatus == 'pay_unpaid' ? 'warning' : detailInfoList.orderStatus == 'pay_success' ? 'success' : |
||||
|
detailInfoList.orderStatus == 'pay_failure' ? 'danger' : detailInfoList.orderStatus == 'pay_processing' ? 'warning' : 'primary' |
||||
|
"> |
||||
|
{{ detailInfoList.orderStatus == 'pay_unpaid' ? '未支付' : detailInfoList.orderStatus == |
||||
|
'pay_success' ? |
||||
|
'支付成功' : |
||||
|
detailInfoList.orderStatus == 'pay_failure' ? '支付失败' : detailInfoList.orderStatus == |
||||
|
'pay_processing' ? '支付处理中' : '已关闭' }} |
||||
|
</el-tag> |
||||
|
</el-form-item> |
||||
|
<el-form-item v-if="detailInfoList.sourceType" :label="'订单来源'"> |
||||
|
{{ detailInfoList.sourceType == 's_manual' ? '手工提单' : 'API下发' }} |
||||
|
</el-form-item> |
||||
|
<el-form-item label="商户id"> |
||||
|
{{ detailInfoList.storeId }} |
||||
|
</el-form-item> |
||||
|
<el-form-item label="商户订单号"> |
||||
|
{{ detailInfoList.outTradeNo }} |
||||
|
</el-form-item> |
||||
|
<el-form-item label="成功交易金额"> |
||||
|
{{ detailInfoList.payAmt }} |
||||
|
</el-form-item> |
||||
|
<el-form-item label="内充渠道"> |
||||
|
{{ detailInfoList.payChannelName }} |
||||
|
</el-form-item> |
||||
|
<el-form-item label="支付时间"> |
||||
|
{{ detailInfoList.payTime }} |
||||
|
</el-form-item> |
||||
|
<el-form-item label="支付类型"> |
||||
|
{{ detailInfoList.payTypeName }} |
||||
|
</el-form-item> |
||||
|
<!-- <el-form-item label="备注"> |
||||
|
{{ detailInfoList.attach }} |
||||
|
</el-form-item> --> |
||||
|
<el-form-item label="订单描述"> |
||||
|
{{ detailInfoList.orderMsg }} |
||||
|
</el-form-item> |
||||
|
<!-- <el-form-item label="keyId"> |
||||
|
{{ detailInfoList.keyId }} |
||||
|
</el-form-item> --> |
||||
|
</div> |
||||
|
<div> |
||||
|
<el-form-item label="通道手续费金额"> |
||||
|
{{ detailInfoList.poundageAmt }} |
||||
|
</el-form-item> |
||||
|
<el-form-item label="通道手续费率"> |
||||
|
{{ NumberMul(detailInfoList.poundageRate, 100) }}% |
||||
|
</el-form-item> |
||||
|
<el-form-item label="商户名称"> |
||||
|
{{ detailInfoList.storeName }} |
||||
|
</el-form-item> |
||||
|
<el-form-item label="商户编号"> |
||||
|
{{ detailInfoList.storeNo }} |
||||
|
</el-form-item> |
||||
|
<el-form-item :label="'结算状态'"> |
||||
|
<el-tag v-if="detailInfoList.storeSettle" :type=" |
||||
|
detailInfoList.storeSettle == 'yes' ? 'success' : detailInfoList.storeSettle == 'no' || !detailInfoList.storeSettle ? 'danger' : |
||||
|
detailInfoList.storeSettle == 'error' ? 'warning' : 'primary' |
||||
|
"> |
||||
|
{{ detailInfoList.storeSettle == 'yes' ? '已结算' : detailInfoList.storeSettle == 'no' || |
||||
|
!detailInfoList.storeSettle ? '未结算' : |
||||
|
detailInfoList.storeSettle == 'error' ? '结算失败' : '部分结算' }} |
||||
|
</el-tag> |
||||
|
</el-form-item> |
||||
|
<el-form-item label="结算时间"> |
||||
|
{{ detailInfoList.storeSettleTime }} |
||||
|
</el-form-item> |
||||
|
<el-form-item label="商户类型"> |
||||
|
<el-tag v-if="detailInfoList.storeType" :type=" |
||||
|
detailInfoList.storeType == 'my_store' |
||||
|
? 'success' |
||||
|
: detailInfoList.storeType == 'directly_under' ? 'primary' : 'danger' |
||||
|
"> |
||||
|
{{ detailInfoList.storeType == 'my_store' |
||||
|
? '代理自己商户' |
||||
|
: detailInfoList.storeType == 'directly_under' ? '平台直属商户' : '代理下级商户' }} |
||||
|
</el-tag> |
||||
|
</el-form-item> |
||||
|
<el-form-item label="变动金额"> |
||||
|
{{ detailInfoList.tranAmt }} |
||||
|
</el-form-item> |
||||
|
<el-form-item label="交易hash"> |
||||
|
{{ detailInfoList.transactionId }} |
||||
|
</el-form-item> |
||||
|
<el-form-item label="用户id"> |
||||
|
{{ detailInfoList.userId }} |
||||
|
</el-form-item> |
||||
|
<!-- <el-form-item label="version"> |
||||
|
{{ detailInfoList.version }} |
||||
|
</el-form-item> --> |
||||
|
|
||||
|
</div> |
||||
|
<div> |
||||
|
<el-form-item label="修改时间"> |
||||
|
{{ detailInfoList.updateTime }} |
||||
|
</el-form-item> |
||||
|
<el-form-item label="创建时间"> |
||||
|
{{ detailInfoList.createTime }} |
||||
|
</el-form-item> |
||||
|
<el-form-item label="商品名称"> |
||||
|
{{ detailInfoList.productName }} |
||||
|
</el-form-item> |
||||
|
<el-form-item label="手续费"> |
||||
|
{{ detailInfoList.rateAmt }} |
||||
|
</el-form-item> |
||||
|
<el-form-item label="充值金额"> |
||||
|
{{ detailInfoList.realAmt }} |
||||
|
</el-form-item> |
||||
|
<el-form-item label="签名方式"> |
||||
|
{{ detailInfoList.signType }} |
||||
|
</el-form-item> |
||||
|
<el-form-item label="银行编号"> |
||||
|
{{ detailInfoList.bankCode }} |
||||
|
</el-form-item> |
||||
|
<el-form-item label="银行ID"> |
||||
|
{{ detailInfoList.bankId }} |
||||
|
</el-form-item> |
||||
|
<el-form-item label="银行卡类型"> |
||||
|
<el-tag v-if="detailInfoList.cardType" :type=" |
||||
|
detailInfoList.cardType == 'debit_card' ? 'success' : 'primary' |
||||
|
"> |
||||
|
{{ detailInfoList.cardType == 'debit_card' ? '借记卡' : '贷记卡' }} |
||||
|
</el-tag> |
||||
|
</el-form-item> |
||||
|
<el-form-item label="渠道类型"> |
||||
|
{{ detailInfoList.channelType }} |
||||
|
</el-form-item> |
||||
|
<!-- <el-form-item label="charset"> |
||||
|
{{ detailInfoList.charset }} |
||||
|
</el-form-item> --> |
||||
|
</div> |
||||
|
<div> |
||||
|
<el-form-item label="商品描述"> |
||||
|
{{ detailInfoList.productDesc }} |
||||
|
</el-form-item> |
||||
|
|
||||
|
<el-form-item label="费率"> |
||||
|
{{ NumberMul(detailInfoList.rate, 100) }}% |
||||
|
</el-form-item> |
||||
|
<el-form-item label="商户返回地址"> |
||||
|
{{ detailInfoList.backUrl }} |
||||
|
</el-form-item> |
||||
|
<el-form-item label="商户号"> |
||||
|
{{ detailInfoList.mchId }} |
||||
|
</el-form-item> |
||||
|
<el-form-item label="支付商户名"> |
||||
|
{{ detailInfoList.mchName }} |
||||
|
</el-form-item> |
||||
|
<el-form-item label="请求类型"> |
||||
|
{{ detailInfoList.mediaType }} |
||||
|
</el-form-item> |
||||
|
<el-form-item label="手机号码"> |
||||
|
{{ detailInfoList.mobile }} |
||||
|
</el-form-item> |
||||
|
<el-form-item label="用户名"> |
||||
|
{{ detailInfoList.name }} |
||||
|
</el-form-item> |
||||
|
<el-form-item label="二维码图片"> |
||||
|
<el-image style="width: 100px; height: 100px" v-if="detailInfoList.qrcodeImg" |
||||
|
:src="detailInfoList.qrcodeImg" @click="previewImage(detailInfoList.qrcodeImg)" |
||||
|
:preview-src-list="srcList"> |
||||
|
<div slot="placeholder"> |
||||
|
<div style="margin-top: 40px"> |
||||
|
加载中<i class="el-icon-loading" /> |
||||
|
</div> |
||||
|
</div> |
||||
|
</el-image> |
||||
|
|
||||
|
<el-image v-if="!detailInfoList.qrcodeImg" class="image-slot"> |
||||
|
<div slot="error"> |
||||
|
无 |
||||
|
</div> |
||||
|
</el-image> |
||||
|
|
||||
|
</el-form-item> |
||||
|
|
||||
|
<!-- <el-form-item label="二维码地址"> |
||||
|
{{ detailInfoList.qrcodeUrl }} |
||||
|
</el-form-item> --> |
||||
|
<el-form-item label="回调地址"> |
||||
|
{{ detailInfoList.notifyUrl }} |
||||
|
</el-form-item> |
||||
|
</div> |
||||
|
</div> |
||||
|
</el-form> |
||||
|
</el-dialog> |
||||
|
|
||||
|
|
||||
|
|
||||
|
|
||||
|
|
||||
|
|
||||
|
|
||||
|
</div> |
||||
|
</template> |
||||
|
|
||||
|
<script> |
||||
|
import { common_api, payOrder } from "@/api/form"; |
||||
|
|
||||
|
export default { |
||||
|
name: "PkAdWeiList", |
||||
|
dicts: ['pay_status'], |
||||
|
data() { |
||||
|
return { |
||||
|
// 详情 |
||||
|
detailInfoList: { |
||||
|
rate: '', |
||||
|
poundageRate: '', |
||||
|
agentRate: '', |
||||
|
}, |
||||
|
pickerOptions: { |
||||
|
shortcuts: [ |
||||
|
{ |
||||
|
text: '最近一天', |
||||
|
onClick(picker) { |
||||
|
const end = new Date(); |
||||
|
const start = new Date(); |
||||
|
start.setTime(start.getTime() - 3600 * 1000 * 24); |
||||
|
picker.$emit('pick', [start, end]); |
||||
|
} |
||||
|
}, |
||||
|
{ |
||||
|
text: '最近三天', |
||||
|
onClick(picker) { |
||||
|
const end = new Date(); |
||||
|
const start = new Date(); |
||||
|
start.setTime(start.getTime() - 3600 * 1000 * 24 * 3); |
||||
|
picker.$emit('pick', [start, end]); |
||||
|
} |
||||
|
}, |
||||
|
{ |
||||
|
text: '最近一周', |
||||
|
onClick(picker) { |
||||
|
const end = new Date(); |
||||
|
const start = new Date(); |
||||
|
start.setTime(start.getTime() - 3600 * 1000 * 24 * 7); |
||||
|
picker.$emit('pick', [start, end]); |
||||
|
} |
||||
|
}, |
||||
|
{ |
||||
|
text: '最近一个月', |
||||
|
onClick(picker) { |
||||
|
const end = new Date(); |
||||
|
const start = new Date(); |
||||
|
start.setTime(start.getTime() - 3600 * 1000 * 24 * 30); |
||||
|
picker.$emit('pick', [start, end]); |
||||
|
} |
||||
|
}, |
||||
|
{ |
||||
|
text: '最近三个月', |
||||
|
onClick(picker) { |
||||
|
const end = new Date(); |
||||
|
const start = new Date(); |
||||
|
start.setTime(start.getTime() - 3600 * 1000 * 24 * 30 * 3); |
||||
|
picker.$emit('pick', [start, end]); |
||||
|
} |
||||
|
}, |
||||
|
{ |
||||
|
text: '最近半年', |
||||
|
onClick(picker) { |
||||
|
const end = new Date(); |
||||
|
const start = new Date(); |
||||
|
start.setTime(start.getTime() - 3600 * 1000 * 24 * 30 * 6); |
||||
|
picker.$emit('pick', [start, end]); |
||||
|
} |
||||
|
}, |
||||
|
{ |
||||
|
text: '最近一年', |
||||
|
onClick(picker) { |
||||
|
const end = new Date(); |
||||
|
const start = new Date(); |
||||
|
start.setTime(start.getTime() - 3600 * 1000 * 24 * 30 * 12); |
||||
|
picker.$emit('pick', [start, end]); |
||||
|
} |
||||
|
}, |
||||
|
{ |
||||
|
text: '最近两年', |
||||
|
onClick(picker) { |
||||
|
const end = new Date(); |
||||
|
const start = new Date(); |
||||
|
start.setTime(start.getTime() - 3600 * 1000 * 24 * 30 * 24); |
||||
|
picker.$emit('pick', [start, end]); |
||||
|
} |
||||
|
}, |
||||
|
{ |
||||
|
text: '最近三年', |
||||
|
onClick(picker) { |
||||
|
const end = new Date(); |
||||
|
const start = new Date(); |
||||
|
start.setTime(start.getTime() - 3600 * 1000 * 24 * 30 * 36); |
||||
|
picker.$emit('pick', [start, end]); |
||||
|
} |
||||
|
}, |
||||
|
] |
||||
|
}, |
||||
|
userLevType: [ |
||||
|
|
||||
|
], |
||||
|
sortLevType: [], |
||||
|
|
||||
|
settleStatusCon: [ |
||||
|
{ |
||||
|
label: '已结算', |
||||
|
value: 'yes', |
||||
|
}, |
||||
|
{ |
||||
|
label: '未结算', |
||||
|
value: 'no', |
||||
|
}, { |
||||
|
label: '部分结算', |
||||
|
value: 'part', |
||||
|
}, |
||||
|
], |
||||
|
// 非单个禁用 |
||||
|
single: true, |
||||
|
// 非多个禁用 |
||||
|
multiple: true, |
||||
|
dateRange: [], |
||||
|
// 新增广告图片地址 |
||||
|
imageUrl: "", |
||||
|
// 遮罩层 |
||||
|
loading: true, |
||||
|
// 导出遮罩层 |
||||
|
exportLoading: false, |
||||
|
// 选中数组 |
||||
|
ids: [], |
||||
|
// 非单个禁用 |
||||
|
single: true, |
||||
|
// 非多个禁用 |
||||
|
multiple: true, |
||||
|
// 显示搜索条件 |
||||
|
showSearch: true, |
||||
|
// 总条数 |
||||
|
total: 0, |
||||
|
// 广告表格数据 |
||||
|
infoList: [], |
||||
|
// 弹出层标题 |
||||
|
title: "", |
||||
|
// 是否显示弹出层 |
||||
|
open: false, |
||||
|
// 查询参数 |
||||
|
queryParams: { |
||||
|
pageNum: 1, |
||||
|
pageSize: 20, |
||||
|
userId: null, |
||||
|
storeId: null, |
||||
|
storeNo: null, |
||||
|
outTradeNo: null, |
||||
|
orderNo: null, |
||||
|
transactionId: null, |
||||
|
mchId: null, |
||||
|
mchName: null, |
||||
|
orderStatus: null, |
||||
|
storeName: null, |
||||
|
settleStatus: null, |
||||
|
payType: null, |
||||
|
channelType: null, |
||||
|
}, |
||||
|
|
||||
|
// 表单参数 |
||||
|
form: {}, |
||||
|
// 表单校验 |
||||
|
rules: { |
||||
|
googleCode: [ |
||||
|
{ required: true, message: "请输入谷歌动态验证码", trigger: "blur" }, |
||||
|
], |
||||
|
}, |
||||
|
detailData: {}, |
||||
|
isShowDetail: false, |
||||
|
// 详情 |
||||
|
isShowDetailMy: false, |
||||
|
detailTitle: '', |
||||
|
// 预览 |
||||
|
srcList: ['https://fuss10.elemecdn.com/8/27/f01c15bb73e1ef3793e64e6b7bbccjpeg.jpeg'], |
||||
|
}; |
||||
|
}, |
||||
|
created() { |
||||
|
this.getList(); |
||||
|
this.init(); |
||||
|
}, |
||||
|
methods: { |
||||
|
// 预览图片 |
||||
|
previewImage(abUrl) { |
||||
|
this.srcList[0] = abUrl; |
||||
|
}, |
||||
|
// 查看详情 |
||||
|
handleViewMy(row) { |
||||
|
this.reset(); |
||||
|
this.detailInfoList = row; |
||||
|
this.isShowDetailMy = true; |
||||
|
this.detailTitle = "订单流水详情"; |
||||
|
}, |
||||
|
/** 手工处理 */ |
||||
|
handleOrder(row) { |
||||
|
this.reset() |
||||
|
this.detailData = row |
||||
|
this.isShowDetail = true |
||||
|
}, |
||||
|
// 通知 |
||||
|
handleSay() { |
||||
|
this.loading = true; |
||||
|
payOrder.reissueNotice(this.ids[0]).then((response) => { |
||||
|
if (response.code == 200) { |
||||
|
this.$message.success('补发成功') |
||||
|
this.loading = false; |
||||
|
} |
||||
|
}).catch(() => { |
||||
|
this.loading = false; |
||||
|
}); |
||||
|
}, |
||||
|
init() { |
||||
|
common_api.payChannelAll().then((response) => { |
||||
|
this.userLevType = response.data |
||||
|
}); |
||||
|
common_api.payTypeAll().then((response) => { |
||||
|
this.sortLevType = response.data |
||||
|
}); |
||||
|
}, |
||||
|
/** 导出按钮操作 */ |
||||
|
handleExport() { |
||||
|
const queryParams = this.queryParams; |
||||
|
this.$confirm("是否确认导出订单流水?", "警告", { |
||||
|
confirmButtonText: "确定", |
||||
|
cancelButtonText: "取消", |
||||
|
type: "warning", |
||||
|
}) |
||||
|
.then(function () { |
||||
|
return payOrder.exportCoin(queryParams); |
||||
|
}) |
||||
|
.then((response) => { |
||||
|
this.download(response.msg); |
||||
|
this.queryParams.pageNum = 1; |
||||
|
this.queryParams.pageSize = 20; |
||||
|
}); |
||||
|
}, |
||||
|
// 多选框选中数据 |
||||
|
handleSelectionChange(selection) { |
||||
|
this.ids = selection.map(item => item.keyId) |
||||
|
this.single = selection.length != 1 |
||||
|
this.multiple = !selection.length |
||||
|
}, |
||||
|
getList() { |
||||
|
this.loading = true; |
||||
|
payOrder |
||||
|
.urechargeRecord(this.addSESDateRange(this.queryParams, this.dateRange)) |
||||
|
.then((response) => { |
||||
|
this.infoList = response.rows; |
||||
|
this.total = Number(response.total); |
||||
|
this.loading = false; |
||||
|
}); |
||||
|
}, |
||||
|
// 取消按钮 |
||||
|
cancel() { |
||||
|
this.open = false; |
||||
|
this.isShowDetail = false |
||||
|
this.reset(); |
||||
|
}, |
||||
|
// 表单重置 |
||||
|
reset() { |
||||
|
this.form = {}; |
||||
|
this.resetForm("form"); |
||||
|
}, |
||||
|
/** 搜索按钮操作 */ |
||||
|
handleQuery() { |
||||
|
this.queryParams.pageNum = 1; |
||||
|
this.getList(); |
||||
|
}, |
||||
|
/** 重置按钮操作 */ |
||||
|
resetQuery() { |
||||
|
this.dateRange = []; |
||||
|
this.resetForm("queryForm"); |
||||
|
this.handleQuery(); |
||||
|
}, |
||||
|
/** 提交按钮 */ |
||||
|
submitForm(type) { |
||||
|
if (!this.form.googleCode) { |
||||
|
this.$message.error('请输入谷歌动态验证码') |
||||
|
return; |
||||
|
} |
||||
|
if (type == 'pay_success' && !this.form.hash) { |
||||
|
this.$message.error('请输入hash') |
||||
|
return; |
||||
|
} |
||||
|
if (type == 'pay_success' && !this.form.fromAddress) { |
||||
|
this.$message.error('请输入出账地址') |
||||
|
return; |
||||
|
} |
||||
|
this.$refs["form"].validate((valid) => { |
||||
|
if (valid) { |
||||
|
const loading = this.$loading({ |
||||
|
lock: true, |
||||
|
text: `正在手动处理`, |
||||
|
spinner: "el-icon-loading", |
||||
|
background: "rgba(0, 0, 0, 0.7)", |
||||
|
}); |
||||
|
let form = { |
||||
|
id: this.detailData.keyId, |
||||
|
status: type, |
||||
|
googleCode: this.form.googleCode, |
||||
|
hash: this.form.hash, |
||||
|
fromAddress: this.form.fromAddress |
||||
|
} |
||||
|
payOrder.payHandleCoin(form).then((response) => { |
||||
|
loading.close(); |
||||
|
this.isShowDetail = false; |
||||
|
this.msgSuccess("处理成功"); |
||||
|
this.getList(); |
||||
|
}).catch(() => { |
||||
|
loading.close(); |
||||
|
this.isShowDetail = false; |
||||
|
}) |
||||
|
|
||||
|
} |
||||
|
}); |
||||
|
}, |
||||
|
|
||||
|
}, |
||||
|
}; |
||||
|
</script> |
||||
|
<style scoped> |
||||
|
::v-deep .el-dialog:not(.is-fullscreen) { |
||||
|
margin-top: 10vh !important; |
||||
|
} |
||||
|
</style> |
@ -0,0 +1,305 @@ |
|||||
|
<template> |
||||
|
<div class="app-container"> |
||||
|
<div class="flexBet searchTop"> |
||||
|
<div class="title flex m20"> |
||||
|
<div class="bar"></div> |
||||
|
<div class="text">{{ $route.meta.title }}</div> |
||||
|
</div> |
||||
|
</div> |
||||
|
<!-- v-loading="loading" --> |
||||
|
<div class="bg"> |
||||
|
<div class="bottom form controls"> |
||||
|
<el-form ref="form" :model="form" :rules="rules" label-width="140px"> |
||||
|
<el-form-item label="版本号" prop="version"> |
||||
|
<el-input v-model="form.version" placeholder="" style="width: 315px;border-color: #E6F1FF;" /> |
||||
|
</el-form-item> |
||||
|
<el-form-item label="字符集" prop="charset"> |
||||
|
<el-input v-model="form.charset" placeholder="" style="width: 315px;border-color: #E6F1FF;" /> |
||||
|
</el-form-item> |
||||
|
<el-form-item label="商户号" prop="spid"> |
||||
|
<el-input v-model="form.spid" placeholder="" style="width: 315px;border-color: #E6F1FF;" |
||||
|
v-hasPermi="['pay:test:query']" /> |
||||
|
</el-form-item> |
||||
|
<el-form-item label="签名key" prop="payKey"> |
||||
|
<el-input v-model="form.payKey" placeholder="" style="width: 315px;border-color: #E6F1FF;" |
||||
|
v-hasPermi="['pay:test:query']" /> |
||||
|
</el-form-item> |
||||
|
<el-form-item label="交易金额" prop="tranAmt"> |
||||
|
<el-input v-model="form.tranAmt" placeholder="" style="width: 315px;border-color: #E6F1FF;" /> |
||||
|
</el-form-item> |
||||
|
|
||||
|
<el-form-item label="支付类型" prop="payType"> |
||||
|
<el-select v-model="form.payType" placeholder="请选择支付类型" clearable size="medium"> |
||||
|
<el-option v-for="(item, i) in sortLevType" :key="i" :label="item.typeName" |
||||
|
:value="item.payType" :disabled="true"></el-option> |
||||
|
</el-select> |
||||
|
</el-form-item> |
||||
|
|
||||
|
|
||||
|
<el-form-item label="回调地址" prop="notifyUrl"> |
||||
|
<el-input v-model="form.notifyUrl" placeholder="" style="width: 315px;border-color: #E6F1FF;" /> |
||||
|
</el-form-item> |
||||
|
|
||||
|
<el-form-item label="请求类型" prop="mediaType"> |
||||
|
<el-select v-model="form.mediaType" placeholder="请选择请求类型" clearable size="medium"> |
||||
|
<el-option v-for="(item, i) in list" :key="i" :label="item.label" |
||||
|
:value="item.value"></el-option> |
||||
|
</el-select> |
||||
|
</el-form-item> |
||||
|
|
||||
|
<el-form-item label="签名类型" prop="signType"> |
||||
|
<el-input v-model="form.signType" placeholder="" style="width: 315px;border-color: #E6F1FF;" /> |
||||
|
</el-form-item> |
||||
|
|
||||
|
<el-form-item label="签名" prop="req_data"> |
||||
|
<el-input v-model="form.req_data" type="textarea" :disabled="true" placeholder="" |
||||
|
style="width: 315px;border-color: #E6F1FF;" /> |
||||
|
<el-button type="primary" plain icon="" size="medium" style="color:#fff;margin-left:10px" |
||||
|
@click="handleSay" v-hasPermi="['pay:test:coinPaySign']">获取签名</el-button> |
||||
|
</el-form-item> |
||||
|
<el-form-item> |
||||
|
<el-button type="primary" plain icon="" size="medium" style="color:#fff;margin-left:10px" |
||||
|
@click="payCode">支付</el-button> |
||||
|
</el-form-item> |
||||
|
<el-form-item label="支付响应" prop="resp"> |
||||
|
<el-input type="textarea" v-model="resMsg" placeholder="" |
||||
|
style="width:80%;border-color: #E6F1FF;" /> |
||||
|
</el-form-item> |
||||
|
<!-- <el-form-item> |
||||
|
<el-button type="primary" plain icon="" :disabled="!this.form.resp" size="medium" |
||||
|
style="color:#fff;margin-left:10px" @click="getCode">查看二维码</el-button> |
||||
|
</el-form-item> --> |
||||
|
</el-form> |
||||
|
|
||||
|
</div> |
||||
|
</div> |
||||
|
|
||||
|
|
||||
|
<el-dialog v-dialogDrag title="二维码" :visible.sync="open" width="400px" append-to-body :close-on-click-modal="false"> |
||||
|
<div id="qrCode" ref="qrCodeDiv" class="flex" style="justify-content: center;" v-if="showCode"></div> |
||||
|
<div slot="footer" class="dialog-footer"> |
||||
|
<el-button type="primary" @click="cancel">确 定</el-button> |
||||
|
</div> |
||||
|
</el-dialog> |
||||
|
|
||||
|
</div> |
||||
|
</template> |
||||
|
|
||||
|
<script> |
||||
|
import { |
||||
|
payTest, |
||||
|
common_api |
||||
|
} from "@/api/form"; |
||||
|
import QRCode from 'qrcodejs2'; |
||||
|
export default { |
||||
|
name: "add", |
||||
|
|
||||
|
data() { |
||||
|
return { |
||||
|
// 返回信息 |
||||
|
resMsg: null, |
||||
|
|
||||
|
showCode: false, |
||||
|
rules: { |
||||
|
version: [ |
||||
|
{ required: true, message: "请输入版本号", trigger: "blur" }, |
||||
|
], |
||||
|
charset: [ |
||||
|
{ required: true, message: "请输入字符集", trigger: "blur" }, |
||||
|
], |
||||
|
spid: [ |
||||
|
{ required: true, message: "请输入商户号", trigger: "blur" }, |
||||
|
], |
||||
|
tranAmt: [ |
||||
|
{ required: true, message: "请输入交易金额", trigger: "blur" }, |
||||
|
], |
||||
|
payType: [ |
||||
|
{ required: true, message: "请选择支付类型", trigger: "blur" }, |
||||
|
], |
||||
|
productName: [ |
||||
|
{ required: true, message: "请输入商品名称", trigger: "blur" }, |
||||
|
], |
||||
|
productDesc: [ |
||||
|
{ required: true, message: "请输入商品描述", trigger: "blur" }, |
||||
|
], |
||||
|
attach: [ |
||||
|
{ required: true, message: "请输入保留字段", trigger: "blur" }, |
||||
|
], |
||||
|
notifyUrl: [ |
||||
|
{ required: true, message: "请输入回调地址", trigger: "blur" }, |
||||
|
], |
||||
|
mediaType: [ |
||||
|
{ required: true, message: "请选择请求类型", trigger: "blur" }, |
||||
|
], |
||||
|
}, |
||||
|
sortLevType: [], |
||||
|
|
||||
|
form: { |
||||
|
resp: null, |
||||
|
signType: 'MD5', |
||||
|
backUrl: '/admin/paytest/native', |
||||
|
notifyUrl: 'http://localhost:8082/pay/nativePayNotify2Store', |
||||
|
attach: 'test', |
||||
|
version: '2.0', |
||||
|
charset: 'UTF-8', |
||||
|
spid: null, |
||||
|
payKey: null, |
||||
|
tranAmt: 1, |
||||
|
payType: null, |
||||
|
productName: '商品', |
||||
|
productDesc: '商品描述', |
||||
|
req_data: null, |
||||
|
mediaType: null, |
||||
|
}, |
||||
|
list: [ |
||||
|
{ |
||||
|
label: 'JSON', |
||||
|
value: 'json', |
||||
|
}, |
||||
|
{ |
||||
|
label: 'XML', |
||||
|
value: 'xml', |
||||
|
} |
||||
|
], |
||||
|
radio: '', |
||||
|
// 遮罩层 |
||||
|
loading: false, |
||||
|
dialogVisible: false, |
||||
|
// 是否显示弹出层 |
||||
|
open: false, |
||||
|
|
||||
|
val: {}, |
||||
|
infoList: {}, |
||||
|
// 二维码对象 |
||||
|
qrcode: null, |
||||
|
}; |
||||
|
}, |
||||
|
|
||||
|
created() { |
||||
|
this.getList() |
||||
|
this.init(); |
||||
|
}, |
||||
|
methods: { |
||||
|
// 表单重置 |
||||
|
reset() { |
||||
|
this.form = {}; |
||||
|
this.resetForm("form"); |
||||
|
}, |
||||
|
cancel() { |
||||
|
this.open = false; |
||||
|
this.showCode = false; |
||||
|
}, |
||||
|
// 查看二维码 |
||||
|
getCode() { |
||||
|
this.open = true |
||||
|
this.showCode = true; |
||||
|
this.$nextTick(function () { |
||||
|
new QRCode(this.$refs.qrCodeDiv, { |
||||
|
text: this.form.resp, |
||||
|
width: 200, |
||||
|
height: 200, |
||||
|
colorDark: "#333333", //二维码颜色 |
||||
|
colorLight: "#ffffff", //二维码背景色 |
||||
|
correctLevel: QRCode.CorrectLevel.L//容错率,L/M/H |
||||
|
}) |
||||
|
|
||||
|
}) |
||||
|
|
||||
|
}, |
||||
|
// 代扣支付 |
||||
|
payCode() { |
||||
|
if (!this.form.req_data) { |
||||
|
this.$message.error('请先获取签名'); |
||||
|
return; |
||||
|
} |
||||
|
let form = { |
||||
|
reqData: this.form.req_data, |
||||
|
mediaType: this.form.mediaType, |
||||
|
} |
||||
|
payTest |
||||
|
.coinPay(form) |
||||
|
.then((response) => { |
||||
|
this.resMsg = response.msg |
||||
|
let s = JSON.parse(response.msg) |
||||
|
this.form.resp = s.codeImgUrl |
||||
|
}); |
||||
|
}, |
||||
|
//代扣支付签名 |
||||
|
handleSay() { |
||||
|
payTest |
||||
|
.coinPaySign(this.form) |
||||
|
.then((response) => { |
||||
|
this.form.req_data = response.msg |
||||
|
}); |
||||
|
}, |
||||
|
init() { |
||||
|
common_api.payTypeAll().then((response) => { |
||||
|
this.sortLevType = response.data |
||||
|
this.form.payType = this.sortLevType[0].payType |
||||
|
this.form.mediaType = 'json' |
||||
|
}); |
||||
|
}, |
||||
|
back() { |
||||
|
this.$router.go(-1) |
||||
|
}, |
||||
|
// 获取商户配置 |
||||
|
getList() { |
||||
|
this.loading = true; |
||||
|
payTest |
||||
|
.paytest() |
||||
|
.then((response) => { |
||||
|
// response.data.storeNo response.data.storeKey C1553225808762 127c01e48c11412aadb453cef8fac426 |
||||
|
this.form.spid = response.data.storeNo |
||||
|
this.form.payKey = response.data.storeKey |
||||
|
this.loading = false |
||||
|
}); |
||||
|
}, |
||||
|
/** 提交按钮 */ |
||||
|
// savePayConfig() { |
||||
|
// if (!this.infoList.googleCode) { |
||||
|
// this.$message.error("请填写谷歌动态验证码"); |
||||
|
// return; |
||||
|
// } |
||||
|
// this.loading = true |
||||
|
// this.infoList.storeId = this.val; |
||||
|
// this.infoList.id = this.infoList.id < 1 ? null : this.infoList.id; |
||||
|
// payAgentUser |
||||
|
// .updateStoreConfig(this.infoList) |
||||
|
// .then((response) => { |
||||
|
|
||||
|
// this.msgSuccess("编辑成功"); |
||||
|
// this.getList(this.val) |
||||
|
// this.loading = false; |
||||
|
// }) |
||||
|
// .catch((err) => { |
||||
|
// this.loading = false; |
||||
|
// }); |
||||
|
// }, |
||||
|
|
||||
|
}, |
||||
|
}; |
||||
|
</script> |
||||
|
|
||||
|
<style scoped lang="scss"> |
||||
|
.dialog-footer { |
||||
|
margin-left: 130px; |
||||
|
} |
||||
|
|
||||
|
.bg { |
||||
|
padding: 0 0px 30px 0px !important; |
||||
|
} |
||||
|
|
||||
|
.bottom { |
||||
|
padding: 30px |
||||
|
} |
||||
|
|
||||
|
.top { |
||||
|
background: #F2F2F2; |
||||
|
color: #006EFF; |
||||
|
font-size: 18px; |
||||
|
padding: 20px; |
||||
|
} |
||||
|
</style> |
||||
|
|
||||
|
<style></style> |
||||
|
|
@ -0,0 +1,280 @@ |
|||||
|
<template> |
||||
|
<div class="app-container"> |
||||
|
<div class="flexBet searchTop"> |
||||
|
<div class="title flex m20"> |
||||
|
<div class="bar"></div> |
||||
|
<div class="text">{{ $route.meta.title }}</div> |
||||
|
</div> |
||||
|
</div> |
||||
|
<!-- v-loading="loading" --> |
||||
|
<div class="bg"> |
||||
|
<div class="bottom form controls"> |
||||
|
<el-form ref="form" :model="form" :rules="rules" label-width="140px"> |
||||
|
<el-form-item label="版本号" prop="version"> |
||||
|
<el-input v-model="form.version" placeholder="" style="width: 315px;border-color: #E6F1FF;" /> |
||||
|
</el-form-item> |
||||
|
<el-form-item label="字符集" prop="charset"> |
||||
|
<el-input v-model="form.charset" placeholder="" style="width: 315px;border-color: #E6F1FF;" /> |
||||
|
</el-form-item> |
||||
|
<el-form-item label="商户号" prop="spid"> |
||||
|
<el-input v-model="form.spid" placeholder="" style="width: 315px;border-color: #E6F1FF;" v-hasPermi="['pay:test:query']" /> |
||||
|
</el-form-item> |
||||
|
<el-form-item label="签名key" prop="payKey"> |
||||
|
<el-input v-model="form.payKey" placeholder="" style="width: 315px;border-color: #E6F1FF;" v-hasPermi="['pay:test:query']" /> |
||||
|
</el-form-item> |
||||
|
<el-form-item label="交易金额" prop="tranAmt"> |
||||
|
<el-input v-model="form.tranAmt" placeholder="" style="width: 315px;border-color: #E6F1FF;" /> |
||||
|
</el-form-item> |
||||
|
|
||||
|
|
||||
|
<!-- <el-form-item label="收款人姓名" prop="acctName"> |
||||
|
<el-input v-model="form.acctName" placeholder="" style="width: 315px;border-color: #E6F1FF;" /> |
||||
|
</el-form-item> |
||||
|
|
||||
|
<el-form-item label="收款人账号" prop="acctId"> |
||||
|
<el-input v-model="form.acctId" placeholder="" style="width: 315px;border-color: #E6F1FF;" /> |
||||
|
</el-form-item> |
||||
|
|
||||
|
<el-form-item label="手机号码" prop="mobile"> |
||||
|
<el-input v-model="form.mobile" placeholder="" style="width: 315px;border-color: #E6F1FF;" /> |
||||
|
</el-form-item> |
||||
|
|
||||
|
<el-form-item label="支行联行号" prop="bankSettleNo"> |
||||
|
<el-input v-model="form.bankSettleNo" placeholder="" style="width: 315px;border-color: #E6F1FF;" /> |
||||
|
</el-form-item> |
||||
|
<el-form-item label="银行名称" prop="bankSettleNo"> |
||||
|
<el-input v-model="form.bankName" placeholder="" style="width: 315px;border-color: #E6F1FF;" /> |
||||
|
</el-form-item> |
||||
|
<el-form-item label="出款账户编号" prop="accountNo"> |
||||
|
<el-input v-model="form.accountNo" placeholder="" style="width: 315px;border-color: #E6F1FF;" /> |
||||
|
</el-form-item> |
||||
|
<el-form-item label="保留字段" prop="attach"> |
||||
|
<el-input v-model="form.attach" placeholder="" style="width: 315px;border-color: #E6F1FF;" /> |
||||
|
</el-form-item> --> |
||||
|
|
||||
|
<el-form-item label="address" prop="address"> |
||||
|
<el-input v-model="form.address" placeholder="" style="width: 315px;border-color: #E6F1FF;" /> |
||||
|
</el-form-item> |
||||
|
|
||||
|
<el-form-item label="回调地址" prop="notifyUrl"> |
||||
|
<el-input v-model="form.notifyUrl" placeholder="" style="width: 315px;border-color: #E6F1FF;" /> |
||||
|
</el-form-item> |
||||
|
<el-form-item label="签名类型" prop="signType"> |
||||
|
<el-input v-model="form.signType" placeholder="" style="width: 315px;border-color: #E6F1FF;" /> |
||||
|
</el-form-item> |
||||
|
<el-form-item label="请求类型" prop="mediaType"> |
||||
|
<el-select v-model="form.mediaType" placeholder="请选择请求类型" clearable size="medium"> |
||||
|
<el-option v-for="(item, i) in list" :key="i" :label="item.label" |
||||
|
:value="item.value"></el-option> |
||||
|
</el-select> |
||||
|
</el-form-item> |
||||
|
<el-form-item label="签名" prop="req_data"> |
||||
|
<el-input v-model="form.req_data" type="textarea" :disabled="true" placeholder="" |
||||
|
style="width: 315px;border-color: #E6F1FF;" /> |
||||
|
<el-button type="primary" plain icon="" size="medium" style="color:#fff;margin-left:10px" |
||||
|
@click="handleSay" v-hasPermi="['pay:test:paymentSign']">获取签名</el-button> |
||||
|
</el-form-item> |
||||
|
<el-form-item> |
||||
|
<el-button type="primary" plain icon="" size="medium" style="color:#fff;margin-left:10px" |
||||
|
@click="payCode">支付</el-button> |
||||
|
</el-form-item> |
||||
|
<el-form-item label="代付响应" prop="resp"> |
||||
|
<el-input type="textarea" v-model="form.resp" placeholder="" |
||||
|
style="width:80%;border-color: #E6F1FF;" /> |
||||
|
</el-form-item> |
||||
|
|
||||
|
</el-form> |
||||
|
|
||||
|
</div> |
||||
|
</div> |
||||
|
|
||||
|
</div> |
||||
|
</template> |
||||
|
|
||||
|
<script> |
||||
|
import { |
||||
|
payTest, |
||||
|
common_api |
||||
|
} from "@/api/form"; |
||||
|
export default { |
||||
|
name: "add", |
||||
|
|
||||
|
data() { |
||||
|
var checkPhone = (rule, value, callback) => { |
||||
|
let reg = /^1[345789]\d{9}$/ |
||||
|
if (!reg.test(value)) { |
||||
|
callback(new Error('请输入11位手机号')) |
||||
|
} else { |
||||
|
callback() |
||||
|
} |
||||
|
} |
||||
|
return { |
||||
|
sortLevType: [], |
||||
|
form: { |
||||
|
resp: null, |
||||
|
signType: 'MD5', |
||||
|
backUrl: '/admin/paytest/native', |
||||
|
notifyUrl: 'http://localhost:8082/pay/nativePayNotify2Store', |
||||
|
attach: '', |
||||
|
version: '2.0', |
||||
|
charset: 'UTF-8', |
||||
|
spid: null, |
||||
|
payKey: null, |
||||
|
tranAmt: 1, |
||||
|
productName: '商品', |
||||
|
productDesc: '商品描述', |
||||
|
req_data: null, |
||||
|
mediaType: null, |
||||
|
}, |
||||
|
list: [ |
||||
|
{ |
||||
|
label: 'JSON', |
||||
|
value: 'json', |
||||
|
}, |
||||
|
{ |
||||
|
label: 'XML', |
||||
|
value: 'xml', |
||||
|
} |
||||
|
], |
||||
|
radio: '', |
||||
|
// 遮罩层 |
||||
|
loading: false, |
||||
|
dialogVisible: false, |
||||
|
// 是否显示弹出层 |
||||
|
open: false, |
||||
|
rules: { |
||||
|
address: [ |
||||
|
{ required: true, message: "请输入address", trigger: "blur" }, |
||||
|
], |
||||
|
version: [ |
||||
|
{ required: true, message: "请输入版本号", trigger: "blur" }, |
||||
|
], |
||||
|
charset: [ |
||||
|
{ required: true, message: "请输入字符集", trigger: "blur" }, |
||||
|
], |
||||
|
spid: [ |
||||
|
{ required: true, message: "请输入商户号", trigger: "blur" }, |
||||
|
], |
||||
|
tranAmt: [ |
||||
|
{ required: true, message: "请输入交易金额", trigger: "blur" }, |
||||
|
], |
||||
|
acctId: [ |
||||
|
{ required: true, message: "请输入收款人账号", trigger: "blur" }, |
||||
|
], |
||||
|
|
||||
|
accountNo: [ |
||||
|
{ required: true, message: "请输入出款账户编号", trigger: "blur" }, |
||||
|
], |
||||
|
|
||||
|
notifyUrl: [ |
||||
|
{ required: true, message: "请输入回调地址", trigger: "blur" }, |
||||
|
], |
||||
|
mediaType: [ |
||||
|
{ required: true, message: "请选择请求类型", trigger: "blur" }, |
||||
|
], |
||||
|
}, |
||||
|
val: {}, |
||||
|
infoList: {}, |
||||
|
}; |
||||
|
}, |
||||
|
|
||||
|
created() { |
||||
|
this.getList() |
||||
|
this.init(); |
||||
|
}, |
||||
|
methods: { |
||||
|
// 代付支付 |
||||
|
payCode() { |
||||
|
if (!this.form.req_data) { |
||||
|
this.$message.error('请先获取签名'); |
||||
|
return; |
||||
|
} |
||||
|
let form = { |
||||
|
reqData: this.form.req_data, |
||||
|
mediaType: this.form.mediaType, |
||||
|
} |
||||
|
payTest |
||||
|
.coinpayment(form) |
||||
|
.then((response) => { |
||||
|
this.form.resp = response.msg |
||||
|
}); |
||||
|
}, |
||||
|
//代付支付签名 |
||||
|
handleSay() { |
||||
|
if(!this.form.address){ |
||||
|
this.$message.error('请输入address') |
||||
|
return; |
||||
|
} |
||||
|
payTest |
||||
|
.coinPaymentSign(this.form) |
||||
|
.then((response) => { |
||||
|
this.form.req_data = response |
||||
|
}); |
||||
|
}, |
||||
|
init() { |
||||
|
this.form.mediaType = 'json' |
||||
|
}, |
||||
|
back() { |
||||
|
this.$router.go(-1) |
||||
|
}, |
||||
|
// 获取商户配置 |
||||
|
getList() { |
||||
|
this.loading = true; |
||||
|
payTest |
||||
|
.paytest() |
||||
|
.then((response) => { |
||||
|
// response.data.storeNo response.data.storeKey C1553225808762 127c01e48c11412aadb453cef8fac426 |
||||
|
this.form.spid = response.data.storeNo |
||||
|
this.form.payKey = response.data.storeKey |
||||
|
this.loading = false |
||||
|
}); |
||||
|
}, |
||||
|
/** 提交按钮 */ |
||||
|
savePayConfig() { |
||||
|
if (!this.infoList.googleCode) { |
||||
|
this.$message.error("请填写谷歌动态验证码"); |
||||
|
return; |
||||
|
} |
||||
|
this.loading = true |
||||
|
this.infoList.storeId = this.val; |
||||
|
this.infoList.id = this.infoList.id < 1 ? null : this.infoList.id; |
||||
|
payAgentUser |
||||
|
.updateStoreConfig(this.infoList) |
||||
|
.then((response) => { |
||||
|
|
||||
|
this.msgSuccess("编辑成功"); |
||||
|
this.getList(this.val) |
||||
|
this.loading = false; |
||||
|
}) |
||||
|
.catch((err) => { |
||||
|
this.loading = false; |
||||
|
}); |
||||
|
}, |
||||
|
|
||||
|
}, |
||||
|
}; |
||||
|
</script> |
||||
|
|
||||
|
<style scoped lang="scss"> |
||||
|
.dialog-footer { |
||||
|
margin-left: 130px; |
||||
|
} |
||||
|
|
||||
|
.bg { |
||||
|
padding: 0 0px 30px 0px !important; |
||||
|
} |
||||
|
|
||||
|
.bottom { |
||||
|
padding: 30px |
||||
|
} |
||||
|
|
||||
|
.top { |
||||
|
background: #F2F2F2; |
||||
|
color: #006EFF; |
||||
|
font-size: 18px; |
||||
|
padding: 20px; |
||||
|
} |
||||
|
</style> |
||||
|
|
||||
|
<style></style> |
||||
|
|
@ -0,0 +1,311 @@ |
|||||
|
<template> |
||||
|
<div class="app-container"> |
||||
|
|
||||
|
<div class="flexBet searchTop"> |
||||
|
<div class="title flex m20"> |
||||
|
<div class="bar"></div> |
||||
|
<div class="text">{{ $route.meta.title }}</div> |
||||
|
</div> |
||||
|
<el-row :gutter="10" class="mb8"> |
||||
|
<!-- <el-col :span="1.5"> |
||||
|
<el-button |
||||
|
type="primary" |
||||
|
plain |
||||
|
icon="el-icon-plus" |
||||
|
size="medium" |
||||
|
@click="handleAdd" |
||||
|
v-hasPermi="['tron:tronUsdtSync:add']" |
||||
|
>新增</el-button> |
||||
|
</el-col> |
||||
|
<el-col :span="1.5"> |
||||
|
<el-button |
||||
|
type="success" |
||||
|
plain |
||||
|
icon="el-icon-edit" |
||||
|
size="medium" |
||||
|
:disabled="single" |
||||
|
@click="handleUpdate" |
||||
|
v-hasPermi="['tron:tronUsdtSync:edit']" |
||||
|
>修改</el-button> |
||||
|
</el-col> |
||||
|
<el-col :span="1.5"> |
||||
|
<el-button |
||||
|
type="danger" |
||||
|
plain |
||||
|
icon="el-icon-delete" |
||||
|
size="medium" |
||||
|
:disabled="multiple" |
||||
|
@click="handleDelete" |
||||
|
v-hasPermi="['tron:tronUsdtSync:remove']" |
||||
|
>删除</el-button> |
||||
|
</el-col> --> |
||||
|
<el-col :span="1.5"> |
||||
|
<el-button type="warning" plain icon="el-icon-download" size="medium" @click="handleExport" |
||||
|
v-hasPermi="['tron:tronUsdtSync:export']">导出</el-button> |
||||
|
</el-col> |
||||
|
<right-toolbar :showSearch.sync="showSearch" @queryTable="getList"></right-toolbar> |
||||
|
</el-row> |
||||
|
</div> |
||||
|
<div class="bg"> |
||||
|
<el-form :model="queryParams" ref="queryForm" :inline="true" v-show="showSearch" label-width="108px" |
||||
|
class="flex form" style="padding:0 20px"> |
||||
|
<!-- <el-form-item label="数量" prop="number"> |
||||
|
<el-input |
||||
|
v-model="queryParams.number" |
||||
|
placeholder="请输入数量" |
||||
|
clearable |
||||
|
size="medium" |
||||
|
@keyup.enter.native="handleQuery" |
||||
|
/> |
||||
|
</el-form-item> --> |
||||
|
<el-form-item label="对应业务单号" prop="orderNo"> |
||||
|
<el-input v-model="queryParams.orderNo" placeholder="请输入对应业务单号" clearable size="medium" |
||||
|
@keyup.enter.native="handleQuery" /> |
||||
|
</el-form-item> |
||||
|
|
||||
|
<el-form-item label="发送地址" prop="fromAddress"> |
||||
|
<el-input v-model="queryParams.fromAddress" placeholder="请输入发送地址" clearable size="medium" |
||||
|
@keyup.enter.native="handleQuery" /> |
||||
|
</el-form-item> |
||||
|
<el-form-item label="接收地址" prop="toAddress"> |
||||
|
<el-input v-model="queryParams.toAddress" placeholder="请输入接收地址" clearable size="medium" |
||||
|
@keyup.enter.native="handleQuery" /> |
||||
|
</el-form-item> |
||||
|
|
||||
|
<el-form-item> |
||||
|
<el-button type="primary" icon="el-icon-search" size="medium" @click="handleQuery">搜索</el-button> |
||||
|
<el-button icon="el-icon-refresh" size="medium" @click="resetQuery">重置</el-button> |
||||
|
</el-form-item> |
||||
|
</el-form> |
||||
|
|
||||
|
|
||||
|
|
||||
|
<el-table v-loading="loading" :data="tronUsdtSyncList"> |
||||
|
<!-- <el-table-column type="selection" width="55" align="center" @selection-change="handleSelectionChange"/> --> |
||||
|
<el-table-column label="txid" align="center" prop="txid" /> |
||||
|
<el-table-column label="对应业务单号" align="center" prop="orderNo" /> |
||||
|
<el-table-column label="发送地址" align="center" prop="fromAddress" /> |
||||
|
<el-table-column label="接收地址" align="center" prop="toAddress" /> |
||||
|
<el-table-column label="数量" align="center" prop="number" /> |
||||
|
<el-table-column label="创建时间" align="center" prop="createTime" /> |
||||
|
<el-table-column label="更新时间" align="center" prop="updateTime" /> |
||||
|
|
||||
|
|
||||
|
<!-- <el-table-column label="操作" align="center" class-name="medium-padding fixed-width"> |
||||
|
<template slot-scope="scope"> |
||||
|
<el-button |
||||
|
size="medium" |
||||
|
type="text" |
||||
|
icon="el-icon-edit" |
||||
|
@click="handleUpdate(scope.row)" |
||||
|
v-hasPermi="['tron:tronUsdtSync:edit']" |
||||
|
>修改</el-button> |
||||
|
<el-button |
||||
|
size="medium" |
||||
|
type="text" |
||||
|
icon="el-icon-delete" |
||||
|
@click="handleDelete(scope.row)" |
||||
|
v-hasPermi="['tron:tronUsdtSync:remove']" |
||||
|
>删除</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> |
||||
|
|
||||
|
<!-- 添加或修改波场USDT同步对话框 --> |
||||
|
<el-dialog :title="title" :visible.sync="open" width="500px" append-to-body> |
||||
|
<el-form ref="form" :model="form" :rules="rules" label-width="80px"> |
||||
|
<el-form-item label="数量" prop="number"> |
||||
|
<el-input v-model="form.number" placeholder="请输入数量" /> |
||||
|
</el-form-item> |
||||
|
<el-form-item label="发送地址" prop="fromAddress"> |
||||
|
<el-input v-model="form.fromAddress" placeholder="请输入发送地址" /> |
||||
|
</el-form-item> |
||||
|
<el-form-item label="接收地址" prop="toAddress"> |
||||
|
<el-input v-model="form.toAddress" placeholder="请输入接收地址" /> |
||||
|
</el-form-item> |
||||
|
<el-form-item label="对应业务单号" prop="orderNo"> |
||||
|
<el-input v-model="form.orderNo" placeholder="请输入对应业务单号" /> |
||||
|
</el-form-item> |
||||
|
<el-form-item label="创建时间" prop="createTime"> |
||||
|
<el-date-picker clearable size="medium" v-model="form.createTime" type="date" value-format="yyyy-MM-dd" |
||||
|
placeholder="选择创建时间"> |
||||
|
</el-date-picker> |
||||
|
</el-form-item> |
||||
|
</el-form> |
||||
|
<div slot="footer" class="dialog-footer"> |
||||
|
<el-button type="primary" @click="submitForm">确 定</el-button> |
||||
|
<el-button @click="cancel">取 消</el-button> |
||||
|
</div> |
||||
|
</el-dialog> |
||||
|
</div> |
||||
|
</template> |
||||
|
|
||||
|
<script> |
||||
|
import { listTronUsdtSync, getTronUsdtSync, delTronUsdtSync, addTronUsdtSync, updateTronUsdtSync, exportTronUsdtSync } from "@/api/tron/tronUsdtSync"; |
||||
|
|
||||
|
export default { |
||||
|
name: "TronUsdtSync", |
||||
|
components: { |
||||
|
}, |
||||
|
data() { |
||||
|
return { |
||||
|
// 遮罩层 |
||||
|
loading: true, |
||||
|
// 选中数组 |
||||
|
ids: [], |
||||
|
// 非单个禁用 |
||||
|
single: true, |
||||
|
// 非多个禁用 |
||||
|
multiple: true, |
||||
|
// 显示搜索条件 |
||||
|
showSearch: true, |
||||
|
// 总条数 |
||||
|
total: 0, |
||||
|
// 波场USDT同步表格数据 |
||||
|
tronUsdtSyncList: [], |
||||
|
// 弹出层标题 |
||||
|
title: "", |
||||
|
// 是否显示弹出层 |
||||
|
open: false, |
||||
|
// 查询参数 |
||||
|
queryParams: { |
||||
|
pageNum: 1, |
||||
|
pageSize: 10, |
||||
|
number: null, |
||||
|
fromAddress: null, |
||||
|
toAddress: null, |
||||
|
orderNo: null, |
||||
|
}, |
||||
|
// 表单参数 |
||||
|
form: {}, |
||||
|
// 表单校验 |
||||
|
rules: { |
||||
|
number: [ |
||||
|
{ required: true, message: "数量不能为空", trigger: "blur" } |
||||
|
], |
||||
|
fromAddress: [ |
||||
|
{ required: true, message: "发送地址不能为空", trigger: "blur" } |
||||
|
], |
||||
|
toAddress: [ |
||||
|
{ required: true, message: "接收地址不能为空", trigger: "blur" } |
||||
|
], |
||||
|
} |
||||
|
}; |
||||
|
}, |
||||
|
created() { |
||||
|
this.getList(); |
||||
|
}, |
||||
|
methods: { |
||||
|
/** 查询波场USDT同步列表 */ |
||||
|
getList() { |
||||
|
this.loading = true; |
||||
|
listTronUsdtSync(this.queryParams).then(response => { |
||||
|
this.tronUsdtSyncList = response.rows; |
||||
|
this.total = Number(response.total); |
||||
|
this.loading = false; |
||||
|
}); |
||||
|
}, |
||||
|
// 取消按钮 |
||||
|
cancel() { |
||||
|
this.open = false; |
||||
|
this.reset(); |
||||
|
}, |
||||
|
// 表单重置 |
||||
|
reset() { |
||||
|
this.form = { |
||||
|
txid: null, |
||||
|
number: null, |
||||
|
fromAddress: null, |
||||
|
toAddress: null, |
||||
|
orderNo: null, |
||||
|
updateTime: null, |
||||
|
createTime: null |
||||
|
}; |
||||
|
this.resetForm("form"); |
||||
|
}, |
||||
|
/** 搜索按钮操作 */ |
||||
|
handleQuery() { |
||||
|
this.queryParams.pageNum = 1; |
||||
|
this.getList(); |
||||
|
}, |
||||
|
/** 重置按钮操作 */ |
||||
|
resetQuery() { |
||||
|
this.resetForm("queryForm"); |
||||
|
this.handleQuery(); |
||||
|
}, |
||||
|
// 多选框选中数据 |
||||
|
handleSelectionChange(selection) { |
||||
|
this.ids = selection.map(item => item.txid) |
||||
|
this.single = selection.length !== 1 |
||||
|
this.multiple = !selection.length |
||||
|
}, |
||||
|
/** 新增按钮操作 */ |
||||
|
handleAdd() { |
||||
|
this.reset(); |
||||
|
this.open = true; |
||||
|
this.title = "添加波场USDT同步"; |
||||
|
}, |
||||
|
/** 修改按钮操作 */ |
||||
|
handleUpdate(row) { |
||||
|
this.reset(); |
||||
|
const txid = row.txid || this.ids |
||||
|
getTronUsdtSync(txid).then(response => { |
||||
|
this.form = response.data; |
||||
|
this.open = true; |
||||
|
this.title = "修改波场USDT同步"; |
||||
|
}); |
||||
|
}, |
||||
|
/** 提交按钮 */ |
||||
|
submitForm() { |
||||
|
this.$refs["form"].validate(valid => { |
||||
|
if (valid) { |
||||
|
if (this.form.txid != null) { |
||||
|
updateTronUsdtSync(this.form).then(response => { |
||||
|
this.msgSuccess("修改成功"); |
||||
|
this.open = false; |
||||
|
this.getList(); |
||||
|
}); |
||||
|
} else { |
||||
|
addTronUsdtSync(this.form).then(response => { |
||||
|
this.msgSuccess("新增成功"); |
||||
|
this.open = false; |
||||
|
this.getList(); |
||||
|
}); |
||||
|
} |
||||
|
} |
||||
|
}); |
||||
|
}, |
||||
|
/** 删除按钮操作 */ |
||||
|
handleDelete(row) { |
||||
|
const txids = row.txid || this.ids; |
||||
|
this.$confirm('是否确认删除波场USDT同步编号为"' + txids + '"的数据项?', "警告", { |
||||
|
confirmButtonText: "确定", |
||||
|
cancelButtonText: "取消", |
||||
|
type: "warning" |
||||
|
}).then(function () { |
||||
|
return delTronUsdtSync(txids); |
||||
|
}).then(() => { |
||||
|
this.getList(); |
||||
|
this.msgSuccess("删除成功"); |
||||
|
}) |
||||
|
}, |
||||
|
/** 导出按钮操作 */ |
||||
|
handleExport() { |
||||
|
const queryParams = this.queryParams; |
||||
|
this.$confirm('是否确认导出所有波场USDT同步数据项?', "警告", { |
||||
|
confirmButtonText: "确定", |
||||
|
cancelButtonText: "取消", |
||||
|
type: "warning" |
||||
|
}).then(function () { |
||||
|
return exportTronUsdtSync(queryParams); |
||||
|
}).then(response => { |
||||
|
this.download(response.msg); |
||||
|
}) |
||||
|
} |
||||
|
} |
||||
|
}; |
||||
|
</script> |
Binary file not shown.
Binary file not shown.
Loading…
Reference in new issue