Browse Source

0629

lihuilin/feature-20250623164044-金币前端
lihuilin 3 days ago
parent
commit
ed0d2b0659
  1. 6
      src/views/audit/refundAudit.vue
  2. 670
      src/views/managerecharge/rate.vue

6
src/views/audit/refundAudit.vue

@ -90,8 +90,8 @@
<el-table-column label="操作" width="150" fixed="right" v-if="checkTab === 'pending'">
<template #default="{ row }">
<el-button type="success" size="small" @click="handleAction('approve', row)">通过</el-button>
<el-button type="danger" size="small" @click="handleAction('reject', row)">驳回</el-button>
<el-button type="success" size="small" @click="Approval('approve', row)">通过</el-button>
<el-button type="danger" size="small" @click="Approval('reject', row)">驳回</el-button>
</template>
</el-table-column>
</el-table>
@ -322,7 +322,7 @@ const handlePagination = (type, val) => {
get()
}
const handleAction = (type, row) => {
const Approval = (type, row) => {
currentRecord.value = row
if (type === 'reject') {
rejectForm.value.reason = ''

670
src/views/managerecharge/rate.vue

@ -5,59 +5,35 @@ import axios from 'axios'
import { createApp } from 'vue'
import moment from 'moment'
import _ from 'lodash'
import request from '@/util/http'
//
const adminData = ref({
name: ''
})
const getAdminData = async function () {
try {
const result = await request({
url: '/admin/userinfo',
data: {}
})
adminData.value = result
rateAdd.value.adminId = adminData.value.adminId
rateEdit.value.adminId = adminData.value.adminId
console.log('请求成功', result)
// console.log('', user.value)
} catch (error) {
console.log('请求失败', error)
}
}
getAdminData()
const regeAdd = ref(false)
const regeEdit = ref(false)
//
const tableData = ref([])
//
const timeRange = ref([])
const getObj = ref({
pageNum: 1,
pageSize: 10
})
const tableData = ref([])
const total = ref(0)
//
// time
const timeRange = ref([])
// YYYY-MM-DD HH:mm:ss
const formatDateTime = (date) => {
return moment(date).format('YYYY-MM-DD HH:mm:ss')
const reset = function () {
getObj.value.pageNum = 1
getObj.value.pageSize = 10
timeRange = ref([])
}
const handlePageSizeChange = function (val) {
getObj.value.pageSize = val
get()
}
const handleCurrentChange = function (val) {
getObj.value.pageNum = val
get()
}
//
const getToday = () => {
const today = new Date()
const start = new Date(today.getFullYear(), today.getMonth(), today.getDate(), 0, 0, 0)
const end = new Date(today.getFullYear(), today.getMonth(), today.getDate() + 1, 0, 0, 0)
timeRange.value = [formatDateTime(start), formatDateTime(end)]
search()
const start = moment(new Date(today.getFullYear(), today.getMonth(), today.getDate(), 0, 0, 0)).format('YYYY-MM-DD HH:mm:ss')
const end = moment(new Date(today.getFullYear(), today.getMonth(), today.getDate() + 1, 0, 0, 0)).format('YYYY-MM-DD HH:mm:ss')
timeRange.value = [start, end]
get()
}
//
@ -66,8 +42,8 @@ const getYesterday = () => {
yesterday.setDate(yesterday.getDate() - 1)
const start = new Date(yesterday.getFullYear(), yesterday.getMonth(), yesterday.getDate(), 0, 0, 0)
const end = new Date(yesterday.getFullYear(), yesterday.getMonth(), yesterday.getDate() + 1, 0, 0, 0)
timeRange.value = [formatDateTime(start), formatDateTime(end)]
search()
timeRange.value = [moment(start).format('YYYY-MM-DD HH:mm:ss'), moment(end).format('YYYY-MM-DD HH:mm:ss')]
get()
}
// 7
@ -75,501 +51,114 @@ const get7Days = () => {
const today = new Date()
const start = new Date(today.getFullYear(), today.getMonth(), today.getDate() - 6, 0, 0, 0)
const end = new Date(today.getFullYear(), today.getMonth(), today.getDate() + 1, 0, 0, 0)
timeRange.value = [formatDateTime(start), formatDateTime(end)]
search()
}
const get = async function (val) {
try {
//
if (typeof val === 'number') {
getObj.value.pageNum = val;
}
//
const time = {}
if (timeRange.value.length === 2) {
time.startTime = moment(timeRange.value[0]).format('YYYY-MM-DD HH:mm:ss')
time.endTime = moment(timeRange.value[1]).format('YYYY-MM-DD HH:mm:ss')
} else {
time.startTime = ''
time.endTime = ''
}
console.log('搜索参数', {
...getObj.value,
rate: { ...time }
});
// POST
const result = await request({
url: '/rates/search',
method: 'POST',
data: {
...getObj.value,
rate: { ...time }
}
});
//
console.log('请求成功', result);
//
tableData.value = result.data.list;
console.log('tableData', tableData.value);
//
total.value = result.data.total;
console.log('total', total.value);
} catch (error) {
console.log('请求失败', error);
ElMessage.error('请求失败');
}
}
//
const search = function () {
getObj.value.pageNum = 1
timeRange.value = [moment(start).format('YYYY-MM-DD HH:mm:ss'), moment(end).format('YYYY-MM-DD HH:mm:ss')]
get()
}
//
const rateAdd = ref({})
const addRate = async function () {
rateAdd.value.adminId = adminData.value.adminId
if (rateAdd.value.startTime) {
const date = new Date(rateAdd.value.startTime)
date.setHours(0, 0, 0, 0)
rateAdd.value.startTime = `${date.getFullYear()}-${String(
date.getMonth() + 1
).padStart(2, '0')}-${String(date.getDate()).padStart(2, '0')} 00:00:00`
}
if (rateAdd.value.endTime) {
const date = new Date(rateAdd.value.endTime)
date.setHours(23, 59, 59, 999)
rateAdd.value.endTime = `${date.getFullYear()}-${String(
date.getMonth() + 1
).padStart(2, '0')}-${String(date.getDate()).padStart(2, '0')} 23:59:59`
}
const get = async () => {
try {
console.log('搜索参数', getObj.value)
// POST
const result = await request({
url: '/rates/add',
data: rateAdd.value
})
if (result.code == 0) {
ElMessage.error(result.msg)
} else {
ElMessage({
type: 'success',
message: '新增汇率成功'
})
}
//
console.log('请求成功', result)
get()
} catch (error) {
console.log('请求失败', error)
//
}
}
const add = () => {
Ref.value.validate(async (valid) => {
if (valid) {
ElMessageBox.confirm('确认添加?')
.then(() => {
addRate()
rateAdd.value = {}
timeRange.value = {
startTime: '',
endTime: ''
}
regeAdd.value = false
})
.catch(() => {
regeAdd.value = false
})
} else {
//
ElMessage({
type: 'error',
message: '请检查输入内容'
})
const params = {
pageNum: getObj.value.pageNum,
pageSize: getObj.value.pageSize,
rateDetail: {
timeRange: [
moment(timeRange.value[0]).format('YYYY-MM-DD HH:mm:ss'),
moment(timeRange.value[1]).format('YYYY-MM-DD HH:mm:ss')
]
}
}
})
}
const handlePageSizeChange = function (val) {
getObj.value.pageSize = val
get()
}
const handleCurrentChange = function (val) {
getObj.value.pageNum = val
get()
}
// 使 _.throttle trailing false
const throttledAdd = _.throttle(add, 5000, { trailing: false })
//
const rateEdit = ref({})
//
const getEditData = async function (row) {
try {
console.log('搜索参数', getObj.value)
// POST
const result = await request({
url: '/rates/searchById?rateId=' + row.rateId,
data: {}
})
//
console.log('请求成功', result)
//
rateEdit.value = result.data
rateEdit.value.adminId = adminData.value.adminId
console.log('这是编辑的数值', rateEdit.value)
} catch (error) {
console.log('请求失败', error)
//
}
}
const editRate = async function () {
if (rateEdit.value.startTime) {
const date = new Date(rateEdit.value.startTime)
date.setHours(0, 0, 0, 0)
rateEdit.value.startTime = `${date.getFullYear()}-${String(
date.getMonth() + 1
).padStart(2, '0')}-${String(date.getDate()).padStart(2, '0')} 00:00:00`
}
if (rateEdit.value.endTime) {
const date = new Date(rateEdit.value.endTime)
date.setHours(23, 59, 59, 999)
rateEdit.value.endTime = `${date.getFullYear()}-${String(
date.getMonth() + 1
).padStart(2, '0')}-${String(date.getDate()).padStart(2, '0')} 23:59:59`
}
try {
console.log('搜索参数', rateEdit.value)
// POST
const result = await request({
url: '/rates/update',
data: rateEdit.value
const res = await request({
url: '/rate/selectAll',
data: params
})
//
console.log('请求成功', result)
get()
tableData.value = res.data?.list || []
pagination.value.total = res.data?.total || 0
} catch (error) {
console.log('请求失败', error)
//
console.error('获取数据失败', error)
}
}
const edit = () => {
ElMessageBox.confirm('确认修改?')
.then(() => {
editRate()
regeEdit.value = false
})
.catch(() => {
regeEdit.value = false
})
}
//
const deleteRate = async function (row) {
try {
// POST
const result = await request({
url: '/rates/delete/ ' + row.rateId,
data: {}
})
//
console.log('请求成功', result)
get()
} catch (error) {
console.log('请求失败', error)
//
}
}
//
onMounted(async function () {
onMounted(() => {
get()
})
//
function handlePageChange(currentPage, pageSize) {
get()
}
//
const options = [
{
value: 'USD',
label: 'USD'
},
{
value: 'HKD',
label: 'HKD'
},
{
value: 'THB',
label: 'THB'
},
{
value: 'VND',
label: 'VND'
},
{
value: 'CAD',
label: 'CAD'
},
{
value: 'MYR',
label: 'MYR'
},
{
value: 'KRW',
label: 'KRW'
},
{
value: 'JPY',
label: 'JPY'
},
{
value: 'CNY',
label: 'CNY'
}
]
function formatDate(value) {
if (!value) return ''
const date = new Date(value)
const year = date.getFullYear()
const month = (date.getMonth() + 1).toString().padStart(2, '0')
const day = date.getDate().toString().padStart(2, '0')
const hours = date.getHours().toString().padStart(2, '0')
const minutes = date.getMinutes().toString().padStart(2, '0')
const seconds = date.getSeconds().toString().padStart(2, '0')
return `${year}-${month}-${day} ${hours}:${minutes}:${seconds}`
}
function formatDateTwe(value) {
if (!value) return ''
const date = new Date(value)
const year = date.getFullYear()
const month = (date.getMonth() + 1).toString().padStart(2, '0')
const day = date.getDate().toString().padStart(2, '0')
return `${year}-${month}-${day}`
}
// //
// const tableHeight = computed(function () {
// return (getObj.value.pageSize + 1) * 50 + "px";
// });
//
// ref
const Ref = ref(null)
const handleStartTimeChange = () => {
Ref.value.validateField('endTime')
}
const checkStartTime = function (rule, value, callback) {
if (value <= new Date()) {
callback(new Error('开始时间不能小于当前时间'))
} else {
callback()
}
}
const checkEndTime = function (rule, value, callback) {
if (value <= new Date()) {
callback(new Error('结束时间不能小于当前时间'))
} else if (value <= rateAdd.value.startTime) {
callback(new Error('结束时间不能小于开始时间'))
} else {
callback()
}
}
const checkFreeGoldRadio = function (rule, value, callback) {
if (value == '0' || value == null || value == '') {
callback(new Error('请输入汇率比'))
} else if (value < 0 || isNaN(value)) {
callback(new Error('请输入正确的格式'))
} else {
callback()
}
}
const rules = reactive({
currency: [{ required: true, message: '请选择货币名称', trigger: 'blur' }],
exchangeRate: [{ validator: checkFreeGoldRadio, trigger: 'blur' }],
startTime: [
{ required: true, message: '请选择开始时间', trigger: 'blur' },
{ validator: checkStartTime, trigger: 'blur' }
],
endTime: [
{ required: true, message: '请选择结束时间', trigger: 'blur' },
{ validator: checkEndTime, trigger: 'blur' }
]
})
//
const handledelete = function () {
timeRange.value = {}
getObj.value.pageNum = 1
}
//
const checkNumber = function () {
if (typeof parseInt(getObj.value.pageNum) === 'number') {
console.log('总共有多少页' + Math.ceil(total.value / getObj.value.pageSize))
if (
getObj.value.pageNum > 0 &&
getObj.value.pageNum <= Math.ceil(total.value / getObj.value.pageSize)
) {
getObj.value.pageNum = parseInt(getObj.value.pageNum)
console.log('输入的数字合法')
get()
} else {
//
ElMessage({
type: 'error',
message: '请检查输入内容'
})
}
} else {
//
ElMessage({
type: 'error',
message: '请检查输入内容'
})
}
}
// =========================================================
//
//
const delConfirm = async function (row) {
try {
// POST
const result = await request({
url: '/rates/delete/ ' + row.rateId,
data: {}
})
if (result.code == 200) {
ElMessage({
type: 'success',
message: '删除成功'
})
//
console.log('请求成功', result)
//
get()
} else {
ElMessage({
type: 'error',
message: '删除失败'
})
}
} catch (error) {
console.log('请求失败', error)
//
}
}
//
function handleInput(value) {
// 7使
rateAdd.value.exchangeRate = value
.replace(/(\.\d{7})\d+/, '$1')
.replace(/^(\d+)(\.\d{0,7})?$/, '$1$2')
}
</script>
<template>
<el-row>
<el-col>
<el-card>
<div class="demo-range">
<el-row>
<el-col :span="9">
<el-form-item>
<el-text class="mx-1" size="large">时间范围</el-text>
<el-date-picker v-model="timeRange" type="datetimerange" range-separator="" start-placeholder="开始日期"
end-placeholder="结束日期" style="width: 300px" format="YYYY-MM-DD HH:mm:ss"
value-format="YYYY-MM-DD HH:mm:ss" />
</el-form-item>
</el-col>
<el-col :span="4">
<el-button @click="getToday"></el-button>
<el-button @click="getYesterday"></el-button>
<el-button @click="get7Days">近7天</el-button>
</el-col>
<el-col :span="4">
<el-button class="button-item" type="success" @click="handledelete()">重置</el-button>
<el-button type="primary" @click="search">查询</el-button>
</el-col>
</el-row>
</div>
</el-card>
</el-col>
</el-row>
<el-row>
<el-col>
<el-card class="box-card" style="max-width: 100%">
<div class="add-item">
<el-button style="color: #048efb; border: 1px solid #048efb" @click="regeAdd = true">新增汇率</el-button>
</div>
<!-- 表格 -->
<div>
<el-table :data="tableData" v-if="(tableData.flag = 1)" :height="tableHeight" style="width: 100%">
<el-table-column type="index" label="序号" width="100px" fixed="left">
<template #default="scope">
<span>{{
scope.$index + 1 + (getObj.pageNum - 1) * getObj.pageSize
}}</span>
<!-- 搜索表单 -->
<el-card>
<div>
<el-row>
<el-col :span="9">
<el-form-item>
<el-text size="large">时间范围</el-text>
<el-date-picker v-model="timeRange" type="datetimerange" range-separator="" start-placeholder="开始日期"
end-placeholder="结束日期" style="width: 300px" format="YYYY-MM-DD HH:mm:ss"
value-format="YYYY-MM-DD HH:mm:ss" />
</el-form-item>
</el-col>
<el-col :span="4">
<el-button @click="getToday" style="margin-left: 5px;"></el-button>
<el-button @click="getYesterday"></el-button>
<el-button @click="get7Days">近7天</el-button>
</el-col>
<el-col :span="4">
<el-button class="button-item" type="success" @click="reset()">重置</el-button>
<el-button type="primary" @click="search">查询</el-button>
</el-col>
</el-row>
</div>
</el-card>
<!-- 数据展示表单 -->
<el-card class="box-card">
<div class="add-item">
<el-button style="color: #048efb; border: 1px solid #048efb">新增汇率</el-button>
</div>
<div>
<el-table style="width: 100%">
<el-table-column type="index" label="序号" width="100px" fixed="left">
<template #default="scope">
<span>{{
scope.$index + 1 + (getObj.pageNum - 1) * getObj.pageSize
}}</span>
</template>
</el-table-column>
<el-table-column prop="currency" label="货币名称" :span="2" />
<el-table-column prop="exchangeRate" label="汇率" :span="2">
<template #default="scope">
<p>
{{ scope.row.exchangeRate }}{{ scope.row.currency }} 1新币
</p>
</template>
</el-table-column>
<el-table-column prop="createTime" label="添加时间" :span="3">
<template #default="scope">
<span>{{ formatDate(scope.row.createTime) }}</span>
</template>
</el-table-column>
<el-table-column label="操作" :span="3">
<template #default="scope">
<el-button type="text" @click="
() => {
regeEdit = true
getEditData(scope.row)
}">编辑</el-button>
<el-popconfirm title="确定将此条活动删除吗?">
<template #reference>
<el-button type="primary" text>删除</el-button>
</template>
</el-table-column>
<el-table-column prop="currency" label="货币名称" :span="2" />
<el-table-column prop="exchangeRate" label="汇率" :span="2">
<template #default="scope">
<p>
{{ scope.row.exchangeRate }}{{ scope.row.currency }} 1新币
</p>
<template #actions="{ confirm, cancel }"> <!-- -->
<el-button size="small" @click="cancel">取消</el-button>
<el-button type="primary" size="small" @click="confirm">确定</el-button>
</template>
</el-table-column>
<el-table-column prop="createTime" label="添加时间" :span="3">
<template #default="scope">
<span>{{ formatDate(scope.row.createTime) }}</span>
</template>
</el-table-column>
<el-table-column label="操作" :span="3">
<template #default="scope">
<el-button type="text" @click="
() => {
regeEdit = true
getEditData(scope.row)
}
">编辑</el-button>
<el-popconfirm title="确定将此条活动删除吗?" @confirm="delConfirm">
<template #reference>
<el-button type="primary" text> 删除 </el-button>
</template>
<template #actions="{ confirm, cancel }">
<el-button size="small" @click="cancel">取消</el-button>
<el-button type="primary" size="small" @click="confirm(scope.row)">
确定
</el-button>
</template>
</el-popconfirm>
</template>
</el-table-column>
</el-table>
</div>
<!-- 分页 -->
<div class="pagination">
<el-pagination background :page-size="getObj.pageSize" :page-sizes="[5, 10, 20, 50, 100]"
layout="total, sizes, prev, pager, next, jumper" :total="total" @size-change="handlePageSizeChange"
@current-change="handleCurrentChange"></el-pagination>
</div>
</el-card>
</el-col>
</el-row>
</el-popconfirm>
</template>
</el-table-column>
</el-table>
</div>
<div class="pagination">
<el-pagination background :page-size="getObj.pageSize" :page-sizes="[5, 10, 20, 50, 100]"
layout="total, sizes, prev, pager, next, jumper" :total="total" @size-change="handlePageSizeChange"
@current-change="handleCurrentChange"></el-pagination>
</div>
</el-card>
<!-- 这是添加弹窗 -->
<el-dialog v-model="regeAdd" title="新增汇率" width="500" :close-on-click-modal="false">
@ -651,20 +240,9 @@ function handleInput(value) {
</template>
<style scoped>
p {
margin: 0px;
}
.el-form-item {
margin-left: 70px;
}
.ad {
margin-left: 10px;
}
.pagination {
margin-top: 20px;
display: flex;
}
.box-card {
@ -679,27 +257,7 @@ p {
margin-bottom: 10px;
}
el-table-column {
text-align: center;
}
p {
color: rgb(150, 150, 150);
}
.unit {
margin-left: 10px;
}
.el-card {
padding: 0px;
}
.pagination {
display: flex;
}
.status {
display: flex;
}
</style>
Loading…
Cancel
Save