diff --git a/.env.development b/.env.development index b6264c1..bc3ea14 100644 --- a/.env.development +++ b/.env.development @@ -1,9 +1,9 @@ -# VITE_API_BASE='https://hwjb.homilychart.com/dev/admin' +VITE_API_BASE='https://hwjb.homilychart.com/dev/admin' # 测试环境 # VITE_API_BASE='http://18.143.76.3:10704/' # VITE_API_BASE='http://192.168.9.52:10705/' VITE_UPLOAD_URL=http://39.101.133.168:8828/hljw/api/aws/upload - VITE_API_BASE='http://192.168.9.28:8081/' +# VITE_API_BASE='http://192.168.9.28:8081/' # VITE_API_BASE='http://192.168.9.28:8081/' # sunjiabei # VITE_API_BASE='http://192.168.9.28:8081/' diff --git a/src/views/consume/articleVideo.vue b/src/views/consume/articleVideo.vue index 2d36320..99a6226 100644 --- a/src/views/consume/articleVideo.vue +++ b/src/views/consume/articleVideo.vue @@ -1,11 +1,759 @@ - \ No newline at end of file +.pagination { + display: flex; + margin-top: 20px; +} + diff --git a/src/views/consume/dieHardFan.vue b/src/views/consume/dieHardFan.vue index 78d9704..ac43bd4 100644 --- a/src/views/consume/dieHardFan.vue +++ b/src/views/consume/dieHardFan.vue @@ -1,11 +1,730 @@ - \ No newline at end of file +.pagination { + display: flex; + margin-top: 20px; +} + diff --git a/src/views/consume/liveStream.vue b/src/views/consume/liveStream.vue index ae6aa89..94ca7de 100644 --- a/src/views/consume/liveStream.vue +++ b/src/views/consume/liveStream.vue @@ -22,15 +22,17 @@ const adminData = ref({}) const tableData = ref([]) // 搜索liveStream 表单 -const liveStream = ref({ +const beanConsumeLive = ref({ jwcode: null, - market: "", + dept: "", type: "", - giftName: "", + gift: "", channel: "", - liveRoom: "", + liveName: "", startTime: '', endTime: '', + sortField: '', + sortOrder: '' }) // 频道列表 @@ -38,18 +40,18 @@ const channels = ref([]) // 抽离类型选项到响应式数组 const consumeTypes = ref([ - { label: '发礼物', value: '发礼物' }, - { label: '发红包', value: '发红包' }, - { label: '发福袋', value: '发福袋' }, - { label: '付费直播', value: '付费直播' }, - { label: '加入粉丝团', value: '加入粉丝团' }, - { label: '发弹幕', value: '发弹幕' } + { label: '发礼物', value: 1 }, + { label: '发红包', value: 2 }, + { label: '发福袋', value: 3 }, + { label: '付费直播', value: 4 }, + { label: '加入粉丝团', value: 5 }, + { label: '发弹幕', value: 6 } ]) // 处理类型选择变化 const handleTypeChange = (value) => { - if (value !== '发礼物') { - liveStream.value.giftName = '' + if (value !== 1) { + beanConsumeLive.value.gift = '' } } @@ -79,7 +81,7 @@ const getTime = ref({ // const activity = ref([]) // 搜索地区列表 -const market = ref([]) +const dept = ref([]) // 新增排序字段和排序方式 const sortField = ref('') @@ -131,7 +133,7 @@ const sortOrder = ref('') // const totalGoldSearch = ref({ // jwcode: null, // payPlatform: "", -// market: "", +// dept: "", // startTime: "", // endTime: "", // goodsName: "" @@ -155,144 +157,127 @@ const getAdminData = async function () { } } +const selectLiveBy = async function (val) { + try { -// const ConsumeSelectBy = async function (val) { -// try { + // 搜索参数页码赋值 + if (typeof val === 'number') { + getObj.value.pageNum = val + } + // 搜索参数时间赋值 -// // 搜索参数页码赋值 -// if (typeof val === 'number') { -// getObj.value.pageNum = val -// } -// // 搜索参数时间赋值 + if (getTime.value != null) { + if (getTime.value.startTime != '' && getTime.value.endTime != '') { + beanConsumeLive.value.startTime = formatTime(getTime.value[0]) + beanConsumeLive.value.endTime = formatTime(getTime.value[1]) + } + } else { + beanConsumeLive.value.startTime = '' + beanConsumeLive.value.endTime = '' + } + beanConsumeLive.value.sortField = sortField.value + beanConsumeLive.value.sortOrder = sortOrder.value -// if (getTime.value != null) { -// if (getTime.value.startTime != '' && getTime.value.endTime != '') { -// liveStream.value.startTime = formatTime(getTime.value[0]) -// liveStream.value.endTime = formatTime(getTime.value[1]) -// } -// } else { -// liveStream.value.startTime = '' -// liveStream.value.endTime = '' -// } -// liveStream.value.sortField = sortField.value -// liveStream.value.sortOrder = sortOrder.value + console.log('搜索参数_时间', beanConsumeLive.value.startTime) -// console.log('搜索参数_时间', liveStream.value.startTime) + console.log('搜索参数1', getObj.value) -// console.log('搜索参数1', getObj.value) + console.log('搜索参数2', beanConsumeLive.value) -// console.log('搜索参数2', liveStream.value) + // 发送POST请求 + const result = await request({ + url: '/beanConsume/selectLiveBy', + data: { + pageNum: getObj.value.pageNum, + pageSize: getObj.value.pageSize, + beanConsumeLive: { + ... beanConsumeLive.value, + sortField: sortField.value, + sortOrder: sortOrder.value + } + } + }) -// // 发送POST请求 -// const result = await request({ -// url: '/consume/selectBy', -// data: { -// pageNum: getObj.value.pageNum, -// pageSize: getObj.value.pageSize, -// liveStream: { -// ... liveStream.value, -// sortField: sortField.value, -// sortOrder: sortOrder.value -// } -// } -// }) + console.log('请求成功2', sortField) -// console.log('请求成功2', sortField) + // // 合计数的接口 + // // 复制一份 detail.value 并移除排序字段和排序方式 + // const detailWithoutSort = { ... beanConsumeLive.value } + // delete detailWithoutSort.sortField + // delete detailWithoutSort.sortOrder -// // 合计数的接口 -// // 复制一份 detail.value 并移除排序字段和排序方式 -// const detailWithoutSort = { ... liveStream.value } -// delete detailWithoutSort.sortField -// delete detailWithoutSort.sortOrder + // // 赋值 + // totalGoldSearch.value.startTime = beanConsumeLive.value.startTime + // totalGoldSearch.value.endTime = beanConsumeLive.value.endTime -// // 赋值 -// totalGoldSearch.value.startTime = liveStream.value.startTime -// totalGoldSearch.value.endTime = liveStream.value.endTime -// totalGoldSearch.value.payPlatform = liveStream.value.payPlatform -// totalGoldSearch.value.market = liveStream.value.market -// totalGoldSearch.value.goodsName = liveStream.value.goodsName -// totalGoldSearch.value.jwcode = liveStream.value.jwcode -// // -// const resultTotalGold = await request({ -// // url: '/consume/statsGold', -// url: '/consume/statsGold', -// data: totalGoldSearch.value + // totalGoldSearch.value.dept = beanConsumeLive.value.dept + // totalGoldSearch.value.goodsName = beanConsumeLive.value.goodsName + // totalGoldSearch.value.jwcode = beanConsumeLive.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) -// // 在这里可以处理错误逻辑,比如显示错误提示等 -// } -// } + // 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) + + // console.log('tableData', tableData.value) + + // 存储分页总数 + total.value = result.data.total + console.log('total', total.value) + } catch (error) { + console.log('请求失败', error) + // 在这里可以处理错误逻辑,比如显示错误提示等 + } +} // 搜索 const search = function () { getObj.value.pageNum = 1 - // ConsumeSelectBy() + // selectLiveBy() todo } // 重置 const reset = function () { console.log('兄弟,你点了重置') - liveStream.value.jwcode = null + beanConsumeLive.value.jwcode = null - liveStream.value.type = '' - liveStream.value.giftName = '' - liveStream.value.channel = '' - liveStream.value.liveRoom = '' + beanConsumeLive.value.type = '' + beanConsumeLive.value.gift = '' + beanConsumeLive.value.channel = '' + beanConsumeLive.value.liveName = '' - liveStream.value.market = '' + beanConsumeLive.value.dept = '' - liveStream.value.startTime = '' + beanConsumeLive.value.startTime = '' - liveStream.value.endTime = '' + beanConsumeLive.value.endTime = '' @@ -303,8 +288,8 @@ const reset = function () { // 点完重置后,重新请求数据 - // ConsumeSelectBy() - console.log(' liveStream', liveStream.value) + selectLiveBy() + console.log(' beanConsumeLive', beanConsumeLive.value) } // 今天 const getToday = function () { @@ -323,7 +308,7 @@ const getToday = function () { console.log('getTime', getTime.value) activeTimeRange.value = 'today' // 标记当前激活状态 - // ConsumeSelectBy() + // selectLiveBy() } // 昨天 const getYesterday = function () { @@ -343,7 +328,7 @@ const getYesterday = function () { console.log('getTime', getTime.value) activeTimeRange.value = 'yesterday' // 标记当前激活状态 - ConsumeSelectBy() + // selectLiveBy() //todo } // 近7天 const get7Days = function () { @@ -362,7 +347,7 @@ const get7Days = function () { console.log('getTime', getTime.value) activeTimeRange.value = '7days' // 标记当前激活状态 - ConsumeSelectBy() + // selectLiveBy() todo } // 获取商品列表 // const getGoods = async function () { @@ -383,28 +368,28 @@ const get7Days = function () { // } // } -// // 获取地区列表的方法 -// const getMarket = async function () { -// try { -// // 发送请求获取地区列表 -// const result = await request({ -// // url: '/general/market', +// 获取地区列表的方法 +const getDept = async function () { + try { + // 发送请求获取地区列表 + const result = await request({ + // url: '/general/dept', -// url: '/general/adminMarkets', // todo 换成实际接口地址 -// data: {account:adminData.value.account} -// }) -// console.log('请求地区列表成功', result) -// // 存储地区数据 -// market.value = result.data -// console.log('地区数据', market.value) -// } catch (error) { -// console.log('请求地区列表失败', error) -// ElMessage({ -// type: 'error', -// message: '获取地区列表失败,请稍后重试' -// }) -// } -// } + url: '/beanConsume/getDept', // todo 换成实际接口地址 + data: {account:adminData.value.account} + }) + console.log('请求地区列表成功', result) + // 存储地区数据 + dept.value = result.data + console.log('地区数据', dept.value) + } catch (error) { + console.log('请求地区列表失败', error) + ElMessage({ + type: 'error', + message: '获取地区列表失败,请稍后重试' + }) + } +} // // 处理排序事件 // const handleSortChange = (column) => { @@ -420,17 +405,17 @@ const get7Days = function () { // sortField.value = 'createTime' // } // sortOrder.value = column.order === 'ascending' ? 'DESC' : 'ASC' -// ConsumeSelectBy() +// selectLiveBy() // } // const handlePageSizeChange = function (val) { // getObj.value.pageSize = val -// ConsumeSelectBy() +// selectLiveBy() // } // const handleCurrentChange = function (val) { // getObj.value.pageNum = val -// ConsumeSelectBy() +// selectLiveBy() // } /* ====================计算属性================================= @@ -450,104 +435,104 @@ const get7Days = function () { onMounted(async function () { await getAdminData() - // await ConsumeSelectBy() + // await selectLiveBy() // // getActivity(); - // await getMarket() + await getDept() // await getGoods() }) -// const exportExcel = async function () { -// const params = { -// liveStream: { -// jwcode: liveStream.value.jwcode || '', -// payPlatform: liveStream.value.payPlatform || '', -// market: liveStream.value.market || '', -// startTime: liveStream.value.startTime || '', -// endTime: liveStream.value.endTime || '', -// goodsName: liveStream.value.goodsName || '', -// sortField: sortField.value || '', -// sortOrder: sortOrder.value || '' -// } -// } -// const res = await API({ url: '/export/exportConsume', data: params }) -// if (res.code === 200) { -// ElMessage.success('导出成功') -// } -// } -// const exportListVisible = ref(false) +const exportExcel = async function () { + // const params = { //需要修改 + // beanConsumeLive: { + // jwcode: beanConsumeLive.value.jwcode || '', + // payPlatform: beanConsumeLive.value.payPlatform || '', + // dept: beanConsumeLive.value.dept || '', + // startTime: beanConsumeLive.value.startTime || '', + // endTime: beanConsumeLive.value.endTime || '', + // goodsName: beanConsumeLive.value.goodsName || '', + // sortField: sortField.value || '', + // sortOrder: sortOrder.value || '' + // } + // } + const res = await API({ url: '/export/exportConsume', data: params }) + if (res.code === 200) { + ElMessage.success('导出成功') + } +} +const exportListVisible = ref(false) -// // 打开导出列表弹窗 -// const openExportList = () => { -// getExportList() -// exportListVisible.value = true -// } +// 打开导出列表弹窗 +const openExportList = () => { + getExportList() + exportListVisible.value = true +} -// // 导出列表数据 -// const exportList = ref([]) -// // 导出列表加载状态 -// const exportListLoading = ref(false) -// // 获取导出列表 -// const getExportList = async () => { -// exportListLoading.value = true -// try { -// const result = await API({ url: '/export/export' }) -// if (result.code === 200) { -// const filteredData = result.data.filter(item => { -// return item.type === 4; //4表示金币消耗列表 -// }); -// exportList.value = filteredData -// } else { -// ElMessage.error(result.msg || '获取导出列表失败') -// } -// } catch (error) { -// console.error('获取导出列表出错:', error) -// ElMessage.error('获取导出列表失败,请稍后重试') -// } finally { -// exportListLoading.value = false -// } -// } -// // 下载导出文件 -// const downloadExportFile = (item) => { -// if (item.state === 2) { -// const link = document.createElement('a') -// link.href = item.url -// link.download = item.fileName -// link.click() -// } else { -// ElMessage.warning('文件还在导出中,请稍后再试') -// } -// } -// //根据状态返回对应的标签类型 -// const getTagType = (state) => { -// switch (state) { -// case 0: -// return 'info'; -// case 1: -// return 'primary'; -// case 2: -// return 'success'; -// case 3: -// return 'danger'; -// default: -// return 'info'; -// } -// } -// //根据状态返回对应的标签文案 -// const getTagText = (state) => { -// switch (state) { -// case 0: -// return '待执行'; -// case 1: -// return '执行中'; -// case 2: -// return '执行完成'; -// case 3: -// return '执行出错'; -// default: -// return '未知状态'; -// } -// } +// 导出列表数据 +const exportList = ref([]) +// 导出列表加载状态 +const exportListLoading = ref(false) +// 获取导出列表 +const getExportList = async () => { + exportListLoading.value = true + try { + const result = await API({ url: '/export/export' }) + if (result.code === 200) { + const filteredData = result.data.filter(item => { + return item.type === 4; //4表示金币消耗列表 // todo 修改对应type + }); + exportList.value = filteredData + } else { + ElMessage.error(result.msg || '获取导出列表失败') + } + } catch (error) { + console.error('获取导出列表出错:', error) + ElMessage.error('获取导出列表失败,请稍后重试') + } finally { + exportListLoading.value = false + } +} +// 下载导出文件 +const downloadExportFile = (item) => { + if (item.state === 2) { + const link = document.createElement('a') + link.href = item.url + link.download = item.fileName + link.click() + } else { + ElMessage.warning('文件还在导出中,请稍后再试') + } +} +//根据状态返回对应的标签类型 +const getTagType = (state) => { + switch (state) { + case 0: + return 'info'; + case 1: + return 'primary'; + case 2: + return 'success'; + case 3: + return 'danger'; + default: + return 'info'; + } +} +//根据状态返回对应的标签文案 +const getTagText = (state) => { + switch (state) { + case 0: + return '待执行'; + case 1: + return '执行中'; + case 2: + return '执行完成'; + case 3: + return '执行出错'; + default: + return '未知状态'; + } +}