- 退款记录条数: {{ stats.totalItems }}
- 退款金币总数: {{ stats.totalCoins }}
- 永久金币: {{ stats.permanentCoins }}
- 免费金币: {{ stats.freeCoins }}
- 任务金币: {{ stats.taskCoins }}
+
+ 总条数:{{ stats.totalItems }}条
+ 退款总金币数:{{ stats.totalCoins }}金币
+ 永久金币:{{ stats.permanentCoins }}金币
+ 免费金币:{{ stats.freeCoins }}金币
+ 任务金币:{{ stats.taskCoins }}金币
+
+
+
+
+
+
+ {{ scope.$index + 1 + (pagination.pageNum - 1) * pagination.pageSize }}
+
+
+
+
+
+
+ 商品退款
+
+
+
+
+ {{ scope.row.money }}
+
+
+ {{ scope.row.permanentGold }}
+
+
+ {{ scope.row.freeGold }}
+
+
+ {{ scope.row.taskGold }}
+
+
+
+
+
+
+
+ {{ moment(scope.row.createTime).format('YYYY-MM-DD HH:mm:ss') }}
+
+
+
+
+ {{ scope.row.auditTime ? moment(scope.row.auditTime).format('YYYY-MM-DD HH:mm:ss') : '--' }}
+
+
+
+
+
+
+
+
+ 通过
+
+
+
+ 取消
+ 确定
+
+
+
+ 驳回
+
+
+
+
+
-
-
-
-
-
-
-
-
-
-
- {{ row.rechargeCoin + row.freeCoin + row.taskCoin }}
-
-
-
-
-
-
-
-
-
-
-
- {{ moment(row.createTime).format('YYYY-MM-DD HH:mm:ss') }}
-
-
-
-
-
- {{ row.auditTime ? moment(row.auditTime).format('YYYY-MM-DD HH:mm:ss') : '--' }}
-
-
-
-
-
- 通过
- 驳回
-
-
-
-
-
+
-
-
-
-
-
-
-
+
- 取消
- 确定
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/src/views/consume/coinConsumeDetail.vue b/src/views/consume/coinConsumeDetail.vue
index 3f6a79e..e2af28e 100644
--- a/src/views/consume/coinConsumeDetail.vue
+++ b/src/views/consume/coinConsumeDetail.vue
@@ -5,31 +5,20 @@ import request from '@/util/http'
// 之后整理一下
+/*
+====================工具方法==============================
+*/
+
// 时间格式化
const formatTime = (val) => val ? dayjs(val).format('YYYY-MM-DD HH:mm:ss') : ''
-// 变量
-
+/*
+====================数据=================================
+*/
//这是获取用户信息的接口
const adminData = ref({})
-
-const getAdminData = async function () {
- try {
- const result = await request({
- url: '/admin/userinfo',
- data: {}
- })
- adminData.value = result
- console.log('请求成功', result)
- console.log('用户信息', adminData.value)
- } catch (error) {
- console.log('请求失败', error)
- }
-}
-
// 充值明细表格
const tableData = ref([])
-// 搜索======================================
// 搜索consumeUser 表单
const consumeUser = ref({
@@ -40,8 +29,12 @@ const consumeUser = ref({
startTime: '',
endTime: '',
- goodsName: ""
+ goodsName: '',
+
+
})
+
+
// 搜索对象
const getObj = ref({
pageNum: 1,
@@ -98,13 +91,35 @@ const totalGold = ref(0)
const permanentGolds = ref(0)
const freeGolds = ref(0)
const taskGolds = ref(0)
+// 查询商品的接口的表单
+const goods = ref([])
-// 计算总金币数
-const sumGold = computed(() => permanentGolds.value + freeGolds.value + taskGolds.value)
-// 方法
+const totalGoldSearch = ref({
+ payPlatform: "",
+ market: "",
+ startTime: "",
+ endTime: "",
+ goodsName: ""
+})
+
+/*
+====================方法=================================
+*/
+// 获取登录用户信息
+const getAdminData = async function () {
+ try {
+ const result = await request({
+ url: '/admin/userinfo',
+ data: {}
+ })
+ adminData.value = result
+ console.log('请求成功', result)
+ console.log('用户信息', adminData.value)
+ } catch (error) {
+ console.log('请求失败', error)
+ }
+}
-// 搜索=========================================================================================================================================================
-// 搜索方法
const ConsumeSelectBy = async function (val) {
try {
@@ -135,33 +150,42 @@ const ConsumeSelectBy = async function (val) {
// 发送POST请求
const result = await request({
- // url: 'consumeUser/selectBy',
url: 'http://192.168.8.247:8081/consume/selectBy',
data: {
pageNum: getObj.value.pageNum,
pageSize: getObj.value.pageSize,
- consumeUser: consumeUser.value
+ consumeUser: {
+ ...consumeUser.value,
+ sortField: sortField.value,
+ sortOrder: sortOrder.value
+ }
}
})
+ console.log('请求成功2', sortField)
+
// 合计数的接口
// 复制一份 detail.value 并移除排序字段和排序方式
const detailWithoutSort = {...consumeUser.value}
delete detailWithoutSort.sortField
delete detailWithoutSort.sortOrder
-// 这个接口不知道传什么
+
+
+ // 赋值
+ totalGoldSearch.value.startTime = consumeUser.value.startTime
+ totalGoldSearch.value.endTime = consumeUser.value.endTime
+ totalGoldSearch.value.payPlatform = consumeUser.value.payPlatform
+ totalGoldSearch.value.market = consumeUser.value.market
+ totalGoldSearch.value.goodsName = consumeUser.value.goodsName
+//
const resultTotalGold = await request({
// url: 'http://192.168.8.247:8081/consume/statsGold',
url: 'http://192.168.8.247:8081/consume/statsGold',
- // data: {
- // pageNum: getObj.value.pageNum,
- // pageSize: getObj.value.pageSize,
- // consumeUser: consumeUser.value
- // }
+ data: totalGoldSearch.value
})
- console.log("总计",resultTotalGold)
+ console.log("总计", resultTotalGold)
if (resultTotalGold.code === 200 && resultTotalGold.data) {
const data = resultTotalGold.data
@@ -182,7 +206,7 @@ const ConsumeSelectBy = async function (val) {
}
const sumGoldList = tableData.value.map(item => item.sumGold);
- console.log("sumGold",sumGoldList); // 输出包含所有 sumGold 值的数组
+ console.log("sumGold", sumGoldList); // 输出包含所有 sumGold 值的数组
console.log('@@@@@@@@@@tableDataT', tableDataTotal.value.list)
@@ -292,9 +316,7 @@ const get7Days = function () {
console.log('getTime', getTime.value)
ConsumeSelectBy()
}
-
-// 查询商品的接口
-const goods = ref([])
+// 获取商品列表
const getGoods = async function () {
try {
// 发送POST请求
@@ -335,19 +357,18 @@ const getMarket = async function () {
}
}
-
// 处理排序事件
const handleSortChange = (column) => {
console.log('排序字段:', column.prop)
console.log('排序方式:', column.order)
if (column.prop === 'permanentGold') {
- sortField.value = 'recharge_coin'
+ sortField.value = 'permanentGold'
} else if (column.prop === 'taskGold') {
- sortField.value = 'task_coin'
+ sortField.value = 'taskGold'
} else if (column.prop === 'freeGold') {
- sortField.value = 'free_coin'
+ sortField.value = 'freeGold'
} else if (column.prop === 'createTime') {
- sortField.value = 'create_time'
+ sortField.value = 'createTime'
}
sortOrder.value = column.order === 'ascending' ? 'DESC' : 'ASC'
ConsumeSelectBy()
@@ -388,7 +409,23 @@ const checkNumber = function () {
})
}
}
-// 挂载
+
+/*
+====================计算属性=================================
+*/
+
+// 计算总金币数
+const sumGold = computed(() => permanentGolds.value + freeGolds.value + taskGolds.value)
+
+/*
+====================监听=================================
+*/
+
+/*
+====================挂载=================================
+*/
+
+
onMounted(async function () {
await getAdminData()
await ConsumeSelectBy()
@@ -610,7 +647,7 @@ onMounted(async function () {
{
ElMessageBox.confirm('确认修改?')
.then(() => {
@@ -149,61 +224,14 @@ const cancelEdit = () => {
}
-
+// 关闭编辑弹窗
const handleEditDialogClose = () => {
if (editFormRef.value) {
getAllRate()
}
}
-
-// 挂载
-onMounted(async function () {
- await getAllRate()
- await getAdminData()
-})
-
-
-//货币条目
-const options = [
- {
- value: 'USD',
- label: 'USD'
- },
- {
- value: 'HKD',
- label: 'HKD'
- },
- {
- value: 'THB',
- label: 'THB'
- },
- {
- value: 'VND',
- label: 'VND'
- },
- {
- value: 'CAD',
- label: 'CAD'
- },
- {
- value: 'MYR',
- label: 'MYR'
- },
- {
- value: 'KRW',
- label: 'KRW'
- },
- {
- value: 'JPY',
- label: 'JPY'
- },
- {
- value: 'CNY',
- label: 'CNY'
- }
-]
-
+// 日期格式化
function formatDate(value) {
if (!value) return ''
const date = new Date(value)
@@ -217,51 +245,55 @@ function formatDate(value) {
}
-const checkFreeGoldRadio = function (rule, value, callback) {
- if (value == '0' || value == null || value == '') {
- callback(new Error('请输入汇率比'))
- } else if (value < 0 || isNaN(value)) {
- callback(new Error('请输入正确的格式'))
- } else {
- callback()
- }
-}
-const rules = reactive({
- rateName: [{required: true, message: '请选择货币名称', trigger: 'blur'}],
- num: [{validator: checkFreeGoldRadio, trigger: 'blur'}],
-})
+// 输入框过滤
function handleInput(value) {
- // 初始过滤非数字和小数点字符
- let validValue = value.replace(/[^\d.]/g, '');
+ // 检查是否使用了中文句号
+ if (value.includes('。') || /[^\d.]/g.test(value)) {
+ ElMessage.warning('请输入正确的符号');
+ // value = value.replace('。', '.');
+ }
+
// 处理多个小数点的情况,保留第一个,移除后续的
- const parts = validValue.split('.');
+ const parts = value.split('.');
if (parts.length > 2) {
- validValue = parts[0] + '.' + parts.slice(1).join('');
- ElMessage.warning('请输入正确格式');
+ value = parts[0] + '.' + parts.slice(1).join('');
+ ElMessage.warning('只能包含一个小数点');
}
- // 限制小数点后最多7位
- const [integerPart, decimalPart = ''] = validValue.split('.');
- if (decimalPart.length > 7) {
- validValue = `${integerPart}.${decimalPart.slice(0, 7)}`;
- ElMessage.warning('最多只能输入7位小数');
+ // 禁止输入负数
+ if (value.startsWith('-')) {
+ ElMessage.warning('不允许输入负数');
+ value = value.substring(1);
}
- // 最终格式验证
- const isValidFormat = /^\d+(\.\d{0,7})?$/.test(validValue);
- if (value && !isValidFormat) {
- ElMessage.warning('请输入正确的数字格式');
+ // 小数点前没有数字时补0
+ if (value.startsWith('.')) {
+ value = '0' + value;
+ ElMessage.info('已自动补充前导0');
}
// 更新表单值
- rateEdit.value.num = validValue;
- return validValue;
+ rateEdit.value.num = value;
+ return value;
}
-// 表单大小
-const formSize = ref('default')
+/*
+====================监听=========================
+*/
+
+/*
+====================挂载=========================
+*/
+
+// 挂载
+onMounted(async function () {
+ await getAllRate()
+ await getAdminData()
+})
+
+
@@ -362,7 +394,7 @@ const formSize = ref('default')
style="width: 240px"
>