Browse Source

0512前端提测合并

main
zry 6 days ago
parent
commit
8237843c15
  1. 4
      gold-system/.env.development
  2. 9
      gold-system/.env.test
  3. 216
      gold-system/src/views/goldBeen/goldenBeenConsum.vue
  4. 44
      gold-system/src/views/goldBeen/goldenBeenDetail.vue
  5. 93
      gold-system/src/views/goldBeen/onLineDetail.vue
  6. 1
      gold-system/src/views/index.vue
  7. 16
      gold-system/src/views/login.vue
  8. 3
      gold-system/src/views/managerecharge/activity.vue
  9. 56
      gold-system/src/views/managerecharge/rate.vue
  10. 33
      gold-system/src/views/recharge/allRecharge.vue
  11. 1
      gold-system/src/views/refund/allRefund.vue
  12. 100
      gold-system/src/views/usergold/index.vue
  13. 48
      gold-system/src/views/usergoldInfo/index.vue
  14. 2
      gold-system/stats.html

4
gold-system/.env.development

@ -1,5 +1,5 @@
# VITE_API_BASE='https://hwjb.homilychart.com/gold_htms_prod'
#VITE_API_BASE='http://54.251.137.151:10704/'
# VITE_API_BASE='http://54.251.137.151:10704/'
# VITE_API_BASE='http://192.168.8.94:8080/'
VITE_API_BASE='https://hwjb.homilychart.com/gold_htms_dev'
# VITE_API_BASE='http://54.251.137.151:10704/'
# VITE_API_BASE='http://192.168.8.220:8080/'

9
gold-system/.env.test

@ -1,5 +1,6 @@
# VITE_API_BASE='http://54.251.137.151:10704/'
# VITE_API_BASE='https://hwjb.homilychart.com/gold_htms_prod'
#VITE_API_BASE='http://54.251.137.151:10704/'
# VITE_API_BASE='http://192.168.8.94:8080/'
VITE_API_BASE='https://hwjb.homilychart.com/gold_htms_prod'
# VITE_API_BASE='http://54.251.137.151:10704/'
# VITE_API_BASE='http://192.168.8.220:8080/'
VITE_API_BASE='https://hwjb.homilychart.com/gold_htms_dev'
# VITE_API_BASE='http://192.168.8.232:8080/'

216
gold-system/src/views/goldBeen/goldenBeenConsum.vue

@ -92,6 +92,7 @@
<el-button @click="get7Days()">近7天</el-button>
</el-form-item>
<el-form-item>
<el-button type="success" @click="exportExcel">导出Excel</el-button>
<el-button type="primary" @click="search">查询</el-button>
<el-button type="success" @click="reset(ruleFormRef)">重置</el-button>
</el-form-item>
@ -164,13 +165,70 @@
</el-pagination>
</div>
</div>
<!-- 导出信息确认对话框 -->
<el-dialog
v-model="showExportInfoPanel"
title="导出信息确认"
width="400px"
:close-on-click-modal="false"
>
<div class="info-panel-header">导出信息</div>
<div v-if="!detailY.jwcode && !detailY.ipAddress && !detailY.sourceType && !detailY.sourceName && (!detailY.startTime || !detailY.endTime)">
你正在导出所有数据
</div>
<div v-else>
你正在导出以下数据
</div>
<div v-if="detailY.jwcode">精网号{{ detailY.jwcode }}</div>
<div v-if="detailY.ipAddress">地区{{ detailY.ipAddress }}</div>
<div v-if="detailY.sourceType">
消费类型{{ consumList.value.find(item => item.value === detailY.sourceType)?.text }}
</div>
<div v-if="detailY.sourceName">直播间{{ detailY.sourceName }}</div>
<div v-if="detailY.startTime && detailY.endTime">
时间范围{{ detailY.startTime }} {{ detailY.endTime }}
</div>
<template #footer>
<span class="dialog-footer">
<el-button @click="showExportInfoPanel = false">取消</el-button>
<el-button type="primary" @click="doExportExcel">导出</el-button>
</span>
</template>
</el-dialog>
<!-- 导出进度对话框 -->
<el-dialog
v-model="isExporting"
title="正在导出"
width="400px"
:close-on-click-modal="false"
:show-close="false"
>
<el-progress
:percentage="exportProgress"
:stroke-width="15"
striped
animated
/>
<div class="export-status">
已导出 {{ Math.round((exportProgress / 100) * total) }} / {{ total }}
</div>
<template #footer>
<el-button type="danger" @click="cancelExport">取消导出</el-button>
</template>
</el-dialog>
</template>
<script setup lang="ts">
import { ref } from 'vue'
import type { FormInstance } from 'element-plus'
// import { ElMessage } from 'element-plus'
import { ElMessage } from 'element-plus'
import moment from 'moment'
import API from '@/util/http'
import axios from 'axios'
// xlsx
import * as XLSX from 'xlsx'
const { utils, writeFile } = XLSX
//
const tableData = ref([])
@ -311,8 +369,8 @@ const getCount = async () => {
ipAddress: detailY.value.ipAddress,
sourceName: detailY.value.sourceName,
sourceType: detailY.value.sourceType,
startTime: detailY.value.createTime[0],
endTime: detailY.value.createTime[1]
startTime: detailY.value.startTime,
endTime: detailY.value.endTime
}
})
if (result.code == 200) {
@ -332,6 +390,158 @@ const getArea = async () => {
console.log('请求失败', error)
}
}
//
const showExportInfoPanel = ref(false)
const exportProgress = ref(0)
const isExporting = ref(false)
const exportCancelToken = ref<any>(null)
// Excel
const headers = [
'序号',
'姓名',
'精网号',
'地区',
'消费类型',
'金豆价格',
'直播间',
'消费时间'
]
//
const exportExcel = () => {
showExportInfoPanel.value = true
}
//
const doExportExcel = async () => {
try {
isExporting.value = true
exportProgress.value = 0
showExportInfoPanel.value = false
// Excel
const wb = utils.book_new()
const ws = utils.aoa_to_sheet([headers])
utils.book_append_sheet(wb, ws, 'Sheet1')
//
const writer = {
write: (d: any[][], o: any) => {
if (!d) return
utils.sheet_add_aoa(ws, d, { origin: -1 })
}
}
let page = 1
let totalExported = 0
const pageSize = 5000 // 5000
let totalRecords = 0
//
const firstResult = await API({
url: '/dou/getSpend',
method: 'post',
data: {
pageNum: 1,
pageSize,
spend: {
...detailY.value
}
}
})
totalRecords = firstResult.data.total
//
const CancelToken = axios.CancelToken
exportCancelToken.value = CancelToken.source()
//
const firstData = firstResult.data.list
if (firstData.length) {
const rows = firstData.map((row: any, index: number) => {
return [
totalExported + index + 1,
row.nickname || '',
row.jwcode || '',
row.ipAddress || '',
consumList.value.find(item => item.value === row.sourceType)?.text || '',
row.jinbiCostTotal || 0,
row.room || '',
moment(row.createTime).format('YYYY-MM-DD HH:mm:ss') || ''
]
})
writer.write(rows,{})
totalExported += firstData.length
exportProgress.value = Math.round((totalExported / totalRecords) * 100)
page++
}
while (totalExported < totalRecords) {
const result = await API({
url: '/dou/getSpend',
method: 'post',
data: {
pageNum: page,
pageSize,
spend: {
...detailY.value
}
},
cancelToken: exportCancelToken.value.token
})
const data = result.data.list
if (!data.length) break
//
const rows = data.map((row: any, index: number) => [
totalExported + index + 1,
row.nickname || '',
row.jwcode || '',
row.ipAddress || '',
consumList.value.find(item => item.value === row.sourceType)?.text || '',
row.jinbiCostTotal || 0,
row.room || '',
moment(row.createTime).format('YYYY-MM-DD HH:mm:ss') || ''
])
//
writer.write(rows,{})
totalExported += data.length
exportProgress.value = Math.round((totalExported / totalRecords) * 100)
// 500
if (page % 500 === 0) {
await new Promise(resolve => setTimeout(resolve, 0))
}
page++
}
//
writeFile(wb, '金豆消费明细.xlsx')
exportProgress.value = 100
isExporting.value = false
exportCancelToken.value = null
ElMessage.success(`导出成功,共${totalExported}条数据`)
} catch (error) {
if (!axios.isCancel(error)) {
ElMessage.error(`导出失败: ${error.message}`)
}
isExporting.value = false
exportCancelToken.value = null
}
}
//
const cancelExport = () => {
if (exportCancelToken.value) {
exportCancelToken.value.cancel('用户取消导出')
ElMessage.warning('导出已取消')
isExporting.value = false
}
}
//
getInit()
getCount()

44
gold-system/src/views/goldBeen/goldenBeenDetail.vue

@ -36,12 +36,21 @@
</el-form-item>
<el-form-item prop="type">
<el-text class="mx-1" size="large">充值类型</el-text>
<el-input
<el-select
v-model="detailY.type"
placeholder="请输入充值类型"
style="width: 220px"
/>
placeholder="请选择充值类型"
style="width: 240px"
clearable
>
<el-option
v-for="item in typeList"
:key="item"
:label="item"
:value="item"
/>
</el-select>
</el-form-item>
<!-- <el-form-item prop="payStyle" label="充值平台">
<el-select
v-model="detailY.payStyle"
@ -57,6 +66,7 @@
/>
</el-select>
</el-form-item> -->
<el-row :span="24">
<el-form-item prop="startTime">
<el-text class="mx-1" size="large">开始时间</el-text>
<el-date-picker
@ -82,6 +92,7 @@
<el-button style="margin-left: 10px" @click="getToday()"></el-button>
<el-button @click="getYesterday()"></el-button>
<el-button @click="get7Days()">近7天</el-button>
</el-row>
<el-form-item>
<el-button type="primary" @click="search">查询</el-button>
<el-button type="success" @click="reset(ruleFormRef)">重置</el-button>
@ -467,6 +478,16 @@ const getArea = async () => {
console.log('请求失败', error)
}
}
const getType = async () => {
try {
const result = await API({
url: '/dou/getType'
})
typeList.value = result.data
} catch (error) {
console.log('请求失败', error)
}
}
const handlePageSizeChange = (val) => {
getObj.value.pageSize = val
getObj.value.pageNum = 1
@ -484,13 +505,13 @@ const platformList = ref<string[]>([
// 'system',
// ''
])
// const typeList = ref<string[]>([
// '',
// '',
// '',
// '',
// ''
// ])
const typeList = ref<string[]>([
'金币换金豆',
'金币换免费金豆',
'赠送金豆',
'购买金豆',
'客服操作'
])
//
const detailY = ref({
jwcode: '',
@ -703,6 +724,7 @@ onMounted(() => {
getPayType()
getCount()
getArea()
getType()
})
</script>
<style scoped lang="scss">

93
gold-system/src/views/goldBeen/onLineDetail.vue

@ -52,17 +52,26 @@
/>
</el-select>
</el-form-item>
<el-form-item prop="createTime">
<el-text class="mx-1" size="large">充值时间</el-text>
<el-form-item prop="startTime">
<el-text class="mx-1" size="large">开始时间</el-text>
<el-date-picker
v-model="detailY.createTime"
type="daterange"
start-placeholder="开始日期"
end-placeholder="结束日期"
v-model="detailY.startTime"
type="date"
placeholder="开始日期"
style="width: 240px"
format="YYYY-MM-DD HH:mm:ss"
value-format="YYYY-MM-DD HH:mm:ss"
/>
</el-form-item>
<el-form-item prop="endTime">
<el-text class="mx-1" size="large">结束时间</el-text>
<el-date-picker
v-model="detailY.endTime"
type="date"
placeholder="结束日期"
style="width: 240px"
format="YYYY-MM-DD HH:mm:ss"
value-format="YYYY-MM-DD HH:mm:ss"
:unlinkPanels="true"
/>
<el-button style="margin-left: 10px" @click="getToday()"></el-button>
<el-button @click="getYesterday()"></el-button>
@ -132,7 +141,7 @@
:close-on-click-modal="false"
>
<div class="info-panel-header">导出信息</div>
<div v-if="!detailY.jwcode && !detailY.deptName && !detailY.orderNo && !detailY.payStyle && (!Array.isArray(detailY.createTime) || !detailY.createTime.length)">
<div v-if="!detailY.jwcode && !detailY.deptName && !detailY.orderNo && !detailY.payStyle && !detailY.startTime && !detailY.endTime">
你正在导出所有数据
</div>
<div v-else>
@ -142,9 +151,9 @@
<div v-if="detailY.deptName">所属地区{{ detailY.deptName || '' }}</div>
<div v-if="detailY.orderNo">订单号{{ detailY.orderNo || '' }}</div>
<div v-if="detailY.payStyle">充值平台{{ platformList.find(item => item === detailY.payStyle) || '' }}</div>
<div v-if="Array.isArray(detailY.createTime) && detailY.createTime.length">
<div v-if="detailY.startTime || detailY.endTime">
<span>更新时间</span>
<span>{{ detailY.createTime[0] || '无起始时间' }} {{ detailY.createTime[1] || '无结束时间' }}</span>
<span>{{ detailY.startTime || '无起始时间' }} {{ detailY.endTime || '无结束时间' }}</span>
</div>
<template #footer>
<span class="dialog-footer">
@ -193,11 +202,6 @@ const total = ref(100)
const priceValue = ref(0)
const countValue = ref(0)
const areaList = ref<string[]>([])
const isExport = ref<boolean>(false)
const rules = ref({
jwcode: [{ required: true, message: '请输入精网号', trigger: 'blur' }],
area: [{ required: true, message: '请选择所属地区', trigger: 'change' }]
})
const platformList = ref<string[]>([])
//
@ -207,7 +211,8 @@ const getToday = () => {
const startDate = moment(today).startOf('day').format('YYYY-MM-DD HH:mm:ss')
//
const endDate = moment(today).endOf('day').format('YYYY-MM-DD HH:mm:ss')
detailY.value.createTime = [startDate, endDate]
detailY.value.startTime = startDate
detailY.value.endTime = endDate
search()
}
@ -218,7 +223,8 @@ const getYesterday = () => {
const startDate = yesterday.startOf('day').format('YYYY-MM-DD HH:mm:ss')
//
const endDate = yesterday.endOf('day').format('YYYY-MM-DD HH:mm:ss')
detailY.value.createTime = [startDate, endDate]
detailY.value.startTime = startDate
detailY.value.endTime = endDate
search()
}
@ -228,7 +234,8 @@ const get7Days = () => {
const startDate = moment().subtract(6, 'days').startOf('day').format('YYYY-MM-DD HH:mm:ss')
//
const endDate = moment().endOf('day').format('YYYY-MM-DD HH:mm:ss')
detailY.value.createTime = [startDate, endDate]
detailY.value.startTime = startDate
detailY.value.endTime = endDate
search()
}
@ -249,8 +256,8 @@ const detailY = ref({
deptName: '',
orderNo: '',
payStyle: '',
type: '',
createTime: [] as [string, string] | []
startTime: '',
endTime: ''
})
const getObj = ref({
@ -272,11 +279,9 @@ const getInit = async (
) => {
try {
console.log('搜索参数', getObj.value)
let startTime = ''
let endTime = ''
if (Array.isArray(detailY.value.createTime) && detailY.value.createTime.length === 2) {
[startTime, endTime] = detailY.value.createTime
}
const startTime = detailY.value.startTime
const endTime = detailY.value.endTime
console.log(startTime, endTime)
// POST
const result = await API({
@ -367,18 +372,18 @@ const getPayType = async () => {
//
const getCount = async () => {
try {
let startTime = ''
let endTime = ''
if (Array.isArray(detailY.value.createTime) && detailY.value.createTime.length === 2) {
[startTime, endTime] = detailY.value.createTime
}
// let startTime = ''
// let endTime = ''
// if (Array.isArray(detailY.value.createTime) && detailY.value.createTime.length === 2) {
// [startTime, endTime] = detailY.value.createTime
// }
const result = await API({
url: '/dou/getRechargeTotal',
data: {
jwcode: detailY.value.jwcode,
deptName: detailY.value.deptName,
startTime: startTime || '',
endTime: endTime || '',
startTime: detailY.value.startTime,
endTime: detailY.value.endTime,
orderNo: detailY.value.orderNo,
payStyle: detailY.value.payStyle
}
@ -424,11 +429,13 @@ const doExportExcel = async () => {
exportProgress.value = 0
allExportData = []
let startTime = ''
let endTime = ''
if (Array.isArray(detailY.value.createTime) && detailY.value.createTime.length === 2) {
[startTime, endTime] = detailY.value.createTime
}
// let startTime = ''
// let endTime = ''
// if (Array.isArray(detailY.value.createTime) && detailY.value.createTime.length === 2) {
// [startTime, endTime] = detailY.value.createTime
// }
// startTime = detailY.value.startTime
// endTime = detailY.value.endTime
//
const totalResult = await API({
@ -437,8 +444,8 @@ const doExportExcel = async () => {
pay: {
jwcode: detailY.value.jwcode,
deptName: detailY.value.deptName,
startTime: startTime || '',
endTime: endTime || '',
startTime: detailY.value.startTime || '',
endTime: detailY.value.endTime || '',
payStyle: detailY.value.payStyle,
orderNo: detailY.value.orderNo
},
@ -467,8 +474,8 @@ const doExportExcel = async () => {
pay: {
jwcode: detailY.value.jwcode,
deptName: detailY.value.deptName,
startTime: startTime || '',
endTime: endTime || '',
startTime: detailY.value.startTime || '',
endTime: detailY.value.endTime || '',
payStyle: detailY.value.payStyle,
orderNo: detailY.value.orderNo
},
@ -566,3 +573,7 @@ onMounted(() => {
}
</style>
<<<<<<< HEAD
=======
>>>>>>> 703486fc8c3f87173c028d61161e502a2e07fdfc

1
gold-system/src/views/index.vue

@ -22,6 +22,7 @@ const { currentArea, updateArea } = storeToRefs(areaStore)
const adminData = ref({
name: ''
})
const getAdminData = async function () {
try {
const result = await API({ url: '/admin/userinfo', data: {} })

16
gold-system/src/views/login.vue

@ -225,3 +225,19 @@ More comprehensive version at shenanigans.shoghisimon.ca/collection/css
background-size: 100% 2px, 100% 100%, 100% 100%;
}
</style>
<!-- 这是补救
const run = () => {
const width = window.innerWidth;
const height = window.innerHeight;
const chartNode = document.querySelector("main");
drawChart.default(chartNode,data,width,height);
};
window.addEventListener("resize", run);
document.addEventListener("DOMContentLoaded", run);
</script>
</body>
</html>
-->

3
gold-system/src/views/managerecharge/activity.vue

@ -231,7 +231,7 @@ const delConfirm = async (row) => {
delObj.value = row
//
const result = await request({
url: '/recharge/activity/delete', //
url: '/recharge/activity/edit', //
method: 'post',
data: delObj.value
})
@ -324,6 +324,7 @@ const del = (row) => {
{{ moment(scope.row.endTime).format('YYYY-MM-DD HH:mm:ss') }}
</template>
</el-table-column>
<el-table-column prop="rechargeRatio" label="免费兑换比">
<template #default="scope">
<span>{{ scope.row.rechargeRatio }}:1</span>

56
gold-system/src/views/managerecharge/rate.vue

@ -22,7 +22,7 @@ const getAdminData = async function () {
rateAdd.value.adminId = adminData.value.adminId
rateEdit.value.adminId = adminData.value.adminId
console.log('请求成功', result)
console.log('用户信息', user.value)
// console.log('', user.value)
} catch (error) {
console.log('请求失败', error)
}
@ -31,7 +31,6 @@ getAdminData()
const regeAdd = ref(false)
const regeEdit = ref(false)
//
const tableData = ref([])
//
@ -39,10 +38,11 @@ const getObj = ref({
pageNum: 1,
pageSize: 10
})
const total = ref(0)
//
//
//
const value1 = ref({
startTime: '',
endTime: ''
@ -58,43 +58,44 @@ function handleDateChange(value) {
const time = ref({})
const get = async function (val) {
//
if (value1.value != null) {
if (value1.value.startDate != '' && value1.value.endDate != '') {
time.value.startTime = value1.value[0]
time.value.endTime = value1.value[1]
}
if (value1.value && value1.value.length === 2) {
time.value.startTime = value1.value[0];
time.value.endTime = value1.value[1];
} else {
time.value.startTime = ''
time.value.endTime = ''
time.value.startTime = '';
time.value.endTime = '';
}
try {
//
if (typeof val === 'number') {
getObj.value.pageNum = val
getObj.value.pageNum = val;
}
console.log('搜索参数', getObj.value)
console.log('搜索参数', {
...getObj.value,
rate: { ...time.value }
});
// POST
const result = await request({
url: '/rates/search',
method: 'POST',
data: {
...getObj.value,
rate: { ...time.value }
}
})
});
//
console.log('请求成功', result)
console.log('请求成功', result);
//
tableData.value = result.data.list
console.log('tableData', tableData.value)
// UI
tableData.value = result.data.list;
console.log('tableData', tableData.value);
//
total.value = result.data.total
console.log('total', total.value)
total.value = result.data.total;
console.log('total', total.value);
} catch (error) {
console.log('请求失败', error)
//
console.log('请求失败', error);
ElMessage.error('请求失败');
}
}
@ -185,6 +186,11 @@ const addRate = async function () {
})
if (result.code == 0) {
ElMessage.error(result.msg)
}else{
ElMessage({
type: 'success',
message: '新增汇率成功'
})
}
//
console.log('请求成功', result)
@ -528,16 +534,14 @@ function handleInput(value) {
class="button-item"
type="primary"
style="float: right"
@click="search()"
>查询</el-button
>
@click="search"
>查询</el-button>
<el-button
class="button-item"
type="success"
style="float: right"
@click="handledelete"
>重置</el-button
>
>重置</el-button>
</div>
</el-card>
</el-col>

33
gold-system/src/views/recharge/allRecharge.vue

@ -210,15 +210,21 @@ const getToday = function () {
today.getMonth(),
today.getDate()
)
// 23:59:59
const endDate = new Date(
today.getFullYear(),
today.getMonth(),
today.getDate() + 1
today.getDate(),
23, 59, 59
)
getTime.value = [startDate, endDate]
//
rechargeVo.value.startDate = moment(startDate).format('YYYY-MM-DD HH:mm:ss')
rechargeVo.value.endDate = moment(endDate).format('YYYY-MM-DD HH:mm:ss')
console.log('getTime', getTime.value)
get()
}
//
const getYesterday = function () {
const yesterday = new Date()
@ -228,15 +234,21 @@ const getYesterday = function () {
yesterday.getMonth(),
yesterday.getDate()
)
// 23:59:59
const endDate = new Date(
yesterday.getFullYear(),
yesterday.getMonth(),
yesterday.getDate() + 1
yesterday.getDate(),
23, 59, 59
)
getTime.value = [startDate, endDate]
//
rechargeVo.value.startDate = moment(startDate).format('YYYY-MM-DD HH:mm:ss')
rechargeVo.value.endDate = moment(endDate).format('YYYY-MM-DD HH:mm:ss')
console.log('getTime', getTime.value)
get()
}
// 7
const get7Days = function () {
const today = new Date()
@ -245,12 +257,17 @@ const get7Days = function () {
today.getMonth(),
today.getDate() - 6
)
// 23:59:59
const endDate = new Date(
today.getFullYear(),
today.getMonth(),
today.getDate() + 1
today.getDate(),
23, 59, 59
)
getTime.value = [startDate, endDate]
//
rechargeVo.value.startDate = moment(startDate).format('YYYY-MM-DD HH:mm:ss')
rechargeVo.value.endDate = moment(endDate).format('YYYY-MM-DD HH:mm:ss')
console.log('getTime', getTime.value)
get()
}
@ -610,7 +627,7 @@ const putExcel = ref({
<el-col>
<el-card style="margin-bottom: 20px">
<el-row style="margin-bottom: 10px">
<el-col :span="8">
<el-col :span="6">
<div class="head-card-element">
<el-text class="mx-1" size="large">活动名称</el-text>
<el-select
@ -629,8 +646,8 @@ const putExcel = ref({
</el-select>
</div>
</el-col>
<el-col :span="8">
<!-- <div class="head-card-element">
<!-- <el-col :span="8">
<div class="head-card-element">
<el-text class="mx-1" size="large">充值方式</el-text>
<el-select
v-model="rechargeVo.rechargeWay"
@ -646,8 +663,8 @@ const putExcel = ref({
:value="item"
/>
</el-select>
</div> -->
</el-col>
</div>
</el-col>-->
<el-col :span="8">
<div class="head-card-element" v-if="adminData.area == '总部'">
<el-text class="mx-1" size="large">所属地区</el-text>

1
gold-system/src/views/refund/allRefund.vue

@ -1,4 +1,5 @@
<script setup>
// 退
import { ref, onMounted, reactive, computed } from 'vue'
import ElementPlus from 'element-plus'
import { AiFillRead } from 'vue-icons-plus/ai'

100
gold-system/src/views/usergold/index.vue

@ -1,4 +1,4 @@
<!-- 这是客户金币明细页面 -->
<script setup>
import { ref, onMounted, computed ,nextTick} from 'vue'
@ -128,6 +128,26 @@ const trimJwCode = () => {
detailY.value.jwcode = detailY.value.jwcode.replace(/\s/g, '');
}
}
//
const search = function () {
trimJwCode();
getObj.value.pageNum = 1
get()
}
//
const reset = function () {
delete detailY.value.jwcode
delete detailY.value.num
delete detailY.value.startDate
delete detailY.value.endDate
delete detailY.value.area
delete sortField.value
delete sortOrder.value
getTime.value = []
delete detailY.value.consumePlatform
}
//
const getToday = function () {
const today = moment()
@ -153,24 +173,32 @@ const get7Days = function () {
getTime.value = [startDate, endDate]
search()
}
//
const search = function () {
trimJwCode();
getObj.value.pageNum = 1
get()
}
//
const reset = function () {
delete detailY.value.jwcode
delete detailY.value.num
delete detailY.value.startDate
delete detailY.value.endDate
delete detailY.value.area
delete sortField.value
delete sortOrder.value
getTime.value = []
delete detailY.value.consumePlatform
//
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: '请检查输入内容'
})
}
}
//
@ -275,20 +303,24 @@ const doExportExcel = async () => {
//
const firstData = firstResult.data.list
if (firstData.length) {
const rows = firstData.map((row, index) => [
totalExported + index + 1,
row.username || '',
row.jwcode || '',
row.area || '',
platformMap[row.consumePlatform] || '',
(row.gold).toFixed(2) || '0.00',
updateTypeMap[row.updateType] || '',
(row.rechargeCoin / 100).toFixed(2) || '0.00',
(row.freeCoin / 100).toFixed(2) || '0.00',
(row.taskCoin / 100).toFixed(2) || '0.00',
row.name || '',
moment(row.createTime).format('YYYY-MM-DD HH:mm:ss') || ''
])
const rows = firstData.map((row, index) => {
const consumePlatform = parseInt(row.consumePlatform, 10); //
const platformInfo = platformMap[consumePlatform] || '';
return [
totalExported + index + 1,
row.username || '',
row.jwcode || '',
row.area || '',
platformInfo,
(row.gold / 100).toFixed(2) || '0.00',
updateTypeMap[row.updateType] || '',
(row.rechargeCoin / 100).toFixed(2) || '0.00',
(row.freeCoin / 100).toFixed(2) || '0.00',
(row.taskCoin / 100).toFixed(2) || '0.00',
row.name || '',
moment(row.createTime).format('YYYY-MM-DD HH:mm:ss') || ''
]
})
writer.write(rows)
totalExported += firstData.length
exportProgress.value = Math.round((totalExported / totalRecords) * 100)
@ -469,9 +501,9 @@ const handleCurrentChange = function (val) {
<div v-if="detailY.area">所属地区{{ detailY.area || '' }}</div>
<div v-if="Array.isArray(getTime) && getTime.length >= 2">
<span>更新时间</span>
<!-- 直接使用 getTime 而非 getTime.value -->
<!-- 修改时间格式为精确到秒 -->
<span v-if="Array.isArray(getTime) && getTime.length >= 2">
{{ moment(getTime[0]).format('YYYY-MM-DD') }} {{ moment(getTime[1]).format('YYYY-MM-DD') }}
{{ moment(getTime[0]).format('YYYY-MM-DD HH:mm:ss') }} {{ moment(getTime[1]).format('YYYY-MM-DD HH:mm:ss') }}
</span>
<span v-else></span>
</div>

48
gold-system/src/views/usergoldInfo/index.vue

@ -78,7 +78,6 @@ const updateType = [
const get = async function (val) {
try {
//
//
if (adminData.value.area === '泰国') {
detailY.value.areas = ['泰国', '越南']
} else if (adminData.value.area !== '总部') {
@ -90,7 +89,7 @@ const get = async function (val) {
}
//
if (getTime.value != null) {
if (getTime.value.startDate != '' && getTime.value.endDate != '') {
if (getTime.value[0] != '' && getTime.value[1] != '') {
detailY.value.startDate = getTime.value[0]
detailY.value.endDate = getTime.value[1]
}
@ -115,23 +114,34 @@ const get = async function (val) {
detailY: { ...detailY.value }
}
})
//
console.log('请求成功', result)
// console.log("2", result2);
//
tableData.value = result.data.list
console.log('tableData', tableData.value)
tableAllData.value = result2.data
// 100
//
rechargeCoin.value = parseFloat((tableAllData.value.sumR / 100).toFixed(2))
freeCoin.value = parseFloat((tableAllData.value.sumF / 100).toFixed(2))
taskCoin.value = parseFloat((tableAllData.value.sumT / 100).toFixed(2))
// console.log("tableAllData", tableAllData.value);
//
total.value = result.data.total
console.log('total', total.value)
// result.data.list
if (result.data.list.length === 0) {
//
tableData.value = []
// 0
rechargeCoin.value = 0
freeCoin.value = 0
taskCoin.value = 0
// null
tableAllData.value = null
// 0
total.value = 0
// ElMessage.warning('')
} else {
//
console.log('请求成功', result)
//
tableData.value = result.data.list
console.log('tableData', tableData.value)
tableAllData.value = result2.data
// 100
rechargeCoin.value = parseFloat((tableAllData.value.sumR / 100).toFixed(2))
freeCoin.value = parseFloat((tableAllData.value.sumF / 100).toFixed(2))
taskCoin.value = parseFloat((tableAllData.value.sumT / 100).toFixed(2))
//
total.value = result.data.total
console.log('total', total.value)
}
} catch (error) {
console.log('请求失败', error)
//

2
gold-system/stats.html
File diff suppressed because it is too large
View File

Loading…
Cancel
Save