diff --git a/src/router/index.js b/src/router/index.js index cd6a7a9..f2932b3 100644 --- a/src/router/index.js +++ b/src/router/index.js @@ -98,21 +98,21 @@ const routes = [ path: 'live', name: "liveStream", component: () => import("../views/consume/liveStream.vue"), - meta: {permissionId: 50} // 对应"直播"id=50? + meta: {permissionId: 50} // 对应"直播"id=50 }, // 铁粉 { path: 'fan', name: "dieHardFan", component: () => import("../views/consume/dieHardFan.vue"), - meta: {permissionId: 51} // 对应"铁粉"id=51? + meta: {permissionId: 51} // 对应"铁粉"id=51 }, // 文章视频 { path: 'article', name: "articleVideo", component: () => import("../views/consume/articleVideo.vue"), - meta: {permissionId: 52} // 对应"文章视频"id=52? + meta: {permissionId: 52} // 对应"文章视频"id=52 } ] diff --git a/src/views/consume/articleVideo.vue b/src/views/consume/articleVideo.vue index 92a6c9d..8da42ae 100644 --- a/src/views/consume/articleVideo.vue +++ b/src/views/consume/articleVideo.vue @@ -4,6 +4,7 @@ import { dayjs, ElMessage } from 'element-plus' import request from '@/util/http' import API from '@/util/http' import moment from 'moment' +import { ar } from 'element-plus/es/locales.mjs' // 之后整理一下 /* @@ -22,12 +23,13 @@ const adminData = ref({}) const tableData = ref([]) // 搜索articleVideo 表单 -const articleVideo = ref({ +const beanConsumeArticle = ref({ jwcode: null, dept: "", type: "", - articleVideoId: "", - articleVideoTitle: "", + payMode: "", + articleId: "", + articleName: "", author: "", startTime: '', endTime: '', @@ -38,24 +40,16 @@ const channels = ref([]) // 抽离类型选项到响应式数组 const consumeTypes = ref([ - { label: '发礼物', value: 1 }, - { label: '发红包', value: 2 }, - { label: '发福袋', value: 3 }, - { label: '付费直播', value: 4 }, - { label: '加入粉丝团', value: 5 }, - { label: '发弹幕', value: 6 }, - { label: '单次付费', value: 7 }, - { label: '连续包月', value: 8 }, { label: '打赏', value: 9 }, { label: '打赏', value: 10 }, { label: '付费购买', value: 11 }, ]) -// 处理类型选择变化 -const handleTypeChange = (value) => { - if (value !== 1) { - articleVideo.value.gift = '' - } +// 处理 payMode 选择变化 +const handlePayModeChange = (value) => { + beanConsumeArticle.value.payMode = value; + // 触发搜索 + ConsumeSelectBy(); } //------------------------ @@ -80,8 +74,6 @@ const getTime = ref({ startTime: '', endTime: '' }) -// 搜索活动列表 -// const activity = ref([]) // 搜索地区列表 const dept = ref([]) @@ -120,6 +112,11 @@ const filterChannel = (query) => { const sortField = ref('') const sortOrder = ref('') +// 合计数 +const permanentBean = ref(0) +const freeBean = ref(0) +const totalNum = ref(0) + /* ====================方法================================= @@ -140,143 +137,121 @@ const getAdminData = async function () { } -// const ConsumeSelectBy = async function (val) { -// try { - -// // 搜索参数页码赋值 -// if (typeof val === 'number') { -// getObj.value.pageNum = val -// } -// // 搜索参数时间赋值 - -// if (getTime.value != null) { -// if (getTime.value.startTime != '' && getTime.value.endTime != '') { -// articleVideo.value.startTime = formatTime(getTime.value[0]) -// articleVideo.value.endTime = formatTime(getTime.value[1]) -// } -// } else { -// articleVideo.value.startTime = '' -// articleVideo.value.endTime = '' -// } -// articleVideo.value.sortField = sortField.value -// articleVideo.value.sortOrder = sortOrder.value - -// console.log('搜索参数_时间', articleVideo.value.startTime) - -// console.log('搜索参数1', getObj.value) - -// console.log('搜索参数2', articleVideo.value) - -// // 发送POST请求 -// const result = await request({ -// url: '/consume/selectBy', -// data: { -// pageNum: getObj.value.pageNum, -// pageSize: getObj.value.pageSize, -// articleVideo: { -// ... articleVideo.value, -// sortField: sortField.value, -// sortOrder: sortOrder.value -// } -// } -// }) - -// console.log('请求成功2', sortField) - -// // 合计数的接口 -// // 复制一份 detail.value 并移除排序字段和排序方式 -// const detailWithoutSort = { ... articleVideo.value } -// delete detailWithoutSort.sortField -// delete detailWithoutSort.sortOrder - - -// // 赋值 -// totalGoldSearch.value.startTime = articleVideo.value.startTime -// totalGoldSearch.value.endTime = articleVideo.value.endTime -// totalGoldSearch.value.payPlatform = articleVideo.value.payPlatform -// totalGoldSearch.value.dept = articleVideo.value.dept -// totalGoldSearch.value.goodsName = articleVideo.value.goodsName -// totalGoldSearch.value.jwcode = articleVideo.value.jwcode -// // -// const resultTotalGold = await request({ -// // url: '/consume/statsGold', -// url: '/consume/statsGold', -// data: totalGoldSearch.value - -// }) - -// console.log("总计", resultTotalGold) - -// if (resultTotalGold.code === 200 && resultTotalGold.data) { -// const data = resultTotalGold.data -// console.log('获取到的金币数据:', data) - -// permanentGolds.value = Number(data.permanentGolds) || 0 -// freeGolds.value = Number(data.freeGolds) || 0 -// taskGolds.value = Number(data.taskGolds) || 0 -// } - -// // 存储表格数据 -// tableData.value = result.data.list -// tableDataTotal.value = resultTotalGold.data -// if (resultTotalGold.data == null) { -// console.log('请求成功2', resultTotalGold) -// // 这是啥东西啊 -// tableDataTotal.value = resultTotalGold.data -// } - -// const sumGoldList = tableData.value.map(item => item.sumGold); -// console.log("sumGold", sumGoldList); // 输出包含所有 sumGold 值的数组 - -// console.log('@@@@@@@@@@tableDataT', tableDataTotal.value.list) - - -// // totalGold.value = tableData.value.sum - -// // // 修改为保留两位小数 -// // permanentGold.value = parseFloat( -// // (tableDataTotal.value.list.sumGold / 100).toFixed(2) -// // ) -// // freeGold.value = parseFloat( -// // (tableDataTotal.value.sumFcion / 100).toFixed(2) -// // ) -// // taskGold.value = parseFloat( -// // (tableDataTotal.value.sumTcion / 100).toFixed(2) -// // ) -// // totalGold.value = parseFloat( -// // (tableDataTotal.value.sumcion / 100).toFixed(2) -// // ) -// console.log('tableData', tableData.value) - -// // 存储分页总数 -// total.value = result.data.total -// console.log('total', total.value) -// } catch (error) { -// console.log('请求失败', error) -// // 在这里可以处理错误逻辑,比如显示错误提示等 -// } -// } +const ConsumeSelectBy = async function (val) { + try { + + // 搜索参数页码赋值 + if (typeof val === 'number') { + getObj.value.pageNum = val + } + // 搜索参数时间赋值 + + if (getTime.value != null) { + if (getTime.value.startTime != '' && getTime.value.endTime != '') { + beanConsumeArticle.value.startTime = formatTime(getTime.value[0]) + beanConsumeArticle.value.endTime = formatTime(getTime.value[1]) + } + } else { + beanConsumeArticle.value.startTime = '' + beanConsumeArticle.value.endTime = '' + } + beanConsumeArticle.value.sortField = sortField.value + beanConsumeArticle.value.sortOrder = sortOrder.value + + console.log('搜索参数_时间', beanConsumeArticle.value.startTime) + console.log('搜索参数1', getObj.value) + console.log('搜索参数2', beanConsumeArticle.value) + + // 发送POST请求 + const result = await request({ + url: '/beanConsume/selectArticleBy', + data: { + pageNum: getObj.value.pageNum, + pageSize: getObj.value.pageSize, + beanConsumeArticle: { + ... beanConsumeArticle.value, + jwcode: beanConsumeArticle.value.jwcode, + dept: beanConsumeArticle.value.dept, + payMode: beanConsumeArticle.value.payMode, + articleId: beanConsumeArticle.value.articleId, + articleName: beanConsumeArticle.value.articleName, + author: beanConsumeArticle.value.author, + startTime: beanConsumeArticle.value.startTime, + endTime: beanConsumeArticle.value.endTime, + sortField: beanConsumeArticle.value.sortField, + sortOrder: beanConsumeArticle.value.sortOrder, + } + } + }) + + console.log('请求成功4', sortField) + console.log('接口响应结果', result); // 打印接口响应结果 + if (result.code === 200 && result.data && result.data.list) { + // 过滤返回的数据,确保 type 值符合 payMode 规则 + const filteredList = result.data.list.filter(item => { + if (beanConsumeArticle.value.payMode === '0') { + return [9, 10].includes(Number(item.type)); + } else if (beanConsumeArticle.value.payMode === '1') { + return Number(item.type) === 11; + } + return true; + }); + tableData.value = filteredList; + total.value = filteredList.length; + } + + // 合计数的接口 + // 复制一份 beanConsumeArticle.value 并设置固定的 payType 值 10是文章的 + const sumConsumeParams = { + payType: 8, // 固定传入 payType 值 8 + beanConsumeArticle: { + ...beanConsumeArticle.value, + + } + }; + + // 发送 POST 请求获取合计数 + const resultTotalGold = await request({ + url: '/beanConsume/sumConsumeGold', + data: sumConsumeParams + }); + + console.log("总计", resultTotalGold); + + const data = resultTotalGold.data || resultTotalGold; + console.log('请求成功3', resultTotalGold.data) + console.log('permanentBean3',data.permanentBean) + // 返回字段为 permanentBean、freeBean、totalNum + permanentBean.value = Number(data.permanentBean) || 0; + freeBean.value = Number(data.freeBean) || 0; + totalNum.value = Number(data.totalNum) || 0; + + // 存储分页总数 + total.value = result.data.total + console.log('total', total.value) + } catch (error) { + console.log('请求失败', error) + } +} // 搜索 const search = function () { getObj.value.pageNum = 1 - // ConsumeSelectBy() + ConsumeSelectBy() } // 重置 const reset = function () { - console.log('兄弟,你点了重置') - - articleVideo.value.jwcode = null + console.log('文章/视频的重置') - articleVideo.value.type = '' - articleVideo.value.gift = '' - articleVideo.value.channel = '' - articleVideo.value.liveRoom = '' - - articleVideo.value.dept = '' - - articleVideo.value.startTime = '' - - articleVideo.value.endTime = '' + beanConsumeArticle.value.jwcode = null + beanConsumeArticle.value.dept = '' + beanConsumeArticle.value.type = '' + beanConsumeArticle.value.type = '' + beanConsumeArticle.value.articleId = '' + beanConsumeArticle.value.articleName = '' + beanConsumeArticle.value.author = '' + + beanConsumeArticle.value.startTime = '' + beanConsumeArticle.value.endTime = '' @@ -287,8 +262,8 @@ const reset = function () { // 点完重置后,重新请求数据 - // ConsumeSelectBy() - console.log(' articleVideo', articleVideo.value) + ConsumeSelectBy() + console.log(' beanConsumeArticle', beanConsumeArticle.value) } // 今天 const getToday = function () { @@ -307,7 +282,7 @@ const getToday = function () { console.log('getTime', getTime.value) activeTimeRange.value = 'today' // 标记当前激活状态 - // ConsumeSelectBy() + ConsumeSelectBy() } // 昨天 const getYesterday = function () { @@ -327,7 +302,7 @@ const getYesterday = function () { console.log('getTime', getTime.value) activeTimeRange.value = 'yesterday' // 标记当前激活状态 - // ConsumeSelectBy() + ConsumeSelectBy() } // 近7天 const get7Days = function () { @@ -346,44 +321,40 @@ const get7Days = function () { console.log('getTime', getTime.value) activeTimeRange.value = '7days' // 标记当前激活状态 - // ConsumeSelectBy() + ConsumeSelectBy() } -// // 处理排序事件 -// const handleSortChange = (column) => { -// console.log('排序字段:', column.prop) -// console.log('排序方式:', column.order) -// if (column.prop === 'permanentGold') { -// sortField.value = 'permanentGold' -// } else if (column.prop === 'taskGold') { -// sortField.value = 'taskGold' -// } else if (column.prop === 'freeGold') { -// sortField.value = 'freeGold' -// } else if (column.prop === 'createTime') { -// sortField.value = 'createTime' -// } -// sortOrder.value = column.order === 'ascending' ? 'DESC' : 'ASC' -// ConsumeSelectBy() -// } - -// const handlePageSizeChange = function (val) { -// getObj.value.pageSize = val -// ConsumeSelectBy() -// } - -// const handleCurrentChange = function (val) { -// getObj.value.pageNum = val -// ConsumeSelectBy() -// } +// 处理排序事件 +const handleSortChange = (column) => { + console.log('排序字段:', column.prop) + console.log('排序方式:', column.order) + if (column.prop === 'beanNum') { + sortField.value = 'beanNum' + } else if (column.prop === 'consumeTime') { + sortField.value = 'consumeTime' + } + sortOrder.value = column.order === 'ascending' ? 'DESC' : 'ASC' + ConsumeSelectBy() +} + +const handlePageSizeChange = function (val) { + getObj.value.pageSize = val + ConsumeSelectBy() +} + +const handleCurrentChange = function (val) { + getObj.value.pageNum = val + ConsumeSelectBy() +} /* ====================计算属性================================= */ // 计算总金币数 -// const sumGold = computed(() => permanentGolds.value + freeGolds.value + taskGolds.value) +// const totalBean = computed(() => permanentBean.value + freeBean.value) /* ====================监听================================= @@ -396,26 +367,29 @@ const get7Days = function () { onMounted(async function () { await getAdminData() - // await ConsumeSelectBy() - // // getActivity(); + await ConsumeSelectBy() + await getDept() - // await getGoods() + }) const exportExcel = async function () { - // const params = { //需要修改 - // articleVideo: { - // jwcode: articleVideo.value.jwcode || '', - // payPlatform: articleVideo.value.payPlatform || '', - // dept: articleVideo.value.dept || '', - // startTime: articleVideo.value.startTime || '', - // endTime: articleVideo.value.endTime || '', - // goodsName: articleVideo.value.goodsName || '', - // sortField: sortField.value || '', - // sortOrder: sortOrder.value || '' - // } - // } + const params = { //需要修改 + beanConsumeArticle: { + ...beanConsumeArticle.value, + jwcode: beanConsumeArticle.value.jwcode ? String(beanConsumeArticle.value.jwcode) : '', + dept: beanConsumeArticle.value.dept || '', + type: beanConsumeArticle.value.type || '', + articleId: beanConsumeArticle.value.articleId || '', + articleName: beanConsumeArticle.value.articleName || '', + author: beanConsumeArticle.value.author || '', + beanNum: beanConsumeArticle.value.beanNum || '', + consumeTime: beanConsumeArticle.value.consumeTime || '', + sortField: sortField.value || 'consumeTime', + sortOrder: sortOrder.value || 'desc' + } + } const res = await API({ url: '/export/exportConsume', data: params }) if (res.code === 200) { ElMessage.success('导出成功') @@ -504,13 +478,13 @@ const getTagText = (state) => {
精网号: - +
地区: - +
@@ -518,28 +492,29 @@ const getTagText = (state) => {
类型: - - - + + + +
文章/视频ID: - +
文章/视频标题: - +
作者: - +
@@ -563,7 +538,6 @@ const getTagText = (state) => { 重置 查询 导出Excel - 查看导出列表
@@ -575,20 +549,20 @@ const getTagText = (state) => {
- 金豆总数:{{ Math.abs(permanentGolds + freeGolds + taskGolds) / 100 }},付费金豆数:{{ Math.abs(permanentGolds) / 100 }},免费金豆数:{{ - Math.abs(freeGolds) / 100 + 金豆总数:{{ Math.abs(permanentBean+freeBean) }},付费金豆数:{{ Math.abs(permanentBean) }},免费金豆数:{{ + Math.abs(freeBean) }}
- + @@ -596,34 +570,28 @@ const getTagText = (state) => { - - - - - + + - - + + + + + - - + + - + diff --git a/src/views/consume/dieHardFan.vue b/src/views/consume/dieHardFan.vue index a10cc72..4bff9e6 100644 --- a/src/views/consume/dieHardFan.vue +++ b/src/views/consume/dieHardFan.vue @@ -115,6 +115,10 @@ const dept = ref([]) const sortField = ref('') const sortOrder = ref('') +// 合计数 +const permanentBean = ref(0) +const freeBean = ref(0) +const totalNum = ref(0) /* @@ -189,9 +193,10 @@ const ConsumeSelectBy = async function (val) { // 合计数的接口 // 复制一份 beanConsumeFan.value 并设置固定的 payType 值 1是直播 7是铁粉 const sumConsumeParams = { + payType: 7, // 固定传入 payType 值 7 beanConsumeFan: { ... beanConsumeFan.value, - payType: '7' // 固定传入 payType 值 7 + } }; // 发送 POST 请求获取合计数 @@ -200,17 +205,15 @@ const ConsumeSelectBy = async function (val) { data: sumConsumeParams }); - console.log("总计", resultTotalGold) - - if (resultTotalGold.code === 200 && resultTotalGold.data) { - const data = resultTotalGold.data; - console.log('获取到的金币数据:', data); + console.log("总计2", resultTotalGold); + const data = resultTotalGold.data || resultTotalGold; + console.log('请求成功2', resultTotalGold.data) + console.log('permanentBean2',data.permanentBean) // 返回字段为 permanentBean、freeBean、totalNum permanentBean.value = Number(data.permanentBean) || 0; freeBean.value = Number(data.freeBean) || 0; totalNum.value = Number(data.totalNum) || 0; - } // 存储分页总数 total.value = result.data.total @@ -551,27 +554,19 @@ const getTagText = (state) => {
- + - - - +