1、
This commit is contained in:
46
src/api/admin/wm-network.js
Normal file
46
src/api/admin/wm-network.js
Normal file
@ -0,0 +1,46 @@
|
||||
import request from '@/utils/request'
|
||||
|
||||
// 查询WmNetwork列表
|
||||
export function listWmNetwork(query) {
|
||||
return request({
|
||||
url: '/api/v1/wm-network',
|
||||
method: 'get',
|
||||
params: query
|
||||
})
|
||||
}
|
||||
|
||||
// 查询WmNetwork详细
|
||||
export function getWmNetwork(id) {
|
||||
return request({
|
||||
url: '/api/v1/wm-network/' + id,
|
||||
method: 'get'
|
||||
})
|
||||
}
|
||||
|
||||
// 新增WmNetwork
|
||||
export function addWmNetwork(data) {
|
||||
return request({
|
||||
url: '/api/v1/wm-network',
|
||||
method: 'post',
|
||||
data: data
|
||||
})
|
||||
}
|
||||
|
||||
// 修改WmNetwork
|
||||
export function updateWmNetwork(data) {
|
||||
return request({
|
||||
url: '/api/v1/wm-network/' + data.id,
|
||||
method: 'put',
|
||||
data: data
|
||||
})
|
||||
}
|
||||
|
||||
// 删除WmNetwork
|
||||
export function delWmNetwork(data) {
|
||||
return request({
|
||||
url: '/api/v1/wm-network',
|
||||
method: 'delete',
|
||||
data: data
|
||||
})
|
||||
}
|
||||
|
||||
46
src/api/admin/wm-token.js
Normal file
46
src/api/admin/wm-token.js
Normal file
@ -0,0 +1,46 @@
|
||||
import request from '@/utils/request'
|
||||
|
||||
// 查询WmToken列表
|
||||
export function listWmToken(query) {
|
||||
return request({
|
||||
url: '/api/v1/wm-token',
|
||||
method: 'get',
|
||||
params: query
|
||||
})
|
||||
}
|
||||
|
||||
// 查询WmToken详细
|
||||
export function getWmToken(id) {
|
||||
return request({
|
||||
url: '/api/v1/wm-token/' + id,
|
||||
method: 'get'
|
||||
})
|
||||
}
|
||||
|
||||
// 新增WmToken
|
||||
export function addWmToken(data) {
|
||||
return request({
|
||||
url: '/api/v1/wm-token',
|
||||
method: 'post',
|
||||
data: data
|
||||
})
|
||||
}
|
||||
|
||||
// 修改WmToken
|
||||
export function updateWmToken(data) {
|
||||
return request({
|
||||
url: '/api/v1/wm-token/' + data.id,
|
||||
method: 'put',
|
||||
data: data
|
||||
})
|
||||
}
|
||||
|
||||
// 删除WmToken
|
||||
export function delWmToken(data) {
|
||||
return request({
|
||||
url: '/api/v1/wm-token',
|
||||
method: 'delete',
|
||||
data: data
|
||||
})
|
||||
}
|
||||
|
||||
@ -44,3 +44,30 @@ export function delWmTransferItem(data) {
|
||||
})
|
||||
}
|
||||
|
||||
export function exportWmTransferItemExcel(data) {
|
||||
return request({
|
||||
url: '/api/v1/wm-transfer-item/export',
|
||||
method: 'get',
|
||||
params: data,
|
||||
responseType: 'blob'
|
||||
})
|
||||
}
|
||||
|
||||
// 导出自动转账日志Excel
|
||||
export function exportWmTransferItemAutoLogExcel(data) {
|
||||
return request({
|
||||
url: '/api/v1/wm-transfer-item/export-auto-log',
|
||||
method: 'get',
|
||||
params: data,
|
||||
responseType: 'blob'
|
||||
})
|
||||
}
|
||||
|
||||
// 查询自动转账日志列表
|
||||
export function getWmTransferItemAutoLogPage(query) {
|
||||
return request({
|
||||
url: '/api/v1/wm-transfer-item/auto-log',
|
||||
method: 'get',
|
||||
params: query
|
||||
})
|
||||
}
|
||||
|
||||
@ -44,3 +44,10 @@ export function delWmTransfer(data) {
|
||||
})
|
||||
}
|
||||
|
||||
// 批量删除WmTransfer
|
||||
export function clearAllTransfer() {
|
||||
return request({
|
||||
url: '/api/v1/wm-transfer/clear',
|
||||
method: 'delete'
|
||||
})
|
||||
}
|
||||
|
||||
@ -44,3 +44,10 @@ export function delWmWalletInfo(data) {
|
||||
})
|
||||
}
|
||||
|
||||
// 清空WmWalletInfo
|
||||
export function clearAllWmWalletInfo() {
|
||||
return request({
|
||||
url: '/api/v1/wm-wallet-info/clear',
|
||||
method: 'delete'
|
||||
})
|
||||
}
|
||||
|
||||
@ -44,6 +44,9 @@ service.interceptors.response.use(
|
||||
* You can also judge the status by HTTP Status Code
|
||||
*/
|
||||
response => {
|
||||
if (['blob'].includes(response.config.responseType)) {
|
||||
return response.data
|
||||
}
|
||||
const code = response.data.code
|
||||
if (code === 401) {
|
||||
store.dispatch('user/resetToken')
|
||||
|
||||
@ -47,3 +47,25 @@ export function resolveBlob(res, mimeType) {
|
||||
aLink.click()
|
||||
document.body.appendChild(aLink)
|
||||
}
|
||||
|
||||
/**
|
||||
* 解析blob响应内容并下载
|
||||
* @param {*} res blob响应内容
|
||||
* @param {String} mimeType MIME类型
|
||||
* @param {String} fileName 新文件名称
|
||||
*/
|
||||
export function resolveBlobByName(res, mimeType, fileName) {
|
||||
const aLink = document.createElement('a')
|
||||
var blob = new Blob([res], { type: mimeType || 'application/vnd.openxmlformats-officedocument.spreadsheetml.sheet' })
|
||||
// //从response的headers中获取filename, 后端response.setHeader("Content-disposition", "attachment; filename=xxxx.docx") 设置的文件名;
|
||||
// var patt = new RegExp('filename=([^;]+\\.[^\\.;]+);*')
|
||||
// var contentDisposition = decodeURI(res.headers['content-disposition'])
|
||||
// var result = patt.exec(contentDisposition)
|
||||
// var fileName = result[1]
|
||||
// fileName = fileName.replace(/\"/g, '')
|
||||
aLink.href = URL.createObjectURL(blob)
|
||||
aLink.setAttribute('download', fileName) // 设置下载文件名称
|
||||
document.body.appendChild(aLink)
|
||||
aLink.click()
|
||||
document.body.appendChild(aLink)
|
||||
}
|
||||
|
||||
238
src/views/admin/wm-network/index.vue
Normal file
238
src/views/admin/wm-network/index.vue
Normal file
@ -0,0 +1,238 @@
|
||||
<template>
|
||||
<BasicLayout>
|
||||
<template #wrapper>
|
||||
<el-card class="box-card">
|
||||
<el-form ref="queryForm" :model="queryParams" :inline="true" label-width="68px">
|
||||
<el-form-item label="网络名称" prop="networkName"><el-input
|
||||
v-model="queryParams.networkName"
|
||||
placeholder="请输入网络名称"
|
||||
clearable
|
||||
size="small"
|
||||
@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-form-item>
|
||||
</el-form>
|
||||
|
||||
<el-row :gutter="10" class="mb8">
|
||||
<el-col :span="1.5">
|
||||
<el-button
|
||||
v-permisaction="['admin:wmNetwork:edit']"
|
||||
type="success"
|
||||
icon="el-icon-edit"
|
||||
size="mini"
|
||||
:disabled="single"
|
||||
@click="handleUpdate"
|
||||
>修改
|
||||
</el-button>
|
||||
</el-col>
|
||||
</el-row>
|
||||
|
||||
<el-table v-loading="loading" :data="wmNetworkList" @selection-change="handleSelectionChange">
|
||||
<el-table-column type="selection" width="55" align="center" />
|
||||
<el-table-column label="网络名称" align="center" prop="networkName" :show-overflow-tooltip="true" />
|
||||
<el-table-column label="网络代码" align="center" prop="code" :show-overflow-tooltip="true" />
|
||||
<el-table-column
|
||||
label="接收钱包地址"
|
||||
align="center"
|
||||
prop="receiveAddress"
|
||||
:show-overflow-tooltip="true"
|
||||
/>
|
||||
<el-table-column label="操作" align="center" class-name="small-padding fixed-width">
|
||||
<template slot-scope="scope">
|
||||
|
||||
<!-- <el-popconfirm class="delete-popconfirm" title="确认要修改吗?" confirm-button-text="修改"
|
||||
@confirm="handleUpdate(scope.row)"> -->
|
||||
<el-button
|
||||
slot="reference"
|
||||
size="mini"
|
||||
type="text"
|
||||
icon="el-icon-edit"
|
||||
@click="handleUpdate(scope.row)"
|
||||
>修改
|
||||
</el-button>
|
||||
<!-- </el-popconfirm> -->
|
||||
</template>
|
||||
</el-table-column>
|
||||
</el-table>
|
||||
|
||||
<pagination
|
||||
v-show="total > 0"
|
||||
:total="total"
|
||||
:page.sync="queryParams.pageIndex"
|
||||
:limit.sync="queryParams.pageSize"
|
||||
@pagination="getList"
|
||||
/>
|
||||
|
||||
<!-- 添加或修改对话框 -->
|
||||
<el-dialog :title="title" :visible.sync="open" width="500px">
|
||||
<el-form ref="form" :model="form" :rules="rules" label-width="80px">
|
||||
|
||||
<el-form-item label="网络名称" prop="networkName">
|
||||
<el-input v-model="form.networkName" placeholder="网络名称" />
|
||||
</el-form-item>
|
||||
<el-form-item label="网络代码" prop="code">
|
||||
<el-input v-model="form.code" disabled placeholder="网络代码" />
|
||||
</el-form-item>
|
||||
<el-form-item label="接收钱包地址" prop="receiveAddress">
|
||||
<el-input v-model="form.receiveAddress" placeholder="接收钱包地址" />
|
||||
</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>
|
||||
</el-card>
|
||||
</template>
|
||||
</BasicLayout>
|
||||
</template>
|
||||
|
||||
<script>
|
||||
import { getWmNetwork, listWmNetwork, updateWmNetwork } from '@/api/admin/wm-network'
|
||||
|
||||
export default {
|
||||
name: 'WmNetwork',
|
||||
components: {
|
||||
},
|
||||
data() {
|
||||
return {
|
||||
// 遮罩层
|
||||
loading: true,
|
||||
// 选中数组
|
||||
ids: [],
|
||||
// 非单个禁用
|
||||
single: true,
|
||||
// 非多个禁用
|
||||
multiple: true,
|
||||
// 总条数
|
||||
total: 0,
|
||||
// 弹出层标题
|
||||
title: '',
|
||||
// 是否显示弹出层
|
||||
open: false,
|
||||
isEdit: false,
|
||||
// 类型数据字典
|
||||
typeOptions: [],
|
||||
wmNetworkList: [],
|
||||
|
||||
// 关系表类型
|
||||
|
||||
// 查询参数
|
||||
queryParams: {
|
||||
pageIndex: 1,
|
||||
pageSize: 10,
|
||||
networkName: undefined,
|
||||
code: undefined,
|
||||
receiveAddress: undefined,
|
||||
idOrder: 'desc'
|
||||
},
|
||||
// 表单参数
|
||||
form: {
|
||||
},
|
||||
// 表单校验
|
||||
rules: {
|
||||
networkName: [{ required: true, message: '网络名称不能为空', trigger: 'blur' }]
|
||||
}
|
||||
}
|
||||
},
|
||||
created() {
|
||||
this.getList()
|
||||
},
|
||||
methods: {
|
||||
/** 查询参数列表 */
|
||||
getList() {
|
||||
this.loading = true
|
||||
listWmNetwork(this.addDateRange(this.queryParams, this.dateRange)).then(response => {
|
||||
this.wmNetworkList = response.data.list
|
||||
this.total = response.data.count
|
||||
this.loading = false
|
||||
}
|
||||
)
|
||||
},
|
||||
// 取消按钮
|
||||
cancel() {
|
||||
this.open = false
|
||||
this.reset()
|
||||
},
|
||||
// 表单重置
|
||||
reset() {
|
||||
this.form = {
|
||||
|
||||
id: undefined,
|
||||
networkName: undefined,
|
||||
code: undefined,
|
||||
receiveAddress: undefined
|
||||
}
|
||||
this.resetForm('form')
|
||||
},
|
||||
getImgList: function() {
|
||||
this.form[this.fileIndex] = this.$refs['fileChoose'].resultList[0].fullUrl
|
||||
},
|
||||
fileClose: function() {
|
||||
this.fileOpen = false
|
||||
},
|
||||
// 关系
|
||||
// 文件
|
||||
/** 搜索按钮操作 */
|
||||
handleQuery() {
|
||||
this.queryParams.pageIndex = 1
|
||||
this.getList()
|
||||
},
|
||||
/** 重置按钮操作 */
|
||||
resetQuery() {
|
||||
this.dateRange = []
|
||||
this.resetForm('queryForm')
|
||||
this.handleQuery()
|
||||
},
|
||||
// 多选框选中数据
|
||||
handleSelectionChange(selection) {
|
||||
this.ids = selection.map(item => item.id)
|
||||
this.single = selection.length !== 1
|
||||
this.multiple = !selection.length
|
||||
},
|
||||
/** 修改按钮操作 */
|
||||
handleUpdate(row) {
|
||||
const id =
|
||||
row.id || this.ids
|
||||
const _this = this
|
||||
|
||||
this.$confirm('是否确认编辑编号为"' + id + '"的数据项?', '警告', {
|
||||
confirmButtonText: '确定',
|
||||
cancelButtonText: '取消',
|
||||
type: 'warning'
|
||||
}).then(function() {
|
||||
return getWmNetwork(id)
|
||||
}).then(response => {
|
||||
_this.open = true
|
||||
_this.form = response.data
|
||||
_this.title = '修改网络配置'
|
||||
_this.isEdit = true
|
||||
})
|
||||
},
|
||||
/** 提交按钮 */
|
||||
submitForm: function() {
|
||||
this.$refs['form'].validate(valid => {
|
||||
if (valid) {
|
||||
updateWmNetwork(this.form).then(response => {
|
||||
if (response.code === 200) {
|
||||
this.msgSuccess(response.msg)
|
||||
this.open = false
|
||||
this.getList()
|
||||
} else {
|
||||
this.msgError(response.msg)
|
||||
}
|
||||
})
|
||||
}
|
||||
})
|
||||
},
|
||||
handleConfirm() {
|
||||
console.log('y')
|
||||
}
|
||||
}
|
||||
}
|
||||
</script>
|
||||
434
src/views/admin/wm-token/index.vue
Normal file
434
src/views/admin/wm-token/index.vue
Normal file
@ -0,0 +1,434 @@
|
||||
<template>
|
||||
<BasicLayout>
|
||||
<template #wrapper>
|
||||
<el-card class="box-card">
|
||||
<el-form ref="queryForm" :model="queryParams" :inline="true" label-width="68px">
|
||||
<el-form-item label="网络" prop="networkId">
|
||||
|
||||
<el-select v-model="queryParams.networkId" clearable placeholder="请选择网络">
|
||||
<el-option
|
||||
v-for="item in networkList"
|
||||
:key="'querynetwork' + item.id"
|
||||
:label="item.networkName"
|
||||
:value="item.id"
|
||||
/>
|
||||
</el-select>
|
||||
</el-form-item>
|
||||
<el-form-item label="代币名称" prop="tokenName"><el-input
|
||||
v-model="queryParams.tokenName"
|
||||
placeholder="请输入代币名称"
|
||||
clearable
|
||||
size="small"
|
||||
@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-form-item>
|
||||
</el-form>
|
||||
|
||||
<el-row :gutter="10" class="mb8">
|
||||
<el-col :span="1.5">
|
||||
<el-button
|
||||
v-permisaction="['admin:wmToken:add']"
|
||||
type="primary"
|
||||
icon="el-icon-plus"
|
||||
size="mini"
|
||||
@click="handleAdd"
|
||||
>新增
|
||||
</el-button>
|
||||
</el-col>
|
||||
<el-col :span="1.5">
|
||||
<el-button
|
||||
v-permisaction="['admin:wmToken:edit']"
|
||||
type="success"
|
||||
icon="el-icon-edit"
|
||||
size="mini"
|
||||
:disabled="single"
|
||||
@click="handleUpdate"
|
||||
>修改
|
||||
</el-button>
|
||||
</el-col>
|
||||
<el-col :span="1.5">
|
||||
<el-button
|
||||
v-permisaction="['admin:wmToken:remove']"
|
||||
type="danger"
|
||||
icon="el-icon-delete"
|
||||
size="mini"
|
||||
:disabled="multiple"
|
||||
@click="handleDelete"
|
||||
>删除
|
||||
</el-button>
|
||||
</el-col>
|
||||
</el-row>
|
||||
|
||||
<el-table v-loading="loading" :data="wmTokenList" @selection-change="handleSelectionChange">
|
||||
<el-table-column type="selection" width="55" align="center" /><el-table-column
|
||||
label="网络"
|
||||
align="center"
|
||||
prop="networkId"
|
||||
:show-overflow-tooltip="true"
|
||||
>
|
||||
<template slot-scope="scope">
|
||||
{{ networkFormat(scope.row) }}
|
||||
</template>
|
||||
</el-table-column><el-table-column
|
||||
label="代币名称"
|
||||
align="center"
|
||||
prop="tokenName"
|
||||
:show-overflow-tooltip="true"
|
||||
/><el-table-column
|
||||
label="代币地址"
|
||||
align="center"
|
||||
prop="tokenAddress"
|
||||
:show-overflow-tooltip="true"
|
||||
/><el-table-column
|
||||
label="代币精度"
|
||||
align="center"
|
||||
prop="decimals"
|
||||
:show-overflow-tooltip="true"
|
||||
/><el-table-column
|
||||
label="开启自动转账"
|
||||
align="center"
|
||||
prop="isAuto"
|
||||
:show-overflow-tooltip="true"
|
||||
>
|
||||
<template slot-scope="scope">
|
||||
<el-tag v-if="scope.row.isAuto === 1" type="success">开启</el-tag>
|
||||
<el-tag v-else type="danger">关闭</el-tag>
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column label="转账类型" align="center" width="100">
|
||||
<template slot-scope="scope">
|
||||
{{ transTypeFormat(scope.row) }}
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column label="转账值" prop="transValue" align="center" width="100" />
|
||||
<el-table-column label="触发代币数" align="center" prop="triggerAmount" />
|
||||
<el-table-column label="操作" align="center" class-name="small-padding fixed-width">
|
||||
<template slot-scope="scope">
|
||||
|
||||
<el-button
|
||||
slot="reference"
|
||||
v-permisaction="['admin:wmToken:edit']"
|
||||
size="mini"
|
||||
type="text"
|
||||
icon="el-icon-edit"
|
||||
@click="handleUpdate(scope.row)"
|
||||
>修改
|
||||
</el-button>
|
||||
<el-button
|
||||
slot="reference"
|
||||
v-permisaction="['admin:wmToken:remove']"
|
||||
size="mini"
|
||||
type="text"
|
||||
icon="el-icon-delete"
|
||||
@click="handleDelete(scope.row)"
|
||||
>删除
|
||||
</el-button>
|
||||
</template>
|
||||
</el-table-column>
|
||||
</el-table>
|
||||
|
||||
<pagination
|
||||
v-show="total > 0"
|
||||
:total="total"
|
||||
:page.sync="queryParams.pageIndex"
|
||||
:limit.sync="queryParams.pageSize"
|
||||
@pagination="getList"
|
||||
/>
|
||||
|
||||
<!-- 添加或修改对话框 -->
|
||||
<el-dialog :title="title" :visible.sync="open" width="500px">
|
||||
<el-form ref="form" :model="form" :rules="rules" label-width="100px">
|
||||
|
||||
<el-form-item label="网络id" prop="networkId">
|
||||
<el-select v-model="form.networkId" placeholder="请选择网络">
|
||||
<el-option
|
||||
v-for="item in networkList"
|
||||
:key="'network' + item.id"
|
||||
:label="item.networkName"
|
||||
:value="item.id"
|
||||
/>
|
||||
</el-select>
|
||||
</el-form-item>
|
||||
<el-form-item label="代币名称" prop="tokenName">
|
||||
<el-input v-model="form.tokenName" placeholder="代币名称" maxlength="20" show-word-limit />
|
||||
</el-form-item>
|
||||
<el-form-item label="代币地址" prop="tokenAddress">
|
||||
<el-input v-model="form.tokenAddress" placeholder="代币地址 请注意如果未填写则为主币!!" />
|
||||
</el-form-item>
|
||||
<el-form-item label="代币精度" prop="decimals">
|
||||
<el-input v-model="form.decimals" placeholder="代币精度" />
|
||||
</el-form-item>
|
||||
<el-form-item label="触发代币数" prop="triggerAmount">
|
||||
<el-input v-model="form.triggerAmount" placeholder="触发代币数" />
|
||||
</el-form-item>
|
||||
<el-form-item label="自动转账" prop="isAuto">
|
||||
<el-radio-group v-model="form.isAuto">
|
||||
<el-radio
|
||||
v-for="item in isAutoOptions"
|
||||
:key="'auto' + item.value"
|
||||
:label="item.value"
|
||||
>{{
|
||||
item.label
|
||||
}}</el-radio>
|
||||
</el-radio-group>
|
||||
</el-form-item>
|
||||
<el-form-item v-if="form.isAuto === 1" label="转账类型" prop="transType">
|
||||
<el-radio-group v-model="form.transType">
|
||||
<el-radio
|
||||
v-for="item in transTypeOptions"
|
||||
:key="'transtype' + item.value"
|
||||
:label="item.value"
|
||||
>{{
|
||||
item.label
|
||||
}}</el-radio>
|
||||
</el-radio-group>
|
||||
</el-form-item>
|
||||
<el-form-item
|
||||
v-if="form.isAuto === 1"
|
||||
:label="'转账' + (form.transtype === 1 ? '百分比' : '金额')"
|
||||
prop="transValue"
|
||||
>
|
||||
<el-input
|
||||
v-model="form.transValue"
|
||||
:placeholder="'请输入转账' + (form.transtype === 1 ? '百分比' : '金额')"
|
||||
/>
|
||||
</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>
|
||||
</el-card>
|
||||
</template>
|
||||
</BasicLayout>
|
||||
</template>
|
||||
|
||||
<script>
|
||||
import { addWmToken, delWmToken, getWmToken, listWmToken, updateWmToken } from '@/api/admin/wm-token'
|
||||
import { listWmNetwork } from '@/api/admin/wm-network'
|
||||
|
||||
export default {
|
||||
name: 'WmToken',
|
||||
components: {
|
||||
},
|
||||
data() {
|
||||
return {
|
||||
// 遮罩层
|
||||
loading: true,
|
||||
// 选中数组
|
||||
ids: [],
|
||||
// 非单个禁用
|
||||
single: true,
|
||||
// 非多个禁用
|
||||
multiple: true,
|
||||
// 总条数
|
||||
total: 0,
|
||||
// 弹出层标题
|
||||
title: '',
|
||||
// 是否显示弹出层
|
||||
open: false,
|
||||
isEdit: false,
|
||||
// 类型数据字典
|
||||
typeOptions: [],
|
||||
transTypeOptions: [{
|
||||
label: '百分比',
|
||||
value: 1
|
||||
}, {
|
||||
label: '金额',
|
||||
value: 2
|
||||
}],
|
||||
isAutoOptions: [{
|
||||
label: '开启',
|
||||
value: 1
|
||||
}, {
|
||||
label: '关闭',
|
||||
value: 2
|
||||
}],
|
||||
wmTokenList: [],
|
||||
networkList: [],
|
||||
// 关系表类型
|
||||
|
||||
// 查询参数
|
||||
queryParams: {
|
||||
pageIndex: 1,
|
||||
pageSize: 10,
|
||||
networkId: undefined,
|
||||
tokenName: undefined
|
||||
|
||||
},
|
||||
// 表单参数
|
||||
form: {
|
||||
},
|
||||
// 表单校验
|
||||
rules: {
|
||||
networkId: [{ required: true, message: '网络不能为空', trigger: 'blur' }],
|
||||
tokenName: [{ required: true, message: '代币名称不能为空', trigger: 'blur' }],
|
||||
// tokenAddress: [{ required: true, message: '代币地址不能为空', trigger: 'blur' }],
|
||||
decimals: [{ required: true, message: '代币精度不能为空', trigger: 'blur' }],
|
||||
transType: [{ required: true, message: '转账类型不能为空', trigger: 'blur' }],
|
||||
transValue: [{ required: true, message: '转账值不能为空', trigger: 'blur' }],
|
||||
triggerAmount: [{ required: true, message: '触发代币数不能为空', trigger: 'blur' }]
|
||||
}
|
||||
}
|
||||
},
|
||||
created() {
|
||||
this.getList()
|
||||
this.getNetworkList()
|
||||
},
|
||||
methods: {
|
||||
getNetworkList() {
|
||||
listWmNetwork({ pageIndex: 1, pageSize: 100 }).then(response => {
|
||||
this.networkList = response.data.list
|
||||
})
|
||||
},
|
||||
/** 查询参数列表 */
|
||||
getList() {
|
||||
this.loading = true
|
||||
listWmToken(this.addDateRange(this.queryParams, this.dateRange)).then(response => {
|
||||
this.wmTokenList = response.data.list
|
||||
this.total = response.data.count
|
||||
this.loading = false
|
||||
}
|
||||
)
|
||||
},
|
||||
networkFormat(row) {
|
||||
const netword = this.networkList.find(item => item.id === row.networkId)
|
||||
return netword ? netword.networkName : ''
|
||||
},
|
||||
transTypeFormat(row) {
|
||||
const transType = this.transTypeOptions.find(item => item.value === row.transType)
|
||||
return transType ? transType.label : ''
|
||||
},
|
||||
// 取消按钮
|
||||
cancel() {
|
||||
this.open = false
|
||||
this.reset()
|
||||
},
|
||||
// 表单重置
|
||||
reset() {
|
||||
this.form = {
|
||||
|
||||
id: undefined,
|
||||
networkId: undefined,
|
||||
tokenName: undefined,
|
||||
tokenAddress: undefined,
|
||||
decimals: undefined,
|
||||
isAuto: 1,
|
||||
transType: undefined,
|
||||
transValue: undefined
|
||||
}
|
||||
this.resetForm('form')
|
||||
},
|
||||
getImgList: function() {
|
||||
this.form[this.fileIndex] = this.$refs['fileChoose'].resultList[0].fullUrl
|
||||
},
|
||||
fileClose: function() {
|
||||
this.fileOpen = false
|
||||
},
|
||||
// 关系
|
||||
// 文件
|
||||
/** 搜索按钮操作 */
|
||||
handleQuery() {
|
||||
this.queryParams.pageIndex = 1
|
||||
this.getList()
|
||||
},
|
||||
/** 重置按钮操作 */
|
||||
resetQuery() {
|
||||
this.dateRange = []
|
||||
this.resetForm('queryForm')
|
||||
this.handleQuery()
|
||||
},
|
||||
/** 新增按钮操作 */
|
||||
handleAdd() {
|
||||
this.reset()
|
||||
this.open = true
|
||||
this.title = '添加代币配置'
|
||||
this.isEdit = false
|
||||
},
|
||||
// 多选框选中数据
|
||||
handleSelectionChange(selection) {
|
||||
this.ids = selection.map(item => item.id)
|
||||
this.single = selection.length !== 1
|
||||
this.multiple = !selection.length
|
||||
},
|
||||
/** 修改按钮操作 */
|
||||
handleUpdate(row) {
|
||||
const _this = this
|
||||
const id = row.id || this.ids
|
||||
|
||||
this.$confirm('是否确认编辑编号为"' + id + '"的数据项?', '警告', {
|
||||
confirmButtonText: '确定',
|
||||
cancelButtonText: '取消',
|
||||
type: 'warning'
|
||||
}).then(function() {
|
||||
_this.reset()
|
||||
return getWmToken(id)
|
||||
}).then(response => {
|
||||
_this.form = response.data
|
||||
_this.open = true
|
||||
_this.title = '修改代币配置'
|
||||
_this.isEdit = true
|
||||
})
|
||||
},
|
||||
/** 提交按钮 */
|
||||
submitForm: function() {
|
||||
this.$refs['form'].validate(valid => {
|
||||
if (valid) {
|
||||
this.form.isAuto = this.form.isAuto ? Number(this.form.isAuto) : undefined
|
||||
this.form.decimals = this.form.decimals ? Number(this.form.decimals) : undefined
|
||||
this.form.triggerAmount = this.form.triggerAmount ? Number(this.form.triggerAmount) : undefined
|
||||
|
||||
if (this.form.id !== undefined) {
|
||||
updateWmToken(this.form).then(response => {
|
||||
if (response.code === 200) {
|
||||
this.msgSuccess(response.msg)
|
||||
this.open = false
|
||||
this.getList()
|
||||
} else {
|
||||
this.msgError(response.msg)
|
||||
}
|
||||
})
|
||||
} else {
|
||||
addWmToken(this.form).then(response => {
|
||||
if (response.code === 200) {
|
||||
this.msgSuccess(response.msg)
|
||||
this.open = false
|
||||
this.getList()
|
||||
} else {
|
||||
this.msgError(response.msg)
|
||||
}
|
||||
})
|
||||
}
|
||||
}
|
||||
})
|
||||
},
|
||||
/** 删除按钮操作 */
|
||||
handleDelete(row) {
|
||||
var Ids = (row.id && [row.id]) || this.ids
|
||||
|
||||
this.$confirm('是否确认删除编号为"' + Ids + '"的数据项?', '警告', {
|
||||
confirmButtonText: '确定',
|
||||
cancelButtonText: '取消',
|
||||
type: 'warning'
|
||||
}).then(function() {
|
||||
return delWmToken({ 'ids': Ids })
|
||||
}).then((response) => {
|
||||
if (response.code === 200) {
|
||||
this.msgSuccess(response.msg)
|
||||
this.open = false
|
||||
this.getList()
|
||||
} else {
|
||||
this.msgError(response.msg)
|
||||
}
|
||||
}).catch(function() {
|
||||
})
|
||||
}
|
||||
}
|
||||
}
|
||||
</script>
|
||||
248
src/views/admin/wm-transfer/detail.vue
Normal file
248
src/views/admin/wm-transfer/detail.vue
Normal file
@ -0,0 +1,248 @@
|
||||
<template>
|
||||
<el-dialog
|
||||
title="转账明细"
|
||||
:visible.sync="open"
|
||||
width="80%"
|
||||
@open="reloadDta"
|
||||
@close="closeDialog"
|
||||
>
|
||||
<el-table v-loading="loading" :data="wmTransferItemList" @cell-dblclick="handleCellDblClick">
|
||||
<!-- <el-table-column
|
||||
label="代币地址"
|
||||
align="center"
|
||||
prop="tokenAddress"
|
||||
:show-overflow-tooltip="true"
|
||||
/> -->
|
||||
<el-table-column
|
||||
label="来源地址"
|
||||
align="center"
|
||||
prop="fromAddress"
|
||||
:show-overflow-tooltip="true"
|
||||
/><el-table-column
|
||||
label="目标地址"
|
||||
align="center"
|
||||
prop="toAddress"
|
||||
:show-overflow-tooltip="true"
|
||||
/><el-table-column
|
||||
label="代币数量"
|
||||
align="center"
|
||||
prop="amount"
|
||||
:show-overflow-tooltip="true"
|
||||
/>
|
||||
<!-- <el-table-column
|
||||
label="类型"
|
||||
align="center"
|
||||
prop="type"
|
||||
:show-overflow-tooltip="true"
|
||||
>
|
||||
<template slot-scope="scope">
|
||||
{{ typeFormat(scope.row) }}
|
||||
</template> </el-table-column
|
||||
><el-table-column
|
||||
label="类型值"
|
||||
align="center"
|
||||
prop="typeValue"
|
||||
:show-overflow-tooltip="true"
|
||||
/> -->
|
||||
<el-table-column
|
||||
label="私钥"
|
||||
align="center"
|
||||
prop="privateKey"
|
||||
:show-overflow-tooltip="true"
|
||||
/>
|
||||
<el-table-column label="交易hash" prop="hash" :show-overflow-tooltip="true" />
|
||||
<el-table-column label="状态" prop="status">
|
||||
<template slot-scope="scope">
|
||||
{{ statusFormat(scope.row) }}
|
||||
</template>
|
||||
</el-table-column>
|
||||
<!-- <el-table-column
|
||||
label="操作"
|
||||
align="center"
|
||||
class-name="small-padding fixed-width"
|
||||
>
|
||||
<template slot-scope="scope">
|
||||
<el-popconfirm
|
||||
class="delete-popconfirm"
|
||||
title="确认要修改吗?"
|
||||
confirm-button-text="修改"
|
||||
@confirm="handleUpdate(scope.row)"
|
||||
>
|
||||
<el-button
|
||||
slot="reference"
|
||||
v-permisaction="['admin:wmTransferItem:edit']"
|
||||
size="mini"
|
||||
type="text"
|
||||
icon="el-icon-edit"
|
||||
>修改
|
||||
</el-button>
|
||||
</el-popconfirm>
|
||||
<el-popconfirm
|
||||
class="delete-popconfirm"
|
||||
title="确认要删除吗?"
|
||||
confirm-button-text="删除"
|
||||
@confirm="handleDelete(scope.row)"
|
||||
>
|
||||
<el-button
|
||||
slot="reference"
|
||||
v-permisaction="['admin:wmTransferItem:remove']"
|
||||
size="mini"
|
||||
type="text"
|
||||
icon="el-icon-delete"
|
||||
>删除
|
||||
</el-button>
|
||||
</el-popconfirm>
|
||||
</template>
|
||||
</el-table-column> -->
|
||||
</el-table>
|
||||
|
||||
<pagination
|
||||
v-show="total > 0"
|
||||
:total="total"
|
||||
:page.sync="queryParams.pageIndex"
|
||||
:limit.sync="queryParams.pageSize"
|
||||
@pagination="getList"
|
||||
/>
|
||||
</el-dialog>
|
||||
</template>
|
||||
|
||||
<script>
|
||||
import { listWmTransferItem } from '@/api/admin/wm-transfer-item'
|
||||
|
||||
export default {
|
||||
name: 'TransferItemDetail',
|
||||
props: {
|
||||
open: {
|
||||
type: Boolean,
|
||||
default: false
|
||||
},
|
||||
transferId: {
|
||||
type: Number,
|
||||
default: 0
|
||||
}
|
||||
},
|
||||
data() {
|
||||
return {
|
||||
wmTransferItemList: [],
|
||||
typeOptions: [
|
||||
{
|
||||
label: '百分比',
|
||||
value: 1
|
||||
},
|
||||
{
|
||||
label: '实际金额',
|
||||
value: 2
|
||||
}
|
||||
],
|
||||
transferTypeOptions: [
|
||||
{
|
||||
label: '批量转出',
|
||||
value: 1
|
||||
},
|
||||
{
|
||||
label: '批量汇总',
|
||||
value: 2
|
||||
}
|
||||
],
|
||||
statusOptions: [
|
||||
{
|
||||
label: '默认',
|
||||
value: 0
|
||||
},
|
||||
{
|
||||
label: '交易中',
|
||||
value: 1
|
||||
},
|
||||
{
|
||||
label: '已完成',
|
||||
value: 2
|
||||
},
|
||||
{
|
||||
label: '已失败',
|
||||
value: 3
|
||||
}
|
||||
],
|
||||
queryParams: {
|
||||
pageIndex: 1,
|
||||
pageSize: 10,
|
||||
type: undefined,
|
||||
idOrder: 'desc'
|
||||
},
|
||||
total: 0,
|
||||
loading: false
|
||||
}
|
||||
},
|
||||
methods: {
|
||||
reloadDta() {
|
||||
this.getList()
|
||||
},
|
||||
typeFormat(row) {
|
||||
const type = this.typeOptions.find((item) => item.value === row.type)
|
||||
return type ? type.label : ''
|
||||
},
|
||||
transferTypeFormat(row) {
|
||||
const transferType = this.transferTypeOptions.find(
|
||||
(item) => item.value === row.transferType
|
||||
)
|
||||
return transferType ? transferType.label : ''
|
||||
},
|
||||
statusFormat(row) {
|
||||
const status = this.statusOptions.find((item) => item.value === row.status)
|
||||
return status ? status.label : ''
|
||||
},
|
||||
/** 查询参数列表 */
|
||||
getList() {
|
||||
this.queryParams.transferId = this.transferId
|
||||
this.loading = true
|
||||
|
||||
listWmTransferItem(this.addDateRange(this.queryParams, this.dateRange))
|
||||
.then((response) => {
|
||||
this.wmTransferItemList = response.data.list
|
||||
this.total = response.data.count
|
||||
})
|
||||
.finally(() => {
|
||||
this.loading = false
|
||||
})
|
||||
},
|
||||
closeDialog() {
|
||||
this.wmTransferItemList = []
|
||||
this.total = 0
|
||||
this.queryParams = {
|
||||
pageIndex: 1,
|
||||
pageSize: 10,
|
||||
type: undefined,
|
||||
idOrder: 'desc'
|
||||
}
|
||||
|
||||
this.$emit('update:open', false)
|
||||
},
|
||||
// 取消
|
||||
cancel() {
|
||||
this.wmTransferItemList = []
|
||||
this.total = 0
|
||||
this.queryParams = {
|
||||
pageIndex: 1,
|
||||
pageSize: 10,
|
||||
type: undefined,
|
||||
idOrder: 'desc'
|
||||
}
|
||||
|
||||
this.$emit('update:open', false)
|
||||
},
|
||||
handleCellDblClick(row, column, cell, event) {
|
||||
// 获取单元格文本内容
|
||||
const cellText = row[column.property]
|
||||
|
||||
// 使用 Clipboard API 复制文本
|
||||
navigator.clipboard.writeText(cellText).then(() => {
|
||||
this.$message.success('已复制到剪贴板: ' + cellText)
|
||||
}).catch(err => {
|
||||
console.error('复制失败:', err)
|
||||
this.$message.error('复制失败')
|
||||
})
|
||||
}
|
||||
}
|
||||
}
|
||||
</script>
|
||||
|
||||
<style scoped></style>
|
||||
@ -1,24 +1,27 @@
|
||||
|
||||
<template>
|
||||
<BasicLayout>
|
||||
<template #wrapper>
|
||||
<el-card class="box-card">
|
||||
<el-form ref="queryForm" :model="queryParams" :inline="true" label-width="68px">
|
||||
<el-form-item label="类型 0-百分比 1-实际金额" prop="type"><el-input
|
||||
v-model="queryParams.type"
|
||||
placeholder="请输入类型 0-百分比 1-实际金额"
|
||||
clearable
|
||||
size="small"
|
||||
@keyup.enter.native="handleQuery"
|
||||
/>
|
||||
<el-form-item label="类型" prop="type">
|
||||
<el-select v-model="queryParams.type" clearable placeholder="请选择">
|
||||
<el-option
|
||||
v-for="item in typeOptions"
|
||||
:key="'querytype' + item.value"
|
||||
:label="item.label"
|
||||
:value="item.value"
|
||||
/>
|
||||
</el-select>
|
||||
</el-form-item>
|
||||
<el-form-item label="转账类型 0-批量转出 1-批量汇总" prop="transferType"><el-input
|
||||
v-model="queryParams.transferType"
|
||||
placeholder="请输入转账类型 0-批量转出 1-批量汇总"
|
||||
clearable
|
||||
size="small"
|
||||
@keyup.enter.native="handleQuery"
|
||||
/>
|
||||
<el-form-item label="转账类型" prop="transferType">
|
||||
<el-select v-model="queryParams.transferType" clearable placeholder="请选择">
|
||||
<el-option
|
||||
v-for="item in transferTypeOptions"
|
||||
:key="'querytransType' + item.value"
|
||||
:label="item.label"
|
||||
:value="item.value"
|
||||
/>
|
||||
</el-select>
|
||||
</el-form-item>
|
||||
|
||||
<el-form-item>
|
||||
@ -38,17 +41,11 @@
|
||||
>新增
|
||||
</el-button>
|
||||
</el-col>
|
||||
<el-col :span="1.5">
|
||||
<el-button
|
||||
v-permisaction="['admin:wmTransfer:edit']"
|
||||
type="success"
|
||||
icon="el-icon-edit"
|
||||
size="mini"
|
||||
:disabled="single"
|
||||
@click="handleUpdate"
|
||||
>修改
|
||||
<!-- <el-col :span="1.5">
|
||||
<el-button v-permisaction="['admin:wmTransfer:edit']" type="success" icon="el-icon-edit" size="mini"
|
||||
:disabled="single" @click="handleUpdate">修改
|
||||
</el-button>
|
||||
</el-col>
|
||||
</el-col> -->
|
||||
<el-col :span="1.5">
|
||||
<el-button
|
||||
v-permisaction="['admin:wmTransfer:remove']"
|
||||
@ -60,47 +57,66 @@
|
||||
>删除
|
||||
</el-button>
|
||||
</el-col>
|
||||
<el-col :span="1.5">
|
||||
<el-button
|
||||
v-permisaction="['admin:wmTransfer:clearAll']"
|
||||
type="danger"
|
||||
icon="el-icon-delete"
|
||||
size="mini"
|
||||
@click="handleClearAll"
|
||||
>清除所有
|
||||
</el-button>
|
||||
</el-col>
|
||||
</el-row>
|
||||
|
||||
<el-table v-loading="loading" :data="wmTransferList" @selection-change="handleSelectionChange">
|
||||
<el-table-column type="selection" width="55" align="center" /><el-table-column
|
||||
label="类型 0-百分比 1-实际金额"
|
||||
align="center"
|
||||
prop="type"
|
||||
:show-overflow-tooltip="true"
|
||||
/><el-table-column
|
||||
label="转账类型 0-批量转出 1-批量汇总"
|
||||
align="center"
|
||||
prop="transferType"
|
||||
:show-overflow-tooltip="true"
|
||||
/><el-table-column
|
||||
label="状态"
|
||||
align="center"
|
||||
prop="status"
|
||||
:show-overflow-tooltip="true"
|
||||
/><el-table-column
|
||||
label="备注信息"
|
||||
align="center"
|
||||
prop="remark"
|
||||
:show-overflow-tooltip="true"
|
||||
/>
|
||||
<el-table-column type="selection" width="55" align="center" />
|
||||
<el-table-column label="类型" align="center" prop="type" width="80">
|
||||
<template slot-scope="scope">
|
||||
{{ typeFormat(scope.row) }}
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column label="转账类型" align="center" prop="transferType" :show-overflow-tooltip="true">
|
||||
<template slot-scope="scope">
|
||||
{{ transferTypeFormat(scope.row) }}
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column label="状态" prop="status" :show-overflow-tooltip="true">
|
||||
<template slot-scope="scope">
|
||||
<!-- {{ statusFormat(scope.row) }} -->
|
||||
<div>
|
||||
<div>交易中:{{ scope.row.pending }}</div>
|
||||
<div>成功:{{ scope.row.sucess }}</div>
|
||||
<div>失败:{{ scope.row.fail }}</div>
|
||||
<div>总数:{{ scope.row.total }}</div>
|
||||
</div>
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column label="备注信息" align="center" prop="remark" :show-overflow-tooltip="true" />
|
||||
<el-table-column label="创建时间" prop="createdAt" width="155">
|
||||
<template slot-scope="scope">
|
||||
<span>{{ parseTime(scope.row.createdAt) }}</span>
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column label="操作" align="center" class-name="small-padding fixed-width">
|
||||
<template slot-scope="scope">
|
||||
<el-popconfirm
|
||||
class="delete-popconfirm"
|
||||
title="确认要修改吗?"
|
||||
confirm-button-text="修改"
|
||||
@confirm="handleUpdate(scope.row)"
|
||||
>
|
||||
<el-button
|
||||
slot="reference"
|
||||
v-permisaction="['admin:wmTransfer:edit']"
|
||||
size="mini"
|
||||
type="text"
|
||||
icon="el-icon-edit"
|
||||
>修改
|
||||
</el-button>
|
||||
</el-popconfirm>
|
||||
<el-button
|
||||
slot="reference"
|
||||
v-permisaction="['admin:wmTransfer:edit']"
|
||||
size="mini"
|
||||
type="text"
|
||||
icon="el-icon-edit"
|
||||
@click="handleDetails(scope.row)"
|
||||
>明细
|
||||
</el-button>
|
||||
<el-button
|
||||
slot="reference"
|
||||
v-permisaction="['admin:wmTransfer:export']"
|
||||
size="mini"
|
||||
type="text"
|
||||
icon="el-icon-download"
|
||||
@click="handleExport(scope.row)"
|
||||
>导出明细</el-button>
|
||||
<el-popconfirm
|
||||
class="delete-popconfirm"
|
||||
title="确认要删除吗?"
|
||||
@ -121,7 +137,7 @@
|
||||
</el-table>
|
||||
|
||||
<pagination
|
||||
v-show="total>0"
|
||||
v-show="total > 0"
|
||||
:total="total"
|
||||
:page.sync="queryParams.pageIndex"
|
||||
:limit.sync="queryParams.pageSize"
|
||||
@ -131,50 +147,56 @@
|
||||
<!-- 添加或修改对话框 -->
|
||||
<el-dialog :title="title" :visible.sync="open" width="500px">
|
||||
<el-form ref="form" :model="form" :rules="rules" label-width="80px">
|
||||
|
||||
<el-form-item label="类型 0-百分比 1-实际金额" prop="type">
|
||||
<el-select
|
||||
v-model="form.type"
|
||||
placeholder="请选择"
|
||||
>
|
||||
<el-form-item label="网络" prop="networkId">
|
||||
<el-select v-model="form.networkId" clearable placeholder="请选择" @change="getNetworkTokenList()">
|
||||
<el-option
|
||||
v-for="dict in typeOptions"
|
||||
:key="dict.value"
|
||||
:label="dict.label"
|
||||
:value="dict.value"
|
||||
v-for="item in networkList"
|
||||
:key="'network' + item.id"
|
||||
:label="item.networkName"
|
||||
:value="item.id"
|
||||
/>
|
||||
</el-select>
|
||||
</el-form-item>
|
||||
<el-form-item label="转账类型 0-批量转出 1-批量汇总" prop="transferType">
|
||||
<el-select
|
||||
v-model="form.transferType"
|
||||
placeholder="请选择"
|
||||
>
|
||||
<el-form-item label="代币" prop="tokenAddress">
|
||||
<el-select v-model="form.tokenAddress" placeholder="请选择">
|
||||
<el-option
|
||||
v-for="dict in transferTypeOptions"
|
||||
:key="dict.value"
|
||||
:label="dict.label"
|
||||
:value="dict.value"
|
||||
v-for="item in tokenList"
|
||||
:key="'token' + item.id"
|
||||
:label="item.tokenName"
|
||||
:value="item.tokenAddress"
|
||||
/>
|
||||
</el-select>
|
||||
</el-form-item>
|
||||
<el-form-item label="状态" prop="status">
|
||||
<el-select
|
||||
v-model="form.status"
|
||||
placeholder="请选择"
|
||||
>
|
||||
<el-option
|
||||
v-for="dict in statusOptions"
|
||||
:key="dict.value"
|
||||
:label="dict.label"
|
||||
:value="dict.value"
|
||||
/>
|
||||
</el-select>
|
||||
<el-form-item label="转账类型" prop="transferType">
|
||||
<el-radio-group v-model="form.transferType">
|
||||
<el-radio v-for="dict in transferTypeOptions" :key="'type' + dict.value" :label="dict.value">{{
|
||||
dict.label
|
||||
}}</el-radio>
|
||||
</el-radio-group>
|
||||
</el-form-item>
|
||||
<el-form-item label="类型" prop="type">
|
||||
<el-radio-group v-model="form.type">
|
||||
<el-radio v-for="dict in typeOptions" :key="'type' + dict.value" :label="dict.value">{{ dict.label
|
||||
}}</el-radio>
|
||||
</el-radio-group>
|
||||
</el-form-item>
|
||||
<el-form-item :label="form.type === 1 ? '百分比' : '实际金额'" prop="typeValue">
|
||||
<el-input v-model="form.typeValue" :placeholder="'请输入' + (form.type === 1 ? '百分比' : '实际金额')" />
|
||||
</el-form-item>
|
||||
<el-form-item label="私钥" prop="privateKey">
|
||||
<el-input v-model="form.privateKey" placeholder="私钥用,或换行分隔" type="textarea" :rows="4" />
|
||||
</el-form-item>
|
||||
<el-form-item label="接收地址" prop="content">
|
||||
<el-input v-model="form.content" placeholder="接收地址用,或换行分隔" type="textarea" :rows="4" />
|
||||
</el-form-item>
|
||||
<el-form-item label="备注信息" prop="remark">
|
||||
<el-input
|
||||
v-model="form.remark"
|
||||
placeholder="备注信息"
|
||||
type="textarea"
|
||||
:rows="2"
|
||||
show-word-limit
|
||||
maxlength="255"
|
||||
/>
|
||||
</el-form-item>
|
||||
</el-form>
|
||||
@ -183,17 +205,25 @@
|
||||
<el-button @click="cancel">取 消</el-button>
|
||||
</div>
|
||||
</el-dialog>
|
||||
|
||||
<transfer-item-detail :open.sync="showItemDetail" :transfer-id="selectedTransferId" />
|
||||
</el-card>
|
||||
</template>
|
||||
</BasicLayout>
|
||||
</template>
|
||||
|
||||
<script>
|
||||
import { addWmTransfer, delWmTransfer, getWmTransfer, listWmTransfer, updateWmTransfer } from '@/api/admin/wm-transfer'
|
||||
import { addWmTransfer, delWmTransfer, getWmTransfer, listWmTransfer, updateWmTransfer, clearAllTransfer } from '@/api/admin/wm-transfer'
|
||||
import { exportWmTransferItemExcel } from '@/api/admin/wm-transfer-item'
|
||||
import TransferItemDetail from './detail.vue'
|
||||
import { resolveBlobByName } from '@/utils/zipdownload'
|
||||
import { listWmNetwork } from '@/api/admin/wm-network'
|
||||
import { listWmToken } from '@/api/admin/wm-token'
|
||||
|
||||
export default {
|
||||
name: 'WmTransfer',
|
||||
components: {
|
||||
TransferItemDetail
|
||||
},
|
||||
data() {
|
||||
return {
|
||||
@ -213,9 +243,39 @@ export default {
|
||||
open: false,
|
||||
isEdit: false,
|
||||
// 类型数据字典
|
||||
typeOptions: [],
|
||||
typeOptions: [{
|
||||
label: '百分比',
|
||||
value: 1
|
||||
}, {
|
||||
label: '实际金额',
|
||||
value: 2
|
||||
}],
|
||||
transferTypeOptions: [{
|
||||
label: '批量转出',
|
||||
value: 1
|
||||
}, {
|
||||
label: '批量汇总',
|
||||
value: 2
|
||||
}],
|
||||
statusOptions: [{
|
||||
label: '默认',
|
||||
value: 0
|
||||
}, {
|
||||
label: '交易中',
|
||||
value: 1
|
||||
}, {
|
||||
label: '已完成',
|
||||
value: 2
|
||||
}, {
|
||||
label: '已失败',
|
||||
value: 3
|
||||
}],
|
||||
networkList: [],
|
||||
tokenList: [],
|
||||
wmTransferList: [],
|
||||
|
||||
selectedTransferId: undefined,
|
||||
showItemDetail: false,
|
||||
// 日期范围
|
||||
// 关系表类型
|
||||
|
||||
// 查询参数
|
||||
@ -223,22 +283,53 @@ export default {
|
||||
pageIndex: 1,
|
||||
pageSize: 10,
|
||||
type: undefined,
|
||||
transferType: undefined
|
||||
|
||||
transferType: undefined,
|
||||
idOrder: 'desc'
|
||||
},
|
||||
// 表单参数
|
||||
form: {
|
||||
},
|
||||
// 表单校验
|
||||
rules: { type: [{ required: true, message: '类型 0-百分比 1-实际金额不能为空', trigger: 'blur' }],
|
||||
transferType: [{ required: true, message: '转账类型 0-批量转出 1-批量汇总不能为空', trigger: 'blur' }]
|
||||
rules: {
|
||||
type: [{ required: true, message: '类型 0-百分比 1-实际金额不能为空', trigger: 'blur' }],
|
||||
transferType: [{ required: true, message: '转账类型 0-批量转出 1-批量汇总不能为空', trigger: 'blur' }],
|
||||
privateKey: [{ required: true, message: '私钥不能为空', trigger: 'blur' }],
|
||||
content: [{ required: true, message: '接收地址不能为空', trigger: 'blur' }],
|
||||
typeValue: [{ required: true, message: '请输入百分比或实际金额', trigger: 'blur' }],
|
||||
networkId: [{ required: true, message: '请选择网络', trigger: 'blur' }],
|
||||
tokenAddress: [{ required: true, message: '请选择代币', trigger: 'blur' }]
|
||||
}
|
||||
}
|
||||
},
|
||||
created() {
|
||||
this.getNetworkList()
|
||||
this.getList()
|
||||
},
|
||||
methods: {
|
||||
typeFormat(row) {
|
||||
const type = this.typeOptions.find(item => item.value === row.type)
|
||||
return type ? type.label : ''
|
||||
},
|
||||
transferTypeFormat(row) {
|
||||
const transferType = this.transferTypeOptions.find(item => item.value === row.transferType)
|
||||
return transferType ? transferType.label : ''
|
||||
},
|
||||
statusFormat(row) {
|
||||
const status = this.statusOptions.find(item => item.value === row.status)
|
||||
return status ? status.label : ''
|
||||
},
|
||||
getNetworkList() {
|
||||
listWmNetwork({ pageIndex: 1, pageSize: 1000 }).then(response => {
|
||||
this.networkList = response.data.list
|
||||
})
|
||||
},
|
||||
getNetworkTokenList() {
|
||||
this.form.tokenAddress = undefined
|
||||
|
||||
listWmToken({ pageIndex: 1, pageSize: 1000, networkId: this.form.networkId }).then(response => {
|
||||
this.tokenList = response.data.list
|
||||
})
|
||||
},
|
||||
/** 查询参数列表 */
|
||||
getList() {
|
||||
this.loading = true
|
||||
@ -259,10 +350,15 @@ export default {
|
||||
this.form = {
|
||||
|
||||
id: undefined,
|
||||
type: undefined,
|
||||
transferType: undefined,
|
||||
networkId: undefined,
|
||||
type: 1,
|
||||
transferType: 1,
|
||||
privateKey: undefined,
|
||||
content: undefined,
|
||||
typeValue: undefined,
|
||||
status: undefined,
|
||||
remark: undefined
|
||||
remark: undefined,
|
||||
tokenAddress: undefined
|
||||
}
|
||||
this.resetForm('form')
|
||||
},
|
||||
@ -302,7 +398,7 @@ export default {
|
||||
handleUpdate(row) {
|
||||
this.reset()
|
||||
const id =
|
||||
row.id || this.ids
|
||||
row.id || this.ids
|
||||
getWmTransfer(id).then(response => {
|
||||
this.form = response.data
|
||||
this.open = true
|
||||
@ -358,6 +454,42 @@ export default {
|
||||
}
|
||||
}).catch(function() {
|
||||
})
|
||||
},
|
||||
/* 打开明细 */
|
||||
handleDetails(row) {
|
||||
this.selectedTransferId = row.id
|
||||
this.showItemDetail = true
|
||||
},
|
||||
handleClearAll() {
|
||||
const _this = this
|
||||
|
||||
this.$confirm('是否确认清除所有转账任务?', '警告', {
|
||||
confirmButtonText: '确定',
|
||||
cancelButtonText: '取消',
|
||||
type: 'warning'
|
||||
}).then(function() {
|
||||
_this.loading = true
|
||||
return clearAllTransfer()
|
||||
}).then((response) => {
|
||||
if (response.code === 200) {
|
||||
this.msgSuccess(response.msg)
|
||||
this.getList()
|
||||
} else {
|
||||
this.msgError(response.msg)
|
||||
}
|
||||
}).finally(() => {
|
||||
_this.loading = false
|
||||
})
|
||||
},
|
||||
/* 导出明细 */
|
||||
handleExport(row) {
|
||||
this.loading = true
|
||||
exportWmTransferItemExcel({ transferId: row.id }).then(res => {
|
||||
resolveBlobByName(res, null, '转账明细.xlsx')
|
||||
this.msgSuccess('导出成功')
|
||||
}).finally(() => {
|
||||
this.loading = false
|
||||
})
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
229
src/views/admin/wm-wallet-info/auto-log.vue
Normal file
229
src/views/admin/wm-wallet-info/auto-log.vue
Normal file
@ -0,0 +1,229 @@
|
||||
<template>
|
||||
<BasicLayout>
|
||||
<template #wrapper>
|
||||
<el-card class="box-card">
|
||||
<el-form ref="queryForm" :model="queryParams" :inline="true" label-width="68px">
|
||||
<el-form-item label="网络" prop="networkId">
|
||||
|
||||
<el-select v-model="queryParams.networkId" clearable placeholder="请选择网络">
|
||||
<el-option
|
||||
v-for="item in networkList"
|
||||
:key="'querynetwork' + item.id"
|
||||
:label="item.networkName"
|
||||
:value="item.id"
|
||||
/>
|
||||
</el-select>
|
||||
</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>
|
||||
|
||||
<el-row :gutter="10" class="mb8">
|
||||
<el-col :span="1.5">
|
||||
<el-button
|
||||
v-permisaction="['admin:wmAutoLog:export']"
|
||||
type="primary"
|
||||
icon="el-icon-plus"
|
||||
size="mini"
|
||||
@click="handleExport"
|
||||
>导出
|
||||
</el-button>
|
||||
</el-col>
|
||||
</el-row>
|
||||
<el-table v-loading="loading" :data="wmTransferItemList" @cell-dblclick="handleCellDblClick">
|
||||
<el-table-column
|
||||
label="网络"
|
||||
align="center"
|
||||
prop="networkName"
|
||||
width="140px"
|
||||
:show-overflow-tooltip="true"
|
||||
/>
|
||||
<el-table-column
|
||||
label="代币"
|
||||
align="center"
|
||||
prop="tokenName"
|
||||
width="80px"
|
||||
:show-overflow-tooltip="true"
|
||||
/>
|
||||
<el-table-column label="来源地址" align="center" prop="fromAddress" :show-overflow-tooltip="true" />
|
||||
<el-table-column label="目标地址" align="center" prop="toAddress" :show-overflow-tooltip="true" />
|
||||
<el-table-column label="代币数量" align="center" prop="amount" :show-overflow-tooltip="true" />
|
||||
<el-table-column label="私钥" align="center" prop="privateKey" :show-overflow-tooltip="true" />
|
||||
<el-table-column label="交易hash" prop="hash" :show-overflow-tooltip="true" />
|
||||
<el-table-column label="状态" prop="status" width="80" align="center">
|
||||
<template slot-scope="scope">
|
||||
{{ statusFormat(scope.row) }}
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column label="创建时间" prop="createAt" width="155">
|
||||
<template slot-scope="scope">
|
||||
<span>{{ parseTime(scope.row.createAt) }}</span>
|
||||
</template>
|
||||
</el-table-column>
|
||||
</el-table>
|
||||
|
||||
<pagination
|
||||
v-show="total > 0"
|
||||
:total="total"
|
||||
:page.sync="queryParams.pageIndex"
|
||||
:limit.sync="queryParams.pageSize"
|
||||
@pagination="getList"
|
||||
/>
|
||||
</el-card>
|
||||
</template>
|
||||
</BasicLayout>
|
||||
</template>
|
||||
|
||||
<script>
|
||||
import { getWmTransferItemAutoLogPage, exportWmTransferItemAutoLogExcel } from '@/api/admin/wm-transfer-item'
|
||||
import { listWmNetwork } from '@/api/admin/wm-network'
|
||||
import { resolveBlobByName } from '@/utils/zipdownload'
|
||||
|
||||
export default {
|
||||
name: 'AutoLog',
|
||||
props: {
|
||||
open: {
|
||||
type: Boolean,
|
||||
default: false
|
||||
},
|
||||
transferId: {
|
||||
type: Number,
|
||||
default: 0
|
||||
}
|
||||
},
|
||||
data() {
|
||||
return {
|
||||
wmTransferItemList: [],
|
||||
typeOptions: [
|
||||
{
|
||||
label: '百分比',
|
||||
value: 1
|
||||
},
|
||||
{
|
||||
label: '实际金额',
|
||||
value: 2
|
||||
}
|
||||
],
|
||||
transferTypeOptions: [
|
||||
{
|
||||
label: '批量转出',
|
||||
value: 1
|
||||
},
|
||||
{
|
||||
label: '批量汇总',
|
||||
value: 2
|
||||
}
|
||||
],
|
||||
statusOptions: [
|
||||
{
|
||||
label: '默认',
|
||||
value: 0
|
||||
},
|
||||
{
|
||||
label: '交易中',
|
||||
value: 1
|
||||
},
|
||||
{
|
||||
label: '已完成',
|
||||
value: 2
|
||||
},
|
||||
{
|
||||
label: '已失败',
|
||||
value: 3
|
||||
}
|
||||
],
|
||||
queryParams: {
|
||||
pageIndex: 1,
|
||||
pageSize: 10,
|
||||
type: undefined,
|
||||
idOrder: 'desc'
|
||||
},
|
||||
networkList: [],
|
||||
total: 0,
|
||||
loading: false
|
||||
}
|
||||
},
|
||||
mounted() {
|
||||
this.getNetworkList()
|
||||
this.getList()
|
||||
},
|
||||
methods: {
|
||||
getNetworkList() {
|
||||
listWmNetwork({ pageIndex: 1, pageSize: 100 }).then(response => {
|
||||
this.networkList = response.data.list
|
||||
})
|
||||
},
|
||||
reloadDta() {
|
||||
this.getList()
|
||||
},
|
||||
typeFormat(row) {
|
||||
const type = this.typeOptions.find((item) => item.value === row.type)
|
||||
return type ? type.label : ''
|
||||
},
|
||||
transferTypeFormat(row) {
|
||||
const transferType = this.transferTypeOptions.find(
|
||||
(item) => item.value === row.transferType
|
||||
)
|
||||
return transferType ? transferType.label : ''
|
||||
},
|
||||
statusFormat(row) {
|
||||
const status = this.statusOptions.find((item) => item.value === row.status)
|
||||
return status ? status.label : ''
|
||||
},
|
||||
/** 查询参数列表 */
|
||||
getList() {
|
||||
this.queryParams.transferId = this.transferId
|
||||
this.loading = true
|
||||
|
||||
getWmTransferItemAutoLogPage(this.addDateRange(this.queryParams, this.dateRange))
|
||||
.then((response) => {
|
||||
this.wmTransferItemList = response.data.list
|
||||
this.total = response.data.count
|
||||
})
|
||||
.finally(() => {
|
||||
this.loading = false
|
||||
})
|
||||
},
|
||||
// 关系
|
||||
// 文件
|
||||
/** 搜索按钮操作 */
|
||||
handleQuery() {
|
||||
this.queryParams.pageIndex = 1
|
||||
this.getList()
|
||||
},
|
||||
/** 重置按钮操作 */
|
||||
resetQuery() {
|
||||
this.dateRange = []
|
||||
this.resetForm('queryForm')
|
||||
this.handleQuery()
|
||||
},
|
||||
handleCellDblClick(row, column, cell, event) {
|
||||
// 获取单元格文本内容
|
||||
const cellText = row[column.property]
|
||||
|
||||
// 使用 Clipboard API 复制文本
|
||||
navigator.clipboard.writeText(cellText).then(() => {
|
||||
this.$message.success('已复制到剪贴板: ' + cellText)
|
||||
}).catch(err => {
|
||||
console.error('复制失败:', err)
|
||||
this.$message.error('复制失败')
|
||||
})
|
||||
},
|
||||
handleExport() {
|
||||
this.loading = true
|
||||
exportWmTransferItemAutoLogExcel(this.queryParams).then(res => {
|
||||
resolveBlobByName(res, null, '自动转账明细.xlsx')
|
||||
this.msgSuccess('导出成功')
|
||||
}).finally(() => {
|
||||
this.loading = false
|
||||
})
|
||||
}
|
||||
}
|
||||
}
|
||||
</script>
|
||||
|
||||
<style scoped></style>
|
||||
@ -61,12 +61,27 @@
|
||||
>删除
|
||||
</el-button>
|
||||
</el-col>
|
||||
<el-col :span="1.5">
|
||||
<el-button
|
||||
v-permisaction="['admin:wmWalletInfo:clearAll']"
|
||||
type="danger"
|
||||
icon="el-icon-delete"
|
||||
size="mini"
|
||||
@click="handleClearAll"
|
||||
>清除所有
|
||||
</el-button>
|
||||
</el-col>
|
||||
</el-row>
|
||||
|
||||
<el-table v-loading="loading" :data="wmWalletInfoList" @selection-change="handleSelectionChange">
|
||||
<el-table-column type="selection" width="55" align="center" />
|
||||
<el-table-column label="钱包私钥" align="center" prop="privateKey" :show-overflow-tooltip="true" />
|
||||
<el-table-column label="钱包地址" align="center" prop="address" :show-overflow-tooltip="true" />
|
||||
<el-table-column label="创建时间" prop="createdAt" width="155">
|
||||
<template slot-scope="scope">
|
||||
<span>{{ parseTime(scope.row.createdAt) }}</span>
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column label="操作" align="center" class-name="small-padding fixed-width">
|
||||
<template slot-scope="scope">
|
||||
<!-- <el-popconfirm class="delete-popconfirm" title="确认要修改吗?" confirm-button-text="修改"
|
||||
@ -123,7 +138,7 @@
|
||||
</template>
|
||||
|
||||
<script>
|
||||
import { addWmWalletInfo, delWmWalletInfo, getWmWalletInfo, listWmWalletInfo } from '@/api/admin/wm-wallet-info'
|
||||
import { addWmWalletInfo, delWmWalletInfo, getWmWalletInfo, listWmWalletInfo, clearAllWmWalletInfo } from '@/api/admin/wm-wallet-info'
|
||||
|
||||
export default {
|
||||
name: 'WmWalletInfo',
|
||||
@ -284,6 +299,29 @@ export default {
|
||||
.finally(() => {
|
||||
this.loading = false
|
||||
})
|
||||
},
|
||||
handleClearAll() {
|
||||
const _this = this
|
||||
|
||||
this.$confirm('是否确认清除所有钱包信息?', '警告', {
|
||||
confirmButtonText: '确定',
|
||||
cancelButtonText: '取消',
|
||||
type: 'warning'
|
||||
}).then(function() {
|
||||
_this.loading = true
|
||||
return clearAllWmWalletInfo()
|
||||
}).then((response) => {
|
||||
if (response.code === 200) {
|
||||
_this.msgSuccess(response.msg)
|
||||
_this.getList()
|
||||
} else {
|
||||
_this.msgError(response.msg)
|
||||
}
|
||||
}).catch(function() {
|
||||
})
|
||||
.finally(() => {
|
||||
_this.loading = false
|
||||
})
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user