Browse Source

feat: 完成客户金币的中文语言包,至此本期需求所有中文语言包添加完成!

huangqizheng/feature-20251213090502-现金退款多语言
zhangrenyuan 1 month ago
parent
commit
29144efa0a
  1. 36
      src/components/locales/lang/zh-CN.js
  2. 6
      src/views/usergold/gold/clientCount.vue
  3. 85
      src/views/usergold/gold/clientCountBalance.vue
  4. 133
      src/views/usergold/gold/clientCountDetail.vue

36
src/components/locales/lang/zh-CN.js

@ -1,9 +1,12 @@
import { UploadFilled } from "@element-plus/icons-vue"; import { UploadFilled } from "@element-plus/icons-vue";
// 包里的变量不可随意更改!!!
export default { export default {
// 通用组 (筛选,按钮,币种计量) // 通用组 (筛选,按钮,币种计量)
common: { common: {
// 筛选 // 筛选
name: '姓名',
jwcode: '精网号', jwcode: '精网号',
jwcodePlaceholder: '请输入精网号', jwcodePlaceholder: '请输入精网号',
activityName: '活动名称', activityName: '活动名称',
@ -20,9 +23,14 @@ export default {
consumePlatformPlaceholder: '请选择消耗平台', consumePlatformPlaceholder: '请选择消耗平台',
rechargePlatform: '充值平台', rechargePlatform: '充值平台',
rechargePlatformPlaceholder: '请选择充值平台', rechargePlatformPlaceholder: '请选择充值平台',
payPlatform: '平台信息',
payPlatformPlaceholder: '请选择平台信息',
updateType: '数量更新类型',
updateTypePlaceholder: '请选择更新类型',
consumeTime: '消耗时间', consumeTime: '消耗时间',
rechargeTime: '充值时间', rechargeTime: '充值时间',
refundTime: '退款时间', refundTime: '退款时间',
updateTime: '更新时间',
submitTime: '提交时间', submitTime: '提交时间',
auditTime: '审核时间', auditTime: '审核时间',
startTime: '起始时间', startTime: '起始时间',
@ -49,6 +57,8 @@ export default {
consumeSGD: '消耗新币', consumeSGD: '消耗新币',
refundGoldCoin: '退款金币总数', refundGoldCoin: '退款金币总数',
totalGoldCoin: '总金币数', totalGoldCoin: '总金币数',
netGoldChange: '金币净变化',
netGoldChangeTip: '当前合计仅显示筛选范围内的金币净变化(充值总额 - 消费总额 + 退款总额)',
permanentGold: '永久金币', permanentGold: '永久金币',
freeGold: '免费金币', freeGold: '免费金币',
taskGold: '任务金币', taskGold: '任务金币',
@ -71,6 +81,8 @@ export default {
addFailed: '添加失败,请检查网络连接或联系管理员', addFailed: '添加失败,请检查网络连接或联系管理员',
queryFailed: '查询失败,请检查网络连接或精网号是否正确', queryFailed: '查询失败,请检查网络连接或精网号是否正确',
refundTypeError: '退款类型数据格式错误,请联系管理员', refundTypeError: '退款类型数据格式错误,请联系管理员',
getTotalFailed: '获取合计数失败,请稍后重试',
payPlatformError: '平台信息格式错误,请联系管理员',
confirmRefund: '确认退款?', confirmRefund: '确认退款?',
// 校验精网号,充值等输入 // 校验精网号,充值等输入
checkInputContent: '请检查输入内容', checkInputContent: '请检查输入内容',
@ -144,6 +156,9 @@ export default {
name: '姓名', name: '姓名',
jwcode: '精网号', jwcode: '精网号',
market: '所属地区', market: '所属地区',
sumGold: '金币总数',
payPlatform: '平台信息',
type: '更新类型',
orderNo: '订单号', orderNo: '订单号',
goodsName: '商品名称', goodsName: '商品名称',
refundType: '退款类型', refundType: '退款类型',
@ -154,6 +169,9 @@ export default {
activity: '活动名称', activity: '活动名称',
rateName: '货币名称', rateName: '货币名称',
rechargeAmount: '充值金额', rechargeAmount: '充值金额',
Gold: '金币数量',
freeGold6Month: '6月份到期免费金币',
freeGold12Month: '12月份到期免费金币',
permanentGold: '永久金币', permanentGold: '永久金币',
freeGold: '免费金币', freeGold: '免费金币',
taskGold: '任务金币', taskGold: '任务金币',
@ -167,6 +185,7 @@ export default {
rechargeTime: '充值时间', rechargeTime: '充值时间',
consumeTime: '消耗时间', consumeTime: '消耗时间',
refundTime: '退款时间', refundTime: '退款时间',
updateTime: '更新时间',
}, },
// 通用导出字段组 // 通用导出字段组
common_export: { common_export: {
@ -385,4 +404,21 @@ export default {
no: '否', no: '否',
yes: '是', yes: '是',
}, },
// 客户统计组
clientCount: {
// 客户金币余额 ---------------------------------
clientCountBalance: '金币余额',
// 客户统计明细 ---------------------------------
clientCountDetail: '金币明细',
recharge: '充值',
consume: '消耗',
refund: '退款',
other: '其他',
type: {
recharge: '充值',
consume: '消耗',
refund: '退款',
}
},
} }

6
src/views/usergold/gold/clientCount.vue

@ -10,7 +10,7 @@
:disabled="!hasDetail" :disabled="!hasDetail"
v-if="hasDetail" v-if="hasDetail"
> >
金币明细
{{ $t('clientCount.clientCountDetail') }}
</el-button> </el-button>
<el-button <el-button
class="no-active-btn" class="no-active-btn"
@ -18,7 +18,7 @@
@click="navigateTo('clientCountBalance')" @click="navigateTo('clientCountBalance')"
:disabled="!hasBalance" v-if="hasBalance" :disabled="!hasBalance" v-if="hasBalance"
> >
金币余额
{{ $t('clientCount.clientCountBalance') }}
</el-button> </el-button>
</el-button-group> </el-button-group>
<!-- 渲染子路由组件 --> <!-- 渲染子路由组件 -->
@ -34,6 +34,8 @@ import {useRoute, useRouter} from 'vue-router';
import {storeToRefs} from "pinia"; import {storeToRefs} from "pinia";
import {useAdminStore} from "@/store/index.js"; import {useAdminStore} from "@/store/index.js";
import {hasMenuPermission, permissionMapping} from "@/utils/menuTreePermission.js"; import {hasMenuPermission, permissionMapping} from "@/utils/menuTreePermission.js";
//
import { useI18n } from 'vue-i18n'
const router = useRouter(); const router = useRouter();
const route = useRoute(); const route = useRoute();

85
src/views/usergold/gold/clientCountBalance.vue

@ -18,6 +18,9 @@ import { ElMessage } from 'element-plus'
import moment from 'moment' import moment from 'moment'
import API from '@/util/http.js' import API from '@/util/http.js'
import { reverseMarketMapping } from "@/utils/marketMap.js"; import { reverseMarketMapping } from "@/utils/marketMap.js";
//
import { useI18n } from 'vue-i18n'
const { t } = useI18n()
// //
// const showEmployeeData = ref(false) // const showEmployeeData = ref(false)
@ -74,7 +77,7 @@ const sortOrder = ref('')
// //
const get = async function (val) { const get = async function (val) {
if (!findMenuById(menuTree.value, permissionMapping.gold_coin_customer_balance)) { if (!findMenuById(menuTree.value, permissionMapping.gold_coin_customer_balance)) {
ElMessage.error('无此权限')
ElMessage.error(t('elmessage.noPermission'))
return return
} }
try { try {
@ -102,7 +105,7 @@ const get = async function (val) {
// //
if (!numberRegex.test(user.value.jwcode)) { if (!numberRegex.test(user.value.jwcode)) {
ElMessage.error('请检查精网号格式')
ElMessage.error(t('elmessage.checkJwcodeFormat'))
// //
return return
} }
@ -171,7 +174,7 @@ const get = async function (val) {
goldtotal.value = parseFloat(resultGoldTotal.data.goldtotal.toFixed(2)) goldtotal.value = parseFloat(resultGoldTotal.data.goldtotal.toFixed(2))
} else { } else {
console.error('合计数数据格式错误', resultGoldTotal) console.error('合计数数据格式错误', resultGoldTotal)
ElMessage.error('获取合计数失败,请稍后重试')
ElMessage.error(t('elmessage.getTotalFailed'))
} }
// //
total.value = result.data.total total.value = result.data.total
@ -210,7 +213,7 @@ const reset = function () {
} }
const cellClick = function (row, column) { const cellClick = function (row, column) {
console.log('cellClick', column.label) console.log('cellClick', column.label)
if (column.label === '姓名') {
if (column.label === t('common.name')) {
dialogVisible.value = true dialogVisible.value = true
userInfo.value = row userInfo.value = row
@ -258,7 +261,7 @@ const exportExcel = async function () {
} }
const res = await API({ url: '/goldDetail/exportGold', data: params }) const res = await API({ url: '/goldDetail/exportGold', data: params })
if (res.code === 200) { if (res.code === 200) {
ElMessage.success('导出成功')
ElMessage.success(t('elmessage.exportSuccess'))
} }
} }
@ -285,11 +288,11 @@ const getExportList = async () => {
}); });
exportList.value = filteredData exportList.value = filteredData
} else { } else {
ElMessage.error(result.msg || '获取导出列表失败')
ElMessage.error(result.msg || t('elmessage.getExportListError'))
} }
} catch (error) { } catch (error) {
console.error('获取导出列表出错:', error) console.error('获取导出列表出错:', error)
ElMessage.error('获取导出列表失败,请稍后重试')
ElMessage.error(t('elmessage.getExportListError'))
} finally { } finally {
exportListLoading.value = false exportListLoading.value = false
} }
@ -302,7 +305,7 @@ const downloadExportFile = (item) => {
link.download = item.fileName link.download = item.fileName
link.click() link.click()
} else { } else {
ElMessage.warning('文件还在导出中,请稍后再试')
ElMessage.warning(t('elmessage.exportingInProgress'))
} }
} }
// //
@ -324,15 +327,15 @@ const getTagType = (state) => {
const getTagText = (state) => { const getTagText = (state) => {
switch (state) { switch (state) {
case 0: case 0:
return '待执行';
return t('elmessage.pendingExecution');
case 1: case 1:
return '执行中';
return t('elmessage.executing');
case 2: case 2:
return '执行完成';
return t('elmessage.executed');
case 3: case 3:
return '执行出错';
return t('elmessage.errorExecution');
default: default:
return '未知状态';
return t('elmessage.unknownStatus');
} }
} }
// //
@ -395,46 +398,46 @@ const format3 = (num) => {
<el-card class="card1" style="margin-bottom: 1vh;"> <el-card class="card1" style="margin-bottom: 1vh;">
<div class="head-card"> <div class="head-card">
<div class="head-card-element"> <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-text class="mx-1" size="large">{{ $t('common.jwcode') }}</el-text>
<el-input v-model="user.jwcode" style="width: 160px" :placeholder="$t('common.jwcodePlaceholder')" clearable />
</div> </div>
<div class="head-card-element"> <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"
<el-text class="mx-1" size="large">{{ $t('common.market') }}</el-text>
<el-cascader v-model="selectedMarketPath" :options="markets" :placeholder="$t('common.marketPlaceholder')" clearable style="width:180px"
@change="handleMarketChange" /> @change="handleMarketChange" />
</div> </div>
<div class="head-card-element"> <div class="head-card-element">
<!-- <el-checkbox v-model="showEmployeeData" @change="search()">员工数据</el-checkbox> --> <!-- <el-checkbox v-model="showEmployeeData" @change="search()">员工数据</el-checkbox> -->
</div> </div>
<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-button @click="reset" type="success">重置</el-button>
<el-button type="primary" @click="search()">{{ $t('common.search') }}</el-button>
<el-button type="primary" @click="exportExcel()">{{ $t('common.exportExcel') }}</el-button>
<el-button type="primary" @click="openExportList">{{ $t('common.viewExportList') }}</el-button>
<el-button @click="reset" type="success">{{ $t('common.reset') }}</el-button>
</div> </div>
<!-- </div> --> <!-- </div> -->
</el-card> </el-card>
<el-card class="card2"> <el-card class="card2">
<div class="goldStatistics"> <div class="goldStatistics">
金币总数{{ format3(goldtotal || 0) }}&nbsp;&nbsp;&nbsp;&nbsp;
永久金币{{ format3(permanentGold || 0) }}&nbsp;&nbsp;&nbsp;&nbsp;
免费金币{{ format3(freeGold || 0) }}&nbsp;&nbsp;&nbsp;&nbsp;
任务金币{{ format3(taskGold || 0) }}
{{ $t('common.totalGoldCoin') }}{{ format3(goldtotal || 0) }}&nbsp;&nbsp;&nbsp;&nbsp;
{{ $t('common.permanentGold') }}{{ format3(permanentGold || 0) }}&nbsp;&nbsp;&nbsp;&nbsp;
{{ $t('common.freeGold') }}{{ format3(freeGold || 0) }}&nbsp;&nbsp;&nbsp;&nbsp;
{{ $t('common.taskGold') }}{{ format3(taskGold || 0) }}
</div> </div>
<!-- 设置表格容器的高度和滚动样式 --> <!-- 设置表格容器的高度和滚动样式 -->
<div style="height: 69vh; overflow-y: auto"> <div style="height: 69vh; overflow-y: auto">
<el-table :data="tableData" @cellClick="cellClick" style="width: 82vw; height:69vh" <el-table :data="tableData" @cellClick="cellClick" style="width: 82vw; height:69vh"
@sort-change="handleSortChange" :row-style="{ height: '50px' }"> @sort-change="handleSortChange" :row-style="{ height: '50px' }">
<el-table-column type="index" label="序号" width="100px" fixed="left">
<el-table-column type="index" :label="$t('common_list.id')" width="100px" fixed="left">
<template #default="scope"> <template #default="scope">
<span>{{ <span>{{
scope.$index + 1 + (getObj.pageNum - 1) * getObj.pageSize scope.$index + 1 + (getObj.pageNum - 1) * getObj.pageSize
}}</span> }}</span>
</template> </template>
</el-table-column> </el-table-column>
<el-table-column prop="name" label="姓名" width="140" />
<el-table-column prop="jwcode" label="精网号" width="160" />
<el-table-column prop="market" label="所属地区" width="140" />
<el-table-column prop="sumGold" label="金币总数" width="140" aligh="center">
<el-table-column prop="name" :label="$t('common_list.name')" width="140" />
<el-table-column prop="jwcode" :label="$t('common_list.jwcode')" width="160" />
<el-table-column prop="market" :label="$t('common_list.market')" width="140" />
<el-table-column prop="sumGold" :label="$t('common_list.sumGold')" width="140" aligh="center">
<!-- <template #default="scope"> <!-- <template #default="scope">
<span>{{ <span>{{
((scope.row.currentPermanentGold || 0) + ((scope.row.currentPermanentGold || 0) +
@ -444,22 +447,22 @@ const format3 = (num) => {
}}</span> }}</span>
</template> --> </template> -->
</el-table-column> </el-table-column>
<el-table-column prop="currentPermanentGold" label="永久金币" sortable="custom" width="150">
<el-table-column prop="currentPermanentGold" :label="$t('common_list.permanentGold')" sortable="custom" width="150">
<template #default="scope"> <template #default="scope">
<span>{{ (scope.row.currentPermanentGold || 0) }}</span> <span>{{ (scope.row.currentPermanentGold || 0) }}</span>
</template> </template>
</el-table-column> </el-table-column>
<el-table-column prop="currentFreeJune" label="6月份到期免费金币" sortable="custom" width="170">
<el-table-column prop="currentFreeJune" :label="$t('common_list.freeGold6Month')" sortable="custom" width="170">
<template #default="scope"> <template #default="scope">
<span>{{ (scope.row.currentFreeJune || 0) }}</span> <span>{{ (scope.row.currentFreeJune || 0) }}</span>
</template> </template>
</el-table-column> </el-table-column>
<el-table-column prop="currentFreeDecember" label="12月份到期免费金币" sortable="custom" width="180">
<el-table-column prop="currentFreeDecember" :label="$t('common_list.freeGold12Month')" sortable="custom" width="180">
<template #default="scope"> <template #default="scope">
<span>{{ (scope.row.currentFreeDecember || 0) }}</span> <span>{{ (scope.row.currentFreeDecember || 0) }}</span>
</template> </template>
</el-table-column> </el-table-column>
<el-table-column prop="currentTaskGold" label="任务金币" sortable="custom" width="180">
<el-table-column prop="currentTaskGold" :label="$t('common_list.taskGold')" sortable="custom" width="180">
<template #default="scope"> <template #default="scope">
<span>{{ (scope.row.currentTaskGold || 0) }}</span> <span>{{ (scope.row.currentTaskGold || 0) }}</span>
</template> </template>
@ -520,33 +523,33 @@ const format3 = (num) => {
@current-change="handleCurrentChange"></el-pagination> @current-change="handleCurrentChange"></el-pagination>
</div> </div>
</el-card> </el-card>
<el-dialog v-model="exportListVisible" title="导出列表" width="80%">
<el-dialog v-model="exportListVisible" :title="$t('common_export.exportList')" width="80%">
<el-table :data="exportList" style="width: 100% ;height: 60vh;" :loading="exportListLoading"> <el-table :data="exportList" style="width: 100% ;height: 60vh;" :loading="exportListLoading">
<el-table-column prop="fileName" label="文件名" />
<el-table-column prop="state" label="状态">
<el-table-column prop="fileName" :label="$t('common_export.fileName')" />
<el-table-column prop="state" :label="$t('common_export.status')">
<template #default="scope"> <template #default="scope">
<el-tag :type="getTagType(scope.row.state)" :effect="scope.row.state === 3 ? 'light' : 'plain'"> <el-tag :type="getTagType(scope.row.state)" :effect="scope.row.state === 3 ? 'light' : 'plain'">
{{ getTagText(scope.row.state) }} {{ getTagText(scope.row.state) }}
</el-tag> </el-tag>
</template> </template>
</el-table-column> </el-table-column>
<el-table-column prop="createTime" label="创建时间">
<el-table-column prop="createTime" :label="$t('common_export.createTime')">
<template #default="scope"> <template #default="scope">
{{ moment(scope.row.createTime).format('YYYY-MM-DD HH:mm:ss') }} {{ moment(scope.row.createTime).format('YYYY-MM-DD HH:mm:ss') }}
</template> </template>
</el-table-column> </el-table-column>
<el-table-column label="操作">
<el-table-column :label="$t('common_export.operation')">
<template #default="scope"> <template #default="scope">
<el-button type="primary" size="small" @click="downloadExportFile(scope.row)" <el-button type="primary" size="small" @click="downloadExportFile(scope.row)"
:disabled="scope.row.state !== 2"> :disabled="scope.row.state !== 2">
下载
{{ $t('common_export.download') }}
</el-button> </el-button>
</template> </template>
</el-table-column> </el-table-column>
</el-table> </el-table>
<template #footer> <template #footer>
<div class="dialog-footer"> <div class="dialog-footer">
<el-button text @click="exportListVisible = false">关闭</el-button>
<el-button text @click="exportListVisible = false">{{ $t('common_export.close') }}</el-button>
</div> </div>
</template> </template>
</el-dialog> </el-dialog>

133
src/views/usergold/gold/clientCountDetail.vue

@ -11,6 +11,10 @@ import { storeToRefs } from "pinia"
import { findMenuById, permissionMapping } from "@/utils/menuTreePermission.js" import { findMenuById, permissionMapping } from "@/utils/menuTreePermission.js"
const adminStore = useAdminStore() const adminStore = useAdminStore()
const { adminData, menuTree, flag } = storeToRefs(adminStore) const { adminData, menuTree, flag } = storeToRefs(adminStore)
//
import { useI18n } from 'vue-i18n'
const { t } = useI18n()
// //
// const showEmployeeData = ref(false) // const showEmployeeData = ref(false)
@ -66,12 +70,12 @@ const getPlatform = async () => {
platform.value = result.data.map(item => ({ value: item, label: item })); platform.value = result.data.map(item => ({ value: item, label: item }));
} else { } else {
console.error('平台信息格式错误', result) console.error('平台信息格式错误', result)
ElMessage.error('平台信息格式错误,请联系管理员')
ElMessage.error(t('elmessage.payPlatformError'))
} }
} catch (error) { } catch (error) {
console.error('获取平台信息失败:', error); console.error('获取平台信息失败:', error);
ElMessage.error('获取平台信息失败,请稍后重试');
ElMessage.error(t('elmessage.payPlatformError'))
} finally { } finally {
isLoadingPlatform.value = false isLoadingPlatform.value = false
} }
@ -81,15 +85,15 @@ const getPlatform = async () => {
const type = [ const type = [
{ {
value: '0', value: '0',
label: '充值'
label: t('clientCount.type.recharge')
}, },
{ {
value: '1', value: '1',
label: '消耗'
label: t('clientCount.type.consume')
}, },
{ {
value: '2', value: '2',
label: '退款'
label: t('clientCount.type.refund')
} }
] ]
@ -130,7 +134,7 @@ const getObj = ref({
// //
const get = async function (val) { const get = async function (val) {
if (!findMenuById(menuTree.value, permissionMapping.gold_coin_customer_bill)) { if (!findMenuById(menuTree.value, permissionMapping.gold_coin_customer_bill)) {
ElMessage.error('无此权限')
ElMessage.error(t('elmessage.noPermission'))
return return
} }
try { try {
@ -166,7 +170,7 @@ const get = async function (val) {
// //
if (!numberRegex.test(goldDetail.value.jwcode)) { if (!numberRegex.test(goldDetail.value.jwcode)) {
ElMessage.error('请检查精网号格式')
ElMessage.error(t('elmessage.checkJwcodeFormat'))
// //
return return
} }
@ -213,7 +217,7 @@ const get = async function (val) {
totalTaskGold.value = 0 totalTaskGold.value = 0
totalGoldTotal.value = 0 totalGoldTotal.value = 0
} else { } else {
ElMessage.error('获取合计数据失败')
ElMessage.error(t('elmessage.getTotalFailed'))
} }
@ -324,7 +328,7 @@ const exportExcel = async function () {
} }
const res = await API({ url: '/goldDetail/export', data: params }) const res = await API({ url: '/goldDetail/export', data: params })
if (res.code === 200) { if (res.code === 200) {
ElMessage.success('导出成功')
ElMessage.success(t('elmessage.exportSuccess'))
} }
} }
@ -370,11 +374,11 @@ const getExportList = async () => {
}); });
exportList.value = filteredData exportList.value = filteredData
} else { } else {
ElMessage.error(result.msg || '获取导出列表失败')
ElMessage.error(result.msg || t('elmessage.getExportListError'))
} }
} catch (error) { } catch (error) {
console.error('获取导出列表出错:', error) console.error('获取导出列表出错:', error)
ElMessage.error('获取导出列表失败,请稍后重试')
ElMessage.error(t('elmessage.getExportListError'))
} finally { } finally {
exportListLoading.value = false exportListLoading.value = false
} }
@ -387,7 +391,7 @@ const downloadExportFile = (item) => {
link.download = item.fileName link.download = item.fileName
link.click() link.click()
} else { } else {
ElMessage.warning('文件还在导出中,请稍后再试')
ElMessage.warning(t('elmessage.exportingInProgress'))
} }
} }
// //
@ -409,15 +413,15 @@ const getTagType = (state) => {
const getTagText = (state) => { const getTagText = (state) => {
switch (state) { switch (state) {
case 0: case 0:
return '待执行';
return t('elmessage.pendingExecution');
case 1: case 1:
return '执行中';
return t('elmessage.executing');
case 2: case 2:
return '执行完成';
return t('elmessage.executed');
case 3: case 3:
return '执行出错';
return t('elmessage.errorExecution');
default: default:
return '未知状态';
return t('elmessage.unknownStatus');
} }
} }
@ -482,25 +486,25 @@ const format3 = (num) => {
<el-col style="margin-bottom: 1vh"> <el-col style="margin-bottom: 1vh">
<div class="select"> <div class="select">
<div class="selectRow"> <div class="selectRow">
<el-text class="text" size="large">精网号</el-text>
<el-input class="selectContent" v-model="goldDetail.jwcode" placeholder="请输入精网号" clearable />
<el-text class="text" size="large">{{ $t('common.jwcode') }}</el-text>
<el-input class="selectContent" v-model="goldDetail.jwcode" :placeholder="$t('common.jwcodePlaceholder')" clearable />
</div> </div>
<div class="selectRow"> <div class="selectRow">
<el-text class="text" size="large">平台信息</el-text>
<el-select class="selectContent" v-model="goldDetail.payPlatform" placeholder="请选择平台信息" style="width: 10vw;"
<el-text class="text" size="large">{{ $t('common.payPlatform') }}</el-text>
<el-select class="selectContent" v-model="goldDetail.payPlatform" :placeholder="$t('common.payPlatformPlaceholder')" style="width: 10vw;"
clearable :loading="isLoadingPlatform"> clearable :loading="isLoadingPlatform">
<el-option v-for="item in platform" :key="item.id" :label="item.label" :value="item.value" /> <el-option v-for="item in platform" :key="item.id" :label="item.label" :value="item.value" />
</el-select> </el-select>
</div> </div>
<div class="selectRow"> <div class="selectRow">
<el-text class="textB" size="large">数量更新类型</el-text>
<el-select v-model="goldDetail.type" placeholder="请选择更新类型" clearable>
<el-text class="textB" size="large">{{ $t('common.updateType') }}</el-text>
<el-select v-model="goldDetail.type" :placeholder="$t('common.updateTypePlaceholder')" clearable>
<el-option v-for="item in type" :key="item.value" :label="item.label" :value="item.value" /> <el-option v-for="item in type" :key="item.value" :label="item.label" :value="item.value" />
</el-select> </el-select>
</div> </div>
<div class="selectRow"> <div class="selectRow">
<el-text size="large">所属地区</el-text>
<el-cascader class="selectContent" v-model="selectedMarketPath" :options="markets" placeholder="请选择所属地区"
<el-text size="large">{{ $t('common.market') }}</el-text>
<el-cascader class="selectContent" v-model="selectedMarketPath" :options="markets" :placeholder="$t('common.marketPlaceholder')"
style="width:10vw" clearable @change="handleMarketChange" /> style="width:10vw" clearable @change="handleMarketChange" />
</div> </div>
<!-- <div> <!-- <div>
@ -512,84 +516,85 @@ const format3 = (num) => {
<el-col> <el-col>
<div class="select"> <div class="select">
<div class="selectRow" style="width: 35vw"> <div class="selectRow" style="width: 35vw">
<el-text class="text" size="large">更新时间</el-text>
<el-date-picker class="selectContent" v-model="getTime" type="datetimerange" range-separator=""
start-placeholder="起始时间" end-placeholder="结束时间" style="width: 20vw" @change="handleDatePickerChange"
<el-text class="text" size="large">{{ $t('common.updateTime') }}</el-text>
<el-date-picker class="selectContent" v-model="getTime" type="datetimerange" :range-separator="$t('common.to')"
:start-placeholder="$t('common.startTime')" :end-placeholder="$t('common.endTime')" style="width: 20vw" @change="handleDatePickerChange"
:default-time="defaultTime" :disabled-date="disabledDate" /> :default-time="defaultTime" :disabled-date="disabledDate" />
<el-button @click="getToday()" style="margin-left: 0.3vw" <el-button @click="getToday()" style="margin-left: 0.3vw"
:type="activeTimeRange === 'today' ? 'primary' : ''"> :type="activeTimeRange === 'today' ? 'primary' : ''">
{{ $t('common.today') }}
</el-button> </el-button>
<el-button @click="getYesterday()" style="margin-left: 0.3vw" <el-button @click="getYesterday()" style="margin-left: 0.3vw"
:type="activeTimeRange === 'yesterday' ? 'primary' : ''">
:type="activeTimeRange === 'yesterday' ? 'primary' : ''">
{{ $t('common.yesterday') }}
</el-button> </el-button>
<el-button @click="get7Days()" style="margin-left: 0.3vw" <el-button @click="get7Days()" style="margin-left: 0.3vw"
:type="activeTimeRange === '7days' ? 'primary' : ''"> :type="activeTimeRange === '7days' ? 'primary' : ''">
近7天
{{ $t('common.last7Days') }}
</el-button> </el-button>
</div> </div>
<div class="selectRow" style="justify-content: flex-start;"> <div class="selectRow" style="justify-content: flex-start;">
<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-button type="success" @click="reset()">重置</el-button>
<el-button type="primary" @click="search()">{{ $t('common.search') }}</el-button>
<el-button type="primary" @click="exportExcel">{{ $t('common.exportExcel') }}</el-button>
<el-button type="primary" @click="openExportList">{{ $t('common.viewExportList') }}</el-button>
<el-button type="success" @click="reset()">{{ $t('common.reset') }}</el-button>
</div> </div>
</div> </div>
</el-col> </el-col>
</el-card> </el-card>
<el-card class="card2"> <el-card class="card2">
<div class="goldStatistics"> <div class="goldStatistics">
金币净变化{{ format3(totalGoldTotal || 0) }}&nbsp;&nbsp;&nbsp;&nbsp;
永久金币{{ format3(totalPermanentGold || 0) }}&nbsp;&nbsp;&nbsp;&nbsp;
免费金币{{ format3(totalFreeGold || 0) }}&nbsp;&nbsp;&nbsp;&nbsp;
任务金币{{ format3(totalTaskGold || 0) }}&nbsp;&nbsp;
<a style="color:#b1b1b1; font-size: small;">当前合计仅显示筛选范围内的金币净变化充值总额 - 消费总额 + 退款总额</a>
{{ $t('common.netGoldChange') }}{{ format3(totalGoldTotal || 0) }}&nbsp;&nbsp;&nbsp;&nbsp;
{{ $t('common.permanentGold') }}{{ format3(totalPermanentGold || 0) }}&nbsp;&nbsp;&nbsp;&nbsp;
{{ $t('common.freeGold') }}{{ format3(totalFreeGold || 0) }}&nbsp;&nbsp;&nbsp;&nbsp;
{{ $t('common.taskGold') }}{{ format3(totalTaskGold || 0) }}&nbsp;&nbsp;
<a style="color:#b1b1b1; font-size: small;">{{ $t('common.netGoldChangeTip') }}</a>
</div> </div>
<div style="height: 65vh; "> <div style="height: 65vh; ">
<el-table :data="tableData" style="height: 65vh" @sort-change="handleSortChange" :row-style="{ height: '50px' }"> <el-table :data="tableData" style="height: 65vh" @sort-change="handleSortChange" :row-style="{ height: '50px' }">
<el-table-column type="index" label="序号" width="80px" fixed="left">
<el-table-column type="index" :label="$t('common_list.id')" width="80px" fixed="left">
<template #default="scope"> <template #default="scope">
<span>{{ <span>{{
scope.$index + 1 + (getObj.pageNum - 1) * getObj.pageSize scope.$index + 1 + (getObj.pageNum - 1) * getObj.pageSize
}}</span> }}</span>
</template> </template>
</el-table-column> </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">
<el-table-column fixed="left" prop="name" :label="$t('common_list.name')" width="150" show-overflow-tooltip />
<el-table-column fixed="left" prop="jwcode" :label="$t('common_list.jwcode')" width="120" />
<el-table-column prop="market" :label="$t('common_list.market')" width="120" />
<el-table-column prop="payPlatform" :label="$t('common_list.payPlatform')" width="140" />
<el-table-column prop="type" :label="$t('common_list.type')" width="110">
<template #default="scope"> <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>
<span v-if="scope.row.type === 0">{{ $t('clientCount.recharge') }}</span>
<span v-if="scope.row.type === 1">{{ $t('clientCount.consume') }}</span>
<span v-if="scope.row.type === 2">{{ $t('clientCount.refund') }}</span>
<span v-if="scope.row.type === 3">{{ $t('clientCount.other') }}</span>
</template> </template>
</el-table-column> </el-table-column>
<el-table-column prop="sumGold" sortable="custom" label="金币数量" width="110">
<el-table-column prop="sumGold" sortable="custom" :label="$t('common_list.Gold')" width="110">
<template #default="scope"> <template #default="scope">
<span>{{ (scope.row.sumGold || 0) }}</span> <span>{{ (scope.row.sumGold || 0) }}</span>
</template> </template>
</el-table-column> </el-table-column>
<el-table-column prop="permanentGold" sortable="custom" label="永久金币" width="110">
<el-table-column prop="permanentGold" sortable="custom" :label="$t('common_list.permanentGold')" width="110">
<template #default="scope"> <template #default="scope">
<span>{{ (scope.row.permanentGold || 0) }}</span> <span>{{ (scope.row.permanentGold || 0) }}</span>
</template> </template>
</el-table-column> </el-table-column>
<el-table-column prop="freeGold" sortable="custom" label="免费金币" width="110">
<el-table-column prop="freeGold" sortable="custom" :label="$t('common_list.freeGold')" width="110">
<template #default="scope"> <template #default="scope">
<span>{{ (calculateFreeGold(scope.row) || 0) }}</span> <span>{{ (calculateFreeGold(scope.row) || 0) }}</span>
</template> </template>
</el-table-column> </el-table-column>
<el-table-column prop="taskGold" sortable="custom" label="任务金币" width="110">
<el-table-column prop="taskGold" sortable="custom" :label="$t('common_list.taskGold')" width="110">
<template #default="scope"> <template #default="scope">
<span>{{ (scope.row.taskGold || 0) }}</span> <span>{{ (scope.row.taskGold || 0) }}</span>
</template> </template>
</el-table-column> </el-table-column>
<el-table-column prop="adminName" label="提交人" width="110" />
<el-table-column prop="auditTime" sortable="custom" label="更新时间" width="210" show-overflow-tooltip>
<el-table-column prop="adminName" :label="$t('common_list.submitter')" width="110" />
<el-table-column prop="auditTime" sortable="custom" :label="$t('common_list.updateTime')" width="210" show-overflow-tooltip>
<template #default="scope"> <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')
@ -608,33 +613,35 @@ const format3 = (num) => {
</el-card> </el-card>
<!-- 导出列表弹窗 --> <!-- 导出列表弹窗 -->
<el-dialog v-model="exportListVisible" title="导出列表" width="80%">
<el-dialog v-model="exportListVisible" :title="$t('common_export.exportList')" width="80%">
<el-table :data="exportList" style="width: 100% ;height: 60vh;" :loading="exportListLoading"> <el-table :data="exportList" style="width: 100% ;height: 60vh;" :loading="exportListLoading">
<el-table-column prop="fileName" label="文件名" />
<el-table-column prop="state" label="状态">
<el-table-column prop="fileName" :label="$t('common_export.fileName')" />
<el-table-column prop="state" :label="$t('common_export.status')">
<template #default="scope"> <template #default="scope">
<el-tag :type="getTagType(scope.row.state)" :effect="scope.row.state === 3 ? 'light' : 'plain'"> <el-tag :type="getTagType(scope.row.state)" :effect="scope.row.state === 3 ? 'light' : 'plain'">
{{ getTagText(scope.row.state) }} {{ getTagText(scope.row.state) }}
</el-tag> </el-tag>
</template> </template>
</el-table-column> </el-table-column>
<el-table-column prop="createTime" label="创建时间">
<el-table-column prop="createTime" :label="$t('common_export.createTime')">
<template #default="scope"> <template #default="scope">
{{ moment(scope.row.createTime).format('YYYY-MM-DD HH:mm:ss') }} {{ moment(scope.row.createTime).format('YYYY-MM-DD HH:mm:ss') }}
</template> </template>
</el-table-column> </el-table-column>
<el-table-column label="操作">
<el-table-column :label="$t('common_export.operation')">
<template #default="scope"> <template #default="scope">
<el-button type="primary" size="small" @click="downloadExportFile(scope.row)" <el-button type="primary" size="small" @click="downloadExportFile(scope.row)"
:disabled="scope.row.state !== 2"> :disabled="scope.row.state !== 2">
下载
{{ $t('common_export.download') }}
</el-button> </el-button>
</template> </template>
</el-table-column> </el-table-column>
</el-table> </el-table>
<template #footer> <template #footer>
<div class="dialog-footer"> <div class="dialog-footer">
<el-button text @click="exportListVisible = false">关闭</el-button>
<el-button text @click="exportListVisible = false">
{{ $t('common_export.close') }}
</el-button>
</div> </div>
</template> </template>
</el-dialog> </el-dialog>

Loading…
Cancel
Save