28 Commits

Author SHA1 Message Date
ZhangYong 5d3adfa6d8 新增消耗修改 1 week ago
lihui 6e5d1070b8 feat(components): 密码跳转 1 week ago
lihuilin 3769e8a6c5 大数字加逗号Merge branch 'lihuilin/feature-20250730114922-金币三期' into milestone-20250728-金币前端三期 1 week ago
lihuilin a72bbebbf9 大数字加逗号 1 week ago
ZhangYong 421c509495 金豆明细序号 1 week ago
ZhangYong 8f3ffc3b28 金豆客户明细序号 1 week ago
lihui 505c3b0140 fix:金币余额输入筛选项后点击重置,再点击查询,除了筛选项包含地区外,点击查询页面没有反应 1 week ago
lihuilin 953d067c53 这是一次拉取branch 'milestone-20250728-金币前端三期' of http://39.101.133.168:8807/huangqizhen/gold-vue into lihuilin/feature-20250730114922-金币三期 1 week ago
lihui 7a9bed3adf fix:金币明细输入筛选项后点击重置,再点击查询,除了筛选项包含地区外,点击查询页面没有反应 1 week ago
lihuilin 9fb9a2075f 付费免费 1 week ago
ZhangYong 877fbac479 Merge branch 'zhangyong/feature-20250716164232-金币前端' into milestone-20250728-金币前端三期 1 week ago
ZhangYong 52168b3ef3 金豆字段修改 1 week ago
lihuilin 3f19a6e061 这是一次拉取 1 week ago
lihuilin 36afd2793f 付费金豆 1 week ago
lihuilin 13194bb736 付费哈哈哈哈 1 week ago
lihui 18d4051f69 永久金币和免费金币不能同时为0 1 week ago
lihui 7f358ccb26 永久金币和付费金币不能同时为0 1 week ago
ZhangYong 278329cd03 Merge branch 'zhangyong/feature-20250716164232-金币前端' into milestone-20250728-金币前端三期 1 week ago
ZhangYong 0da3fece75 金豆增减优化 1 week ago
ZhangYong 5d57fb5f03 Merge branch 'zhangyong/feature-20250716164232-金币前端' into milestone-20250728-金币前端三期 1 week ago
ZhangYong 78ed389236 金豆增减优化 1 week ago
ZhangYong a6b12231c6 Merge branch 'zhangyong/feature-20250716164232-金币前端' into milestone-20250728-金币前端三期 1 week ago
ZhangYong 64edd1a4e8 金豆增减优化 1 week ago
lihui ad659069d6 Merge branch 'refs/heads/lihui/feature-20250728114233-金币前端三期' into milestone-20250728-金币前端三期 1 week ago
lihui 213d1a075c fix:金币充值默认为0 1 week ago
lihuilin bbd4518488 Merge branch 'lihuilin/feature-20250730114922-金币三期' of http://39.101.133.168:8807/huangqizhen/gold-vue into milestone-20250728-金币前端三期 1 week ago
lihuilin 2bc8736bf4 接口,切换页面清排序 1 week ago
ZhangYong 1276e030c5 线上充值地区接口 1 week ago
  1. 5
      src/components/PasswordSuccess.vue
  2. 25
      src/views/audit/beanAudit.vue
  3. 14
      src/views/audit/gold/rechargeAudit.vue
  4. 16
      src/views/audit/gold/refundAudit.vue
  5. 26
      src/views/consume/bean/addBeanConsume.vue
  6. 11
      src/views/consume/bean/articleVideo.vue
  7. 11
      src/views/consume/bean/dieHardFan.vue
  8. 10
      src/views/consume/bean/liveStream.vue
  9. 14
      src/views/consume/gold/coinConsumeDetail.vue
  10. 14
      src/views/recharge/addBeanRecharge.vue
  11. 9
      src/views/recharge/beanOnlineRecharge.vue
  12. 12
      src/views/recharge/beanSystemRecharge.vue
  13. 28
      src/views/recharge/gold/addCoinRecharge.vue
  14. 102
      src/views/recharge/gold/coinRechargeDetail.vue
  15. 206
      src/views/refund/gold/coinRefundDetail.vue
  16. 17
      src/views/usergold/gold/clientCountBalance.vue
  17. 24
      src/views/usergold/gold/clientCountDetail.vue
  18. 26
      src/views/usergold/userbean.vue

5
src/components/PasswordSuccess.vue

@ -19,6 +19,7 @@ import {ElIcon, ElButton} from 'element-plus';
import {SuccessFilled} from '@element-plus/icons-vue';
import {useRouter} from 'vue-router';
const machineId = localStorage.getItem("machineId");
const countdown = ref(3);
const router = useRouter();
@ -32,7 +33,7 @@ const startCountdown = () => {
//
// 使 window.location.href
// window.location.href = '/login';
router.replace ('/login');
router.replace(`/login?machineId=${machineId || ''}`);
// router.push('/login');
}
}, 1000);
@ -41,7 +42,7 @@ const startCountdown = () => {
const immediateJump = () => {
// window.location.href = '/login';
//
router.replace ('/login');
router.replace(`/login?machineId=${machineId || ''}`);
};
onMounted(() => {

25
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">
@ -308,7 +308,7 @@ const handleApprove = async (row) => {
try {
const params = {
id: row.id,
auditName: adminData.value.name,
auditName: adminData.value.adminName
}
await API({ url: '/beanAudit/status1', data: params })
ElMessage.success('审核通过成功')
@ -412,25 +412,34 @@ const handleClick = function (tab) {
//
const adminWait = async function () {
checkTab.value = 'pending'
sortField.value = ''
sortOrder.value = ''
searchForm.value.status = STATUS.PENDING
await get()
await getStats()
console.log('切换页面后:', checkTab.value,sortField.value, sortOrder.value)
}
//
const adminPass = async function () {
checkTab.value = 'pass'
sortField.value = ''
sortOrder.value = ''
searchForm.value.status = STATUS.APPROVED
await get()
await getStats()
console.log('切换页面后:', checkTab.value,sortField.value, sortOrder.value)
}
//
const adminReject = async function () {
checkTab.value = 'reject'
sortField.value = ''
sortOrder.value = ''
searchForm.value.status = STATUS.REJECTED
await get()
await getStats()
console.log('切换页面后:', checkTab.value,sortField.value, sortOrder.value)
}
const handleMarketChange = (value) => {
if (value && value.length > 0) {
@ -450,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()

26
src/views/consume/bean/addBeanConsume.vue

@ -71,7 +71,7 @@ const rules = reactive({
}, trigger: 'blur'
}],
permanentBean: [
{ required: true, message: '请输入永久金豆数', trigger: 'blur' },
{ required: true, message: '请输入付费金豆数', trigger: 'blur' },
{
validator: (rule, value, callback) => {
//
@ -129,11 +129,17 @@ const deleteConsumeForm = function () {
const handleConsumeForm = async () => {
try {
if(!consumeForm.value.permanentBean ){
consumeForm.value.permanentBean = 0
}
if(!consumeForm.value.freeBean ){
consumeForm.value.freeBean = 0
}
await new Promise((resolve, reject) => {
formRef.value.validate((valid) => {
if (valid) {
if (Number(consumeForm.value.permanentBean) === 0 && Number(consumeForm.value.freeBean) === 0) {
reject(new Error('永久金豆和付费金豆不能同时为0'));
reject(new Error('付费金豆和免费金豆不能同时为0'));
}
resolve(); //
} else {
@ -149,12 +155,12 @@ const handleConsumeForm = async () => {
const userPermanentBean = Number(user.value.permanentBean) || 0;
const userFreeBean = Number(user.value.freeBean) || 0;
if (inputPermanentBean > userPermanentBean) {
throw new Error('付费金豆数量超过用户当前所拥有');
}
if (inputFreeBean > userFreeBean) {
throw new Error('免费金豆数量超过用户当前所拥有');
}
// if (inputPermanentBean > userPermanentBean) {
// throw new Error('');
// }
// if (inputFreeBean > userFreeBean) {
// throw new Error('');
// }
await ElMessageBox.confirm(
'确认消耗吗?',
@ -205,10 +211,10 @@ const throttledHandleConsumeFormt = _.throttle(handleConsumeForm, 5000, {
<el-button type="primary" @click="getUser(consumeForm.jwcode)" style="margin-left: 20px">查询</el-button>
</el-form-item>
<el-form-item prop="permanentBean" label="付费金豆" label-position="left">
<el-input v-model="consumeForm.permanentBean" style="width: 100px" />
<el-input v-model="consumeForm.permanentBean" placeholder="不填默认为0" style="width: 100px" />
</el-form-item>
<el-form-item prop="freeBean" label="免费金豆" label-position="left">
<el-input v-model="consumeForm.freeBean" style="width: 100px" />
<el-input v-model="consumeForm.freeBean" placeholder="不填默认为0" style="width: 100px" />
</el-form-item>
<el-form-item prop="remark" label="备注" label-position="left">
<el-input v-model="consumeForm.remark" style="width: 300px" :rows="5" maxlength="100" show-word-limit

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

14
src/views/recharge/addBeanRecharge.vue

@ -70,7 +70,7 @@ const rules = reactive({
}, trigger: 'blur'
}],
permanentBean: [
{ required: true, message: '请输入永久金豆数', trigger: 'blur' },
{ required: true, message: '请输入付费金豆数', trigger: 'blur' },
{
validator: (rule, value, callback) => {
//
@ -128,11 +128,17 @@ const deleteAddForm = function () {
const handleAddForm = async () => {
try {
if(!addForm.value.permanentBean ){
addForm.value.permanentBean = 0
}
if(!addForm.value.freeBean ){
addForm.value.freeBean = 0
}
await new Promise((resolve, reject) => {
formRef.value.validate((valid) => {
if (valid) {
if (Number(addForm.value.permanentBean) === 0 && Number(addForm.value.freeBean) === 0) {
reject(new Error('永久金豆和付费金豆不能同时为0'));
reject(new Error('付费金豆和免费金豆不能同时为0'));
}
resolve(); //
} else {
@ -191,10 +197,10 @@ const throttledHandleAddFormt = _.throttle(handleAddForm, 5000, {
<el-button type="primary" @click="getUser(addForm.jwcode)" style="margin-left: 20px">查询</el-button>
</el-form-item>
<el-form-item prop="permanentBean" label="付费金豆" label-position="left">
<el-input v-model="addForm.permanentBean" style="width: 100px" />
<el-input v-model="addForm.permanentBean" placeholder="不填默认为0" style="width: 100px" />
</el-form-item>
<el-form-item prop="freeBean" label="免费金豆" label-position="left">
<el-input v-model="addForm.freeBean" style="width: 100px" />
<el-input v-model="addForm.freeBean" placeholder="不填默认为0" style="width: 100px" />
</el-form-item>
<el-form-item prop="remark" label="备注" label-position="left">
<el-input v-model="addForm.remark" style="width: 300px" :rows="5" maxlength="100" show-word-limit

9
src/views/recharge/beanOnlineRecharge.vue

@ -58,7 +58,7 @@ const handleDatePickerChange = () => {
//
const getArea = async () => {
const result = await API({
url: '/beanConsume/getDept',
url: '/beanRecharge/onlineMarket',
data: {}
})
if (result.code == 200) {
@ -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;">

12
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;">
@ -393,7 +397,7 @@ onMounted(async function () {
<el-table-column fixed="left" prop="name" label="姓名" min-width="100" />
<el-table-column fixed="left" prop="jwcode" label="精网号" min-width="110px" />
<el-table-column prop="market" label="所属地区" min-width="100px" />
<el-table-column prop="permanentBean" label="永久金豆" sortable="custom" min-width="110px" />
<el-table-column prop="permanentBean" label="付费金豆" sortable="custom" min-width="110px" />
<el-table-column prop="freeBean" label="免费金豆" sortable="custom" min-width="110px" />
<el-table-column prop="remark" label="备注" min-width="150px" show-overflow-tooltip />
<el-table-column prop="rechargeTime" label="充值时间" min-width="200px">

28
src/views/recharge/gold/addCoinRecharge.vue

@ -63,9 +63,9 @@ const recharge = ref({
activity: '', // activity
voucher: '',
rechargeWay: '客服充值',
freeGold: '',
freeGold: "0",
money: null,
permanentGold: '',
permanentGold: "0",
rateName: null,
rateId: null,
payModel: '', // payModel
@ -115,9 +115,9 @@ const add = async function () {
recharge.value.market = adminData.value.market
recharge.value.voucher = ''
recharge.value.rechargeWay = '客服充值'
recharge.value.freeGold = ''
recharge.value.freeGold = '0'
recharge.value.money = null
recharge.value.permanentGold = ''
recharge.value.permanentGold = '0'
recharge.value.rateId = null
imageUrl.value = ''
recharge.value.rateName = null
@ -133,19 +133,13 @@ const addBefore = () => {
Ref.value.validate(async (valid) => {
if (valid) {
// add getUser
//
// try {
// await getUser(recharge.value.jwcode);
// if (!user.value.jwcode) {
// ElMessage.error('');
// return;
// }
// } catch (error) {
// ElMessage.error('');
// return;
// }
if (Number(recharge.value.permanentGold) === 0 && Number(recharge.value.freeGold) === 0) {
ElMessage({
type: 'error',
message: '永久金币和免费金币不能同时为0'
})
return
}
if (recharge.value.rateName == null || recharge.value.rateName == '' || recharge.value.rateName == undefined) {
ElMessage({

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>

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

@ -178,7 +178,10 @@ const search = function () {
}
//
const reset = function () {
user.value = {}
user.value = {
jwcode: '',
markets: [],
}
sortField.value = ''
sortOrder.value = ''
get()
@ -359,6 +362,10 @@ const getMarket = async function () {
console.log('请求失败', error)
}
}
const format3 = (num) => {
//
return num.toLocaleString('en-US')
}
</script>
@ -396,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">

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

@ -216,17 +216,14 @@ const get = async function (val) {
//
const reset = function () {
delete goldDetail.value.jwcode
delete goldDetail.value.type
delete goldDetail.value.startTime
delete goldDetail.value.endTime
delete goldDetail.value.markets
// goldDetail.value.markets = []
goldDetail.value ={
}
goldDetail.value.markets = []
selectedMarketPath.value = []
delete sortField.value
delete sortOrder.value
getTime.value = []
delete goldDetail.value.payPlatform
activeTimeRange.value = '' //
search()
@ -480,7 +477,10 @@ const getMarket = async function () {
console.log('请求失败', error)
}
}
const format3 = (num) => {
//
return num.toLocaleString('en-US')
}
</script>
<template>
<div>
@ -554,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">

26
src/views/usergold/userbean.vue

@ -15,13 +15,19 @@
<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 label="ID" style="width: 120px" prop="id" />
<el-table-column type="index" label="序号" width="100px" fixed="left">
<template #default="scope">
<span>{{
scope.$index + 1 + (pagination.pageNum - 1) * pagination.pageSize
}}</span>
</template>
</el-table-column>
<el-table-column label="姓名" style="width: 120px;" prop="name" show-overflow-tooltip />
<el-table-column label="精网号" style="width: 120px;" prop="jwcode" />
<el-table-column label="所属地区" style="width: 120px;" prop="dept" />
@ -147,7 +153,7 @@ const handleSortChange = (column) => {
}
const getmarkets = async () => {
try {
const result = await API({ url: '/beanConsume/getDept', data: {} })
const result = await API({ url: '/beanUser/getDept', data: {} })
marketOptions.value = result.data || []
} catch (error) {
console.error('获取地区列表失败', error)
@ -171,6 +177,10 @@ const handleCurrentChange = function (val) {
pagination.value.pageNum = val
get()
}
const format3 = (num) => {
//
return num.toLocaleString('en-US')
}
onMounted(() => {
get()
@ -181,8 +191,8 @@ onMounted(() => {
</script>
<style scoped>
.stats-card {
/* .stats-card {
background-color: #EBEEF5;
padding: 5px;
}
} */
</style>
Loading…
Cancel
Save