Browse Source

fix liveStream dieHardFan articleVideo

zhangrenyuan/feature-20250728113353-金币前端三期
zhangrenyuan 2 weeks ago
parent
commit
073a21b246
  1. 4
      .env.development
  2. 10
      src/router/index.js
  3. 422
      src/views/consume/articleVideo.vue
  4. 31
      src/views/consume/dieHardFan.vue
  5. 31
      src/views/consume/liveStream.vue

4
.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://18.143.76.3:10704/'
# VITE_API_BASE='http://192.168.9.52:10705/' # VITE_API_BASE='http://192.168.9.52:10705/'
VITE_UPLOAD_URL=http://39.101.133.168:8828/hljw/api/aws/upload 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/' # VITE_API_BASE='http://192.168.9.28:8081/'
# sunjiabei # sunjiabei
# VITE_API_BASE='http://192.168.9.28:8081/' # VITE_API_BASE='http://192.168.9.28:8081/'

10
src/router/index.js

@ -84,35 +84,35 @@ const routes = [
path: '/beanConsume', path: '/beanConsume',
name: "beanConsume", name: "beanConsume",
component: () => import("../views/consume/beanConsume.vue"), component: () => import("../views/consume/beanConsume.vue"),
meta: {permissionId: 6},
meta: {permissionId: 42},
children: [ children: [
// 金豆新增消耗 // 金豆新增消耗
{ {
path: 'add', path: 'add',
name: "addBeanConsume", name: "addBeanConsume",
component: () => import("../views/consume/addBeanConsume.vue"), component: () => import("../views/consume/addBeanConsume.vue"),
meta: {permissionId: 23} // 对应"提交金豆消耗"id=?
meta: {permissionId: 49} // 对应"提交金豆消耗"id=49
}, },
// 直播 // 直播
{ {
path: 'live', path: 'live',
name: "liveStream", name: "liveStream",
component: () => import("../views/consume/liveStream.vue"), component: () => import("../views/consume/liveStream.vue"),
meta: {permissionId: 24} // 对应"直播"id=?
meta: {permissionId: 50} // 对应"直播"id=50
}, },
// 铁粉 // 铁粉
{ {
path: 'fan', path: 'fan',
name: "dieHardFan", name: "dieHardFan",
component: () => import("../views/consume/dieHardFan.vue"), component: () => import("../views/consume/dieHardFan.vue"),
meta: {permissionId: 25} // 对应"铁粉"id=?
meta: {permissionId: 51} // 对应"铁粉"id=51
}, },
// 文章视频 // 文章视频
{ {
path: 'article', path: 'article',
name: "articleVideo", name: "articleVideo",
component: () => import("../views/consume/articleVideo.vue"), component: () => import("../views/consume/articleVideo.vue"),
meta: {permissionId: 26} // 对应"文章视频"id=?
meta: {permissionId: 52} // 对应"文章视频"id=52
} }
] ]

422
src/views/consume/articleVideo.vue

@ -4,6 +4,7 @@ import { dayjs, ElMessage } from 'element-plus'
import request from '@/util/http' import request from '@/util/http'
import API from '@/util/http' import API from '@/util/http'
import moment from 'moment' import moment from 'moment'
import { ar } from 'element-plus/es/locales.mjs'
// //
/* /*
@ -22,12 +23,13 @@ const adminData = ref({})
const tableData = ref([]) const tableData = ref([])
// articleVideo // articleVideo
const articleVideo = ref({
const beanConsumeArticle = ref({
jwcode: null, jwcode: null,
dept: "", dept: "",
type: "", type: "",
articleVideoId: "",
articleVideoTitle: "",
payMode: "",
articleId: "",
articleName: "",
author: "", author: "",
startTime: '', startTime: '',
endTime: '', endTime: '',
@ -38,24 +40,16 @@ const channels = ref([])
// //
const consumeTypes = 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: 9 },
{ label: '打赏', value: 10 }, { label: '打赏', value: 10 },
{ label: '付费购买', value: 11 }, { 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: '', startTime: '',
endTime: '' endTime: ''
}) })
//
// const activity = ref([])
// //
const dept = ref([]) const dept = ref([])
@ -120,6 +112,11 @@ const filterChannel = (query) => {
const sortField = ref('') const sortField = ref('')
const sortOrder = 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)
// permanentBeanfreeBeantotalNum
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 () { const search = function () {
getObj.value.pageNum = 1 getObj.value.pageNum = 1
// ConsumeSelectBy()
ConsumeSelectBy()
} }
// //
const reset = function () { const reset = function () {
console.log('兄弟,你点了重置')
articleVideo.value.jwcode = null
articleVideo.value.type = ''
articleVideo.value.gift = ''
articleVideo.value.channel = ''
articleVideo.value.liveRoom = ''
articleVideo.value.dept = ''
console.log('文章/视频的重置')
articleVideo.value.startTime = ''
beanConsumeArticle.value.jwcode = null
beanConsumeArticle.value.dept = ''
beanConsumeArticle.value.type = ''
beanConsumeArticle.value.type = ''
beanConsumeArticle.value.articleId = ''
beanConsumeArticle.value.articleName = ''
beanConsumeArticle.value.author = ''
articleVideo.value.endTime = ''
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 () { const getToday = function () {
@ -307,7 +282,7 @@ const getToday = function () {
console.log('getTime', getTime.value) console.log('getTime', getTime.value)
activeTimeRange.value = 'today' // activeTimeRange.value = 'today' //
// ConsumeSelectBy()
ConsumeSelectBy()
} }
// //
const getYesterday = function () { const getYesterday = function () {
@ -327,7 +302,7 @@ const getYesterday = function () {
console.log('getTime', getTime.value) console.log('getTime', getTime.value)
activeTimeRange.value = 'yesterday' // activeTimeRange.value = 'yesterday' //
// ConsumeSelectBy()
ConsumeSelectBy()
} }
// 7 // 7
const get7Days = function () { const get7Days = function () {
@ -346,44 +321,40 @@ const get7Days = function () {
console.log('getTime', getTime.value) console.log('getTime', getTime.value)
activeTimeRange.value = '7days' // 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 () { onMounted(async function () {
await getAdminData() await getAdminData()
// await ConsumeSelectBy()
// // getActivity();
await ConsumeSelectBy()
await getDept() await getDept()
// await getGoods()
}) })
const exportExcel = async function () { 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 }) const res = await API({ url: '/export/exportConsume', data: params })
if (res.code === 200) { if (res.code === 200) {
ElMessage.success('导出成功') ElMessage.success('导出成功')
@ -504,13 +478,13 @@ const getTagText = (state) => {
<el-col :span="4"> <el-col :span="4">
<div class="head-card-element"> <div class="head-card-element">
<el-text class="mx-1">精网号</el-text> <el-text class="mx-1">精网号</el-text>
<el-input v-model="articleVideo.jwcode" placeholder="请输入精网号" style="width: 150px" clearable />
<el-input v-model="beanConsumeArticle.jwcode" placeholder="请输入精网号" style="width: 150px" clearable />
</div> </div>
</el-col> </el-col>
<el-col :span="4"> <el-col :span="4">
<div class="head-card-element"> <div class="head-card-element">
<el-text class="mx-1">地区</el-text> <el-text class="mx-1">地区</el-text>
<el-select v-model="articleVideo.dept" placeholder="请选择地区" style="width: 140px" clearable>
<el-select v-model="beanConsumeArticle.dept" placeholder="请选择地区" style="width: 140px" clearable>
<el-option v-for="(item, index) in dept" :key="index" :label="item" :value="item" /> <el-option v-for="(item, index) in dept" :key="index" :label="item" :value="item" />
</el-select> </el-select>
</div> </div>
@ -518,28 +492,29 @@ const getTagText = (state) => {
<el-col :span="4"> <el-col :span="4">
<div class="head-card-element"> <div class="head-card-element">
<el-text class="mx-1">类型</el-text> <el-text class="mx-1">类型</el-text>
<el-select v-model="articleVideo.type" placeholder="请选择类型" style="width: 140px" clearable>
<el-option label="打赏" value="打赏" />
<el-option label="付费" value="付费" />
<el-select v-model="beanConsumeArticle.payMode" placeholder="请选择类型" style="width: 140px" clearable @change="handlePayModeChange">
<el-option label="打赏" value="0" />
<el-option label="付费购买" value="1" />
<el-option label="其他" value="2" />
</el-select> </el-select>
</div> </div>
</el-col> </el-col>
<el-col :span="4"> <el-col :span="4">
<div class="head-card-element"> <div class="head-card-element">
<el-text class="mx-1">文章/视频ID</el-text> <el-text class="mx-1">文章/视频ID</el-text>
<el-input v-model="articleVideo.articleVideoId" placeholder="请输入文章/视频ID" style="width: 140px" clearable />
<el-input v-model="beanConsumeArticle.articleId" placeholder="请输入文章/视频ID" style="width: 140px" clearable />
</div> </div>
</el-col> </el-col>
<el-col :span="4"> <el-col :span="4">
<div class="head-card-element"> <div class="head-card-element">
<el-text class="mx-1">文章/视频标题</el-text> <el-text class="mx-1">文章/视频标题</el-text>
<el-input v-model="articleVideo.articleVideoTitle" placeholder="请输入文章/视频标题" style="width: 140px" clearable />
<el-input v-model="beanConsumeArticle.articleName" placeholder="请输入文章/视频标题" style="width: 140px" clearable />
</div> </div>
</el-col> </el-col>
<el-col :span="4"> <el-col :span="4">
<div class="head-card-element"> <div class="head-card-element">
<el-text class="mx-1">作者</el-text> <el-text class="mx-1">作者</el-text>
<el-input v-model="articleVideo.author" placeholder="请输入作者" style="width: 140px" clearable />
<el-input v-model="beanConsumeArticle.author" placeholder="请输入作者" style="width: 140px" clearable />
</div> </div>
</el-col> </el-col>
</el-row> </el-row>
@ -563,7 +538,6 @@ const getTagText = (state) => {
<el-button type="success" @click="reset()">重置</el-button> <el-button type="success" @click="reset()">重置</el-button>
<el-button type="primary" @click="search()">查询</el-button> <el-button type="primary" @click="search()">查询</el-button>
<el-button type="primary" @click="exportExcel()">导出Excel</el-button> <el-button type="primary" @click="exportExcel()">导出Excel</el-button>
<el-button type="primary" @click="openExportList">查看导出列表</el-button> <el-button type="primary" @click="openExportList">查看导出列表</el-button>
</div> </div>
</el-col> </el-col>
@ -575,20 +549,20 @@ const getTagText = (state) => {
<el-col> <el-col>
<el-card> <el-card>
<div> <div>
金豆总数{{ Math.abs(permanentGolds + freeGolds + taskGolds) / 100 }}付费金豆数{{ Math.abs(permanentGolds) / 100 }}免费金豆数{{
Math.abs(freeGolds) / 100
金豆总数{{ Math.abs(permanentBean+freeBean) }}付费金豆数{{ Math.abs(permanentBean) }}免费金豆数{{
Math.abs(freeBean)
}} }}
</div> </div>
<!-- 设置表格容器的高度和滚动样式 --> <!-- 设置表格容器的高度和滚动样式 -->
<div style="height: 576px; overflow-y: auto"> <div style="height: 576px; overflow-y: auto">
<el-table :data="tableData" style="width: 100%" height="576px" @sort-change="handleSortChange"> <el-table :data="tableData" style="width: 100%" height="576px" @sort-change="handleSortChange">
<el-table-column type="index" label="序号" width="80px" fixed="left">
<!-- <el-table-column type="index" label="序号" width="80px" fixed="left">
<template #default="scope"> <template #default="scope">
<span>{{ <span>{{
scope.$index + 1 + (getObj.value.pageNum - 1) * getObj.value.pageSize scope.$index + 1 + (getObj.value.pageNum - 1) * getObj.value.pageSize
}}</span> }}</span>
</template> </template>
</el-table-column>
</el-table-column> -->
<!-- 固定姓名列 --> <!-- 固定姓名列 -->
<el-table-column prop="name" label="姓名" width="150px" fixed="left" /> <el-table-column prop="name" label="姓名" width="150px" fixed="left" />
<!-- 固定精网号列 --> <!-- 固定精网号列 -->
@ -596,34 +570,28 @@ const getTagText = (state) => {
<el-table-column prop="dept" label="地区" width="110px" /> <el-table-column prop="dept" label="地区" width="110px" />
<el-table-column prop="type" label="类型" width="120px"> <el-table-column prop="type" label="类型" width="120px">
<template #default="scope"> <template #default="scope">
{{ consumeTypes.value.find(item => item.value === scope.row.type)?.label || '未知类型' }}
</template>
</el-table-column>
<el-table-column prop="sumGold" label="金豆总数" width="120px">
<template #default="scope">
{{ {{
(scope.row.taskGold +
scope.row.freeGold +
scope.row.permanentGold) / 100
Array.isArray(consumeTypes)
? consumeTypes.find(item => item.value === Number(scope.row.type))?.label || '未知类型'
: '未知类型'
}} }}
</template> </template>
</el-table-column> </el-table-column>
<el-table-column prop="permanentGold" label="付费金豆数" width="120px">
<template #default="scope">
{{ scope.row.permanentGold / 100 }}
</template>
<el-table-column prop="beanNum" label="金豆总数" width="120px">
</el-table-column> </el-table-column>
<el-table-column prop="freeGold" label="免费金豆数" width="120px">
<template #default="scope">
{{ scope.row.freeGold / 100 }}
</template>
<el-table-column prop="buyBean" label="付费金豆数" width="120px">
</el-table-column>
<el-table-column prop="freeBean" label="免费金豆数" width="120px">
</el-table-column> </el-table-column>
<el-table-column prop="articleVideoId" label="文章/视频ID" width="150px" />
<el-table-column prop="articleVideoTitle" label="文章/视频标题" width="200px" show-overflow-tooltip />
<el-table-column prop="articleId" label="文章/视频ID" width="150px" />
<el-table-column prop="articleName" label="文章/视频标题" width="200px" show-overflow-tooltip />
<el-table-column prop="author" label="作者" width="120px" /> <el-table-column prop="author" label="作者" width="120px" />
<el-table-column prop="payTime" label="付费时间" width="180px">
<el-table-column prop="consumeTime" label="付费时间" width="180px">
<template #default="scope"> <template #default="scope">
{{ formatTime(scope.row.payTime) }}
{{ formatTime(scope.row.consumeTime) }}
</template> </template>
</el-table-column> </el-table-column>
</el-table> </el-table>

31
src/views/consume/dieHardFan.vue

@ -115,6 +115,10 @@ const dept = ref([])
const sortField = ref('') const sortField = ref('')
const sortOrder = 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 // beanConsumeFan.value payType 1 7
const sumConsumeParams = { const sumConsumeParams = {
payType: 7, // payType 7
beanConsumeFan: { beanConsumeFan: {
... beanConsumeFan.value, ... beanConsumeFan.value,
payType: '7' // payType 7
} }
}; };
// POST // POST
@ -200,17 +205,15 @@ const ConsumeSelectBy = async function (val) {
data: sumConsumeParams 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)
// permanentBeanfreeBeantotalNum // permanentBeanfreeBeantotalNum
permanentBean.value = Number(data.permanentBean) || 0; permanentBean.value = Number(data.permanentBean) || 0;
freeBean.value = Number(data.freeBean) || 0; freeBean.value = Number(data.freeBean) || 0;
totalNum.value = Number(data.totalNum) || 0; totalNum.value = Number(data.totalNum) || 0;
}
// //
total.value = result.data.total total.value = result.data.total
@ -551,27 +554,19 @@ const getTagText = (state) => {
<!-- 设置表格容器的高度和滚动样式 --> <!-- 设置表格容器的高度和滚动样式 -->
<div style="height: 576px; overflow-y: auto"> <div style="height: 576px; overflow-y: auto">
<el-table :data="tableData" style="width: 100%" height="576px" @sort-change="handleSortChange"> <el-table :data="tableData" style="width: 100%" height="576px" @sort-change="handleSortChange">
<el-table-column type="index" label="序号" width="80px" fixed="left">
<!-- <el-table-column type="index" label="序号" width="80px" fixed="left">
<template #default="scope"> <template #default="scope">
<span>{{ <span>{{
scope.$index + 1 + (getObj.value.pageNum - 1) * getObj.value.pageSize scope.$index + 1 + (getObj.value.pageNum - 1) * getObj.value.pageSize
}}</span> }}</span>
</template> </template>
</el-table-column>
</el-table-column> -->
<!-- 固定姓名列 --> <!-- 固定姓名列 -->
<el-table-column prop="name" label="姓名" width="150px" fixed="left" /> <el-table-column prop="name" label="姓名" width="150px" fixed="left" />
<!-- 固定精网号列 --> <!-- 固定精网号列 -->
<el-table-column prop="jwcode" label="精网号" width="110px" fixed="left" /> <el-table-column prop="jwcode" label="精网号" width="110px" fixed="left" />
<el-table-column prop="dept" label="地区" width="110px" /> <el-table-column prop="dept" label="地区" width="110px" />
<el-table-column prop="beanNum" label="金豆数量" width="120px">
<template #default="scope">
{{
(scope.row.taskGold +
scope.row.freeGold +
scope.row.permanentGold) / 100
}}
</template>
</el-table-column>
<el-table-column prop="beanNum" label="金豆数量" width="120px"/>
<el-table-column prop="channel" label="频道" width="120px" /> <el-table-column prop="channel" label="频道" width="120px" />
<el-table-column prop="type" label="会员类型" width="120px" > <el-table-column prop="type" label="会员类型" width="120px" >
<template #default="scope"> <template #default="scope">

31
src/views/consume/liveStream.vue

@ -27,7 +27,7 @@ const beanConsumeLive = ref({
dept: "", dept: "",
type: "", type: "",
gift: "", gift: "",
channel: "",
liveChannel: "",
liveName: "", liveName: "",
startTime: '', startTime: '',
endTime: '', endTime: '',
@ -148,7 +148,10 @@ const getDept = async function () {
const sortField = ref('') const sortField = ref('')
const sortOrder = ref('') const sortOrder = ref('')
//
const permanentBean = ref(0)
const freeBean = ref(0)
const totalNum = ref(0)
/* /*
====================方法================================= ====================方法=================================
@ -207,7 +210,7 @@ const selectLiveBy = async function (val) {
type: beanConsumeLive.value.type || '', type: beanConsumeLive.value.type || '',
gift: beanConsumeLive.value.gift || '', gift: beanConsumeLive.value.gift || '',
beanNum: beanConsumeLive.value.beanNum || '', beanNum: beanConsumeLive.value.beanNum || '',
channel: beanConsumeLive.value.channel || '',
liveChannel: beanConsumeLive.value.liveChannel || '',
liveName: beanConsumeLive.value.liveName || '', liveName: beanConsumeLive.value.liveName || '',
startTime: beanConsumeLive.value.startTime || '', startTime: beanConsumeLive.value.startTime || '',
endTime: beanConsumeLive.value.endTime || '', endTime: beanConsumeLive.value.endTime || '',
@ -225,9 +228,10 @@ const selectLiveBy = async function (val) {
} }
// beanConsumeLive.value payType 1 // beanConsumeLive.value payType 1
const sumConsumeParams = { const sumConsumeParams = {
payType: 1, // payType 1
beanConsumeLive: { beanConsumeLive: {
...beanConsumeLive.value, ...beanConsumeLive.value,
payType: '1' // payType 1
} }
}; };
@ -239,15 +243,14 @@ const selectLiveBy = async function (val) {
console.log("总计", resultTotalGold); console.log("总计", resultTotalGold);
if (resultTotalGold.code === 200 && resultTotalGold.data) {
const data = resultTotalGold.data;
console.log('获取到的金币数据:', data);
const data = resultTotalGold.data || resultTotalGold;
console.log('请求成功1', resultTotalGold.data) //undifined
console.log('permanentBean1',data.permanentBean)
// permanentBeanfreeBeantotalNum // permanentBeanfreeBeantotalNum
permanentBean.value = Number(data.permanentBean) || 0; permanentBean.value = Number(data.permanentBean) || 0;
freeBean.value = Number(data.freeBean) || 0; freeBean.value = Number(data.freeBean) || 0;
totalNum.value = Number(data.totalNum) || 0; totalNum.value = Number(data.totalNum) || 0;
}
// //
@ -264,12 +267,12 @@ const search = function () {
} }
// //
const reset = function () { const reset = function () {
console.log('兄弟,你点了重置')
console.log('直播的重置')
beanConsumeLive.value.jwcode = null beanConsumeLive.value.jwcode = null
beanConsumeLive.value.type = '' beanConsumeLive.value.type = ''
beanConsumeLive.value.gift = '' beanConsumeLive.value.gift = ''
beanConsumeLive.value.channel = ''
beanConsumeLive.value.liveChannel = ''
beanConsumeLive.value.liveName = '' beanConsumeLive.value.liveName = ''
beanConsumeLive.value.dept = '' beanConsumeLive.value.dept = ''
beanConsumeLive.value.startTime = '' beanConsumeLive.value.startTime = ''
@ -402,7 +405,7 @@ const exportExcel = async function () {
type: beanConsumeLive.value.type || '', type: beanConsumeLive.value.type || '',
gift: beanConsumeLive.value.gift || '', gift: beanConsumeLive.value.gift || '',
beanNum: beanConsumeLive.value.beanNum || '', beanNum: beanConsumeLive.value.beanNum || '',
channel: beanConsumeLive.value.channel || '',
liveChannel: beanConsumeLive.value.liveChannel || '',
liveName: beanConsumeLive.value.liveName || '', liveName: beanConsumeLive.value.liveName || '',
startTime: beanConsumeLive.value.startTime || '', startTime: beanConsumeLive.value.startTime || '',
endTime: beanConsumeLive.value.endTime || '', endTime: beanConsumeLive.value.endTime || '',
@ -529,7 +532,7 @@ const getTagText = (state) => {
<div class="head-card-element"> <div class="head-card-element">
<el-text class="mx-1">频道</el-text> <el-text class="mx-1">频道</el-text>
<el-select <el-select
v-model="beanConsumeLive.channel"
v-model="beanConsumeLive.liveChannel"
placeholder="请选择频道" placeholder="请选择频道"
style="width: 150px" style="width: 150px"
clearable clearable
@ -601,7 +604,7 @@ const getTagText = (state) => {
</el-table-column> </el-table-column>
<el-table-column prop="beanNum" label="金豆数量" width="120px"> <el-table-column prop="beanNum" label="金豆数量" width="120px">
</el-table-column> </el-table-column>
<el-table-column prop="channel" label="频道" width="120px" />
<el-table-column prop="liveChannel" label="频道" width="120px" />
<el-table-column prop="liveName" label="直播间名称" width="160px" show-overflow-tooltip /> <el-table-column prop="liveName" label="直播间名称" width="160px" show-overflow-tooltip />
<el-table-column prop="consumeTime" label="消费时间" sortable="custom" width="180px" /> <el-table-column prop="consumeTime" label="消费时间" sortable="custom" width="180px" />
</el-table> </el-table>

Loading…
Cancel
Save