Browse Source

更新

master
j1ack 2 years ago
parent
commit
b8a23dd6a8
  1. 2
      .env.development
  2. 2
      build/[fallback].variant.js
  3. 2
      build/absolute_logo.variant.js
  4. 2
      build/dynamic_logo.variant.js
  5. 2
      build/merchant_1.variant.js
  6. 2
      build/static_logo.variant.js
  7. 60
      src/api/coin/coinAddress.js
  8. 134
      src/api/form.js
  9. 53
      src/api/tron/tronUsdtSync.js
  10. 403
      src/views/coin/coinAddress/index.vue
  11. 242
      src/views/egypt/egyptDevice/index.vue
  12. 297
      src/views/egypt/egyptRechargeOrder/index.vue
  13. 2
      src/views/login.vue
  14. 2
      src/views/monitor/job/index.vue
  15. 2
      src/views/monitor/logininfor/index.vue
  16. 2
      src/views/monitor/online/index.vue
  17. 2
      src/views/monitor/operlog/index.vue
  18. 2
      src/views/pay/payAgentUser/add.vue
  19. 273
      src/views/pay/payAgentUser/detail.vue
  20. 2
      src/views/pay/payAgentUser/operate.vue
  21. 2
      src/views/pay/payAgentUser/payAgentDivideDetail.vue
  22. 2
      src/views/pay/payAgentUser/payAgentDivideSort.vue
  23. 2
      src/views/pay/payAgentUser/payAgentDivideWater.vue
  24. 2
      src/views/pay/payAgentUser/payAgentUserList.vue
  25. 99
      src/views/pay/payAgentUser/pkCouponScopeRangeStoreList2.vue
  26. 2
      src/views/pay/payAgentUser/pwd.vue
  27. 2
      src/views/pay/payAgentUser/rate.vue
  28. 2
      src/views/pay/payBank/payBankManual.vue
  29. 2
      src/views/pay/payBank/payBankPayment.vue
  30. 2
      src/views/pay/payBank/payBankPaymentFormList.vue
  31. 2
      src/views/pay/payOrder/manyNeiChong.vue
  32. 2
      src/views/pay/payOrder/payBalanceRecord.vue
  33. 2
      src/views/pay/payOrder/payDaiFuWater.vue
  34. 2
      src/views/pay/payOrder/payDailiDivideDetail.vue
  35. 2
      src/views/pay/payOrder/payLineDownTranferWater.vue
  36. 2
      src/views/pay/payOrder/payMoneyCalcu.vue
  37. 2
      src/views/pay/payOrder/payMoneyTransfer.vue
  38. 2
      src/views/pay/payOrder/payMoneyWater.vue
  39. 2
      src/views/pay/payOrder/payNeiChongWater.vue
  40. 2
      src/views/pay/payOrder/payOrderRecord.vue
  41. 2
      src/views/pay/payOrder/payOrderWater.vue
  42. 2
      src/views/pay/payOrder/paySettleWater.vue
  43. 643
      src/views/pay/payOrder/payuOrderWater.vue
  44. 747
      src/views/pay/payOrder/payuwater.vue
  45. 181
      src/views/pay/payOrder/pkCouponScopeRangeStoreList.vue
  46. 2
      src/views/pay/payOrder/singleNeiChong.vue
  47. 2
      src/views/pay/payRecord/payRecordBack.vue
  48. 2
      src/views/pay/payRecord/payRecordDown.vue
  49. 2
      src/views/pay/payRecord/payRecordUp.vue
  50. 11
      src/views/pay/payTest/payCode.vue
  51. 2
      src/views/pay/payTest/payDai.vue
  52. 305
      src/views/pay/payTest/payucode.vue
  53. 280
      src/views/pay/payTest/payupay.vue
  54. 2
      src/views/pay/payType/payBankManualUser.vue
  55. 2
      src/views/pay/payType/payChannelDefult.vue
  56. 2
      src/views/pay/payType/payChannelOut.vue
  57. 2
      src/views/pay/payType/payTypeChannel.vue
  58. 2
      src/views/pay/payType/payTypeChannelManage.vue
  59. 2
      src/views/pay/payType/payTypeManage.vue
  60. 2
      src/views/pay/payType/payTypeSettleConfig.vue
  61. 2
      src/views/system/config/index.vue
  62. 2
      src/views/system/dept/index.vue
  63. 2
      src/views/system/dict/data.vue
  64. 2
      src/views/system/dict/index.vue
  65. 2
      src/views/system/menu/index.vue
  66. 2
      src/views/system/notice/index.vue
  67. 2
      src/views/system/post/index.vue
  68. 2
      src/views/system/role/index.vue
  69. 2
      src/views/tool/gen/index.vue
  70. 311
      src/views/tron/tronUsdtSync/index.vue
  71. BIN
      正式.zip
  72. BIN
      测试.zip

2
.env.development

@ -5,7 +5,7 @@ VUE_APP_TITLE = 商户管理系统
ENV = 'development'
# 开发环境
VUE_APP_BASE_API = 'http://newpay-admin.weirui0755.com/stage-api'
VUE_APP_BASE_API = 'http://192.168.31.182:8888'
# 后台本地
# VUE_APP_BASE_API = 'http://newpay-admin.weirui0755.com/stage-api'

2
build/[fallback].variant.js

@ -9,7 +9,7 @@ module.exports = {
// 网站图标资源(图片资源)
PAGE_LOGO_URI: "/favicon.ico",
// 登录页面标题
SIGN_UP_TITLE: "KAKA-PAY 后台系统",
SIGN_UP_TITLE: "7UP PAY 后台系统",
// 侧边栏图片资源(图片资源)
SIDEBAR_TITLE_IMAGE_URI: "file:logo/logo.png",
// 侧边栏标题

2
build/absolute_logo.variant.js

@ -4,7 +4,7 @@ module.exports = {
// 网站图标资源(图片资源)
PAGE_LOGO_URI: "https://cdn-static.sspai.com/favicon/sspai.ico",
// 登录页面标题
SIGN_UP_TITLE: "KAKA-PAY 后台系统 来自 absolute_logo",
SIGN_UP_TITLE: "7UP PAY 后台系统 来自 absolute_logo",
// 侧边栏图片资源(图片资源)
SIDEBAR_TITLE_IMAGE_URI: "https://cdn.sspai.com/2023/3/21/article/8dfc0f27-9889-8665-6b65-c69e8c81aa9d.png",
// 侧边栏标题

2
build/dynamic_logo.variant.js

@ -4,7 +4,7 @@ module.exports = {
// 网站图标资源(图片资源)
PAGE_LOGO_URI: "file:404_images/404_cloud.png",
// 登录页面标题
SIGN_UP_TITLE: "KAKA-PAY 后台系统 来自 dynamic_logo",
SIGN_UP_TITLE: "7UP PAY 后台系统 来自 dynamic_logo",
// 侧边栏图片资源(图片资源)
SIDEBAR_TITLE_IMAGE_URI: "file:404_images/404_cloud.png",
// 侧边栏标题

2
build/merchant_1.variant.js

@ -4,7 +4,7 @@ module.exports = {
// 网站图标资源(图片资源)
PAGE_LOGO_URI: "/favicon.ico",
// 登录页面标题
SIGN_UP_TITLE: "KAKA-PAY 后台系统",
SIGN_UP_TITLE: "7UP PAY 后台系统",
// 侧边栏图片资源(图片资源)
SIDEBAR_TITLE_IMAGE_URI: "file:logo/logo.png",
// 侧边栏标题

2
build/static_logo.variant.js

@ -4,7 +4,7 @@ module.exports = {
// 网站图标资源(图片资源)
PAGE_LOGO_URI: "/logo.jpeg",
// 登录页面标题
SIGN_UP_TITLE: "KAKA-PAY 后台系统 来自 static_logo",
SIGN_UP_TITLE: "7UP PAY 后台系统 来自 static_logo",
// 侧边栏图片资源(图片资源)
SIDEBAR_TITLE_IMAGE_URI: "/logo.jpeg",
// 侧边栏标题

60
src/api/coin/coinAddress.js

@ -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
})
}

134
src/api/form.js

@ -11,6 +11,13 @@ import {
*
*/
export const common_api = {
//获取币种支付渠道列表
getPaymentChannelsList: () => {
return request({
url: '/coin/coinAddress/getPaymentChannelsList',
method: 'get',
})
},
// 查询所有代理商
selectAgentListAll: () => {
return request({
@ -189,7 +196,7 @@ export const payAgentUser = {
return request({
url: '/store/store/updateRate?',
method: 'PUT',
data:data,
data: data,
headers: {
Authorization: "Bearer " + getToken(),
},
@ -505,6 +512,25 @@ export const manual_recharge_list = {
* 代付流水
*/
export const platform_payment_list = {
// 查询u代付流水列表
ulistInfo: (query) => {
return request({
url: '/record/platform_payment_coin_list',
method: 'get',
params: query,
headers: {
Authorization: "Bearer " + getToken(),
},
})
},
// u代付流水导出
uexport: (query) => {
return request({
url: '/record/platform_payment_coin_export',
method: 'get',
params: query
})
},
// 代付流水导出
export: (query) => {
return request({
@ -536,6 +562,16 @@ export const platform_payment_list = {
},
})
},
// 手工处理代付订单(币种
platform_payment_coin_handle: (data) => {
return request({
url: '/record/platform_payment_coin_handle?' + qs.stringify(data),
method: 'post',
headers: {
Authorization: "Bearer " + getToken(),
},
})
},
// 手工处理代付订单
platform_payment_handle: (data) => {
@ -594,6 +630,17 @@ export const payMoneyCalcu = {
},
})
},
// 代理管理-提交单笔代付申请(币种)
agentPaymentCurrencySave: (data) => {
return request({
url: '/order/agentPaymentCurrencySave?' + qs.stringify(data),
method: 'post',
headers: {
Authorization: "Bearer " + getToken(),
},
})
},
// 获取代理资金列表
agentCapitalList: (query) => {
return request({
@ -668,6 +715,16 @@ export const payMoneyCalcu = {
},
})
},
// 商户管理-提交单笔代付申请(币种)
storePaymentCurrencySave: (data) => {
return request({
url: '/order/storePaymentCurrencySave?' + qs.stringify(data),
method: 'post',
headers: {
Authorization: "Bearer " + getToken(),
},
})
},
// 商户管理-提交单笔代付申请
storePaymentSave: (data) => {
return request({
@ -846,6 +903,16 @@ export const payTypeMan = {
* 测试支付
*/
export const payTest = {
//u代付支付
coinpayment: (data) => {
return request({
url: '/paytest/coinpayment?' + qs.stringify(data),
method: 'post',
headers: {
Authorization: "Bearer " + getToken(),
},
})
},
//代付支付
payment: (data) => {
return request({
@ -856,6 +923,16 @@ export const payTest = {
},
})
},
//U代付支付签名
coinPaymentSign: (data) => {
return request({
url: '/paytest/coinPaymentSign?' + qs.stringify(data),
method: 'post',
headers: {
Authorization: "Bearer " + getToken(),
},
})
},
//代付支付签名
paymentSign: (data) => {
return request({
@ -866,6 +943,16 @@ export const payTest = {
},
})
},
//U代扣支付
coinPay: (data) => {
return request({
url: '/paytest/coinPay?' + qs.stringify(data),
method: 'post',
headers: {
Authorization: "Bearer " + getToken(),
},
})
},
//代扣支付
payCode: (data) => {
@ -877,6 +964,18 @@ export const payTest = {
},
})
},
//U代扣支付签名
coinPaySign: (data) => {
return request({
url: 'paytest/coinPaySign?' + qs.stringify(data),
method: 'post',
headers: {
Authorization: "Bearer " + getToken(),
},
})
},
//代扣支付签名
paySign: (data) => {
return request({
@ -904,6 +1003,17 @@ export const payTest = {
* 订单
*/
export const payOrder = {
// u手工处理支付订单
payHandleCoin: (data) => {
return request({
url: '/order/payHandleCoin?' + qs.stringify(data),
method: 'post',
headers: {
Authorization: "Bearer " + getToken(),
},
})
},
// 手工处理支付订单
payHandle: (data) => {
return request({
@ -932,6 +1042,28 @@ export const payOrder = {
params: query
})
},
// 导出订单流水(币种)
exportCoin: (query) => {
return request({
url: '/order/exportCoin',
method: 'get',
params: query
})
},
// u订单流水
urechargeRecord: (query) => {
return request({
url: '/order/rechargeRecord/listCoin',
method: 'get',
params: query,
headers: {
Authorization: "Bearer " + getToken(),
},
})
},
// 订单流水
rechargeRecord: (query) => {
return request({

53
src/api/tron/tronUsdtSync.js

@ -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
})
}

403
src/views/coin/coinAddress/index.vue

@ -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>

242
src/views/egypt/egyptDevice/index.vue

@ -1,168 +1,98 @@
<template>
<div class="app-container">
<el-form :model="queryParams" ref="queryForm" :inline="true" v-show="showSearch" label-width="68px">
<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="['egypt:egyptDevice:add']">新增</el-button>
</el-col>
<el-col :span="1.5">
<el-button type="success" plain icon="el-icon-edit" size="mini" :disabled="single" @click="handleUpdate"
v-hasPermi="['egypt:egyptDevice:edit']">修改</el-button>
</el-col>
<el-col :span="1.5">
<el-button type="danger" plain icon="el-icon-delete" size="mini" :disabled="multiple" @click="handleDelete"
v-hasPermi="['egypt:egyptDevice:remove']">删除</el-button>
</el-col>
<el-col :span="1.5">
<el-button type="warning" plain icon="el-icon-download" size="mini" @click="handleExport"
v-hasPermi="['egypt:egyptDevice: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="name">
<el-input
v-model="queryParams.name"
placeholder="请输入账号名称"
clearable
size="small"
@keyup.enter.native="handleQuery"
/>
<el-input v-model="queryParams.name" placeholder="请输入账号名称" clearable size="medium"
@keyup.enter.native="handleQuery" />
</el-form-item>
<el-form-item label="设备名" prop="aliasName">
<el-input
v-model="queryParams.aliasName"
placeholder="请输入设备名"
clearable
size="small"
@keyup.enter.native="handleQuery"
/>
<el-input v-model="queryParams.aliasName" placeholder="请输入设备名" clearable size="medium"
@keyup.enter.native="handleQuery" />
</el-form-item>
<el-form-item label="手机号" prop="cardNo">
<el-input
v-model="queryParams.cardNo"
placeholder="请输入手机号"
clearable
size="small"
@keyup.enter.native="handleQuery"
/>
</el-form-item>
<el-form-item label="go_online上线,offline下线" prop="state">
<el-input
v-model="queryParams.state"
placeholder="请输入go_online上线,offline下线"
clearable
size="small"
@keyup.enter.native="handleQuery"
/>
<el-input v-model="queryParams.cardNo" placeholder="请输入手机号" clearable size="medium"
@keyup.enter.native="handleQuery" />
</el-form-item>
<el-form-item label="状态" prop="state">
<el-select v-model="queryParams.state" placeholder="请选择状态" clearable size="medium">
<el-option v-for="(item, i) in sortLevType" :key="i" :label="item.label" :value="item.value"></el-option>
</el-select>
</el-form-item>
<el-form-item label="今天成功收款" prop="todaySuccessAmt">
<el-input
v-model="queryParams.todaySuccessAmt"
placeholder="请输入今天成功收款"
clearable
size="small"
@keyup.enter.native="handleQuery"
/>
<el-input v-model="queryParams.todaySuccessAmt" placeholder="请输入今天成功收款" clearable size="medium"
@keyup.enter.native="handleQuery" />
</el-form-item>
<el-form-item label="总成功收款" prop="totalSuccessAmt">
<el-input
v-model="queryParams.totalSuccessAmt"
placeholder="请输入总成功收款"
clearable
size="small"
@keyup.enter.native="handleQuery"
/>
<el-input v-model="queryParams.totalSuccessAmt" placeholder="请输入总成功收款" clearable size="medium"
@keyup.enter.native="handleQuery" />
</el-form-item>
<el-form-item label="总收款" prop="totalAmt">
<el-input
v-model="queryParams.totalAmt"
placeholder="请输入总收款"
clearable
size="small"
@keyup.enter.native="handleQuery"
/>
<el-input v-model="queryParams.totalAmt" placeholder="请输入总收款" clearable size="medium"
@keyup.enter.native="handleQuery" />
</el-form-item>
<el-form-item label="今天收款" prop="todayAmt">
<el-input
v-model="queryParams.todayAmt"
placeholder="请输入今天收款"
clearable
size="small"
@keyup.enter.native="handleQuery"
/>
<el-input v-model="queryParams.todayAmt" placeholder="请输入今天收款" clearable size="medium"
@keyup.enter.native="handleQuery" />
</el-form-item>
<el-form-item>
<el-button type="primary" icon="el-icon-search" size="mini" @click="handleQuery">搜索</el-button>
<el-button icon="el-icon-refresh" size="mini" @click="resetQuery">重置</el-button>
<el-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-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="['egypt:egyptDevice:add']"
>新增</el-button>
</el-col>
<el-col :span="1.5">
<el-button
type="success"
plain
icon="el-icon-edit"
size="mini"
:disabled="single"
@click="handleUpdate"
v-hasPermi="['egypt:egyptDevice:edit']"
>修改</el-button>
</el-col>
<el-col :span="1.5">
<el-button
type="danger"
plain
icon="el-icon-delete"
size="mini"
:disabled="multiple"
@click="handleDelete"
v-hasPermi="['egypt:egyptDevice:remove']"
>删除</el-button>
</el-col>
<el-col :span="1.5">
<el-button
type="warning"
plain
icon="el-icon-download"
size="mini"
@click="handleExport"
v-hasPermi="['egypt:egyptDevice:export']"
>导出</el-button>
</el-col>
<right-toolbar :showSearch.sync="showSearch" @queryTable="getList"></right-toolbar>
</el-row>
<el-table v-loading="loading" :data="egyptDeviceList" @selection-change="handleSelectionChange">
<el-table-column type="selection" width="55" align="center" />
<el-table-column label="设备编号" align="center" prop="id" />
<el-table-column label="账号名称" align="center" prop="name" />
<el-table-column label="设备名" align="center" prop="aliasName" />
<el-table-column label="手机号" align="center" prop="cardNo" />
<el-table-column label="go_online上线,offline下线" align="center" prop="state" />
<el-table-column label="状态" align="center" prop="state" />
<el-table-column label="今天成功收款" align="center" prop="todaySuccessAmt" />
<el-table-column label="总成功收款" align="center" prop="totalSuccessAmt" />
<el-table-column label="总收款" align="center" prop="totalAmt" />
<el-table-column label="今天收款" align="center" prop="todayAmt" />
<el-table-column label="操作" align="center" class-name="small-padding fixed-width">
<template slot-scope="scope">
<el-button
size="mini"
type="text"
icon="el-icon-edit"
@click="handleUpdate(scope.row)"
v-hasPermi="['egypt:egyptDevice:edit']"
>修改</el-button>
<el-button
size="mini"
type="text"
icon="el-icon-delete"
@click="handleDelete(scope.row)"
v-hasPermi="['egypt:egyptDevice:remove']"
>删除</el-button>
<el-button size="mini" type="text" icon="el-icon-edit" @click="handleUpdate(scope.row)"
v-hasPermi="['egypt:egyptDevice:edit']">修改</el-button>
<el-button size="mini" type="text" icon="el-icon-delete" @click="handleDelete(scope.row)"
v-hasPermi="['egypt:egyptDevice: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"
/>
<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>
@ -192,10 +122,7 @@
<el-input v-model="form.todayAmt" placeholder="请输入今天收款" />
</el-form-item>
<el-form-item label="创建时间" prop="createTime">
<el-date-picker clearable size="small"
v-model="form.createTime"
type="date"
value-format="yyyy-MM-dd"
<el-date-picker clearable size="small" v-model="form.createTime" type="date" value-format="yyyy-MM-dd"
placeholder="选择创建时间">
</el-date-picker>
</el-form-item>
@ -217,6 +144,17 @@ export default {
},
data() {
return {
sortLevType: [
{
label: '上线',
value: 'go_online',
},
{
label: '下线',
value: 'offline',
},
],
//
loading: true,
//
@ -327,7 +265,7 @@ export default {
//
handleSelectionChange(selection) {
this.ids = selection.map(item => item.id)
this.single = selection.length!==1
this.single = selection.length !== 1
this.multiple = !selection.length
},
/** 新增按钮操作 */
@ -370,28 +308,28 @@ export default {
handleDelete(row) {
const ids = row.id || this.ids;
this.$confirm('是否确认删除埃及设备编号为"' + ids + '"的数据项?', "警告", {
confirmButtonText: "确定",
cancelButtonText: "取消",
type: "warning"
}).then(function() {
return delEgyptDevice(ids);
}).then(() => {
this.getList();
this.msgSuccess("删除成功");
})
confirmButtonText: "确定",
cancelButtonText: "取消",
type: "warning"
}).then(function () {
return delEgyptDevice(ids);
}).then(() => {
this.getList();
this.msgSuccess("删除成功");
})
},
/** 导出按钮操作 */
handleExport() {
const queryParams = this.queryParams;
this.$confirm('是否确认导出所有埃及设备数据项?', "警告", {
confirmButtonText: "确定",
cancelButtonText: "取消",
type: "warning"
}).then(function() {
return exportEgyptDevice(queryParams);
}).then(response => {
this.download(response.msg);
})
confirmButtonText: "确定",
cancelButtonText: "取消",
type: "warning"
}).then(function () {
return exportEgyptDevice(queryParams);
}).then(response => {
this.download(response.msg);
})
}
}
};

297
src/views/egypt/egyptRechargeOrder/index.vue

@ -1,151 +1,96 @@
<template>
<div class="app-container">
<el-form :model="queryParams" ref="queryForm" :inline="true" v-show="showSearch" label-width="68px">
<el-form-item label="收款卡姓名" prop="payee">
<el-input
v-model="queryParams.payee"
placeholder="请输入收款卡姓名"
clearable
size="small"
@keyup.enter.native="handleQuery"
/>
</el-form-item>
<el-form-item label="收款卡卡号/手机号" prop="payeeCard">
<el-input
v-model="queryParams.payeeCard"
placeholder="请输入收款卡卡号/手机号"
clearable
size="small"
@keyup.enter.native="handleQuery"
/>
</el-form-item>
<el-form-item label="订单金额" prop="money">
<el-input
v-model="queryParams.money"
placeholder="请输入订单金额"
clearable
size="small"
@keyup.enter.native="handleQuery"
/>
</el-form-item>
<el-form-item label="unmatched未匹配,匹配成功:matching_successful,匹配失败matching_failed" prop="state">
<el-input
v-model="queryParams.state"
placeholder="请输入unmatched未匹配,匹配成功:matching_successful,匹配失败matching_failed"
clearable
size="small"
@keyup.enter.native="handleQuery"
/>
</el-form-item>
<el-form-item label="对应业务单号" prop="orderNo">
<el-input
v-model="queryParams.orderNo"
placeholder="请输入对应业务单号"
clearable
size="small"
@keyup.enter.native="handleQuery"
/>
</el-form-item>
<el-form-item label="支付时间" prop="payTime">
<el-date-picker clearable size="small"
v-model="queryParams.payTime"
type="date"
value-format="yyyy-MM-dd"
placeholder="选择支付时间">
</el-date-picker>
</el-form-item>
<el-form-item>
<el-button type="primary" icon="el-icon-search" size="mini" @click="handleQuery">搜索</el-button>
<el-button icon="el-icon-refresh" size="mini" @click="resetQuery">重置</el-button>
</el-form-item>
</el-form>
<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="['egypt:egyptRechargeOrder:add']">新增</el-button>
</el-col>
<el-col :span="1.5">
<el-button type="success" plain icon="el-icon-edit" size="mini" :disabled="single" @click="handleUpdate"
v-hasPermi="['egypt:egyptRechargeOrder:edit']">修改</el-button>
</el-col>
<el-col :span="1.5">
<el-button type="danger" plain icon="el-icon-delete" size="mini" :disabled="multiple" @click="handleDelete"
v-hasPermi="['egypt:egyptRechargeOrder:remove']">删除</el-button>
</el-col>
<el-col :span="1.5">
<el-button type="warning" plain icon="el-icon-download" size="mini" @click="handleExport"
v-hasPermi="['egypt:egyptRechargeOrder: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="payee">
<el-input v-model="queryParams.payee" placeholder="请输入收款卡姓名" clearable size="medium"
@keyup.enter.native="handleQuery" />
</el-form-item>
<el-form-item label="收款卡卡号/手机号" prop="payeeCard">
<el-input v-model="queryParams.payeeCard" placeholder="请输入收款卡卡号/手机号" clearable size="medium"
@keyup.enter.native="handleQuery" />
</el-form-item>
<el-form-item label="订单金额" prop="money">
<el-input v-model="queryParams.money" placeholder="请输入订单金额" clearable size="medium"
@keyup.enter.native="handleQuery" />
</el-form-item>
<el-form-item label="状态" prop="state">
<el-select v-model="queryParams.state" placeholder="请选择状态" clearable size="medium">
<el-option v-for="(item, i) in sortLevType" :key="i" :label="item.label" :value="item.value"></el-option>
</el-select>
</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="支付时间">
<el-date-picker v-model="dateRange" size="small" style="width: 240px" value-format="yyyy-MM-dd" type="daterange"
range-separator="-" start-placeholder="开始日期" end-placeholder="结束日期" :unlink-panels="true"></el-date-picker>
</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-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="['egypt:egyptRechargeOrder:add']"
>新增</el-button>
</el-col>
<el-col :span="1.5">
<el-button
type="success"
plain
icon="el-icon-edit"
size="mini"
:disabled="single"
@click="handleUpdate"
v-hasPermi="['egypt:egyptRechargeOrder:edit']"
>修改</el-button>
</el-col>
<el-col :span="1.5">
<el-button
type="danger"
plain
icon="el-icon-delete"
size="mini"
:disabled="multiple"
@click="handleDelete"
v-hasPermi="['egypt:egyptRechargeOrder:remove']"
>删除</el-button>
</el-col>
<el-col :span="1.5">
<el-button
type="warning"
plain
icon="el-icon-download"
size="mini"
@click="handleExport"
v-hasPermi="['egypt:egyptRechargeOrder:export']"
>导出</el-button>
</el-col>
<right-toolbar :showSearch.sync="showSearch" @queryTable="getList"></right-toolbar>
</el-row>
<el-table v-loading="loading" :data="egyptRechargeOrderList" @selection-change="handleSelectionChange">
<el-table-column type="selection" width="55" align="center" />
<el-table-column label="订单号" align="center" prop="numid" />
<el-table-column label="收款卡姓名" align="center" prop="payee" />
<el-table-column label="收款卡卡号/手机号" align="center" prop="payeeCard" />
<el-table-column label="订单金额" align="center" prop="money" />
<el-table-column label="状态" align="center" prop="state" />
<el-table-column label="对应业务单号" align="center" prop="orderNo" />
<el-table-column label="支付时间" align="center" prop="payTime" width="180">
<template slot-scope="scope">
<span>{{ parseTime(scope.row.payTime, '{y}-{m}-{d}') }}</span>
</template>
</el-table-column>
<el-table-column label="操作" align="center" class-name="small-padding fixed-width">
<template slot-scope="scope">
<el-button size="mini" type="text" icon="el-icon-edit" @click="handleUpdate(scope.row)"
v-hasPermi="['egypt:egyptRechargeOrder:edit']">修改</el-button>
<el-button size="mini" type="text" icon="el-icon-delete" @click="handleDelete(scope.row)"
v-hasPermi="['egypt:egyptRechargeOrder:remove']">删除</el-button>
</template>
</el-table-column>
</el-table>
<el-table v-loading="loading" :data="egyptRechargeOrderList" @selection-change="handleSelectionChange">
<el-table-column type="selection" width="55" align="center" />
<el-table-column label="订单号" align="center" prop="numid" />
<el-table-column label="收款卡姓名" align="center" prop="payee" />
<el-table-column label="收款卡卡号/手机号" align="center" prop="payeeCard" />
<el-table-column label="订单金额" align="center" prop="money" />
<el-table-column label="unmatched未匹配,匹配成功:matching_successful,匹配失败matching_failed" align="center" prop="state" />
<el-table-column label="对应业务单号" align="center" prop="orderNo" />
<el-table-column label="支付时间" align="center" prop="payTime" width="180">
<template slot-scope="scope">
<span>{{ parseTime(scope.row.payTime, '{y}-{m}-{d}') }}</span>
</template>
</el-table-column>
<el-table-column label="操作" align="center" class-name="small-padding fixed-width">
<template slot-scope="scope">
<el-button
size="mini"
type="text"
icon="el-icon-edit"
@click="handleUpdate(scope.row)"
v-hasPermi="['egypt:egyptRechargeOrder:edit']"
>修改</el-button>
<el-button
size="mini"
type="text"
icon="el-icon-delete"
@click="handleDelete(scope.row)"
v-hasPermi="['egypt:egyptRechargeOrder: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"
/>
<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>
@ -166,18 +111,12 @@
<el-input v-model="form.orderNo" placeholder="请输入对应业务单号" />
</el-form-item>
<el-form-item label="支付时间" prop="payTime">
<el-date-picker clearable size="small"
v-model="form.payTime"
type="date"
value-format="yyyy-MM-dd"
<el-date-picker clearable size="small" v-model="form.payTime" type="date" value-format="yyyy-MM-dd"
placeholder="选择支付时间">
</el-date-picker>
</el-form-item>
<el-form-item label="创建时间" prop="createTime">
<el-date-picker clearable size="small"
v-model="form.createTime"
type="date"
value-format="yyyy-MM-dd"
<el-date-picker clearable size="small" v-model="form.createTime" type="date" value-format="yyyy-MM-dd"
placeholder="选择创建时间">
</el-date-picker>
</el-form-item>
@ -199,6 +138,21 @@ export default {
},
data() {
return {
dateRange: [],
sortLevType: [
{
label: '未匹配',
value: 'unmatched',
},
{
label: '匹配成功',
value: 'matching_successful',
},
{
label: '匹配失败',
value: 'matching_failed',
},
],
//
loading: true,
//
@ -251,7 +205,7 @@ export default {
/** 查询埃及订单表列表 */
getList() {
this.loading = true;
listEgyptRechargeOrder(this.queryParams).then(response => {
listEgyptRechargeOrder(this.addSESDateRange(this.queryParams, this.dateRange)).then(response => {
this.egyptRechargeOrderList = response.rows;
this.total = response.total;
this.loading = false;
@ -283,13 +237,14 @@ export default {
},
/** 重置按钮操作 */
resetQuery() {
this.dateRange = [];
this.resetForm("queryForm");
this.handleQuery();
},
//
handleSelectionChange(selection) {
this.ids = selection.map(item => item.numid)
this.single = selection.length!==1
this.single = selection.length !== 1
this.multiple = !selection.length
},
/** 新增按钮操作 */
@ -332,28 +287,28 @@ export default {
handleDelete(row) {
const numids = row.numid || this.ids;
this.$confirm('是否确认删除埃及订单表编号为"' + numids + '"的数据项?', "警告", {
confirmButtonText: "确定",
cancelButtonText: "取消",
type: "warning"
}).then(function() {
return delEgyptRechargeOrder(numids);
}).then(() => {
this.getList();
this.msgSuccess("删除成功");
})
confirmButtonText: "确定",
cancelButtonText: "取消",
type: "warning"
}).then(function () {
return delEgyptRechargeOrder(numids);
}).then(() => {
this.getList();
this.msgSuccess("删除成功");
})
},
/** 导出按钮操作 */
handleExport() {
const queryParams = this.queryParams;
this.$confirm('是否确认导出所有埃及订单表数据项?', "警告", {
confirmButtonText: "确定",
cancelButtonText: "取消",
type: "warning"
}).then(function() {
return exportEgyptRechargeOrder(queryParams);
}).then(response => {
this.download(response.msg);
})
confirmButtonText: "确定",
cancelButtonText: "取消",
type: "warning"
}).then(function () {
return exportEgyptRechargeOrder(queryParams);
}).then(response => {
this.download(response.msg);
})
}
}
};

2
src/views/login.vue

@ -259,7 +259,7 @@ export default {
text-align: center;
color: #fff;
font-weight: 600;
font-size: 38px;
font-size: 36px;
}
.login-form {

2
src/views/monitor/job/index.vue

@ -3,7 +3,7 @@
<div class="flexBet searchTop">
<div class="title flex m20">
<div class="bar"></div>
<div class="text">定时任务</div>
<div class="text">{{ $route.meta.title }}</div>
</div>
<el-row :gutter="10" class="mb8">

2
src/views/monitor/logininfor/index.vue

@ -4,7 +4,7 @@
<div class="flexBet searchTop">
<div class="title flex m20">
<div class="bar"></div>
<div class="text">登陆日志</div>
<div class="text">{{ $route.meta.title }}</div>
</div>
<el-row :gutter="10" class="mb8">

2
src/views/monitor/online/index.vue

@ -4,7 +4,7 @@
<div class="flexBet searchTop">
<div class="title flex m20">
<div class="bar"></div>
<div class="text">在线后台用户</div>
<div class="text">{{ $route.meta.title }}</div>
</div>
</div>
<div class="bg">

2
src/views/monitor/operlog/index.vue

@ -4,7 +4,7 @@
<div class="flexBet searchTop">
<div class="title flex m20">
<div class="bar"></div>
<div class="text">操作日志</div>
<div class="text">{{ $route.meta.title }}</div>
</div>
<el-row :gutter="10" class="mb8">

2
src/views/pay/payAgentUser/add.vue

@ -3,7 +3,7 @@
<div class="flexBet searchTop">
<div class="title flex m20">
<div class="bar"></div>
<div class="text">通道</div>
<div class="text">{{ $route.meta.title }}</div>
</div>
</div>
<div v-loading="loading" class="bg">

273
src/views/pay/payAgentUser/detail.vue

@ -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>

2
src/views/pay/payAgentUser/operate.vue

@ -3,7 +3,7 @@
<div class="flexBet searchTop">
<div class="title flex m20">
<div class="bar"></div>
<div class="text">配置</div>
<div class="text">{{ $route.meta.title }}</div>
</div>
</div>
<!-- v-loading="loading" -->

2
src/views/pay/payAgentUser/payAgentDivideDetail.vue

@ -3,7 +3,7 @@
<div class="flexBet searchTop">
<div class="title flex m20">
<div class="bar"></div>
<div class="text">代理分成明细</div>
<div class="text">{{ $route.meta.title }}</div>
</div>
<el-row :gutter="10" class="mb8">
<!-- <el-col :span="1.5">

2
src/views/pay/payAgentUser/payAgentDivideSort.vue

@ -3,7 +3,7 @@
<div class="flexBet searchTop">
<div class="title flex m20">
<div class="bar"></div>
<div class="text">代理分成统计</div>
<div class="text">{{ $route.meta.title }}</div>
</div>
<el-row :gutter="10" class="mb8">
<!-- <el-col :span="1.5">

2
src/views/pay/payAgentUser/payAgentDivideWater.vue

@ -3,7 +3,7 @@
<div class="flexBet searchTop">
<div class="title flex m20">
<div class="bar"></div>
<div class="text">代理分成流水</div>
<div class="text">{{ $route.meta.title }}</div>
</div>
<el-row :gutter="10" class="mb8">
<!-- <el-col :span="1.5">

2
src/views/pay/payAgentUser/payAgentUserList.vue

@ -3,7 +3,7 @@
<div class="flexBet searchTop">
<div class="title flex m20">
<div class="bar"></div>
<div class="text">商户代理管理</div>
<div class="text">{{ $route.meta.title }}</div>
</div>
<el-row :gutter="10" class="mb8">

99
src/views/pay/payAgentUser/pkCouponScopeRangeStoreList2.vue

@ -31,10 +31,10 @@
<el-form-item label="出金通道" prop="channelType">
<el-select v-model="channelType" placeholder="请选择出金通道" clearable size="medium">
<el-option v-for="(item, i) in payConfigAll" :key="i" :label="item.channelName"
:value="item.channelType"></el-option>
:value="item.channelType" :disabled="!channelTypeBo"></el-option>
</el-select>
</el-form-item>
<el-form-item>
<el-form-item v-if="!channelType">
<el-button type="primary" icon="" size="medium"
@click="agentUpdateCapitalChannel">确定</el-button>
</el-form-item>
@ -74,28 +74,33 @@
<span style="font-size:19px">代付银行卡</span>
<el-divider></el-divider>
</div>
<el-form-item label="出金通道" prop="bankId">
<el-select v-model="form.bankId" placeholder="请选择出金通道" clearable size="medium" @change="getValue">
<el-option v-for="(item, i) in bankCon" :key="i" :label="item.bankName"
:value="item.id"></el-option>
</el-select>
</el-form-item>
<el-form-item label="银行卡号" prop="acctId">
<el-input v-model="form.acctId" placeholder="请输入银行卡号" />
</el-form-item>
<el-form-item label="支行名称" prop="bankBranchName">
<el-input v-model="form.bankBranchName" placeholder="请输入支行名称" />
</el-form-item>
<el-form-item label="支行联行号" prop="bankSettleNo">
<el-input v-model="form.bankSettleNo" placeholder="请输入支行联行号" />
</el-form-item>
<el-form-item label="开户人姓名" prop="acctName">
<el-input v-model="form.acctName" placeholder="请输入开户人姓名" />
</el-form-item>
<el-form-item label="用户预留手机号" prop="mobile">
<el-input v-model="form.mobile" placeholder="请输入用户预留手机号" />
</el-form-item>
<div v-if="isCoin == 'N'">
<el-form-item label="出金通道" prop="bankId">
<el-select v-model="form.bankId" placeholder="请选择出金通道" clearable size="medium" @change="getValue">
<el-option v-for="(item, i) in bankCon" :key="i" :label="item.bankName"
:value="item.id"></el-option>
</el-select>
</el-form-item>
<el-form-item label="银行卡号" prop="acctId">
<el-input v-model="form.acctId" placeholder="请输入银行卡号" />
</el-form-item>
<el-form-item label="支行名称" prop="bankBranchName">
<el-input v-model="form.bankBranchName" placeholder="请输入支行名称" />
</el-form-item>
<el-form-item label="支行联行号" prop="bankSettleNo">
<el-input v-model="form.bankSettleNo" placeholder="请输入支行联行号" />
</el-form-item>
<el-form-item label="开户人姓名" prop="acctName">
<el-input v-model="form.acctName" placeholder="请输入开户人姓名" />
</el-form-item>
<el-form-item label="用户预留手机号" prop="mobile">
<el-input v-model="form.mobile" placeholder="请输入用户预留手机号" />
</el-form-item>
</div>
<el-form-item label="钱包收款地址" prop="acctId" v-else>
<el-input v-model="form.acctId" placeholder="请输入钱包收款地址" />
</el-form-item>
<div>
<span style="font-size:19px">代付金额</span>
<el-divider></el-divider>
@ -152,6 +157,7 @@ export default {
}
}
return {
isCoin: null,
type: [
{
label: '增加',
@ -257,6 +263,7 @@ export default {
rows: {},
payConfigAll: [],
channelType: '',
channelTypeBo:true
};
},
created() {
@ -297,6 +304,7 @@ export default {
//
handlePrivateTransfer(row, v) {
this.rows = row
this.isCoin = row.isCoin
if (!row.channelType) {
this.$message.error('当前渠道类型为空,请选择渠道~')
return;
@ -371,19 +379,37 @@ export default {
spinner: "el-icon-loading",
background: "rgba(0, 0, 0, 0.7)",
});
payMoneyCalcu
.agentPaymentSave(this.form)
.then((response) => {
loading.close();
if (response.code == 200) {
this.$message.success('代付资金提交成功')
this.getList()
}
this.openBank = false
})
.catch(() => {
loading.close();
});
if (this.isCoin == 'N') {
payMoneyCalcu
.agentPaymentSave(this.form)
.then((response) => {
loading.close();
if (response.code == 200) {
this.$message.success('代付资金提交成功')
this.getList()
}
this.openBank = false
})
.catch(() => {
loading.close();
});
}
if (this.isCoin == 'Y') {
payMoneyCalcu
.agentPaymentCurrencySave(this.form)
.then((response) => {
loading.close();
if (response.code == 200) {
this.$message.success('代付资金提交成功')
this.getList()
}
this.openBank = false
})
.catch(() => {
loading.close();
});
}
}
});
},
@ -399,6 +425,7 @@ export default {
this.loading = false;
if (this.infoList.length) {
this.channelType = this.infoList[0].channelType
this.channelType? this.channelTypeBo=false : this.channelTypeBo=true
//
common_api.payConfigAll({
type: 'in'

2
src/views/pay/payAgentUser/pwd.vue

@ -3,7 +3,7 @@
<div class="flexBet searchTop">
<div class="title flex m20">
<div class="bar"></div>
<div class="text">提现密码设置</div>
<div class="text">{{ $route.meta.title }}</div>
</div>
</div>
<!-- v-loading="loading" -->

2
src/views/pay/payAgentUser/rate.vue

@ -3,7 +3,7 @@
<div class="flexBet searchTop">
<div class="title flex m20">
<div class="bar"></div>
<div class="text">费率</div>
<div class="text">{{ $route.meta.title }}</div>
</div>
</div>
<div class="detailCon bottomFlex m20">

2
src/views/pay/payBank/payBankManual.vue

@ -3,7 +3,7 @@
<div class="flexBet searchTop">
<div class="title flex m20">
<div class="bar"></div>
<div class="text">内充银行</div>
<div class="text">{{ $route.meta.title }}</div>
</div>
<el-row :gutter="10" class="mb8">

2
src/views/pay/payBank/payBankPayment.vue

@ -3,7 +3,7 @@
<div class="flexBet searchTop">
<div class="title flex m20">
<div class="bar"></div>
<div class="text">代付银行</div>
<div class="text">{{ $route.meta.title }}</div>
</div>
<el-row :gutter="10" class="mb8">

2
src/views/pay/payBank/payBankPaymentFormList.vue

@ -3,7 +3,7 @@
<div class="flexBet searchTop">
<div class="title flex m20">
<div class="bar"></div>
<div class="text">代付银行配置</div>
<div class="text">{{ $route.meta.title }}</div>
</div>
<el-row :gutter="10" class="mb8">

2
src/views/pay/payOrder/manyNeiChong.vue

@ -3,7 +3,7 @@
<div class="flexBet searchTop">
<div class="title flex m20">
<div class="bar"></div>
<div class="text">批量内充</div>
<div class="text">{{ $route.meta.title }}</div>
</div>
</div>

2
src/views/pay/payOrder/payBalanceRecord.vue

@ -3,7 +3,7 @@
<div class="flexBet searchTop">
<div class="title flex m20">
<div class="bar"></div>
<div class="text">后台修改余额记录</div>
<div class="text">{{ $route.meta.title }}</div>
</div>
<el-row :gutter="10" class="mb8">
<right-toolbar :showSearch.sync="showSearch" @queryTable="getList"></right-toolbar>

2
src/views/pay/payOrder/payDaiFuWater.vue

@ -3,7 +3,7 @@
<div class="flexBet searchTop">
<div class="title flex m20">
<div class="bar"></div>
<div class="text">代付流水</div>
<div class="text">{{ $route.meta.title }}</div>
</div>
<el-row :gutter="10" class="mb8">

2
src/views/pay/payOrder/payDailiDivideDetail.vue

@ -3,7 +3,7 @@
<div class="flexBet searchTop">
<div class="title flex m20">
<div class="bar"></div>
<div class="text">代理分成详细列表</div>
<div class="text">{{ $route.meta.title }}</div>
</div>
<el-row :gutter="10" class="mb8">
<!-- <el-col :span="1.5">

2
src/views/pay/payOrder/payLineDownTranferWater.vue

@ -3,7 +3,7 @@
<div class="flexBet searchTop">
<div class="title flex m20">
<div class="bar"></div>
<div class="text">线下转卡流水</div>
<div class="text">{{ $route.meta.title }}</div>
</div>
<el-row :gutter="10" class="mb8">
<right-toolbar :showSearch.sync="showSearch" @queryTable="getList"></right-toolbar>

2
src/views/pay/payOrder/payMoneyCalcu.vue

@ -3,7 +3,7 @@
<div class="flexBet searchTop">
<div class="title flex m20">
<div class="bar"></div>
<div class="text">资金清算</div>
<div class="text">{{ $route.meta.title }}</div>
</div>
<el-row :gutter="10" class="mb8">
<right-toolbar :showSearch.sync="showSearch" @queryTable="getList"></right-toolbar>

2
src/views/pay/payOrder/payMoneyTransfer.vue

@ -3,7 +3,7 @@
<div class="flexBet searchTop">
<div class="title flex m20">
<div class="bar"></div>
<div class="text">资金划转流水</div>
<div class="text">{{ $route.meta.title }}</div>
</div>
<el-row :gutter="10" class="mb8">

2
src/views/pay/payOrder/payMoneyWater.vue

@ -3,7 +3,7 @@
<div class="flexBet searchTop">
<div class="title flex m20">
<div class="bar"></div>
<div class="text">资金流水</div>
<div class="text">{{ $route.meta.title }}</div>
</div>
<el-row :gutter="10" class="mb8">
<right-toolbar :showSearch.sync="showSearch" @queryTable="getList"></right-toolbar>

2
src/views/pay/payOrder/payNeiChongWater.vue

@ -3,7 +3,7 @@
<div class="flexBet searchTop">
<div class="title flex m20">
<div class="bar"></div>
<div class="text">内充流水</div>
<div class="text">{{ $route.meta.title }}</div>
</div>
<el-row :gutter="10" class="mb8">

2
src/views/pay/payOrder/payOrderRecord.vue

@ -3,7 +3,7 @@
<div class="flexBet searchTop">
<div class="title flex m20">
<div class="bar"></div>
<div class="text">订单统计</div>
<div class="text">{{ $route.meta.title }}</div>
</div>
<el-row :gutter="10" class="mb8">
<right-toolbar :showSearch.sync="showSearch" @queryTable="getList"></right-toolbar>

2
src/views/pay/payOrder/payOrderWater.vue

@ -3,7 +3,7 @@
<div class="flexBet searchTop">
<div class="title flex m20">
<div class="bar"></div>
<div class="text">订单流水</div>
<div class="text">{{ $route.meta.title }}</div>
</div>
<el-row :gutter="10" class="mb8">
<right-toolbar :showSearch.sync="showSearch" @queryTable="getList"></right-toolbar>

2
src/views/pay/payOrder/paySettleWater.vue

@ -3,7 +3,7 @@
<div class="flexBet searchTop">
<div class="title flex m20">
<div class="bar"></div>
<div class="text">结算流水</div>
<div class="text">{{ $route.meta.title }}</div>
</div>
<el-row :gutter="10" class="mb8">
<right-toolbar :showSearch.sync="showSearch" @queryTable="getList"></right-toolbar>

643
src/views/pay/payOrder/payuOrderWater.vue

@ -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) {
//012
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>

747
src/views/pay/payOrder/payuwater.vue

@ -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>

181
src/views/pay/payOrder/pkCouponScopeRangeStoreList.vue

@ -52,12 +52,14 @@
<el-table-column label="账户可提余额(元)" align="center" prop="useCapital" />
<el-table-column label="操作" align="center" class-name="small-padding fixed-width" fixed="right" min-width="150">
<template slot-scope="scope">
<el-button size="small" type="text" style="color: #006EFF;" @click="updateBalance(scope.row,'formUpdate')">修改余额</el-button>
<el-button size="small" type="text" style="color: #006EFF;" @click="handlePrivateTransfer(scope.row,'formDai')"
<el-button size="small" type="text" style="color: #006EFF;"
@click="updateBalance(scope.row, 'formUpdate')">修改余额</el-button>
<el-button size="small" type="text" style="color: #006EFF;"
@click="handlePrivateTransfer(scope.row, 'formDai')"
v-hasPermi="['order:rechargeRecord:storePaymentSave']">私户转入</el-button>
<el-button size="small" type="text" style="color: #006EFF;" @click="handleFrozen(scope.row,'formFro')"
<el-button size="small" type="text" style="color: #006EFF;" @click="handleFrozen(scope.row, 'formFro')"
v-hasPermi="['order:rechargeRecord:frozenCapitalSave']">资金冻结</el-button>
<el-button size="small" type="text" style="color: #006EFF;" @click="handleTransfer(scope.row,'formTrans')"
<el-button size="small" type="text" style="color: #006EFF;" @click="handleTransfer(scope.row, 'formTrans')"
v-hasPermi="['order:rechargeRecord:transferCapitalSave']">资金划转</el-button>
</template>
</el-table-column>
@ -93,7 +95,7 @@
</el-form-item>
</el-form>
<div slot="footer" class="dialog-footer">
<el-button type="primary" @click="submitForm('frozen','formFro')"> </el-button>
<el-button type="primary" @click="submitForm('frozen', 'formFro')"> </el-button>
<el-button @click="cancel('formFro')"> </el-button>
</div>
</el-dialog>
@ -135,7 +137,7 @@
</el-form-item>
</el-form>
<div slot="footer" class="dialog-footer">
<el-button type="primary" @click="submitForm('transfer','formTrans')"> </el-button>
<el-button type="primary" @click="submitForm('transfer', 'formTrans')"> </el-button>
<el-button @click="cancel"> </el-button>
</div>
</el-dialog>
@ -149,25 +151,31 @@
<span style="font-size:19px">代付银行卡</span>
<el-divider></el-divider>
</div>
<el-form-item label="出金通道" prop="bankId">
<el-select v-model="form.bankId" placeholder="请选择出金通道" clearable size="medium" @change="getValue">
<el-option v-for="(item, i) in bankCon" :key="i" :label="item.bankName" :value="item.id"></el-option>
</el-select>
</el-form-item>
<el-form-item label="银行卡号" prop="acctId">
<el-input v-model="form.acctId" placeholder="请输入银行卡号" />
</el-form-item>
<el-form-item label="支行名称" prop="bankBranchName">
<el-input v-model="form.bankBranchName" placeholder="请输入支行名称" />
</el-form-item>
<el-form-item label="支行联行号" prop="bankSettleNo">
<el-input v-model="form.bankSettleNo" placeholder="请输入支行联行号" />
</el-form-item>
<el-form-item label="开户人姓名" prop="acctName">
<el-input v-model="form.acctName" placeholder="请输入开户人姓名" />
</el-form-item>
<el-form-item label="用户预留手机号" prop="mobile">
<el-input v-model="form.mobile" placeholder="请输入用户预留手机号" />
<div v-if="isCoin == 'N'">
<el-form-item label="出金通道" prop="bankId">
<el-select v-model="form.bankId" placeholder="请选择出金通道" clearable size="medium" @change="getValue">
<el-option v-for="(item, i) in bankCon" :key="i" :label="item.bankName" :value="item.id"></el-option>
</el-select>
</el-form-item>
<el-form-item label="银行卡号" prop="acctId">
<el-input v-model="form.acctId" placeholder="请输入银行卡号" />
</el-form-item>
<el-form-item label="支行名称" prop="bankBranchName">
<el-input v-model="form.bankBranchName" placeholder="请输入支行名称" />
</el-form-item>
<el-form-item label="支行联行号" prop="bankSettleNo">
<el-input v-model="form.bankSettleNo" placeholder="请输入支行联行号" />
</el-form-item>
<el-form-item label="开户人姓名" prop="acctName">
<el-input v-model="form.acctName" placeholder="请输入开户人姓名" />
</el-form-item>
<el-form-item label="用户预留手机号" prop="mobile">
<el-input v-model="form.mobile" placeholder="请输入用户预留手机号" />
</el-form-item>
</div>
<el-form-item label="钱包收款地址" prop="acctId" v-else>
<el-input v-model="form.acctId" placeholder="请输入钱包收款地址" />
</el-form-item>
<div>
@ -190,7 +198,7 @@
</el-form-item>
</el-form>
<div slot="footer" class="dialog-footer">
<el-button type="primary" @click="submitForm('private','formDai')"> </el-button>
<el-button type="primary" @click="submitForm('private', 'formDai')"> </el-button>
<el-button @click="cancel('formDai')"> </el-button>
</div>
</el-dialog>
@ -222,7 +230,7 @@
</el-form-item>
</el-form>
<div slot="footer" class="dialog-footer">
<el-button type="primary" @click="subUpdateBalance('balance','formUpdate')"> </el-button>
<el-button type="primary" @click="subUpdateBalance('balance', 'formUpdate')"> </el-button>
<el-button @click="cancel"> </el-button>
</div>
</el-dialog>
@ -256,6 +264,7 @@ export default {
}
}
return {
isCoin: null,
type: [
{
label: '增加',
@ -393,9 +402,10 @@ export default {
})
},
//
handlePrivateTransfer(row,v) {
handlePrivateTransfer(row, v) {
this.reset(v);
this.loading = true;
this.isCoin = row.isCoin
//
this.getUserWithdrawalChannel();
payMoneyCalcu.getWithdrawalChannel({
@ -412,13 +422,13 @@ export default {
storeId: this.queryParams.storeId
})
.then((response) => {
this.form.accountNo=row.accountNo
this.form.accountNo = row.accountNo
this.detailData = response.data
});
});
},
//
handleTransfer(row,v) {
handleTransfer(row, v) {
this.reset(v);
this.form.storeId = this.pkCouponStore.storeId
this.loading = true;
@ -442,40 +452,40 @@ export default {
},
//
subUpdateBalance(a,v){
var googleCode=this.form.googleCode
this.$refs[v].validate((valid) => {
if (valid) {
const loading = this.$loading({
lock: true,
text: `正在修改`,
spinner: "el-icon-loading",
background: "rgba(0, 0, 0, 0.7)",
subUpdateBalance(a, v) {
var googleCode = this.form.googleCode
this.$refs[v].validate((valid) => {
if (valid) {
const loading = this.$loading({
lock: true,
text: `正在修改`,
spinner: "el-icon-loading",
background: "rgba(0, 0, 0, 0.7)",
});
payMoneyCalcu
.updateBalance({
accountNo: this.form.accountNo,
googleCode: googleCode,
updateUserId: this.form.updateUserId,
isIncome: this.form.isIncome,
tranAmt: this.form.afterAmt,
})
.then((response) => {
loading.close();
if (response.code == 200) {
this.$message.success('修改成功')
this.getList();
}
this.openBalance = false
})
.catch(() => {
loading.close();
});
payMoneyCalcu
.updateBalance({
accountNo:this.form.accountNo,
googleCode:googleCode,
updateUserId:this.form.updateUserId,
isIncome:this.form.isIncome,
tranAmt:this.form.afterAmt,
})
.then((response) => {
loading.close();
if (response.code == 200) {
this.$message.success('修改成功')
this.getList();
}
this.openBalance = false
})
.catch(() => {
loading.close();
});
}
});
}
});
},
/** 提交按钮 */
submitForm(type,val) {
submitForm(type, val) {
if (type == 'private') {
this.form.storeId = this.pkCouponStore.storeId
if (this.form.paymentAmount > this.detailData.useCapital) {
@ -490,18 +500,37 @@ export default {
spinner: "el-icon-loading",
background: "rgba(0, 0, 0, 0.7)",
});
payMoneyCalcu
.storePaymentSave(this.form)
.then((response) => {
loading.close();
if (response.code == 200) {
this.$message.success('代付资金提交成功')
}
this.openBank = false
})
.catch(() => {
loading.close();
});
if (this.isCoin == 'N') {
payMoneyCalcu
.storePaymentSave(this.form)
.then((response) => {
loading.close();
if (response.code == 200) {
this.$message.success('代付资金提交成功')
}
this.openBank = false
this.getList()
})
.catch(() => {
loading.close();
});
}
if (this.isCoin == 'Y') {
payMoneyCalcu
.storePaymentCurrencySave(this.form)
.then((response) => {
loading.close();
if (response.code == 200) {
this.$message.success('代付资金提交成功')
}
this.openBank = false
this.getList()
})
.catch(() => {
loading.close();
});
}
}
});
}
@ -528,6 +557,7 @@ export default {
this.$message.success('划转资金提交成功')
}
this.openTransfer = false
this.getList()
})
.catch(() => {
loading.close();
@ -555,6 +585,7 @@ export default {
this.$message.success('冻结成功')
}
this.open = false
this.getList()
})
.catch(() => {
loading.close();
@ -565,7 +596,7 @@ export default {
},
//
updateBalance(row,v) {
updateBalance(row, v) {
this.reset(v);
this.detailData = row
this.form.accountNo = row.accountNo
@ -574,7 +605,7 @@ export default {
this.openBalance = true;
},
//
handleFrozen(row,v) {
handleFrozen(row, v) {
this.reset(v);
this.detailData = row
this.form.storeId = this.pkCouponStore.storeId

2
src/views/pay/payOrder/singleNeiChong.vue

@ -3,7 +3,7 @@
<div class="flexBet searchTop">
<div class="title flex m20">
<div class="bar"></div>
<div class="text">单笔内充</div>
<div class="text">{{ $route.meta.title }}</div>
</div>
</div>

2
src/views/pay/payRecord/payRecordBack.vue

@ -3,7 +3,7 @@
<div class="flexBet searchTop">
<div class="title flex m20">
<div class="bar"></div>
<div class="text">下游回调日志</div>
<div class="text">{{ $route.meta.title }}</div>
</div>
<el-row :gutter="10" class="mb8">
<!-- <el-col :span="1.5">

2
src/views/pay/payRecord/payRecordDown.vue

@ -3,7 +3,7 @@
<div class="flexBet searchTop">
<div class="title flex m20">
<div class="bar"></div>
<div class="text">下游接口日志</div>
<div class="text">{{ $route.meta.title }}</div>
</div>
<el-row :gutter="10" class="mb8">
<!-- <el-col :span="1.5">

2
src/views/pay/payRecord/payRecordUp.vue

@ -3,7 +3,7 @@
<div class="flexBet searchTop">
<div class="title flex m20">
<div class="bar"></div>
<div class="text">上游接口日志</div>
<div class="text">{{ $route.meta.title }}</div>
</div>
<el-row :gutter="10" class="mb8">
<!-- <el-col :span="1.5">

11
src/views/pay/payTest/payCode.vue

@ -3,7 +3,7 @@
<div class="flexBet searchTop">
<div class="title flex m20">
<div class="bar"></div>
<div class="text">扫码支付</div>
<div class="text">{{ $route.meta.title }}</div>
</div>
</div>
<!-- v-loading="loading" -->
@ -229,21 +229,26 @@ export default {
reqData: this.form.req_data,
mediaType: this.form.mediaType,
}
payTest
payTest
.payCode(form)
.then((response) => {
this.resMsg = response.msg
let s = JSON.parse(response.msg)
this.form.resp = s.codeImgUrl
});
},
//
handleSay() {
payTest
payTest
.paySign(this.form)
.then((response) => {
this.form.req_data = response.msg
});
},
init() {
common_api.payTypeAll().then((response) => {

2
src/views/pay/payTest/payDai.vue

@ -3,7 +3,7 @@
<div class="flexBet searchTop">
<div class="title flex m20">
<div class="bar"></div>
<div class="text">代付</div>
<div class="text">{{ $route.meta.title }}</div>
</div>
</div>
<!-- v-loading="loading" -->

305
src/views/pay/payTest/payucode.vue

@ -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>

280
src/views/pay/payTest/payupay.vue

@ -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>

2
src/views/pay/payType/payBankManualUser.vue

@ -3,7 +3,7 @@
<div class="flexBet searchTop">
<div class="title flex m20">
<div class="bar"></div>
<div class="text">内充银行配置</div>
<div class="text">{{ $route.meta.title }}</div>
</div>
<el-row :gutter="10" class="mb8">

2
src/views/pay/payType/payChannelDefult.vue

@ -3,7 +3,7 @@
<div class="flexBet searchTop">
<div class="title flex m20">
<div class="bar"></div>
<div class="text">默认支付渠道配置</div>
<div class="text">{{ $route.meta.title }}</div>
</div>
</div>
<div v-loading="loading" class="bg">

2
src/views/pay/payType/payChannelOut.vue

@ -3,7 +3,7 @@
<div class="flexBet searchTop">
<div class="title flex m20">
<div class="bar"></div>
<div class="text">出金渠道配置</div>
<div class="text">{{ $route.meta.title }}</div>
</div>
<el-row :gutter="10" class="mb8">

2
src/views/pay/payType/payTypeChannel.vue

@ -3,7 +3,7 @@
<div class="flexBet searchTop">
<div class="title flex m20">
<div class="bar"></div>
<div class="text">渠道类型管理</div>
<div class="text">{{ $route.meta.title }}</div>
</div>
<el-row :gutter="10" class="mb8">

2
src/views/pay/payType/payTypeChannelManage.vue

@ -3,7 +3,7 @@
<div class="flexBet searchTop">
<div class="title flex m20">
<div class="bar"></div>
<div class="text">通道配置管理</div>
<div class="text">{{ $route.meta.title }}</div>
</div>
<el-row :gutter="10" class="mb8">

2
src/views/pay/payType/payTypeManage.vue

@ -3,7 +3,7 @@
<div class="flexBet searchTop">
<div class="title flex m20">
<div class="bar"></div>
<div class="text">支付类型管理</div>
<div class="text">{{ $route.meta.title }}</div>
</div>
<el-row :gutter="10" class="mb8">

2
src/views/pay/payType/payTypeSettleConfig.vue

@ -3,7 +3,7 @@
<div class="flexBet searchTop">
<div class="title flex m20">
<div class="bar"></div>
<div class="text">结算配置管理</div>
<div class="text">{{ $route.meta.title }}</div>
</div>
<el-row :gutter="10" class="mb8">

2
src/views/system/config/index.vue

@ -3,7 +3,7 @@
<div class="flexBet searchTop">
<div class="title flex m20">
<div class="bar"></div>
<div class="text">参数设置</div>
<div class="text">{{ $route.meta.title }}</div>
</div>
<el-row :gutter="10" class="mb8">

2
src/views/system/dept/index.vue

@ -3,7 +3,7 @@
<div class="flexBet searchTop">
<div class="title flex m20">
<div class="bar"></div>
<div class="text">部门管理</div>
<div class="text">{{ $route.meta.title }}</div>
</div>
<el-row :gutter="10" class="mb8">

2
src/views/system/dict/data.vue

@ -3,7 +3,7 @@
<div class="flexBet searchTop">
<div class="title flex m20">
<div class="bar"></div>
<div class="text">字典数据</div>
<div class="text">{{ $route.meta.title }}</div>
</div>
<el-row :gutter="10" class="mb8">
<el-col :span="1.5">

2
src/views/system/dict/index.vue

@ -3,7 +3,7 @@
<div class="flexBet searchTop">
<div class="title flex m20">
<div class="bar"></div>
<div class="text">字典管理</div>
<div class="text">{{ $route.meta.title }}</div>
</div>
<el-row :gutter="10" class="mb8">

2
src/views/system/menu/index.vue

@ -4,7 +4,7 @@
<div class="flexBet searchTop">
<div class="title flex m20">
<div class="bar"></div>
<div class="text">菜单管理</div>
<div class="text">{{ $route.meta.title }}</div>
</div>
<el-row :gutter="10" class="mb8">

2
src/views/system/notice/index.vue

@ -4,7 +4,7 @@
<div class="flexBet searchTop">
<div class="title flex m20">
<div class="bar"></div>
<div class="text">通知公告</div>
<div class="text">{{ $route.meta.title }}</div>
</div>
<el-row :gutter="10" class="mb8">

2
src/views/system/post/index.vue

@ -3,7 +3,7 @@
<div class="flexBet searchTop">
<div class="title flex m20">
<div class="bar"></div>
<div class="text">岗位管理</div>
<div class="text">{{ $route.meta.title }}</div>
</div>
<el-row :gutter="10" class="mb8">

2
src/views/system/role/index.vue

@ -4,7 +4,7 @@
<div class="flexBet searchTop">
<div class="title flex m20">
<div class="bar"></div>
<div class="text">角色管理</div>
<div class="text">{{ $route.meta.title }}</div>
</div>
<el-row :gutter="10" class="mb8">

2
src/views/tool/gen/index.vue

@ -3,7 +3,7 @@
<div class="flexBet searchTop">
<div class="title flex m20">
<div class="bar"></div>
<div class="text">代码生成</div>
<div class="text">{{ $route.meta.title }}</div>
</div>
<el-row :gutter="10" class="mb8">

311
src/views/tron/tronUsdtSync/index.vue

@ -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>

BIN
正式.zip

Binary file not shown.

BIN
测试.zip

Binary file not shown.
Loading…
Cancel
Save