|
@ -60,10 +60,13 @@ const getPlatform = async () => { |
|
|
const result = await API({ |
|
|
const result = await API({ |
|
|
url: '/general/platform', |
|
|
url: '/general/platform', |
|
|
method: 'post', |
|
|
method: 'post', |
|
|
data: {}// 这里添加参数 |
|
|
|
|
|
}) |
|
|
}) |
|
|
|
|
|
|
|
|
platform.value = result.data |
|
|
|
|
|
|
|
|
if (Array.isArray(result.data)) { |
|
|
|
|
|
platform.value = result.data.map(item => ({value: item, label: item})); |
|
|
|
|
|
} else { |
|
|
|
|
|
console.error('平台信息格式错误', result) |
|
|
|
|
|
ElMessage.error('平台信息格式错误,请联系管理员') |
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
} catch (error) { |
|
|
} catch (error) { |
|
|
console.error('获取平台信息失败:', error); |
|
|
console.error('获取平台信息失败:', error); |
|
@ -166,7 +169,7 @@ const get = async function (val) { |
|
|
const result = await API({ |
|
|
const result = await API({ |
|
|
url: '/goldDetail/getGoldDetail', |
|
|
url: '/goldDetail/getGoldDetail', |
|
|
method: 'post', |
|
|
method: 'post', |
|
|
data: {...getObj.value, goldDetail: {...goldDetail.value, flag: showEmployeeData.value? 0 : 1}} |
|
|
|
|
|
|
|
|
data: {...getObj.value, goldDetail: {...goldDetail.value, flag: showEmployeeData.value ? 0 : 1}} |
|
|
}) |
|
|
}) |
|
|
console.log('响应数据', result) |
|
|
console.log('响应数据', result) |
|
|
tableData.value = result.data.list |
|
|
tableData.value = result.data.list |
|
@ -187,7 +190,7 @@ const get = async function (val) { |
|
|
url: '/goldDetail/getTotal', |
|
|
url: '/goldDetail/getTotal', |
|
|
method: 'post', |
|
|
method: 'post', |
|
|
data: { |
|
|
data: { |
|
|
goldDetail: {...goldDetail.value, flag: showEmployeeData.value? 0 : 1}, |
|
|
|
|
|
|
|
|
goldDetail: {...goldDetail.value, flag: showEmployeeData.value ? 0 : 1}, |
|
|
/* jwcode: goldDetail.value.jwcode || '', |
|
|
/* jwcode: goldDetail.value.jwcode || '', |
|
|
payPlatform: goldDetail.value.payPlatform || '', |
|
|
payPlatform: goldDetail.value.payPlatform || '', |
|
|
type: goldDetail.value.type || '', |
|
|
type: goldDetail.value.type || '', |
|
@ -490,142 +493,142 @@ const format3 = (num) => { |
|
|
</script> |
|
|
</script> |
|
|
<template> |
|
|
<template> |
|
|
<div> |
|
|
<div> |
|
|
<el-card style="margin-bottom: 20px;margin-top: 10px;"> |
|
|
|
|
|
<el-row style="margin-bottom: 10px"> |
|
|
|
|
|
<el-col :span="5"> |
|
|
|
|
|
<div class="head-card-element"> |
|
|
|
|
|
<el-text class="mx-1" size="large">精网号:</el-text> |
|
|
|
|
|
<el-input v-model="goldDetail.jwcode" style="width: 150px" placeholder="请输入精网号" clearable/> |
|
|
|
|
|
</div> |
|
|
|
|
|
</el-col> |
|
|
|
|
|
<el-col :span="5"> |
|
|
|
|
|
<div class="head-card-element"> |
|
|
|
|
|
<el-text class="mx-1" size="large">平台信息:</el-text> |
|
|
|
|
|
<el-select v-model="goldDetail.payPlatform" placeholder="请选择平台信息" style="width: 160px" clearable |
|
|
|
|
|
:loading="isLoadingPlatform"> |
|
|
|
|
|
<el-option v-for="item in platform" :key="item.id" :label="item.platform" :value="item.platform"/> |
|
|
|
|
|
</el-select> |
|
|
|
|
|
</div> |
|
|
|
|
|
</el-col> |
|
|
|
|
|
<el-col :span="5"> |
|
|
|
|
|
<div class="head-card-element"> |
|
|
|
|
|
<el-text class="mx-1" size="large">数量更新类型:</el-text> |
|
|
|
|
|
<el-select v-model="goldDetail.type" placeholder="请选择更新类型" style="width: 160px" clearable> |
|
|
|
|
|
<el-option v-for="item in type" :key="item.value" :label="item.label" :value="item.value"/> |
|
|
|
|
|
</el-select> |
|
|
|
|
|
</div> |
|
|
|
|
|
</el-col> |
|
|
|
|
|
<el-col :span="5"> |
|
|
|
|
|
<div class="head-card-element"> |
|
|
|
|
|
<el-text class="mx-1" size="large">所属地区:</el-text> |
|
|
|
|
|
<el-cascader |
|
|
|
|
|
v-model="selectedMarketPath" |
|
|
|
|
|
:options="markets" |
|
|
|
|
|
placeholder="请选择所属地区" |
|
|
|
|
|
clearable |
|
|
|
|
|
style="width:180px" |
|
|
|
|
|
@change="handleMarketChange" |
|
|
|
|
|
/> |
|
|
|
|
|
</div> |
|
|
|
|
|
</el-col> |
|
|
|
|
|
<el-col :span="3"> |
|
|
|
|
|
<div class="head-card-element"> |
|
|
|
|
|
<el-checkbox v-model="showEmployeeData" @change="search()">员工数据</el-checkbox> |
|
|
|
|
|
</div> |
|
|
|
|
|
</el-col> |
|
|
|
|
|
</el-row> |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
<el-card style="margin-bottom: 20px;margin-top: 10px;"> |
|
|
|
|
|
<el-row style="margin-bottom: 10px"> |
|
|
|
|
|
<el-col :span="5"> |
|
|
<div class="head-card-element"> |
|
|
<div class="head-card-element"> |
|
|
<el-text class="mx-1" size="large">更新时间:</el-text> |
|
|
|
|
|
<el-date-picker v-model="getTime" type="datetimerange" range-separator="至" start-placeholder="起始时间" |
|
|
|
|
|
end-placeholder="结束时间" style="width: 400px" @change="handleDatePickerChange" |
|
|
|
|
|
:default-time="defaultTime"/> |
|
|
|
|
|
<el-button @click="getToday()" style="margin-left: 10px" |
|
|
|
|
|
:type="activeTimeRange === 'today' ? 'primary' : ''"> 今 |
|
|
|
|
|
</el-button> |
|
|
|
|
|
<el-button @click="getYesterday()" style="margin-left: 10px" |
|
|
|
|
|
:type="activeTimeRange === 'yesterday' ? 'primary' : ''"> 昨 |
|
|
|
|
|
</el-button> |
|
|
|
|
|
<el-button @click="get7Days()" style="margin-left: 10px" |
|
|
|
|
|
:type="activeTimeRange === '7days' ? 'primary' : ''"> 近7天 |
|
|
|
|
|
</el-button> |
|
|
|
|
|
|
|
|
|
|
|
<el-button type="success" @click="reset()">重置</el-button> |
|
|
|
|
|
<el-button type="primary" @click="search()">查询</el-button> |
|
|
|
|
|
<el-button type="primary" @click="exportExcel">导出Excel表格</el-button> |
|
|
|
|
|
<el-button type="primary" @click="openExportList">查看导出列表</el-button> |
|
|
|
|
|
|
|
|
<el-text class="mx-1" size="large">精网号:</el-text> |
|
|
|
|
|
<el-input v-model="goldDetail.jwcode" style="width: 150px" placeholder="请输入精网号" clearable/> |
|
|
|
|
|
</div> |
|
|
|
|
|
</el-col> |
|
|
|
|
|
<el-col :span="5"> |
|
|
|
|
|
<div class="head-card-element"> |
|
|
|
|
|
<el-text class="mx-1" size="large">平台信息:</el-text> |
|
|
|
|
|
<el-select v-model="goldDetail.payPlatform" placeholder="请选择平台信息" style="width: 160px" clearable |
|
|
|
|
|
:loading="isLoadingPlatform"> |
|
|
|
|
|
<el-option v-for="item in platform" :key="item.id" :label="item.label" :value="item.value"/> |
|
|
|
|
|
</el-select> |
|
|
</div> |
|
|
</div> |
|
|
</el-card> |
|
|
|
|
|
<el-card> |
|
|
|
|
|
<div> |
|
|
|
|
|
金币净变化:{{ format3(totalGoldTotal || 0) }} |
|
|
|
|
|
永久金币:{{ format3(totalPermanentGold || 0) }} |
|
|
|
|
|
免费金币:{{ format3(totalFreeGold || 0) }} |
|
|
|
|
|
任务金币:{{ format3(totalTaskGold || 0) }} |
|
|
|
|
|
<a style="color:#b1b1b1;">(当前合计仅显示筛选范围内的金币净变化(充值总额 - 消费总额 + 退款总额)</a> |
|
|
|
|
|
|
|
|
</el-col> |
|
|
|
|
|
<el-col :span="5"> |
|
|
|
|
|
<div class="head-card-element"> |
|
|
|
|
|
<el-text class="mx-1" size="large">数量更新类型:</el-text> |
|
|
|
|
|
<el-select v-model="goldDetail.type" placeholder="请选择更新类型" style="width: 160px" clearable> |
|
|
|
|
|
<el-option v-for="item in type" :key="item.value" :label="item.label" :value="item.value"/> |
|
|
|
|
|
</el-select> |
|
|
</div> |
|
|
</div> |
|
|
<div style="height: 584px; overflow-y: auto"> |
|
|
|
|
|
<el-table :data="tableData" style="width: 100%" @sort-change="handleSortChange" height="584px"> |
|
|
|
|
|
<el-table-column type="index" label="序号" width="100px" fixed="left"> |
|
|
|
|
|
<template #default="scope"> |
|
|
|
|
|
|
|
|
</el-col> |
|
|
|
|
|
<el-col :span="5"> |
|
|
|
|
|
<div class="head-card-element"> |
|
|
|
|
|
<el-text class="mx-1" size="large">所属地区:</el-text> |
|
|
|
|
|
<el-cascader |
|
|
|
|
|
v-model="selectedMarketPath" |
|
|
|
|
|
:options="markets" |
|
|
|
|
|
placeholder="请选择所属地区" |
|
|
|
|
|
clearable |
|
|
|
|
|
style="width:180px" |
|
|
|
|
|
@change="handleMarketChange" |
|
|
|
|
|
/> |
|
|
|
|
|
</div> |
|
|
|
|
|
</el-col> |
|
|
|
|
|
<el-col :span="3"> |
|
|
|
|
|
<div class="head-card-element"> |
|
|
|
|
|
<el-checkbox v-model="showEmployeeData" @change="search()">员工数据</el-checkbox> |
|
|
|
|
|
</div> |
|
|
|
|
|
</el-col> |
|
|
|
|
|
</el-row> |
|
|
|
|
|
|
|
|
|
|
|
<div class="head-card-element"> |
|
|
|
|
|
<el-text class="mx-1" size="large">更新时间:</el-text> |
|
|
|
|
|
<el-date-picker v-model="getTime" type="datetimerange" range-separator="至" start-placeholder="起始时间" |
|
|
|
|
|
end-placeholder="结束时间" style="width: 400px" @change="handleDatePickerChange" |
|
|
|
|
|
:default-time="defaultTime"/> |
|
|
|
|
|
<el-button @click="getToday()" style="margin-left: 10px" |
|
|
|
|
|
:type="activeTimeRange === 'today' ? 'primary' : ''"> 今 |
|
|
|
|
|
</el-button> |
|
|
|
|
|
<el-button @click="getYesterday()" style="margin-left: 10px" |
|
|
|
|
|
:type="activeTimeRange === 'yesterday' ? 'primary' : ''"> 昨 |
|
|
|
|
|
</el-button> |
|
|
|
|
|
<el-button @click="get7Days()" style="margin-left: 10px" |
|
|
|
|
|
:type="activeTimeRange === '7days' ? 'primary' : ''"> 近7天 |
|
|
|
|
|
</el-button> |
|
|
|
|
|
|
|
|
|
|
|
<el-button type="success" @click="reset()">重置</el-button> |
|
|
|
|
|
<el-button type="primary" @click="search()">查询</el-button> |
|
|
|
|
|
<el-button type="primary" @click="exportExcel">导出Excel表格</el-button> |
|
|
|
|
|
<el-button type="primary" @click="openExportList">查看导出列表</el-button> |
|
|
|
|
|
</div> |
|
|
|
|
|
</el-card> |
|
|
|
|
|
<el-card> |
|
|
|
|
|
<div> |
|
|
|
|
|
金币净变化:{{ format3(totalGoldTotal || 0) }} |
|
|
|
|
|
永久金币:{{ format3(totalPermanentGold || 0) }} |
|
|
|
|
|
免费金币:{{ format3(totalFreeGold || 0) }} |
|
|
|
|
|
任务金币:{{ format3(totalTaskGold || 0) }} |
|
|
|
|
|
<a style="color:#b1b1b1;">(当前合计仅显示筛选范围内的金币净变化(充值总额 - 消费总额 + 退款总额)</a> |
|
|
|
|
|
</div> |
|
|
|
|
|
<div style="height: 584px; overflow-y: auto"> |
|
|
|
|
|
<el-table :data="tableData" style="width: 100%" @sort-change="handleSortChange" height="584px"> |
|
|
|
|
|
<el-table-column type="index" label="序号" width="100px" fixed="left"> |
|
|
|
|
|
<template #default="scope"> |
|
|
<span>{{ |
|
|
<span>{{ |
|
|
scope.$index + 1 + (getObj.pageNum - 1) * getObj.pageSize |
|
|
scope.$index + 1 + (getObj.pageNum - 1) * getObj.pageSize |
|
|
}}</span> |
|
|
}}</span> |
|
|
</template> |
|
|
|
|
|
</el-table-column> |
|
|
|
|
|
<el-table-column fixed="left" prop="name" label="姓名" width="150" show-overflow-tooltip /> |
|
|
|
|
|
<el-table-column fixed="left" prop="jwcode" label="精网号" width="120"/> |
|
|
|
|
|
<el-table-column prop="market" label="所属地区" width="120"/> |
|
|
|
|
|
<el-table-column prop="payPlatform" label="平台信息" width="140" /> |
|
|
|
|
|
<el-table-column prop="type" label="更新类型" width="110"> |
|
|
|
|
|
<template #default="scope"> |
|
|
|
|
|
<span v-if="scope.row.type === 0">充值</span> |
|
|
|
|
|
<span v-if="scope.row.type === 1">消耗</span> |
|
|
|
|
|
<span v-if="scope.row.type === 2">退款</span> |
|
|
|
|
|
<span v-if="scope.row.type === 3">其他</span> |
|
|
|
|
|
</template> |
|
|
|
|
|
</el-table-column> |
|
|
|
|
|
|
|
|
|
|
|
<el-table-column prop="sumGold" sortable="custom" label="金币数量" width="110"> |
|
|
|
|
|
<template #default="scope"> |
|
|
|
|
|
<span>{{ (scope.row.sumGold || 0) }}</span> |
|
|
|
|
|
</template> |
|
|
|
|
|
</el-table-column> |
|
|
|
|
|
|
|
|
|
|
|
<el-table-column prop="permanentGold" sortable="custom" label="永久金币" width="110"> |
|
|
|
|
|
<template #default="scope"> |
|
|
|
|
|
<span>{{ (scope.row.permanentGold || 0) }}</span> |
|
|
|
|
|
</template> |
|
|
|
|
|
</el-table-column> |
|
|
|
|
|
<el-table-column prop="freeGold" sortable="custom" label="免费金币" width="110"> |
|
|
|
|
|
<template #default="scope"> |
|
|
|
|
|
<span>{{ (calculateFreeGold(scope.row) || 0) }}</span> |
|
|
|
|
|
</template> |
|
|
|
|
|
</el-table-column> |
|
|
|
|
|
<el-table-column prop="taskGold" sortable="custom" label="任务金币" width="110"> |
|
|
|
|
|
<template #default="scope"> |
|
|
|
|
|
<span>{{ (scope.row.taskGold || 0) }}</span> |
|
|
|
|
|
</template> |
|
|
|
|
|
</el-table-column> |
|
|
|
|
|
<el-table-column prop="adminName" label="提交人" width="110"/> |
|
|
|
|
|
<el-table-column prop="auditTime" sortable="custom" label="更新时间" width="210" show-overflow-tooltip> |
|
|
|
|
|
<template #default="scope"> |
|
|
|
|
|
|
|
|
</template> |
|
|
|
|
|
</el-table-column> |
|
|
|
|
|
<el-table-column fixed="left" prop="name" label="姓名" width="150" show-overflow-tooltip/> |
|
|
|
|
|
<el-table-column fixed="left" prop="jwcode" label="精网号" width="120"/> |
|
|
|
|
|
<el-table-column prop="market" label="所属地区" width="120"/> |
|
|
|
|
|
<el-table-column prop="payPlatform" label="平台信息" width="140"/> |
|
|
|
|
|
<el-table-column prop="type" label="更新类型" width="110"> |
|
|
|
|
|
<template #default="scope"> |
|
|
|
|
|
<span v-if="scope.row.type === 0">充值</span> |
|
|
|
|
|
<span v-if="scope.row.type === 1">消耗</span> |
|
|
|
|
|
<span v-if="scope.row.type === 2">退款</span> |
|
|
|
|
|
<span v-if="scope.row.type === 3">其他</span> |
|
|
|
|
|
</template> |
|
|
|
|
|
</el-table-column> |
|
|
|
|
|
|
|
|
|
|
|
<el-table-column prop="sumGold" sortable="custom" label="金币数量" width="110"> |
|
|
|
|
|
<template #default="scope"> |
|
|
|
|
|
<span>{{ (scope.row.sumGold || 0) }}</span> |
|
|
|
|
|
</template> |
|
|
|
|
|
</el-table-column> |
|
|
|
|
|
|
|
|
|
|
|
<el-table-column prop="permanentGold" sortable="custom" label="永久金币" width="110"> |
|
|
|
|
|
<template #default="scope"> |
|
|
|
|
|
<span>{{ (scope.row.permanentGold || 0) }}</span> |
|
|
|
|
|
</template> |
|
|
|
|
|
</el-table-column> |
|
|
|
|
|
<el-table-column prop="freeGold" sortable="custom" label="免费金币" width="110"> |
|
|
|
|
|
<template #default="scope"> |
|
|
|
|
|
<span>{{ (calculateFreeGold(scope.row) || 0) }}</span> |
|
|
|
|
|
</template> |
|
|
|
|
|
</el-table-column> |
|
|
|
|
|
<el-table-column prop="taskGold" sortable="custom" label="任务金币" width="110"> |
|
|
|
|
|
<template #default="scope"> |
|
|
|
|
|
<span>{{ (scope.row.taskGold || 0) }}</span> |
|
|
|
|
|
</template> |
|
|
|
|
|
</el-table-column> |
|
|
|
|
|
<el-table-column prop="adminName" label="提交人" width="110"/> |
|
|
|
|
|
<el-table-column prop="auditTime" sortable="custom" label="更新时间" width="210" show-overflow-tooltip> |
|
|
|
|
|
<template #default="scope"> |
|
|
<span>{{ |
|
|
<span>{{ |
|
|
moment(scope.row.auditTime).format('YYYY-MM-DD HH:mm:ss') |
|
|
moment(scope.row.auditTime).format('YYYY-MM-DD HH:mm:ss') |
|
|
}}</span> |
|
|
}}</span> |
|
|
</template> |
|
|
|
|
|
</el-table-column> |
|
|
|
|
|
</el-table> |
|
|
|
|
|
</div> |
|
|
|
|
|
|
|
|
|
|
|
<!-- 此处分页 --> |
|
|
|
|
|
<div class="pagination" style="margin-top: 20px;display: flex;"> |
|
|
|
|
|
<el-pagination background :page-size="getObj.pageSize" :page-sizes="[5, 10, 20, 50, 100]" |
|
|
|
|
|
layout="total, sizes, prev, pager, next, jumper" :total="total" |
|
|
|
|
|
@size-change="handlePageSizeChange" |
|
|
|
|
|
@current-change="handleCurrentChange"></el-pagination> |
|
|
|
|
|
</div> |
|
|
|
|
|
</el-card> |
|
|
|
|
|
|
|
|
</template> |
|
|
|
|
|
</el-table-column> |
|
|
|
|
|
</el-table> |
|
|
|
|
|
</div> |
|
|
|
|
|
|
|
|
|
|
|
<!-- 此处分页 --> |
|
|
|
|
|
<div class="pagination" style="margin-top: 20px;display: flex;"> |
|
|
|
|
|
<el-pagination background :page-size="getObj.pageSize" :page-sizes="[5, 10, 20, 50, 100]" |
|
|
|
|
|
layout="total, sizes, prev, pager, next, jumper" :total="total" |
|
|
|
|
|
@size-change="handlePageSizeChange" |
|
|
|
|
|
@current-change="handleCurrentChange"></el-pagination> |
|
|
|
|
|
</div> |
|
|
|
|
|
</el-card> |
|
|
|
|
|
|
|
|
<!-- 导出列表弹窗 --> |
|
|
<!-- 导出列表弹窗 --> |
|
|
<el-dialog v-model="exportListVisible" title="导出列表" width="80%"> |
|
|
<el-dialog v-model="exportListVisible" title="导出列表" width="80%"> |
|
|