Browse Source

大数字加逗号Merge branch 'lihuilin/feature-20250730114922-金币三期' into milestone-20250728-金币前端三期

zhangrenyuan/feature-20250728113353-金币前端三期
lihuilin 1 week ago
parent
commit
3769e8a6c5
  1. 14
      src/views/audit/beanAudit.vue
  2. 14
      src/views/audit/gold/rechargeAudit.vue
  3. 16
      src/views/audit/gold/refundAudit.vue
  4. 11
      src/views/consume/bean/articleVideo.vue
  5. 11
      src/views/consume/bean/dieHardFan.vue
  6. 10
      src/views/consume/bean/liveStream.vue
  7. 14
      src/views/consume/gold/coinConsumeDetail.vue
  8. 7
      src/views/recharge/beanOnlineRecharge.vue
  9. 10
      src/views/recharge/beanSystemRecharge.vue
  10. 102
      src/views/recharge/gold/coinRechargeDetail.vue
  11. 206
      src/views/refund/gold/coinRefundDetail.vue
  12. 12
      src/views/usergold/gold/clientCountBalance.vue
  13. 13
      src/views/usergold/gold/clientCountDetail.vue
  14. 12
      src/views/usergold/userbean.vue

14
src/views/audit/beanAudit.vue

@ -44,10 +44,10 @@
</el-tabs>
<div>
总条数{{ stats.num }}&nbsp;&nbsp;&nbsp;&nbsp;
总金豆数{{ stats.beanNum }}金豆&nbsp;&nbsp;&nbsp;&nbsp;
付费金豆{{ stats.permanentBean }}金豆&nbsp;&nbsp;&nbsp;&nbsp;
免费金豆{{ stats.freeBean }}金豆
总条数{{ format3(stats.num) }}&nbsp;&nbsp;&nbsp;&nbsp;
总金豆数{{ format3(stats.beanNum) }}金豆&nbsp;&nbsp;&nbsp;&nbsp;
付费金豆{{ format3(stats.permanentBean) }}金豆&nbsp;&nbsp;&nbsp;&nbsp;
免费金豆{{ format3(stats.freeBean) }}金豆
</div>
<el-table :data="tableData" height="540px" @sort-change="handleSortChange">
@ -459,8 +459,10 @@ const handleCurrentChange = function (val) {
pagination.value.pageNum = val
get()
}
const format3 = (num) => {
//
return num.toLocaleString('en-US')
}
const throttledHandleApprove = _.throttle(handleApprove, 5000, {
trailing: false
})

14
src/views/audit/gold/rechargeAudit.vue

@ -71,10 +71,11 @@
<el-tab-pane label="已驳回" name="reject"></el-tab-pane>
<div>
总条数{{ stats.totalNum }}&nbsp;&nbsp;&nbsp;&nbsp;
总金币数{{ (stats.permanentGolds + stats.freeGolds + stats.taskGolds).toFixed(2) }}金币&nbsp;&nbsp;&nbsp;&nbsp;
永久金币{{ stats.permanentGolds.toFixed(2) }}金币&nbsp;&nbsp;&nbsp;&nbsp;
免费金币{{ stats.freeGolds.toFixed(2) }}金币&nbsp;&nbsp;&nbsp;&nbsp;
总条数{{ format3(stats.totalNum) }}&nbsp;&nbsp;&nbsp;&nbsp;
总金币数{{ format3(stats.permanentGolds + stats.freeGolds + stats.taskGolds) }}金币&nbsp;&nbsp;&nbsp;&nbsp;
永久金币{{ format3(stats.permanentGolds) }}金币&nbsp;&nbsp;&nbsp;&nbsp;
免费金币{{ format3(stats.freeGolds) }}金币&nbsp;&nbsp;&nbsp;&nbsp;
<!-- 任务金币{{ stats.taskGolds.toFixed(2) }}金币-->
</div>
</el-tabs>
@ -684,7 +685,10 @@ const getMarket = async function () {
console.log('请求失败', error)
}
}
const format3 = (num) => {
//
return num.toLocaleString('en-US')
}
//
onMounted(async function () {
await getAdminData()

16
src/views/audit/gold/refundAudit.vue

@ -69,11 +69,11 @@
</el-tabs>
<div>
总条数{{ stats.totalNum }}&nbsp;&nbsp;&nbsp;&nbsp;
退款总金币数{{ (stats.permanentGolds + stats.freeGolds + stats.taskGolds).toFixed(2) }}金币&nbsp;&nbsp;&nbsp;&nbsp;
永久金币{{ stats.permanentGolds.toFixed(2) }}金币&nbsp;&nbsp;&nbsp;&nbsp;
免费金币{{ stats.freeGolds.toFixed(2) }}金币&nbsp;&nbsp;&nbsp;&nbsp;
任务金币{{ stats.taskGolds.toFixed(2) }}金币
总条数{{ format3(stats.totalNum) }}&nbsp;&nbsp;&nbsp;&nbsp;
退款总金币数{{ format3(stats.permanentGolds + stats.freeGolds + stats.taskGolds) }}金币&nbsp;&nbsp;&nbsp;&nbsp;
永久金币{{ format3(stats.permanentGolds) }}金币&nbsp;&nbsp;&nbsp;&nbsp;
免费金币{{ format3(stats.freeGolds.toFixed(2)) }}金币&nbsp;&nbsp;&nbsp;&nbsp;
任务金币{{ format3(stats.taskGolds.toFixed(2)) }}金币
</div>
<el-table :data="tableData" height="540px" @sort-change="handleSortChange">
@ -620,8 +620,10 @@ const getMarket = async function () {
console.log('请求失败', error)
}
}
const format3 = (num) => {
//
return num.toLocaleString('en-US')
}
onMounted(async () => {
await getAdminData()
getRefundGoods()

11
src/views/consume/bean/articleVideo.vue

@ -360,7 +360,10 @@ const handleCurrentChange = function (val) {
====================挂载=================================
*/
const format3 = (num) => {
//
return num.toLocaleString('en-US')
}
onMounted(async function () {
await getAdminData()
await ConsumeSelectBy()
@ -540,9 +543,9 @@ const getTagText = (state) => {
<el-col>
<el-card>
<div>
金豆总数{{ Math.abs(permanentBean+freeBean) }}付费金豆数{{ Math.abs(permanentBean) }}免费金豆数{{
Math.abs(freeBean)
}}
金豆总数{{ format3(Math.abs(permanentBean+freeBean)) }}&nbsp;&nbsp;&nbsp;&nbsp;
付费金豆数{{ format3(Math.abs(permanentBean)) }}&nbsp;&nbsp;&nbsp;&nbsp;
免费金豆数{{ format3(Math.abs(freeBean)) }}
</div>
<!-- 设置表格容器的高度和滚动样式 -->
<div style="height: 576px; overflow-y: auto">

11
src/views/consume/bean/dieHardFan.vue

@ -9,7 +9,10 @@ import moment from 'moment'
/*
====================工具方法==============================
*/
const format3 = (num) => {
//
return num.toLocaleString('en-US')
}
//
const formatTime = (val) => val ? dayjs(val).format('YYYY-MM-DD HH:mm:ss') : ''
const defaultTime = [
@ -532,9 +535,9 @@ const getTagText = (state) => {
<el-col>
<el-card>
<div>
金豆总数{{ Math.abs(permanentBean+freeBean) }}付费金豆数{{ Math.abs(permanentBean) }}免费金豆数{{
Math.abs(freeBean)
}}
金豆总数{{ format3(Math.abs(permanentBean+freeBean)) }}&nbsp;&nbsp;&nbsp;&nbsp;
付费金豆数{{ format3(Math.abs(permanentBean)) }}&nbsp;&nbsp;&nbsp;&nbsp;
免费金豆数{{ format3(Math.abs(freeBean)) }}
</div>
<!-- 设置表格容器的高度和滚动样式 -->
<div style="height: 576px; overflow-y: auto">

10
src/views/consume/bean/liveStream.vue

@ -13,6 +13,10 @@ const defaultTime = [
new Date(2000, 1, 1, 0, 0, 0),
new Date(2000, 2, 1,23 , 59, 59),
]
const format3 = (num) => {
//
return num.toLocaleString('en-US')
}
//
const formatTime = (val) => val ? dayjs(val).format('YYYY-MM-DD HH:mm:ss') : ''
@ -586,9 +590,9 @@ const getTagText = (state) => {
<el-col>
<el-card>
<div>
金豆总数{{ Math.abs(permanentBean+freeBean) }}付费金豆数{{ Math.abs(permanentBean) }}免费金豆数{{
Math.abs(freeBean)
}}
金豆总数{{ format3(Math.abs(permanentBean+freeBean)) }}&nbsp;&nbsp;&nbsp;&nbsp;
付费金豆数{{ format3(Math.abs(permanentBean)) }}&nbsp;&nbsp;&nbsp;&nbsp;
免费金豆数{{ format3(Math.abs(freeBean)) }}
</div>
<!-- 设置表格容器的高度和滚动样式 -->
<div style="height: 576px; overflow-y: auto">

14
src/views/consume/gold/coinConsumeDetail.vue

@ -15,6 +15,13 @@ const trimJwCode = () => {
consumeUser.value.jwcode = consumeUser.value.jwcode.replace(/\s/g, '');
}
}
const format3 = (num) => {
if (!num) return '0';
const parts = Number(num).toFixed(2).split('.');
//
parts[0] = parts[0].replace(/\B(?=(\d{3})+(?!\d))/g, ',');
return parts.join('.');
}
//
const formatTime = (val) => val ? dayjs(val).format('YYYY-MM-DD HH:mm:ss') : ''
const defaultTime = [
@ -626,9 +633,10 @@ const getMarket = async function () {
<el-col>
<el-card>
<div>
消耗总金额{{ Math.abs(permanentGolds) / 100 }}新币永久金币{{ Math.abs(permanentGolds) / 100 }}免费金币{{
Math.abs(freeGolds) / 100
}}任务金币{{ Math.abs(taskGolds) / 100 }}
消耗总金额{{ format3(Math.abs(permanentGolds) / 100) }}新币&nbsp;&nbsp;&nbsp;&nbsp;
永久金币{{ format3(Math.abs(permanentGolds) / 100) }}&nbsp;&nbsp;&nbsp;&nbsp;
免费金币{{ format3(Math.abs(freeGolds) / 100) }}&nbsp;&nbsp;&nbsp;&nbsp;
任务金币{{ format3(Math.abs(taskGolds) / 100) }}
</div>
<!-- 设置表格容器的高度和滚动样式 -->
<div style="height: 576px; overflow-y: auto">

7
src/views/recharge/beanOnlineRecharge.vue

@ -330,6 +330,10 @@ const getTagText = (state) => {
return '未知状态';
}
}
const format3 = (num) => {
//
return num.toLocaleString('en-US')
}
onMounted(async function () {
await get()
await getArea()
@ -405,7 +409,8 @@ onMounted(async function () {
<el-col>
<el-card>
<div class="bean-info">
充值金豆数{{ beanNum }}, 合计新币数{{ money }}
充值金豆数{{ format3(beanNum) }}, 合计新币数{{ format3(money) }}
</div>
<!-- 设置表格容器的高度和滚动样式 -->
<div style="height: 520px; overflow-y: auto;margin-top: 10px;">

10
src/views/recharge/beanSystemRecharge.vue

@ -318,6 +318,10 @@ const getTagText = (state) => {
return '未知状态';
}
}
const format3 = (num) => {
//
return num.toLocaleString('en-US')
}
onMounted(async function () {
await get()
await getArea()
@ -376,9 +380,9 @@ onMounted(async function () {
<el-card>
<div class="bean-info">
<!-- 汉字用 <strong> 加粗动态数据用 <span> 包一层单独改色 -->
金豆总数{{ beanNum }}
, 付费金豆数{{ permanentBeans }}
, 免费金豆数{{ freeBean }}
金豆总数{{ format3(beanNum) }}&nbsp;&nbsp;&nbsp;&nbsp;
付费金豆数{{ format3(permanentBeans) }}&nbsp;&nbsp;&nbsp;&nbsp;
免费金豆数{{ format3(freeBean) }}
</div>
<!-- 设置表格容器的高度和滚动样式 -->
<div style="height: 520px; overflow-y: auto;margin-top: 10px;">

102
src/views/recharge/gold/coinRechargeDetail.vue

@ -1,9 +1,9 @@
<script setup>
import {onMounted, ref} from 'vue'
import {ElMessage} from 'element-plus'
import { onMounted, ref } from 'vue'
import { ElMessage } from 'element-plus'
import moment from 'moment'
import API from '@/util/http.js'
import {reverseMarketMapping} from '@/utils/marketMap.js';
import { reverseMarketMapping } from '@/utils/marketMap.js';
import dayjs from "dayjs";
const trimJwCode = () => {
@ -15,7 +15,7 @@ const trimJwCode = () => {
const adminData = ref({})
const getAdminData = async function () {
try {
const result = await API({url: '/admin/userinfo', data: {}})
const result = await API({ url: '/admin/userinfo', data: {} })
adminData.value = result
rechargeUser.value.adminId = adminData.value.id
console.log('请求成功', result)
@ -202,7 +202,7 @@ const delObj = ref({})
const getActivity = async function () {
try {
// POST
const result = await API({url: '/general/activity', data: {}})
const result = await API({ url: '/general/activity', data: {} })
//
console.log('请求成功', result)
@ -210,7 +210,7 @@ const getActivity = async function () {
//
if (Array.isArray(result.data)) {
// { value, label }
activity.value = result.data.map(item => ({value: item, label: item}));
activity.value = result.data.map(item => ({ value: item, label: item }));
} else {
console.error('活动数据格式错误', result)
ElMessage.error('活动数据格式错误,请联系管理员')
@ -241,8 +241,8 @@ const getArea = async function () {
return allChildren.map(child => {
const grandchildren = child.children && child.children.length
? transformTree([child]) //
: null;
? transformTree([child]) //
: null;
return {
value: child.name,
@ -274,7 +274,7 @@ const getPlatform = async () => {
})
// { value, label }
if (Array.isArray(result.data)) {
platform.value = result.data.map(item => ({value: item, label: item}));
platform.value = result.data.map(item => ({ value: item, label: item }));
} else {
console.error('充值方式格式错误', result)
ElMessage.error('充值方式格式错误,请联系管理员')
@ -329,7 +329,7 @@ const get = async function (val) {
url: '/recharge/selectBy',
data: {
...getObj.value,
rechargeUser: {...rechargeUser.value}
rechargeUser: { ...rechargeUser.value }
}
})
// rechargeUser.value
@ -445,7 +445,10 @@ const get7Days = function () {
get()
}
const format3 = (num) => {
//
return num.toLocaleString('en-US')
}
//
onMounted(async function () {
await get()
@ -493,7 +496,7 @@ const exportExcel = async function () {
size: total.value
}
try {
const res = await API({url: '/export/exportRecharge', data: params})
const res = await API({ url: '/export/exportRecharge', data: params })
if (res.code === 200) {
ElMessage.success('导出成功')
} else {
@ -521,7 +524,7 @@ const exportListLoading = ref(false)
const getExportList = async () => {
exportListLoading.value = true
try {
const result = await API({url: '/export/export'})
const result = await API({ url: '/export/export' })
if (result.code === 200) {
const filteredData = result.data.filter(item => {
return item.type === 2; //2
@ -590,35 +593,29 @@ const getTagText = (state) => {
<el-col :span="5">
<div class="head-card-element">
<el-text class="mx-1" size="large">精网号</el-text>
<el-input v-model="rechargeUser.jwcode" placeholder="请输入精网号" style="width: 150px" clearable/>
<el-input v-model="rechargeUser.jwcode" placeholder="请输入精网号" style="width: 150px" clearable />
</div>
</el-col>
<el-col :span="6">
<div class="head-card-element">
<el-text class="mx-1" size="large">活动名称</el-text>
<el-select v-model="rechargeUser.activity" placeholder="请选择活动名称" style="width: 180px" clearable>
<el-option v-for="item in activity" :key="item.value" :label="item.label" :value="item.value"/>
<el-option v-for="item in activity" :key="item.value" :label="item.label" :value="item.value" />
</el-select>
</div>
</el-col>
<el-col :span="6">
<div class="head-card-element">
<el-text class="mx-1" size="large">所属地区</el-text>
<el-cascader
v-model="selectedMarketPath"
:options="market"
placeholder="请选择所属地区"
clearable
style="width:180px"
@change="handleMarketChange"
/>
<el-cascader v-model="selectedMarketPath" :options="market" placeholder="请选择所属地区" clearable
style="width:180px" @change="handleMarketChange" />
</div>
</el-col>
<el-col :span="6">
<div class="head-card-element">
<el-text class="mx-1" size="large">充值方式</el-text>
<el-select v-model="rechargeUser.payPlatform" placeholder="请选择充值方式" style="width: 180px" clearable>
<el-option v-for="item in platform" :key="item.value" :label="item.label" :value="item.value"/>
<el-option v-for="item in platform" :key="item.value" :label="item.label" :value="item.value" />
</el-select>
</div>
</el-col>
@ -629,16 +626,16 @@ const getTagText = (state) => {
<div class="head-card-element">
<el-text class="mx-1" size="large">充值时间</el-text>
<el-date-picker v-model="getTime" type="datetimerange" range-separator="" start-placeholder="起始时间"
end-placeholder="结束时间" style="width: 400px" @change="handleDatePickerChange"
:default-time="defaultTime"/>
end-placeholder="结束时间" style="width: 400px" @change="handleDatePickerChange"
:default-time="defaultTime" />
<el-button @click="getToday()" style="margin-left: 10px"
:type="activeTimeRange === 'today' ? 'primary' : ''">
:type="activeTimeRange === 'today' ? 'primary' : ''">
</el-button>
<el-button @click="getYesterday()" style="margin-left: 10px"
:type="activeTimeRange === 'yesterday' ? 'primary' : ''">
:type="activeTimeRange === 'yesterday' ? 'primary' : ''">
</el-button>
<el-button @click="get7Days()" style="margin-left: 10px"
:type="activeTimeRange === '7days' ? 'primary' : ''"> 近7天
:type="activeTimeRange === '7days' ? 'primary' : ''"> 近7天
</el-button>
<el-button type="success" @click="reset()">重置</el-button>
<el-button type="primary" @click="search()">查询</el-button>
@ -654,9 +651,10 @@ const getTagText = (state) => {
<el-col>
<el-card>
<div>
充值金额{{ (permanentGolds) / 100 }}新币永久金币{{
permanentGolds / 100
}}金币免费金币{{ freeGolds / 100 }}金币
充值金额{{ format3(permanentGolds / 100) }}新币&nbsp;&nbsp;&nbsp;&nbsp;
永久金币{{ format3(permanentGolds / 100) }}金币&nbsp;&nbsp;&nbsp;&nbsp;
免费金币{{ format3(freeGolds / 100) }}金币
</div>
<!-- 设置表格容器的高度和滚动样式 -->
<div style="height: 520px; overflow-y: auto;margin-top: 10px;">
@ -664,22 +662,22 @@ const getTagText = (state) => {
<el-table-column type="index" label="序号" width="80px" fixed="left">
<template #default="scope">
<span>{{
scope.$index + 1 + (getObj.pageNum - 1) * getObj.pageSize
}}</span>
scope.$index + 1 + (getObj.pageNum - 1) * getObj.pageSize
}}</span>
</template>
</el-table-column>
<el-table-column fixed="left" prop="name" label="姓名" width="150px"/>
<el-table-column fixed="left" prop="jwcode" label="精网号" width="110px"/>
<el-table-column prop="market" label="所属地区" width="100px"/>
<el-table-column prop="activity" label="活动名称" width="110px" show-overflow-tooltip/>
<el-table-column prop="rateName" label="货币名称" width="110px"/>
<el-table-column prop="money" sortable="custom" label="充值金额" width="110px"/>
<el-table-column prop="permanentGold" label="永久金币" sortable="custom" width="110px"/>
<el-table-column prop="freeGold" label="免费金币" sortable="custom" width="110px"/>
<el-table-column prop="payPlatform" label="充值方式" width="100px"/>
<el-table-column prop="payModel" label="支付方式" width="100px"/>
<el-table-column prop="remark" label="备注" width="150px" show-overflow-tooltip/>
<el-table-column prop="adminName" label="提交人" width="100px"/>
<el-table-column fixed="left" prop="name" label="姓名" width="150px" />
<el-table-column fixed="left" prop="jwcode" label="精网号" width="110px" />
<el-table-column prop="market" label="所属地区" width="100px" />
<el-table-column prop="activity" label="活动名称" width="110px" show-overflow-tooltip />
<el-table-column prop="rateName" label="货币名称" width="110px" />
<el-table-column prop="money" sortable="custom" label="充值金额" width="110px" />
<el-table-column prop="permanentGold" label="永久金币" sortable="custom" width="110px" />
<el-table-column prop="freeGold" label="免费金币" sortable="custom" width="110px" />
<el-table-column prop="payPlatform" label="充值方式" width="100px" />
<el-table-column prop="payModel" label="支付方式" width="100px" />
<el-table-column prop="remark" label="备注" width="150px" show-overflow-tooltip />
<el-table-column prop="adminName" label="提交人" width="100px" />
<el-table-column prop="payTime" sortable label="充值时间" width="200px">
<template #default="scope">
{{ moment(scope.row.payTime).format('YYYY-MM-DD HH:mm:ss') }}
@ -691,9 +689,8 @@ const getTagText = (state) => {
<!-- 分页 -->
<div class="pagination" style="margin-top: 20px">
<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>
layout="total, sizes, prev, pager, next, jumper" :total="total" @size-change="handlePageSizeChange"
@current-change="handleCurrentChange"></el-pagination>
</div>
</el-card>
</el-col>
@ -701,11 +698,10 @@ const getTagText = (state) => {
<!-- 导出弹窗 -->
<el-dialog v-model="exportListVisible" title="导出列表" width="80%">
<el-table :data="exportList" style="width: 100% ;height: 60vh;" :loading="exportListLoading">
<el-table-column prop="fileName" label="文件名"/>
<el-table-column prop="fileName" label="文件名" />
<el-table-column prop="state" label="状态">
<template #default="scope">
<el-tag :type="getTagType(scope.row.state)"
:effect="scope.row.state === 3 ? 'light' : 'plain'">
<el-tag :type="getTagType(scope.row.state)" :effect="scope.row.state === 3 ? 'light' : 'plain'">
{{ getTagText(scope.row.state) }}
</el-tag>
</template>
@ -718,7 +714,7 @@ const getTagText = (state) => {
<el-table-column label="操作">
<template #default="scope">
<el-button type="primary" size="small" @click="downloadExportFile(scope.row)"
:disabled="scope.row.state !== 2">
:disabled="scope.row.state !== 2">
下载
</el-button>
</template>

206
src/views/refund/gold/coinRefundDetail.vue

@ -1,17 +1,21 @@
<script setup>
// 退
import {computed, onMounted, ref} from 'vue'
import {ElMessage} from 'element-plus'
import { computed, onMounted, ref } from 'vue'
import { ElMessage } from 'element-plus'
import moment from 'moment'
import API from '@/util/http.js'
import request from '@/util/http.js'
import {reverseMarketMapping} from "@/utils/marketMap.js";
import { reverseMarketMapping } from "@/utils/marketMap.js";
import dayjs from "dayjs";
const defaultTime = [
new Date(2000, 1, 1, 0, 0, 0),
new Date(2000, 2, 1,23 , 59, 59),
new Date(2000, 2, 1, 23, 59, 59),
]
const format3 = (num) => {
//
return num.toLocaleString('en-US')
}
//
const trimJwCode = () => {
if (refundUser.value.jwcode) {
@ -39,7 +43,7 @@ const handleDatePickerChange = () => {
const adminData = ref({})
const getAdminData = async function () {
try {
const result = await API({url: '/admin/userinfo', data: {}})
const result = await API({ url: '/admin/userinfo', data: {} })
adminData.value = result
console.log('请求成功', result)
@ -53,7 +57,7 @@ const tableData = ref([])
// ======================================
// detail
const refundUser = ref({
market:""
market: ""
})
//
const getObj = ref({
@ -94,7 +98,7 @@ const getRefundTypes = async function () {
//
if (Array.isArray(result.data)) {
// { value, label }
refundType.value = result.data.map(item => ({value: item, label: item}));
refundType.value = result.data.map(item => ({ value: item, label: item }));
} else {
console.error('退款类型数据格式错误', result)
ElMessage.error('退款类型数据格式错误,请联系管理员')
@ -148,11 +152,11 @@ const getSelectBy = async function (val) {
url: '/refund/selectBy',
data: {
...getObj.value,
refundUser: {...refundUser.value}
refundUser: { ...refundUser.value }
}
})
// refundUser.value
const detailWithoutSort = {...refundUser.value}
const detailWithoutSort = { ...refundUser.value }
delete detailWithoutSort.sortField
delete detailWithoutSort.sortOrder
@ -203,7 +207,7 @@ const search = function () {
}
//
const reset = function () {
refundUser.value = {market: ""}
refundUser.value = { market: "" }
sortField.value = ''
sortOrder.value = ''
getTime.value = {}
@ -215,7 +219,7 @@ const reset = function () {
const getToday = function () {
const today = dayjs()
const startTime = today.startOf('day').format('YYYY-MM-DD HH:mm:ss')
const endTime =today.endOf('day').format('YYYY-MM-DD HH:mm:ss')
const endTime = today.endOf('day').format('YYYY-MM-DD HH:mm:ss')
getTime.value = [startTime, endTime]
console.log('getTime', getTime.value)
activeTimeRange.value = 'today' //
@ -365,7 +369,7 @@ const exportExcel = async function () {
}
try {
const res = await API({url: '/export/exportRefund', data: params})
const res = await API({ url: '/export/exportRefund', data: params })
if (res.code === 200) {
ElMessage.success('导出成功')
} else {
@ -393,7 +397,7 @@ const exportListLoading = ref(false)
const getExportList = async () => {
exportListLoading.value = true
try {
const result = await API({url: '/export/export'})
const result = await API({ url: '/export/export' })
if (result.code === 200) {
const filteredData = result.data.filter(item => {
return item.type === 3; //3退
@ -480,8 +484,8 @@ const getMarket = async function () {
return allChildren.map(child => {
const grandchildren = child.children && child.children.length
? transformTree([child]) //
: null;
? transformTree([child]) //
: null;
return {
value: child.name,
@ -507,63 +511,29 @@ const getMarket = async function () {
<el-col :span="5">
<div class="head-card-element">
<el-text class="mx-1">精网号</el-text>
<el-input
v-model="refundUser.jwcode"
placeholder="请输入精网号"
style="width: 150px"
clearable
/>
<el-input v-model="refundUser.jwcode" placeholder="请输入精网号" style="width: 150px" clearable />
</div>
</el-col>
<el-col :span="6">
<div class="head-card-element">
<el-text class="mx-1">商品名称</el-text>
<el-select
v-model="refundUser.goodsName"
placeholder="请选择商品名称"
style="width: 180px"
clearable
>
<el-option
v-for="item in goods"
:key="item.value"
:label="item.label"
:value="item.value"
/>
<el-select v-model="refundUser.goodsName" placeholder="请选择商品名称" style="width: 180px" clearable>
<el-option v-for="item in goods" :key="item.value" :label="item.label" :value="item.value" />
</el-select>
</div>
</el-col>
<el-col :span="6">
<el-text class="mx-1" size="large">所属地区</el-text>
<el-cascader
v-model="selectedMarketPath"
:options="market"
placeholder="请选择所属地区"
clearable
style="width:180px"
@change="handleMarketChange"
/>
<el-cascader v-model="selectedMarketPath" :options="market" placeholder="请选择所属地区" clearable
style="width:180px" @change="handleMarketChange" />
</el-col>
<el-col :span="6">
<div class="head-card-element">
<el-text class="mx-1">退款类型</el-text>
<el-select
v-model="refundUser.refundType"
placeholder="请选择退款类型"
style="width: 180px"
clearable
>
<el-select v-model="refundUser.refundType" placeholder="请选择退款类型" style="width: 180px" clearable>
<!-- todo 这需要改-->
<el-option
v-for="item in refundType"
:key="item.value"
:label="item.label"
:value="item.value"
/>
<el-option v-for="item in refundType" :key="item.value" :label="item.label" :value="item.value" />
</el-select>
</div>
</el-col>
@ -573,15 +543,16 @@ const getMarket = async function () {
<div class="head-card-element">
<el-text class="mx-1">退款时间</el-text>
<el-date-picker v-model="getTime" type="datetimerange" range-separator="" start-placeholder="起始时间"
end-placeholder="结束时间" style="width: 400px" @change="handleDatePickerChange" :default-time="defaultTime"/>
end-placeholder="结束时间" style="width: 400px" @change="handleDatePickerChange"
:default-time="defaultTime" />
<el-button @click="getToday()" style="margin-left: 10px"
:type="activeTimeRange === 'today' ? 'primary' : ''">
:type="activeTimeRange === 'today' ? 'primary' : ''">
</el-button>
<el-button @click="getYesterday()" style="margin-left: 10px"
:type="activeTimeRange === 'yesterday' ? 'primary' : ''">
:type="activeTimeRange === 'yesterday' ? 'primary' : ''">
</el-button>
<el-button @click="get7Days()" style="margin-left: 10px"
:type="activeTimeRange === '7days' ? 'primary' : ''"> 近7天
:type="activeTimeRange === '7days' ? 'primary' : ''"> 近7天
</el-button>
<el-button type="success" @click="reset()">重置</el-button>
@ -598,48 +569,27 @@ const getMarket = async function () {
<el-col>
<el-card>
<div>
退款金币总数{{ Math.abs(sumGolds) / 100 }}永久金币{{
Math.abs(permanentGolds) / 100
}}免费金币{{ Math.abs(freeGolds) / 100 }}任务金币{{
Math.abs(taskGolds) / 100
}}
退款金币总数{{ format3(Math.abs(sumGolds) / 100) }}&nbsp;&nbsp;&nbsp;&nbsp;
永久金币{{ format3(Math.abs(permanentGolds) / 100) }}&nbsp;&nbsp;&nbsp;&nbsp;
免费金币{{ format3(Math.abs(freeGolds) / 100) }}&nbsp;&nbsp;&nbsp;&nbsp;
任务金币{{ format3(Math.abs(taskGolds) / 100) }}
</div>
<!-- 设置表格容器的高度和滚动样式 -->
<div style="height: 520px; overflow-y: auto;margin-top:10px">
<el-table
:data="tableData"
style="width: 100%"
@sort-change="handleSortChange"
height="520px"
>
<el-table-column
type="index"
label="序号"
width="80px"
fixed="left"
>
<el-table :data="tableData" style="width: 100%" @sort-change="handleSortChange" height="520px">
<el-table-column type="index" label="序号" width="80px" fixed="left">
<template #default="scope">
<span>{{
scope.$index + 1 + (getObj.pageNum - 1) * getObj.pageSize
}}</span>
scope.$index + 1 + (getObj.pageNum - 1) * getObj.pageSize
}}</span>
</template>
</el-table-column>
<el-table-column
prop="name"
label="姓名"
fixed="left"
width="130px"
/>
<el-table-column
prop="jwcode"
label="精网号"
fixed="left"
width="110px"
/>
<el-table-column prop="market" label="所属地区" width="110px"/>
<el-table-column prop="goodsName" label="商品名称" width="110px" show-overflow-tooltip/>
<el-table-column prop="refundType" label="退款类型" width="100px"/>
<el-table-column prop="name" label="姓名" fixed="left" width="130px" />
<el-table-column prop="jwcode" label="精网号" fixed="left" width="110px" />
<el-table-column prop="market" label="所属地区" width="110px" />
<el-table-column prop="goodsName" label="商品名称" width="110px" show-overflow-tooltip />
<el-table-column prop="refundType" label="退款类型" width="100px" />
<!-- <el-table-column label="金额总数" width="110px">
<template #default="scope">
@ -649,51 +599,21 @@ const getMarket = async function () {
</template>
</el-table-column> -->
<el-table-column
prop="sumGold"
label="金额总数"
width="110px"
sortable="custom"
/>
<el-table-column prop="sumGold" label="金额总数" width="110px" sortable="custom" />
<el-table-column prop="refundModel" label="退款方式" width="110px">
<template #default="scope">
{{ scope.row.refundModel === 0 ? '全部退款' : scope.row.refundModel === 1 ? '部分退款' : '' }}
</template>
</el-table-column>
<el-table-column
prop="permanentGold"
label="永久金币"
width="110px"
sortable="custom"
/>
<el-table-column
prop="freeGold"
sortable="custom"
label="免费金币"
width="110px"
/>
<el-table-column
prop="taskGold"
sortable="custom"
label="任务金币"
width="110px"
/>
<el-table-column prop="permanentGold" label="永久金币" width="110px" sortable="custom" />
<el-table-column prop="freeGold" sortable="custom" label="免费金币" width="110px" />
<el-table-column prop="taskGold" sortable="custom" label="任务金币" width="110px" />
<!-- 修改prop为taskGold -->
<el-table-column
prop="remark"
label="退款原因"
width="160px"
show-overflow-tooltip
/>
<el-table-column prop="adminName" label="提交人" width="100px"/>
<el-table-column
prop="createTime"
sortable="custom"
label="提交时间"
width="180px"
>
<el-table-column prop="remark" label="退款原因" width="160px" show-overflow-tooltip />
<el-table-column prop="adminName" label="提交人" width="100px" />
<el-table-column prop="createTime" sortable="custom" label="提交时间" width="180px">
<template #default="scope">
{{ moment(scope.row.createTime).format('YYYY-MM-DD HH:mm:ss') }}
</template>
@ -703,16 +623,9 @@ const getMarket = async function () {
<!-- 分页 -->
<div class="pagination" style="margin-top: 20px">
<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"
@jump="checkPageNumber"
></el-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" @jump="checkPageNumber"></el-pagination>
</div>
</el-card>
</el-col>
@ -720,12 +633,11 @@ const getMarket = async function () {
<!-- 导出弹窗 -->
<el-dialog v-model="exportListVisible" title="导出列表" width="80%">
<el-table :data="exportList" style="width: 100% ;height: 60vh;" :loading="exportListLoading">
<el-table-column prop="fileName" label="文件名"/>
<el-table :data="exportList" style="width: 100% ;height: 60vh;" :loading="exportListLoading">
<el-table-column prop="fileName" label="文件名" />
<el-table-column prop="state" label="状态">
<template #default="scope">
<el-tag :type="getTagType(scope.row.state)"
:effect="scope.row.state === 3 ? 'light' : 'plain'">
<el-tag :type="getTagType(scope.row.state)" :effect="scope.row.state === 3 ? 'light' : 'plain'">
{{ getTagText(scope.row.state) }}
</el-tag>
</template>
@ -738,7 +650,7 @@ const getMarket = async function () {
<el-table-column label="操作">
<template #default="scope">
<el-button type="primary" size="small" @click="downloadExportFile(scope.row)"
:disabled="scope.row.state !== 2">
:disabled="scope.row.state !== 2">
下载
</el-button>
</template>

12
src/views/usergold/gold/clientCountBalance.vue

@ -362,6 +362,10 @@ const getMarket = async function () {
console.log('请求失败', error)
}
}
const format3 = (num) => {
//
return num.toLocaleString('en-US')
}
</script>
@ -399,10 +403,10 @@ const getMarket = async function () {
<el-col>
<el-card>
<div>
金币总数{{ (goldtotal || 0) / 100 }}
永久金币{{ (permanentGold || 0) / 100 }}
免费金币{{ (freeGold || 0) / 100 }}
任务金币{{ (taskGold || 0) / 100 }}
金币总数{{ format3(goldtotal || 0) }}&nbsp;&nbsp;&nbsp;&nbsp;
永久金币{{ format3(permanentGold || 0) }}&nbsp;&nbsp;&nbsp;&nbsp;
免费金币{{ format3(freeGold || 0) }}&nbsp;&nbsp;&nbsp;&nbsp;
任务金币{{ format3(taskGold || 0) }}
</div>
<!-- 设置表格容器的高度和滚动样式 -->
<div style="height: 626px; overflow-y: auto">

13
src/views/usergold/gold/clientCountDetail.vue

@ -477,7 +477,10 @@ const getMarket = async function () {
console.log('请求失败', error)
}
}
const format3 = (num) => {
//
return num.toLocaleString('en-US')
}
</script>
<template>
<div>
@ -551,10 +554,10 @@ const getMarket = async function () {
<el-col>
<el-card>
<div>
金币总数{{ (totalGoldTotal || 0) / 100 }}
永久金币{{ (totalPermanentGold || 0) / 100 }}
免费金币{{ (totalFreeGold || 0) / 100 }}
任务金币{{ (totalTaskGold || 0) / 100 }}
金币总数{{ format3(totalGoldTotal || 0) }}&nbsp;&nbsp;&nbsp;&nbsp;
永久金币{{ format3(totalPermanentGold || 0) }}&nbsp;&nbsp;&nbsp;&nbsp;
免费金币{{ format3(totalFreeGold || 0) }}&nbsp;&nbsp;&nbsp;&nbsp;
任务金币{{ format3(totalTaskGold || 0) }}
</div>
<div style="height: 584px; overflow-y: auto">
<el-table :data="tableData" style="width: 100%" @sort-change="handleSortChange" height="584px">

12
src/views/usergold/userbean.vue

@ -15,10 +15,10 @@
<el-card>
<div class="stats-card">
现有金豆数{{ stats.sumBean }}金豆&nbsp;&nbsp;&nbsp;&nbsp;
付费金豆数{{ stats.permanentBean }}金豆&nbsp;&nbsp;&nbsp;&nbsp;
免费金豆数{{ stats.freeBean }}金豆&nbsp;&nbsp;&nbsp;&nbsp;
消费金豆总数{{ stats.consumeSum }}金豆&nbsp;&nbsp;&nbsp;&nbsp;
现有金豆数{{ format3(stats.sumBean) }}金豆&nbsp;&nbsp;&nbsp;&nbsp;
付费金豆数{{ format3(stats.permanentBean) }}金豆&nbsp;&nbsp;&nbsp;&nbsp;
免费金豆数{{ format3(stats.freeBean) }}金豆&nbsp;&nbsp;&nbsp;&nbsp;
消费金豆总数{{ format3(stats.consumeSum) }}金豆&nbsp;&nbsp;&nbsp;&nbsp;
</div>
<el-table :data="tableData" height="650px" @sort-change="handleSortChange" :row-style="{ height: '60px' }">
<el-table-column type="index" label="序号" width="100px" fixed="left">
@ -177,6 +177,10 @@ const handleCurrentChange = function (val) {
pagination.value.pageNum = val
get()
}
const format3 = (num) => {
//
return num.toLocaleString('en-US')
}
onMounted(() => {
get()

Loading…
Cancel
Save