|
|
@ -1,11 +1,11 @@ |
|
|
|
<script setup> |
|
|
|
// 这是客户金币余额页面 |
|
|
|
import {ref, onMounted, reactive, computed} from 'vue' |
|
|
|
import { ref, onMounted, reactive, computed } from 'vue' |
|
|
|
import ElementPlus from 'element-plus' |
|
|
|
import {ElMessage, ElMessageBox} from 'element-plus' |
|
|
|
import { ElMessage, ElMessageBox } from 'element-plus' |
|
|
|
import axios from 'axios' |
|
|
|
import moment from 'moment' |
|
|
|
import {ta} from 'element-plus/es/locales.mjs' |
|
|
|
import { ta } from 'element-plus/es/locales.mjs' |
|
|
|
import API from '@/util/http' |
|
|
|
|
|
|
|
// 变量 |
|
|
@ -14,7 +14,7 @@ const adminData = ref({}) |
|
|
|
const dialogVisible = ref(false) |
|
|
|
const getAdminData = async function () { |
|
|
|
try { |
|
|
|
const result = await API({url: '/admin/userinfo', data: {}}) |
|
|
|
const result = await API({ url: '/admin/userinfo', data: {} }) |
|
|
|
adminData.value = result |
|
|
|
// console.log('请求成功', result) |
|
|
|
console.log('管理员用户信息', adminData.value) |
|
|
@ -35,7 +35,7 @@ const getmarket = async () => { |
|
|
|
console.log('获取地区数据成功', result) |
|
|
|
// 假设后端返回的是字符串数组,转换为 { value, label } 格式 |
|
|
|
if (Array.isArray(result.data) && typeof result.data[0] === 'string') { |
|
|
|
market.value = result.data.map(item => ({value: item, label: item})); |
|
|
|
market.value = result.data.map(item => ({ value: item, label: item })); |
|
|
|
} else { |
|
|
|
market.value = result.data; |
|
|
|
} |
|
|
@ -104,7 +104,7 @@ const get = async function (val) { |
|
|
|
|
|
|
|
// 发送POST请求 |
|
|
|
|
|
|
|
const requestData = {...getObj.value, user: {...user.value}};//控制台打印请求的参数 |
|
|
|
const requestData = { ...getObj.value, user: { ...user.value } };//控制台打印请求的参数 |
|
|
|
console.log('最终请求参数', JSON.stringify(requestData, null, 2)); // 打印格式化后的请求参数 |
|
|
|
|
|
|
|
//console.log('请求参数', requestData); |
|
|
@ -112,7 +112,7 @@ const get = async function (val) { |
|
|
|
const result = await API({ |
|
|
|
url: '/goldDetail/getGold', |
|
|
|
method: 'post', |
|
|
|
data: {...getObj.value, user: {...user.value}} |
|
|
|
data: { ...getObj.value, user: { ...user.value } } |
|
|
|
}) |
|
|
|
console.log('响应数据', result) |
|
|
|
tableData.value = result.data.list |
|
|
@ -231,18 +231,12 @@ const handleCurrentChange = function (val) { |
|
|
|
} |
|
|
|
const exportExcel = async function () { |
|
|
|
const params = { |
|
|
|
goldDetail: { |
|
|
|
user: { |
|
|
|
jwcode: user.value.jwcode || '', |
|
|
|
payPlatform: user.value.payPlatform || '', |
|
|
|
type: user.value.type || '', |
|
|
|
markets: user.value.markets || '', |
|
|
|
startTime: user.value.startTime || '', |
|
|
|
endTime: user.value.endTime || '', |
|
|
|
}, |
|
|
|
page:getObj.value.pageNum, |
|
|
|
size:total.value |
|
|
|
markets: user.value.markets || [] |
|
|
|
} |
|
|
|
} |
|
|
|
const res = await API({url: '/goldDetail/exportGold', data: params}) |
|
|
|
const res = await API({ url: '/goldDetail/exportGold', data: params }) |
|
|
|
if (res.code === 200) { |
|
|
|
ElMessage.success('导出成功') |
|
|
|
} |
|
|
@ -298,8 +292,8 @@ const getTagType = (state) => { |
|
|
|
return 'info'; |
|
|
|
case 1: |
|
|
|
return 'primary'; |
|
|
|
case 2: |
|
|
|
return'success'; |
|
|
|
case 2: |
|
|
|
return 'success'; |
|
|
|
case 3: |
|
|
|
return 'danger'; |
|
|
|
default: |
|
|
@ -313,14 +307,32 @@ const getTagText = (state) => { |
|
|
|
return '待执行'; |
|
|
|
case 1: |
|
|
|
return '执行中'; |
|
|
|
case 2: |
|
|
|
return'执行完成'; |
|
|
|
case 2: |
|
|
|
return '执行完成'; |
|
|
|
case 3: |
|
|
|
return '执行出错'; |
|
|
|
default: |
|
|
|
return '未知状态'; |
|
|
|
} |
|
|
|
} |
|
|
|
const handleMarketChange = (val) => { |
|
|
|
if (!Array.isArray(val)) return |
|
|
|
|
|
|
|
const hasHeadquarters = val.includes('总部') |
|
|
|
const hasOther = val.some(item => item !== '总部') |
|
|
|
|
|
|
|
if (hasHeadquarters && hasOther) { |
|
|
|
if (val[val.length - 1] === '总部') { |
|
|
|
// 用户最后点的是总部,保留总部,清除其他 |
|
|
|
goldDetail.value.markets = ['总部'] |
|
|
|
ElMessage.warning('“总部”与其他地区不可同时选择,系统已为您保留“总部”') |
|
|
|
} else { |
|
|
|
// 用户最后点的是其他,保留其他,移除总部 |
|
|
|
goldDetail.value.markets = val.filter(item => item !== '总部') |
|
|
|
ElMessage.warning('“总部”与其他地区不可同时选择,系统已为您去除“总部”') |
|
|
|
} |
|
|
|
} |
|
|
|
} |
|
|
|
</script> |
|
|
|
|
|
|
|
<template> |
|
|
@ -330,12 +342,12 @@ const getTagText = (state) => { |
|
|
|
<div class="head-card"> |
|
|
|
<div class="head-card-element"> |
|
|
|
<el-text class="mx-1" size="large">精网号:</el-text> |
|
|
|
<el-input v-model="user.jwcode" style="width: 160px" placeholder="请输入精网号" clearable/> |
|
|
|
<el-input v-model="user.jwcode" style="width: 160px" placeholder="请输入精网号" clearable /> |
|
|
|
</div> |
|
|
|
<div class="head-card-element"> |
|
|
|
<el-text class="mx-1" size="large">所属地区:</el-text> |
|
|
|
<el-select v-model="user.markets" placeholder="请选择所属地区" style="width: 180px" clearable multiple> |
|
|
|
<el-option v-for="item in market" :key="item.value" :label="item.label" :value="item.value"/> |
|
|
|
<el-select v-model="user.markets" placeholder="请选择所属地区" style="width: 180px" clearable multiple @change="handleMarketChange"> |
|
|
|
<el-option v-for="item in market" :key="item.value" :label="item.label" :value="item.value" /> |
|
|
|
</el-select> |
|
|
|
</div> |
|
|
|
<el-button type="primary" @click="search()">查询</el-button> |
|
|
@ -360,25 +372,25 @@ const getTagText = (state) => { |
|
|
|
<!-- 设置表格容器的高度和滚动样式 --> |
|
|
|
<div style="height: 626px; overflow-y: auto"> |
|
|
|
<el-table :data="tableData" @cellClick="cellClick" style="width: 100%" height="626px" |
|
|
|
@sort-change="handleSortChange"> |
|
|
|
@sort-change="handleSortChange"> |
|
|
|
<el-table-column type="index" label="序号" width="100px" 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="120"/> |
|
|
|
<el-table-column prop="jwcode" label="精网号" width="120"/> |
|
|
|
<el-table-column prop="market" label="所属地区" width="120"/> |
|
|
|
<el-table-column prop="name" label="姓名" width="120" /> |
|
|
|
<el-table-column prop="jwcode" label="精网号" width="120" /> |
|
|
|
<el-table-column prop="market" label="所属地区" width="120" /> |
|
|
|
<el-table-column prop="allJb" label="金币总数" width="120" aligh="center"> |
|
|
|
<template #default="scope"> |
|
|
|
<span>{{ |
|
|
|
(scope.row.currentPermanentGold + |
|
|
|
scope.row.currentFreeJune + |
|
|
|
scope.row.currentFreeDecember + |
|
|
|
scope.row.currentTaskGold) / 100 |
|
|
|
}}</span> |
|
|
|
(scope.row.currentPermanentGold + |
|
|
|
scope.row.currentFreeJune + |
|
|
|
scope.row.currentFreeDecember + |
|
|
|
scope.row.currentTaskGold) / 100 |
|
|
|
}}</span> |
|
|
|
</template> |
|
|
|
</el-table-column> |
|
|
|
<el-table-column prop="currentPermanentGold" label="永久金币" sortable="custom" width="110"> |
|
|
@ -435,45 +447,43 @@ const getTagText = (state) => { |
|
|
|
<!-- 分页 --> |
|
|
|
<div class="pagination" style="margin-top: 20px"> |
|
|
|
<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> |
|
|
|
</el-row> |
|
|
|
|
|
|
|
<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> |
|
|
|
|
|
|
|