|
|
@ -1,6 +1,6 @@ |
|
|
|
<script setup> |
|
|
|
import {computed, onMounted, ref} from 'vue' |
|
|
|
import {dayjs, ElMessage} from 'element-plus' |
|
|
|
import { computed, onMounted, ref } from 'vue' |
|
|
|
import { dayjs, ElMessage } from 'element-plus' |
|
|
|
import request from '@/util/http' |
|
|
|
import API from '@/util/http' |
|
|
|
import moment from 'moment' |
|
|
@ -177,7 +177,7 @@ const ConsumeSelectBy = async function (val) { |
|
|
|
|
|
|
|
// 合计数的接口 |
|
|
|
// 复制一份 detail.value 并移除排序字段和排序方式 |
|
|
|
const detailWithoutSort = {...consumeUser.value} |
|
|
|
const detailWithoutSort = { ...consumeUser.value } |
|
|
|
delete detailWithoutSort.sortField |
|
|
|
delete detailWithoutSort.sortOrder |
|
|
|
|
|
|
@ -283,14 +283,14 @@ const reset = function () { |
|
|
|
const getToday = function () { |
|
|
|
const today = new Date() |
|
|
|
const startTime = new Date( |
|
|
|
today.getFullYear(), |
|
|
|
today.getMonth(), |
|
|
|
today.getDate() |
|
|
|
today.getFullYear(), |
|
|
|
today.getMonth(), |
|
|
|
today.getDate() |
|
|
|
) |
|
|
|
const endTime = new Date( |
|
|
|
today.getFullYear(), |
|
|
|
today.getMonth(), |
|
|
|
today.getDate() + 1 |
|
|
|
today.getFullYear(), |
|
|
|
today.getMonth(), |
|
|
|
today.getDate() + 1 |
|
|
|
) |
|
|
|
getTime.value = [startTime, endTime] |
|
|
|
console.log('getTime', getTime.value) |
|
|
@ -303,14 +303,14 @@ const getYesterday = function () { |
|
|
|
const yesterday = new Date() |
|
|
|
yesterday.setDate(yesterday.getDate() - 1) |
|
|
|
const startTime = new Date( |
|
|
|
yesterday.getFullYear(), |
|
|
|
yesterday.getMonth(), |
|
|
|
yesterday.getDate() |
|
|
|
yesterday.getFullYear(), |
|
|
|
yesterday.getMonth(), |
|
|
|
yesterday.getDate() |
|
|
|
) |
|
|
|
const endTime = new Date( |
|
|
|
yesterday.getFullYear(), |
|
|
|
yesterday.getMonth(), |
|
|
|
yesterday.getDate() + 1 |
|
|
|
yesterday.getFullYear(), |
|
|
|
yesterday.getMonth(), |
|
|
|
yesterday.getDate() + 1 |
|
|
|
) |
|
|
|
getTime.value = [startTime, endTime] |
|
|
|
console.log('getTime', getTime.value) |
|
|
@ -322,14 +322,14 @@ const getYesterday = function () { |
|
|
|
const get7Days = function () { |
|
|
|
const today = new Date() |
|
|
|
const startTime = new Date( |
|
|
|
today.getFullYear(), |
|
|
|
today.getMonth(), |
|
|
|
today.getDate() - 6 |
|
|
|
today.getFullYear(), |
|
|
|
today.getMonth(), |
|
|
|
today.getDate() - 6 |
|
|
|
) |
|
|
|
const endTime = new Date( |
|
|
|
today.getFullYear(), |
|
|
|
today.getMonth(), |
|
|
|
today.getDate() + 1 |
|
|
|
today.getFullYear(), |
|
|
|
today.getMonth(), |
|
|
|
today.getDate() + 1 |
|
|
|
) |
|
|
|
getTime.value = [startTime, endTime] |
|
|
|
console.log('getTime', getTime.value) |
|
|
@ -431,18 +431,18 @@ onMounted(async function () { |
|
|
|
|
|
|
|
const exportExcel = async function () { |
|
|
|
const params = { |
|
|
|
consumUser: { |
|
|
|
consumeUser: { |
|
|
|
jwcode: consumeUser.value.jwcode || '', |
|
|
|
payPlatform: consumeUser.value.payPlatform || '', |
|
|
|
market: consumeUser.value.market || '', |
|
|
|
startTime: consumeUser.value.startTime || '', |
|
|
|
endTime: consumeUser.value.endTime || '', |
|
|
|
goodsName: consumeUser.value.goodsName || '' |
|
|
|
}, |
|
|
|
page: getObj.value.pageNum, |
|
|
|
size: total.value |
|
|
|
goodsName: consumeUser.value.goodsName || '', |
|
|
|
sortField: sortField.value || '', |
|
|
|
sortOrder: sortOrder.value || '' |
|
|
|
} |
|
|
|
} |
|
|
|
const res = await API({url: '/export/exportConsume', data: params}) |
|
|
|
const res = await API({ url: '/export/exportConsume', data: params }) |
|
|
|
if (res.code === 200) { |
|
|
|
ElMessage.success('导出成功') |
|
|
|
} |
|
|
@ -497,8 +497,8 @@ const getTagType = (state) => { |
|
|
|
return 'info'; |
|
|
|
case 1: |
|
|
|
return 'primary'; |
|
|
|
case 2: |
|
|
|
return'success'; |
|
|
|
case 2: |
|
|
|
return 'success'; |
|
|
|
case 3: |
|
|
|
return 'danger'; |
|
|
|
default: |
|
|
@ -512,8 +512,8 @@ const getTagText = (state) => { |
|
|
|
return '待执行'; |
|
|
|
case 1: |
|
|
|
return '执行中'; |
|
|
|
case 2: |
|
|
|
return'执行完成'; |
|
|
|
case 2: |
|
|
|
return '执行完成'; |
|
|
|
case 3: |
|
|
|
return '执行出错'; |
|
|
|
default: |
|
|
@ -528,42 +528,35 @@ const getTagText = (state) => { |
|
|
|
<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" >精网号:</el-text> |
|
|
|
<el-input |
|
|
|
v-model="consumeUser.jwcode" |
|
|
|
placeholder="请输入精网号" |
|
|
|
style="width: 150px" |
|
|
|
clearable |
|
|
|
/> |
|
|
|
<div class="head-card-element"> |
|
|
|
<el-text class="mx-1">精网号:</el-text> |
|
|
|
<el-input v-model="consumeUser.jwcode" placeholder="请输入精网号" style="width: 150px" clearable /> |
|
|
|
</div> |
|
|
|
</el-col> |
|
|
|
<el-col :span="6"> |
|
|
|
<div class="head-card-element"> |
|
|
|
<el-text class="mx-1" size="large">商品名称:</el-text> |
|
|
|
<el-select v-model="consumeUser.goodsName" placeholder="请选择商品名称" size="large" style="width: 180px" |
|
|
|
clearable> |
|
|
|
clearable> |
|
|
|
<!-- 修改 v-for 绑定逻辑 --> |
|
|
|
<el-option v-for="(item, index) in goods" :key="index" :label="item" :value="item"/> |
|
|
|
<el-option v-for="(item, index) in goods" :key="index" :label="item" :value="item" /> |
|
|
|
</el-select> |
|
|
|
</div> |
|
|
|
</el-col> |
|
|
|
<el-col :span="6"> |
|
|
|
<div class="head-card-element"> |
|
|
|
<el-text class="mx-1" size="large">所属地区:</el-text> |
|
|
|
<el-select v-model="consumeUser.market" placeholder="请选择所属地区" size="large" style="width: 180px" |
|
|
|
clearable> |
|
|
|
<el-option v-for="(item, index) in market" :key="index" :label="item" :value="item"/> |
|
|
|
<el-select v-model="consumeUser.market" placeholder="请选择所属地区" size="large" style="width: 180px" clearable> |
|
|
|
<el-option v-for="(item, index) in market" :key="index" :label="item" :value="item" /> |
|
|
|
</el-select> |
|
|
|
</div> |
|
|
|
</el-col> |
|
|
|
<el-col :span="6"> |
|
|
|
<div class="head-card-element"> |
|
|
|
<el-text class="mx-1" size="large">消耗平台:</el-text> |
|
|
|
<el-select v-model="consumeUser.payPlatform" placeholder="请选择消耗平台" size="large" |
|
|
|
style="width: 180px" |
|
|
|
clearable> |
|
|
|
<el-option v-for="item in consumePlatform" :key="item.value" :label="item.label" :value="item.value"/> |
|
|
|
<el-select v-model="consumeUser.payPlatform" placeholder="请选择消耗平台" size="large" style="width: 180px" |
|
|
|
clearable> |
|
|
|
<el-option v-for="item in consumePlatform" :key="item.value" :label="item.label" :value="item.value" /> |
|
|
|
</el-select> |
|
|
|
</div> |
|
|
|
</el-col> |
|
|
@ -573,10 +566,13 @@ const getTagText = (state) => { |
|
|
|
<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"/> |
|
|
|
<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> |
|
|
|
end-placeholder="结束时间" style="width: 400px" @change="handleDatePickerChange" /> |
|
|
|
<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> |
|
|
|
<!-- </div> |
|
|
|
</el-col> |
|
|
|
<el-col :span="3"> |
|
|
@ -605,16 +601,16 @@ const getTagText = (state) => { |
|
|
|
<el-table-column type="index" label="序号" width="80px" fixed="left"> |
|
|
|
<template #default="scope"> |
|
|
|
<span>{{ |
|
|
|
scope.$index + 1 + (getObj.pageNum - 1) * getObj.pageSize |
|
|
|
}}</span> |
|
|
|
scope.$index + 1 + (getObj.pageNum - 1) * getObj.pageSize |
|
|
|
}}</span> |
|
|
|
</template> |
|
|
|
</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="market" label="所属地区" width="110px"/> |
|
|
|
<el-table-column prop="goodsName" label="商品" width="160px" show-overflow-tooltip/> |
|
|
|
<el-table-column prop="jwcode" label="精网号" width="110px" fixed="left" /> |
|
|
|
<el-table-column prop="market" label="所属地区" width="110px" /> |
|
|
|
<el-table-column prop="goodsName" label="商品" width="160px" show-overflow-tooltip /> |
|
|
|
<el-table-column prop="payPlatform" label="消耗平台" width="120px"> |
|
|
|
<template #default="scope"> |
|
|
|
<!-- 使用非严格相等比较 --> |
|
|
@ -632,8 +628,8 @@ const getTagText = (state) => { |
|
|
|
<template #default="scope"> |
|
|
|
{{ |
|
|
|
(scope.row.taskGold + |
|
|
|
scope.row.freeGold + |
|
|
|
scope.row.permanentGold) / 100 |
|
|
|
scope.row.freeGold + |
|
|
|
scope.row.permanentGold) / 100 |
|
|
|
}} |
|
|
|
</template> |
|
|
|
</el-table-column> |
|
|
@ -654,18 +650,17 @@ const getTagText = (state) => { |
|
|
|
</template> |
|
|
|
</el-table-column> |
|
|
|
|
|
|
|
<el-table-column prop="remark" label="备注" width="200px" show-overflow-tooltip/> |
|
|
|
<el-table-column prop="adminName" label="提交人" width="110px"/> |
|
|
|
<el-table-column prop="createTime" label="消耗时间" sortable="custom" width="180px"/> |
|
|
|
<el-table-column prop="remark" label="备注" width="200px" show-overflow-tooltip /> |
|
|
|
<el-table-column prop="adminName" label="提交人" width="110px" /> |
|
|
|
<el-table-column prop="createTime" label="消耗时间" sortable="custom" width="180px" /> |
|
|
|
</el-table> |
|
|
|
</div> |
|
|
|
|
|
|
|
<!-- 分页 --> |
|
|
|
<div class="pagination"> |
|
|
|
<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> |
|
|
|
layout="total, sizes, prev, pager, next, jumper" :total="total" @size-change="handlePageSizeChange" |
|
|
|
@current-change="handleCurrentChange"></el-pagination> |
|
|
|
</div> |
|
|
|
</el-card> |
|
|
|
</el-col> |
|
|
@ -673,36 +668,35 @@ const getTagText = (state) => { |
|
|
|
|
|
|
|
<!-- 导出弹窗 --> |
|
|
|
<el-dialog v-model="exportListVisible" title="导出列表" width="80%"> |
|
|
|
<el-table :data="exportList" style="width: 100%" :loading="exportListLoading"> |
|
|
|
<el-table-column prop="fileName" label="文件名" /> |
|
|
|
<el-table-column prop="state" label="状态"> |
|
|
|
<template #default="scope"> |
|
|
|
<el-tag :type="getTagType(scope.row.state)" |
|
|
|
:effect="scope.row.state === 3 ? 'light' : 'plain'"> |
|
|
|
{{ getTagText(scope.row.state) }} |
|
|
|
</el-tag> |
|
|
|
</template> |
|
|
|
</el-table-column> |
|
|
|
<el-table-column prop="createTime" label="创建时间"> |
|
|
|
<template #default="scope"> |
|
|
|
{{ moment(scope.row.createTime).format('YYYY-MM-DD HH:mm:ss') }} |
|
|
|
</template> |
|
|
|
</el-table-column> |
|
|
|
<el-table-column label="操作"> |
|
|
|
<template #default="scope"> |
|
|
|
<el-button type="primary" size="small" @click="downloadExportFile(scope.row)" |
|
|
|
:disabled="scope.row.state !== 2"> |
|
|
|
下载 |
|
|
|
</el-button> |
|
|
|
</template> |
|
|
|
</el-table-column> |
|
|
|
</el-table> |
|
|
|
<template #footer> |
|
|
|
<div class="dialog-footer"> |
|
|
|
<el-button text @click="exportListVisible = false">关闭</el-button> |
|
|
|
</div> |
|
|
|
</template> |
|
|
|
</el-dialog> |
|
|
|
<el-table :data="exportList" style="width: 100%" :loading="exportListLoading"> |
|
|
|
<el-table-column prop="fileName" label="文件名" /> |
|
|
|
<el-table-column prop="state" label="状态"> |
|
|
|
<template #default="scope"> |
|
|
|
<el-tag :type="getTagType(scope.row.state)" :effect="scope.row.state === 3 ? 'light' : 'plain'"> |
|
|
|
{{ getTagText(scope.row.state) }} |
|
|
|
</el-tag> |
|
|
|
</template> |
|
|
|
</el-table-column> |
|
|
|
<el-table-column prop="createTime" label="创建时间"> |
|
|
|
<template #default="scope"> |
|
|
|
{{ moment(scope.row.createTime).format('YYYY-MM-DD HH:mm:ss') }} |
|
|
|
</template> |
|
|
|
</el-table-column> |
|
|
|
<el-table-column label="操作"> |
|
|
|
<template #default="scope"> |
|
|
|
<el-button type="primary" size="small" @click="downloadExportFile(scope.row)" |
|
|
|
:disabled="scope.row.state !== 2"> |
|
|
|
下载 |
|
|
|
</el-button> |
|
|
|
</template> |
|
|
|
</el-table-column> |
|
|
|
</el-table> |
|
|
|
<template #footer> |
|
|
|
<div class="dialog-footer"> |
|
|
|
<el-button text @click="exportListVisible = false">关闭</el-button> |
|
|
|
</div> |
|
|
|
</template> |
|
|
|
</el-dialog> |
|
|
|
</template> |
|
|
|
|
|
|
|
<style scoped> |
|
|
|