Browse Source

新增rechargeDetails.vue

zry_code
zry 1 month ago
parent
commit
f4a92d47f3
  1. 1
      code/vue-base1/src/components/Sidebar.vue
  2. 6
      code/vue-base1/src/router/index.js
  3. 68
      code/vue-base1/src/views/Recharge.vue
  4. 245
      code/vue-base1/src/views/RechargeDetails.vue

1
code/vue-base1/src/components/Sidebar.vue

@ -12,6 +12,7 @@
<el-menu-item index="2" @click="navigateTo('refund')">退款</el-menu-item>
<el-menu-item index="3" @click="navigateTo('recharge-audit')">充值审核</el-menu-item>
<el-menu-item index="4" @click="navigateTo('refund-audit')">退款审核</el-menu-item>
<el-menu-item index="5" @click="navigateTo('recharge-details')">充值明细</el-menu-item>
</div>
</el-menu>
</template>

6
code/vue-base1/src/router/index.js

@ -3,6 +3,7 @@ import Recharge from '../views/Recharge.vue'
import Refund from '../views/Refund.vue'
import RechargeAudit from '../views/RechargeAudit.vue'
import RefundAudit from '../views/RefundAudit.vue'
import RechargeDetails from '../views/RechargeDetails.vue'
const routes = [
{
@ -24,6 +25,11 @@ const routes = [
path: '/refund-audit',
name: 'refund-audit',
component: RefundAudit
},
{
path: '/recharge-details',
name: 'recharge-details',
component: RechargeDetails
}
]

68
code/vue-base1/src/views/Recharge.vue

@ -68,13 +68,13 @@
</div>
</form>
</div>
</template>
</template>
<script>
<script>
import axios from 'axios';
import axios from 'axios';
export default {
export default {
data() {
return {
@ -163,11 +163,11 @@
}
}
};
</script>
</script>
<style scoped>
/* 充值表单样式 */
.recharge-form {
<style scoped>
/* 充值表单样式 */
.recharge-form {
min-width: 600px;
margin-left: 8px;
margin-top: 2px;
@ -176,44 +176,44 @@
/* border: 10px solid #ccc; */
border-radius: 8px;
background-color: #f9f9f9;
}
}
/* 表单标题样式 */
.form-title {
/* 表单标题样式 */
.form-title {
text-align: center;
margin-bottom: 20px;
}
}
/* 表单组样式 */
.form-group {
/* 表单组样式 */
.form-group {
margin-bottom: 15px;
}
}
/* 表单组标签样式 */
.form-group label {
/* 表单组标签样式 */
.form-group label {
display: block;
margin-bottom: 5px;
font-weight: bold;
}
}
/* 表单组输入框、选择框和文本框样式 */
.form-group input[type="text"],
.form-group input[type="number"],
.form-group select,
.form-group textarea {
/* 表单组输入框、选择框和文本框样式 */
.form-group input[type="text"],
.form-group input[type="number"],
.form-group select,
.form-group textarea {
width: 98%;
padding: 8px;
border: 1px solid #ccc;
border-radius: 4px;
}
}
/* 表单组文本框样式 */
.form-group textarea {
/* 表单组文本框样式 */
.form-group textarea {
resize: vertical;
}
}
/* 表单组按钮样式 */
.form-group button {
/* 表单组按钮样式 */
.form-group button {
width: 100%;
padding: 10px;
background-color: #007bff;
@ -221,10 +221,10 @@
border: none;
border-radius: 4px;
cursor: pointer;
}
}
/* 表单组按钮悬停样式 */
.form-group button:hover {
/* 表单组按钮悬停样式 */
.form-group button:hover {
background-color: #0056b3;
}
</style>
}
</style>

245
code/vue-base1/src/views/RechargeDetails.vue

@ -0,0 +1,245 @@
<template>
<!-- 整个页面的卡片容器 -->
<el-card class="recharge-card">
<!-- 搜索表单部分使用卡片布局 -->
<el-card class="search-card">
<template #header>
<div class="card-header">
<span>搜索条件</span>
</div>
</template>
<!-- 第一行搜索表单内联布局 -->
<el-form :inline="true" :model="searchForm" class="search-form">
<el-form-item label="精网号">
<!-- 绑定精网号输入值到 searchForm.jwcode -->
<el-input v-model="searchForm.jwcode" placeholder="请输入精网号" />
</el-form-item>
<el-form-item label="地区">
<el-select
v-model="searchForm.regions"
placeholder="请选择地区"
filterable
allow-create
default-first-option
>
<el-option label="泰国" value="THAILAND"></el-option>
<el-option label="美国" value="AMERICA"></el-option>
<el-option label="新加坡" value="SINGAPORE"></el-option>
<el-option label="马来西亚" value="MALAYSIA"></el-option>
</el-select>
</el-form-item>
<el-form-item label="订单号">
<!-- 绑定订单号输入值到 searchForm.orderId -->
<el-input v-model="searchForm.orderId" placeholder="请输入订单号" />
</el-form-item>
<el-form-item label="充值方式">
<el-select
v-model="searchForm.paymentMethod"
placeholder="请选择充值方式"
filterable
allow-create
default-first-option
>
<el-option label="微信" value="WECHAT"></el-option>
<el-option label="支付宝" value="ALIPAY"></el-option>
<el-option label="银行" value="BANK"></el-option>
</el-select>
</el-form-item>
</el-form>
<!-- 第二行搜索表单内联布局 -->
<el-form :inline="true" :model="searchForm" class="search-form">
<!-- <el-form-item label="充值时间"> -->
<!-- 绑定充值时间范围选择值到 searchForm.rechargeTime -->
<!-- <el-date-picker
v-model="searchForm.rechargeTime"
type="daterange"
range-separator="至"
start-placeholder="开始日期"
end-placeholder="结束日期"
/>
</el-form-item> -->
<!-- 新增一个 div 包裹按钮组 -->
<div class="button-group-wrapper">
<el-form-item>
<el-button type="primary" @click="handleSearch">查询</el-button>
<el-button @click="resetSearch">重置</el-button>
</el-form-item>
</div>
</el-form>
</el-card>
<!-- 搜索表单和明细表之间的分隔线 -->
<el-divider />
<!-- 明细表 -->
<el-card class="detail-card">
<template #header>
<div class="card-header">
<span>充值明细</span>
</div>
</template>
<!-- 表格组件绑定表格数据和加载状态 -->
<el-table
:data="rechargeDetailsList"
style="width: 100%"
:loading="isLoading"
stripe
border
>
<el-table-column prop="序号" label="序号" width="80" />
<el-table-column prop="精网号" label="精网号" width="120" />
<el-table-column prop="姓名" label="姓名" width="120" />
<el-table-column prop="订单号" label="订单号" width="180" />
<el-table-column prop="充值方式" label="充值方式" width="120" />
<el-table-column prop="所属地区" label="所属地区" width="120" />
<el-table-column prop="金币数量" label="金币数量" width="120" />
<el-table-column prop="金额" label="金额" width="120" />
<el-table-column prop="备注" label="备注" />
<el-table-column prop="充值时间" label="充值时间" width="180" />
</el-table>
<!-- 空状态提示 -->
<template #empty>
<el-empty description="暂无充值明细数据" />
</template>
<!-- 分页组件绑定当前页码每页显示数量和总数据量 -->
<el-pagination
class="pagination"
:current-page="currentPage"
:page-size="pageSize"
:total="total"
layout="prev, pager, next, jumper"
@current-change="handlePageChange"
/>
</el-card>
</el-card>
</template>
<script setup>
import { ref, onMounted } from 'vue'
import axios from 'axios'
import { Search } from '@element-plus/icons-vue'
//
const rechargeDetailsList = ref([])
//
const isLoading = ref(false)
//
const currentPage = ref(1)
//
const pageSize = ref(8)
// 0
const total = ref(0)
//
const searchForm = ref({
jwcode: '', //
regions: [], //
orderId: '', //
paymentMethods: [], //
rechargeTime: [] //
})
/**
* 获取充值明细数据的方法
* 向服务器发送请求获取充值明细数据并更新页面显示
*/
const fetchRechargeDetails = async () => {
isLoading.value = true
try {
const params = {
page: currentPage.value,
pageSize: pageSize.value,
jwcode: searchForm.value.jwcode,
regions: searchForm.value.regions.join(','),
orderId: searchForm.value.orderId,
paymentMethods: searchForm.value.paymentMethods.join(','),
}
const response = await axios.post('http://192.168.8.94:8080/recharges/query', params)
console.log('后端返回的数据:', response.data)
const items = response.data.items || []
// ``
rechargeDetailsList.value = items.map((item, index) => ({
...item,
序号: (currentPage.value - 1) * pageSize.value + index + 1
}))
total.value = response.data.total || 0
} catch (error) {
console.error('获取充值明细数据失败', error)
rechargeDetailsList.value = []
total.value = 0
} finally {
isLoading.value = false
}
}
//
const handleSearch = () => {
currentPage.value = 1
fetchRechargeDetails()
}
//
const resetSearch = () => {
searchForm.value = {
jwcode: '',
regions: [],
orderId: '',
paymentMethods: [],
rechargeTime: []
}
currentPage.value = 1
fetchRechargeDetails()
}
//
const handlePageChange = (page) => {
currentPage.value = page
fetchRechargeDetails()
}
//
onMounted(() => {
fetchRechargeDetails()
})
</script>
<style scoped>
.recharge-card {
margin: 20px;
box-shadow: 0 2px 12px 0 rgba(0, 0, 0, 0.1);
}
.search-card,
.detail-card {
margin-bottom: 20px;
box-shadow: 0 2px 12px 0 rgba(0, 0, 0, 0.1);
}
.card-header {
display: flex;
align-items: center;
justify-content: space-between;
}
.search-form {
margin-bottom: 20px;
display: flex;
flex-wrap: wrap;
align-items: center;
}
.button-group-wrapper {
/* 让这个 div 占据剩余空间 */
flex-grow: 1;
display: flex;
justify-content: flex-end;
}
.pagination {
margin-top: 20px;
display: flex;
justify-content: flex-end;
}
</style>
Loading…
Cancel
Save