Compare commits
310 Commits
starRating
...
moliparty
Author | SHA1 | Date | |
---|---|---|---|
25044d9e03 | |||
69ce487011 | |||
e7b2c00718 | |||
513521de5d | |||
124f1a1116 | |||
23f582f376 | |||
840b9f217b | |||
17869f42b5 | |||
cddb40925b | |||
f41eb994fb | |||
51ed92192a | |||
faaf9332e3 | |||
aafc4ae1ff | |||
e174bf30d4 | |||
b8f105e3a9 | |||
1c5d01b25f | |||
89b308e515 | |||
e027524d22 | |||
952056770b | |||
fa556a357c | |||
aff85e8e41 | |||
5751e68318 | |||
e5a3152276 | |||
ca4290ca46 | |||
05d1540982 | |||
caf9bc581c | |||
d494a54584 | |||
b2f6224b09 | |||
7540764a57 | |||
ec69266e5d | |||
215c94b127 | |||
06e0226a3f | |||
495d5c8299 | |||
75879f805b | |||
83e3df1b52 | |||
d8c34bc059 | |||
3cb72e3eb6 | |||
1790a8d9ee | |||
e1af2e132a | |||
147bc355b6 | |||
1d28c4baf6 | |||
042bdd6c97 | |||
52b180aa25 | |||
33ca187038 | |||
3d8861550a | |||
2b4d966dac | |||
6f0a26a426 | |||
b34ef8e651 | |||
477615e1ca | |||
2b5f58a505 | |||
696655ef9b | |||
cdfbde1247 | |||
e29ead6003 | |||
8a15bd6a2d | |||
6b9b090089 | |||
53c42cff24 | |||
0d0304a279 | |||
a9fd3cf179 | |||
4ce36d6571 | |||
8f2a0cb8aa | |||
143185864d | |||
b1ac2635e3 | |||
e218229168 | |||
![]() |
95ea7df9c7 | ||
![]() |
790d49b83b | ||
2f1f047b90 | |||
d604f3b914 | |||
1c080c85c7 | |||
f8748cb782 | |||
808f0e1bb7 | |||
1c4841a2e2 | |||
9c1368a211 | |||
d81a692c60 | |||
d4acd1673d | |||
a93a2814b8 | |||
3615c5baa9 | |||
0fd68950fb | |||
7859716ba5 | |||
![]() |
e40fc0b1cf | ||
366b1f8e98 | |||
9b927e4820 | |||
2560a5f064 | |||
2d648fbb70 | |||
ca590b6b74 | |||
![]() |
61fcdf378f | ||
![]() |
23d991f06f | ||
![]() |
b382dd35d3 | ||
8cf249962c | |||
![]() |
b06c935207 | ||
63d56c6501 | |||
81d317c492 | |||
e23c8aa156 | |||
dd8210fc05 | |||
5c9d6ec300 | |||
6e8f777d96 | |||
![]() |
fdabc476af | ||
![]() |
adc74fe2ae | ||
![]() |
7d04f3c012 | ||
01cac4a280 | |||
450ed68c70 | |||
b76180fc4b | |||
eaba467455 | |||
![]() |
3e7bbdf1c7 | ||
0370e62f8c | |||
27502d1969 | |||
b5ca58af58 | |||
![]() |
762cd12b74 | ||
952270a147 | |||
07b291fe57 | |||
![]() |
f433e4aaa8 | ||
![]() |
05db254040 | ||
![]() |
a7ea9e0296 | ||
![]() |
f21b0b6bb2 | ||
![]() |
7e381e1155 | ||
![]() |
90da1d4674 | ||
![]() |
239e4c4ed8 | ||
![]() |
63b9eec8c8 | ||
![]() |
799f767e0d | ||
![]() |
fdf71c854e | ||
![]() |
18dd168f47 | ||
![]() |
cd56f5b67a | ||
![]() |
f0e6794903 | ||
![]() |
fdeb7df3ab | ||
![]() |
e19b716a67 | ||
![]() |
033de46bca | ||
![]() |
90bac1464f | ||
![]() |
bbf73880ef | ||
![]() |
bed9c1b614 | ||
![]() |
5704175cc6 | ||
![]() |
80c0c1d15c | ||
![]() |
091ec24d86 | ||
![]() |
b18dc26052 | ||
![]() |
a77d6757cd | ||
![]() |
499687fc5a | ||
![]() |
4b78298651 | ||
![]() |
47ace88c31 | ||
![]() |
ea39538887 | ||
![]() |
7eed754f42 | ||
![]() |
851531a75b | ||
![]() |
6f65e9bc6c | ||
![]() |
a877ceea36 | ||
![]() |
3b39dcb51c | ||
![]() |
69f5c17e84 | ||
![]() |
945b9a3a0f | ||
![]() |
79de27556e | ||
![]() |
8608d7bc65 | ||
![]() |
f8c9fd4a90 | ||
![]() |
aed3b73782 | ||
![]() |
42ee226cc1 | ||
![]() |
e387d93d8e | ||
![]() |
0aea2bc1cc | ||
![]() |
b2befa8a9f | ||
![]() |
1be71a3d65 | ||
![]() |
a45fb8f20f | ||
![]() |
359a34c955 | ||
![]() |
9986b102f1 | ||
![]() |
476f769142 | ||
![]() |
06d0613981 | ||
![]() |
f0ac7b4f6c | ||
![]() |
81065e2e4c | ||
![]() |
7d768ff9e9 | ||
![]() |
e20c7cb32b | ||
![]() |
80c6fb33f4 | ||
![]() |
a969dca1a9 | ||
![]() |
a22e4b8e6e | ||
![]() |
d694a8ebee | ||
![]() |
ffce044dd9 | ||
![]() |
94a5d4442c | ||
![]() |
3ae6a82291 | ||
![]() |
deafdd3455 | ||
![]() |
b0583d97a1 | ||
![]() |
45b5da6850 | ||
![]() |
2fd36936c7 | ||
![]() |
22036ad0a1 | ||
![]() |
f429da9a16 | ||
![]() |
67b3922dd4 | ||
![]() |
b9b81a6aa6 | ||
![]() |
a57988d54e | ||
![]() |
ed2aef45d9 | ||
![]() |
a7e99df44f | ||
![]() |
eec99571e2 | ||
![]() |
e79c2c5194 | ||
![]() |
a71361ff10 | ||
![]() |
800d82931f | ||
![]() |
1720052432 | ||
![]() |
e4d2b06870 | ||
![]() |
0e11c133c1 | ||
![]() |
a16a1c0d8c | ||
![]() |
66d35f787c | ||
![]() |
bd59f9e22f | ||
![]() |
c50f26c478 | ||
![]() |
75719bd505 | ||
![]() |
80319fbd0d | ||
![]() |
b3b6e4ad47 | ||
![]() |
d0b9c6e89c | ||
![]() |
cc6212382f | ||
![]() |
dad854f161 | ||
![]() |
eba06413b3 | ||
![]() |
6533005018 | ||
![]() |
efdb076730 | ||
![]() |
d17a22cd89 | ||
![]() |
3f1b6758a9 | ||
![]() |
5a1ebf0e59 | ||
![]() |
28761cd3f7 | ||
![]() |
f774c4a6f6 | ||
![]() |
c20c5693fe | ||
![]() |
54e61b6185 | ||
![]() |
a9ee446d2b | ||
![]() |
12fa37fc1b | ||
![]() |
1f7bd0361d | ||
![]() |
cea2b471d8 | ||
![]() |
47ce14c348 | ||
![]() |
8d65cb5b95 | ||
![]() |
9cd5f79a99 | ||
![]() |
715845cd66 | ||
![]() |
2f2b856435 | ||
![]() |
f5619e8839 | ||
![]() |
3989182047 | ||
6ca23f1254 | |||
![]() |
28a1006402 | ||
![]() |
ff349c0829 | ||
![]() |
19d8ed1fc4 | ||
![]() |
ded7c2154a | ||
![]() |
00a87a713e | ||
![]() |
eac2e3b2b9 | ||
![]() |
871f604038 | ||
![]() |
388ddac3c9 | ||
![]() |
8fe40d2f42 | ||
![]() |
91af330db5 | ||
![]() |
0c0bc701c2 | ||
![]() |
1f825cc240 | ||
![]() |
e710c02d3d | ||
![]() |
19e048873d | ||
![]() |
194511b212 | ||
![]() |
fc1aa2f2e0 | ||
![]() |
9e17b32e4e | ||
![]() |
f09d2cef21 | ||
![]() |
8fc88a6290 | ||
![]() |
e666ee905a | ||
![]() |
133b9b96f4 | ||
![]() |
95626880e2 | ||
![]() |
1ab2985da7 | ||
![]() |
3ba6f3e428 | ||
![]() |
5d04652a1e | ||
![]() |
af6f1a922b | ||
![]() |
3256cf38c4 | ||
![]() |
4f86375fa3 | ||
![]() |
56a23bfe2e | ||
![]() |
3d68691137 | ||
![]() |
5040d0a014 | ||
![]() |
e67e5094f5 | ||
![]() |
31c632a73a | ||
![]() |
068d992c4b | ||
![]() |
922444d958 | ||
![]() |
a09809b5ae | ||
![]() |
87e5e10ceb | ||
![]() |
4008f36015 | ||
![]() |
06daf24fff | ||
![]() |
1f604e9431 | ||
![]() |
651eb7a14e | ||
![]() |
38fba3eca3 | ||
![]() |
d93fa6f57b | ||
![]() |
00fdf09920 | ||
![]() |
3866ffa9c4 | ||
![]() |
fddedfc4b4 | ||
![]() |
4ba6076332 | ||
![]() |
2547caeac8 | ||
![]() |
e8836d1223 | ||
![]() |
3dfff36aaa | ||
![]() |
64af9bc602 | ||
![]() |
1a5f2f676c | ||
![]() |
179f0718e6 | ||
![]() |
f3c1518fdf | ||
![]() |
662637a6e9 | ||
![]() |
af2a393a65 | ||
![]() |
519f07f4cf | ||
![]() |
44db1b535c | ||
![]() |
186504f0fb | ||
![]() |
45c3f1fd92 | ||
![]() |
3bc87809e1 | ||
![]() |
5323ad7241 | ||
![]() |
8fe6b24b0f | ||
![]() |
99d2c67087 | ||
![]() |
e31f755216 | ||
![]() |
a73f806d92 | ||
![]() |
fa1138dc03 | ||
![]() |
6191f1a3f5 | ||
![]() |
50919fd508 | ||
![]() |
8dc17b87ad | ||
![]() |
d420979350 | ||
![]() |
63c7f5ed80 | ||
![]() |
eba1d654d3 | ||
![]() |
09dc6f3645 | ||
![]() |
5338943b9b | ||
![]() |
1b47d48d0a | ||
![]() |
3659f582d5 | ||
![]() |
ed17e47390 | ||
![]() |
84e86deb73 | ||
![]() |
0751f06ec4 | ||
![]() |
4bc596e3d8 | ||
![]() |
1683225a72 | ||
![]() |
c904646f4a | ||
![]() |
98d5f20be7 | ||
![]() |
924971a290 | ||
![]() |
f5b721a6f8 | ||
![]() |
47c819433b | ||
![]() |
3e9a2bfb60 | ||
![]() |
ce2a63c864 | ||
![]() |
0e5857873c | ||
![]() |
26d422ecda |
@@ -1,2 +1,2 @@
|
||||
VUE_APP_API_BASE_URL='http://beta.admin.pekolive.com'
|
||||
VUE_APP_API_BASE_URL='http://localhost:8080'
|
||||
VUE_APP_DEBUG_MODE=true
|
@@ -1,2 +1,2 @@
|
||||
VUE_APP_API_BASE_URL=http://admin.web.pekolive.com
|
||||
VUE_APP_API_BASE_URL=http://admin.web.moliparty.com
|
||||
VUE_APP_DEBUG_MODE=false
|
9
auto-imports.d.ts
vendored
Normal file
9
auto-imports.d.ts
vendored
Normal file
@@ -0,0 +1,9 @@
|
||||
/* eslint-disable */
|
||||
/* prettier-ignore */
|
||||
// @ts-nocheck
|
||||
// noinspection JSUnusedGlobalSymbols
|
||||
// Generated by unplugin-auto-import
|
||||
export {}
|
||||
declare global {
|
||||
|
||||
}
|
47
components.d.ts
vendored
Normal file
47
components.d.ts
vendored
Normal file
@@ -0,0 +1,47 @@
|
||||
/* eslint-disable */
|
||||
/* prettier-ignore */
|
||||
// @ts-nocheck
|
||||
// Generated by unplugin-vue-components
|
||||
// Read more: https://github.com/vuejs/core/pull/3399
|
||||
export {}
|
||||
|
||||
declare module 'vue' {
|
||||
export interface GlobalComponents {
|
||||
ElButton: typeof import('element-plus/es')['ElButton']
|
||||
ElCheckbox: typeof import('element-plus/es')['ElCheckbox']
|
||||
ElCheckboxGroup: typeof import('element-plus/es')['ElCheckboxGroup']
|
||||
ElCol: typeof import('element-plus/es')['ElCol']
|
||||
ElConfigProvider: typeof import('element-plus/es')['ElConfigProvider']
|
||||
ElDatePicker: typeof import('element-plus/es')['ElDatePicker']
|
||||
ElDialog: typeof import('element-plus/es')['ElDialog']
|
||||
ElForm: typeof import('element-plus/es')['ElForm']
|
||||
ElFormItem: typeof import('element-plus/es')['ElFormItem']
|
||||
ElIcon: typeof import('element-plus/es')['ElIcon']
|
||||
ElImage: typeof import('element-plus/es')['ElImage']
|
||||
ElInput: typeof import('element-plus/es')['ElInput']
|
||||
ElOption: typeof import('element-plus/es')['ElOption']
|
||||
ElPagination: typeof import('element-plus/es')['ElPagination']
|
||||
ElPopover: typeof import('element-plus/es')['ElPopover']
|
||||
ElRadio: typeof import('element-plus/es')['ElRadio']
|
||||
ElRadioGroup: typeof import('element-plus/es')['ElRadioGroup']
|
||||
ElRate: typeof import('element-plus/es')['ElRate']
|
||||
ElSelect: typeof import('element-plus/es')['ElSelect']
|
||||
ElSwitch: typeof import('element-plus/es')['ElSwitch']
|
||||
ElTable: typeof import('element-plus/es')['ElTable']
|
||||
ElTableColumn: typeof import('element-plus/es')['ElTableColumn']
|
||||
ElTabPane: typeof import('element-plus/es')['ElTabPane']
|
||||
ElTabs: typeof import('element-plus/es')['ElTabs']
|
||||
ElTag: typeof import('element-plus/es')['ElTag']
|
||||
ElText: typeof import('element-plus/es')['ElText']
|
||||
ElUpload: typeof import('element-plus/es')['ElUpload']
|
||||
Footer: typeof import('./src/components/footer/index.vue')['default']
|
||||
Header: typeof import('./src/components/header/index.vue')['default']
|
||||
Maintainer: typeof import('./src/components/maintainer/index.vue')['default']
|
||||
RouterLink: typeof import('vue-router')['RouterLink']
|
||||
RouterView: typeof import('vue-router')['RouterView']
|
||||
TablePagination: typeof import('./src/components/common/TablePagination.vue')['default']
|
||||
}
|
||||
export interface ComponentCustomProperties {
|
||||
vLoading: typeof import('element-plus/es')['ElLoadingDirective']
|
||||
}
|
||||
}
|
@@ -34,3 +34,11 @@ export default {
|
||||
computed: {},
|
||||
};
|
||||
</script>
|
||||
<style>
|
||||
.modal-open{
|
||||
overflow-y: scroll;
|
||||
}
|
||||
body{
|
||||
padding-right:0 !important;
|
||||
}
|
||||
</style>
|
||||
|
17
src/api/AnalysisOperatingGuild/AnalysisOperatingGuild.js
Normal file
17
src/api/AnalysisOperatingGuild/AnalysisOperatingGuild.js
Normal file
@@ -0,0 +1,17 @@
|
||||
import request from "@/utils/request";
|
||||
// 列表
|
||||
export const getGuildPartitionPageWeekStat = query => {
|
||||
return request({
|
||||
url: '/admin/guildPartition/pageWeekStat',
|
||||
method: 'get',
|
||||
params: query
|
||||
});
|
||||
};
|
||||
// 备注
|
||||
export const guildPartitionMark = query => {
|
||||
return request({
|
||||
url: '/admin/guildPartition/mark',
|
||||
method: 'post',
|
||||
params: query
|
||||
});
|
||||
};
|
75
src/api/BD/IdentitySettings.js
Normal file
75
src/api/BD/IdentitySettings.js
Normal file
@@ -0,0 +1,75 @@
|
||||
import request from '@/utils/request';
|
||||
// 列表
|
||||
export const getBdList = query => {
|
||||
return request({
|
||||
url: '/admin/bd/list',
|
||||
method: 'get',
|
||||
params: query
|
||||
});
|
||||
};
|
||||
// 添加
|
||||
|
||||
export const addBdInfo = query => {
|
||||
return request({
|
||||
url: '/admin/bd/add',
|
||||
method: 'post',
|
||||
params: query
|
||||
});
|
||||
};
|
||||
// 移除
|
||||
export const removeBdInfo = query => {
|
||||
return request({
|
||||
url: '/admin/bd/remove',
|
||||
method: 'post',
|
||||
params: query
|
||||
});
|
||||
};
|
||||
// 获取用户信息
|
||||
export const getByErbanNo = query => {
|
||||
return request({
|
||||
url: '/admin/user/getByErbanNo',
|
||||
method: 'get',
|
||||
params: query
|
||||
});
|
||||
};
|
||||
// 获取分区下的国家
|
||||
export const getlistByPartitionId = query => {
|
||||
return request({
|
||||
url: '/admin/regionInfo/listByPartitionId',
|
||||
method: 'get',
|
||||
params: query
|
||||
});
|
||||
};
|
||||
// 公会详情
|
||||
export const getGuildsDetail = query => {
|
||||
return request({
|
||||
url: '/admin/bd/guilds',
|
||||
method: 'get',
|
||||
params: query
|
||||
});
|
||||
};
|
||||
// 解绑公会
|
||||
export const operatorGuildUnBound = query => {
|
||||
return request({
|
||||
url: '/admin/bd/guildUnBound',
|
||||
method: 'post',
|
||||
params: query
|
||||
});
|
||||
};
|
||||
|
||||
// 管理列表
|
||||
export const getBdDataList = query => {
|
||||
return request({
|
||||
url: '/admin/bdData/list',
|
||||
method: 'get',
|
||||
params: query
|
||||
});
|
||||
};
|
||||
// 管理列表-详情
|
||||
export const getBdDetailGuildsList = query => {
|
||||
return request({
|
||||
url: '/admin/bdData/guilds',
|
||||
method: 'get',
|
||||
params: query
|
||||
});
|
||||
};
|
@@ -0,0 +1,27 @@
|
||||
|
||||
import request from "@/utils/request";
|
||||
// 日任务奖励领取详情
|
||||
export const getDailyTaskCoinRecvNums = query => {
|
||||
return request({
|
||||
url: '/admin/dailyTask/coinRecvNums',
|
||||
method: 'get',
|
||||
params: query
|
||||
});
|
||||
};
|
||||
// 日任务奖励领取详情-明细
|
||||
export const getDailyTaskcoinRecvDetail = query => {
|
||||
return request({
|
||||
url: '/admin/dailyTask/coinRecvDetail',
|
||||
method: 'get',
|
||||
params: query
|
||||
});
|
||||
};
|
||||
// 日任务奖励领取详情-明细-导出
|
||||
export const exportMiniGameDetail = query => {
|
||||
return request({
|
||||
url: `/admin/dailyTask/coinRecvDetailExport`,
|
||||
method: 'get',
|
||||
params: query,
|
||||
responseType: 'blob'
|
||||
});
|
||||
}
|
58
src/api/EmojiManagement/EmojiManagement.js
Normal file
58
src/api/EmojiManagement/EmojiManagement.js
Normal file
@@ -0,0 +1,58 @@
|
||||
import request from '@/utils/request';
|
||||
// 表情包Tab列表
|
||||
export const getFaceTabNewList = query => {
|
||||
return request({
|
||||
url: '/faceTabNew/list',
|
||||
method: 'get',
|
||||
params: query
|
||||
});
|
||||
};
|
||||
// Tab保存编辑
|
||||
export const saveOrUpdateFaceTabNew = query => {
|
||||
return request({
|
||||
url: '/faceTabNew/saveOrUpdate',
|
||||
method: 'post',
|
||||
params: query
|
||||
});
|
||||
};
|
||||
// Tab删除
|
||||
export const deleteFaceTabNew = query => {
|
||||
return request({
|
||||
url: '/faceTabNew/delete',
|
||||
method: 'post',
|
||||
params: query
|
||||
});
|
||||
};
|
||||
|
||||
// 表情包列表
|
||||
export const getFaceNewList = query => {
|
||||
return request({
|
||||
url: '/faceNew/list',
|
||||
method: 'get',
|
||||
params: query
|
||||
});
|
||||
};
|
||||
// 保存编辑
|
||||
export const saveOrUpdateFaceNew = query => {
|
||||
return request({
|
||||
url: '/faceNew/saveOrUpdate',
|
||||
method: 'post',
|
||||
params: query
|
||||
});
|
||||
};
|
||||
// 表情包tab列表
|
||||
export const getFaceNewTabList = query => {
|
||||
return request({
|
||||
url: '/faceNew/tab/list',
|
||||
method: 'get',
|
||||
params: query
|
||||
});
|
||||
};
|
||||
// 删除表情包
|
||||
export const deleteFaceNew = query => {
|
||||
return request({
|
||||
url: '/faceNew/delete',
|
||||
method: 'DELETE',
|
||||
params: query
|
||||
});
|
||||
};
|
25
src/api/OperationLuckyDataQuery/OperationLuckyDataQuery.js
Normal file
25
src/api/OperationLuckyDataQuery/OperationLuckyDataQuery.js
Normal file
@@ -0,0 +1,25 @@
|
||||
import request from "@/utils/request";
|
||||
// 运营幸运数据查询-列表
|
||||
export const getOperatorPersonalList = query => {
|
||||
return request({
|
||||
url: '/admin/lucky24/record/operatorPersonal',
|
||||
method: 'get',
|
||||
params: query
|
||||
});
|
||||
};
|
||||
// 运营游戏数据查询-列表
|
||||
export const getGameDataUserTotalALL = query => {
|
||||
return request({
|
||||
url: '/admin/gamedata/userTotalALL',
|
||||
method: 'get',
|
||||
params: query
|
||||
});
|
||||
};
|
||||
// 游戏列表
|
||||
export const getGameAllList = query => {
|
||||
return request({
|
||||
url: '/admin/game/allList',
|
||||
method: 'get',
|
||||
params: query
|
||||
});
|
||||
};
|
@@ -0,0 +1,17 @@
|
||||
import request from "@/utils/request";
|
||||
// 列表
|
||||
export const getRechargeAgentStatList = query => {
|
||||
return request({
|
||||
url: '/admin/rechargeAgentStat/page',
|
||||
method: 'get',
|
||||
params: query
|
||||
});
|
||||
};
|
||||
// 导出
|
||||
export const exportRechargeAgentStat = query => {
|
||||
return request({
|
||||
url: '/admin/rechargeAgentStat/export',
|
||||
method: 'post',
|
||||
params: query
|
||||
});
|
||||
};
|
@@ -0,0 +1,83 @@
|
||||
import request from "@/utils/request";
|
||||
// 负责人列表
|
||||
export const getGuildOperatorList = query => {
|
||||
return request({
|
||||
url: '/admin/guildOperator/page',
|
||||
method: 'get',
|
||||
params: query
|
||||
});
|
||||
};
|
||||
// 获取分区下的国家
|
||||
export const getlistByPartitionId = query => {
|
||||
return request({
|
||||
url: '/admin/regionInfo/listByPartitionId',
|
||||
method: 'get',
|
||||
params: query
|
||||
});
|
||||
};
|
||||
// 获取全量后台用户列表
|
||||
export const getUserListAll = query => {
|
||||
return request({
|
||||
url: '/admin/user/listAll',
|
||||
method: 'get',
|
||||
params: query
|
||||
});
|
||||
};
|
||||
// 保存
|
||||
export const saveGuildOperator = query => {
|
||||
return request({
|
||||
headers: { "Content-Type": 'application/json;charset=UTF-8' },
|
||||
url: '/admin/guildOperator/save',
|
||||
method: 'post',
|
||||
data: query
|
||||
});
|
||||
};
|
||||
// 获取 周期列表
|
||||
export const familyMemberWeekLevelRewardListCycleDate = query => {
|
||||
return request({
|
||||
url: '/admin/familyMemberWeekLevelReward/listCycleDate',
|
||||
method: 'get',
|
||||
params: query
|
||||
});
|
||||
};
|
||||
// 获取 负责人全部列表
|
||||
export const getGuildOperatorListAll = query => {
|
||||
return request({
|
||||
url: '/admin/guildOperator/listAll',
|
||||
method: 'get',
|
||||
params: query
|
||||
});
|
||||
};
|
||||
|
||||
// 获取 运营流水分析列表
|
||||
export const getGuildOperatorPageWeekStatList = query => {
|
||||
return request({
|
||||
url: '/admin/guildOperator/pageWeekStat',
|
||||
method: 'get',
|
||||
params: query
|
||||
});
|
||||
};
|
||||
// 获取 公会运营负责人变更记录
|
||||
export const getGuildOperatorHistoryList = query => {
|
||||
return request({
|
||||
url: '/admin/guildOperatorHistory/page',
|
||||
method: 'get',
|
||||
params: query
|
||||
});
|
||||
};
|
||||
// 获取 运营流水分析 - 公会明细
|
||||
export const getPageWeekStatDetail = query => {
|
||||
return request({
|
||||
url: '/admin/guildOperator/pageWeekStatDetail',
|
||||
method: 'get',
|
||||
params: query
|
||||
});
|
||||
};
|
||||
// 获取 运营流水分析 - 公会明细 - 添加备注
|
||||
export const guildOperatorMarkDetail = query => {
|
||||
return request({
|
||||
url: '/admin/guildOperator/markDetail',
|
||||
method: 'post',
|
||||
params: query
|
||||
});
|
||||
};
|
69
src/api/SalaryDetails/SalaryDetails.js
Normal file
69
src/api/SalaryDetails/SalaryDetails.js
Normal file
@@ -0,0 +1,69 @@
|
||||
import request from '@/utils/request';
|
||||
|
||||
// 查询公会成员薪资明细
|
||||
export const getGuildPolicyQueryMemberPage = query => {
|
||||
return request({
|
||||
url: '/admin/guildPolicy2/queryMemberPage',
|
||||
method: 'get',
|
||||
params: query
|
||||
});
|
||||
};
|
||||
// 查询公会成员薪资明细导出
|
||||
export const exportQueryMember = query => {
|
||||
return request({
|
||||
url: `/admin/guildPolicy2/queryMemberExport`,
|
||||
method: 'get',
|
||||
params: query,
|
||||
responseType: 'blob'
|
||||
});
|
||||
}
|
||||
// 周期下拉
|
||||
export const getGuildPolicyCycleDates = query => {
|
||||
return request({
|
||||
url: '/admin/guildPolicy2/cycleDates',
|
||||
method: 'get',
|
||||
params: query
|
||||
});
|
||||
};
|
||||
// 有效天数明细
|
||||
export const getGuildPolicyMicDayDetail = query => {
|
||||
return request({
|
||||
url: '/admin/guildPolicy2/micDayDetail',
|
||||
method: 'get',
|
||||
params: query
|
||||
});
|
||||
};
|
||||
// 钻石清空记录列表
|
||||
export const getGuildPolicyClearDiamond = query => {
|
||||
return request({
|
||||
url: '/admin/guildPolicy2ClearDiamond',
|
||||
method: 'get',
|
||||
params: query
|
||||
});
|
||||
};
|
||||
// 查询公会成员薪资明细导出
|
||||
export const exportClearDiamond = query => {
|
||||
return request({
|
||||
url: `/admin/guildPolicy2ClearDiamond/export`,
|
||||
method: 'get',
|
||||
params: query,
|
||||
responseType: 'blob'
|
||||
});
|
||||
}
|
||||
// 紫水晶清空记录列表
|
||||
export const getGuildAmethystClearRecordList = query => {
|
||||
return request({
|
||||
url: '/admin/guild/guildCrystal/page',
|
||||
method: 'get',
|
||||
params: query
|
||||
});
|
||||
};
|
||||
// 紫水晶清空记录列表 - 导出
|
||||
export const exportClearAmethyst = query => {
|
||||
return request({
|
||||
url: '/admin/guild/guildCrystal/export',
|
||||
method: 'get',
|
||||
params: query,
|
||||
responseType: 'blob'
|
||||
});
|
||||
};
|
25
src/api/SsGuild/LuckyNumber.js
Normal file
25
src/api/SsGuild/LuckyNumber.js
Normal file
@@ -0,0 +1,25 @@
|
||||
import request from '@/utils/request';
|
||||
// 配置获取
|
||||
export const getConfig = query => {
|
||||
return request({
|
||||
url: '/admin/luckyNumber/getConfig',
|
||||
method: 'get',
|
||||
params: query
|
||||
});
|
||||
};
|
||||
// 修改配置
|
||||
export const updateConfig = query => {
|
||||
return request({
|
||||
url: '/admin/luckyNumber/update',
|
||||
method: 'post',
|
||||
data: query
|
||||
});
|
||||
};
|
||||
// 提交记录
|
||||
export const getluckyNumberList = query => {
|
||||
return request({
|
||||
url: '/admin/luckyNumber/list',
|
||||
method: 'get',
|
||||
params: query
|
||||
});
|
||||
};
|
75
src/api/SsGuild/rewardConfiguration.js
Normal file
75
src/api/SsGuild/rewardConfiguration.js
Normal file
@@ -0,0 +1,75 @@
|
||||
import request from '@/utils/request';
|
||||
// 奖励配置
|
||||
// 活动列表
|
||||
export const getActivitylList = query => {
|
||||
return request({
|
||||
url: '/activityH5LevelExp/activityType',
|
||||
method: 'get',
|
||||
params: query
|
||||
});
|
||||
};
|
||||
// 等级列表
|
||||
export const getLevelList = query => {
|
||||
return request({
|
||||
url: '/activityH5LevelExp/select/list',
|
||||
method: 'get',
|
||||
params: query
|
||||
});
|
||||
};
|
||||
// 奖励查询列表
|
||||
export const getAwardList = query => {
|
||||
return request({
|
||||
url: '/activityH5LevelAward/list',
|
||||
method: 'get',
|
||||
params: query
|
||||
});
|
||||
};
|
||||
// 奖励类型
|
||||
export const getAwardTypeList = query => {
|
||||
return request({
|
||||
url: '/activityH5LevelExp/awardType',
|
||||
method: 'get',
|
||||
params: query
|
||||
});
|
||||
};
|
||||
// 新增
|
||||
export const saveAwardList = query => {
|
||||
return request({
|
||||
url: '/activityH5LevelAward/save',
|
||||
method: 'post',
|
||||
params: query
|
||||
});
|
||||
};
|
||||
// 删除
|
||||
export const delAwardList = query => {
|
||||
return request({
|
||||
url: '/activityH5LevelAward/del',
|
||||
method: 'post',
|
||||
params: query
|
||||
});
|
||||
};
|
||||
// 更新
|
||||
export const updateAwardList = query => {
|
||||
return request({
|
||||
url: '/activityH5LevelAward/update',
|
||||
method: 'post',
|
||||
params: query
|
||||
});
|
||||
}
|
||||
// 奖励发放记录-列表
|
||||
export const getAwardRecordList = query => {
|
||||
return request({
|
||||
url: '/activityH5AwardRecord/list',
|
||||
method: 'get',
|
||||
params: query
|
||||
});
|
||||
};
|
||||
// 导出
|
||||
export const exportActivityAwardRecord = query => {
|
||||
return request({
|
||||
url: `/activityH5AwardRecord/export`,
|
||||
method: 'post',
|
||||
params: query,
|
||||
responseType: 'blob'
|
||||
});
|
||||
};
|
@@ -31,4 +31,12 @@ export const vipSendSend = query => {
|
||||
method: 'post',
|
||||
params: query
|
||||
});
|
||||
};
|
||||
// 赠送VIP接口 - 客服
|
||||
export const vipSendSendCustomerSend = query => {
|
||||
return request({
|
||||
url: '/vipSend/customerSend',
|
||||
method: 'post',
|
||||
params: query
|
||||
});
|
||||
};
|
42
src/api/basicActivityData/basicActivityData.js
Normal file
42
src/api/basicActivityData/basicActivityData.js
Normal file
@@ -0,0 +1,42 @@
|
||||
import request from '@/utils/request';
|
||||
// 活动列表
|
||||
export const getActKeysList = query => {
|
||||
return request({
|
||||
url: '/admin/activityDayTotal/actKeys',
|
||||
method: 'get',
|
||||
params: query
|
||||
});
|
||||
};
|
||||
// 列表
|
||||
export const getDataList = query => {
|
||||
return request({
|
||||
url: '/admin/activityDayTotal/list',
|
||||
method: 'get',
|
||||
params: query
|
||||
});
|
||||
};
|
||||
// 新用户列表
|
||||
export const getNewUsersList = query => {
|
||||
return request({
|
||||
url: '/admin/activityDayTotal/newUsers',
|
||||
method: 'get',
|
||||
params: query
|
||||
});
|
||||
};
|
||||
// 榜单列表
|
||||
export const getRankList = query => {
|
||||
return request({
|
||||
url: '/admin/activityDayTotal/rankList',
|
||||
method: 'get',
|
||||
params: query
|
||||
});
|
||||
};
|
||||
// 导出
|
||||
export const exportActivityDayTotal = query => {
|
||||
return request({
|
||||
url: `/admin/activityDayTotal/export`,
|
||||
method: 'post',
|
||||
params: query,
|
||||
responseType: 'blob'
|
||||
});
|
||||
}
|
41
src/api/block/block.js
Normal file
41
src/api/block/block.js
Normal file
@@ -0,0 +1,41 @@
|
||||
import request from '@/utils/request';
|
||||
|
||||
export const page = query => {
|
||||
return request({
|
||||
url: '/admin/block/page',
|
||||
method: 'get',
|
||||
params: query
|
||||
});
|
||||
};
|
||||
|
||||
export const get = query => {
|
||||
return request({
|
||||
url: '/admin/block/get',
|
||||
method: 'get',
|
||||
params: query
|
||||
});
|
||||
};
|
||||
|
||||
export const save = query => {
|
||||
return request({
|
||||
url: '/admin/block/save',
|
||||
method: 'post',
|
||||
params: query
|
||||
});
|
||||
};
|
||||
|
||||
export const update = query => {
|
||||
return request({
|
||||
url: '/admin/block/update',
|
||||
method: 'post',
|
||||
params: query
|
||||
});
|
||||
};
|
||||
|
||||
export const del = query => {
|
||||
return request({
|
||||
url: '/admin/block/delete',
|
||||
method: 'post',
|
||||
params: query
|
||||
});
|
||||
};
|
@@ -1,15 +1,6 @@
|
||||
import request from '@/utils/request';
|
||||
import { genQueryParam } from '@/utils/maintainer';
|
||||
|
||||
// 分区接口
|
||||
export const listPartitionInfo = query => {
|
||||
return request({
|
||||
url: '/partition/listPartitionInfo',
|
||||
method: 'get',
|
||||
params: query
|
||||
});
|
||||
};
|
||||
|
||||
// 邀请移除记录
|
||||
export const pageOperateRecord = query => {
|
||||
return request({
|
||||
|
26
src/api/boom/roomActivityApplication.js
Normal file
26
src/api/boom/roomActivityApplication.js
Normal file
@@ -0,0 +1,26 @@
|
||||
import request from '@/utils/request';
|
||||
import { genQueryParam } from '@/utils/maintainer';
|
||||
// 房间活动申请列表
|
||||
export const getListEvent = query => {
|
||||
return request({
|
||||
url: '/userevent/listEvent',
|
||||
method: 'get',
|
||||
params: query
|
||||
});
|
||||
};
|
||||
// 房间活动申请列表-审核
|
||||
export const operatorListEvent = query => {
|
||||
return request({
|
||||
url: '/userevent/operator',
|
||||
method: 'post',
|
||||
params: query
|
||||
});
|
||||
};
|
||||
// 房间活动数据统计 -列表
|
||||
export const getUserEventDataList = query => {
|
||||
return request({
|
||||
url: '/userEventData/list',
|
||||
method: 'get',
|
||||
params: query
|
||||
});
|
||||
};
|
68
src/api/bravoGift/bravoGift.js
Normal file
68
src/api/bravoGift/bravoGift.js
Normal file
@@ -0,0 +1,68 @@
|
||||
import request from '@/utils/request';
|
||||
|
||||
// 奖池拉框
|
||||
export const listType = query => {
|
||||
return request({
|
||||
url: '/admin/bravo/pool/listType',
|
||||
method: 'get',
|
||||
params: query
|
||||
});
|
||||
};
|
||||
// 池子列表
|
||||
export const list = query => {
|
||||
return request({
|
||||
url: '/admin/bravo/pool/list',
|
||||
method: 'get',
|
||||
params: query
|
||||
});
|
||||
};
|
||||
// 保存池子
|
||||
export const save = query => {
|
||||
return request({
|
||||
headers: { "Content-Type": 'application/json;charset=UTF-8' },
|
||||
url: '/admin/bravo/pool/save',
|
||||
method: 'post',
|
||||
data: query
|
||||
});
|
||||
};
|
||||
// 基础配置
|
||||
export const getConfig = query => {
|
||||
return request({
|
||||
url: '/admin/bravo/config/getConfig',
|
||||
method: 'get',
|
||||
params: query
|
||||
});
|
||||
};
|
||||
// 基础配置-修改
|
||||
export const updateSet = query => {
|
||||
return request({
|
||||
headers: { "Content-Type": 'application/json;charset=UTF-8' },
|
||||
url: '/admin/bravo/config/update',
|
||||
method: 'post',
|
||||
data: query
|
||||
});
|
||||
};
|
||||
// 赠送用户
|
||||
export const updateUserMulti = query => {
|
||||
return request({
|
||||
url: '/admin/bravo/config/updateUserMulti',
|
||||
method: 'post',
|
||||
params: query
|
||||
});
|
||||
};
|
||||
// 个人数据
|
||||
export const personal = query => {
|
||||
return request({
|
||||
url: '/admin/bravo/record/personal',
|
||||
method: 'get',
|
||||
params: query
|
||||
});
|
||||
};
|
||||
// 汇总
|
||||
export const platform = query => {
|
||||
return request({
|
||||
url: '/admin/bravo/record/platform',
|
||||
method: 'get',
|
||||
params: query
|
||||
});
|
||||
};
|
13
src/api/dailyCoinStatistics/dailyCoinStatistics.js
Normal file
13
src/api/dailyCoinStatistics/dailyCoinStatistics.js
Normal file
@@ -0,0 +1,13 @@
|
||||
import request from '@/utils/request';
|
||||
import qs from 'qs';
|
||||
import { genQueryParam } from '@/utils/maintainer';
|
||||
|
||||
// ==================================每日数据====================================
|
||||
// 列表
|
||||
export const diamondStatList = query => {
|
||||
return request({
|
||||
url: '/admin/diamondStat/list',
|
||||
method: 'get',
|
||||
params: query
|
||||
});
|
||||
};
|
10
src/api/email/emailRecord.js
Normal file
10
src/api/email/emailRecord.js
Normal file
@@ -0,0 +1,10 @@
|
||||
import request from '@/utils/request';
|
||||
import {genQueryParam} from "@/utils/maintainer";
|
||||
|
||||
export const pageRecord = query => {
|
||||
return request({
|
||||
url: '/admin/emailRecord/page',
|
||||
method: 'get',
|
||||
params: query
|
||||
});
|
||||
};
|
69
src/api/gameSummary/gameSummary.js
Normal file
69
src/api/gameSummary/gameSummary.js
Normal file
@@ -0,0 +1,69 @@
|
||||
import request from '@/utils/request';
|
||||
import {genQueryParam} from "@/utils/maintainer";
|
||||
|
||||
export const gameList = query => {
|
||||
return request({
|
||||
url: '/admin/game/list',
|
||||
method: 'get',
|
||||
params: query
|
||||
});
|
||||
};
|
||||
export const getGamedata = query => {
|
||||
return request({
|
||||
url: '/admin/gamedata/total',
|
||||
method: 'get',
|
||||
params: query
|
||||
});
|
||||
};
|
||||
// 导出
|
||||
export const exportForMiniGame = query => {
|
||||
return request({
|
||||
url: `/admin/gamedata/total/export`,
|
||||
method: 'post',
|
||||
params: query,
|
||||
responseType: 'blob'
|
||||
});
|
||||
};
|
||||
|
||||
// 明细
|
||||
export const getUserGamedata = query => {
|
||||
return request({
|
||||
url: '/admin/gamedata/v2/user/total',
|
||||
method: 'get',
|
||||
params: query
|
||||
});
|
||||
};
|
||||
// 导出
|
||||
export const exportUserForMiniGame = query => {
|
||||
return request({
|
||||
url: `/admin/gamedata/v2/user/export`,
|
||||
method: 'post',
|
||||
params: query,
|
||||
responseType: 'blob'
|
||||
});
|
||||
};
|
||||
// 游戏明细
|
||||
export const getGameDetailGamedata = query => {
|
||||
return request({
|
||||
url: '/admin/gamedata/gameDetail',
|
||||
method: 'get',
|
||||
params: query
|
||||
});
|
||||
};
|
||||
// 导出
|
||||
export const exportGameDetailExportForMiniGame = query => {
|
||||
return request({
|
||||
url: `/admin/gamedata/gameDetailExport`,
|
||||
method: 'post',
|
||||
params: query,
|
||||
responseType: 'blob'
|
||||
});
|
||||
};
|
||||
// 汇总
|
||||
export const getTotalDayGamedata = query => {
|
||||
return request({
|
||||
url: '/admin/gamedata/user/totalDay',
|
||||
method: 'get',
|
||||
params: query
|
||||
});
|
||||
};
|
26
src/api/gameWhitelist/gameFeeUserRechargeLevelConfig.js
Normal file
26
src/api/gameWhitelist/gameFeeUserRechargeLevelConfig.js
Normal file
@@ -0,0 +1,26 @@
|
||||
import request from '@/utils/request';
|
||||
|
||||
// 列表
|
||||
export const page = query => {
|
||||
return request({
|
||||
url: '/admin/game/feeRateUserRechargeLevel/page',
|
||||
method: 'get',
|
||||
params: query
|
||||
});
|
||||
};
|
||||
// 保存
|
||||
export const save = query => {
|
||||
return request({
|
||||
url: '/admin/game/feeRateUserRechargeLevel/save',
|
||||
method: 'post',
|
||||
params: query
|
||||
});
|
||||
};
|
||||
// 删除
|
||||
export const del = query => {
|
||||
return request({
|
||||
url: '/admin/game/feeRateUserRechargeLevel/delete',
|
||||
method: 'post',
|
||||
params: query
|
||||
});
|
||||
};
|
35
src/api/gameWhitelist/gameWhitelist.js
Normal file
35
src/api/gameWhitelist/gameWhitelist.js
Normal file
@@ -0,0 +1,35 @@
|
||||
import request from '@/utils/request';
|
||||
|
||||
// ==================================灵小游戏====================================
|
||||
// 游戏列表
|
||||
export const gameList = query => {
|
||||
return request({
|
||||
url: '/admin/game/list',
|
||||
method: 'get',
|
||||
params: query
|
||||
});
|
||||
};
|
||||
// 列表
|
||||
export const gameFeeRateList = query => {
|
||||
return request({
|
||||
url: '/admin/game/feeRate/list',
|
||||
method: 'post',
|
||||
params: query
|
||||
});
|
||||
};
|
||||
// 保存
|
||||
export const gameFeeRate = query => {
|
||||
return request({
|
||||
url: '/admin/game/feeRate/save',
|
||||
method: 'post',
|
||||
params: query
|
||||
});
|
||||
};
|
||||
// 设置失效
|
||||
export const feeRateInvalid = query => {
|
||||
return request({
|
||||
url: '/admin/game/feeRate/invalid',
|
||||
method: 'get',
|
||||
params: query
|
||||
});
|
||||
};
|
82
src/api/giftPackCenter/giftPackCenter.js
Normal file
82
src/api/giftPackCenter/giftPackCenter.js
Normal file
@@ -0,0 +1,82 @@
|
||||
import request from '@/utils/request';
|
||||
// 礼包配置中心
|
||||
// 礼包配置列表
|
||||
export const getConfigList = query => {
|
||||
return request({
|
||||
url: '/admin/packCenter/configList',
|
||||
method: 'get',
|
||||
params: query
|
||||
});
|
||||
};
|
||||
// 礼包配置保存更新
|
||||
export const configSave = query => {
|
||||
return request({
|
||||
url: '/admin/packCenter/configSave',
|
||||
method: 'post',
|
||||
params: query
|
||||
});
|
||||
};
|
||||
// 奖品列表
|
||||
export const getItemList = query => {
|
||||
return request({
|
||||
url: '/admin/packCenter/itemList',
|
||||
method: 'get',
|
||||
params: query
|
||||
});
|
||||
};
|
||||
// 奖品列表 - 删除奖品
|
||||
export const deleteReward = query => {
|
||||
return request({
|
||||
url: '/admin/packCenter/itemDel',
|
||||
method: 'post',
|
||||
params: query
|
||||
});
|
||||
};
|
||||
// 添加奖品
|
||||
export const addReward = query => {
|
||||
return request({
|
||||
url: '/admin/packCenter/itemAdd',
|
||||
method: 'post',
|
||||
params: query
|
||||
});
|
||||
};
|
||||
// 奖励列表
|
||||
export const getAwardsList = query => {
|
||||
return request({
|
||||
url: '/admin/packCenter/awards',
|
||||
method: 'get',
|
||||
params: query
|
||||
});
|
||||
};
|
||||
// 赠送礼包
|
||||
export const sendPackCenter = query => {
|
||||
return request({
|
||||
url: '/admin/userPack/send',
|
||||
method: 'post',
|
||||
params: query
|
||||
});
|
||||
};
|
||||
// 奖励列表
|
||||
export const getRecordList = query => {
|
||||
return request({
|
||||
url: '/admin/userPack/recordList',
|
||||
method: 'get',
|
||||
params: query
|
||||
});
|
||||
};
|
||||
// 撤回礼包
|
||||
export const optionPackRecall = query => {
|
||||
return request({
|
||||
url: '/admin/userPack/packRecall',
|
||||
method: 'post',
|
||||
params: query
|
||||
});
|
||||
};
|
||||
//礼包使用记录
|
||||
export const getUseRecordList = query => {
|
||||
return request({
|
||||
url: '/admin/userUsePack/recordList',
|
||||
method: 'get',
|
||||
params: query
|
||||
});
|
||||
};
|
25
src/api/listLargeRUsers/listLargeRUsers.js
Normal file
25
src/api/listLargeRUsers/listLargeRUsers.js
Normal file
@@ -0,0 +1,25 @@
|
||||
import request from '@/utils/request';
|
||||
// 获取大R列表
|
||||
export const getHighRechargeUserList = query => {
|
||||
return request({
|
||||
url: '/admin/recharge/highRechargeUser/page',
|
||||
method: 'get',
|
||||
params: query
|
||||
});
|
||||
};
|
||||
// 移除大R
|
||||
export const delHighRechargeUser = query => {
|
||||
return request({
|
||||
url: '/admin/recharge/highRechargeUser/del',
|
||||
method: 'post',
|
||||
params: query
|
||||
});
|
||||
};
|
||||
// 添加大R
|
||||
export const addHighRechargeUser = query => {
|
||||
return request({
|
||||
url: '/admin/recharge/highRechargeUser/add',
|
||||
method: 'post',
|
||||
params: query
|
||||
});
|
||||
};
|
83
src/api/luckGift/luck25.js
Normal file
83
src/api/luckGift/luck25.js
Normal file
@@ -0,0 +1,83 @@
|
||||
import request from '@/utils/request';
|
||||
import { genQueryParam } from '@/utils/maintainer';
|
||||
|
||||
// 奖池拉框
|
||||
export const listType = query => {
|
||||
return request({
|
||||
url: '/admin/lucky25/pool/listType',
|
||||
method: 'get',
|
||||
params: query
|
||||
});
|
||||
};
|
||||
// 池子列表
|
||||
export const list = query => {
|
||||
return request({
|
||||
url: '/admin/lucky25/pool/list',
|
||||
method: 'get',
|
||||
params: query
|
||||
});
|
||||
};
|
||||
// 基础配置
|
||||
export const getConfig = query => {
|
||||
return request({
|
||||
url: '/admin/lucky25/config/getConfig',
|
||||
method: 'get',
|
||||
params: query
|
||||
});
|
||||
};
|
||||
// 基础配置-修改
|
||||
export const updateSet = query => {
|
||||
return request({
|
||||
headers: { "Content-Type": 'application/json;charset=UTF-8' },
|
||||
url: '/admin/lucky25/config/update',
|
||||
method: 'post',
|
||||
data: query
|
||||
});
|
||||
};
|
||||
// 个人数据
|
||||
export const personal = query => {
|
||||
return request({
|
||||
url: '/admin/lucky25/record/personal',
|
||||
method: 'get',
|
||||
params: query
|
||||
});
|
||||
};
|
||||
// 汇总
|
||||
export const platform = query => {
|
||||
return request({
|
||||
url: '/admin/lucky25/record/platform',
|
||||
method: 'get',
|
||||
params: query
|
||||
});
|
||||
};
|
||||
// 保存池子
|
||||
export const save = query => {
|
||||
return request({
|
||||
headers: { "Content-Type": 'application/json;charset=UTF-8' },
|
||||
url: '/admin/lucky25/pool/save',
|
||||
method: 'post',
|
||||
data: query
|
||||
});
|
||||
};
|
||||
// 赠送用户
|
||||
export const updateUserMulti = query => {
|
||||
return request({
|
||||
url: '/admin/lucky25/config/updateUserMulti',
|
||||
method: 'post',
|
||||
params: query
|
||||
});
|
||||
};
|
||||
// 获取明细
|
||||
export const pageRecord = query => {
|
||||
return request({
|
||||
url: '/admin/lucky25/record/page',
|
||||
method: 'get',
|
||||
params: query
|
||||
});
|
||||
};
|
||||
|
||||
// 导出明细
|
||||
export const exportRecord = query => {
|
||||
window.location.href = `/admin/lucky25/record/export?${genQueryParam(query)}`;
|
||||
return;
|
||||
};
|
@@ -2,15 +2,6 @@ import request from '@/utils/request';
|
||||
import { genQueryParam } from '@/utils/maintainer';
|
||||
import qs from 'qs';
|
||||
|
||||
// 分区接口
|
||||
export const listPartitionInfo = query => {
|
||||
return request({
|
||||
url: '/partition/listPartitionInfo',
|
||||
method: 'get',
|
||||
params: query
|
||||
});
|
||||
};
|
||||
|
||||
// 奖池拉框
|
||||
export const listType = query => {
|
||||
return request({
|
||||
@@ -52,6 +43,11 @@ export const personal = query => {
|
||||
params: query
|
||||
});
|
||||
};
|
||||
// 个人数据
|
||||
export const exportPersonal = query => {
|
||||
window.location.href = `/admin/lucky24/record/personal/export?${genQueryParam(query)}`;
|
||||
return;
|
||||
};
|
||||
// 汇总
|
||||
export const platform = query => {
|
||||
return request({
|
||||
@@ -76,4 +72,32 @@ export const updateUserMulti = query => {
|
||||
method: 'post',
|
||||
params: query
|
||||
});
|
||||
};
|
||||
// 获取明细
|
||||
export const pageRecord = query => {
|
||||
return request({
|
||||
url: '/admin/lucky24/record/page',
|
||||
method: 'get',
|
||||
params: query
|
||||
});
|
||||
};
|
||||
|
||||
// 导出明细
|
||||
export const exportRecord = query => {
|
||||
window.location.href = `/admin/lucky24/record/export?${genQueryParam(query)}`;
|
||||
return;
|
||||
};
|
||||
|
||||
// 个人数据
|
||||
export const followUserPersonal = query => {
|
||||
return request({
|
||||
url: '/admin/lucky24/followUserRecord/personal',
|
||||
method: 'get',
|
||||
params: query
|
||||
});
|
||||
};
|
||||
// 个人数据
|
||||
export const exportFollowUserPersonal = query => {
|
||||
window.location.href = `/admin/lucky24/followUserRecord/personal/export?${genQueryParam(query)}`;
|
||||
return;
|
||||
};
|
@@ -1,14 +1,6 @@
|
||||
import request from '@/utils/request';
|
||||
import { genQueryParam } from '@/utils/maintainer';
|
||||
|
||||
// 地区接口
|
||||
export const listPartitionInfo = query => {
|
||||
return request({
|
||||
url: '/partition/listPartitionInfo',
|
||||
method: 'get',
|
||||
params: query
|
||||
});
|
||||
};
|
||||
// 福袋列表请求
|
||||
export const listLuckyBagLinearGift = query => {
|
||||
return request({
|
||||
|
28
src/api/medal/MedalLevelManagement.js
Normal file
28
src/api/medal/MedalLevelManagement.js
Normal file
@@ -0,0 +1,28 @@
|
||||
import request from '@/utils/request';
|
||||
|
||||
// 勋章等级管理-列表
|
||||
export const getMedalSeriesList = query => {
|
||||
return request({
|
||||
url: '/admin/medalSeries/list',
|
||||
method: 'get',
|
||||
params: query
|
||||
});
|
||||
};
|
||||
// 保存
|
||||
export const saveOrUpdate = query => {
|
||||
return request({
|
||||
url: '/admin/medalSeries/saveOrUpdate',
|
||||
method: 'post',
|
||||
headers: {"Content-Type": 'application/json;charset=UTF-8' },
|
||||
data: query
|
||||
});
|
||||
};
|
||||
|
||||
// 上下架
|
||||
export const updateStatus = query => {
|
||||
return request({
|
||||
url: '/admin/medalSeries/updateStatus',
|
||||
method: 'post',
|
||||
params: query
|
||||
});
|
||||
};
|
@@ -1,13 +1,6 @@
|
||||
import request from '@/utils/request';
|
||||
import { genQueryParam } from '@/utils/maintainer';
|
||||
// 地区接口
|
||||
export const listPartitionInfo = query => {
|
||||
return request({
|
||||
url: '/partition/listPartitionInfo',
|
||||
method: 'get',
|
||||
params: query
|
||||
});
|
||||
};
|
||||
|
||||
// 勋章信息-列表
|
||||
export const medalPage = query => {
|
||||
return request({
|
||||
|
23
src/api/miniGame/miniGameWeekJackpot.js
Normal file
23
src/api/miniGame/miniGameWeekJackpot.js
Normal file
@@ -0,0 +1,23 @@
|
||||
import request from '@/utils/request';
|
||||
import {genQueryParam} from "@/utils/maintainer";
|
||||
|
||||
export const pageRecord = query => {
|
||||
return request({
|
||||
url: '/admin/miniGameWeekJackpot/pageRecord',
|
||||
method: 'get',
|
||||
params: query
|
||||
});
|
||||
};
|
||||
|
||||
export const exportRecord = query => {
|
||||
window.location.href = `/admin/miniGameWeekJackpot/exportRecord?${genQueryParam(query)}`;
|
||||
return;
|
||||
}
|
||||
|
||||
export const listUserRecord = query => {
|
||||
return request({
|
||||
url: '/admin/miniGameWeekJackpot/listUserRecord',
|
||||
method: 'get',
|
||||
params: query
|
||||
});
|
||||
};
|
@@ -1,15 +1,6 @@
|
||||
import request from '@/utils/request';
|
||||
import { genQueryParam } from '@/utils/maintainer';
|
||||
|
||||
// 分区接口
|
||||
export const listPartitionInfo = query => {
|
||||
return request({
|
||||
url: '/partition/listPartitionInfo',
|
||||
method: 'get',
|
||||
params: query
|
||||
});
|
||||
};
|
||||
|
||||
// 邀请移除记录
|
||||
export const pageOperateRecord = query => {
|
||||
return request({
|
||||
@@ -278,4 +269,31 @@ export const guildApplyAudit = query => {
|
||||
method: 'post',
|
||||
params: query
|
||||
});
|
||||
};
|
||||
|
||||
// 主播退公会申请 列表
|
||||
export const guildManageQuitList = query => {
|
||||
return request({
|
||||
url: '/admin/guild/manage/quitList',
|
||||
method: 'get',
|
||||
params: query
|
||||
});
|
||||
};
|
||||
|
||||
// 主播退公会申请审核
|
||||
export const guildManageOptQuit = query => {
|
||||
return request({
|
||||
url: '/admin/guild/manage/optQuit',
|
||||
method: 'post',
|
||||
params: query
|
||||
});
|
||||
};
|
||||
|
||||
// 获取分区下的国家
|
||||
export const getlistByPartitionId = query => {
|
||||
return request({
|
||||
url: '/admin/regionInfo/listByPartitionId',
|
||||
method: 'get',
|
||||
params: query
|
||||
});
|
||||
};
|
@@ -1,15 +1,6 @@
|
||||
import request from '@/utils/request';
|
||||
import { genQueryParam } from '@/utils/maintainer';
|
||||
|
||||
// 分区接口
|
||||
export const listPartitionInfo = query => {
|
||||
return request({
|
||||
url: '/partition/listPartitionInfo',
|
||||
method: 'get',
|
||||
params: query
|
||||
});
|
||||
};
|
||||
|
||||
// 邀请移除记录
|
||||
export const pageOperateRecord = query => {
|
||||
return request({
|
||||
@@ -39,7 +30,7 @@ export const create = query => {
|
||||
return request({
|
||||
url: '/admin/guild/manage/create',
|
||||
method: 'post',
|
||||
params: query
|
||||
data: query
|
||||
});
|
||||
};
|
||||
// 删除公会信息
|
||||
@@ -60,7 +51,7 @@ export const update = query => {
|
||||
return request({
|
||||
url: '/admin/guild/manage/update',
|
||||
method: 'post',
|
||||
params: query
|
||||
data: query
|
||||
});
|
||||
};
|
||||
// 导出-公会信息
|
||||
@@ -100,4 +91,64 @@ export const removeMember = query => {
|
||||
method: 'post',
|
||||
params: query
|
||||
});
|
||||
};
|
||||
// 主播公会信息-列表
|
||||
|
||||
export const getGuildManagePageGuildMemberList = query => {
|
||||
return request({
|
||||
url: '/admin/guild/manage/pageGuildMember',
|
||||
method: 'get',
|
||||
params: query
|
||||
});
|
||||
};
|
||||
// 主播公会信息-增加
|
||||
|
||||
export const addGuildManagePageGuildMember = query => {
|
||||
return request({
|
||||
url: '/admin/guild/manage/addMember',
|
||||
method: 'post',
|
||||
params: query
|
||||
});
|
||||
};
|
||||
// 主播公会信息-删除
|
||||
|
||||
export const removeGuildManagePageGuildMember = query => {
|
||||
return request({
|
||||
url: '/admin/guild/manage/removeMember',
|
||||
method: 'post',
|
||||
params: query
|
||||
});
|
||||
};
|
||||
// 公会主播钻石流水-列表
|
||||
export const getDiamondStatisticsList = query => {
|
||||
return request({
|
||||
url: '/admin/guildMember/diamondStatistics',
|
||||
method: 'get',
|
||||
params: query
|
||||
});
|
||||
};
|
||||
// 公会主播钻石流水-导出
|
||||
export const exportDiamondStatistics = query => {
|
||||
return request({
|
||||
url: `/admin/guildMember/diamondStatistics/export`,
|
||||
method: 'get',
|
||||
params: query,
|
||||
responseType: 'blob'
|
||||
});
|
||||
};
|
||||
// 获取 负责人全部列表
|
||||
export const getGuildOperatorListAll = query => {
|
||||
return request({
|
||||
url: '/admin/guildOperator/listAll',
|
||||
method: 'get',
|
||||
params: query
|
||||
});
|
||||
};
|
||||
// 获取 国家列表
|
||||
export const getlistByPartitionId = query => {
|
||||
return request({
|
||||
url: '/admin/regionInfo/listByPartitionId',
|
||||
method: 'get',
|
||||
params: query
|
||||
});
|
||||
};
|
@@ -6,4 +6,11 @@ export const getPartitionInfoList = query => {
|
||||
method: 'get',
|
||||
params: query
|
||||
});
|
||||
};
|
||||
export const listAll = query => {
|
||||
return request({
|
||||
url: '/partition/listAll',
|
||||
method: 'get',
|
||||
params: query
|
||||
});
|
||||
};
|
16
src/api/partition/regionInfo.js
Normal file
16
src/api/partition/regionInfo.js
Normal file
@@ -0,0 +1,16 @@
|
||||
import request from '@/utils/request';
|
||||
|
||||
export const listByPartitionId = query => {
|
||||
return request({
|
||||
url: '/admin/regionInfo/listByPartitionId',
|
||||
method: 'get',
|
||||
params: query
|
||||
});
|
||||
};
|
||||
export const listAll = query => {
|
||||
return request({
|
||||
url: '/admin/regionInfo/list',
|
||||
method: 'get',
|
||||
params: query
|
||||
});
|
||||
};
|
@@ -2,14 +2,6 @@ import request from '@/utils/request';
|
||||
import { genQueryParam } from '@/utils/maintainer';
|
||||
import qs from 'qs';
|
||||
|
||||
// 地区接口
|
||||
export const listPartitionInfo = query => {
|
||||
return request({
|
||||
url: '/partition/listPartitionInfo',
|
||||
method: 'get',
|
||||
params: query
|
||||
});
|
||||
};
|
||||
// 个人主页资源管理列表
|
||||
export const pesonalBackgroundListByPage = query => {
|
||||
return request({
|
||||
|
37
src/api/recharge/rechargeSubUser.js
Normal file
37
src/api/recharge/rechargeSubUser.js
Normal file
@@ -0,0 +1,37 @@
|
||||
import request from '@/utils/request';
|
||||
|
||||
export const listRegionType = () => {
|
||||
return request({
|
||||
url: '/admin/charge/region/list',
|
||||
method: 'get',
|
||||
});
|
||||
};
|
||||
|
||||
// 奖池拉框
|
||||
export const page = query => {
|
||||
return request({
|
||||
url: '/admin/recharge/user/page',
|
||||
method: 'get',
|
||||
params: query
|
||||
});
|
||||
};
|
||||
|
||||
// 奖池拉框
|
||||
export const save = query => {
|
||||
return request({
|
||||
headers:{"Content-Type": 'application/x-www-form-urlencoded'},
|
||||
url: '/admin/recharge/user/save',
|
||||
method: 'post',
|
||||
data: query
|
||||
});
|
||||
};
|
||||
|
||||
|
||||
// 奖池拉框
|
||||
export const del = query => {
|
||||
return request({
|
||||
url: '/admin/recharge/user/del',
|
||||
method: 'get',
|
||||
params: query
|
||||
});
|
||||
};
|
@@ -3,14 +3,6 @@ import qs from 'qs';
|
||||
import { genQueryParam } from '@/utils/maintainer';
|
||||
// 活动配置 相关接口(一级菜单:活动配置)
|
||||
|
||||
// 分区接口
|
||||
export const listPartitionInfo = query => {
|
||||
return request({
|
||||
url: '/partition/listPartitionInfo',
|
||||
method: 'get',
|
||||
params: query
|
||||
});
|
||||
};
|
||||
// 国家
|
||||
export const regionInfoList = query => {
|
||||
return request({
|
||||
|
@@ -4,15 +4,6 @@ import qs from 'qs';
|
||||
import { genQueryParam } from '@/utils/maintainer';
|
||||
// 活动配置 相关接口(一级菜单:活动配置)
|
||||
|
||||
// 分区接口
|
||||
export const listPartitionInfo = query => {
|
||||
return request({
|
||||
url: '/partition/listPartitionInfo',
|
||||
method: 'get',
|
||||
params: query
|
||||
});
|
||||
};
|
||||
|
||||
// 充值代理列表导出
|
||||
export const chargeAgentExport = query => {
|
||||
window.location.href = `/anchorSalaryBill/chargeAgent/export?${genQueryParam(query)}`;
|
||||
@@ -20,13 +11,35 @@ export const chargeAgentExport = query => {
|
||||
};
|
||||
|
||||
// 获取 周期列表
|
||||
export const getDateCycleList = query => {
|
||||
export const getDateCycleList = query => {
|
||||
return request({
|
||||
url: '/anchorSalaryBill/dateCycle/list',
|
||||
method: 'get',
|
||||
params: query
|
||||
});
|
||||
};
|
||||
// 获取 周奖励周期列表
|
||||
export const familyMemberWeekLevelRewardListCycleDate = query => {
|
||||
return request({
|
||||
url: '/admin/familyMemberWeekLevelReward/listCycleDate',
|
||||
method: 'get',
|
||||
params: query
|
||||
});
|
||||
};
|
||||
// 获取 周奖励查询列表
|
||||
export const familyMemberWeekLevelRewardPage = query => {
|
||||
return request({
|
||||
url: '/admin/familyMemberWeekLevelReward/page',
|
||||
method: 'get',
|
||||
params: query
|
||||
});
|
||||
};
|
||||
|
||||
// 导出
|
||||
export const familyMemberWeekLevelRewardExport = query => {
|
||||
window.location.href = `/admin/familyMemberWeekLevelReward/export?${genQueryParam(query)}`;
|
||||
return;
|
||||
};
|
||||
|
||||
// 获取 公会钻石薪资流水统计 列表
|
||||
export const getAgencyDiamondFlow = query => {
|
||||
@@ -188,4 +201,134 @@ export const diamondStatistics = query => {
|
||||
export const diamondStatisticsExport = query => {
|
||||
window.location.href = `/admin/guild/diamondStatistics/export?${genQueryParam(query)}`;
|
||||
return;
|
||||
};
|
||||
// 获取分区下的国家
|
||||
export const getlistByPartitionId = query => {
|
||||
return request({
|
||||
url: '/admin/regionInfo/listByPartitionId',
|
||||
method: 'get',
|
||||
params: query
|
||||
});
|
||||
};
|
||||
// 每日钻石流水列表
|
||||
export const getroomDayDiamondList = query => {
|
||||
return request({
|
||||
url: '/admin/roomDayDiamond/list',
|
||||
method: 'get',
|
||||
params: query
|
||||
});
|
||||
};
|
||||
// 每日钻石流水列表导出
|
||||
export const roomDayDiamondExport = query => {
|
||||
window.location.href = `/admin/roomDayDiamond/export?${genQueryParam(query)}`;
|
||||
return;
|
||||
};
|
||||
// 每日钻石流水列表
|
||||
export const sendroomDayDiamond = query => {
|
||||
return request({
|
||||
url: '/admin/roomDayDiamond/send',
|
||||
method: 'post',
|
||||
params: query
|
||||
});
|
||||
};
|
||||
// 官方提现方式渠道列表
|
||||
export const getlistAccountType = query => {
|
||||
return request({
|
||||
url: '/admin/guildUsdWithdrawAccountConfig/listAccountType',
|
||||
method: 'get',
|
||||
params: query
|
||||
});
|
||||
};
|
||||
// 官方提现方式配置 列表
|
||||
export const getAccountConfigList = query => {
|
||||
return request({
|
||||
url: '/admin/guildUsdWithdrawAccountConfig/page',
|
||||
method: 'get',
|
||||
params: query
|
||||
});
|
||||
};
|
||||
// 官方提现方式配置 编辑
|
||||
export const saveAccountConfig = query => {
|
||||
return request({
|
||||
url: '/admin/guildUsdWithdrawAccountConfig/save',
|
||||
method: 'get',
|
||||
params: query
|
||||
});
|
||||
};
|
||||
// 房间钻石流水查询 - 列表
|
||||
export const getRoomHourDiamondList = query => {
|
||||
return request({
|
||||
url: '/admin/roomHourDiamond/list',
|
||||
method: 'get',
|
||||
params: query
|
||||
});
|
||||
};
|
||||
// 房间钻石流水查询 - 导出
|
||||
export const exportRoomHourDiamondList = query => {
|
||||
return request({
|
||||
url: '/admin/roomHourDiamond/export',
|
||||
method: 'post',
|
||||
params: query,
|
||||
responseType: 'blob'
|
||||
});
|
||||
};
|
||||
|
||||
// CIS公会钻石 - 列表
|
||||
export const getSovietList = query => {
|
||||
return request({
|
||||
url: '/admin/soviet/list',
|
||||
method: 'get',
|
||||
params: query
|
||||
});
|
||||
};
|
||||
// CIS公会钻石 - 导出
|
||||
export const exportSovietList = query => {
|
||||
return request({
|
||||
url: '/admin/soviet/export',
|
||||
method: 'post',
|
||||
params: query,
|
||||
responseType: 'blob'
|
||||
});
|
||||
};
|
||||
// CIS公会成员钻石 - 列表
|
||||
export const getSovietMemberList = query => {
|
||||
return request({
|
||||
url: '/admin/soviet/memberList',
|
||||
method: 'get',
|
||||
params: query
|
||||
});
|
||||
};
|
||||
// CIS公会成员钻石 - 导出
|
||||
export const exportSovietMemberList = query => {
|
||||
return request({
|
||||
url: '/admin/soviet/memberExport',
|
||||
method: 'post',
|
||||
params: query,
|
||||
responseType: 'blob'
|
||||
});
|
||||
};
|
||||
// CIS房主钻石 - 列表
|
||||
export const getSovietRoomList = query => {
|
||||
return request({
|
||||
url: '/admin/soviet/roomList',
|
||||
method: 'get',
|
||||
params: query
|
||||
});
|
||||
};
|
||||
// CIS房主钻石 - 导出
|
||||
export const exportSovietRoomList = query => {
|
||||
return request({
|
||||
url: '/admin/soviet/roomExport',
|
||||
method: 'post',
|
||||
params: query,
|
||||
responseType: 'blob'
|
||||
});
|
||||
};
|
||||
// CIS房主钻石 - CIS房主钻石-周期
|
||||
export const getRoomCycleDateList = query => {
|
||||
return request({
|
||||
url: '/admin/soviet/roomCycleDateList',
|
||||
method: 'get',
|
||||
params: query
|
||||
});
|
||||
};
|
40
src/api/room/roomTabRegion.js
Normal file
40
src/api/room/roomTabRegion.js
Normal file
@@ -0,0 +1,40 @@
|
||||
import request from '@/utils/request';
|
||||
|
||||
export const listRegionTab = query => {
|
||||
return request({
|
||||
url: '/admin/roomTabRegion/listRegionTab',
|
||||
method: 'get',
|
||||
params: query
|
||||
});
|
||||
};
|
||||
|
||||
export const list = query => {
|
||||
return request({
|
||||
url: '/admin/roomTabRegion/list',
|
||||
method: 'get',
|
||||
params: query
|
||||
});
|
||||
};
|
||||
|
||||
export const get = query => {
|
||||
return request({
|
||||
url: '/admin/roomTabRegion/get',
|
||||
method: 'get',
|
||||
params: query
|
||||
});
|
||||
};
|
||||
|
||||
export const save = query => {
|
||||
return request({
|
||||
url: '/admin/roomTabRegion/save',
|
||||
method: 'post',
|
||||
params: query
|
||||
});
|
||||
};
|
||||
export const del = query => {
|
||||
return request({
|
||||
url: '/admin/roomTabRegion/delete',
|
||||
method: 'post',
|
||||
params: query
|
||||
});
|
||||
};
|
@@ -1,15 +1,5 @@
|
||||
import request from '@/utils/request';
|
||||
import { genQueryParam } from '@/utils/maintainer';
|
||||
import qs from 'qs';
|
||||
|
||||
// 地区接口
|
||||
export const listPartitionInfo = query => {
|
||||
return request({
|
||||
url: '/partition/listPartitionInfo',
|
||||
method: 'get',
|
||||
params: query
|
||||
});
|
||||
};
|
||||
// ==============================================首页ui配置==============================================
|
||||
// 配置
|
||||
export const appUiSetting = query => {
|
||||
|
10
src/api/sms/smsRecord.js
Normal file
10
src/api/sms/smsRecord.js
Normal file
@@ -0,0 +1,10 @@
|
||||
import request from '@/utils/request';
|
||||
import {genQueryParam} from "@/utils/maintainer";
|
||||
|
||||
export const pageRecord = query => {
|
||||
return request({
|
||||
url: '/admin/smsRecord/page',
|
||||
method: 'get',
|
||||
params: query
|
||||
});
|
||||
};
|
31
src/api/statistics/statistics.js
Normal file
31
src/api/statistics/statistics.js
Normal file
@@ -0,0 +1,31 @@
|
||||
import request from '@/utils/request';
|
||||
import qs from 'qs';
|
||||
import { genQueryParam } from '@/utils/maintainer';
|
||||
|
||||
// ==================================用户新增====================================
|
||||
// 列表
|
||||
export const dnuPage = query => {
|
||||
return request({
|
||||
url: '/admin/stats/dnu/page',
|
||||
method: 'get',
|
||||
params: query
|
||||
});
|
||||
};
|
||||
// ==================================用户活跃====================================
|
||||
// 列表
|
||||
export const dauPage = query => {
|
||||
return request({
|
||||
url: '/admin/stats/dau/page',
|
||||
method: 'get',
|
||||
params: query
|
||||
});
|
||||
};
|
||||
// ==================================工会数据统计====================================
|
||||
// 列表
|
||||
export const guiildPage = query => {
|
||||
return request({
|
||||
url: '/admin/stats/guild/page',
|
||||
method: 'get',
|
||||
params: query
|
||||
});
|
||||
};
|
9
src/api/superCenter/GoldWaterSuper.js
Normal file
9
src/api/superCenter/GoldWaterSuper.js
Normal file
@@ -0,0 +1,9 @@
|
||||
import request from '@/utils/request';
|
||||
// 获取列表
|
||||
export const incomePageFamily = query => {
|
||||
return request({
|
||||
url: '/admin/superCenter/pageFamilyIncomes',
|
||||
method: 'get',
|
||||
params: query
|
||||
});
|
||||
};
|
17
src/api/superCenter/GuildInfoSuper.js
Normal file
17
src/api/superCenter/GuildInfoSuper.js
Normal file
@@ -0,0 +1,17 @@
|
||||
import request from '@/utils/request';
|
||||
// 获取列表
|
||||
export const pageFamily = query => {
|
||||
return request({
|
||||
url: '/admin/superCenter/pageFamily',
|
||||
method: 'get',
|
||||
params: query
|
||||
});
|
||||
};
|
||||
// 创建公会
|
||||
export const createFamily = query => {
|
||||
return request({
|
||||
url: '/admin/superCenter/createFamily',
|
||||
method: 'post',
|
||||
params: query
|
||||
});
|
||||
};
|
17
src/api/superCenter/VipGiveSuper.js
Normal file
17
src/api/superCenter/VipGiveSuper.js
Normal file
@@ -0,0 +1,17 @@
|
||||
import request from '@/utils/request';
|
||||
// 获取列表
|
||||
export const pageRecord = query => {
|
||||
return request({
|
||||
url: '/admin/superCenter/vipSendRecord',
|
||||
method: 'get',
|
||||
params: query
|
||||
});
|
||||
};
|
||||
// 赠送
|
||||
export const vipSendSend = query => {
|
||||
return request({
|
||||
url: '/admin/superCenter/vipSend',
|
||||
method: 'post',
|
||||
params: query
|
||||
});
|
||||
};
|
9
src/api/superCenter/diamondFlowSuper.js
Normal file
9
src/api/superCenter/diamondFlowSuper.js
Normal file
@@ -0,0 +1,9 @@
|
||||
import request from '@/utils/request';
|
||||
// 获取列表
|
||||
export const diamondStatistics = query => {
|
||||
return request({
|
||||
url: '/admin/superCenter/diamondStatistics',
|
||||
method: 'get',
|
||||
params: query
|
||||
});
|
||||
};
|
9
src/api/superCenter/newGuildApplicationSuper.js
Normal file
9
src/api/superCenter/newGuildApplicationSuper.js
Normal file
@@ -0,0 +1,9 @@
|
||||
import request from '@/utils/request';
|
||||
// 获取列表
|
||||
export const guildApplyList = query => {
|
||||
return request({
|
||||
url: '/admin/superCenter/guildApplyList',
|
||||
method: 'get',
|
||||
params: query
|
||||
});
|
||||
};
|
27
src/api/userRechargeLevel/userRechargeLevel.js
Normal file
27
src/api/userRechargeLevel/userRechargeLevel.js
Normal file
@@ -0,0 +1,27 @@
|
||||
import request from '@/utils/request';
|
||||
|
||||
// 获取用户充值等级列表
|
||||
export const listLevel = query => {
|
||||
return request({
|
||||
url: '/admin/recharge/userRechargeLevel/listLevel',
|
||||
method: 'get',
|
||||
params: query
|
||||
});
|
||||
};
|
||||
|
||||
// 获取用户充值等级列表
|
||||
export const pageUserRechargeLevel = query => {
|
||||
return request({
|
||||
url: '/admin/recharge/userRechargeLevel/page',
|
||||
method: 'get',
|
||||
params: query
|
||||
});
|
||||
};
|
||||
// 财富/魅力等级修改记录 - 列表
|
||||
export const getUserExpChangeRecordList = query => {
|
||||
return request({
|
||||
url: '/userExpChange/userExpChangeRecordList',
|
||||
method: 'get',
|
||||
params: query
|
||||
});
|
||||
};
|
75
src/api/users/ChargeRecordPartitionStatisticsView.js
Normal file
75
src/api/users/ChargeRecordPartitionStatisticsView.js
Normal file
@@ -0,0 +1,75 @@
|
||||
import request from "@/utils/request";
|
||||
// 各分区充值统计-列表
|
||||
export const getChargeRecordPartitionDetail = query => {
|
||||
return request({
|
||||
url: '/admin/chargeRecord/partitionDetail',
|
||||
method: 'get',
|
||||
params: query
|
||||
});
|
||||
};
|
||||
// 各分区充值统计-导出
|
||||
export const exportPartitionDetail = query => {
|
||||
return request({
|
||||
url: `/admin/chargeRecord/exportPartitionDetail`,
|
||||
method: 'get',
|
||||
params: query,
|
||||
responseType: 'blob'
|
||||
});
|
||||
}
|
||||
// 今日充值统计-列表
|
||||
export const getChargeRecordDailtList = query => {
|
||||
return request({
|
||||
url: '/admin/chargeRecord/dailylist',
|
||||
method: 'get',
|
||||
params: query
|
||||
});
|
||||
};
|
||||
// 今日充值统计-今日充值数据
|
||||
export const getChargeRecordDailyTotal = query => {
|
||||
return request({
|
||||
url: '/admin/chargeRecord/dailytotal',
|
||||
method: 'get',
|
||||
params: query
|
||||
});
|
||||
};
|
||||
// 今日充值统计-明细
|
||||
export const getChargeRecordDailyDetail = query => {
|
||||
return request({
|
||||
url: '/admin/chargeRecord/dailydetail',
|
||||
method: 'get',
|
||||
params: query
|
||||
});
|
||||
};
|
||||
// 累计充值数据 - 列表
|
||||
export const getChargeRecordTotalList = query => {
|
||||
return request({
|
||||
url: '/admin/chargeRecord/totallist',
|
||||
method: 'get',
|
||||
params: query
|
||||
});
|
||||
};
|
||||
// 累计充值数据 - 明细
|
||||
export const getChargeRecordTotalDetail = query => {
|
||||
return request({
|
||||
url: '/admin/chargeRecord/totaldetail',
|
||||
method: 'get',
|
||||
params: query
|
||||
});
|
||||
};
|
||||
// 累计充值数据 - 导出
|
||||
export const exportChargeRecordTotalExport = query => {
|
||||
return request({
|
||||
url: '/admin/chargeRecord/totalexport',
|
||||
method: 'get',
|
||||
params: query,
|
||||
responseType: 'blob'
|
||||
});
|
||||
};
|
||||
// 充值明细
|
||||
export const getChargeRecordPartitionRegionDetail = query => {
|
||||
return request({
|
||||
url: '/admin/chargeRecord/partitionRegionDetail',
|
||||
method: 'get',
|
||||
params: query
|
||||
});
|
||||
};
|
35
src/api/users/SuspectedUserX.js
Normal file
35
src/api/users/SuspectedUserX.js
Normal file
@@ -0,0 +1,35 @@
|
||||
import request from '@/utils/request';
|
||||
|
||||
// X嫌疑人 - 列表
|
||||
export const getChargeUserXDetailPage = query => {
|
||||
return request({
|
||||
url: '/chargeUserXDetail/list',
|
||||
method: 'get',
|
||||
params: query
|
||||
});
|
||||
};
|
||||
// X嫌疑人 导出
|
||||
export const exportChargeUserXDetail = query => {
|
||||
return request({
|
||||
url: `/chargeUserXDetail/export`,
|
||||
method: 'post',
|
||||
params: query,
|
||||
responseType: 'blob'
|
||||
});
|
||||
}
|
||||
// X嫌疑人 - 增加
|
||||
export const saveChargeUserXDetailPage = query => {
|
||||
return request({
|
||||
url: '/chargeUserXDetail/save',
|
||||
method: 'post',
|
||||
params: query
|
||||
});
|
||||
};
|
||||
// X嫌疑人 - 删除
|
||||
export const deleteChargeUserXDetailPage = query => {
|
||||
return request({
|
||||
url: '/chargeUserXDetail/delete',
|
||||
method: 'post',
|
||||
params: query
|
||||
});
|
||||
};
|
18
src/api/users/UserInformationCustomer.js
Normal file
18
src/api/users/UserInformationCustomer.js
Normal file
@@ -0,0 +1,18 @@
|
||||
import request from '@/utils/request';
|
||||
|
||||
// 获取用户充值等级列表
|
||||
export const getUserCheckAdmin = query => {
|
||||
return request({
|
||||
url: '/admin/userCheckAdmin/getUser',
|
||||
method: 'get',
|
||||
params: query
|
||||
});
|
||||
};
|
||||
// 修改用户等级
|
||||
export const changeUserExpChange = query => {
|
||||
return request({
|
||||
url: '/userExpChange/change',
|
||||
method: 'post',
|
||||
params: query
|
||||
});
|
||||
};
|
18
src/api/users/userAvatarManagement.js
Normal file
18
src/api/users/userAvatarManagement.js
Normal file
@@ -0,0 +1,18 @@
|
||||
import request from "@/utils/request";
|
||||
// 列表
|
||||
export const getavatarPaidRecordList = query => {
|
||||
return request({
|
||||
url: '/admin/avatarPaidRecord/page',
|
||||
method: 'get',
|
||||
params: query,
|
||||
|
||||
});
|
||||
}
|
||||
// 下架
|
||||
export const resetAvatarPaidRecord = query => {
|
||||
return request({
|
||||
url: '/admin/avatarPaidRecord/reset',
|
||||
method: 'get',
|
||||
params: query,
|
||||
});
|
||||
}
|
@@ -3,7 +3,7 @@
|
||||
<div class="pull-right hidden-xs">
|
||||
<b>Version</b> 2.0.0
|
||||
</div>
|
||||
<strong>Copyright © 2024 <a href="">触海网络</a>.</strong> All rights
|
||||
<strong>Copyright © 2025 <a href="">卡盖亚网络</a>.</strong> All rights
|
||||
reserved.
|
||||
</footer>
|
||||
</template>
|
||||
|
@@ -6,7 +6,7 @@
|
||||
<!-- mini logo for sidebar mini 50x50 pixels -->
|
||||
<span class="logo-mini"><b>M</b>S</span>
|
||||
<!-- logo for regular state and mobile devices -->
|
||||
<span class="logo-lg"><b>molistar</b>管理系统</span>
|
||||
<span class="logo-lg"><b>MoliParty</b>管理系统</span>
|
||||
</a>
|
||||
<!-- Header Navbar: style can be found in header.less -->
|
||||
<nav class="navbar navbar-static-top" role="navigation">
|
||||
|
@@ -3,6 +3,8 @@ const partitionInfoMap = {
|
||||
2: '阿拉伯语区',
|
||||
4: '华语区',
|
||||
8: '土耳其区',
|
||||
16: '英语2区',
|
||||
32: '独联体',
|
||||
}
|
||||
|
||||
export const partitionDesc = (val) => {
|
||||
|
325
src/views/BD/BDmanagement.vue
Normal file
325
src/views/BD/BDmanagement.vue
Normal file
@@ -0,0 +1,325 @@
|
||||
<template>
|
||||
<div class="box">
|
||||
<div class="inquire">
|
||||
<span>用户ID:</span>
|
||||
<el-input v-model="formData.erbanNo"
|
||||
placeholder=""
|
||||
class="input" />
|
||||
</div>
|
||||
<div class="inquire">
|
||||
<span>分区</span>
|
||||
<partition-select v-model:partition-id="formData.partitionId"
|
||||
@update:partitionId="getlistByPartition" />
|
||||
</div>
|
||||
<div class="inquire">
|
||||
<span>国家</span>
|
||||
<el-select v-model="formData.regionId"
|
||||
placeholder="请选择">
|
||||
<el-option v-for="item in adminCountryArr"
|
||||
:key="item.id"
|
||||
:label="item.name"
|
||||
:value="item.id">
|
||||
</el-option>
|
||||
</el-select>
|
||||
</div>
|
||||
<div class="inquire">
|
||||
<span class="demonstration">日期</span>
|
||||
<el-date-picker v-model="dataTime"
|
||||
type="daterange"
|
||||
range-separator="至"
|
||||
start-placeholder="开始日期"
|
||||
end-placeholder="结束日期"
|
||||
value-format="YYYY-MM-DD">
|
||||
</el-date-picker>
|
||||
</div>
|
||||
<el-button style=""
|
||||
type="primary"
|
||||
@click="getData()">查询</el-button>
|
||||
|
||||
<el-table v-loading="tableData.loading"
|
||||
:data="tableData.data"
|
||||
ref="multipleTable"
|
||||
@selection-change="handleSelectionChange"
|
||||
border
|
||||
style="width: 100%; margin-top: 25px">
|
||||
<el-table-column prop="erbanNo"
|
||||
align="center"
|
||||
label="用户ID" />
|
||||
<el-table-column prop="nick"
|
||||
align="center"
|
||||
label="用户昵称" />
|
||||
<el-table-column prop="partitionDesc"
|
||||
align="center"
|
||||
label="分区" />
|
||||
<el-table-column prop="regionName"
|
||||
align="center"
|
||||
label="国家" />
|
||||
<el-table-column prop="createTime"
|
||||
align="center"
|
||||
label="创建时间">
|
||||
<template v-slot="scope">
|
||||
{{ dateFormat(scope.row.createTime) }}
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column prop="guildNum"
|
||||
align="center"
|
||||
label="旗下公会数量">
|
||||
<template v-slot="scope">
|
||||
<el-button type="text"
|
||||
size="small"
|
||||
@click="editFen(scope.row)">
|
||||
{{ scope.row.guildNum }}
|
||||
</el-button>
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column prop="diamondNum"
|
||||
align="center"
|
||||
label="公会钻石流水" />
|
||||
<el-table-column prop="goldNum"
|
||||
align="center"
|
||||
label="公会金币流水" />
|
||||
|
||||
<el-table-column prop="owner"
|
||||
align="center"
|
||||
label="负责人" />
|
||||
</el-table>
|
||||
<!-- 分页 -->
|
||||
<el-pagination style="margin-top: 10px"
|
||||
class="paginationClass"
|
||||
:current-page="formData.pageNo"
|
||||
:page-size="formData.pageSize"
|
||||
:page-sizes="[10, 20, 50, 100, 200]"
|
||||
layout="sizes, prev, pager, next"
|
||||
:total="tableData.total"
|
||||
@size-change="handleSizeChange"
|
||||
@current-change="handleCurrentChange" />
|
||||
<!-- 详情表格 -->
|
||||
<el-dialog v-model="detailsDialog"
|
||||
title="公会钻石流水详情"
|
||||
width="70%"
|
||||
center>
|
||||
<!-- 内表格 -->
|
||||
<el-table v-loading="tableDetailData.loading"
|
||||
:data="tableDetailData.data"
|
||||
border
|
||||
style="width: 100%; margin-top: 25px">
|
||||
<el-table-column prop="guildId"
|
||||
align="center"
|
||||
label="公会ID" />
|
||||
<el-table-column prop="guildName"
|
||||
align="center"
|
||||
label="公会昵称" />
|
||||
<el-table-column prop="ownerErbanNo"
|
||||
align="center"
|
||||
label="公会长ID" />
|
||||
<el-table-column prop="nick"
|
||||
align="center"
|
||||
label="公会长昵称" />
|
||||
<el-table-column prop="regionName"
|
||||
align="center"
|
||||
label="所属国家" />
|
||||
<el-table-column prop="createTime"
|
||||
align="center"
|
||||
label="公会成立时间">
|
||||
<template v-slot="scope">
|
||||
{{ dateFormat(scope.row.createTime) }}
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column prop="memberNum"
|
||||
align="center"
|
||||
label="公会成员数(不包括公会长)" />
|
||||
<el-table-column prop="diamondNum"
|
||||
align="center"
|
||||
label="公会钻石流水" />
|
||||
<el-table-column prop="goldNum"
|
||||
align="center"
|
||||
label="公会金币流水" />
|
||||
<el-table-column prop="status"
|
||||
align="center"
|
||||
label="绑定状态">
|
||||
<template v-slot="scope">
|
||||
{{ scope.row.status == 1 ? '有效' : '无效' }}
|
||||
</template>
|
||||
</el-table-column>
|
||||
</el-table>
|
||||
<!-- 分页 -->
|
||||
<el-pagination style="margin-top: 10px"
|
||||
class="paginationClass"
|
||||
:current-page="formDetailData.pageNo"
|
||||
:page-size="formDetailData.pageSize"
|
||||
:page-sizes="[10, 20, 50, 100, 200]"
|
||||
layout="sizes, prev, pager, next"
|
||||
:total="tableDetailData.total"
|
||||
@size-change="handleSizeChangeDetail"
|
||||
@current-change="handleCurrentChangeDetail" />
|
||||
</el-dialog>
|
||||
</div>
|
||||
</template>
|
||||
|
||||
<script>
|
||||
import { ref, onMounted, reactive, computed } from 'vue'
|
||||
import PartitionSelect from "@/views/common/partitionSelect.vue";
|
||||
import { getBdDetailGuildsList, getBdDataList, getlistByPartitionId } from "@/api/BD/IdentitySettings.js"
|
||||
import { ElMessage, ElMessageBox } from "element-plus";
|
||||
import { dateFormat } from "@/utils/system-helper";
|
||||
export default {
|
||||
name: 'BDmanagement',
|
||||
components: {
|
||||
PartitionSelect
|
||||
},
|
||||
setup () {
|
||||
const formData = reactive({
|
||||
partitionId: undefined,
|
||||
pageNo: 1,
|
||||
pageSize: 10,
|
||||
erbanNo: '',
|
||||
regionId: '',
|
||||
startTime: '',
|
||||
endTime: ''
|
||||
})
|
||||
const tableData = reactive({
|
||||
data: [],
|
||||
total: 0,
|
||||
loading: false,
|
||||
})
|
||||
const formDetailData = reactive({
|
||||
bdId: '',
|
||||
pageNo: 1,
|
||||
pageSize: 10,
|
||||
startTime: '',
|
||||
endTime: '',
|
||||
partitionId: '',
|
||||
})
|
||||
const tableDetailData = reactive({
|
||||
data: [],
|
||||
total: 0,
|
||||
loading: false,
|
||||
})
|
||||
const detailsDialog = ref(false)
|
||||
const dataTime = ref('');
|
||||
const adminCountryArr = ref([])
|
||||
const getlistByPartition = (e) => {
|
||||
if (e) {
|
||||
formData.partitionId = e;
|
||||
}
|
||||
getlistByPartitionId({ partitionId: formData.partitionId, containAll: true }).then((res) => {
|
||||
if (res.code == 200) {
|
||||
adminCountryArr.value = res.data;
|
||||
}
|
||||
});
|
||||
}
|
||||
const getData = () => {
|
||||
tableData.loading = true;
|
||||
if (dataTime.value && dataTime.value.length > 0) {
|
||||
formData.startTime = dataTime.value[0];
|
||||
formData.endTime = dataTime.value[1];
|
||||
console.log(dataTime.value)
|
||||
} else {
|
||||
formData.startTime = dataTime.value
|
||||
formData.endTime = dataTime.value
|
||||
}
|
||||
getBdDataList(formData).then(res => {
|
||||
if (res.code == 200) {
|
||||
tableData.data = res.data.rows
|
||||
tableData.total = res.data.total
|
||||
tableData.loading = false
|
||||
} else {
|
||||
tableData.loading = false;
|
||||
ElMessage.error(res.message)
|
||||
}
|
||||
})
|
||||
}
|
||||
// 详情
|
||||
const editFen = (row) => {
|
||||
if (row) {
|
||||
formDetailData.bdId = row.id;
|
||||
formDetailData.partitionId = formData.partitionId;
|
||||
formDetailData.endTime = formData.endTime;
|
||||
formDetailData.startTime = formData.startTime;
|
||||
|
||||
}
|
||||
tableDetailData.loading = true;
|
||||
getBdDetailGuildsList(formDetailData).then(res => {
|
||||
if (res.code == 200) {
|
||||
tableDetailData.data = res.data.rows
|
||||
tableDetailData.total = res.data.total
|
||||
tableDetailData.loading = false
|
||||
detailsDialog.value = true
|
||||
|
||||
} else {
|
||||
tableDetailData.loading = false
|
||||
ElMessage.error(res.message)
|
||||
}
|
||||
|
||||
})
|
||||
}
|
||||
const dateFormat = (row) => {
|
||||
const date = new Date(row);
|
||||
return date.format("yyyy-MM-dd hh:mm:ss");
|
||||
}
|
||||
const handleSizeChange = (val) => {
|
||||
formData.pageSize = val;
|
||||
getData();
|
||||
};
|
||||
const handleCurrentChange = (val) => {
|
||||
formData.pageNo = val;
|
||||
getData();
|
||||
};
|
||||
const handleSizeChangeDetail = (val) => {
|
||||
formDetailData.pageSize = val;
|
||||
editFen();
|
||||
};
|
||||
const handleCurrentChangeDetail = (val) => {
|
||||
formDetailData.pageNo = val;
|
||||
editFen();
|
||||
};
|
||||
return {
|
||||
formData,
|
||||
adminCountryArr,
|
||||
getlistByPartition,
|
||||
dataTime,
|
||||
getData,
|
||||
tableData,
|
||||
dateFormat,
|
||||
editFen,
|
||||
formDetailData,
|
||||
detailsDialog,
|
||||
tableDetailData,
|
||||
handleSizeChange,
|
||||
handleCurrentChange,
|
||||
handleSizeChangeDetail,
|
||||
handleCurrentChangeDetail
|
||||
}
|
||||
}
|
||||
}
|
||||
</script>
|
||||
|
||||
<style lang="less" scoped>
|
||||
.box {
|
||||
padding-top: 20px;
|
||||
background: #ecf0f5;
|
||||
|
||||
.inquire {
|
||||
display: inline-block;
|
||||
margin-right: 20px;
|
||||
|
||||
span {
|
||||
margin-right: 10px;
|
||||
}
|
||||
|
||||
.input {
|
||||
width: 180px;
|
||||
margin-right: 10px;
|
||||
}
|
||||
}
|
||||
|
||||
.dialogTableVisibleBut {
|
||||
display: block;
|
||||
margin: 30px 0 0 830px;
|
||||
}
|
||||
|
||||
.paginationClass {
|
||||
margin: 15px 0 5px 0px;
|
||||
}
|
||||
}
|
||||
</style>
|
442
src/views/BD/IdentitySettings.vue
Normal file
442
src/views/BD/IdentitySettings.vue
Normal file
@@ -0,0 +1,442 @@
|
||||
<template>
|
||||
<div class="box">
|
||||
<div class="inquire">
|
||||
<span>用户ID:</span>
|
||||
<el-input v-model="formData.erbanNo"
|
||||
placeholder=""
|
||||
class="input" />
|
||||
</div>
|
||||
<div class="inquire">
|
||||
<span>分区</span>
|
||||
<partition-select v-model:partition-id="formData.partitionId"
|
||||
@update:partitionId="getlistByPartition" />
|
||||
</div>
|
||||
<div class="inquire">
|
||||
<span>国家</span>
|
||||
<el-select v-model="formData.regionId"
|
||||
placeholder="请选择">
|
||||
<el-option v-for="item in adminCountryArr"
|
||||
:key="item.id"
|
||||
:label="item.name"
|
||||
:value="item.id">
|
||||
</el-option>
|
||||
</el-select>
|
||||
</div>
|
||||
<el-button style=""
|
||||
type="primary"
|
||||
@click="getData()">查询</el-button>
|
||||
<el-button style=""
|
||||
type="primary"
|
||||
@click="addDialog = true">新增</el-button>
|
||||
<el-table v-loading="tableData.loading"
|
||||
:data="tableData.data"
|
||||
ref="multipleTable"
|
||||
@selection-change="handleSelectionChange"
|
||||
border
|
||||
style="width: 100%; margin-top: 25px">
|
||||
<el-table-column prop="erbanNo"
|
||||
align="center"
|
||||
label="用户ID" />
|
||||
<el-table-column prop="nick"
|
||||
align="center"
|
||||
label="用户昵称" />
|
||||
<el-table-column prop="partitionDesc"
|
||||
align="center"
|
||||
label="分区" />
|
||||
<el-table-column prop="regionName"
|
||||
align="center"
|
||||
label="国家" />
|
||||
<el-table-column prop="createTime"
|
||||
align="center"
|
||||
label="创建时间">
|
||||
<template v-slot="scope">
|
||||
{{ dateFormat(scope.row.createTime) }}
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column prop="guildNum"
|
||||
align="center"
|
||||
label="旗下公会数量">
|
||||
<template v-slot="scope">
|
||||
<el-button type="text"
|
||||
size="small"
|
||||
@click="editFen(scope.row)">
|
||||
{{ scope.row.guildNum }}
|
||||
</el-button>
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column prop="owner"
|
||||
align="center"
|
||||
label="负责人" />
|
||||
<el-table-column align="center"
|
||||
label="操作"
|
||||
width="300">
|
||||
<template v-slot="scope">
|
||||
<el-button class="primary"
|
||||
type="primary"
|
||||
@click="
|
||||
removePageFun(scope.row);
|
||||
"
|
||||
size="default"
|
||||
v-if="scope.row.status == 1">移除</el-button>
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column prop="operator"
|
||||
align="center"
|
||||
label="操作人" />
|
||||
</el-table>
|
||||
<!-- 分页 -->
|
||||
<el-pagination style="margin-top: 10px"
|
||||
class="paginationClass"
|
||||
:current-page="formData.pageNo"
|
||||
:page-size="formData.pageSize"
|
||||
:page-sizes="[10, 20, 50, 100, 200]"
|
||||
layout="sizes, prev, pager, next"
|
||||
:total="tableData.total"
|
||||
@size-change="handleSizeChange"
|
||||
@current-change="handleCurrentChange" />
|
||||
<el-dialog v-model="addDialog"
|
||||
title="新增"
|
||||
width="28%"
|
||||
center>
|
||||
<div style="margin-bottom: 25px">
|
||||
<span style="display: inline-block; margin-right: 20px; width: 100px"
|
||||
class="col-sm-2 control-label">平台ID</span>
|
||||
<el-input v-model="addFormData.erbanNo"
|
||||
style="width: 50%"
|
||||
class="input"
|
||||
@change="getByErbanNoInfo()"></el-input>
|
||||
</div>
|
||||
<div style="margin-bottom: 25px;display: inline-block;width: 100%;">
|
||||
<span style="display: inline-block; margin-right: 20px; width: 100px"
|
||||
class="col-sm-2 control-label">用户昵称</span>
|
||||
<div>
|
||||
<span style="display: inline-block;"
|
||||
class="col-sm-2 control-label">{{ ByErbanNoInfo.nick }}</span>
|
||||
</div>
|
||||
|
||||
</div>
|
||||
<div style="margin-bottom: 25px;display: inline-block;width: 100%;">
|
||||
<span style="display: inline-block; margin-right: 20px; width: 100px"
|
||||
class="col-sm-2 control-label">用户分区</span>
|
||||
<div>
|
||||
<span style="display: inline-block;"
|
||||
class="col-sm-2 control-label">{{ ByErbanNoInfo.partitionName
|
||||
}}</span>
|
||||
</div>
|
||||
|
||||
</div>
|
||||
<div style="margin-bottom: 25px">
|
||||
<span style="display: inline-block; margin-right: 20px; width: 100px"
|
||||
class="col-sm-2 control-label">负责人</span>
|
||||
<el-input v-model="addFormData.owner"
|
||||
style="width: 50%"
|
||||
class="input"></el-input>
|
||||
</div>
|
||||
<template #footer>
|
||||
<span class="dialog-footer">
|
||||
<el-button @click="addDialog = false">取消</el-button>
|
||||
<el-button type="primary"
|
||||
@click="addFun()"
|
||||
v-if="ByErbanNoInfo.uid != ''"> 确认 </el-button>
|
||||
</span>
|
||||
</template>
|
||||
</el-dialog>
|
||||
<!-- 详情表格 -->
|
||||
<el-dialog v-model="detailsDialog"
|
||||
title="公会详情"
|
||||
width="70%"
|
||||
center>
|
||||
<!-- 内表格 -->
|
||||
<el-table v-loading="tableDetailData.loading"
|
||||
:data="tableDetailData.data"
|
||||
border
|
||||
style="width: 100%; margin-top: 25px">
|
||||
<el-table-column prop="guildId"
|
||||
align="center"
|
||||
label="公会ID" />
|
||||
<el-table-column prop="guildName"
|
||||
align="center"
|
||||
label="公会昵称" />
|
||||
<el-table-column prop="ownerErbanNo"
|
||||
align="center"
|
||||
label="公会长ID" />
|
||||
<el-table-column prop="nick"
|
||||
align="center"
|
||||
label="公会长昵称" />
|
||||
<el-table-column prop="regionName"
|
||||
align="center"
|
||||
label="所属国家" />
|
||||
<el-table-column prop="createTime"
|
||||
align="center"
|
||||
label="公会成立时间">
|
||||
<template v-slot="scope">
|
||||
{{ dateFormat(scope.row.createTime) }}
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column prop="memberNum"
|
||||
align="center"
|
||||
label="公会成员数(不包括公会长)" />
|
||||
<el-table-column prop="status"
|
||||
align="center"
|
||||
label="绑定状态">
|
||||
<template v-slot="scope">
|
||||
{{ scope.row.status == 1 ? '有效' : '无效' }}
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column align="center"
|
||||
label="操作"
|
||||
width="300">
|
||||
<template v-slot="scope">
|
||||
<el-button class="primary"
|
||||
type="primary"
|
||||
@click="
|
||||
unbindPageFun(scope.row);
|
||||
"
|
||||
size="default"
|
||||
v-if="scope.row.status == 1">解绑</el-button>
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column prop="operator"
|
||||
align="center"
|
||||
label="操作人" />
|
||||
</el-table>
|
||||
<!-- 分页 -->
|
||||
<el-pagination style="margin-top: 10px"
|
||||
class="paginationClass"
|
||||
:current-page="formDetailData.pageNo"
|
||||
:page-size="formDetailData.pageSize"
|
||||
:page-sizes="[10, 20, 50, 100, 200]"
|
||||
layout="sizes, prev, pager, next"
|
||||
:total="tableDetailData.total"
|
||||
@size-change="handleSizeChangeDetail"
|
||||
@current-change="handleCurrentChangeDetail" />
|
||||
</el-dialog>
|
||||
</div>
|
||||
</template>
|
||||
|
||||
<script>
|
||||
import { ref, onMounted, reactive, computed } from 'vue'
|
||||
import PartitionSelect from "@/views/common/partitionSelect.vue";
|
||||
import { getBdList, addBdInfo, removeBdInfo, getByErbanNo, getlistByPartitionId, getGuildsDetail, operatorGuildUnBound } from "@/api/BD/IdentitySettings.js"
|
||||
import { ElMessage, ElMessageBox } from "element-plus";
|
||||
export default {
|
||||
name: 'IdentitySettings',
|
||||
components: {
|
||||
PartitionSelect
|
||||
},
|
||||
setup () {
|
||||
const formData = reactive({
|
||||
partitionId: undefined,
|
||||
pageNo: 1,
|
||||
pageSize: 10,
|
||||
erbanNo: '',
|
||||
regionId: ''
|
||||
})
|
||||
const addFormData = reactive({
|
||||
erbanNo: '',
|
||||
uid: '',
|
||||
owner: ''
|
||||
})
|
||||
const tableData = reactive({
|
||||
data: [],
|
||||
total: 0,
|
||||
loading: false,
|
||||
})
|
||||
const ByErbanNoInfo = reactive({
|
||||
uid: '',
|
||||
partitionName: '',
|
||||
nick: ''
|
||||
})
|
||||
const formDetailData = reactive({
|
||||
bdId: '',
|
||||
pageNo: 1,
|
||||
pageSize: 10,
|
||||
})
|
||||
const tableDetailData = reactive({
|
||||
data: [],
|
||||
total: 0,
|
||||
loading: false,
|
||||
})
|
||||
const adminCountryArr = ref([])
|
||||
const addDialog = ref(false)
|
||||
const detailsDialog = ref(false)
|
||||
const getlistByPartition = (e) => {
|
||||
if (e) {
|
||||
formData.partitionId = e;
|
||||
}
|
||||
getlistByPartitionId({ partitionId: formData.partitionId, containAll: true }).then((res) => {
|
||||
if (res.code == 200) {
|
||||
adminCountryArr.value = res.data;
|
||||
}
|
||||
});
|
||||
}
|
||||
const getData = () => {
|
||||
tableData.loading = true;
|
||||
getBdList(formData).then(res => {
|
||||
if (res.code == 200) {
|
||||
tableData.data = res.data.rows
|
||||
tableData.total = res.data.total
|
||||
tableData.loading = false
|
||||
} else {
|
||||
tableData.loading = false;
|
||||
ElMessage.error(res.message)
|
||||
}
|
||||
})
|
||||
};
|
||||
const getByErbanNoInfo = () => {
|
||||
getByErbanNo({ erbanNo: addFormData.erbanNo }).then(res => {
|
||||
if (res.code == 200) {
|
||||
Object.assign(ByErbanNoInfo, res.data)
|
||||
} else {
|
||||
ElMessage.error(res.message)
|
||||
Object.assign(ByErbanNoInfo, { partitionName: '', nick: '', uid: '' })
|
||||
}
|
||||
})
|
||||
}
|
||||
// 增加
|
||||
const addFun = () => {
|
||||
if (addFormData.erbanNo == '') {
|
||||
ElMessage.error('请输入正确的用户ID')
|
||||
return
|
||||
}
|
||||
addDialog.value = false
|
||||
addBdInfo({ owner: addFormData.owner, uid: ByErbanNoInfo.uid }).then(res => {
|
||||
if (res.code == 200) {
|
||||
ElMessage.success('添加成功')
|
||||
getData()
|
||||
} else {
|
||||
ElMessage.error(res.message)
|
||||
}
|
||||
Object.assign(addFormData, { erbanNo: '', owner: '', uid: '' })
|
||||
Object.assign(ByErbanNoInfo, { partitionName: '', nick: '', uid: '' })
|
||||
})
|
||||
}
|
||||
const removePageFun = (row) => {
|
||||
ElMessageBox.confirm('确定要移除吗?', '提示', {
|
||||
confirmButtonText: '确定',
|
||||
cancelButtonText: '取消',
|
||||
type: 'warning'
|
||||
}).then(() => {
|
||||
removeBdInfo({ id: row.id }).then(res => {
|
||||
if (res.code == 200) {
|
||||
ElMessage.success('移除成功')
|
||||
getData()
|
||||
} else {
|
||||
ElMessage.error(res.message)
|
||||
}
|
||||
})
|
||||
})
|
||||
}
|
||||
// 详情
|
||||
const editFen = (row) => {
|
||||
if (row) {
|
||||
formDetailData.bdId = row.id
|
||||
}
|
||||
tableDetailData.loading = true;
|
||||
getGuildsDetail(formDetailData).then(res => {
|
||||
if (res.code == 200) {
|
||||
tableDetailData.data = res.data.rows
|
||||
tableDetailData.total = res.data.total
|
||||
tableDetailData.loading = false
|
||||
detailsDialog.value = true
|
||||
|
||||
} else {
|
||||
tableDetailData.loading = false
|
||||
ElMessage.error(res.message)
|
||||
}
|
||||
|
||||
})
|
||||
}
|
||||
// 解绑
|
||||
const unbindPageFun = (row) => {
|
||||
ElMessageBox.confirm('确定要解除绑定吗?', '提示', {
|
||||
confirmButtonText: '确定',
|
||||
cancelButtonText: '取消',
|
||||
type: 'warning'
|
||||
}).then(() => {
|
||||
operatorGuildUnBound({ bdGuildId: row.bdGuildId }).then(res => {
|
||||
if (res.code == 200) {
|
||||
ElMessage.success('解除成功')
|
||||
editFen()
|
||||
} else {
|
||||
ElMessage.error(res.message)
|
||||
}
|
||||
})
|
||||
})
|
||||
}
|
||||
const dateFormat = (row) => {
|
||||
const date = new Date(row);
|
||||
return date.format("yyyy-MM-dd hh:mm:ss");
|
||||
}
|
||||
const handleSizeChange = (val) => {
|
||||
formData.pageSize = val;
|
||||
getData();
|
||||
};
|
||||
const handleCurrentChange = (val) => {
|
||||
formData.pageNo = val;
|
||||
getData();
|
||||
};
|
||||
const handleSizeChangeDetail = (val) => {
|
||||
formDetailData.pageSize = val;
|
||||
editFen();
|
||||
};
|
||||
const handleCurrentChangeDetail = (val) => {
|
||||
formDetailData.pageNo = val;
|
||||
editFen();
|
||||
};
|
||||
return {
|
||||
formData,
|
||||
addFormData,
|
||||
tableData,
|
||||
addDialog,
|
||||
getData,
|
||||
detailsDialog,
|
||||
adminCountryArr,
|
||||
getlistByPartition,
|
||||
getByErbanNoInfo,
|
||||
ByErbanNoInfo,
|
||||
addFun,
|
||||
dateFormat,
|
||||
removePageFun,
|
||||
editFen,
|
||||
formDetailData,
|
||||
tableDetailData,
|
||||
unbindPageFun,
|
||||
handleSizeChange,
|
||||
handleCurrentChange,
|
||||
handleSizeChangeDetail,
|
||||
handleCurrentChangeDetail
|
||||
}
|
||||
}
|
||||
}
|
||||
</script>
|
||||
|
||||
<style lang="less" scoped>
|
||||
.box {
|
||||
padding-top: 20px;
|
||||
background: #ecf0f5;
|
||||
|
||||
.inquire {
|
||||
display: inline-block;
|
||||
margin-right: 20px;
|
||||
|
||||
span {
|
||||
margin-right: 10px;
|
||||
}
|
||||
|
||||
.input {
|
||||
width: 180px;
|
||||
margin-right: 10px;
|
||||
}
|
||||
}
|
||||
|
||||
.dialogTableVisibleBut {
|
||||
display: block;
|
||||
margin: 30px 0 0 830px;
|
||||
}
|
||||
|
||||
.paginationClass {
|
||||
margin: 15px 0 5px 0px;
|
||||
}
|
||||
}
|
||||
</style>
|
@@ -4,100 +4,85 @@
|
||||
<div class="inquire">
|
||||
<div class="block">
|
||||
<span class="demonstration">选择分区</span>
|
||||
<el-select
|
||||
v-model="inquire.partitionId"
|
||||
style="width: 75%"
|
||||
placeholder="请选择"
|
||||
@change="handleChange"
|
||||
>
|
||||
<el-option
|
||||
v-for="item in inquire.inquireonInfos"
|
||||
:key="item.id"
|
||||
:label="item.desc"
|
||||
:value="item.id"
|
||||
></el-option>
|
||||
<el-select v-model="inquire.partitionId"
|
||||
style="width: 75%"
|
||||
placeholder="请选择"
|
||||
@change="handleChange">
|
||||
<el-option v-for="item in inquire.inquireonInfos"
|
||||
:key="item.id"
|
||||
:label="item.desc"
|
||||
:value="item.id"></el-option>
|
||||
</el-select>
|
||||
</div>
|
||||
</div>
|
||||
<!-- 表格 -->
|
||||
<el-table
|
||||
v-loading="loading"
|
||||
:data="tableData"
|
||||
border
|
||||
style="width: 100%; margin-top: 25px"
|
||||
>
|
||||
<el-table-column prop="seq" align="center" label="排序" />
|
||||
<el-table-column prop="name" align="center" label="礼物面板类型" />
|
||||
<el-table-column prop="enable" align="center" label="是否生效">
|
||||
<el-table v-loading="loading"
|
||||
:data="tableData"
|
||||
border
|
||||
style="width: 100%; margin-top: 25px">
|
||||
<el-table-column prop="seq"
|
||||
align="center"
|
||||
label="排序" />
|
||||
<el-table-column prop="name"
|
||||
align="center"
|
||||
label="礼物面板类型" />
|
||||
<el-table-column prop="enable"
|
||||
align="center"
|
||||
label="是否生效">
|
||||
<template v-slot="scope">{{ scope.row.enable ? "是" : "否" }}</template>
|
||||
</el-table-column>
|
||||
<el-table-column align="center" label="操作">
|
||||
<el-table-column align="center"
|
||||
label="操作">
|
||||
<template v-slot="scope">
|
||||
<el-button
|
||||
@click="ediClick(scope.row)"
|
||||
class="primary"
|
||||
type="primary"
|
||||
size="default"
|
||||
>编辑</el-button
|
||||
>
|
||||
<el-button @click="ediClick(scope.row)"
|
||||
class="primary"
|
||||
type="primary"
|
||||
size="default">编辑</el-button>
|
||||
</template>
|
||||
</el-table-column>
|
||||
</el-table>
|
||||
<!-- 编辑弹窗 -->
|
||||
<el-dialog v-model="eidDialog" :title="eidDialogTitle" width="30%" center>
|
||||
<el-dialog v-model="eidDialog"
|
||||
:title="eidDialogTitle"
|
||||
width="30%"
|
||||
center>
|
||||
<!-- 礼物面板类型 -->
|
||||
<div style="margin-bottom: 25px; margin-top: 10px">
|
||||
<span
|
||||
style="display: inline-block; white-space: nowrap; margin-right: 70px"
|
||||
class="col-sm-2 control-label"
|
||||
>礼物面板类型</span
|
||||
>
|
||||
<el-input
|
||||
v-model="eidObj.type"
|
||||
style="width: 60%"
|
||||
class="input"
|
||||
placeholder="请输入"
|
||||
disabled
|
||||
></el-input>
|
||||
<span style="display: inline-block; white-space: nowrap; margin-right: 70px"
|
||||
class="col-sm-2 control-label">礼物面板类型</span>
|
||||
<el-input v-model="eidObj.type"
|
||||
style="width: 60%"
|
||||
class="input"
|
||||
placeholder="请输入"
|
||||
disabled></el-input>
|
||||
</div>
|
||||
<!-- 面板排序 -->
|
||||
<div style="margin-bottom: 25px; margin-top: 10px">
|
||||
<span
|
||||
style="display: inline-block; white-space: nowrap; margin-right: 70px"
|
||||
class="col-sm-2 control-label"
|
||||
>面板排序-{{ eidText }}</span
|
||||
>
|
||||
<el-input
|
||||
v-model="eidObj.seq"
|
||||
style="width: 60%"
|
||||
class="input"
|
||||
placeholder="请输入"
|
||||
></el-input>
|
||||
<span style="display: inline-block; white-space: nowrap; margin-right: 70px"
|
||||
class="col-sm-2 control-label">面板排序-{{ eidText }}</span>
|
||||
<el-input v-model="eidObj.seq"
|
||||
style="width: 60%"
|
||||
class="input"
|
||||
placeholder="请输入"></el-input>
|
||||
</div>
|
||||
<!-- 是否生效 -->
|
||||
<div style="margin-bottom: 25px; margin-top: 10px">
|
||||
<span
|
||||
style="display: inline-block; white-space: nowrap; margin-right: 70px"
|
||||
class="col-sm-2 control-label"
|
||||
>是否生效</span
|
||||
>
|
||||
<el-select
|
||||
v-model="eidObj.value"
|
||||
style="width: 60%"
|
||||
placeholder="请选择"
|
||||
>
|
||||
<el-option
|
||||
v-for="item in eidObj.option"
|
||||
:key="item.id"
|
||||
:label="item.desc"
|
||||
:value="item.id"
|
||||
></el-option>
|
||||
<span style="display: inline-block; white-space: nowrap; margin-right: 70px"
|
||||
class="col-sm-2 control-label">是否生效</span>
|
||||
<el-select v-model="eidObj.value"
|
||||
style="width: 60%"
|
||||
placeholder="请选择">
|
||||
<el-option v-for="item in eidObj.option"
|
||||
:key="item.id"
|
||||
:label="item.desc"
|
||||
:value="item.id"></el-option>
|
||||
</el-select>
|
||||
</div>
|
||||
<template #footer>
|
||||
<span class="dialog-footer">
|
||||
<el-button @click="eidDialog = false">取消</el-button>
|
||||
<el-button type="primary" @click="eidDialogClick()"> 确认 </el-button>
|
||||
<el-button type="primary"
|
||||
@click="eidDialogClick()"> 确认 </el-button>
|
||||
</span>
|
||||
</template>
|
||||
</el-dialog>
|
||||
@@ -105,23 +90,24 @@
|
||||
</template>
|
||||
<script>
|
||||
import { list, update } from "@/api/GiftPanelManagement/GiftPanelManagement";
|
||||
import { listAll } from "@/api/partition/partitionInfo";
|
||||
// @ts-ignore
|
||||
import { dateFormat } from "@/utils/system-helper";
|
||||
// @ts-ignore
|
||||
import { ElMessage } from "element-plus";
|
||||
export default {
|
||||
name: "GiftPanelManagement",
|
||||
data() {
|
||||
data () {
|
||||
return {
|
||||
loading: false,
|
||||
//查询所需条件对象
|
||||
inquire: {
|
||||
partitionId: 4,
|
||||
partitionId: 1,
|
||||
inquireonInfos: [
|
||||
{ desc: "英语区", id: 1 },
|
||||
{ desc: "阿拉伯区", id: 2 },
|
||||
{ desc: "华语区", id: 4 },
|
||||
{ desc: "土耳其区", id: 8 },
|
||||
// { desc: "英语区", id: 1 },
|
||||
// { desc: "阿拉伯区", id: 2 },
|
||||
// { desc: "华语区", id: 4 },
|
||||
// { desc: "土耳其区", id: 8 },
|
||||
],
|
||||
},
|
||||
// 表格
|
||||
@@ -149,14 +135,17 @@ export default {
|
||||
},
|
||||
};
|
||||
},
|
||||
created() {
|
||||
created () {
|
||||
this.eidDialogTitle = `编辑礼物面板信息-华语区`;
|
||||
this.eidText = `华语区`;
|
||||
this.getData();
|
||||
listAll().then((res) => {
|
||||
this.inquire.inquireonInfos = res.data;
|
||||
});
|
||||
},
|
||||
methods: {
|
||||
// 查询接口
|
||||
getData() {
|
||||
getData () {
|
||||
this.loading = true;
|
||||
list({
|
||||
partitionId: this.inquire.partitionId,
|
||||
@@ -165,14 +154,14 @@ export default {
|
||||
this.loading = false;
|
||||
});
|
||||
},
|
||||
ediClick(val) {
|
||||
ediClick (val) {
|
||||
this.eidDialog = true;
|
||||
this.eidObj.type = val.name;
|
||||
this.eidObj.seq = val.seq;
|
||||
this.eidObj.value = val.enable;
|
||||
this.eidObjNew = val;
|
||||
},
|
||||
eidDialogClick() {
|
||||
eidDialogClick () {
|
||||
update({
|
||||
enable: this.eidObj.value,
|
||||
id: this.eidObjNew.id,
|
||||
@@ -196,7 +185,7 @@ export default {
|
||||
}
|
||||
});
|
||||
},
|
||||
handleChange(val) {
|
||||
handleChange (val) {
|
||||
console.log(val);
|
||||
if (val == 1) {
|
||||
this.eidDialogTitle = `编辑礼物面板信息-英语区`;
|
||||
@@ -207,9 +196,15 @@ export default {
|
||||
} else if (val == 4) {
|
||||
this.eidDialogTitle = `编辑礼物面板信息-华语区`;
|
||||
this.eidText = `华语区`;
|
||||
}else if (val == 8) {
|
||||
} else if (val == 8) {
|
||||
this.eidDialogTitle = `编辑礼物面板信息-土耳其区`;
|
||||
this.eidText = `土耳其区`;
|
||||
} else if (val == 16) {
|
||||
this.eidDialogTitle = `编辑礼物面板信息-英语2区`;
|
||||
this.eidText = `英语2区`;
|
||||
}else if (val == 32) {
|
||||
this.eidDialogTitle = `编辑礼物面板信息-独联体`;
|
||||
this.eidText = `独联体`;
|
||||
}
|
||||
this.getData();
|
||||
},
|
||||
|
@@ -2,7 +2,7 @@
|
||||
<div class="outer">
|
||||
<div class="search">
|
||||
<div class="searchLeft">
|
||||
<span>用户平台ID</span>
|
||||
<span>平台ID</span>
|
||||
<el-input
|
||||
v-model="userId"
|
||||
size="default"
|
||||
@@ -10,6 +10,15 @@
|
||||
class="input"
|
||||
></el-input>
|
||||
</div>
|
||||
<div class="searchLeft">
|
||||
<span>邮箱</span>
|
||||
<el-input
|
||||
v-model="email"
|
||||
size="default"
|
||||
placeholder="邮箱"
|
||||
class="input"
|
||||
></el-input>
|
||||
</div>
|
||||
</div>
|
||||
<!-- 按钮 -->
|
||||
<div class="buttonBox">
|
||||
@@ -30,6 +39,7 @@
|
||||
<el-table-column prop="erbanNo" align="center" label="用戶id" />
|
||||
<el-table-column prop="nick" align="center" label="用戶昵称" />
|
||||
<el-table-column prop="phone" align="center" label="手机号" />
|
||||
<el-table-column prop="email" align="center" label="邮箱" />
|
||||
<el-table-column prop="signTime" align="center" label="注册时间" />
|
||||
<el-table-column prop="createTime" align="center" label="进入访问限制时间" />
|
||||
<el-table-column prop="inviteCode" align="center" label="邀请码" />
|
||||
@@ -51,6 +61,7 @@
|
||||
{{langFormat(scope.row.lang)}}
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column prop="reason" align="center" label="原因" />
|
||||
<el-table-column align="center" label="操作" width="300">
|
||||
<template v-slot="scope">
|
||||
<el-button
|
||||
@@ -128,13 +139,10 @@ export default {
|
||||
name: "AccessRestriction",
|
||||
data() {
|
||||
return {
|
||||
userId: "", //用戶id
|
||||
userId: undefined, //用戶id
|
||||
email: undefined, //用戶id
|
||||
loading: false, //列表loading
|
||||
tableData: [
|
||||
{
|
||||
erbanNo: "123123123",
|
||||
},
|
||||
], //列表数据
|
||||
tableData: [], //列表数据
|
||||
total: 10, //总页数
|
||||
currentPage: 1, //页码
|
||||
pageSize: 10, //条数
|
||||
@@ -157,6 +165,7 @@ export default {
|
||||
page: this.currentPage,
|
||||
pageSize: this.pageSize,
|
||||
userErBanNo: this.userId,
|
||||
email: this.email,
|
||||
}).then((res) => {
|
||||
this.tableData = res.data.records;
|
||||
this.loading = false;
|
||||
|
@@ -3,15 +3,7 @@
|
||||
<!-- 查询 -->
|
||||
<div class="inquire">
|
||||
<span>分区</span>
|
||||
<el-select filterable v-model="inquire.partitionId" placeholder="请选择">
|
||||
<el-option
|
||||
v-for="item in inquire.options"
|
||||
:key="item.id"
|
||||
:label="item.desc"
|
||||
:value="item.id"
|
||||
>
|
||||
</el-option>
|
||||
</el-select>
|
||||
<partition-select v-model:partition-id="inquire.partitionId" v-model:partition-infos="inquire.options" />
|
||||
</div>
|
||||
<el-button class="primary but" type="primary" @click="getData()"
|
||||
>查询</el-button
|
||||
@@ -133,6 +125,8 @@
|
||||
? "VIP"
|
||||
: scope.row.awardType == 11
|
||||
? "勋章"
|
||||
: scope.row.awardType == 13
|
||||
? "金豆"
|
||||
: "铭牌"
|
||||
}}
|
||||
</template>
|
||||
@@ -208,6 +202,8 @@
|
||||
? "VIP"
|
||||
: scope.row.awardType == 11
|
||||
? "勋章"
|
||||
: scope.row.awardType == 13
|
||||
? "金豆"
|
||||
: "铭牌"
|
||||
}}
|
||||
</template>
|
||||
@@ -552,26 +548,24 @@
|
||||
</template>
|
||||
<script>
|
||||
import {
|
||||
listPartitionInfo,
|
||||
levelList,
|
||||
levelUpdate,
|
||||
awardList,
|
||||
awardUpdate,
|
||||
awardDel,
|
||||
} from "@/api/boom/boom";
|
||||
// @ts-ignore
|
||||
import { dateFormat } from "@/utils/system-helper";
|
||||
// @ts-ignore
|
||||
import { ElMessage } from "element-plus";
|
||||
import PartitionSelect from "@/views/common/partitionSelect.vue";
|
||||
export default {
|
||||
name: "levelSet",
|
||||
components: {PartitionSelect},
|
||||
data() {
|
||||
return {
|
||||
id: "",
|
||||
loading: false,
|
||||
//查询所需条件对象
|
||||
inquire: {
|
||||
partitionId: 2,
|
||||
partitionId: undefined,
|
||||
options: [],
|
||||
},
|
||||
// 表格
|
||||
@@ -602,6 +596,7 @@ export default {
|
||||
{ desc: "VIP", value: 10 },
|
||||
{ desc: "勋章", value: 11 },
|
||||
{ desc: "铭牌", value: 2 },
|
||||
{ desc: "金豆", value: 13 },
|
||||
],
|
||||
type: "",
|
||||
typeArr: [
|
||||
@@ -633,6 +628,7 @@ export default {
|
||||
{ desc: "VIP", value: 10 },
|
||||
{ desc: "勋章", value: 11 },
|
||||
{ desc: "铭牌", value: 2 },
|
||||
{ desc: "金豆", value: 13 },
|
||||
],
|
||||
type: "",
|
||||
typeArr: [
|
||||
@@ -664,13 +660,6 @@ export default {
|
||||
pageSize: 5, //条数
|
||||
};
|
||||
},
|
||||
created() {
|
||||
listPartitionInfo().then((res) => {
|
||||
this.inquire.options = res.data;
|
||||
this.inquire.partitionId = res.data[0].id;
|
||||
this.getData();
|
||||
});
|
||||
},
|
||||
methods: {
|
||||
// 查询接口
|
||||
getData() {
|
||||
|
@@ -3,15 +3,7 @@
|
||||
<!-- 查询 -->
|
||||
<div class="inquire">
|
||||
<span>分区</span>
|
||||
<el-select filterable v-model="inquire.partitionId" placeholder="请选择">
|
||||
<el-option
|
||||
v-for="item in inquire.options"
|
||||
:key="item.id"
|
||||
:label="item.desc"
|
||||
:value="item.id"
|
||||
>
|
||||
</el-option>
|
||||
</el-select>
|
||||
<partition-select v-model:partition-id="inquire.partitionId" v-model:partition-infos="inquire.options" />
|
||||
</div>
|
||||
<div class="inquire">
|
||||
<span>房间ID:</span>
|
||||
@@ -178,6 +170,8 @@
|
||||
? "VIP"
|
||||
: scope.row.awardType == 11
|
||||
? "勋章"
|
||||
: scope.row.awardType == 13
|
||||
? "金豆"
|
||||
: "铭牌"
|
||||
}}
|
||||
</template>
|
||||
@@ -188,7 +182,11 @@
|
||||
prop="createTime"
|
||||
align="center"
|
||||
label="奖励发放时间"
|
||||
/>
|
||||
>
|
||||
<template v-slot="scope">{{
|
||||
convertTimestamp(scope.row.createTime)
|
||||
}}</template>
|
||||
</el-table-column>
|
||||
</el-table>
|
||||
<!-- 分页 -->
|
||||
<el-pagination
|
||||
@@ -214,7 +212,6 @@
|
||||
</template>
|
||||
<script>
|
||||
import {
|
||||
listPartitionInfo,
|
||||
recordList,
|
||||
detailList,
|
||||
recordExport,
|
||||
@@ -223,15 +220,17 @@ import {
|
||||
import { dateFormat } from "@/utils/system-helper";
|
||||
// @ts-ignore
|
||||
import { ElMessage } from "element-plus";
|
||||
import PartitionSelect from "@/views/common/partitionSelect.vue";
|
||||
export default {
|
||||
name: "recordData",
|
||||
components: {PartitionSelect},
|
||||
data() {
|
||||
return {
|
||||
loading: false,
|
||||
loading2: false,
|
||||
//查询所需条件对象
|
||||
inquire: {
|
||||
partitionId: 2,
|
||||
partitionId: undefined,
|
||||
options: [],
|
||||
roomId: "",
|
||||
boomLevel: "",
|
||||
@@ -258,13 +257,6 @@ export default {
|
||||
pageSize2: 10, //条数
|
||||
};
|
||||
},
|
||||
created() {
|
||||
listPartitionInfo().then((res) => {
|
||||
this.inquire.options = res.data;
|
||||
this.inquire.partitionId = res.data[0].id;
|
||||
this.getData();
|
||||
});
|
||||
},
|
||||
methods: {
|
||||
// 查询接口
|
||||
getData() {
|
||||
@@ -361,6 +353,10 @@ export default {
|
||||
endTime: endTime,
|
||||
}).then();
|
||||
},
|
||||
convertTimestamp (time) {
|
||||
let date = new Date(time);
|
||||
return date.format("yyyy-MM-dd hh:mm:ss");
|
||||
},
|
||||
// 分页详情导航
|
||||
handleSizeChange2() {
|
||||
this.detailListFun();
|
||||
|
182
src/views/boom/roomActivityApplication.vue
Normal file
182
src/views/boom/roomActivityApplication.vue
Normal file
@@ -0,0 +1,182 @@
|
||||
<template>
|
||||
<div class="box">
|
||||
<div class="inquire">
|
||||
<span>分区</span>
|
||||
<partition-select v-model:partition-id="formData.partitionId" />
|
||||
</div>
|
||||
<div class="inquire">
|
||||
<span>房间ID:</span>
|
||||
<el-input v-model="formData.roomErbanNo" placeholder="" class="input"></el-input>
|
||||
</div>
|
||||
<div class="inquire">
|
||||
<div class="block">
|
||||
<span class="demonstration">开始时间</span>
|
||||
<el-date-picker v-model="formData.startTime" type="datetime" placeholder="开始时间">
|
||||
</el-date-picker>
|
||||
</div>
|
||||
</div>
|
||||
<div class="inquire">
|
||||
<span class="demonstration">状态</span>
|
||||
<el-select v-model="formData.eventStatus" placeholder="请选择">
|
||||
<el-option label="全部" :value="-1"></el-option>
|
||||
<el-option label="待审核" :value="0"></el-option>
|
||||
<el-option label="审核通过" :value="1"></el-option>
|
||||
<el-option label="拒绝" :value="2"></el-option>
|
||||
<el-option label="删除" :value="3"></el-option>
|
||||
<el-option label="过期" :value="4"></el-option>
|
||||
</el-select>
|
||||
</div>
|
||||
<el-button style="" type="primary" @click="getData()">查询</el-button>
|
||||
<!-- 表格数据 -->
|
||||
<el-table v-loading="tableData.loading" :data="tableData.data" ref="multipleTable"
|
||||
@selection-change="handleSelectionChange" border style="width: 100%; margin-top: 25px">
|
||||
<el-table-column prop="id" align="center" label="id" />
|
||||
<el-table-column prop="roomErbanNo" align="center" label="房间ID" />
|
||||
<el-table-column prop="erbanNo" align="center" label="举办人ID" />
|
||||
<el-table-column prop="nick" align="center" label="举办人昵称" />
|
||||
<el-table-column prop="partitionDesc" align="center" label="分区" />
|
||||
<el-table-column prop="eventTopic" align="center" label="活动标题" />
|
||||
<el-table-column prop="eventDetail" align="center" label="活动内容" />
|
||||
<el-table-column prop="eventBanner" align="center" label="活动banner" >
|
||||
<template v-slot="scope">
|
||||
<el-image style="width: 100px; height: 100px" :src="scope.row.eventBanner" :zoom-rate="1.1"
|
||||
:preview-src-list="[scope.row.eventBanner]" fit="scale-down" preview-teleported="true"
|
||||
hide-on-click-modal="true" />
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column prop="eventStartTimeStr" align="center" label="开始时间" />
|
||||
<el-table-column prop="eventDuration" align="center" label="活动时长(分钟)" />
|
||||
<el-table-column prop="createTimeStr" align="center" label="提交时间" />
|
||||
<el-table-column align="center" label="操作" width="200">
|
||||
<template v-slot="scope">
|
||||
<template v-if="scope.row.eventStatus === 0">
|
||||
<el-button class="primary" type="primary" @click="
|
||||
operatorEvent(scope.row, 1);
|
||||
" size="default">同意</el-button>
|
||||
<el-button class="primary" type="danger" @click="
|
||||
operatorEvent(scope.row, 2);
|
||||
" size="default">拒绝</el-button>
|
||||
</template>
|
||||
<template v-else>
|
||||
{{ scope.row.eventStatus === 1 ? '审核通过' : scope.row.eventStatus === 2 ? '已拒绝' :
|
||||
scope.row.eventStatus === 3 ? '已删除' + '('+scope.row.remark+')' : '已过期' }}
|
||||
</template>
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column prop="operator" align="center" label="操作人" />
|
||||
</el-table>
|
||||
<!-- 分页 -->
|
||||
<el-pagination style="margin-top: 10px" class="paginationClass" :current-page="formData.pageNo"
|
||||
:page-size="formData.pageSize" :page-sizes="[10, 20, 50, 100, 200]" layout="sizes, prev, pager, next"
|
||||
:total="tableData.total" @size-change="handleSizeChange" @current-change="handleCurrentChange" />
|
||||
</div>
|
||||
</template>
|
||||
|
||||
<script>
|
||||
import { ref, onMounted, reactive } from 'vue'
|
||||
import PartitionSelect from "../common/partitionSelect.vue";
|
||||
import { ElMessage, ElMessageBox } from "element-plus";
|
||||
import { dateFormat } from "@/utils/system-helper";
|
||||
import { getListEvent, operatorListEvent } from "@/api/boom/roomActivityApplication";
|
||||
export default {
|
||||
name: "roomActivityApplication",
|
||||
components: { PartitionSelect },
|
||||
setup() {
|
||||
const formData = reactive({
|
||||
partitionId: undefined,
|
||||
roomErbanNo: '',
|
||||
startTime: '',
|
||||
eventStatus: -1,
|
||||
pageNo: 1,
|
||||
pageSize: 10,
|
||||
});
|
||||
const tableData = reactive({
|
||||
data: [],
|
||||
total: 0,
|
||||
loading: false,
|
||||
})
|
||||
const getData = () => {
|
||||
if (formData.startTime) {
|
||||
formData.startTime = dateFormat(formData.startTime, "yyyy-MM-dd hh:mm:ss")
|
||||
}
|
||||
tableData.loading = true;
|
||||
getListEvent(formData).then(res => {
|
||||
if (res.code == 200) {
|
||||
tableData.data = res.data.rows
|
||||
tableData.loading = false;
|
||||
tableData.total = res.data.total
|
||||
|
||||
} else {
|
||||
tableData.loading = false;
|
||||
ElMessage.error(res.message);
|
||||
}
|
||||
})
|
||||
};
|
||||
const operatorEvent = (row, eventStatus) => {
|
||||
const eventId = row.id;
|
||||
ElMessageBox.confirm('确认此操作吗', "提示", {
|
||||
type: "warning",
|
||||
confirmButtonText: "确定",
|
||||
cancelButtonText: "取消",
|
||||
}).then(() => {
|
||||
operatorListEvent({ eventId, eventStatus }).then(res => {
|
||||
if (res.code === 200) {
|
||||
ElMessage.success('操作成功');
|
||||
getData();
|
||||
} else {
|
||||
ElMessage.error(res.message);
|
||||
}
|
||||
})
|
||||
})
|
||||
|
||||
|
||||
}
|
||||
const handleSizeChange = (val) => {
|
||||
formData.pageSize = val;
|
||||
getData();
|
||||
};
|
||||
const handleCurrentChange = (val) => {
|
||||
formData.pageNo = val;
|
||||
getData();
|
||||
};
|
||||
return {
|
||||
formData,
|
||||
getData,
|
||||
tableData,
|
||||
handleSizeChange,
|
||||
handleCurrentChange,
|
||||
operatorEvent
|
||||
}
|
||||
}
|
||||
}
|
||||
</script>
|
||||
|
||||
<style lang="less" scoped>
|
||||
.box {
|
||||
padding-top: 20px;
|
||||
background: #ecf0f5;
|
||||
|
||||
.inquire {
|
||||
display: inline-block;
|
||||
margin-right: 20px;
|
||||
|
||||
span {
|
||||
margin-right: 10px;
|
||||
}
|
||||
|
||||
.input {
|
||||
width: 180px;
|
||||
margin-right: 10px;
|
||||
}
|
||||
}
|
||||
|
||||
.dialogTableVisibleBut {
|
||||
display: block;
|
||||
margin: 30px 0 0 830px;
|
||||
}
|
||||
|
||||
.paginationClass {
|
||||
margin: 15px 0 5px 0px;
|
||||
}
|
||||
}
|
||||
</style>
|
121
src/views/boom/roomActivityDataStatistics.vue
Normal file
121
src/views/boom/roomActivityDataStatistics.vue
Normal file
@@ -0,0 +1,121 @@
|
||||
<template>
|
||||
<div class="box">
|
||||
<div class="inquire">
|
||||
<span>分区</span>
|
||||
<partition-select v-model:partition-id="formData.partitionId" />
|
||||
</div>
|
||||
<div class="inquire">
|
||||
<span>房间ID:</span>
|
||||
<el-input v-model="formData.roomErbanNo" placeholder="" class="input"></el-input>
|
||||
</div>
|
||||
<div class="inquire">
|
||||
<div class="block">
|
||||
<span class="demonstration">开始时间</span>
|
||||
<el-date-picker v-model="formData.startTime" type="datetime" placeholder="开始时间">
|
||||
</el-date-picker>
|
||||
</div>
|
||||
</div>
|
||||
<el-button style="" type="primary" @click="getData()">查询</el-button>
|
||||
<!-- 表格数据 -->
|
||||
<el-table v-loading="tableData.loading" :data="tableData.data" ref="multipleTable"
|
||||
@selection-change="handleSelectionChange" border style="width: 100%; margin-top: 25px">
|
||||
<el-table-column prop="id" align="center" label="id" />
|
||||
<el-table-column prop="roomErbanNo" align="center" label="房间ID" />
|
||||
<el-table-column prop="erbanNo" align="center" label="举办人ID" />
|
||||
<el-table-column prop="nick" align="center" label="举办人昵称" />
|
||||
<el-table-column prop="partitionDesc" align="center" label="分区" />
|
||||
<el-table-column prop="eventStartTimeStr" align="center" label="开始时间" />
|
||||
<el-table-column prop="eventDuration" align="center" label="活动时长(分钟)" />
|
||||
<el-table-column prop="diamondNum" align="center" label="房间钻石流水" />
|
||||
<el-table-column prop="goldNum" align="center" label="房间金币流水" />
|
||||
</el-table>
|
||||
<!-- 分页 -->
|
||||
<el-pagination style="margin-top: 10px" class="paginationClass" :current-page="formData.pageNo"
|
||||
:page-size="formData.pageSize" :page-sizes="[10, 20, 50, 100, 200]" layout="sizes, prev, pager, next"
|
||||
:total="tableData.total" @size-change="handleSizeChange" @current-change="handleCurrentChange" />
|
||||
</div>
|
||||
</template>
|
||||
|
||||
<script>
|
||||
import { ref, onMounted, reactive } from 'vue'
|
||||
import PartitionSelect from "../common/partitionSelect.vue";
|
||||
import { ElMessage, ElMessageBox } from "element-plus";
|
||||
import { getUserEventDataList } from "@/api/boom/roomActivityApplication";
|
||||
export default {
|
||||
name: "roomActivityDataStatistics",
|
||||
components: { PartitionSelect },
|
||||
setup() {
|
||||
const formData = reactive({
|
||||
partitionId: undefined,
|
||||
roomErbanNo: '',
|
||||
startTime: '',
|
||||
pageNo:1,
|
||||
pageSize:10,
|
||||
});
|
||||
const tableData = reactive({
|
||||
data: [],
|
||||
total: 0,
|
||||
loading: false,
|
||||
})
|
||||
const getData = () => {
|
||||
tableData.loading = true;
|
||||
getUserEventDataList(formData).then(res => {
|
||||
if (res.code == 200) {
|
||||
tableData.data = res.data.rows
|
||||
tableData.loading = false;
|
||||
tableData.total = res.data.total
|
||||
|
||||
} else {
|
||||
tableData.loading = false;
|
||||
ElMessage.error(res.message);
|
||||
}
|
||||
})
|
||||
};
|
||||
const handleSizeChange = (val) => {
|
||||
formData.pageSize = val;
|
||||
getData();
|
||||
};
|
||||
const handleCurrentChange = (val) => {
|
||||
formData.pageNo = val;
|
||||
getData();
|
||||
};
|
||||
return {
|
||||
formData,
|
||||
getData,
|
||||
tableData,
|
||||
handleSizeChange,
|
||||
handleCurrentChange
|
||||
}
|
||||
}
|
||||
}
|
||||
</script>
|
||||
|
||||
<style lang="less" scoped>
|
||||
.box {
|
||||
padding-top: 20px;
|
||||
background: #ecf0f5;
|
||||
|
||||
.inquire {
|
||||
display: inline-block;
|
||||
margin-right: 20px;
|
||||
|
||||
span {
|
||||
margin-right: 10px;
|
||||
}
|
||||
|
||||
.input {
|
||||
width: 180px;
|
||||
margin-right: 10px;
|
||||
}
|
||||
}
|
||||
|
||||
.dialogTableVisibleBut {
|
||||
display: block;
|
||||
margin: 30px 0 0 830px;
|
||||
}
|
||||
|
||||
.paginationClass {
|
||||
margin: 15px 0 5px 0px;
|
||||
}
|
||||
}
|
||||
</style>
|
236
src/views/bravoGift/bravoGiftArrange.vue
Normal file
236
src/views/bravoGift/bravoGiftArrange.vue
Normal file
@@ -0,0 +1,236 @@
|
||||
<template>
|
||||
<div class="box">
|
||||
<div class="condition">
|
||||
<!-- 分区 -->
|
||||
<div class="inquire">
|
||||
<span>奖池</span>
|
||||
<el-select
|
||||
v-model="inquire.value"
|
||||
placeholder="请选择"
|
||||
@change="handleChange"
|
||||
>
|
||||
<el-option
|
||||
v-for="item in inquire.options"
|
||||
:key="item.type"
|
||||
:label="item.name"
|
||||
:value="item.type"
|
||||
>
|
||||
</el-option>
|
||||
</el-select>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<!-- 总分组 -->
|
||||
<div class="allArr">
|
||||
目前数组 <span>{{ allArr.length }} </span> 组:
|
||||
<span class="span" v-for="(item, index) in allArr" :key="index">
|
||||
{{ item.expect }},
|
||||
</span>
|
||||
</div>
|
||||
|
||||
<!-- 数组设置 -->
|
||||
<div class="arrSet">数组设置:</div>
|
||||
|
||||
<!-- 数组内容 -->
|
||||
<div class="boxs">
|
||||
<div class="arrContent" v-for="(item, index) in arr" :key="index">
|
||||
<div class="arrBox">
|
||||
<div class="left">
|
||||
<div class="left_in1">
|
||||
数组ID: <b class="b1">{{ item.id }}</b> ,
|
||||
</div>
|
||||
<div class="left_in1">
|
||||
期望: <b class="b1">{{ item.expect }}</b> ,
|
||||
</div>
|
||||
<div class="left_in2">
|
||||
得到率: <b class="b2">{{ (item.winRate * 100).toFixed(2) }}%</b> ,
|
||||
</div>
|
||||
</div>
|
||||
<div class="right" v-for="(arrInItem, i) in item.itemList" :key="i">
|
||||
<span>{{ arrInItem.multi }}</span>
|
||||
<el-input
|
||||
@input="handleInput(index, i, $event)"
|
||||
v-model="arrInItem.num"
|
||||
placeholder=""
|
||||
class="input"
|
||||
/>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<!-- 按钮 -->
|
||||
<div class="but">
|
||||
<el-button class="primary" type="primary" @click="saveFun()"
|
||||
>保存
|
||||
</el-button>
|
||||
</div>
|
||||
</div>
|
||||
</template>
|
||||
<script>
|
||||
import { listType, list, save } from "@/api/bravoGift/bravoGift";
|
||||
// @ts-ignore
|
||||
import { dateFormat } from "@/utils/system-helper";
|
||||
// @ts-ignore
|
||||
import { ElMessage } from "element-plus";
|
||||
import moment from "moment-timezone";
|
||||
export default {
|
||||
name: "bravoGiftArrange",
|
||||
data() {
|
||||
return {
|
||||
//查询所需条件对象
|
||||
inquire: {
|
||||
value: "",
|
||||
options: [],
|
||||
},
|
||||
allArr: [], //总数组
|
||||
arr: [], //处理下面总数组
|
||||
};
|
||||
},
|
||||
created() {
|
||||
listType().then((res) => {
|
||||
this.inquire.options = res.data;
|
||||
this.inquire.value = res.data[0].type;
|
||||
this.getData();
|
||||
});
|
||||
},
|
||||
methods: {
|
||||
// 查询接口
|
||||
getData() {
|
||||
list({ type: this.inquire.value }).then((res) => {
|
||||
this.allArr = res.data;
|
||||
this.arr = res.data;
|
||||
});
|
||||
},
|
||||
handleInput(index, i, val) {
|
||||
// 期望值 expectedvalue = 倍数 * 5 * num / 2500
|
||||
// 中奖率 winRate =不为θ的倍数的num / 500
|
||||
this.arr[index].expect = this.calculationFun(index, i, val).expect;
|
||||
this.arr[index].winRate = this.calculationFun(index, i, val).winRate;
|
||||
},
|
||||
// 计算函数
|
||||
calculationFun(index, i, val) {
|
||||
var expectNum = 0;
|
||||
var winRate = 0;
|
||||
this.arr[index].itemList.forEach((res) => {
|
||||
expectNum += res.multi * res.num;
|
||||
winRate += Number(res.num);
|
||||
});
|
||||
console.log(winRate);
|
||||
return {
|
||||
expect: (expectNum / 500).toFixed(2),
|
||||
winRate: (winRate / 500).toFixed(4),
|
||||
};
|
||||
},
|
||||
// 保存
|
||||
saveFun() {
|
||||
//
|
||||
save(
|
||||
JSON.stringify({ poolList: this.arr, type: this.inquire.value })
|
||||
).then((res) => {
|
||||
if (res.code == 200) {
|
||||
ElMessage({
|
||||
showClose: true,
|
||||
message: "保存成功",
|
||||
type: "success",
|
||||
});
|
||||
this.getData();
|
||||
} else {
|
||||
ElMessage({
|
||||
showClose: true,
|
||||
message: res.message,
|
||||
type: "error",
|
||||
});
|
||||
}
|
||||
});
|
||||
},
|
||||
// 监听类型
|
||||
handleChange(value) {
|
||||
this.inquire.value = value;
|
||||
this.getData();
|
||||
},
|
||||
},
|
||||
};
|
||||
</script>
|
||||
<style lang="less" scoped>
|
||||
.box {
|
||||
padding-top: 20px;
|
||||
background: #ecf0f5;
|
||||
font-size: 18px;
|
||||
.condition {
|
||||
margin-bottom: 20px;
|
||||
.inquire {
|
||||
display: inline-block;
|
||||
margin-right: 20px;
|
||||
span {
|
||||
margin-right: 10px;
|
||||
}
|
||||
.input {
|
||||
width: 180px;
|
||||
margin-right: 10px;
|
||||
}
|
||||
}
|
||||
}
|
||||
.but {
|
||||
margin-bottom: 20px;
|
||||
}
|
||||
.allArr {
|
||||
margin: 20px 0 10px 0;
|
||||
span {
|
||||
color: red;
|
||||
}
|
||||
.span {
|
||||
margin: 0 10px;
|
||||
}
|
||||
}
|
||||
.arrSet {
|
||||
margin-bottom: 0px;
|
||||
}
|
||||
.boxs {
|
||||
display: flex;
|
||||
// justify-content: space-between;
|
||||
flex-wrap: wrap;
|
||||
.arrContent {
|
||||
// margin-bottom: 20px;
|
||||
width: 190px;
|
||||
// height: 395px;
|
||||
line-height: 30px;
|
||||
margin-bottom: 20px;
|
||||
.arrBox {
|
||||
.left {
|
||||
// float: left;
|
||||
div {
|
||||
min-width: 100px;
|
||||
display: block;
|
||||
// margin-bottom: -25px;
|
||||
.b1 {
|
||||
color: red;
|
||||
}
|
||||
.b2 {
|
||||
color: blue;
|
||||
}
|
||||
}
|
||||
.left_in2 {
|
||||
margin-bottom: 10px
|
||||
}
|
||||
}
|
||||
.right {
|
||||
float: left;
|
||||
margin-bottom: 15px;
|
||||
span {
|
||||
display: inline-block;
|
||||
width: 45px;
|
||||
}
|
||||
.input {
|
||||
display: inline-block;
|
||||
width: 100px;
|
||||
margin-right: 10px;
|
||||
font-size: 16px;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
</style>
|
||||
|
255
src/views/bravoGift/bravoGiftData.vue
Normal file
255
src/views/bravoGift/bravoGiftData.vue
Normal file
@@ -0,0 +1,255 @@
|
||||
<template>
|
||||
<div class="box">
|
||||
<!-- ID -->
|
||||
<div class="condition">
|
||||
<!-- 分区 -->
|
||||
<div class="inquire">
|
||||
<span>分区</span>
|
||||
<partition-select v-model:partition-id="inquire.value"
|
||||
v-model:partition-infos="inquire.options"
|
||||
/>
|
||||
</div>
|
||||
<div class="inquire">
|
||||
<span>MoliStar ID</span>
|
||||
<el-input v-model="inquire.userId" placeholder="" class="input">
|
||||
</el-input>
|
||||
</div>
|
||||
<!-- 送出时间 -->
|
||||
<div class="inquire">
|
||||
<span>送出时间</span>
|
||||
<el-date-picker v-model="inquire.time" type="date" placeholder="请选择">
|
||||
</el-date-picker>
|
||||
</div>
|
||||
</div>
|
||||
<el-button type="text">总进入:{{ totalInput }}</el-button>
|
||||
<el-button type="text">总退出:{{ totalOutput }}</el-button>
|
||||
<el-button type="text"
|
||||
>总比例:{{ totalProductionRatio }}</el-button
|
||||
>
|
||||
<!-- 按钮 -->
|
||||
<div class="but">
|
||||
<el-button class="primary" type="primary" @click="getData()"
|
||||
>查询
|
||||
</el-button>
|
||||
<el-button
|
||||
@click="
|
||||
inquire.userId = '';
|
||||
inquire.time = '';
|
||||
"
|
||||
>重置筛选
|
||||
</el-button>
|
||||
<el-button
|
||||
class="primary"
|
||||
type="primary"
|
||||
style="margin-left: 20px;"
|
||||
:disabled="butClick"
|
||||
@click="
|
||||
editDialog = true;
|
||||
type = 12;
|
||||
editDialogTitle = '赠送1000倍奖励';
|
||||
value = inquire.x;
|
||||
"
|
||||
>
|
||||
赠送</el-button
|
||||
>
|
||||
</div>
|
||||
|
||||
<!-- 表格 -->
|
||||
<el-table
|
||||
v-loading="loading"
|
||||
:data="tableData"
|
||||
border
|
||||
style="width: 100%; margin-top: 25px"
|
||||
>
|
||||
<el-table-column prop="date" align="center" label="日期" />
|
||||
<el-table-column prop="uid" align="center" label="uid" />
|
||||
<el-table-column prop="erbanNo" align="center" label="平台id" />
|
||||
<el-table-column prop="totalInput" align="center" label="进入" />
|
||||
<el-table-column prop="totalOutput" align="center" label="退出" />
|
||||
<el-table-column prop="production" align="center" label="剩余" />
|
||||
<el-table-column
|
||||
prop="productionRatio"
|
||||
align="center"
|
||||
label="退出/进入"
|
||||
/>
|
||||
<el-table-column prop="avgInput" align="center" label="每次进入" />
|
||||
<el-table-column prop="num" align="center" label="总次数" />
|
||||
<el-table-column prop="winNum" align="center" label="得到次数" />
|
||||
<el-table-column prop="winRate" align="center" label="得到率" />
|
||||
</el-table>
|
||||
|
||||
<!-- 分页 -->
|
||||
<el-pagination
|
||||
style="margin-top: 10px"
|
||||
class="paginationClass"
|
||||
v-model:current-page="currentPage"
|
||||
v-model:page-size="pageSize"
|
||||
:page-sizes="[10, 20, 30, 40, 50, 100, 200, 300, 400, 500, 999999999]"
|
||||
layout="sizes, prev, pager, next"
|
||||
:total="total"
|
||||
@size-change="handleSizeChange"
|
||||
@current-change="handleCurrentChange"
|
||||
/>
|
||||
|
||||
<!-- 编辑弹窗 -->
|
||||
<el-dialog v-model="editDialog" :title="editDialogTitle" width="36%" center>
|
||||
<div style="margin-bottom: 25px; margin-top: 10px">
|
||||
<span
|
||||
style="display: inline-block; margin-right: 20px"
|
||||
class="col-sm-2 control-label"
|
||||
>{{ editDialogTitle }}</span
|
||||
>
|
||||
<el-input
|
||||
v-model="value"
|
||||
style="width: 75%"
|
||||
class="input"
|
||||
placeholder="请输入用户ID"
|
||||
></el-input>
|
||||
</div>
|
||||
|
||||
<template #footer>
|
||||
<span class="dialog-footer">
|
||||
<el-button
|
||||
@click="
|
||||
editDialog = false;
|
||||
butClick = false;
|
||||
"
|
||||
>取消</el-button
|
||||
>
|
||||
<el-button
|
||||
type="primary"
|
||||
:disabled="butClick"
|
||||
@click="editDialogClick()"
|
||||
>
|
||||
保存
|
||||
</el-button>
|
||||
</span>
|
||||
</template>
|
||||
</el-dialog>
|
||||
</div>
|
||||
</template>
|
||||
<script>
|
||||
import { personal, updateUserMulti } from "@/api/bravoGift/bravoGift";
|
||||
// @ts-ignore
|
||||
import { dateFormat } from "@/utils/system-helper";
|
||||
// @ts-ignore
|
||||
import { ElMessage } from "element-plus";
|
||||
import moment from "moment-timezone";
|
||||
import PartitionSelect from "@/views/common/partitionSelect.vue";
|
||||
export default {
|
||||
name: "bravoGiftData",
|
||||
components: {PartitionSelect},
|
||||
data() {
|
||||
return {
|
||||
loading: false,
|
||||
totalInput: 0,
|
||||
totalOutput: 0,
|
||||
totalProductionRatio: 0,
|
||||
//查询所需条件对象
|
||||
inquire: {
|
||||
userId: "",
|
||||
time: "",
|
||||
value: undefined,
|
||||
options: [],
|
||||
},
|
||||
// 表格
|
||||
tableData: [],
|
||||
// 分页
|
||||
total: 10, //总页数
|
||||
currentPage: 1, //页码
|
||||
pageSize: 10, //条数
|
||||
editDialog: false,
|
||||
editDialogTitle: "",
|
||||
value: "",
|
||||
butClick:false
|
||||
};
|
||||
},
|
||||
methods: {
|
||||
// 查询接口
|
||||
getData() {
|
||||
this.butClick = false;
|
||||
console.log(dateFormat(this.inquire.time, "yyyy-MM-dd"));
|
||||
if (!this.inquire.time && this.inquire.userId == '') {
|
||||
ElMessage({
|
||||
showClose: true,
|
||||
message: "时间和ID至少填一项",
|
||||
type: "error",
|
||||
});
|
||||
return;
|
||||
}
|
||||
this.loading = true;
|
||||
personal({
|
||||
erbanNo: this.inquire.userId,
|
||||
pageNo: this.currentPage,
|
||||
pageSize: this.pageSize,
|
||||
date: this.inquire.time
|
||||
? dateFormat(this.inquire.time, "yyyy-MM-dd")
|
||||
: null,
|
||||
partitionId: this.inquire.value,
|
||||
}).then((res) => {
|
||||
this.total = res.data.dataPage.total;
|
||||
this.tableData = res.data.dataPage.rows;
|
||||
this.totalInput = res.data.totalInput;
|
||||
this.totalOutput = res.data.totalOutput;
|
||||
this.totalProductionRatio = res.data.totalProductionRatio;
|
||||
this.loading = false;
|
||||
});
|
||||
},
|
||||
// 确认保存
|
||||
editDialogClick() {
|
||||
this.butClick = true;
|
||||
updateUserMulti({ erbanNo: this.value }).then((res) => {
|
||||
if (res.code == 200) {
|
||||
ElMessage({
|
||||
showClose: true,
|
||||
message: "赠送成功",
|
||||
type: "success",
|
||||
});
|
||||
setTimeout(() => {
|
||||
this.butClick = false;
|
||||
}, 1000);
|
||||
this.editDialog = false;
|
||||
this.getData();
|
||||
} else {
|
||||
this.butClick = false;
|
||||
ElMessage({
|
||||
showClose: true,
|
||||
message: res.message,
|
||||
type: "error",
|
||||
});
|
||||
}
|
||||
});
|
||||
},
|
||||
// 分页导航
|
||||
handleSizeChange() {
|
||||
this.getData();
|
||||
},
|
||||
handleCurrentChange() {
|
||||
this.getData();
|
||||
},
|
||||
},
|
||||
};
|
||||
</script>
|
||||
<style lang="less" scoped>
|
||||
.box {
|
||||
padding-top: 20px;
|
||||
background: #ecf0f5;
|
||||
.condition {
|
||||
margin-bottom: 20px;
|
||||
.inquire {
|
||||
display: inline-block;
|
||||
margin-right: 20px;
|
||||
span {
|
||||
margin-right: 10px;
|
||||
}
|
||||
.input {
|
||||
width: 180px;
|
||||
margin-right: 10px;
|
||||
}
|
||||
}
|
||||
}
|
||||
.but {
|
||||
margin-bottom: 20px;
|
||||
}
|
||||
}
|
||||
</style>
|
122
src/views/bravoGift/bravoGiftDataAll.vue
Normal file
122
src/views/bravoGift/bravoGiftDataAll.vue
Normal file
@@ -0,0 +1,122 @@
|
||||
<template>
|
||||
<div class="box">
|
||||
<div class="condition">
|
||||
<!-- 分区 -->
|
||||
<div class="inquire">
|
||||
<span>分区</span>
|
||||
<partition-select v-model:partition-id="inquire.value"
|
||||
v-model:partition-infos="inquire.options"
|
||||
/>
|
||||
</div>
|
||||
<!-- 时间 -->
|
||||
<!-- <div class="inquire">
|
||||
<span>时间</span>
|
||||
<el-date-picker v-model="inquire.time" type="date" placeholder="请选择">
|
||||
</el-date-picker>
|
||||
</div> -->
|
||||
</div>
|
||||
<!-- 按钮 -->
|
||||
<div class="but">
|
||||
<el-button class="primary" type="primary" @click="getData()"
|
||||
>查询
|
||||
</el-button>
|
||||
</div>
|
||||
<el-button type="text">数组出金币总额:{{ totalInput }}</el-button>
|
||||
<el-button type="text">数组出返币总额:{{ totalOutput }}</el-button>
|
||||
<el-button type="text">投产比:{{ totalProductionRatio }}</el-button>
|
||||
<!-- 表格 -->
|
||||
<el-table
|
||||
v-loading="loading"
|
||||
:data="tableData"
|
||||
border
|
||||
style="width: 100%; margin-top: 25px"
|
||||
>
|
||||
<el-table-column prop="date" align="center" label="日期" />
|
||||
<el-table-column prop="totalInput" align="center" label="进入" />
|
||||
<el-table-column prop="totalOutput" align="center" label="退出" />
|
||||
<el-table-column
|
||||
prop="productionRatio"
|
||||
align="center"
|
||||
label="退出/进入比例"
|
||||
/>
|
||||
<el-table-column prop="num" align="center" label="参与次数" />
|
||||
<el-table-column prop="count" align="center" label="参与人数" />
|
||||
<el-table-column prop="winCount" align="center" label="得到人数" />
|
||||
<el-table-column prop="winNum" align="center" label="得到次数" />
|
||||
<el-table-column prop="winRate" align="center" label="得到率" />
|
||||
</el-table>
|
||||
</div>
|
||||
</template>
|
||||
<script>
|
||||
import { platform } from "@/api/bravoGift/bravoGift";
|
||||
import PartitionSelect from "@/views/common/partitionSelect.vue";
|
||||
export default {
|
||||
name: "bravoGiftDataAll",
|
||||
components: {PartitionSelect},
|
||||
data() {
|
||||
return {
|
||||
loading: false,
|
||||
totalInput: "0",
|
||||
totalOutput: "0",
|
||||
totalProductionRatio: "0",
|
||||
//查询所需条件对象
|
||||
inquire: {
|
||||
value: undefined,
|
||||
options: [],
|
||||
time: "",
|
||||
},
|
||||
// 表格
|
||||
tableData: [],
|
||||
// 分页
|
||||
total: 10, //总页数
|
||||
currentPage: 1, //页码
|
||||
pageSize: 10, //条数
|
||||
};
|
||||
},
|
||||
methods: {
|
||||
// 查询接口
|
||||
getData() {
|
||||
this.loading = true;
|
||||
platform({
|
||||
partitionId: this.inquire.value,
|
||||
}).then((res) => {
|
||||
this.totalInput = res.data.totalInput;
|
||||
this.totalOutput = res.data.totalOutput;
|
||||
this.totalProductionRatio = res.data.totalProductionRatio;
|
||||
this.tableData = res.data.dataList;
|
||||
this.loading = false;
|
||||
});
|
||||
},
|
||||
// 分页导航
|
||||
handleSizeChange() {
|
||||
this.getData();
|
||||
},
|
||||
handleCurrentChange() {
|
||||
this.getData();
|
||||
},
|
||||
},
|
||||
};
|
||||
</script>
|
||||
<style lang="less" scoped>
|
||||
.box {
|
||||
padding-top: 20px;
|
||||
background: #ecf0f5;
|
||||
.condition {
|
||||
margin-bottom: 20px;
|
||||
.inquire {
|
||||
display: inline-block;
|
||||
margin-right: 20px;
|
||||
span {
|
||||
margin-right: 10px;
|
||||
}
|
||||
.input {
|
||||
width: 180px;
|
||||
margin-right: 10px;
|
||||
}
|
||||
}
|
||||
}
|
||||
.but {
|
||||
margin-bottom: 20px;
|
||||
}
|
||||
}
|
||||
</style>
|
552
src/views/bravoGift/bravoGiftSet.vue
Normal file
552
src/views/bravoGift/bravoGiftSet.vue
Normal file
@@ -0,0 +1,552 @@
|
||||
<template>
|
||||
<div class="box">
|
||||
<div class="condition">
|
||||
<div class="inquire">
|
||||
<span>用户上线列表</span>
|
||||
<!-- @input="handleInput" -->
|
||||
<el-input
|
||||
v-model="inquire.followErbanNoList"
|
||||
placeholder=""
|
||||
class="input"
|
||||
disabled
|
||||
></el-input>
|
||||
<el-button
|
||||
class="primary"
|
||||
type="primary"
|
||||
@click="
|
||||
editDialog = true;
|
||||
butClick = false;
|
||||
type = 11;
|
||||
editDialogTitle = '用户上线列表';
|
||||
value = inquire.followErbanNoList;
|
||||
"
|
||||
>
|
||||
编辑</el-button
|
||||
>
|
||||
</div>
|
||||
<div class="inquire">
|
||||
<span>用户W级列表</span>
|
||||
<!-- @input="handleInput" -->
|
||||
<!-- <el-input
|
||||
v-model="inquire.whiteErbanNoProductionRatioMap"
|
||||
placeholder=""
|
||||
class="input"
|
||||
disabled
|
||||
></el-input> -->
|
||||
<el-button class="primary" type="primary" @click="detailsClick">
|
||||
查看详情</el-button
|
||||
>
|
||||
</div>
|
||||
<div class="inquire">
|
||||
<span>用户B级列表</span>
|
||||
<!-- @input="handleInput" -->
|
||||
<el-input
|
||||
v-model="inquire.blackErbanNoList"
|
||||
placeholder=""
|
||||
class="input"
|
||||
disabled
|
||||
></el-input>
|
||||
<el-button
|
||||
class="primary"
|
||||
type="primary"
|
||||
@click="
|
||||
editDialog = true;
|
||||
butClick = false;
|
||||
type = 13;
|
||||
editDialogTitle = '用户B级列表';
|
||||
value = inquire.blackErbanNoList;
|
||||
"
|
||||
>
|
||||
编辑</el-button
|
||||
>
|
||||
</div>
|
||||
<!-- 分区 -->
|
||||
<div class="inquire">
|
||||
<span>分区</span>
|
||||
<partition-select v-model:partition-id="inquire.value" v-model:partition-infos="inquire.options" v-model:after-init="getData" @update:partitionId="handleChange"/>
|
||||
</div>
|
||||
|
||||
<div class="inquire">
|
||||
<span>对比值N</span>
|
||||
<!-- @input="handleInput" -->
|
||||
<el-input
|
||||
v-model="inquire.comparisonValue"
|
||||
placeholder=""
|
||||
class="input"
|
||||
disabled
|
||||
></el-input>
|
||||
<el-button
|
||||
class="primary"
|
||||
type="primary"
|
||||
@click="
|
||||
editDialog = true;
|
||||
butClick = false;
|
||||
type = 1;
|
||||
editDialogTitle = '对比值N';
|
||||
value = inquire.comparisonValue;
|
||||
"
|
||||
>
|
||||
编辑</el-button
|
||||
>
|
||||
</div>
|
||||
|
||||
<div class="inquire">
|
||||
<span>Bravo金币库存</span>
|
||||
<el-input
|
||||
v-model="inquire.goldInventory"
|
||||
placeholder=""
|
||||
class="input"
|
||||
disabled
|
||||
></el-input>
|
||||
<el-button
|
||||
class="primary"
|
||||
type="primary"
|
||||
@click="
|
||||
editDialog = true;
|
||||
butClick = false;
|
||||
type = 2;
|
||||
editDialogTitle = '幸运24金币库存';
|
||||
value = inquire.goldInventory;
|
||||
"
|
||||
>编辑</el-button
|
||||
>
|
||||
</div>
|
||||
|
||||
<!-- <div class="inquire">
|
||||
<span>幸运礼物ID</span>
|
||||
<el-input
|
||||
v-model="inquire.x"
|
||||
placeholder=""
|
||||
class="input"
|
||||
disabled
|
||||
></el-input>
|
||||
<el-button
|
||||
class="primary"
|
||||
type="primary"
|
||||
@click="
|
||||
editDialog = true;
|
||||
butClick = false;
|
||||
type = 8;
|
||||
editDialogTitle = '幸运礼物ID';
|
||||
value = inquire.x;
|
||||
"
|
||||
>
|
||||
编辑</el-button
|
||||
>
|
||||
</div> -->
|
||||
|
||||
<div class="inquire">
|
||||
<span>平台抽成</span>
|
||||
<el-input
|
||||
v-model="inquire.platformCommission"
|
||||
placeholder=""
|
||||
class="input"
|
||||
disabled
|
||||
></el-input>
|
||||
<el-button
|
||||
class="primary"
|
||||
type="primary"
|
||||
@click="
|
||||
editDialog = true;
|
||||
butClick = false;
|
||||
type = 3;
|
||||
editDialogTitle = '平台抽成';
|
||||
value = inquire.platformCommission;
|
||||
"
|
||||
>编辑</el-button
|
||||
>
|
||||
</div>
|
||||
|
||||
<div class="inquire">
|
||||
<span>用户收益比例</span>
|
||||
<el-input
|
||||
v-model="inquire.userRevenueRatio"
|
||||
placeholder=""
|
||||
class="input"
|
||||
disabled
|
||||
></el-input>
|
||||
<el-button
|
||||
class="primary"
|
||||
type="primary"
|
||||
@click="
|
||||
editDialog = true;
|
||||
butClick = false;
|
||||
type = 4;
|
||||
editDialogTitle = '用户收益比例';
|
||||
value = inquire.userRevenueRatio;
|
||||
"
|
||||
>编辑</el-button
|
||||
>
|
||||
</div>
|
||||
|
||||
<div class="inquire">
|
||||
<span>通知制定金额</span>
|
||||
<!-- @input="handleInput" -->
|
||||
<el-input
|
||||
v-model="inquire.warnMulti"
|
||||
placeholder=""
|
||||
class="input"
|
||||
disabled
|
||||
></el-input>
|
||||
<el-button
|
||||
class="primary"
|
||||
type="primary"
|
||||
@click="
|
||||
editDialog = true;
|
||||
butClick = false;
|
||||
type = 9;
|
||||
editDialogTitle = '通知制定金额';
|
||||
value = inquire.warnMulti;
|
||||
"
|
||||
>
|
||||
编辑</el-button
|
||||
>
|
||||
</div>
|
||||
|
||||
<!-- <div class="inquire">
|
||||
<span>库存告急通知</span>
|
||||
<el-input
|
||||
v-model="inquire.x"
|
||||
placeholder=""
|
||||
class="input"
|
||||
disabled
|
||||
></el-input>
|
||||
<el-button
|
||||
class="primary"
|
||||
type="primary"
|
||||
@click="
|
||||
editDialog = true;
|
||||
butClick = false;
|
||||
type = 10;
|
||||
editDialogTitle = '库存告急通知';
|
||||
value = inquire.x;
|
||||
"
|
||||
>
|
||||
编辑</el-button
|
||||
>
|
||||
</div> -->
|
||||
|
||||
|
||||
<div class="inquire">
|
||||
<span>赠送1000倍奖励</span>
|
||||
<el-button
|
||||
class="primary"
|
||||
type="primary"
|
||||
:disabled="butClick"
|
||||
@click="
|
||||
editDialog = true;
|
||||
type = 12;
|
||||
editDialogTitle = '赠送1000倍奖励';
|
||||
value = inquire.x;
|
||||
"
|
||||
>
|
||||
赠送</el-button
|
||||
>
|
||||
</div>
|
||||
</div>
|
||||
<!-- 编辑弹窗 -->
|
||||
<el-dialog v-model="editDialog" :title="editDialogTitle" width="36%" center>
|
||||
<div style="margin-bottom: 25px; margin-top: 10px">
|
||||
<span
|
||||
style="display: inline-block; margin-right: 20px"
|
||||
class="col-sm-2 control-label"
|
||||
>{{ editDialogTitle }}</span
|
||||
>
|
||||
<el-input
|
||||
v-model="value"
|
||||
style="width: 75%"
|
||||
class="input"
|
||||
placeholder="请输入"
|
||||
></el-input>
|
||||
</div>
|
||||
|
||||
<template #footer>
|
||||
<span class="dialog-footer">
|
||||
<el-button
|
||||
@click="
|
||||
editDialog = false;
|
||||
butClick = false;
|
||||
"
|
||||
>取消</el-button
|
||||
>
|
||||
<el-button
|
||||
type="primary"
|
||||
:disabled="butClick"
|
||||
@click="editDialogClick()"
|
||||
>
|
||||
保存
|
||||
</el-button>
|
||||
</span>
|
||||
</template>
|
||||
</el-dialog>
|
||||
<!-- 详情弹窗 -->
|
||||
<el-dialog v-model="detailsDialog" title="用户W级列表" width="36%" center>
|
||||
<el-button class="primary" type="primary" @click="addDetail">
|
||||
新增</el-button
|
||||
>
|
||||
<el-table :data="detailsTable" style="width: 100%">
|
||||
<el-table-column label="用户ID">
|
||||
<template v-slot="scope">
|
||||
<el-input
|
||||
v-model="scope.row.userId"
|
||||
type="number"
|
||||
@blur="handleEdit(scope.$index, scope.row)"
|
||||
></el-input>
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column label="值">
|
||||
<template v-slot="scope">
|
||||
<el-input
|
||||
v-model="scope.row.val"
|
||||
type="number"
|
||||
@blur="handleEdit(scope.$index, scope.row)"
|
||||
></el-input>
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column label="操作">
|
||||
<template v-slot="scope">
|
||||
<el-button
|
||||
class="danger"
|
||||
type="danger"
|
||||
@click="delDetail(scope.$index, scope.row)"
|
||||
>
|
||||
删除</el-button
|
||||
>
|
||||
</template>
|
||||
</el-table-column>
|
||||
<!-- 其他列 -->
|
||||
</el-table>
|
||||
|
||||
<template #footer>
|
||||
<span class="dialog-footer">
|
||||
<el-button @click="detailsDialog = false">取消</el-button>
|
||||
<el-button type="primary" :disabled="butClick" @click="sevaDetail()">
|
||||
保存
|
||||
</el-button>
|
||||
</span>
|
||||
</template>
|
||||
</el-dialog>
|
||||
</div>
|
||||
</template>
|
||||
<script>
|
||||
import { getConfig, updateSet, updateUserMulti } from "@/api/bravoGift/bravoGift";
|
||||
import { ElMessage } from "element-plus";
|
||||
import moment from "moment-timezone";
|
||||
import PartitionSelect from "../common/partitionSelect.vue";
|
||||
export default {
|
||||
name: "bravoGiftSet",
|
||||
components: {PartitionSelect},
|
||||
data() {
|
||||
return {
|
||||
loading: false,
|
||||
butClick: false,
|
||||
butClickTime: null,
|
||||
//查询所需条件对象
|
||||
inquire: {
|
||||
value: 1,
|
||||
options: [
|
||||
// {
|
||||
// name: "阿拉伯区",
|
||||
// type: 2,
|
||||
// },
|
||||
// {
|
||||
// name: "英语区",
|
||||
// type: 1,
|
||||
// },
|
||||
// {
|
||||
// name: "华语区",
|
||||
// type: 4,
|
||||
// },
|
||||
// {
|
||||
// name: "土耳其区",
|
||||
// type: 8,
|
||||
// },
|
||||
],
|
||||
comparisonValue: "",
|
||||
goldInventory: "",
|
||||
giftId: "",
|
||||
platformCommission: "",
|
||||
userRevenueRatio: "",
|
||||
warnMulti: "",
|
||||
followErbanNoList: "",
|
||||
whiteErbanNoProductionRatioMap: "",
|
||||
blackErbanNoList: "",
|
||||
},
|
||||
editDialog: false,
|
||||
editDialogTitle: "",
|
||||
detailsDialog: false,
|
||||
value: "",
|
||||
type: null,
|
||||
// 详情
|
||||
detailsTable: [],
|
||||
whiteErbanNoProductionRatioMap: null,
|
||||
};
|
||||
},
|
||||
methods: {
|
||||
// 查询接口
|
||||
getData() {
|
||||
getConfig({ partitionId: this.inquire.value }).then((res) => {
|
||||
this.inquire.comparisonValue = res.data.productionRatio;
|
||||
this.inquire.goldInventory = res.data.stock;
|
||||
this.inquire.platformCommission = res.data.platformRatio;
|
||||
this.inquire.userRevenueRatio = res.data.receiverRatio;
|
||||
this.inquire.warnMulti = res.data.warnMulti;
|
||||
this.inquire.followErbanNoList = res.data.followErbanNoList.join();
|
||||
// this.inquire.whiteErbanNoProductionRatioMap = res.data.whiteErbanNoProductionRatioMap.join();
|
||||
this.inquire.blackErbanNoList = res.data.blackErbanNoList.join();
|
||||
var newArr = [];
|
||||
var obj = res.data.whiteErbanNoProductionRatioMap;
|
||||
var arr = Object.keys(obj).map((key) => ({
|
||||
userId: key,
|
||||
val: obj[key],
|
||||
}));
|
||||
arr.forEach((res, i) => {
|
||||
newArr[i] = res;
|
||||
});
|
||||
this.detailsTable = newArr;
|
||||
});
|
||||
},
|
||||
// 查看详情按钮
|
||||
detailsClick() {
|
||||
this.getData();
|
||||
this.detailsDialog = true;
|
||||
this.type = 14;
|
||||
// this.value = inquire.whiteErbanNoProductionRatioMap;
|
||||
},
|
||||
// 详情新增按钮
|
||||
addDetail() {
|
||||
this.detailsTable.unshift([]);
|
||||
},
|
||||
// 详情删除按钮
|
||||
delDetail(index, val) {
|
||||
this.detailsTable.splice(index, 1);
|
||||
},
|
||||
// 详情确认保存按钮
|
||||
sevaDetail() {
|
||||
var map = {};
|
||||
var lock = true;
|
||||
this.detailsTable.forEach((res) => {
|
||||
if (res.userId == (undefined || "") || res.val == undefined || "") {
|
||||
lock = false;
|
||||
}
|
||||
map[res.userId] = res.val;
|
||||
});
|
||||
console.log(map);
|
||||
this.whiteErbanNoProductionRatioMap = map;
|
||||
if (lock) {
|
||||
this.editDialogClick();
|
||||
} else {
|
||||
ElMessage({
|
||||
showClose: true,
|
||||
message: "用户ID和值不能为空",
|
||||
type: "error",
|
||||
});
|
||||
}
|
||||
},
|
||||
// 详情编辑监听
|
||||
handleEdit(index, row) {
|
||||
// 这里可以添加保存逻辑,例如调用API更新服务器数据等。
|
||||
console.log(index, "保存行数据", row);
|
||||
// 示例:更新本地数据或其他操作...
|
||||
},
|
||||
// 确认保存
|
||||
editDialogClick() {
|
||||
var obj = {};
|
||||
obj.partitionId = this.inquire.value;
|
||||
if (this.type == 12) {
|
||||
this.butClick = true;
|
||||
updateUserMulti({ erbanNo: this.value }).then((res) => {
|
||||
if (res.code == 200) {
|
||||
ElMessage({
|
||||
showClose: true,
|
||||
message: "赠送成功",
|
||||
type: "success",
|
||||
});
|
||||
setTimeout(() => {
|
||||
this.butClick = false;
|
||||
}, 3000);
|
||||
this.editDialog = false;
|
||||
this.getData();
|
||||
} else {
|
||||
this.butClick = false;
|
||||
ElMessage({
|
||||
showClose: true,
|
||||
message: res.message,
|
||||
type: "error",
|
||||
});
|
||||
}
|
||||
});
|
||||
} else {
|
||||
if (this.type == 1) {
|
||||
obj.productionRatio = this.value;
|
||||
} else if (this.type == 2) {
|
||||
obj.stock = this.value;
|
||||
} else if (this.type == 3) {
|
||||
obj.platformRatio = this.value;
|
||||
} else if (this.type == 4) {
|
||||
obj.receiverRatio = this.value;
|
||||
} else if (this.type == 9) {
|
||||
obj.warnMulti = this.value;
|
||||
} else if (this.type == 11) {
|
||||
obj.followErbanNoList = this.value.split(",");
|
||||
} else if (this.type == 14) {
|
||||
obj.whiteErbanNoProductionRatioMap =
|
||||
this.whiteErbanNoProductionRatioMap;
|
||||
} else if (this.type == 13) {
|
||||
obj.blackErbanNoList = this.value.split(",");
|
||||
}
|
||||
updateSet(obj).then((res) => {
|
||||
if (res.code == 200) {
|
||||
ElMessage({
|
||||
showClose: true,
|
||||
message: "保存成功",
|
||||
type: "success",
|
||||
});
|
||||
this.editDialog = false;
|
||||
// this.detailsDialog = false;
|
||||
this.getData();
|
||||
} else {
|
||||
ElMessage({
|
||||
showClose: true,
|
||||
message: res.message,
|
||||
type: "error",
|
||||
});
|
||||
}
|
||||
});
|
||||
}
|
||||
},
|
||||
// 监听类型
|
||||
handleChange(value) {
|
||||
this.inquire.value = value;
|
||||
this.getData();
|
||||
},
|
||||
},
|
||||
};
|
||||
</script>
|
||||
<style lang="less" scoped>
|
||||
.box {
|
||||
padding-top: 20px;
|
||||
background: #ecf0f5;
|
||||
.condition {
|
||||
margin-bottom: 20px;
|
||||
.inquire {
|
||||
margin-right: 20px;
|
||||
margin-bottom: 20px;
|
||||
span {
|
||||
display: inline-block;
|
||||
width: 110px;
|
||||
margin-right: 10px;
|
||||
// text-align: right;
|
||||
}
|
||||
.input {
|
||||
width: 180px;
|
||||
margin-right: 10px;
|
||||
}
|
||||
}
|
||||
}
|
||||
.but {
|
||||
margin-bottom: 20px;
|
||||
}
|
||||
}
|
||||
</style>
|
||||
|
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
108
src/views/common/partitionRegionSelect.vue
Normal file
108
src/views/common/partitionRegionSelect.vue
Normal file
@@ -0,0 +1,108 @@
|
||||
<template>
|
||||
<!-- 使用 el-select 组件,并绑定 v-model 到 partitionId -->
|
||||
<el-select v-model="regionIdValue" :placeholder="placeholder" @change="handleChangeEvent">
|
||||
<!-- 遍历 partitionInfoList 数组,为每个 item 生成一个 el-option 组件 -->
|
||||
<el-option v-for="item in regionInfoList" :key="item.id" :label="item.name" :value="item.id">
|
||||
</el-option>
|
||||
</el-select>
|
||||
</template>
|
||||
|
||||
<script>
|
||||
import { ref, watch, onMounted } from "vue";
|
||||
import { listByPartitionId } from "@/api/partition/regionInfo";
|
||||
|
||||
export default {
|
||||
name: "partitionRegionSelect",
|
||||
// 定义组件的 props
|
||||
props: {
|
||||
partitionId: {
|
||||
type: Number,
|
||||
default: 0,
|
||||
required: true,
|
||||
},
|
||||
regionId: {
|
||||
type: Number,
|
||||
default: undefined,
|
||||
},
|
||||
regionInfos: {
|
||||
type: Array,
|
||||
default: () => [],
|
||||
},
|
||||
needAll: {
|
||||
type: Boolean,
|
||||
default: true,
|
||||
},
|
||||
placeholder: {
|
||||
type: String,
|
||||
default: "请选择地区",
|
||||
},
|
||||
handleChange: {
|
||||
type: Function,
|
||||
default: () => { },
|
||||
},
|
||||
afterInit: {
|
||||
type: Function,
|
||||
default: () => { },
|
||||
},
|
||||
},
|
||||
// 明确声明触发的事件
|
||||
emits: ["update:regionId", "update:regionInfos"],
|
||||
setup(props, { emit }) {
|
||||
// 定义响应式变量 internalValue 用于内部管理 partitionId 的值
|
||||
const partitionIdValue = ref(props.partitionId);
|
||||
// 定义响应式变量 internalValue 用于内部管理 partitionId 的值
|
||||
const regionIdValue = ref(props.regionId);
|
||||
// 定义响应式变量 partitionInfoList 用于存储分区信息列表
|
||||
const regionInfoList = ref(props.regionInfos);
|
||||
|
||||
// 监听外部传入的 partitionId 变化,并同步到 internalValue
|
||||
watch(
|
||||
() => props.partitionId,
|
||||
(newVal) => {
|
||||
partitionIdValue.value = newVal;
|
||||
|
||||
if (newVal == undefined){
|
||||
return
|
||||
}
|
||||
|
||||
loadRegionInfos()
|
||||
}
|
||||
);
|
||||
|
||||
const loadRegionInfos = () => {
|
||||
const partitionId = partitionIdValue.value;
|
||||
const needAll = props.needAll;
|
||||
const params = { partitionId, "containAll": needAll};
|
||||
listByPartitionId(params).then((res) => {
|
||||
setRegionInfos(res.data)
|
||||
}).finally(() => {
|
||||
props.afterInit()
|
||||
});
|
||||
};
|
||||
|
||||
const setRegionInfos = (data) => {
|
||||
regionInfoList.value = data;
|
||||
regionIdValue.value = data[0].id;
|
||||
|
||||
emit("update:regionId", regionIdValue.value);
|
||||
emit("update:regionInfos", regionInfoList.value);
|
||||
};
|
||||
|
||||
// 处理选择变化时触发的事件,并通过 emit 通知父组件
|
||||
const handleChangeEvent = (value) => {
|
||||
regionIdValue.value = value
|
||||
emit("update:regionId", value);
|
||||
|
||||
props.handleChange(value);
|
||||
};
|
||||
|
||||
// 返回需要暴露给模板使用的变量和方法
|
||||
return {
|
||||
partitionIdValue,
|
||||
regionIdValue,
|
||||
regionInfoList,
|
||||
handleChangeEvent,
|
||||
};
|
||||
},
|
||||
};
|
||||
</script>
|
125
src/views/common/partitionSelect.vue
Normal file
125
src/views/common/partitionSelect.vue
Normal file
@@ -0,0 +1,125 @@
|
||||
<template>
|
||||
<!-- 使用 el-select 组件,并绑定 v-model 到 partitionId -->
|
||||
<el-select v-model="partitionIdValue" :placeholder="placeholder" @change="handleChangeEvent">
|
||||
<!-- 遍历 partitionInfoList 数组,为每个 item 生成一个 el-option 组件 -->
|
||||
<el-option v-for="item in partitionInfoList" :key="item.id" :label="item.desc" :value="item.id">
|
||||
</el-option>
|
||||
</el-select>
|
||||
</template>
|
||||
|
||||
<script>
|
||||
import { ref, watch, onMounted } from "vue";
|
||||
import { getPartitionInfoList, listAll } from "@/api/partition/partitionInfo";
|
||||
|
||||
export default {
|
||||
name: "partitionSelect",
|
||||
// 定义组件的 props
|
||||
props: {
|
||||
partitionId: {
|
||||
type: Number,
|
||||
default: undefined,
|
||||
required: true,
|
||||
},
|
||||
needAllPartition: {
|
||||
type: Boolean,
|
||||
default: false,
|
||||
},
|
||||
partitionInfos: {
|
||||
type: Array,
|
||||
default: () => [],
|
||||
},
|
||||
needAll: {
|
||||
type: Boolean,
|
||||
default: false,
|
||||
},
|
||||
placeholder: {
|
||||
type: String,
|
||||
default: "请选择分区",
|
||||
},
|
||||
handleChange: {
|
||||
type: Function,
|
||||
default: () => { },
|
||||
},
|
||||
afterInit: {
|
||||
type: Function,
|
||||
default: () => { },
|
||||
},
|
||||
// 删除指定id
|
||||
deleteId:{
|
||||
type: Number,
|
||||
default: undefined,
|
||||
}
|
||||
},
|
||||
// 明确声明触发的事件
|
||||
emits: ["update:partitionId", "update:partitionInfos"],
|
||||
setup(props, { emit }) {
|
||||
// 定义响应式变量 partitionInfoList 用于存储分区信息列表
|
||||
const partitionInfoList = ref(props.partitionInfos);
|
||||
// 定义响应式变量 internalValue 用于内部管理 partitionId 的值
|
||||
const partitionIdValue = ref(props.partitionId);
|
||||
|
||||
// 监听外部传入的 partitionId 变化,并同步到 internalValue
|
||||
watch(
|
||||
() => props.partitionId,
|
||||
(newVal) => {
|
||||
partitionIdValue.value = newVal;
|
||||
}
|
||||
);
|
||||
|
||||
// 在组件挂载时加载分区信息
|
||||
onMounted(() => {
|
||||
const listDateFunc = !props.needAllPartition ? getPartitionInfoList : listAll;
|
||||
listDateFunc().then((res) => {
|
||||
setPartitionInfos(res.data)
|
||||
}).finally(() => {
|
||||
props.afterInit()
|
||||
});
|
||||
});
|
||||
|
||||
const setPartitionInfos = (data) => {
|
||||
partitionInfoList.value = data;
|
||||
|
||||
if (props.needAll) {
|
||||
partitionInfoList.value.unshift({
|
||||
id: undefined,
|
||||
desc: "全部"
|
||||
})
|
||||
}
|
||||
// 删除指定id
|
||||
if(props.deleteId){
|
||||
partitionInfoList.value.forEach((item,index)=>{
|
||||
if(item.id === props.deleteId){
|
||||
partitionInfoList.value.splice(index,1)
|
||||
}
|
||||
})
|
||||
}
|
||||
|
||||
// 优先使用父组件传入的 partitionId
|
||||
if (props.partitionId !== undefined && props.partitionId !== null) {
|
||||
partitionIdValue.value = props.partitionId;
|
||||
} else {
|
||||
// 如果父组件未传值,则使用列表第一个选项的 id
|
||||
partitionIdValue.value = partitionInfoList.value?.[0]?.id || undefined;
|
||||
}
|
||||
|
||||
emit("update:partitionId", partitionIdValue.value);
|
||||
emit("update:partitionInfos", partitionInfoList.value);
|
||||
};
|
||||
|
||||
// 处理选择变化时触发的事件,并通过 emit 通知父组件
|
||||
const handleChangeEvent = (value) => {
|
||||
partitionIdValue.value = value
|
||||
emit("update:partitionId", value);
|
||||
|
||||
props.handleChange(value);
|
||||
};
|
||||
|
||||
// 返回需要暴露给模板使用的变量和方法
|
||||
return {
|
||||
partitionIdValue,
|
||||
partitionInfoList,
|
||||
handleChangeEvent,
|
||||
};
|
||||
},
|
||||
};
|
||||
</script>
|
403
src/views/dailyCoinStatistics/dailyCoinStatistics.vue
Normal file
403
src/views/dailyCoinStatistics/dailyCoinStatistics.vue
Normal file
@@ -0,0 +1,403 @@
|
||||
<template>
|
||||
<div class="outer">
|
||||
<!-- 查询 -->
|
||||
<div class="inquire">
|
||||
<div class="block">
|
||||
<span class="demonstration">开始时间</span>
|
||||
<el-date-picker v-model="inquire.time[0]"
|
||||
type="date"
|
||||
placeholder="开始时间"
|
||||
format="YYYY-MM-DD">
|
||||
</el-date-picker>
|
||||
</div>
|
||||
</div>
|
||||
<div class="inquire">
|
||||
<div class="block">
|
||||
<span class="demonstration">结束时间</span>
|
||||
<el-date-picker v-model="inquire.time[1]"
|
||||
type="date"
|
||||
placeholder="结束时间"
|
||||
format="YYYY-MM-DD">
|
||||
</el-date-picker>
|
||||
</div>
|
||||
</div>
|
||||
<!-- 查询按钮 -->
|
||||
<el-button style=""
|
||||
type="primary"
|
||||
@click="getData()">查询</el-button>
|
||||
<!-- <el-button style="" type="primary" @click="exportDate()">导出</el-button> -->
|
||||
</div>
|
||||
|
||||
<!-- 表格 -->
|
||||
<el-table v-loading="loading"
|
||||
:data="tableData"
|
||||
border
|
||||
style="width: 100%; margin-top: 25px">
|
||||
<el-table-column prop="date"
|
||||
align="center"
|
||||
label="日期" />
|
||||
<el-table-column align="center"
|
||||
label="全平台真实消耗"
|
||||
width="">
|
||||
<template v-slot="scope">
|
||||
<el-button @click="
|
||||
detailsTitle = '全平台金币明细';
|
||||
edi(scope.row, 0);
|
||||
"
|
||||
type="text"
|
||||
size="small">
|
||||
{{ formattedNumber(scope.row.totalDiamond) }}
|
||||
</el-button>
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column align="center"
|
||||
label="阿拉伯区真实消耗"
|
||||
width="">
|
||||
<template v-slot="scope">
|
||||
<el-button @click="
|
||||
detailsTitle = '阿拉伯区金币明细';
|
||||
edi(scope.row, 2);
|
||||
"
|
||||
type="text"
|
||||
size="small">
|
||||
{{ formattedNumber(scope.row.arDiamond) }}
|
||||
</el-button>
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column align="center"
|
||||
label="英语区真实消耗"
|
||||
width="">
|
||||
<template v-slot="scope">
|
||||
<el-button @click="
|
||||
detailsTitle = '英语区金币明细';
|
||||
edi(scope.row, 1);
|
||||
"
|
||||
type="text"
|
||||
size="small">
|
||||
{{ formattedNumber(scope.row.enDiamond) }}
|
||||
</el-button>
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column align="center"
|
||||
label="华语区真实消耗"
|
||||
width="">
|
||||
<template v-slot="scope">
|
||||
<el-button @click="
|
||||
detailsTitle = '华语区金币明细';
|
||||
edi(scope.row, 4);
|
||||
"
|
||||
type="text"
|
||||
size="small">
|
||||
{{ formattedNumber(scope.row.zhDiamond) }}
|
||||
</el-button>
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column align="center"
|
||||
label="土耳其区真实消耗"
|
||||
width="">
|
||||
<template v-slot="scope">
|
||||
<el-button @click="
|
||||
detailsTitle = '土耳其区金币明细';
|
||||
edi(scope.row, 8);
|
||||
"
|
||||
type="text"
|
||||
size="small">
|
||||
{{ formattedNumber(scope.row.trDiamond) }}
|
||||
</el-button>
|
||||
</template>
|
||||
</el-table-column>
|
||||
|
||||
<el-table-column align="center"
|
||||
label="英语2区真实消耗"
|
||||
width="">
|
||||
<template v-slot="scope">
|
||||
<el-button @click="
|
||||
detailsTitle = '英语区2金币明细';
|
||||
edi(scope.row, 16);
|
||||
"
|
||||
type="text"
|
||||
size="small">
|
||||
{{ formattedNumber(scope.row.en2Diamond) }}
|
||||
</el-button>
|
||||
</template>
|
||||
</el-table-column>
|
||||
|
||||
<el-table-column prop="totalRemainDiamond"
|
||||
align="center"
|
||||
label="全平台库存">
|
||||
<template v-slot="scope">
|
||||
{{ formattedNumber(scope.row.totalRemainDiamond) }}
|
||||
</template>
|
||||
</el-table-column>
|
||||
|
||||
<el-table-column prop="arRemainDiamond"
|
||||
align="center"
|
||||
label="阿拉伯区库存">
|
||||
<template v-slot="scope">
|
||||
{{ formattedNumber(scope.row.arRemainDiamond) }}
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column prop="enRemainDiamond"
|
||||
align="center"
|
||||
label="英语区库存">
|
||||
<template v-slot="scope">
|
||||
{{ formattedNumber(scope.row.enRemainDiamond) }}
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column prop="zhRemainDiamond"
|
||||
align="center"
|
||||
label="华语区库存">
|
||||
<template v-slot="scope">
|
||||
{{ formattedNumber(scope.row.zhRemainDiamond) }}
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column prop="trRemainDiamond"
|
||||
align="center"
|
||||
label="土耳其区库存">
|
||||
<template v-slot="scope">
|
||||
{{ formattedNumber(scope.row.trRemainDiamond) }}
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column prop="en2RemainDiamond"
|
||||
align="center"
|
||||
label="英语2区库存">
|
||||
<template v-slot="scope">
|
||||
{{ formattedNumber(scope.row.en2RemainDiamond) }}
|
||||
</template>
|
||||
</el-table-column>
|
||||
</el-table>
|
||||
|
||||
<!-- 分页 -->
|
||||
<!-- <el-pagination
|
||||
style="margin-top: 10px"
|
||||
class="paginationClass"
|
||||
v-model:current-page="currentPage"
|
||||
v-model:page-size="pageSize"
|
||||
:page-sizes="[10, 20, 30, 40, 50, 100, 200, 300, 400, 500, 999999999]"
|
||||
layout="sizes, prev, pager, next"
|
||||
:total="total"
|
||||
@size-change="handleSizeChange"
|
||||
@current-change="handleCurrentChange"
|
||||
/> -->
|
||||
|
||||
<!-- 详情 -->
|
||||
<el-dialog v-model="detailsDialog"
|
||||
:title="detailsTitle"
|
||||
width="30%"
|
||||
center>
|
||||
<!-- 内表格 -->
|
||||
<el-table v-loading="loading"
|
||||
:data="tableDataIn"
|
||||
border
|
||||
style="width: 100%; margin-top: 25px">
|
||||
<el-table-column prop="domainDesc"
|
||||
align="center"
|
||||
label="类型" />
|
||||
<el-table-column prop="addDiamond"
|
||||
align="center"
|
||||
label="增加">
|
||||
<template v-slot="scope">
|
||||
{{ formattedNumber(scope.row.addDiamond) }}
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column prop="subDiamond"
|
||||
align="center"
|
||||
label="消耗">
|
||||
<template v-slot="scope">
|
||||
{{ formattedNumber(scope.row.subDiamond) }}
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column prop="subDiamond"
|
||||
align="center"
|
||||
label="留存">
|
||||
<template #default="row">
|
||||
{{ formattedNumber(totalDiamonds(row.row)) }}
|
||||
<div v-if="row.row.domainDesc ==='小游戏' || row.row.domainDesc ==='幸运数字礼物' || row.row.domainDesc ==='Bravo礼物'">
|
||||
{{ percentage(row.row) }}%
|
||||
</div>
|
||||
</template>
|
||||
</el-table-column>
|
||||
</el-table>
|
||||
<!-- 操作 -->
|
||||
<template #footer>
|
||||
<span class="dialog-footer">
|
||||
<el-button type="primary"
|
||||
class="primary"
|
||||
@click="detailsDialog = false">关闭</el-button>
|
||||
</span>
|
||||
</template>
|
||||
</el-dialog>
|
||||
</template>
|
||||
<script>
|
||||
import { diamondStatList } from "@/api/dailyCoinStatistics/dailyCoinStatistics";
|
||||
import { dateFormat } from "@/utils/system-helper";
|
||||
import { ElMessage } from "element-plus";
|
||||
export default {
|
||||
name: "dailyCoinStatistics",
|
||||
data () {
|
||||
return {
|
||||
loading: false,
|
||||
// 查询条件
|
||||
inquire: {
|
||||
time: this.calculateLastSevenDays(),
|
||||
},
|
||||
// 表格
|
||||
tableData: [{ x: "x" }],
|
||||
// 分页
|
||||
total: 10, //总页数
|
||||
currentPage: 1, //页码
|
||||
pageSize: 10, //条数
|
||||
// 内表格
|
||||
detailsDialog: false,
|
||||
detailsTitle: "金币明细",
|
||||
tableDataIn: [],
|
||||
};
|
||||
},
|
||||
created () {
|
||||
this.getData();
|
||||
},
|
||||
computed: {
|
||||
// 千分位
|
||||
formattedNumber () {
|
||||
return (num) => {
|
||||
if (num === null || num === undefined) return '';
|
||||
return Math.floor(num).toString().replace(/\B(?=(\d{3})+(?!\d))/g, ',');
|
||||
};
|
||||
},
|
||||
|
||||
},
|
||||
methods: {
|
||||
// 默认七天
|
||||
calculateLastSevenDays () {
|
||||
const end = new Date();
|
||||
const start = new Date();
|
||||
start.setTime(start.getTime() - 3600 * 1000 * 24 * 7);
|
||||
return [start, end];
|
||||
},
|
||||
totalDiamonds (row) {
|
||||
const subDiamond = Number(row.subDiamond || 0);
|
||||
const addDiamond = Number(row.addDiamond || 0);
|
||||
return subDiamond + addDiamond;
|
||||
},
|
||||
// 计算百分比,防止除零异常
|
||||
percentage (row) {
|
||||
const subDiamond = Number(row.subDiamond || 0);
|
||||
const addDiamond = Number(row.addDiamond || 0);
|
||||
|
||||
if (subDiamond === 0) {
|
||||
return '0.00'; // 防止除零错误
|
||||
}
|
||||
|
||||
|
||||
const result = (addDiamond / subDiamond) * 100;
|
||||
return result.toFixed(2); // 格式化为两位小数
|
||||
},
|
||||
// 查询
|
||||
getData () {
|
||||
this.loading = true;
|
||||
let time = this.inquire.time;
|
||||
let startTime = null;
|
||||
let endTime = null;
|
||||
if (time.length > 0) {
|
||||
startTime = this.inquire.time[0]
|
||||
? dateFormat(this.inquire.time[0], "yyyy-MM-dd")
|
||||
: null;
|
||||
endTime = this.inquire.time[1]
|
||||
? dateFormat(this.inquire.time[1], "yyyy-MM-dd")
|
||||
: null;
|
||||
}
|
||||
diamondStatList({
|
||||
startDate: startTime,
|
||||
endDate: endTime,
|
||||
// pageNo: this.currentPage,
|
||||
// pageSize: this.pageSize,
|
||||
}).then((res) => {
|
||||
if (res.code == 200) {
|
||||
// this.total = res.data.total;
|
||||
this.tableData = res.data;
|
||||
this.loading = false;
|
||||
} else {
|
||||
ElMessage({
|
||||
showClose: true,
|
||||
message: res.message,
|
||||
type: "error",
|
||||
});
|
||||
}
|
||||
});
|
||||
},
|
||||
// 详情
|
||||
edi (res, type) {
|
||||
var jsonArr =
|
||||
type == 0
|
||||
? res.totalDiamondDetail
|
||||
: type == 1
|
||||
? res.enDomainDetail
|
||||
: type == 2
|
||||
? res.arDomainDetail
|
||||
: type == 4
|
||||
? res.zhDomainDetail
|
||||
: type == 8
|
||||
? res.trDomainDetail
|
||||
: type == 16
|
||||
? res.en2DomainDetail
|
||||
: `"[""]"`;
|
||||
|
||||
this.tableDataIn = JSON.parse(jsonArr);
|
||||
this.detailsDialog = true;
|
||||
},
|
||||
// 分页导航
|
||||
handleSizeChange () {
|
||||
this.getData();
|
||||
},
|
||||
handleCurrentChange () {
|
||||
this.getData();
|
||||
},
|
||||
},
|
||||
};
|
||||
</script>
|
||||
<style lang="less" scoped>
|
||||
.outer {
|
||||
padding-top: 20px;
|
||||
background: #ecf0f5;
|
||||
border-top: 3px solid #d2d6de;
|
||||
.demonstration {
|
||||
margin-right: 20px;
|
||||
}
|
||||
.inquire {
|
||||
display: flex;
|
||||
justify-content: space-between;
|
||||
white-space: nowrap;
|
||||
float: left;
|
||||
margin-right: 20px;
|
||||
}
|
||||
.search {
|
||||
width: 100%;
|
||||
height: 41px;
|
||||
.searchLeft,
|
||||
.searchRight {
|
||||
width: 20%;
|
||||
float: left;
|
||||
span {
|
||||
margin-right: 10px;
|
||||
}
|
||||
.input {
|
||||
width: 75%;
|
||||
}
|
||||
}
|
||||
}
|
||||
.buttonBox {
|
||||
margin-top: 10px;
|
||||
}
|
||||
.authorityBox {
|
||||
.authoritySpan {
|
||||
margin-right: 20px;
|
||||
}
|
||||
.authorityInpput {
|
||||
width: 50%;
|
||||
}
|
||||
}
|
||||
.dialogTableVisibleBut {
|
||||
margin: -25px 0 20px 0px;
|
||||
}
|
||||
}
|
||||
</style>
|
375
src/views/data/basicActivityData.vue
Normal file
375
src/views/data/basicActivityData.vue
Normal file
@@ -0,0 +1,375 @@
|
||||
<template>
|
||||
<div class="box">
|
||||
<div class="inquire">
|
||||
<span>分区</span>
|
||||
<partition-select v-model:partition-id="formData.partitionId" />
|
||||
</div>
|
||||
<div class="inquire">
|
||||
<span>活动</span>
|
||||
<el-select v-model="formData.actKey" placeholder="请选择">
|
||||
<el-option
|
||||
v-for="item in actKeysArr"
|
||||
:key="item.actKey"
|
||||
:label="item.actName || item.actKey"
|
||||
:value="item.actKey"
|
||||
>
|
||||
</el-option>
|
||||
</el-select>
|
||||
</div>
|
||||
<div class="inquire">
|
||||
<span class="demonstration">日期</span>
|
||||
<el-date-picker
|
||||
v-model="dataTime"
|
||||
type="daterange"
|
||||
range-separator="至"
|
||||
start-placeholder="开始日期"
|
||||
end-placeholder="结束日期"
|
||||
value-format="YYYY-MM-DD"
|
||||
>
|
||||
</el-date-picker>
|
||||
</div>
|
||||
<el-button style="" type="primary" @click="getData()">查询</el-button>
|
||||
<el-button style="" type="primary" @click="confirmExport2Excel()"
|
||||
>导出</el-button
|
||||
>
|
||||
|
||||
<el-table
|
||||
v-loading="tableData.loading"
|
||||
:data="tableData.data"
|
||||
ref="multipleTable"
|
||||
@selection-change="handleSelectionChange"
|
||||
border
|
||||
style="width: 100%; margin-top: 25px"
|
||||
>
|
||||
<el-table-column prop="statDate" align="center" label="日期" />
|
||||
<el-table-column prop="actName" align="center" label="活动" />
|
||||
<el-table-column prop="totalUserNum" align="center" label="总参与人数" />
|
||||
<el-table-column prop="actUserNum" align="center" label="独立参与人数" />
|
||||
<el-table-column prop="actNum" align="center" label="参与总次数" />
|
||||
<!-- <el-table-column prop="guildNum" align="center" label="旗下公会数量">
|
||||
<template v-slot="scope">
|
||||
<el-button type="text" size="small" @click="editFen(scope.row)">
|
||||
{{ scope.row.guildNum }}
|
||||
</el-button>
|
||||
</template>
|
||||
</el-table-column> -->
|
||||
<el-table-column prop="perValue" align="center" label="人均参与次数" />
|
||||
<el-table-column prop="actValue" align="center" label="榜单总值" />
|
||||
|
||||
<el-table-column prop="topTen" align="center" label="榜单前10用户">
|
||||
<template v-slot="scope">
|
||||
<el-button
|
||||
type="text"
|
||||
size="small"
|
||||
@click="
|
||||
editTopTen(scope.row);
|
||||
detailsTypeDialog = 0;
|
||||
"
|
||||
>
|
||||
{{ scope.row.topTen }}
|
||||
</el-button>
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column prop="newUserNum" align="center" label="新用户数">
|
||||
<template v-slot="scope">
|
||||
<el-button
|
||||
type="text"
|
||||
size="small"
|
||||
@click="
|
||||
editNewUserNum(scope.row);
|
||||
detailsTypeDialog = 1;
|
||||
"
|
||||
>
|
||||
{{ scope.row.newUserNum }}
|
||||
</el-button>
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column prop="chargeUserNum" align="center" label="充值人数" />
|
||||
<el-table-column prop="chargeGoldNum" align="center" label="充值金额" />
|
||||
</el-table>
|
||||
<!-- 分页 -->
|
||||
<el-pagination
|
||||
style="margin-top: 10px"
|
||||
class="paginationClass"
|
||||
:current-page="formData.pageNo"
|
||||
:page-size="formData.pageSize"
|
||||
:page-sizes="[10, 20, 50, 100, 200]"
|
||||
layout="sizes, prev, pager, next"
|
||||
:total="tableData.total"
|
||||
@size-change="handleSizeChange"
|
||||
@current-change="handleCurrentChange"
|
||||
/>
|
||||
<!-- 详情表格 -->
|
||||
<el-dialog
|
||||
v-model="detailsDialog"
|
||||
:title="detailsTypeDialog == 0 ? '榜单详情' : '新用户详情'"
|
||||
width="70%"
|
||||
center
|
||||
>
|
||||
<!-- 内表格 -->
|
||||
<el-table
|
||||
v-loading="tableDetailData.loading"
|
||||
:data="tableDetailData.data"
|
||||
border
|
||||
style="width: 100%; margin-top: 25px"
|
||||
>
|
||||
<template v-if="detailsTypeDialog == 0">
|
||||
<el-table-column prop="erbanNo" align="center" label="用户ID" />
|
||||
<el-table-column prop="nick" align="center" label="用户昵称" />
|
||||
<el-table-column
|
||||
prop="partitionDesc"
|
||||
align="center"
|
||||
label="用户分区"
|
||||
/>
|
||||
<el-table-column prop="regionName" align="center" label="国家" />
|
||||
<el-table-column prop="rank" align="center" label="榜单排行" />
|
||||
<el-table-column prop="actValue" align="center" label="榜单数值" />
|
||||
</template>
|
||||
<template v-if="detailsTypeDialog == 1">
|
||||
<el-table-column prop="erbanNo" align="center" label="用户ID" />
|
||||
<el-table-column prop="nick" align="center" label="用户昵称" />
|
||||
<el-table-column
|
||||
prop="partitionDesc"
|
||||
align="center"
|
||||
label="用户分区"
|
||||
/>
|
||||
<el-table-column prop="signTime" align="center" label="注册时间" />
|
||||
<el-table-column
|
||||
prop="chargeGoleNum"
|
||||
align="center"
|
||||
label="充值金额"
|
||||
/>
|
||||
</template>
|
||||
</el-table>
|
||||
<!-- 分页 -->
|
||||
<el-pagination
|
||||
style="margin-top: 10px"
|
||||
class="paginationClass"
|
||||
:current-page="formDetailData.pageNo"
|
||||
:page-size="formDetailData.pageSize"
|
||||
:page-sizes="[10, 20, 50, 100, 200]"
|
||||
layout="sizes, prev, pager, next"
|
||||
:total="tableDetailData.total"
|
||||
@size-change="handleSizeChangeDetail"
|
||||
@current-change="handleCurrentChangeDetail"
|
||||
/>
|
||||
</el-dialog>
|
||||
</div>
|
||||
</template>
|
||||
|
||||
<script>
|
||||
import { ref, onMounted, reactive, computed } from "vue";
|
||||
import PartitionSelect from "@/views/common/partitionSelect.vue";
|
||||
import { ElMessage, ElMessageBox } from "element-plus";
|
||||
import { formatDate } from "@/utils/relDate";
|
||||
import {
|
||||
getActKeysList,
|
||||
getDataList,
|
||||
getNewUsersList,
|
||||
getRankList,
|
||||
exportActivityDayTotal,
|
||||
} from "@/api/basicActivityData/basicActivityData";
|
||||
export default {
|
||||
name: "basicActivityData",
|
||||
components: {
|
||||
PartitionSelect,
|
||||
},
|
||||
setup() {
|
||||
const formData = reactive({
|
||||
partitionId: undefined,
|
||||
pageNo: 1,
|
||||
pageSize: 10,
|
||||
startDate: "",
|
||||
endDate: "",
|
||||
actKey: "",
|
||||
});
|
||||
const tableData = reactive({
|
||||
data: [],
|
||||
total: 0,
|
||||
loading: false,
|
||||
});
|
||||
const formDetailData = reactive({
|
||||
pageNo: 1,
|
||||
pageSize: 10,
|
||||
partitionId: "",
|
||||
actKey: "",
|
||||
statDate: "",
|
||||
});
|
||||
const tableDetailData = reactive({
|
||||
data: [],
|
||||
total: 0,
|
||||
loading: false,
|
||||
});
|
||||
const detailsDialog = ref(false);
|
||||
const detailsTypeDialog = ref(0); //0榜单详情 1新用户详情
|
||||
const dataTime = ref("");
|
||||
const actKeysArr = ref([]);
|
||||
const getData = () => {
|
||||
tableData.loading = true;
|
||||
if (dataTime.value && dataTime.value.length > 0) {
|
||||
formData.startDate = dataTime.value[0];
|
||||
formData.endDate = dataTime.value[1];
|
||||
console.log(dataTime.value);
|
||||
} else {
|
||||
formData.startDate = dataTime.value;
|
||||
formData.endDate = dataTime.value;
|
||||
}
|
||||
getDataList(formData).then((res) => {
|
||||
if (res.code == 200) {
|
||||
tableData.data = res.data.rows;
|
||||
tableData.total = res.data.total;
|
||||
tableData.loading = false;
|
||||
} else {
|
||||
tableData.loading = false;
|
||||
ElMessage.error(res.message);
|
||||
}
|
||||
});
|
||||
};
|
||||
// 导出
|
||||
const confirmExport2Excel = async () => {
|
||||
// Object.assign(formData, { pageSize: 10000, pageNo: 1 });
|
||||
try {
|
||||
const res = await exportActivityDayTotal(formData);
|
||||
if (res) {
|
||||
ElMessage({
|
||||
message: "导出成功",
|
||||
type: "success",
|
||||
});
|
||||
let time = formatDate(new Date());
|
||||
let alink = document.createElement("a");
|
||||
alink.download = `活动基本数据统计${time}.xls`;
|
||||
alink.style.display = "none";
|
||||
const blob = new Blob([res]);
|
||||
alink.href = URL.createObjectURL(blob);
|
||||
document.body.appendChild(alink);
|
||||
alink.click();
|
||||
URL.revokeObjectURL(alink.href);
|
||||
}
|
||||
} catch (error) {
|
||||
ElMessage({
|
||||
message: error.message,
|
||||
type: "error",
|
||||
});
|
||||
}
|
||||
};
|
||||
// 榜单详情
|
||||
const editTopTen = (row) => {
|
||||
if (row) {
|
||||
formDetailData.actKey = row.actKey;
|
||||
formDetailData.partitionId = formData.partitionId;
|
||||
formDetailData.statDate = row.statDate;
|
||||
}
|
||||
tableDetailData.loading = true;
|
||||
getRankList(formDetailData).then((res) => {
|
||||
if (res.code == 200) {
|
||||
tableDetailData.data = res.data.rows;
|
||||
tableDetailData.total = res.data.total;
|
||||
tableDetailData.loading = false;
|
||||
detailsDialog.value = true;
|
||||
} else {
|
||||
tableDetailData.loading = false;
|
||||
ElMessage.error(res.message);
|
||||
}
|
||||
});
|
||||
};
|
||||
// 新用户详情
|
||||
const editNewUserNum = (row) => {
|
||||
if (row) {
|
||||
formDetailData.actKey = row.actKey;
|
||||
formDetailData.partitionId = formData.partitionId;
|
||||
formDetailData.statDate = row.statDate;
|
||||
}
|
||||
tableDetailData.loading = true;
|
||||
getNewUsersList(formDetailData).then((res) => {
|
||||
if (res.code == 200) {
|
||||
tableDetailData.data = res.data.rows;
|
||||
tableDetailData.total = res.data.total;
|
||||
tableDetailData.loading = false;
|
||||
detailsDialog.value = true;
|
||||
} else {
|
||||
tableDetailData.loading = false;
|
||||
ElMessage.error(res.message);
|
||||
}
|
||||
});
|
||||
};
|
||||
|
||||
const handleSizeChange = (val) => {
|
||||
formData.pageSize = val;
|
||||
getData();
|
||||
};
|
||||
const handleCurrentChange = (val) => {
|
||||
formData.pageNo = val;
|
||||
getData();
|
||||
};
|
||||
const handleSizeChangeDetail = (val) => {
|
||||
formDetailData.pageSize = val;
|
||||
if (detailsTypeDialog.value == 0) {
|
||||
editTopTen();
|
||||
} else {
|
||||
editNewUserNum();
|
||||
}
|
||||
};
|
||||
const handleCurrentChangeDetail = (val) => {
|
||||
formDetailData.pageNo = val;
|
||||
if (detailsTypeDialog.value == 0) {
|
||||
editTopTen();
|
||||
} else {
|
||||
editNewUserNum();
|
||||
}
|
||||
};
|
||||
onMounted(() => {
|
||||
getActKeysList().then((res) => {
|
||||
actKeysArr.value = res.data;
|
||||
});
|
||||
});
|
||||
return {
|
||||
formData,
|
||||
tableData,
|
||||
dataTime,
|
||||
getData,
|
||||
handleSizeChange,
|
||||
handleCurrentChange,
|
||||
confirmExport2Excel,
|
||||
actKeysArr,
|
||||
detailsDialog,
|
||||
tableDetailData,
|
||||
formDetailData,
|
||||
editTopTen,
|
||||
handleSizeChangeDetail,
|
||||
handleCurrentChangeDetail,
|
||||
editNewUserNum,
|
||||
detailsTypeDialog,
|
||||
};
|
||||
},
|
||||
};
|
||||
</script>
|
||||
|
||||
<style lang="less" scoped>
|
||||
.box {
|
||||
padding-top: 20px;
|
||||
background: #ecf0f5;
|
||||
|
||||
.inquire {
|
||||
display: inline-block;
|
||||
margin-right: 20px;
|
||||
|
||||
span {
|
||||
margin-right: 10px;
|
||||
}
|
||||
|
||||
.input {
|
||||
width: 180px;
|
||||
margin-right: 10px;
|
||||
}
|
||||
}
|
||||
|
||||
.dialogTableVisibleBut {
|
||||
display: block;
|
||||
margin: 30px 0 0 830px;
|
||||
}
|
||||
|
||||
.paginationClass {
|
||||
margin: 15px 0 5px 0px;
|
||||
}
|
||||
}
|
||||
</style>
|
398
src/views/data/guildStatisticsData.vue
Normal file
398
src/views/data/guildStatisticsData.vue
Normal file
@@ -0,0 +1,398 @@
|
||||
<template>
|
||||
<!-- 表格 -->
|
||||
<el-table
|
||||
v-loading="loading"
|
||||
:data="tableData"
|
||||
border
|
||||
style="width: 100%; margin-top: 25px"
|
||||
>
|
||||
<el-table-column align="center" label="日期" width="220px">
|
||||
<template v-slot="scope">
|
||||
{{ scope.row.date }} ~ {{ scope.row.endDate }}
|
||||
</template>
|
||||
</el-table-column>
|
||||
|
||||
<el-table-column
|
||||
prop="totalNewCount"
|
||||
align="center"
|
||||
label="全服公会总新增"
|
||||
/>
|
||||
|
||||
<el-table-column align="center" label="阿拉伯公会总新增" width="">
|
||||
<template v-slot="scope">
|
||||
<el-button
|
||||
@click="
|
||||
detailsTitle = '阿拉伯公会总新增' + scope.row.date;
|
||||
edi(scope.row.arNewCountDetail, false);
|
||||
"
|
||||
type="text"
|
||||
size="small"
|
||||
>
|
||||
{{ scope.row.arNewCount }}
|
||||
</el-button>
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column align="center" label="英语区总新增" width="">
|
||||
<template v-slot="scope">
|
||||
<el-button
|
||||
@click="
|
||||
detailsTitle = '英语区总新增' + scope.row.date;
|
||||
edi(scope.row.enNewCountDetail, false);
|
||||
"
|
||||
type="text"
|
||||
size="small"
|
||||
>
|
||||
{{ scope.row.enNewCount }}
|
||||
</el-button>
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column align="center" label="华语区总新增" width="">
|
||||
<template v-slot="scope">
|
||||
<el-button
|
||||
@click="
|
||||
detailsTitle = '华语区总新增' + scope.row.date;
|
||||
edi(scope.row.zhNewCountDetail, false);
|
||||
"
|
||||
type="text"
|
||||
size="small"
|
||||
>
|
||||
{{ scope.row.zhNewCount }}
|
||||
</el-button>
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column align="center" label="土耳其区总新增" width="">
|
||||
<template v-slot="scope">
|
||||
<el-button
|
||||
@click="
|
||||
detailsTitle = '土耳其区总新增' + scope.row.date;
|
||||
edi(scope.row.trNewCountDetail, false);
|
||||
"
|
||||
type="text"
|
||||
size="small"
|
||||
>
|
||||
{{ scope.row.trNewCount }}
|
||||
</el-button>
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column align="center" label="英语2区总新增" width="">
|
||||
<template v-slot="scope">
|
||||
<el-button
|
||||
@click="
|
||||
detailsTitle = '英语2区总新增' + scope.row.date;
|
||||
edi(scope.row.en2NewCountDetail, false);
|
||||
"
|
||||
type="text"
|
||||
size="small"
|
||||
>
|
||||
{{ scope.row.en2NewCount }}
|
||||
</el-button>
|
||||
</template>
|
||||
</el-table-column>
|
||||
|
||||
<el-table-column
|
||||
prop="totalActiveCount"
|
||||
align="center"
|
||||
label="全服公会活跃度"
|
||||
/>
|
||||
|
||||
<el-table-column align="center" label="阿拉伯公会活跃度" width="">
|
||||
<template v-slot="scope">
|
||||
<el-button
|
||||
@click="
|
||||
detailsTitle = '阿拉伯公会活跃度' + scope.row.date;
|
||||
edi(scope.row.arActiveCountDetail, true);
|
||||
"
|
||||
type="text"
|
||||
size="small"
|
||||
>
|
||||
{{ scope.row.arActiveCount }}
|
||||
</el-button>
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column align="center" label="英语区活跃度" width="">
|
||||
<template v-slot="scope">
|
||||
<el-button
|
||||
@click="
|
||||
detailsTitle = '英语区活跃度' + scope.row.date;
|
||||
edi(scope.row.enActiveCountDetail, true);
|
||||
"
|
||||
type="text"
|
||||
size="small"
|
||||
>
|
||||
{{ scope.row.enActiveCount }}
|
||||
</el-button>
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column align="center" label="华语区活跃度" width="">
|
||||
<template v-slot="scope">
|
||||
<el-button
|
||||
@click="
|
||||
detailsTitle = '华语区活跃度' + scope.row.date;
|
||||
edi(scope.row.zhActiveCountDetail, true);
|
||||
"
|
||||
type="text"
|
||||
size="small"
|
||||
>
|
||||
{{ scope.row.zhActiveCount }}
|
||||
</el-button>
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column align="center" label="土耳其区活跃度" width="">
|
||||
<template v-slot="scope">
|
||||
<el-button
|
||||
@click="
|
||||
detailsTitle = '土耳其区活跃度' + scope.row.date;
|
||||
edi(scope.row.trActiveCountDetail, true);
|
||||
"
|
||||
type="text"
|
||||
size="small"
|
||||
>
|
||||
{{ scope.row.trActiveCount }}
|
||||
</el-button>
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column align="center" label="英语2区活跃度" width="">
|
||||
<template v-slot="scope">
|
||||
<el-button
|
||||
@click="
|
||||
detailsTitle = '英语2区活跃度' + scope.row.date;
|
||||
edi(scope.row.en2ActiveCountDetail, true);
|
||||
"
|
||||
type="text"
|
||||
size="small"
|
||||
>
|
||||
{{ scope.row.en2ActiveCount }}
|
||||
</el-button>
|
||||
</template>
|
||||
</el-table-column>
|
||||
</el-table>
|
||||
|
||||
<!-- 分页 -->
|
||||
<!-- <el-pagination
|
||||
style="margin-top: 10px"
|
||||
class="paginationClass"
|
||||
v-model:current-page="currentPage"
|
||||
v-model:page-size="pageSize"
|
||||
:page-sizes="[10, 20, 30, 40, 50, 100, 200, 300, 400, 500, 999999999]"
|
||||
layout="sizes, prev, pager, next"
|
||||
:total="total"
|
||||
@size-change="handleSizeChange"
|
||||
@current-change="handleCurrentChange"
|
||||
/> -->
|
||||
|
||||
<!-- 详情 -->
|
||||
<el-dialog v-model="detailsDialog" :title="detailsTitle" width="50%" center>
|
||||
<!-- 内表格 -->
|
||||
<el-table
|
||||
v-loading="loading"
|
||||
:data="tableDataIn"
|
||||
border
|
||||
style="width: 100%; margin-top: 25px"
|
||||
>
|
||||
<el-table-column prop="date" align="center" label="日期" />
|
||||
<el-table-column prop="endDate" align="center" label="结束时间" />
|
||||
<el-table-column prop="guildId" align="center" label="公会ID" />
|
||||
<el-table-column prop="ownerErbanNo" align="center" label="公会长ID" />
|
||||
<el-table-column
|
||||
prop="ownerRegionName"
|
||||
align="center"
|
||||
label="公会长所属国家"
|
||||
/>
|
||||
<el-table-column prop="operatorName" align="center" label="公会负责人" />
|
||||
<el-table-column
|
||||
prop="activeMemberCount"
|
||||
align="center"
|
||||
label="本周收礼主播数"
|
||||
/>
|
||||
<el-table-column
|
||||
prop="guildGoldFlow"
|
||||
align="center"
|
||||
label="本周公会钻石流水"
|
||||
>
|
||||
<template v-slot="scope">
|
||||
{{
|
||||
formattedNumber(scope.row.guildGoldFlow)
|
||||
}}
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column
|
||||
prop="guildDiamondFlow"
|
||||
align="center"
|
||||
label="本周公会金币流水"
|
||||
>
|
||||
<template v-slot="scope">
|
||||
{{
|
||||
formattedNumber(scope.row.guildDiamondFlow)
|
||||
}}
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column
|
||||
prop="lastGuildGoldFlow"
|
||||
align="center"
|
||||
label="上周公会钻石流水"
|
||||
v-if="detailsIsShow"
|
||||
/>
|
||||
<el-table-column
|
||||
prop="guildGoldFlowWow"
|
||||
align="center"
|
||||
label="周环比"
|
||||
v-if="detailsIsShow"
|
||||
>
|
||||
<template v-slot="scope">
|
||||
{{
|
||||
scope.row.lastGuildGoldFlow === 0
|
||||
? "--"
|
||||
: formatPercentage(
|
||||
scope.row.guildGoldFlow / scope.row.lastGuildGoldFlow
|
||||
) + "%"
|
||||
}}
|
||||
</template>
|
||||
</el-table-column>
|
||||
</el-table>
|
||||
<!-- 操作 -->
|
||||
<template #footer>
|
||||
<span class="dialog-footer">
|
||||
<el-button type="primary" class="primary" @click="detailsDialog = false"
|
||||
>关闭</el-button
|
||||
>
|
||||
</span>
|
||||
</template>
|
||||
</el-dialog>
|
||||
</template>
|
||||
<script>
|
||||
import { guiildPage } from "@/api/statistics/statistics";
|
||||
import { dateFormat } from "@/utils/system-helper";
|
||||
import { ElMessage } from "element-plus";
|
||||
export default {
|
||||
name: "guildStatisticsData",
|
||||
data() {
|
||||
return {
|
||||
loading: false,
|
||||
// 查询条件
|
||||
inquire: {
|
||||
time: [],
|
||||
},
|
||||
// 表格
|
||||
tableData: [],
|
||||
// 分页
|
||||
total: 10, //总页数
|
||||
currentPage: 1, //页码
|
||||
pageSize: 10, //条数
|
||||
// 内表格
|
||||
detailsDialog: false,
|
||||
detailsTitle: "金币明细",
|
||||
tableDataIn: [],
|
||||
detailsIsShow: false,
|
||||
};
|
||||
},
|
||||
created() {
|
||||
this.getData();
|
||||
},
|
||||
computed: {
|
||||
// 千分位
|
||||
formattedNumber() {
|
||||
return (num) => {
|
||||
if (num === null || num === undefined) return "";
|
||||
return Math.floor(num)
|
||||
.toString()
|
||||
.replace(/\B(?=(\d{3})+(?!\d))/g, ",");
|
||||
};
|
||||
},
|
||||
},
|
||||
methods: {
|
||||
// 查询
|
||||
getData() {
|
||||
this.loading = true;
|
||||
let time = this.inquire.time;
|
||||
let startTime = null;
|
||||
let endTime = null;
|
||||
if (time.length > 0) {
|
||||
startTime = this.inquire.time[0]
|
||||
? dateFormat(this.inquire.time[0], "yyyy-MM-dd hh:mm:ss")
|
||||
: null;
|
||||
endTime = this.inquire.time[1]
|
||||
? dateFormat(this.inquire.time[1], "yyyy-MM-dd hh:mm:ss")
|
||||
: null;
|
||||
}
|
||||
guiildPage({
|
||||
page: this.currentPage,
|
||||
pageSize: this.pageSize,
|
||||
}).then((res) => {
|
||||
if (res.code == 200) {
|
||||
this.total = res.data.total;
|
||||
this.tableData = res.data.rows;
|
||||
this.loading = false;
|
||||
} else {
|
||||
ElMessage({
|
||||
showClose: true,
|
||||
message: res.message,
|
||||
type: "error",
|
||||
});
|
||||
}
|
||||
});
|
||||
},
|
||||
// 详情
|
||||
edi(res, type) {
|
||||
this.detailsIsShow = type;
|
||||
this.tableDataIn = JSON.parse(res);
|
||||
this.detailsDialog = true;
|
||||
},
|
||||
formatPercentage(value) {
|
||||
return parseFloat((value * 100).toFixed(2));
|
||||
},
|
||||
// 分页导航
|
||||
handleSizeChange() {
|
||||
this.getData();
|
||||
},
|
||||
handleCurrentChange() {
|
||||
this.getData();
|
||||
},
|
||||
},
|
||||
};
|
||||
</script>
|
||||
<style lang="less" scoped>
|
||||
.outer {
|
||||
padding-top: 20px;
|
||||
background: #ecf0f5;
|
||||
border-top: 3px solid #d2d6de;
|
||||
.demonstration {
|
||||
margin-right: 20px;
|
||||
}
|
||||
.inquire {
|
||||
display: flex;
|
||||
justify-content: space-between;
|
||||
white-space: nowrap;
|
||||
float: left;
|
||||
margin-right: 20px;
|
||||
}
|
||||
.search {
|
||||
width: 100%;
|
||||
height: 41px;
|
||||
.searchLeft,
|
||||
.searchRight {
|
||||
width: 20%;
|
||||
float: left;
|
||||
span {
|
||||
margin-right: 10px;
|
||||
}
|
||||
.input {
|
||||
width: 75%;
|
||||
}
|
||||
}
|
||||
}
|
||||
.buttonBox {
|
||||
margin-top: 10px;
|
||||
}
|
||||
.authorityBox {
|
||||
.authoritySpan {
|
||||
margin-right: 20px;
|
||||
}
|
||||
.authorityInpput {
|
||||
width: 50%;
|
||||
}
|
||||
}
|
||||
.dialogTableVisibleBut {
|
||||
margin: -25px 0 20px 0px;
|
||||
}
|
||||
}
|
||||
</style>
|
260
src/views/data/newOverview.vue
Normal file
260
src/views/data/newOverview.vue
Normal file
@@ -0,0 +1,260 @@
|
||||
<template>
|
||||
<!-- 表格 -->
|
||||
<el-table v-loading="loading"
|
||||
:data="tableData"
|
||||
border
|
||||
style="width: 100%; margin-top: 25px">
|
||||
<el-table-column prop="date"
|
||||
align="center"
|
||||
label="日期" />
|
||||
<el-table-column prop="accountCount"
|
||||
align="center"
|
||||
label="新总注册" />
|
||||
<el-table-column prop="userCount"
|
||||
align="center"
|
||||
label="新完善资料" />
|
||||
<el-table-column prop="userRatio"
|
||||
align="center"
|
||||
label="完善率" />
|
||||
|
||||
<el-table-column align="center"
|
||||
label="阿拉伯区新注册(完善资料)"
|
||||
width="">
|
||||
<template v-slot="scope">
|
||||
<el-button @click="
|
||||
detailsTitle = '阿拉伯区注册明细' + scope.row.date;
|
||||
edi(scope.row.arCountDetail, 2);
|
||||
"
|
||||
type="text"
|
||||
size="small">
|
||||
{{ scope.row.arCount }}
|
||||
</el-button>
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column align="center"
|
||||
label="英语区新注册(完善资料)"
|
||||
width="">
|
||||
<template v-slot="scope">
|
||||
<el-button @click="
|
||||
detailsTitle = '英语区注册明细' + scope.row.date;
|
||||
edi(scope.row.enCountDetail, 1);
|
||||
"
|
||||
type="text"
|
||||
size="small">
|
||||
{{ scope.row.enCount }}
|
||||
</el-button>
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column align="center"
|
||||
label="华语区新注册(完善资料)"
|
||||
width="">
|
||||
<template v-slot="scope">
|
||||
<el-button @click="
|
||||
detailsTitle = '华语区注册明细' + scope.row.date;
|
||||
edi(scope.row.zhCountDetail, 4);
|
||||
"
|
||||
type="text"
|
||||
size="small">
|
||||
{{ scope.row.zhCount }}
|
||||
</el-button>
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column align="center"
|
||||
label="土耳其区新注册(完善资料)"
|
||||
width="">
|
||||
<template v-slot="scope">
|
||||
<el-button @click="
|
||||
detailsTitle = '土耳其区注册明细' + scope.row.date;
|
||||
edi(scope.row.trCountDetailt, 8);
|
||||
"
|
||||
type="text"
|
||||
size="small">
|
||||
{{ scope.row.trCount }}
|
||||
</el-button>
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column align="center"
|
||||
label="英语2区新注册(完善资料)"
|
||||
width="">
|
||||
<template v-slot="scope">
|
||||
<el-button @click="
|
||||
detailsTitle = '英语2区注册明细' + scope.row.date;
|
||||
edi(scope.row.en2CountDetail, 1);
|
||||
"
|
||||
type="text"
|
||||
size="small">
|
||||
{{ scope.row.en2Count }}
|
||||
</el-button>
|
||||
</template>
|
||||
</el-table-column>
|
||||
</el-table>
|
||||
|
||||
<!-- 分页 -->
|
||||
<el-pagination style="margin-top: 10px"
|
||||
class="paginationClass"
|
||||
v-model:current-page="currentPage"
|
||||
v-model:page-size="pageSize"
|
||||
:page-sizes="[20, 50, 100, 200, 500]"
|
||||
layout="sizes, prev, pager, next"
|
||||
:total="total"
|
||||
@size-change="handleSizeChange"
|
||||
@current-change="handleCurrentChange" />
|
||||
|
||||
<!-- 详情 -->
|
||||
<el-dialog v-model="detailsDialog"
|
||||
:title="detailsTitle"
|
||||
width="30%"
|
||||
center>
|
||||
<!-- 内表格 -->
|
||||
<el-table v-loading="loading"
|
||||
:data="tableDataIn"
|
||||
border
|
||||
style="width: 100%; margin-top: 25px">
|
||||
<el-table-column prop="regionDesc"
|
||||
align="center"
|
||||
label="国家" />
|
||||
<el-table-column prop="count"
|
||||
align="center"
|
||||
label="新注册(完善资料)" />
|
||||
<el-table-column prop="ratio"
|
||||
align="center"
|
||||
label="占比">
|
||||
<template v-slot="scope">
|
||||
{{ formatPercentage(scope.row.ratio) }}%
|
||||
</template>
|
||||
</el-table-column>
|
||||
</el-table>
|
||||
<!-- 操作 -->
|
||||
<template #footer>
|
||||
<span class="dialog-footer">
|
||||
<el-button type="primary"
|
||||
class="primary"
|
||||
@click="detailsDialog = false">关闭</el-button>
|
||||
</span>
|
||||
</template>
|
||||
</el-dialog>
|
||||
</template>
|
||||
<script>
|
||||
import { dnuPage } from "@/api/statistics/statistics";
|
||||
import { ElMessage } from "element-plus";
|
||||
export default {
|
||||
name: "newOverview",
|
||||
data () {
|
||||
return {
|
||||
loading: false,
|
||||
// 查询条件
|
||||
inquire: {
|
||||
time: [],
|
||||
},
|
||||
// 表格
|
||||
tableData: [],
|
||||
// 分页
|
||||
total: 0, //总页数
|
||||
currentPage: 1, //页码
|
||||
pageSize: 20, //条数
|
||||
// 内表格
|
||||
detailsDialog: false,
|
||||
detailsTitle: "金币明细",
|
||||
tableDataIn: [],
|
||||
};
|
||||
},
|
||||
created () {
|
||||
this.getData();
|
||||
},
|
||||
methods: {
|
||||
// 查询
|
||||
getData () {
|
||||
this.loading = true;
|
||||
dnuPage({
|
||||
page: this.currentPage,
|
||||
pageSize: this.pageSize,
|
||||
}).then((res) => {
|
||||
if (res.code == 200) {
|
||||
this.total = res.data.total;
|
||||
this.tableData = res.data.rows;
|
||||
this.loading = false;
|
||||
} else {
|
||||
ElMessage({
|
||||
showClose: true,
|
||||
message: res.message,
|
||||
type: "error",
|
||||
});
|
||||
}
|
||||
});
|
||||
},
|
||||
// 详情
|
||||
edi (res, type) {
|
||||
var jsonArr =
|
||||
// type == 0
|
||||
// ? res.totalDiamondDetail
|
||||
// : type == 1
|
||||
// ? res.enDomainDetail
|
||||
// : type == 2
|
||||
// ? res.arDomainDetail
|
||||
// : type == 4
|
||||
// ? res.zhDomainDetail
|
||||
// : type == 8
|
||||
// ? res.trDomainDetail
|
||||
// : `"[""]"`;
|
||||
(this.tableDataIn = JSON.parse(res));
|
||||
this.detailsDialog = true;
|
||||
},
|
||||
formatPercentage (value) {
|
||||
return parseFloat((value * 100).toFixed(2));
|
||||
},
|
||||
// 分页导航
|
||||
handleSizeChange () {
|
||||
this.getData();
|
||||
},
|
||||
handleCurrentChange () {
|
||||
this.getData();
|
||||
},
|
||||
},
|
||||
};
|
||||
</script>
|
||||
<style lang="less" scoped>
|
||||
.outer {
|
||||
padding-top: 20px;
|
||||
background: #ecf0f5;
|
||||
border-top: 3px solid #d2d6de;
|
||||
.demonstration {
|
||||
margin-right: 20px;
|
||||
}
|
||||
.inquire {
|
||||
display: flex;
|
||||
justify-content: space-between;
|
||||
white-space: nowrap;
|
||||
float: left;
|
||||
margin-right: 20px;
|
||||
}
|
||||
.search {
|
||||
width: 100%;
|
||||
height: 41px;
|
||||
.searchLeft,
|
||||
.searchRight {
|
||||
width: 20%;
|
||||
float: left;
|
||||
span {
|
||||
margin-right: 10px;
|
||||
}
|
||||
.input {
|
||||
width: 75%;
|
||||
}
|
||||
}
|
||||
}
|
||||
.buttonBox {
|
||||
margin-top: 10px;
|
||||
}
|
||||
.authorityBox {
|
||||
.authoritySpan {
|
||||
margin-right: 20px;
|
||||
}
|
||||
.authorityInpput {
|
||||
width: 50%;
|
||||
}
|
||||
}
|
||||
.dialogTableVisibleBut {
|
||||
margin: -25px 0 20px 0px;
|
||||
}
|
||||
}
|
||||
</style>
|
266
src/views/data/overviewActiveStatistics.vue
Normal file
266
src/views/data/overviewActiveStatistics.vue
Normal file
@@ -0,0 +1,266 @@
|
||||
<template>
|
||||
<!-- 表格 -->
|
||||
<el-table v-loading="loading"
|
||||
:data="tableData"
|
||||
border
|
||||
style="width: 100%; margin-top: 25px">
|
||||
<el-table-column prop="date"
|
||||
align="center"
|
||||
label="日期" />
|
||||
<el-table-column prop="totalCount"
|
||||
align="center"
|
||||
label="当天总活跃度">
|
||||
<template v-slot="scope">
|
||||
<el-button @click="
|
||||
detailsTitle = '当天总活跃度' + scope.row.date;
|
||||
edi(scope.row.totalCountDetail, 2);
|
||||
"
|
||||
type="text"
|
||||
size="small">
|
||||
{{ scope.row.totalCount }}
|
||||
</el-button>
|
||||
</template>
|
||||
</el-table-column>
|
||||
|
||||
<el-table-column align="center"
|
||||
label="阿拉伯区总活跃度"
|
||||
width="">
|
||||
<template v-slot="scope">
|
||||
<el-button @click="
|
||||
detailsTitle = '阿拉伯区总活跃度' + scope.row.date;
|
||||
edi(scope.row.arCountDetail, 2);
|
||||
"
|
||||
type="text"
|
||||
size="small">
|
||||
{{ scope.row.arCount }}
|
||||
</el-button>
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column align="center"
|
||||
label="英语区总活跃度"
|
||||
width="">
|
||||
<template v-slot="scope">
|
||||
<el-button @click="
|
||||
detailsTitle = '英语区总活跃度' + scope.row.date;
|
||||
edi(scope.row.enCountDetail, 1);
|
||||
"
|
||||
type="text"
|
||||
size="small">
|
||||
{{ scope.row.enCount }}
|
||||
</el-button>
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column align="center"
|
||||
label="华语区总活跃度"
|
||||
width="">
|
||||
<template v-slot="scope">
|
||||
<el-button @click="
|
||||
detailsTitle = '华语区总活跃度' + scope.row.date;
|
||||
edi(scope.row.zhCountDetail, 4);
|
||||
"
|
||||
type="text"
|
||||
size="small">
|
||||
{{ scope.row.zhCount }}
|
||||
</el-button>
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column align="center"
|
||||
label="土耳其区总活跃度"
|
||||
width="">
|
||||
<template v-slot="scope">
|
||||
<el-button @click="
|
||||
detailsTitle = '土耳其区总活跃度' + scope.row.date;
|
||||
edi(scope.row.trCountDetail, 8);
|
||||
"
|
||||
type="text"
|
||||
size="small">
|
||||
{{ scope.row.trCount }}
|
||||
</el-button>
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column align="center"
|
||||
label="英语2区总活跃度"
|
||||
width="">
|
||||
<template v-slot="scope">
|
||||
<el-button @click="
|
||||
detailsTitle = '英语2区总活跃度' + scope.row.date;
|
||||
edi(scope.row.en2CountDetail, 16);
|
||||
"
|
||||
type="text"
|
||||
size="small">
|
||||
{{ scope.row.en2Count }}
|
||||
</el-button>
|
||||
</template>
|
||||
</el-table-column>
|
||||
</el-table>
|
||||
|
||||
<!-- 分页 -->
|
||||
<el-pagination style="margin-top: 10px"
|
||||
class="paginationClass"
|
||||
v-model:current-page="currentPage"
|
||||
v-model:page-size="pageSize"
|
||||
:page-sizes="[20, 50, 100, 200, 500]"
|
||||
layout="sizes, prev, pager, next"
|
||||
:total="total"
|
||||
@size-change="handleSizeChange"
|
||||
@current-change="handleCurrentChange" />
|
||||
|
||||
<!-- 详情 -->
|
||||
<el-dialog v-model="detailsDialog"
|
||||
:title="detailsTitle"
|
||||
width="30%"
|
||||
center>
|
||||
<!-- 内表格 -->
|
||||
<el-table v-loading="loading"
|
||||
:data="tableDataIn"
|
||||
border
|
||||
style="width: 100%; margin-top: 25px">
|
||||
<el-table-column prop="regionDesc"
|
||||
align="center"
|
||||
label="国家" />
|
||||
<el-table-column prop="count"
|
||||
align="center"
|
||||
label="活跃度" />
|
||||
<el-table-column prop="ratio"
|
||||
align="center"
|
||||
label="占比">
|
||||
<template v-slot="scope">
|
||||
{{ formatPercentage(scope.row.ratio) }}%
|
||||
</template>
|
||||
</el-table-column>
|
||||
</el-table>
|
||||
<!-- 操作 -->
|
||||
<template #footer>
|
||||
<span class="dialog-footer">
|
||||
<el-button type="primary"
|
||||
class="primary"
|
||||
@click="detailsDialog = false">关闭</el-button>
|
||||
</span>
|
||||
</template>
|
||||
</el-dialog>
|
||||
</template>
|
||||
<script>
|
||||
import { dauPage } from "@/api/statistics/statistics";
|
||||
import { dateFormat } from "@/utils/system-helper";
|
||||
import { ElMessage } from "element-plus";
|
||||
export default {
|
||||
name: "overviewActiveStatistics",
|
||||
data () {
|
||||
return {
|
||||
loading: false,
|
||||
// 查询条件
|
||||
inquire: {
|
||||
time: [],
|
||||
},
|
||||
// 表格
|
||||
tableData: [],
|
||||
// 分页
|
||||
total: 0, //总页数
|
||||
currentPage: 1, //页码
|
||||
pageSize: 20, //条数
|
||||
// 内表格
|
||||
detailsDialog: false,
|
||||
detailsTitle: "金币明细",
|
||||
tableDataIn: [],
|
||||
};
|
||||
},
|
||||
created () {
|
||||
this.getData();
|
||||
},
|
||||
methods: {
|
||||
// 查询
|
||||
getData () {
|
||||
this.loading = true;
|
||||
dauPage({
|
||||
page: this.currentPage,
|
||||
pageSize: this.pageSize,
|
||||
}).then((res) => {
|
||||
if (res.code == 200) {
|
||||
this.total = res.data.total;
|
||||
this.tableData = res.data.rows;
|
||||
this.loading = false;
|
||||
} else {
|
||||
ElMessage({
|
||||
showClose: true,
|
||||
message: res.message,
|
||||
type: "error",
|
||||
});
|
||||
}
|
||||
});
|
||||
},
|
||||
// 详情
|
||||
edi (res, type) {
|
||||
var jsonArr =
|
||||
// type == 0
|
||||
// ? res.totalDiamondDetail
|
||||
// : type == 1
|
||||
// ? res.enDomainDetail
|
||||
// : type == 2
|
||||
// ? res.arDomainDetail
|
||||
// : type == 4
|
||||
// ? res.zhDomainDetail
|
||||
// : type == 8
|
||||
// ? res.trDomainDetail
|
||||
// : `"[""]"`;
|
||||
(this.tableDataIn = JSON.parse(res));
|
||||
this.detailsDialog = true;
|
||||
},
|
||||
formatPercentage (value) {
|
||||
return parseFloat((value * 100).toFixed(2));
|
||||
},
|
||||
// 分页导航
|
||||
handleSizeChange () {
|
||||
this.getData();
|
||||
},
|
||||
handleCurrentChange () {
|
||||
this.getData();
|
||||
},
|
||||
},
|
||||
};
|
||||
</script>
|
||||
<style lang="less" scoped>
|
||||
.outer {
|
||||
padding-top: 20px;
|
||||
background: #ecf0f5;
|
||||
border-top: 3px solid #d2d6de;
|
||||
.demonstration {
|
||||
margin-right: 20px;
|
||||
}
|
||||
.inquire {
|
||||
display: flex;
|
||||
justify-content: space-between;
|
||||
white-space: nowrap;
|
||||
float: left;
|
||||
margin-right: 20px;
|
||||
}
|
||||
.search {
|
||||
width: 100%;
|
||||
height: 41px;
|
||||
.searchLeft,
|
||||
.searchRight {
|
||||
width: 20%;
|
||||
float: left;
|
||||
span {
|
||||
margin-right: 10px;
|
||||
}
|
||||
.input {
|
||||
width: 75%;
|
||||
}
|
||||
}
|
||||
}
|
||||
.buttonBox {
|
||||
margin-top: 10px;
|
||||
}
|
||||
.authorityBox {
|
||||
.authoritySpan {
|
||||
margin-right: 20px;
|
||||
}
|
||||
.authorityInpput {
|
||||
width: 50%;
|
||||
}
|
||||
}
|
||||
.dialogTableVisibleBut {
|
||||
margin: -25px 0 20px 0px;
|
||||
}
|
||||
}
|
||||
</style>
|
@@ -270,6 +270,41 @@ export default {
|
||||
valign: "middle",
|
||||
width: "10%",
|
||||
},
|
||||
{
|
||||
field: "name.tr",
|
||||
title: "土耳其装扮名称",
|
||||
align: "left",
|
||||
valign: "middle",
|
||||
width: "10%",
|
||||
},
|
||||
{
|
||||
field: "name.pt",
|
||||
title: "葡萄牙语装扮名称",
|
||||
align: "left",
|
||||
valign: "middle",
|
||||
width: "10%",
|
||||
},
|
||||
{
|
||||
field: "name.ru",
|
||||
title: "俄语装扮名称",
|
||||
align: "left",
|
||||
valign: "middle",
|
||||
width: "10%",
|
||||
},
|
||||
{
|
||||
field: "name.es",
|
||||
title: "西班牙语装扮名称",
|
||||
align: "left",
|
||||
valign: "middle",
|
||||
width: "10%",
|
||||
},
|
||||
{
|
||||
field: "name.uz",
|
||||
title: "乌兹别克语装扮名称",
|
||||
align: "left",
|
||||
valign: "middle",
|
||||
width: "10%",
|
||||
},
|
||||
{
|
||||
field: "pic",
|
||||
title: "装扮图片",
|
||||
|
146
src/views/email/EmailRecordView.vue
Normal file
146
src/views/email/EmailRecordView.vue
Normal file
@@ -0,0 +1,146 @@
|
||||
<template>
|
||||
<div class="box">
|
||||
<!-- ID -->
|
||||
<div class="condition">
|
||||
<div class="inquire">
|
||||
<span>邮箱</span>
|
||||
<el-input v-model="inquire.email" placeholder="邮箱" class="input" />
|
||||
</div>
|
||||
</div>
|
||||
<!-- 按钮 -->
|
||||
<div class="but">
|
||||
<el-button class="primary" type="primary" @click="getData()">查询</el-button>
|
||||
</div>
|
||||
|
||||
<!-- 表格 -->
|
||||
<el-table
|
||||
v-loading="loading"
|
||||
:data="table.tableData"
|
||||
border
|
||||
style="width: 100%; margin-top: 25px"
|
||||
>
|
||||
<el-table-column prop="email" align="center" label="邮箱" />
|
||||
<el-table-column prop="deviceId" align="center" label="设备号" />
|
||||
<el-table-column prop="appVersion" align="center" label="app版本" />
|
||||
<el-table-column prop="model" align="center" label="手机型号" />
|
||||
<el-table-column prop="os" align="center" label="操作系统" />
|
||||
<el-table-column prop="type" align="center" label="业务类型">
|
||||
<template v-slot="scope">
|
||||
{{ getTypeDesc(scope.row.type) }}
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column prop="code" align="center" label="验证码" />
|
||||
<el-table-column prop="ip" align="center" label="ip" />
|
||||
<el-table-column prop="resCode" align="center" label="服务商状态码" />
|
||||
<el-table-column prop="resMsg" align="center" label="服务商提示" />
|
||||
<el-table-column prop="createTime" align="center" label="发送时间" />
|
||||
</el-table>
|
||||
|
||||
<!-- 分页 -->
|
||||
<el-pagination
|
||||
style="margin-top: 10px"
|
||||
class="paginationClass"
|
||||
v-model:current-page="table.currentPage"
|
||||
v-model:page-size="table.pageSize"
|
||||
:page-sizes="[20, 50, 100, 200]"
|
||||
layout="sizes, prev, pager, next"
|
||||
:total="table.total"
|
||||
@size-change="handleSizeChange"
|
||||
@current-change="handleCurrentChange"
|
||||
/>
|
||||
|
||||
</div>
|
||||
</template>
|
||||
<script>
|
||||
import { pageRecord } from "@/api/email/emailRecord";
|
||||
|
||||
export default {
|
||||
name: "EmailRecordView",
|
||||
data() {
|
||||
return {
|
||||
typeMap :{
|
||||
1: "注册验证码",
|
||||
2: "登录",
|
||||
3: "忘记密码(客户端重置支付密码有用到)",
|
||||
4: "绑定手机",
|
||||
5: "绑定支付宝",
|
||||
6: "重置支付密码",
|
||||
7: "更换绑定手机号码",
|
||||
8: "实名认证",
|
||||
9: "h5绑定支付宝",
|
||||
10: "后台登录",
|
||||
11: "绑定提现银行卡",
|
||||
12: "h5 绑定提现银行卡",
|
||||
13: "非登录态重置密码",
|
||||
14: "登录态重置密码",
|
||||
15: "手机授权码"
|
||||
},
|
||||
loading: false,
|
||||
//查询所需条件对象
|
||||
inquire: {
|
||||
email: undefined,
|
||||
},
|
||||
table: {
|
||||
tableData: [],
|
||||
total: undefined, //总页数
|
||||
currentPage: 1, //页码
|
||||
pageSize: 20, //条数
|
||||
},
|
||||
};
|
||||
},
|
||||
created() {
|
||||
this.getData();
|
||||
},
|
||||
methods: {
|
||||
getTypeDesc(type){
|
||||
return this.typeMap[type] || "未知";
|
||||
},
|
||||
// 查询接口
|
||||
getData() {
|
||||
this.loading = true;
|
||||
pageRecord({
|
||||
email: this.inquire.email,
|
||||
page: this.table.currentPage,
|
||||
pageSize: this.table.pageSize,
|
||||
}).then((res) => {
|
||||
this.loading = false;
|
||||
if (res.code !== 200){
|
||||
throw new Error(res.msg);
|
||||
}
|
||||
this.table.total = res.data.total;
|
||||
this.table.tableData = res.data.rows;
|
||||
});
|
||||
},
|
||||
// 分页导航
|
||||
handleSizeChange() {
|
||||
this.getData();
|
||||
},
|
||||
handleCurrentChange() {
|
||||
this.getData();
|
||||
},
|
||||
},
|
||||
};
|
||||
</script>
|
||||
<style lang="less" scoped>
|
||||
.box {
|
||||
padding-top: 20px;
|
||||
background: #ecf0f5;
|
||||
.condition {
|
||||
margin-bottom: 20px;
|
||||
.inquire {
|
||||
display: inline-block;
|
||||
margin-right: 20px;
|
||||
span {
|
||||
margin-right: 10px;
|
||||
}
|
||||
.input {
|
||||
width: 180px;
|
||||
margin-right: 10px;
|
||||
}
|
||||
}
|
||||
}
|
||||
.but {
|
||||
margin-bottom: 20px;
|
||||
}
|
||||
}
|
||||
</style>
|
384
src/views/face/EmojiManagement.vue
Normal file
384
src/views/face/EmojiManagement.vue
Normal file
@@ -0,0 +1,384 @@
|
||||
<template>
|
||||
<div class="box">
|
||||
<div class="inquire">
|
||||
<span>表情ID:</span>
|
||||
<el-input v-model="formData.id" placeholder="" class="input" />
|
||||
</div>
|
||||
<div class="inquire">
|
||||
<span>Tab名字:</span>
|
||||
<el-select v-model="formData.tabId" placeholder="请选择">
|
||||
<el-option v-for="item in TabData" :key="item.id" :label="item.tabName" :value="item.id">
|
||||
</el-option>
|
||||
</el-select>
|
||||
</div>
|
||||
<div class="inquire">
|
||||
<span>状态</span>
|
||||
<el-select v-model="formData.status" placeholder="请选择">
|
||||
<el-option label="全部" :value="-1"></el-option>
|
||||
<el-option label="不展示" :value="0"></el-option>
|
||||
<el-option label="展示" :value="1"></el-option>
|
||||
</el-select>
|
||||
</div>
|
||||
<el-button style="" type="primary" @click="getData()">查询</el-button>
|
||||
<el-button style="" type="primary" @click="resetFormData()">重置</el-button>
|
||||
<el-button style="" type="primary" @click="addDialog = true;resetaddFormData()">新增</el-button>
|
||||
<!-- 表格数据 -->
|
||||
<el-table v-loading="tableData.loading" :data="tableData.data" ref="multipleTable"
|
||||
@selection-change="handleSelectionChange" border style="width: 100%; margin-top: 25px">
|
||||
<el-table-column prop="tabId" align="center" label="TabID" />
|
||||
<el-table-column prop="tabName" align="center" label="Tab名字" />
|
||||
<el-table-column prop="id" align="center" label="表情ID" />
|
||||
<el-table-column prop="faceName" align="center" label="表情名字" />
|
||||
<el-table-column prop="faceIndex" align="center" label="表情包封面">
|
||||
<template v-slot="scope">
|
||||
<el-image style="width: 100px; height: 100px" :src="scope.row.faceIndex" :zoom-rate="1.1"
|
||||
:preview-src-list="[scope.row.faceIndex]" fit="scale-down" preview-teleported="true"
|
||||
hide-on-click-modal="true" />
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column prop="seqNo" align="center" label="排序" />
|
||||
<el-table-column prop="showTimes" align="center" label="展示次数" />
|
||||
<el-table-column prop="status" align="center" label="状态">
|
||||
<template v-slot="scope">
|
||||
{{ scope.row.status == 1 ? '展示' : '不展示' }}
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column align="center" label="操作" width="300">
|
||||
<template v-slot="scope">
|
||||
<el-button class="primary" type="primary" @click="
|
||||
detailPageFun(scope.row);
|
||||
" size="default">编辑</el-button>
|
||||
<el-button class="primary" type="danger" @click="
|
||||
deletePageFun(scope.row);
|
||||
" size="default">删除</el-button>
|
||||
</template>
|
||||
</el-table-column>
|
||||
</el-table>
|
||||
<!-- 分页 -->
|
||||
<el-pagination style="margin-top: 10px" class="paginationClass" :current-page="formData.pageNo"
|
||||
:page-size="formData.pageSize" :page-sizes="[10, 20, 50, 100, 200]" layout="sizes, prev, pager, next"
|
||||
:total="tableData.total" @size-change="handleSizeChange" @current-change="handleCurrentChange" />
|
||||
<el-dialog v-model="addDialog" :title="addFormData.id == '' ? '新增' : '编辑'" width="28%" center>
|
||||
<div style="margin-bottom: 25px">
|
||||
<span style="display: inline-block; margin-right: 20px; width: 100px"
|
||||
class="col-sm-2 control-label">Tab名字:</span>
|
||||
<el-select v-model="addFormData.tabId" placeholder="请选择">
|
||||
<el-option v-for="item in TabData" :key="item.id" :label="item.tabName" :value="item.id">
|
||||
</el-option>
|
||||
</el-select>
|
||||
</div>
|
||||
<div style="margin-bottom: 25px">
|
||||
<span style="display: inline-block; margin-right: 20px; width: 100px"
|
||||
class="col-sm-2 control-label">表情名字</span>
|
||||
<el-input v-model="addFormData.faceName" style="width: 50%" class="input"></el-input>
|
||||
</div>
|
||||
<div class="selectBox selectBoxImg">
|
||||
<span class="left" style="margin-right: 35px;padding-left: 15px;">表情包封面</span>
|
||||
<!-- action="/admin/tencent/cos/upload/file" -->
|
||||
<el-upload class="avatar-uploader" action="/admin/tencent/cos/upload/file" :show-file-list="false"
|
||||
:on-success="handleAvatarSuccess" :before-upload="beforeAvatarUpload" :on-error="handleAvatarError">
|
||||
<img v-if="addFormData.faceIndex" :src="addFormData.faceIndex" class="avatar" />
|
||||
<el-icon v-else class="avatar-uploader-icon">
|
||||
<Plus />
|
||||
</el-icon>
|
||||
</el-upload>
|
||||
</div>
|
||||
<div class="selectBox selectBoxImg">
|
||||
<span class="left" style="margin-right: 65px;padding-left: 15px;">表情包</span>
|
||||
<!-- action="/admin/tencent/cos/upload/file" -->
|
||||
<el-upload class="avatar-uploader" action="/admin/tencent/cos/upload/file" :show-file-list="false"
|
||||
:on-success="handleAvatarSuccess2" :before-upload="beforeAvatarUploadSvga"
|
||||
:on-error="handleAvatarError">
|
||||
<img v-if="addFormData.faceUrl" :src="addFormData.faceUrl" />
|
||||
<el-icon v-else class="avatar-uploader-icon">
|
||||
<Plus />
|
||||
</el-icon>
|
||||
</el-upload>
|
||||
</div>
|
||||
<div style="margin-bottom: 25px">
|
||||
<span style="display: inline-block; margin-right: 20px; width: 100px"
|
||||
class="col-sm-2 control-label">排序</span>
|
||||
<el-input v-model="addFormData.seqNo" style="width: 50%" class="input"></el-input>
|
||||
</div>
|
||||
<div style="margin-bottom: 25px">
|
||||
<span style="display: inline-block; margin-right: 20px; width: 100px"
|
||||
class="col-sm-2 control-label">展示次数</span>
|
||||
<el-input v-model="addFormData.showTimes" style="width: 50%" class="input"></el-input>
|
||||
</div>
|
||||
<div style="margin-bottom: 25px">
|
||||
<span style="display: inline-block; margin-right: 20px; width: 100px"
|
||||
class="col-sm-2 control-label">状态</span>
|
||||
<el-select v-model="addFormData.status" placeholder="请选择">
|
||||
<el-option label="不展示" :value="0"></el-option>
|
||||
<el-option label="展示" :value="1"></el-option>
|
||||
</el-select>
|
||||
</div>
|
||||
<template #footer>
|
||||
<span class="dialog-footer">
|
||||
<el-button @click="addDialog = false">取消</el-button>
|
||||
<el-button type="primary" @click="addFun()"> 确认 </el-button>
|
||||
</span>
|
||||
</template>
|
||||
</el-dialog>
|
||||
</div>
|
||||
</template>
|
||||
|
||||
<script>
|
||||
import { ref, onMounted, reactive, computed } from 'vue'
|
||||
import { getFaceNewList, saveOrUpdateFaceNew, getFaceNewTabList, deleteFaceNew } from '@/api/EmojiManagement/EmojiManagement'
|
||||
import { ElMessage, ElMessageBox } from "element-plus";
|
||||
export default {
|
||||
name: 'EmojiManagement',
|
||||
setup() {
|
||||
const formData = reactive({
|
||||
id: '',
|
||||
pageNo: 1,
|
||||
pageSize: 10,
|
||||
tabId: '',
|
||||
status: -1
|
||||
})
|
||||
const addFormData = reactive({
|
||||
seqNo: '',
|
||||
id: '',
|
||||
status: 1,
|
||||
showTimes: '',
|
||||
tabId: '',
|
||||
faceName: '',
|
||||
faceIndex: '',
|
||||
faceUrl: ''
|
||||
})
|
||||
const tableData = reactive({
|
||||
data: [],
|
||||
total: 0,
|
||||
loading: false,
|
||||
})
|
||||
const ediObj = reactive({
|
||||
imageUrl2: ''
|
||||
})
|
||||
const TabData = ref([])
|
||||
const addDialog = ref(false)
|
||||
const getData = () => {
|
||||
tableData.loading = true;
|
||||
getFaceNewList(formData).then(res => {
|
||||
if (res.code == 200) {
|
||||
tableData.data = res.data.rows
|
||||
tableData.loading = false;
|
||||
tableData.total = res.data.total
|
||||
|
||||
} else {
|
||||
tableData.loading = false;
|
||||
ElMessage.error(res.message);
|
||||
}
|
||||
})
|
||||
};
|
||||
// 增加
|
||||
const addFun = () => {
|
||||
saveOrUpdateFaceNew(addFormData).then(res => {
|
||||
if (res.code == 200) {
|
||||
ElMessage.success('添加成功');
|
||||
Object.assign(addFormData, {
|
||||
seqNo: '',
|
||||
id: '',
|
||||
status: 1,
|
||||
showTimes: '',
|
||||
tabId: '',
|
||||
faceName: '',
|
||||
faceIndex: '',
|
||||
faceUrl: ''
|
||||
});
|
||||
addDialog.value = false
|
||||
getData()
|
||||
} else {
|
||||
ElMessage.error(res.message);
|
||||
addDialog.value = false
|
||||
}
|
||||
})
|
||||
}
|
||||
//重置
|
||||
const resetFormData = () => {
|
||||
Object.assign(formData, {
|
||||
partitionId: 1,
|
||||
pageNo: 1,
|
||||
pageSize: 10,
|
||||
erbanNo: '',
|
||||
});
|
||||
|
||||
};
|
||||
const resetaddFormData = () => {
|
||||
Object.assign(addFormData, {
|
||||
seqNo: '',
|
||||
id: '',
|
||||
status: 1,
|
||||
showTimes: '',
|
||||
tabId: '',
|
||||
faceName: '',
|
||||
faceIndex: '',
|
||||
faceUrl: ''
|
||||
});
|
||||
|
||||
};
|
||||
|
||||
// 编辑
|
||||
const detailPageFun = (row) => {
|
||||
addFormData.id = row.id;
|
||||
addFormData.faceIndex = row.faceIndex;
|
||||
addFormData.faceName = row.faceName;
|
||||
addFormData.faceUrl = row.faceUrl;
|
||||
addFormData.seqNo = row.seqNo;
|
||||
addFormData.showTimes = row.showTimes;
|
||||
addFormData.status = row.status;
|
||||
addFormData.tabId = row.tabId;
|
||||
addDialog.value = true
|
||||
}
|
||||
// 删除
|
||||
const deletePageFun = (row) => {
|
||||
ElMessageBox.confirm('确定要删除吗?', '提示', {
|
||||
confirmButtonText: '确定',
|
||||
cancelButtonText: '取消',
|
||||
type: 'warning'
|
||||
}).then(() => {
|
||||
deleteFaceNew({ id: row.id }).then(res => {
|
||||
if (res.code == 200) {
|
||||
ElMessage.success('删除成功')
|
||||
getData()
|
||||
} else {
|
||||
ElMessage.error(res.message)
|
||||
}
|
||||
})
|
||||
})
|
||||
}
|
||||
const beforeAvatarUpload = () => {
|
||||
ElMessage({
|
||||
showClose: true,
|
||||
message: "上传中~",
|
||||
type: "warning",
|
||||
});
|
||||
};
|
||||
|
||||
const handleAvatarError = () => {
|
||||
ElMessage({
|
||||
showClose: true,
|
||||
message: "上传失败!",
|
||||
type: "error",
|
||||
});
|
||||
};
|
||||
const handleAvatarSuccess = (res, file) => {
|
||||
addFormData.faceIndex = file.response.data;
|
||||
ElMessage({
|
||||
showClose: true,
|
||||
message: "上传成功!",
|
||||
type: "success",
|
||||
});
|
||||
};
|
||||
const beforeAvatarUploadSvga = (file) => {
|
||||
const dotIndex = (file.name).indexOf('.'); // 找到 '.' 的位置
|
||||
if (dotIndex !== -1) {
|
||||
const result = (file.name).substring(dotIndex + 1); // 从 '.' 之后开始截取
|
||||
if (result == 'svga') {
|
||||
ElMessage({
|
||||
showClose: true,
|
||||
message: "上传中~",
|
||||
type: "warning",
|
||||
});
|
||||
return true;
|
||||
} else {
|
||||
ElMessage.error('请上传svga格式文件');
|
||||
return false;
|
||||
}
|
||||
} else {
|
||||
ElMessage.error('请上传svga格式文件');
|
||||
return false;
|
||||
}
|
||||
};
|
||||
const handleAvatarSuccess2 = (res, file) => {
|
||||
addFormData.faceUrl = file.response.data;
|
||||
ElMessage({
|
||||
showClose: true,
|
||||
message: "上传成功!",
|
||||
type: "success",
|
||||
});
|
||||
};
|
||||
const handleSizeChange = (val) => {
|
||||
formData.pageSize = val;
|
||||
getData();
|
||||
};
|
||||
const handleCurrentChange = (val) => {
|
||||
formData.pageNo = val;
|
||||
getData();
|
||||
};
|
||||
onMounted(() => {
|
||||
getFaceNewTabList().then(res => {
|
||||
TabData.value = res.data
|
||||
})
|
||||
})
|
||||
return {
|
||||
formData,
|
||||
addFormData,
|
||||
tableData,
|
||||
addDialog,
|
||||
getData,
|
||||
addFun,
|
||||
resetFormData,
|
||||
handleSizeChange,
|
||||
handleCurrentChange,
|
||||
beforeAvatarUpload,
|
||||
handleAvatarError,
|
||||
handleAvatarSuccess,
|
||||
ediObj,
|
||||
TabData,
|
||||
handleAvatarSuccess2,
|
||||
beforeAvatarUploadSvga,
|
||||
detailPageFun,
|
||||
deletePageFun,
|
||||
resetaddFormData
|
||||
}
|
||||
},
|
||||
}
|
||||
</script>
|
||||
|
||||
<style lang="less" scoped>
|
||||
.box {
|
||||
padding-top: 20px;
|
||||
background: #ecf0f5;
|
||||
|
||||
.inquire {
|
||||
display: inline-block;
|
||||
margin-right: 20px;
|
||||
|
||||
span {
|
||||
margin-right: 10px;
|
||||
}
|
||||
|
||||
.input {
|
||||
width: 180px;
|
||||
margin-right: 10px;
|
||||
}
|
||||
}
|
||||
|
||||
.dialogTableVisibleBut {
|
||||
display: block;
|
||||
margin: 30px 0 0 830px;
|
||||
}
|
||||
|
||||
.paginationClass {
|
||||
margin: 15px 0 5px 0px;
|
||||
}
|
||||
}
|
||||
|
||||
.selectBox {
|
||||
display: flex;
|
||||
height: 35px;
|
||||
line-height: 35px;
|
||||
margin-bottom: 20px;
|
||||
}
|
||||
|
||||
.selectBoxImg {
|
||||
height: 150px;
|
||||
}
|
||||
|
||||
.avatar {
|
||||
width: 178px;
|
||||
height: 178px;
|
||||
display: block;
|
||||
}
|
||||
</style>
|
329
src/views/face/EmojiTabManagement.vue
Normal file
329
src/views/face/EmojiTabManagement.vue
Normal file
@@ -0,0 +1,329 @@
|
||||
<template>
|
||||
<div class="box">
|
||||
<div class="inquire">
|
||||
<span>TabID:</span>
|
||||
<el-input v-model="formData.id" placeholder="" class="input" />
|
||||
</div>
|
||||
<div class="inquire">
|
||||
<span>类型</span>
|
||||
<el-select v-model="formData.useVip" placeholder="请选择">
|
||||
<el-option label="全部" :value="-1"></el-option>
|
||||
<el-option label="普通" :value="0"></el-option>
|
||||
<el-option label="贵族" :value="1"></el-option>
|
||||
</el-select>
|
||||
</div>
|
||||
<div class="inquire">
|
||||
<span>状态</span>
|
||||
<el-select v-model="formData.status" placeholder="请选择">
|
||||
<el-option label="全部" :value="-1"></el-option>
|
||||
<el-option label="不展示" :value="0"></el-option>
|
||||
<el-option label="展示" :value="1"></el-option>
|
||||
</el-select>
|
||||
</div>
|
||||
<el-button style="" type="primary" @click="getData()">查询</el-button>
|
||||
<el-button style="" type="primary" @click="resetFormData()">重置</el-button>
|
||||
<el-button style="" type="primary" @click="addDialog = true; resetaddFormData()">新增</el-button>
|
||||
<!-- 表格数据 -->
|
||||
<el-table v-loading="tableData.loading" :data="tableData.data" ref="multipleTable"
|
||||
@selection-change="handleSelectionChange" border style="width: 100%; margin-top: 25px">
|
||||
<el-table-column prop="id" align="center" label="ID" />
|
||||
<el-table-column prop="tabName" align="center" label="Tab名字" />
|
||||
<el-table-column prop="tabUrl" align="center" label="Tab封面">
|
||||
<template v-slot="scope">
|
||||
<el-image style="width: 100px; height: 100px" :src="scope.row.tabUrl" :zoom-rate="1.1"
|
||||
:preview-src-list="[scope.row.tabUrl]" fit="scale-down" preview-teleported="true"
|
||||
hide-on-click-modal="true" />
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column prop="useVip" align="center" label="表情类型">
|
||||
<template v-slot="scope">
|
||||
{{ scope.row.useVip == 1 ? '贵族' : '普通' }}
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column prop="status" align="center" label="状态">
|
||||
<template v-slot="scope">
|
||||
{{ scope.row.status == 1 ? '展示' : '不展示' }}
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column prop="tabSeq" align="center" label="排序" />
|
||||
<el-table-column align="center" label="操作" width="300">
|
||||
<template v-slot="scope">
|
||||
<el-button class="primary" type="primary" @click="
|
||||
detailPageFun(scope.row);
|
||||
" size="default">编辑</el-button>
|
||||
<!-- <el-button class="primary" type="danger" @click="
|
||||
deletePageFun(scope.row);
|
||||
" size="default">删除</el-button> -->
|
||||
</template>
|
||||
</el-table-column>
|
||||
</el-table>
|
||||
<!-- 分页 -->
|
||||
<el-pagination style="margin-top: 10px" class="paginationClass" :current-page="formData.pageNo"
|
||||
:page-size="formData.pageSize" :page-sizes="[10, 20, 50, 100, 200]" layout="sizes, prev, pager, next"
|
||||
:total="tableData.total" @size-change="handleSizeChange" @current-change="handleCurrentChange" />
|
||||
<el-dialog v-model="addDialog" :title="addFormData.id == '' ? '新增' : '编辑'" width="28%" center>
|
||||
<!-- <div style="margin-bottom: 25px" v-if="addFormData.id != ''">
|
||||
<span style="display: inline-block; margin-right: 20px; width: 100px"
|
||||
class="col-sm-2 control-label">表情TabID</span>
|
||||
<el-input v-model="addFormData.id" style="width: 50%" class="input" disabled></el-input>
|
||||
</div> -->
|
||||
<div style="margin-bottom: 25px">
|
||||
<span style="display: inline-block; margin-right: 20px; width: 100px"
|
||||
class="col-sm-2 control-label">表情Tab名字</span>
|
||||
<el-input v-model="addFormData.tabName" style="width: 50%" class="input"></el-input>
|
||||
</div>
|
||||
<div style="margin-bottom: 25px">
|
||||
<span style="display: inline-block; margin-right: 20px; width: 100px"
|
||||
class="col-sm-2 control-label">表情类型</span>
|
||||
<el-select v-model="addFormData.useVip" placeholder="请选择">
|
||||
<el-option label="普通" :value="0"></el-option>
|
||||
<el-option label="贵族" :value="1"></el-option>
|
||||
</el-select>
|
||||
</div>
|
||||
<div class="selectBox selectBoxImg">
|
||||
<span class="left" style="margin-right: 75px;padding-left: 15px;">Tab图</span>
|
||||
<!-- action="/admin/tencent/cos/upload/file" -->
|
||||
<el-upload class="avatar-uploader" action="/admin/tencent/cos/upload/file" :show-file-list="false"
|
||||
:on-success="handleAvatarSuccess" :before-upload="beforeAvatarUpload" :on-error="handleAvatarError">
|
||||
<img v-if="addFormData.tabUrl" :src="addFormData.tabUrl" class="avatar" />
|
||||
<el-icon v-else class="avatar-uploader-icon">
|
||||
<Plus />
|
||||
</el-icon>
|
||||
</el-upload>
|
||||
</div>
|
||||
<div style="margin-bottom: 25px">
|
||||
<span style="display: inline-block; margin-right: 20px; width: 100px"
|
||||
class="col-sm-2 control-label">排序</span>
|
||||
<el-input v-model="addFormData.tabSeq" style="width: 50%" class="input"></el-input>
|
||||
</div>
|
||||
<div style="margin-bottom: 25px">
|
||||
<span style="display: inline-block; margin-right: 20px; width: 100px"
|
||||
class="col-sm-2 control-label">状态</span>
|
||||
<el-select v-model="addFormData.status" placeholder="请选择">
|
||||
<el-option label="不展示" :value="0"></el-option>
|
||||
<el-option label="展示" :value="1"></el-option>
|
||||
</el-select>
|
||||
</div>
|
||||
<template #footer>
|
||||
<span class="dialog-footer">
|
||||
<el-button @click="addDialog = false">取消</el-button>
|
||||
<el-button type="primary" @click="addFun()"> 确认 </el-button>
|
||||
</span>
|
||||
</template>
|
||||
</el-dialog>
|
||||
</div>
|
||||
</template>
|
||||
|
||||
<script>
|
||||
import { ref, onMounted, reactive, computed } from 'vue'
|
||||
import { ElMessage, ElMessageBox } from "element-plus";
|
||||
import { getFaceTabNewList, saveOrUpdateFaceTabNew, deleteFaceTabNew } from '@/api/EmojiManagement/EmojiManagement'
|
||||
export default {
|
||||
name: 'EmojiTabManagement',
|
||||
setup() {
|
||||
const formData = reactive({
|
||||
pageNo: 1,
|
||||
pageSize: 10,
|
||||
useVip: -1,
|
||||
status: -1,
|
||||
id: ''
|
||||
})
|
||||
const addFormData = reactive({
|
||||
id: '',
|
||||
useVip: 0,
|
||||
tabUrl: '',
|
||||
status: 1,
|
||||
tabSeq: '',
|
||||
tabName: ''
|
||||
})
|
||||
const tableData = reactive({
|
||||
data: [],
|
||||
total: 0,
|
||||
loading: false,
|
||||
})
|
||||
const addDialog = ref(false)
|
||||
const getData = () => {
|
||||
tableData.loading = true;
|
||||
getFaceTabNewList(formData).then(res => {
|
||||
if (res.code == 200) {
|
||||
tableData.data = res.data.records
|
||||
tableData.loading = false;
|
||||
tableData.total = res.data.total
|
||||
|
||||
} else {
|
||||
tableData.loading = false;
|
||||
ElMessage.error(res.message);
|
||||
}
|
||||
})
|
||||
};
|
||||
// 增加
|
||||
const addFun = () => {
|
||||
saveOrUpdateFaceTabNew(addFormData).then(res => {
|
||||
if (res.code == 200) {
|
||||
ElMessage.success('添加成功');
|
||||
Object.assign(addFormData, {
|
||||
id: '',
|
||||
useVip: 0,
|
||||
tabUrl: '',
|
||||
status: 1,
|
||||
tabSeq: '',
|
||||
tabName: ''
|
||||
});
|
||||
addDialog.value = false
|
||||
getData()
|
||||
} else {
|
||||
ElMessage.error(res.message);
|
||||
addDialog.value = false
|
||||
}
|
||||
})
|
||||
}
|
||||
// 编辑
|
||||
const detailPageFun = (row) => {
|
||||
addFormData.id = row.id;
|
||||
addFormData.useVip = row.useVip;
|
||||
addFormData.tabUrl = row.tabUrl;
|
||||
addFormData.status = row.status;
|
||||
addFormData.tabSeq = row.tabSeq;
|
||||
addFormData.tabName = row.tabName || '';
|
||||
addDialog.value = true
|
||||
}
|
||||
// 删除
|
||||
const deletePageFun = (row) => {
|
||||
ElMessageBox.confirm('确定要删除吗?', '提示', {
|
||||
confirmButtonText: '确定',
|
||||
cancelButtonText: '取消',
|
||||
type: 'warning'
|
||||
}).then(() => {
|
||||
deleteFaceTabNew({ id: row.id }).then(res => {
|
||||
if (res.code == 200) {
|
||||
ElMessage.success('删除成功')
|
||||
getData()
|
||||
} else {
|
||||
ElMessage.error(res.message)
|
||||
}
|
||||
})
|
||||
})
|
||||
}
|
||||
//重置
|
||||
const resetFormData = () => {
|
||||
Object.assign(formData, {
|
||||
pageNo: 1,
|
||||
pageSize: 10,
|
||||
useVip: -1,
|
||||
status: -1,
|
||||
id: ''
|
||||
});
|
||||
|
||||
};
|
||||
const resetaddFormData = () => {
|
||||
Object.assign(addFormData, {
|
||||
id: '',
|
||||
useVip: 0,
|
||||
tabUrl: '',
|
||||
status: 1,
|
||||
tabSeq: '',
|
||||
tabName: ''
|
||||
});
|
||||
|
||||
};
|
||||
const beforeAvatarUpload = () => {
|
||||
ElMessage({
|
||||
showClose: true,
|
||||
message: "上传中~",
|
||||
type: "warning",
|
||||
});
|
||||
};
|
||||
const handleAvatarError = () => {
|
||||
ElMessage({
|
||||
showClose: true,
|
||||
message: "上传失败!",
|
||||
type: "error",
|
||||
});
|
||||
};
|
||||
const handleAvatarSuccess = (res, file) => {
|
||||
addFormData.tabUrl = file.response.data;
|
||||
ElMessage({
|
||||
showClose: true,
|
||||
message: "上传成功!",
|
||||
type: "success",
|
||||
});
|
||||
};
|
||||
const handleSizeChange = (val) => {
|
||||
formData.pageSize = val;
|
||||
getData();
|
||||
};
|
||||
const handleCurrentChange = (val) => {
|
||||
formData.pageNo = val;
|
||||
getData();
|
||||
};
|
||||
onMounted(() => {
|
||||
getData();
|
||||
|
||||
})
|
||||
return {
|
||||
formData,
|
||||
addFormData,
|
||||
tableData,
|
||||
addDialog,
|
||||
getData,
|
||||
addFun,
|
||||
resetFormData,
|
||||
handleSizeChange,
|
||||
handleCurrentChange,
|
||||
beforeAvatarUpload,
|
||||
handleAvatarError,
|
||||
handleAvatarSuccess,
|
||||
detailPageFun,
|
||||
deletePageFun,
|
||||
resetaddFormData
|
||||
}
|
||||
},
|
||||
}
|
||||
</script>
|
||||
|
||||
<style lang="less" scoped>
|
||||
.box {
|
||||
padding-top: 20px;
|
||||
background: #ecf0f5;
|
||||
|
||||
.inquire {
|
||||
display: inline-block;
|
||||
margin-right: 20px;
|
||||
|
||||
span {
|
||||
margin-right: 10px;
|
||||
}
|
||||
|
||||
.input {
|
||||
width: 180px;
|
||||
margin-right: 10px;
|
||||
}
|
||||
}
|
||||
|
||||
.dialogTableVisibleBut {
|
||||
display: block;
|
||||
margin: 30px 0 0 830px;
|
||||
}
|
||||
|
||||
.paginationClass {
|
||||
margin: 15px 0 5px 0px;
|
||||
}
|
||||
}
|
||||
|
||||
.selectBox {
|
||||
display: flex;
|
||||
height: 35px;
|
||||
line-height: 35px;
|
||||
margin-bottom: 20px;
|
||||
}
|
||||
|
||||
.selectBoxImg {
|
||||
height: 150px;
|
||||
}
|
||||
|
||||
.avatar {
|
||||
width: 178px;
|
||||
height: 178px;
|
||||
display: block;
|
||||
}
|
||||
</style>
|
@@ -51,7 +51,7 @@
|
||||
</button>
|
||||
<h4 class="modal-title" id="modalLabel1">新增表情图片</h4>
|
||||
</div>
|
||||
<div class="modal-body" style="overflow:auto;width: 100%;max-height: 80%">
|
||||
<div class="modal-body" style="overflow-y:auto;width: 100%;height: 500px">
|
||||
<ul id="bigImg"></ul>
|
||||
</div>
|
||||
<div class="modal-footer" style="height: 20%">
|
||||
@@ -116,7 +116,8 @@
|
||||
<div class="form-group">
|
||||
<label for="addFaceId" class="col-sm-3 control-label">表情名ID:</label>
|
||||
<div class="col-sm-9">
|
||||
<input type="text" class="form-control validate[required]" name="addFaceId" id="addFaceId">
|
||||
<input type="text" class="form-control validate[required]" name="addFaceId"
|
||||
id="addFaceId">
|
||||
</div>
|
||||
</div>
|
||||
<div class="form-group">
|
||||
@@ -145,8 +146,8 @@
|
||||
<div class="form-group">
|
||||
<label class="col-sm-3 control-label">审核中表情状态</label>
|
||||
<div class="col-sm-9">
|
||||
<label class="radio-inline"><input name="luckFace" type="radio" id="isLuckFace" value="0"
|
||||
checked>显示</label>
|
||||
<label class="radio-inline"><input name="luckFace" type="radio" id="isLuckFace"
|
||||
value="0" checked>显示</label>
|
||||
<label class="radio-inline"><input name="luckFace" type="radio" id="isLuckFaceNo"
|
||||
value="1">隐藏</label>
|
||||
</div>
|
||||
@@ -191,8 +192,8 @@
|
||||
<div class="form-group">
|
||||
<label class="col-sm-3 control-label">表情帧动画结束时候结果图片是否互斥:</label>
|
||||
<div class="col-sm-9">
|
||||
<label class="radio-inline"><input name="canResultRepeat" type="radio" id="canResultRepeat"
|
||||
value="1" checked>不互斥</label>
|
||||
<label class="radio-inline"><input name="canResultRepeat" type="radio"
|
||||
id="canResultRepeat" value="1" checked>不互斥</label>
|
||||
<label class="radio-inline"><input name="canResultRepeat" type="radio"
|
||||
id="canResultRepeatNo" value="0">互斥</label>
|
||||
</div>
|
||||
@@ -869,4 +870,11 @@ select {
|
||||
.opt-group .col-sm-7 {
|
||||
text-align: left;
|
||||
}
|
||||
|
||||
/* .modal-body {
|
||||
overflow-y: auto;
|
||||
-webkit-overflow-scrolling: touch;
|
||||
scrollbar-width: none;
|
||||
height: 500px !important;
|
||||
} */
|
||||
</style>
|
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
393
src/views/gameSummary/GameSummary.vue
Normal file
393
src/views/gameSummary/GameSummary.vue
Normal file
@@ -0,0 +1,393 @@
|
||||
<template>
|
||||
<div class="box">
|
||||
<!-- 查询 -->
|
||||
<div class="inquire">
|
||||
<span>分区</span>
|
||||
<partition-select v-model:partition-id="formData.partitionId" v-model:partition-infos="partitionOptions" />
|
||||
</div>
|
||||
<div class="inquire">
|
||||
<span>第三方名称</span>
|
||||
<el-select v-model="formData.channel" placeholder="请选择" @change="changeEvent">
|
||||
<el-option v-for="item in nameOptions" :key="item.channel" :label="item.name" :value="item.channel">
|
||||
</el-option>
|
||||
</el-select>
|
||||
</div>
|
||||
<div class="inquire" v-if="formData.channel">
|
||||
<span>游戏名称</span>
|
||||
<el-select v-model="formData.gameId" placeholder="请选择">
|
||||
<el-option v-for="item in gameOptions[formData.channel]" :key="item.gameId" :label="item.gameName"
|
||||
:value="item.gameId">
|
||||
</el-option>
|
||||
</el-select>
|
||||
</div>
|
||||
<div class="inquire">
|
||||
<span class="demonstration">日期</span>
|
||||
<el-date-picker v-model="dataTime" type="daterange" range-separator="至" start-placeholder="开始日期"
|
||||
end-placeholder="结束日期">
|
||||
</el-date-picker>
|
||||
</div>
|
||||
<el-button style="" type="primary" @click="getData()">查询</el-button>
|
||||
<el-button class="primary" type="primary" @click="resetFormData()">重置</el-button>
|
||||
<el-button class="primary" type="primary" @click="confirmExport2Excel()">导出</el-button>
|
||||
<!-- 表格数据 -->
|
||||
<el-table v-loading="tableData.loadingOuter" :data="tableData.dataOuter" ref="multipleTable"
|
||||
@selection-change="handleSelectionChange" border style="width: 100%; margin-top: 25px">
|
||||
<el-table-column prop="statDate" align="center" label="日期" />
|
||||
<el-table-column prop="newUsersCount" align="center" label="新用户参与人数" />
|
||||
<el-table-column prop="totalUsersCount" align="center" label="总参与人数" />
|
||||
<el-table-column prop="payGold" align="center" label="投入" />
|
||||
<el-table-column prop="winGold" align="center" label="支出" />
|
||||
<el-table-column prop="totalRemain" align="center" label="剩余" />
|
||||
<el-table-column prop="betRate" align="center" label="比例">
|
||||
<template #default="row">
|
||||
<span>{{ (row.row.betRate * 100).toFixed(2) + '%' }}</span>
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column align="center" label="操作" width="300">
|
||||
<template v-slot="scope">
|
||||
<el-button class="primary" type="primary" @click="
|
||||
detailPageFun(scope.row, 1);
|
||||
" size="default">明细</el-button>
|
||||
<el-button class="primary" type="primary" @click="
|
||||
detailPageFun(scope.row, 2);
|
||||
" size="default">游戏明细</el-button>
|
||||
</template>
|
||||
</el-table-column>
|
||||
</el-table>
|
||||
|
||||
<!-- 分页 -->
|
||||
<el-pagination style="margin-top: 10px" class="paginationClass" :current-page="formData.pageNo"
|
||||
:page-size="formData.pageSize" :page-sizes="[10, 20, 50, 100, 200]" layout="sizes, prev, pager, next"
|
||||
:total="formData.total" @size-change="handleSizeChange" @current-change="handleCurrentChange" />
|
||||
|
||||
<!-- 详情 -->
|
||||
<el-dialog v-model="detailsDialog" :title="detailPageType == 1 ? '用户明细' : '游戏明细'" width="70%">
|
||||
<el-button class="primary" type="primary" @click="confirmExport2ExcelTwo()">导出</el-button>
|
||||
|
||||
<!-- 内表格 -->
|
||||
<el-table v-loading="tableData.loadingInner" :data="tableData.dataInner" border
|
||||
style="width: 100%; margin-top: 25px">
|
||||
<template v-if="detailPageType == 1">
|
||||
<el-table-column prop="erbanNo" align="center" label="用户id" />
|
||||
<el-table-column prop="nick" align="center" label="用户昵称" />
|
||||
<el-table-column prop="partitionId" align="center" label="分区">
|
||||
<template #default="row">
|
||||
<span>{{ getPartitionDesc(row.row.partitionId) }}</span>
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column prop="channel" align="center" label="第三方名称" />
|
||||
<el-table-column prop="gameName" align="center" label="游戏名称" />
|
||||
<el-table-column prop="payGold" align="center" label="投入" />
|
||||
<el-table-column prop="winGold" align="center" label="支出" />
|
||||
<el-table-column prop="totalRemain" align="center" label="剩余" />
|
||||
<el-table-column prop="betRate" align="center" label="比例">
|
||||
<template #default="row">
|
||||
<span>{{ (row.row.betRate * 100).toFixed(2) + '%' }}</span>
|
||||
</template>
|
||||
</el-table-column>
|
||||
</template>
|
||||
<template v-if="detailPageType == 2">
|
||||
<el-table-column prop="statDate" align="center" label="日期" />
|
||||
<el-table-column prop="gameName" align="center" label="游戏名称" />
|
||||
<el-table-column prop="gameId" align="center" label="游戏ID" />
|
||||
<el-table-column prop="payGold" align="center" label="投入" />
|
||||
<el-table-column prop="winGold" align="center" label="支出" />
|
||||
<el-table-column prop="totalRemain" align="center" label="剩余" />
|
||||
<el-table-column prop="betRate" align="center" label="比例">
|
||||
<template #default="row">
|
||||
<span>{{ (row.row.betRate * 100).toFixed(2) + '%' }}</span>
|
||||
</template>
|
||||
</el-table-column>
|
||||
</template>
|
||||
</el-table>
|
||||
<el-pagination style="margin-top: 10px" class="paginationClass" :current-page="dialogPagination.pageNo"
|
||||
:page-size="dialogPagination.pageSize" :page-sizes="[10, 20, 50, 100, 200]"
|
||||
layout="sizes, prev, pager, next" :total="dialogPagination.total" @size-change="detailhandleSizeChange"
|
||||
@current-change="detailhandleCurrentChange" />
|
||||
<!-- 操作 -->
|
||||
<template #footer>
|
||||
<span class="dialog-footer">
|
||||
<el-button type="primary" class="primary" @click="detailsDialog = false;detailPageType = 0">关闭</el-button>
|
||||
</span>
|
||||
</template>
|
||||
</el-dialog>
|
||||
</div>
|
||||
</template>
|
||||
|
||||
<script>
|
||||
import { ref, onMounted } from 'vue'
|
||||
import { dateFormat } from "@/utils/system-helper";
|
||||
import { formatDate } from "@/utils/relDate";
|
||||
import {
|
||||
gameList,
|
||||
getGamedata,
|
||||
exportForMiniGame,
|
||||
getUserGamedata,
|
||||
exportUserForMiniGame,
|
||||
getGameDetailGamedata,
|
||||
exportGameDetailExportForMiniGame
|
||||
} from "@/api/gameSummary/gameSummary";
|
||||
import { ElMessage } from "element-plus";
|
||||
import PartitionSelect from "../common/partitionSelect.vue";
|
||||
|
||||
export default {
|
||||
name: "GameSummary",
|
||||
components: {PartitionSelect},
|
||||
setup() {
|
||||
const partitionOptions = ref([]);
|
||||
const nameOptions = ref([{ name: '灵', channel: 'LEADERCC' }, { name: '百顺', channel: 'BAISHUN' },{ name: 'JOY游戏', channel: 'JOYPLAY' }]);
|
||||
const gameOptions = ref({});
|
||||
const dataTime = ref('');
|
||||
const formData = ref({
|
||||
channel: 'LEADERCC',
|
||||
partitionId: undefined,
|
||||
gameId: 'All',
|
||||
pageNo: 1,
|
||||
pageSize: 10,
|
||||
total: 0,
|
||||
startTime: '',
|
||||
endTime: ''
|
||||
});
|
||||
const tableData = ref({
|
||||
dataOuter: [],
|
||||
dataInner: [],
|
||||
loadingOuter: false,
|
||||
loadingInner: false
|
||||
});
|
||||
const dialogPagination = ref({
|
||||
pageNo: 1,
|
||||
pageSize: 10,
|
||||
total: 0,
|
||||
})
|
||||
const detailsDialog = ref(false);
|
||||
const exportStatDate = ref('');
|
||||
const detailPageType = ref(0);
|
||||
const changeEvent = () => {
|
||||
formData.value.gameId = gameOptions.value[formData.value.channel][0].gameId;
|
||||
}
|
||||
const getGameOptions = () => {
|
||||
nameOptions.value.forEach(item => {
|
||||
gameList({ channel: item.channel }).then(res => {
|
||||
if (res.code == 200) {
|
||||
gameOptions.value[item.channel] = res.data;
|
||||
}
|
||||
});
|
||||
});
|
||||
}
|
||||
// 查询
|
||||
const getData = () => {
|
||||
tableData.value.loadingOuter = true;
|
||||
if (dataTime.value && dataTime.value.length > 0) {
|
||||
formData.value.startTime = dateFormat(dataTime.value[0], "yyyy-MM-dd hh:mm:ss");
|
||||
formData.value.endTime = dateFormat(dataTime.value[1], "yyyy-MM-dd hh:mm:ss");
|
||||
} else {
|
||||
formData.value.startTime = dataTime.value
|
||||
formData.value.endTime = dataTime.value
|
||||
}
|
||||
const { channel, endTime, gameId, pageNo, pageSize, partitionId, startTime } = formData.value;
|
||||
getGamedata({ channel, endTime, gameId, pageNo, pageSize, partitionId, startTime }).then(res => {
|
||||
if (res.code == 200) {
|
||||
tableData.value.dataOuter = res.data.rows;
|
||||
tableData.value.loadingOuter = false;
|
||||
formData.value.total = res.data.total
|
||||
} else {
|
||||
tableData.value.loadingOuter = false;
|
||||
ElMessage.error(res.message);
|
||||
}
|
||||
|
||||
});
|
||||
}
|
||||
//重置
|
||||
const resetFormData = () => {
|
||||
Object.assign(formData.value, {
|
||||
channel: '',
|
||||
partitionId: undefined,
|
||||
gameId: '',
|
||||
pageNo: 1,
|
||||
pageSize: 10,
|
||||
total: 0,
|
||||
startTime: '',
|
||||
endTime: ''
|
||||
});
|
||||
tableData.value.dataOuter = [];
|
||||
tableData.value.dataInner = [];
|
||||
};
|
||||
// 导出
|
||||
const confirmExport2Excel = async () => {
|
||||
Object.assign(formData.value, { pageSize: 10000, pageNo: 1 });
|
||||
const { channel, endTime, gameId, pageNo, pageSize, partitionId, startTime } = formData.value;
|
||||
try {
|
||||
const res = await exportForMiniGame({
|
||||
channel, endTime, gameId, pageNo, pageSize, partitionId, startTime
|
||||
})
|
||||
if (res) {
|
||||
ElMessage({
|
||||
message: '导出成功',
|
||||
type: 'success',
|
||||
});
|
||||
let time = formatDate(new Date());
|
||||
let alink = document.createElement("a");
|
||||
alink.download = `game汇总${time}.xls`;
|
||||
alink.style.display = "none";
|
||||
const blob = new Blob([res]);
|
||||
alink.href = URL.createObjectURL(blob);
|
||||
document.body.appendChild(alink);
|
||||
alink.click();
|
||||
URL.revokeObjectURL(alink.href);
|
||||
}
|
||||
|
||||
} catch (error) {
|
||||
ElMessage({
|
||||
message: error.message,
|
||||
type: 'error',
|
||||
});
|
||||
}
|
||||
}
|
||||
const confirmExport2ExcelTwo = async () => {
|
||||
const demand = detailPageType.value == 1 ? exportUserForMiniGame : exportGameDetailExportForMiniGame
|
||||
try {
|
||||
console.log(exportStatDate.value, '-----')
|
||||
const { channel, gameId, partitionId } = formData.value;
|
||||
// Object.assign(dialogPagination.value, { pageSize: 10000, pageNo: 1 });
|
||||
const res = await demand({
|
||||
channel,
|
||||
gameId,
|
||||
partitionId,
|
||||
endTime: exportStatDate.value,
|
||||
startTime: exportStatDate.value,
|
||||
})
|
||||
if (res) {
|
||||
ElMessage({
|
||||
message: '导出成功',
|
||||
type: 'success',
|
||||
});
|
||||
let time = formatDate(new Date());
|
||||
let alink = document.createElement("a");
|
||||
alink.download = detailPageType.value == 1 ? `game汇总用户明细${time}.xls` : `game汇总游戏明细${time}.xls`;
|
||||
alink.style.display = "none";
|
||||
const blob = new Blob([res]);
|
||||
alink.href = URL.createObjectURL(blob);
|
||||
document.body.appendChild(alink);
|
||||
alink.click();
|
||||
URL.revokeObjectURL(alink.href);
|
||||
// exportStatDate.value = ''
|
||||
}
|
||||
|
||||
} catch (error) {
|
||||
ElMessage({
|
||||
message: error.message,
|
||||
type: 'error',
|
||||
});
|
||||
}
|
||||
}
|
||||
// 明细
|
||||
const detailPageFun = async (row, type) => {
|
||||
tableData.value.loadingInner = true;
|
||||
// console.log(type, 'type--------')
|
||||
if(type){
|
||||
detailPageType.value = type
|
||||
}
|
||||
if (row) {
|
||||
exportStatDate.value = row.statDate
|
||||
}
|
||||
console.log(detailPageType.value, 'type--------')
|
||||
const { channel, gameId, partitionId } = formData.value;
|
||||
const { pageNo, pageSize } = dialogPagination.value
|
||||
const demand = detailPageType.value == 1 ? getUserGamedata : getGameDetailGamedata
|
||||
const res = await demand({
|
||||
channel,
|
||||
gameId,
|
||||
partitionId,
|
||||
endTime: exportStatDate.value,
|
||||
startTime: exportStatDate.value,
|
||||
pageNo,
|
||||
pageSize
|
||||
})
|
||||
if (res.code == 200) {
|
||||
tableData.value.dataInner = res.data.rows;
|
||||
tableData.value.loadingInner = false;
|
||||
detailsDialog.value = true
|
||||
dialogPagination.value.total = res.data.total
|
||||
}
|
||||
}
|
||||
const handleSizeChange = (val) => {
|
||||
formData.value.pageSize = val;
|
||||
getData();
|
||||
};
|
||||
const handleCurrentChange = (val) => {
|
||||
formData.value.pageNo = val;
|
||||
getData();
|
||||
};
|
||||
const getPartitionDesc = (partitionId) => {
|
||||
if (!partitionOptions.value || !partitionId) return '空';
|
||||
const item = partitionOptions.value.find(item => item.id === partitionId);
|
||||
return item?.desc || '空';
|
||||
}
|
||||
const detailhandleSizeChange = (val) => {
|
||||
dialogPagination.value.pageSize = val;
|
||||
detailPageFun();
|
||||
};
|
||||
const detailhandleCurrentChange = (val) => {
|
||||
dialogPagination.value.pageNo = val;
|
||||
detailPageFun();
|
||||
};
|
||||
onMounted(() => {
|
||||
getGameOptions()
|
||||
});
|
||||
return {
|
||||
partitionOptions,
|
||||
nameOptions,
|
||||
formData,
|
||||
changeEvent,
|
||||
getGameOptions,
|
||||
gameOptions,
|
||||
dataTime,
|
||||
getData,
|
||||
confirmExport2Excel,
|
||||
tableData,
|
||||
resetFormData,
|
||||
detailPageFun,
|
||||
handleSizeChange,
|
||||
handleCurrentChange,
|
||||
detailsDialog,
|
||||
getPartitionDesc,
|
||||
confirmExport2ExcelTwo,
|
||||
exportStatDate,
|
||||
dialogPagination,
|
||||
detailhandleSizeChange,
|
||||
detailhandleCurrentChange,
|
||||
detailPageType
|
||||
};
|
||||
},
|
||||
}
|
||||
</script>
|
||||
|
||||
<style lang="less" scoped>
|
||||
.box {
|
||||
padding-top: 20px;
|
||||
background: #ecf0f5;
|
||||
|
||||
.inquire {
|
||||
display: inline-block;
|
||||
margin-right: 20px;
|
||||
|
||||
span {
|
||||
margin-right: 10px;
|
||||
}
|
||||
|
||||
.input {
|
||||
width: 180px;
|
||||
margin-right: 10px;
|
||||
}
|
||||
}
|
||||
|
||||
.dialogTableVisibleBut {
|
||||
display: block;
|
||||
margin: 30px 0 0 830px;
|
||||
}
|
||||
|
||||
.paginationClass {
|
||||
margin: 15px 0 5px 0px;
|
||||
}
|
||||
}
|
||||
</style>
|
299
src/views/gameUserSummary/gameUserSummary.vue
Normal file
299
src/views/gameUserSummary/gameUserSummary.vue
Normal file
@@ -0,0 +1,299 @@
|
||||
<template>
|
||||
<div class="box">
|
||||
<div class="inquire">
|
||||
<span>用户ID</span>
|
||||
<el-input
|
||||
v-model="formData.erbanNoStr"
|
||||
placeholder="请输入用户id,逗号隔开"
|
||||
class="input"
|
||||
></el-input>
|
||||
</div>
|
||||
<div class="inquire">
|
||||
<span>分区</span>
|
||||
<partition-select v-model:partition-id="formData.partitionId" v-model:partition-infos="partitionOptions" />
|
||||
</div>
|
||||
<div class="inquire">
|
||||
<span>第三方名称</span>
|
||||
<el-select v-model="formData.channel" placeholder="请选择" @change="changeEvent">
|
||||
<el-option v-for="item in nameOptions" :key="item.channel" :label="item.name" :value="item.channel">
|
||||
</el-option>
|
||||
</el-select>
|
||||
</div>
|
||||
<div class="inquire" v-if="formData.channel">
|
||||
<span>游戏名称</span>
|
||||
<el-select v-model="formData.gameId" placeholder="请选择">
|
||||
<el-option v-for="item in gameOptions[formData.channel]" :key="item.gameId" :label="item.gameName"
|
||||
:value="item.gameId">
|
||||
</el-option>
|
||||
</el-select>
|
||||
</div>
|
||||
<div class="inquire">
|
||||
<span class="demonstration">日期</span>
|
||||
<el-date-picker v-model="dataTime" type="daterange" range-separator="至" start-placeholder="开始日期"
|
||||
end-placeholder="结束日期" @calendar-change="calendarChange()">
|
||||
</el-date-picker>
|
||||
</div>
|
||||
<el-button style="" type="primary" @click="getData()">查询</el-button>
|
||||
<el-button class="primary" type="primary" @click="resetFormData()">重置</el-button>
|
||||
<el-button class="primary" type="primary" @click="confirmExport2Excel()">导出</el-button>
|
||||
<el-button class="primary" type="primary" @click="getTotalDayGamedataInfo()">汇总</el-button>
|
||||
<div class="summary_txt" v-if="tableData.totalStat !=undefined">汇总:总进:{{tableData.totalStat.payGold}},总出:{{tableData.totalStat.winGold}},总剩余:{{tableData.totalStat.totalRemain}},比例:{{ (tableData.totalStat.betRate * 100).toFixed(2) + '%' }}</div>
|
||||
<template v-if="tableData.totalList.length>0">
|
||||
<div class="summary_txt" v-for="(item,index) in tableData.totalList" :key="index">
|
||||
{{ item.statDate }}汇总数据: 总进:{{item.payGold}},总出:{{item.winGold}},总剩余:{{item.totalRemain}},比例:{{ (item.betRate * 100).toFixed(2) + '%' }}
|
||||
</div>
|
||||
</template>
|
||||
<!-- 表格数据 -->
|
||||
<el-table v-loading="tableData.loadingOuter" :data="tableData.dataOuter" ref="multipleTable"
|
||||
@selection-change="handleSelectionChange" border style="width: 100%; margin-top: 25px">
|
||||
<el-table-column prop="statDate" align="center" label="日期" />
|
||||
<el-table-column prop="channel" align="center" label="第三方名称" />
|
||||
<el-table-column prop="gameName" align="center" label="Game名称" />
|
||||
<el-table-column prop="erbanNo" align="center" label="用户id" />
|
||||
<el-table-column prop="nick" align="center" label="用户昵称" />
|
||||
<el-table-column prop="partitionId" align="center" label="分区">
|
||||
<template #default="row">
|
||||
<span>{{ getPartitionDesc(row.row.partitionId) }}</span>
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column prop="payGold" align="center" label="投入" />
|
||||
<el-table-column prop="playNum" align="center" label="投入次数" />
|
||||
<el-table-column prop="winGold" align="center" label="支出" />
|
||||
<el-table-column prop="totalRemain" align="center" label="剩余" />
|
||||
<el-table-column prop="betRate" align="center" label="比例">
|
||||
<template #default="row">
|
||||
<span>{{ (row.row.betRate * 100).toFixed(2) + '%' }}</span>
|
||||
</template>
|
||||
</el-table-column>
|
||||
</el-table>
|
||||
<!-- 分页 -->
|
||||
<el-pagination style="margin-top: 10px" class="paginationClass" :current-page="formData.pageNo"
|
||||
:page-size="formData.pageSize" :page-sizes="[10, 20, 50, 100, 200]" layout="sizes, prev, pager, next"
|
||||
:total="formData.total" @size-change="handleSizeChange" @current-change="handleCurrentChange" />
|
||||
</div>
|
||||
</template>
|
||||
|
||||
<script>
|
||||
import { ref, onMounted } from 'vue'
|
||||
import { dateFormat } from "@/utils/system-helper";
|
||||
import { formatDate } from "@/utils/relDate";
|
||||
import {
|
||||
gameList,
|
||||
getUserGamedata,
|
||||
exportUserForMiniGame,
|
||||
getTotalDayGamedata
|
||||
} from "@/api/gameSummary/gameSummary";
|
||||
import { ElMessage } from "element-plus";
|
||||
import PartitionSelect from "../common/partitionSelect.vue";
|
||||
export default {
|
||||
name: "gameUserSummary",
|
||||
components: {PartitionSelect},
|
||||
setup () {
|
||||
const partitionOptions = ref([]);
|
||||
const nameOptions = ref([{ name: '灵', channel: 'LEADERCC' }, { name: '百顺', channel: 'BAISHUN' },{ name: 'JOY游戏', channel: 'JOYPLAY' }]);
|
||||
const gameOptions = ref({});
|
||||
const dataTime = ref('');
|
||||
const formData = ref({
|
||||
erbanNoStr:'',
|
||||
channel: 'LEADERCC',
|
||||
partitionId: undefined,
|
||||
gameId: 'All',
|
||||
pageNo: 1,
|
||||
pageSize: 10,
|
||||
total: 0,
|
||||
startTime: '',
|
||||
endTime: ''
|
||||
});
|
||||
const tableData = ref({
|
||||
dataOuter: [],
|
||||
loadingOuter:false,
|
||||
totalStat:undefined,
|
||||
totalList:[]
|
||||
|
||||
});
|
||||
const changeEvent = () => {
|
||||
formData.value.gameId = gameOptions.value[formData.value.channel][0].gameId;
|
||||
}
|
||||
const getGameOptions = () => {
|
||||
nameOptions.value.forEach(item => {
|
||||
gameList({ channel: item.channel }).then(res => {
|
||||
if (res.code == 200) {
|
||||
gameOptions.value[item.channel] = res.data;
|
||||
}
|
||||
});
|
||||
});
|
||||
}
|
||||
// 查询
|
||||
const getData = () => {
|
||||
tableData.value.loadingOuter = true;
|
||||
if (dataTime.value && dataTime.value.length > 0) {
|
||||
formData.value.startTime = dateFormat(dataTime.value[0], "yyyy-MM-dd hh:mm:ss");
|
||||
formData.value.endTime = dateFormat(dataTime.value[1], "yyyy-MM-dd hh:mm:ss");
|
||||
}else{
|
||||
formData.value.startTime = dataTime.value
|
||||
formData.value.endTime = dataTime.value
|
||||
}
|
||||
const { erbanNoStr,channel, endTime, gameId, pageNo, pageSize, partitionId, startTime } = formData.value;
|
||||
getUserGamedata({erbanNoStr, channel, endTime, gameId, pageNo, pageSize, partitionId, startTime }).then(res => {
|
||||
if (res.code == 200) {
|
||||
tableData.value.dataOuter = res.data.rows;
|
||||
tableData.value.loadingOuter = false;
|
||||
formData.value.total = res.data.total
|
||||
tableData.value.totalStat = res.data.totalMap?.totalStat;
|
||||
tableData.value.totalList = [];
|
||||
} else {
|
||||
tableData.value.loadingOuter = false;
|
||||
ElMessage.error(res.message);
|
||||
}
|
||||
|
||||
});
|
||||
}
|
||||
//重置
|
||||
const resetFormData = () => {
|
||||
Object.assign(formData.value, {
|
||||
erbanNoStr:'',
|
||||
channel: '',
|
||||
partitionId: undefined,
|
||||
gameId: '',
|
||||
pageNo: 1,
|
||||
pageSize: 10,
|
||||
total: 0,
|
||||
startTime: '',
|
||||
endTime: ''
|
||||
});
|
||||
tableData.value.dataOuter = [];
|
||||
};
|
||||
// 导出
|
||||
const confirmExport2Excel = async () => {
|
||||
Object.assign(formData.value, { pageSize: 10000, pageNo: 1 });
|
||||
const {erbanNoStr, channel, endTime, gameId, pageNo, pageSize, partitionId, startTime } = formData.value;
|
||||
try {
|
||||
const res = await exportUserForMiniGame({
|
||||
erbanNoStr,channel, endTime, gameId, pageNo, pageSize, partitionId, startTime
|
||||
})
|
||||
if (res) {
|
||||
ElMessage({
|
||||
message: '导出成功',
|
||||
type: 'success',
|
||||
});
|
||||
let time = formatDate(new Date());
|
||||
let alink = document.createElement("a");
|
||||
alink.download = `game用户汇总${time}.xls`;
|
||||
alink.style.display = "none";
|
||||
const blob = new Blob([res]);
|
||||
alink.href = URL.createObjectURL(blob);
|
||||
document.body.appendChild(alink);
|
||||
alink.click();
|
||||
URL.revokeObjectURL(alink.href);
|
||||
}
|
||||
|
||||
} catch (error) {
|
||||
ElMessage({
|
||||
message: error.message,
|
||||
type: 'error',
|
||||
});
|
||||
}
|
||||
}
|
||||
// 汇总
|
||||
const getTotalDayGamedataInfo = () => {
|
||||
if (dataTime.value && dataTime.value.length > 0) {
|
||||
formData.value.startTime = dateFormat(dataTime.value[0], "yyyy-MM-dd hh:mm:ss");
|
||||
formData.value.endTime = dateFormat(dataTime.value[1], "yyyy-MM-dd hh:mm:ss");
|
||||
} else {
|
||||
formData.value.startTime = dataTime.value
|
||||
formData.value.endTime = dataTime.value
|
||||
}
|
||||
const { channel, endTime, gameId, pageNo, pageSize, partitionId, startTime } = formData.value;
|
||||
getTotalDayGamedata({ channel, endTime, gameId, pageNo, pageSize, partitionId, startTime }).then(res => {
|
||||
if (res.code == 200) {
|
||||
tableData.value.totalList = res.data;
|
||||
|
||||
} else {
|
||||
ElMessage.error(res.message);
|
||||
}
|
||||
|
||||
});
|
||||
}
|
||||
const handleSizeChange = (val) => {
|
||||
formData.value.pageSize = val;
|
||||
getData();
|
||||
};
|
||||
const handleCurrentChange = (val) => {
|
||||
formData.value.pageNo = val;
|
||||
getData();
|
||||
};
|
||||
const getPartitionDesc = (partitionId) => {
|
||||
if (!partitionOptions.value || !partitionId) return '空';
|
||||
const item = partitionOptions.value.find(item => item.id === partitionId);
|
||||
return item?.desc || '空';
|
||||
}
|
||||
const calendarChange = () => {
|
||||
console.log()
|
||||
}
|
||||
onMounted(() => {
|
||||
getGameOptions()
|
||||
// changeEvent()
|
||||
});
|
||||
return {
|
||||
partitionOptions,
|
||||
nameOptions,
|
||||
gameOptions,
|
||||
dataTime,
|
||||
formData,
|
||||
tableData,
|
||||
changeEvent,
|
||||
getGameOptions,
|
||||
resetFormData,
|
||||
handleSizeChange,
|
||||
handleCurrentChange,
|
||||
getPartitionDesc,
|
||||
getData,
|
||||
confirmExport2Excel,
|
||||
calendarChange,
|
||||
getTotalDayGamedataInfo
|
||||
|
||||
}
|
||||
}
|
||||
}
|
||||
</script>
|
||||
|
||||
<style lang="less" scoped>
|
||||
.box {
|
||||
padding-top: 20px;
|
||||
background: #ecf0f5;
|
||||
|
||||
.inquire {
|
||||
display: inline-block;
|
||||
margin-right: 20px;
|
||||
|
||||
span {
|
||||
margin-right: 10px;
|
||||
}
|
||||
|
||||
.input {
|
||||
width: 180px;
|
||||
margin-right: 10px;
|
||||
}
|
||||
}
|
||||
|
||||
.dialogTableVisibleBut {
|
||||
display: block;
|
||||
margin: 30px 0 0 830px;
|
||||
}
|
||||
|
||||
.paginationClass {
|
||||
margin: 15px 0 5px 0px;
|
||||
}
|
||||
}
|
||||
.summary_txt{
|
||||
font-family: PingFang SC, PingFang SC;
|
||||
font-weight: 500;
|
||||
font-size: 16px;
|
||||
color: #313131;
|
||||
line-height: 21px;
|
||||
text-align: left;
|
||||
font-style: normal;
|
||||
text-transform: none;
|
||||
margin-top: 10px;
|
||||
}
|
||||
</style>
|
342
src/views/gameWhitelist/gameFeeRateUserRechargeLevelConfig.vue
Normal file
342
src/views/gameWhitelist/gameFeeRateUserRechargeLevelConfig.vue
Normal file
@@ -0,0 +1,342 @@
|
||||
<template>
|
||||
<div class="box">
|
||||
<!-- 查询 -->
|
||||
<div class="inquire">
|
||||
<span>用户充值等级</span>
|
||||
<el-select v-model="inquire.userRechargeLevel"
|
||||
placeholder="请选择"
|
||||
class="select">
|
||||
<el-option label="全部"
|
||||
:value="inquire.userRechargeLevelAll" />
|
||||
<el-option v-for="item in inquire.userRechargeLevelList"
|
||||
:key="item"
|
||||
:label="item"
|
||||
:value="item">
|
||||
</el-option>
|
||||
</el-select>
|
||||
</div>
|
||||
<!-- 查询 -->
|
||||
<div class="inquire">
|
||||
<span>游戏商</span>
|
||||
<el-select v-model="inquire.channel"
|
||||
default="LEADERCC"
|
||||
placeholder="请选择"
|
||||
class="select">
|
||||
<el-option label="灵"
|
||||
value="LEADERCC" />
|
||||
</el-select>
|
||||
</div>
|
||||
<!-- 查询 -->
|
||||
<div class="inquire">
|
||||
<span>游戏</span>
|
||||
<el-select v-model="inquire.gameId"
|
||||
placeholder="请选择"
|
||||
class="select">
|
||||
<el-option v-for="item in inquire.gameList"
|
||||
:key="item.gameId"
|
||||
:label="item.gameName"
|
||||
:value="item.gameId">
|
||||
</el-option>
|
||||
</el-select>
|
||||
</div>
|
||||
|
||||
<!-- 新增按钮 -->
|
||||
<el-button class="primary"
|
||||
type="primary"
|
||||
@click="editDialog = true">新增</el-button>
|
||||
<!-- 查询按钮 -->
|
||||
<el-button class="primary"
|
||||
type="primary"
|
||||
@click="getData()">查询</el-button>
|
||||
|
||||
<!-- 表格 -->
|
||||
<el-table v-loading="loading"
|
||||
:data="tableData"
|
||||
border
|
||||
style="width: 100%; margin-top: 25px">
|
||||
<el-table-column prop="userRechargeLevel"
|
||||
align="center"
|
||||
label="充值等级" />
|
||||
<el-table-column prop="channelName"
|
||||
align="center"
|
||||
label="游戏商" />
|
||||
<el-table-column prop="gameId"
|
||||
align="center"
|
||||
label="游戏ID" />
|
||||
<el-table-column prop="gameName"
|
||||
align="center"
|
||||
label="游戏名称" />
|
||||
<el-table-column prop="feeRate"
|
||||
align="center"
|
||||
label="water" />
|
||||
<el-table-column prop="updateTime"
|
||||
align="center"
|
||||
label="更新时间" />
|
||||
<el-table-column prop="adminName"
|
||||
align="center"
|
||||
label="操作人" />
|
||||
<el-table-column align="center"
|
||||
label="操作"
|
||||
width="240">
|
||||
<template v-slot="scope">
|
||||
<el-button @click="openEditDialog(scope.row)"
|
||||
class="primary"
|
||||
type="primary"
|
||||
size="default">编辑</el-button>
|
||||
<el-button @click="confirmDelete(scope.row)"
|
||||
class="danger"
|
||||
type="danger"
|
||||
size="default">删除</el-button>
|
||||
</template>
|
||||
</el-table-column>
|
||||
</el-table>
|
||||
|
||||
<!-- 分页 -->
|
||||
<el-pagination style="margin-top: 10px"
|
||||
class="paginationClass"
|
||||
v-model:current-page="page.currentPage"
|
||||
v-model:page-size="page.pageSize"
|
||||
:page-sizes="[10, 20, 50]"
|
||||
layout="sizes, prev, pager, next"
|
||||
:total="page.total"
|
||||
@size-change="handleSizeChange"
|
||||
@current-change="handleCurrentChange" />
|
||||
</div>
|
||||
|
||||
<!-- 新增弹窗 -->
|
||||
<el-dialog v-model="editDialog"
|
||||
title="新增"
|
||||
width="30%"
|
||||
center>
|
||||
<el-form label-width="80px">
|
||||
<el-form-item label="用户充值等级">
|
||||
<el-select v-model="editObj.userRechargeLevel"
|
||||
placeholder="请选择"
|
||||
class="select">
|
||||
<el-option v-for="item in inquire.userRechargeLevelList"
|
||||
:key="item"
|
||||
:label="item"
|
||||
:value="item">
|
||||
</el-option>
|
||||
</el-select>
|
||||
</el-form-item>
|
||||
<el-form-item label="游戏商">
|
||||
<el-select v-model="editObj.channel"
|
||||
placeholder="请选择"
|
||||
class="select">
|
||||
<el-option label="灵"
|
||||
value="LEADERCC" />
|
||||
</el-select>
|
||||
</el-form-item>
|
||||
<el-form-item label="游戏id">
|
||||
<el-select v-model="editObj.gameId"
|
||||
placeholder="请选择"
|
||||
style="width: 100%;">
|
||||
<el-option v-for="item in inquire.gameList"
|
||||
:key="item.gameId"
|
||||
:label="item.gameName"
|
||||
:value="item.gameId">
|
||||
</el-option>
|
||||
</el-select>
|
||||
</el-form-item>
|
||||
<el-form-item label="Water">
|
||||
<el-input style="width: 100%;"
|
||||
v-model="editObj.feeRate"
|
||||
placeholder="请输入"></el-input>
|
||||
</el-form-item>
|
||||
<el-form-item>
|
||||
(例如water:0.2%,则填0.2即可,water2%,则填2)
|
||||
</el-form-item>
|
||||
</el-form>
|
||||
|
||||
<template #footer>
|
||||
<span class="dialog-footer">
|
||||
<el-button @click="editDialog = false">取消</el-button>
|
||||
<el-button type="primary"
|
||||
@click="editClick()"> 保存 </el-button>
|
||||
</span>
|
||||
</template>
|
||||
</el-dialog>
|
||||
</template>
|
||||
|
||||
<script>
|
||||
import { listLevel } from '@/api/userRechargeLevel/userRechargeLevel'
|
||||
import { gameList } from "@/api/gameWhitelist/gameWhitelist";
|
||||
import { page, save, del } from "@/api/gameWhitelist/gameFeeUserRechargeLevelConfig";
|
||||
// @ts-ignore
|
||||
import { ElMessage, ElMessageBox } from "element-plus";
|
||||
export default {
|
||||
name: "gameFeeRateUserRechargeLevelConfig",
|
||||
data () {
|
||||
return {
|
||||
loading: false,
|
||||
//查询所需条件对象
|
||||
inquire: {
|
||||
userRechargeLevelAll: "全部",
|
||||
userRechargeLevel: undefined,
|
||||
userRechargeLevelList: [],
|
||||
gameId: undefined,
|
||||
gameList: [],
|
||||
},
|
||||
page: {
|
||||
total: 0,
|
||||
currentPage: 1,
|
||||
pageSize: 10
|
||||
},
|
||||
// 表格
|
||||
tableData: [],
|
||||
// 新增
|
||||
editDialog: false,
|
||||
editObj: {},
|
||||
};
|
||||
},
|
||||
created () {
|
||||
listLevel().then(res => {
|
||||
if (res.code !== 200) {
|
||||
ElMessage.error(res.message);
|
||||
return
|
||||
}
|
||||
this.inquire.userRechargeLevelList = res.data;
|
||||
this.inquire.userRechargeLevel = this.inquire.userRechargeLevelAll;
|
||||
})
|
||||
gameList().then((res) => {
|
||||
if (res.code != 200) {
|
||||
ElMessage({
|
||||
showClose: true,
|
||||
message: res.message,
|
||||
type: "error",
|
||||
});
|
||||
return
|
||||
}
|
||||
this.inquire.gameList = [{ gameId: undefined, gameName: '全部' }, ...res.data];
|
||||
this.inquire.gameId = this.inquire.gameList[0].gameId;
|
||||
});
|
||||
this.getData();
|
||||
},
|
||||
methods: {
|
||||
// 查询接口
|
||||
getData () {
|
||||
this.loading = true;
|
||||
page({
|
||||
userRechargeLevel: this.inquire.userRechargeLevel == this.inquire.userRechargeLevelAll ?
|
||||
undefined : this.inquire.userRechargeLevel,
|
||||
channel: this.inquire.channel,
|
||||
gameId: this.inquire.gameId,
|
||||
pageNo: this.page.currentPage,
|
||||
pageSize: this.page.pageSize,
|
||||
}).then((res) => {
|
||||
if (res.code == 200) {
|
||||
this.page.total = res.data.total;
|
||||
this.tableData = res.data.rows;
|
||||
this.loading = false;
|
||||
} else {
|
||||
ElMessage({
|
||||
showClose: true,
|
||||
message: res.message,
|
||||
type: "error",
|
||||
});
|
||||
}
|
||||
});
|
||||
},
|
||||
openEditDialog (obj) {
|
||||
this.editDialog = true;
|
||||
this.editObj = Object.assign({}, obj);
|
||||
},
|
||||
// 确认新增按钮
|
||||
editClick () {
|
||||
save({
|
||||
userRechargeLevel: this.editObj.userRechargeLevel,
|
||||
channel: this.editObj.channel,
|
||||
gameId: this.editObj.gameId,
|
||||
feeRate: this.editObj.feeRate,
|
||||
}).then((res) => {
|
||||
if (res.code != 200) {
|
||||
ElMessage({
|
||||
showClose: true,
|
||||
message: res.message,
|
||||
type: "error",
|
||||
});
|
||||
return;
|
||||
}
|
||||
this.editDialog = false;
|
||||
ElMessage({
|
||||
showClose: true,
|
||||
message: "新增成功",
|
||||
type: "success",
|
||||
});
|
||||
this.getData();
|
||||
});
|
||||
},
|
||||
// 删除确认
|
||||
confirmDelete (row) {
|
||||
ElMessageBox.confirm(
|
||||
'确定要删除这条记录吗?',
|
||||
'提示',
|
||||
{
|
||||
confirmButtonText: '确定',
|
||||
cancelButtonText: '取消',
|
||||
type: 'warning'
|
||||
}
|
||||
).then(() => {
|
||||
del({
|
||||
userRechargeLevel: row.userRechargeLevel,
|
||||
channel: row.channel,
|
||||
gameId: row.gameId,
|
||||
}).then((res) => {
|
||||
if (res.code != 200) {
|
||||
ElMessage({
|
||||
showClose: true,
|
||||
message: res.message,
|
||||
type: "error",
|
||||
});
|
||||
return;
|
||||
}
|
||||
ElMessage({
|
||||
showClose: true,
|
||||
message: "删除成功",
|
||||
type: "success",
|
||||
});
|
||||
this.getData();
|
||||
});
|
||||
}).catch(() => {
|
||||
ElMessage({
|
||||
type: 'info',
|
||||
message: '已取消删除',
|
||||
});
|
||||
});
|
||||
},
|
||||
// 分页导航
|
||||
handleSizeChange () {
|
||||
this.getData();
|
||||
},
|
||||
handleCurrentChange () {
|
||||
this.getData();
|
||||
},
|
||||
},
|
||||
};
|
||||
</script>
|
||||
|
||||
<style lang="less" scoped>
|
||||
.box {
|
||||
padding-top: 20px;
|
||||
background: #ecf0f5;
|
||||
.inquire {
|
||||
display: inline-block;
|
||||
margin-right: 20px;
|
||||
span {
|
||||
margin-right: 10px;
|
||||
}
|
||||
.input {
|
||||
width: 180px;
|
||||
margin-right: 10px;
|
||||
}
|
||||
}
|
||||
.dialogTableVisibleBut {
|
||||
display: block;
|
||||
margin: 30px 0 0 830px;
|
||||
}
|
||||
.paginationClass {
|
||||
margin: 15px 0 5px 0px;
|
||||
}
|
||||
}
|
||||
</style>
|
297
src/views/gameWhitelist/gameWhitelist.vue
Normal file
297
src/views/gameWhitelist/gameWhitelist.vue
Normal file
@@ -0,0 +1,297 @@
|
||||
<template>
|
||||
<div class="box">
|
||||
<!-- 查询 -->
|
||||
<div class="inquire">
|
||||
<span>ID</span>
|
||||
<el-input v-model="inquire.userId"
|
||||
placeholder=""
|
||||
class="input"></el-input>
|
||||
</div>
|
||||
<div class="inquire">
|
||||
<span>状态</span>
|
||||
<el-select v-model="inquire.validStatus"
|
||||
placeholder="请选择">
|
||||
<el-option v-for="item in inquire.options"
|
||||
:key="item.value"
|
||||
:label="item.label"
|
||||
:value="item.value">
|
||||
</el-option>
|
||||
</el-select>
|
||||
</div>
|
||||
|
||||
<!-- 新增按钮 -->
|
||||
<el-button class="primary"
|
||||
type="primary"
|
||||
@click="addDialog = true">新增</el-button>
|
||||
<!-- 查询按钮 -->
|
||||
<el-button class="primary"
|
||||
type="primary"
|
||||
@click="getData()">查询</el-button>
|
||||
<!-- 表格 -->
|
||||
<el-table v-loading="loading"
|
||||
:data="tableData"
|
||||
border
|
||||
style="width: 100%; margin-top: 25px">
|
||||
<el-table-column prop="uid"
|
||||
align="center"
|
||||
label="UID" />
|
||||
<el-table-column prop="erbanNo"
|
||||
align="center"
|
||||
label="用户ID" />
|
||||
<el-table-column prop="userRechargeLevel"
|
||||
align="center"
|
||||
label="充值等级" />
|
||||
<el-table-column prop="gameId"
|
||||
align="center"
|
||||
label="游戏ID" />
|
||||
<el-table-column prop="gameName"
|
||||
align="center"
|
||||
label="游戏名称" />
|
||||
<el-table-column prop="feeRate"
|
||||
align="center"
|
||||
label="water" />
|
||||
<el-table-column prop="adminName"
|
||||
align="center"
|
||||
label="操作人" />
|
||||
<el-table-column prop="createTime"
|
||||
align="center"
|
||||
label="添加时间" />
|
||||
<el-table-column align="center"
|
||||
label="操作"
|
||||
width="100">
|
||||
<template v-slot="scope">
|
||||
<el-button v-show="scope.row.validStatus == 1"
|
||||
@click="invalid(scope.row.id)"
|
||||
class="primary"
|
||||
type="primary"
|
||||
size="default">失效</el-button>
|
||||
<div v-show="scope.row.validStatus == 0">无效</div>
|
||||
<div v-show="scope.row.validStatus == -1">全部</div>
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column prop="invalidTime"
|
||||
align="center"
|
||||
label="失效时间" />
|
||||
</el-table>
|
||||
|
||||
<!-- 分页 -->
|
||||
<el-pagination style="margin-top: 10px"
|
||||
class="paginationClass"
|
||||
v-model:current-page="currentPage"
|
||||
v-model:page-size="pageSize"
|
||||
:page-sizes="[10, 20, 50, 100, 200, 500]"
|
||||
layout="sizes, prev, pager, next"
|
||||
:total="total"
|
||||
@size-change="handleSizeChange"
|
||||
@current-change="handleCurrentChange" />
|
||||
</div>
|
||||
|
||||
<!-- 新增弹窗 -->
|
||||
<el-dialog v-model="addDialog"
|
||||
title="新增"
|
||||
width="30%"
|
||||
center>
|
||||
<el-form label-width="80px">
|
||||
<el-form-item label="用户id">
|
||||
<el-input style="width: 100%;"
|
||||
v-model="adduserID"
|
||||
placeholder="请输入"></el-input>
|
||||
</el-form-item>
|
||||
<el-form-item label="游戏id">
|
||||
<el-select v-model="gameID"
|
||||
placeholder="请选择"
|
||||
style="width: 100%;">
|
||||
<el-option v-for="item in gameIDArr"
|
||||
:key="item.gameId"
|
||||
:label="item.gameName"
|
||||
:value="item.gameId">
|
||||
</el-option>
|
||||
</el-select>
|
||||
</el-form-item>
|
||||
<el-form-item label="Water">
|
||||
<el-input style="width: 100%;"
|
||||
v-model="water"
|
||||
placeholder="请输入"></el-input>
|
||||
</el-form-item>
|
||||
<el-form-item>
|
||||
(例如water:0.2%,则填0.2即可,water2%,则填2)
|
||||
</el-form-item>
|
||||
</el-form>
|
||||
|
||||
<template #footer>
|
||||
<span class="dialog-footer">
|
||||
<el-button @click="addDialog = false">取消</el-button>
|
||||
<el-button type="primary"
|
||||
@click="addClick()"> 保存 </el-button>
|
||||
</span>
|
||||
</template>
|
||||
</el-dialog>
|
||||
</template>
|
||||
<script>
|
||||
import {
|
||||
gameList,
|
||||
gameFeeRateList,
|
||||
gameFeeRate,
|
||||
feeRateInvalid,
|
||||
} from "@/api/gameWhitelist/gameWhitelist";
|
||||
// @ts-ignore
|
||||
import { dateFormat } from "@/utils/system-helper";
|
||||
// @ts-ignore
|
||||
import { ElMessage } from "element-plus";
|
||||
export default {
|
||||
name: "gameWhitelist",
|
||||
data () {
|
||||
return {
|
||||
loading: false,
|
||||
//查询所需条件对象
|
||||
inquire: {
|
||||
userId: "",
|
||||
validStatus: "-1",
|
||||
options: [
|
||||
{
|
||||
label: "无效",
|
||||
value: "0",
|
||||
},
|
||||
{
|
||||
label: "有效",
|
||||
value: "1",
|
||||
},
|
||||
{
|
||||
label: "全部",
|
||||
value: "-1",
|
||||
},
|
||||
],
|
||||
},
|
||||
//新增所需对象
|
||||
resource: {},
|
||||
// 表格
|
||||
tableData: [],
|
||||
// 分页
|
||||
total: 10, //总页数
|
||||
currentPage: 1, //页码
|
||||
pageSize: 10, //条数
|
||||
// 新增
|
||||
addDialog: false,
|
||||
adduserID: "",
|
||||
gameID: "",
|
||||
gameIDArr: [],
|
||||
water: "",
|
||||
};
|
||||
},
|
||||
created () {
|
||||
gameList().then((res) => {
|
||||
if (res.code == 200) {
|
||||
this.gameIDArr = res.data;
|
||||
} else {
|
||||
this.butClick = false;
|
||||
ElMessage({
|
||||
showClose: true,
|
||||
message: res.message,
|
||||
type: "error",
|
||||
});
|
||||
}
|
||||
});
|
||||
this.getData();
|
||||
},
|
||||
methods: {
|
||||
// 查询接口
|
||||
getData () {
|
||||
this.loading = true;
|
||||
gameFeeRateList({
|
||||
erbanNo: this.inquire.userId,
|
||||
validStatus: this.inquire.validStatus,
|
||||
pageNo: this.currentPage,
|
||||
pageSize: this.pageSize,
|
||||
}).then((res) => {
|
||||
if (res.code == 200) {
|
||||
this.total = res.data.total;
|
||||
this.tableData = res.data.rows;
|
||||
this.loading = false;
|
||||
} else {
|
||||
this.butClick = false;
|
||||
ElMessage({
|
||||
showClose: true,
|
||||
message: res.message,
|
||||
type: "error",
|
||||
});
|
||||
}
|
||||
});
|
||||
},
|
||||
// 确认新增按钮
|
||||
addClick () {
|
||||
gameFeeRate({
|
||||
erbanNo: this.adduserID,
|
||||
gameFeeRate: this.water,
|
||||
gameId: this.gameID,
|
||||
}).then((res) => {
|
||||
if (res.code == 200) {
|
||||
this.getData();
|
||||
this.addDialog = false;
|
||||
ElMessage({
|
||||
showClose: true,
|
||||
message: "新增成功",
|
||||
type: "success",
|
||||
});
|
||||
} else {
|
||||
this.butClick = false;
|
||||
ElMessage({
|
||||
showClose: true,
|
||||
message: res.message,
|
||||
type: "error",
|
||||
});
|
||||
}
|
||||
});
|
||||
},
|
||||
invalid (id) {
|
||||
feeRateInvalid({ id }).then((res) => {
|
||||
if (res.code == 200) {
|
||||
this.getData();
|
||||
ElMessage({
|
||||
showClose: true,
|
||||
message: "设置成功",
|
||||
type: "success",
|
||||
});
|
||||
} else {
|
||||
this.butClick = false;
|
||||
ElMessage({
|
||||
showClose: true,
|
||||
message: res.message,
|
||||
type: "error",
|
||||
});
|
||||
}
|
||||
});
|
||||
},
|
||||
// 分页导航
|
||||
handleSizeChange () {
|
||||
this.getData();
|
||||
},
|
||||
handleCurrentChange () {
|
||||
this.getData();
|
||||
},
|
||||
},
|
||||
};
|
||||
</script>
|
||||
<style lang="less" scoped>
|
||||
.box {
|
||||
padding-top: 20px;
|
||||
background: #ecf0f5;
|
||||
.inquire {
|
||||
display: inline-block;
|
||||
margin-right: 20px;
|
||||
span {
|
||||
margin-right: 10px;
|
||||
}
|
||||
.input {
|
||||
width: 180px;
|
||||
margin-right: 10px;
|
||||
}
|
||||
}
|
||||
.dialogTableVisibleBut {
|
||||
display: block;
|
||||
margin: 30px 0 0 830px;
|
||||
}
|
||||
.paginationClass {
|
||||
margin: 15px 0 5px 0px;
|
||||
}
|
||||
}
|
||||
</style>
|
248
src/views/giftPackCenter/distributionRecord.vue
Normal file
248
src/views/giftPackCenter/distributionRecord.vue
Normal file
@@ -0,0 +1,248 @@
|
||||
<template>
|
||||
<div class="box">
|
||||
<div class="inquire">
|
||||
<span>用户ID:</span>
|
||||
<el-input v-model="formData.erbanNo"
|
||||
placeholder=""
|
||||
class="input" />
|
||||
</div>
|
||||
<el-button style=""
|
||||
type="primary"
|
||||
@click="getData()">查询</el-button>
|
||||
<el-table v-loading="tableData.loading"
|
||||
:data="tableData.data"
|
||||
ref="multipleTable"
|
||||
@selection-change="handleSelectionChange"
|
||||
border
|
||||
style="width: 100%; margin-top: 25px">
|
||||
<el-table-column prop="packId"
|
||||
align="center"
|
||||
label="礼包ID" />
|
||||
<el-table-column prop="packName"
|
||||
align="center"
|
||||
label="礼包名称-华语区">
|
||||
<template v-slot="scope">{{
|
||||
getJsonField(scope.row.packName, "zh")
|
||||
}}</template>
|
||||
</el-table-column>
|
||||
<el-table-column prop="packName"
|
||||
align="center"
|
||||
label="礼包名称-英语区">
|
||||
<template v-slot="scope">{{
|
||||
getJsonField(scope.row.packName, "en")
|
||||
}}</template>
|
||||
</el-table-column>
|
||||
<el-table-column prop="packName"
|
||||
align="center"
|
||||
label="礼包名称-阿语区">
|
||||
<template v-slot="scope">{{
|
||||
getJsonField(scope.row.packName, "ar")
|
||||
}}</template>
|
||||
</el-table-column>
|
||||
<el-table-column prop="packName"
|
||||
align="center"
|
||||
label="礼包名称-土耳其区">
|
||||
<template v-slot="scope">{{
|
||||
getJsonField(scope.row.packName, "tr")
|
||||
}}</template>
|
||||
</el-table-column>
|
||||
<el-table-column prop="packName"
|
||||
align="center"
|
||||
label="礼包名称-葡萄牙语区">
|
||||
<template v-slot="scope">{{
|
||||
getJsonField(scope.row.packName, "pt")
|
||||
}}</template>
|
||||
</el-table-column>
|
||||
<el-table-column prop="packName"
|
||||
align="center"
|
||||
label="礼包名称-俄语">
|
||||
<template v-slot="scope">{{
|
||||
getJsonField(scope.row.packName, "ru")
|
||||
}}</template>
|
||||
</el-table-column>
|
||||
<el-table-column prop="packName"
|
||||
align="center"
|
||||
label="礼包名称-西班牙语">
|
||||
<template v-slot="scope">{{
|
||||
getJsonField(scope.row.packName, "es")
|
||||
}}</template>
|
||||
</el-table-column>
|
||||
<el-table-column prop="packName"
|
||||
align="center"
|
||||
label="礼包名称-乌兹别克语">
|
||||
<template v-slot="scope">{{
|
||||
getJsonField(scope.row.packName, "uz")
|
||||
}}</template>
|
||||
</el-table-column>
|
||||
<el-table-column prop="erbanNo"
|
||||
align="center"
|
||||
label="用户ID" />
|
||||
<el-table-column prop="packNum"
|
||||
align="center"
|
||||
label="数量" />
|
||||
<el-table-column prop="remark"
|
||||
align="center"
|
||||
label="理由" />
|
||||
<el-table-column prop="createTime"
|
||||
align="center"
|
||||
label="发放时间">
|
||||
<template v-slot="scope">{{
|
||||
convertTimestamp(scope.row.createTime)
|
||||
}}</template>
|
||||
</el-table-column>
|
||||
<el-table-column prop="adminUser"
|
||||
align="center"
|
||||
label="操作人" />
|
||||
<el-table-column align="center"
|
||||
label="操作"
|
||||
width="220">
|
||||
<template v-slot="scope">
|
||||
<el-button @click="packRecall(scope.row.id)"
|
||||
class="primary"
|
||||
type="primary"
|
||||
size="default"
|
||||
v-if="scope.row.status == 1">
|
||||
撤回
|
||||
</el-button>
|
||||
</template>
|
||||
</el-table-column>
|
||||
</el-table>
|
||||
<!-- 分页 -->
|
||||
<el-pagination style="margin-top: 10px"
|
||||
class="paginationClass"
|
||||
:current-page="formData.pageNo"
|
||||
:page-size="formData.pageSize"
|
||||
:page-sizes="[10, 20, 50, 100, 200]"
|
||||
layout="sizes, prev, pager, next"
|
||||
:total="tableData.total"
|
||||
@size-change="handleSizeChange"
|
||||
@current-change="handleCurrentChange" />
|
||||
</div>
|
||||
</template>
|
||||
|
||||
<script>
|
||||
import { ref, onMounted, reactive, computed } from "vue";
|
||||
import { ElMessage, ElMessageBox } from "element-plus";
|
||||
import {
|
||||
getRecordList,
|
||||
optionPackRecall,
|
||||
} from "@/api/giftPackCenter/giftPackCenter";
|
||||
export default {
|
||||
name: "distributionRecord",
|
||||
setup () {
|
||||
const formData = reactive({
|
||||
pageNo: 1,
|
||||
pageSize: 10,
|
||||
erbanNo: "",
|
||||
});
|
||||
const tableData = reactive({
|
||||
data: [],
|
||||
total: 0,
|
||||
loading: false,
|
||||
});
|
||||
const getData = () => {
|
||||
tableData.loading = true;
|
||||
getRecordList(formData).then((res) => {
|
||||
if (res.code == 200) {
|
||||
tableData.data = res.data.rows;
|
||||
tableData.total = res.data.total;
|
||||
tableData.loading = false;
|
||||
} else {
|
||||
tableData.loading = false;
|
||||
ElMessage.error(res.message);
|
||||
}
|
||||
});
|
||||
};
|
||||
// 撤回礼包
|
||||
const packRecall = (recordId) => {
|
||||
optionPackRecall({ recordId }).then((res) => {
|
||||
if (res.code == 200) {
|
||||
ElMessage.success("撤回成功");
|
||||
getData();
|
||||
} else {
|
||||
ElMessage.error(res.message);
|
||||
}
|
||||
});
|
||||
};
|
||||
const // 解析json字段
|
||||
getJsonField = (jsonStr, field) => {
|
||||
try {
|
||||
if (!jsonStr) return "";
|
||||
const obj = JSON.parse(jsonStr);
|
||||
return obj?.[field] || "";
|
||||
} catch (e) {
|
||||
console.error("JSON 解析失败:", jsonStr);
|
||||
return "";
|
||||
}
|
||||
};
|
||||
const convertTimestamp = (time) => {
|
||||
let date = new Date(time);
|
||||
return date.format("yyyy-MM-dd hh:mm:ss");
|
||||
};
|
||||
const handleSizeChange = (val) => {
|
||||
formData.pageSize = val;
|
||||
getData();
|
||||
};
|
||||
const handleCurrentChange = (val) => {
|
||||
formData.pageNo = val;
|
||||
getData();
|
||||
};
|
||||
return {
|
||||
formData,
|
||||
tableData,
|
||||
getData,
|
||||
getJsonField,
|
||||
convertTimestamp,
|
||||
packRecall,
|
||||
handleSizeChange,
|
||||
handleCurrentChange
|
||||
};
|
||||
},
|
||||
};
|
||||
</script>
|
||||
|
||||
<style lang="less" scoped>
|
||||
.box {
|
||||
padding-top: 20px;
|
||||
background: #ecf0f5;
|
||||
|
||||
.inquire {
|
||||
display: inline-block;
|
||||
margin-right: 20px;
|
||||
|
||||
span {
|
||||
margin-right: 10px;
|
||||
}
|
||||
|
||||
.input {
|
||||
width: 180px;
|
||||
margin-right: 10px;
|
||||
}
|
||||
}
|
||||
|
||||
.dialogTableVisibleBut {
|
||||
display: block;
|
||||
margin: 30px 0 0 830px;
|
||||
}
|
||||
|
||||
.paginationClass {
|
||||
margin: 15px 0 5px 0px;
|
||||
}
|
||||
}
|
||||
.selectBox {
|
||||
display: flex;
|
||||
height: 35px;
|
||||
line-height: 35px;
|
||||
margin-bottom: 20px;
|
||||
}
|
||||
|
||||
.selectBoxImg {
|
||||
height: 150px;
|
||||
}
|
||||
|
||||
.avatar {
|
||||
width: 178px;
|
||||
height: 178px;
|
||||
display: block;
|
||||
}
|
||||
</style>
|
717
src/views/giftPackCenter/giftPackageConfiguration.vue
Normal file
717
src/views/giftPackCenter/giftPackageConfiguration.vue
Normal file
@@ -0,0 +1,717 @@
|
||||
<template>
|
||||
<div class="box">
|
||||
<el-button style=""
|
||||
type="primary"
|
||||
@click="getData()">查询</el-button>
|
||||
<el-button style=""
|
||||
type="primary"
|
||||
@click="
|
||||
addDialog = true;
|
||||
resetaddFormData();
|
||||
">新增</el-button>
|
||||
<el-table v-loading="tableData.loading"
|
||||
:data="tableData.data"
|
||||
ref="multipleTable"
|
||||
@selection-change="handleSelectionChange"
|
||||
border
|
||||
style="width: 100%; margin-top: 25px">
|
||||
<el-table-column prop="packId"
|
||||
align="center"
|
||||
label="礼包ID" />
|
||||
<el-table-column prop="partitionDesc"
|
||||
align="center"
|
||||
label="分区" />
|
||||
<el-table-column prop="packName"
|
||||
align="center"
|
||||
label="礼包名称-华语区">
|
||||
<template v-slot="scope">{{
|
||||
getJsonField(scope.row.packName, "zh")
|
||||
}}</template>
|
||||
</el-table-column>
|
||||
<el-table-column prop="packName"
|
||||
align="center"
|
||||
label="礼包名称-英语区">
|
||||
<template v-slot="scope">{{
|
||||
getJsonField(scope.row.packName, "en")
|
||||
}}</template>
|
||||
</el-table-column>
|
||||
<el-table-column prop="packName"
|
||||
align="center"
|
||||
label="礼包名称-阿语区">
|
||||
<template v-slot="scope">{{
|
||||
getJsonField(scope.row.packName, "ar")
|
||||
}}</template>
|
||||
</el-table-column>
|
||||
<el-table-column prop="packName"
|
||||
align="center"
|
||||
label="礼包名称-土耳其区">
|
||||
<template v-slot="scope">{{
|
||||
getJsonField(scope.row.packName, "tr")
|
||||
}}</template>
|
||||
</el-table-column>
|
||||
<el-table-column prop="packName"
|
||||
align="center"
|
||||
label="礼包名称-葡萄牙语区">
|
||||
<template v-slot="scope">{{
|
||||
getJsonField(scope.row.packName, "pt")
|
||||
}}</template>
|
||||
</el-table-column>
|
||||
<el-table-column prop="packName"
|
||||
align="center"
|
||||
label="礼包名称-俄语">
|
||||
<template v-slot="scope">{{
|
||||
getJsonField(scope.row.packName, "ru")
|
||||
}}</template>
|
||||
</el-table-column>
|
||||
<el-table-column prop="packName"
|
||||
align="center"
|
||||
label="礼包名称-西班牙语">
|
||||
<template v-slot="scope">{{
|
||||
getJsonField(scope.row.packName, "es")
|
||||
}}</template>
|
||||
</el-table-column>
|
||||
<el-table-column prop="packName"
|
||||
align="center"
|
||||
label="礼包名称-乌兹别克语">
|
||||
<template v-slot="scope">{{
|
||||
getJsonField(scope.row.packName, "uz")
|
||||
}}</template>
|
||||
</el-table-column>
|
||||
<el-table-column prop="status"
|
||||
align="center"
|
||||
label="礼包状态">
|
||||
<template v-slot="scope">
|
||||
{{ scope.row.status == 1 ? "有效" : "无效" }}
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column prop="imgUrl"
|
||||
align="center"
|
||||
label="礼包样式">
|
||||
<template v-slot="scope">
|
||||
<el-image style="width: 100px; height: 100px"
|
||||
:src="scope.row.imgUrl"
|
||||
:zoom-rate="1.1"
|
||||
:preview-src-list="[scope.row.imgUrl ?? '']"
|
||||
fit="scale-down"
|
||||
preview-teleported="true"
|
||||
hide-on-click-modal="true" />
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column prop="createTime"
|
||||
align="center"
|
||||
label="创建时间">
|
||||
<template v-slot="scope">
|
||||
{{ scope.row.createTime }}
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column prop="expireDay"
|
||||
align="center"
|
||||
label="礼包过期时间" />
|
||||
<el-table-column align="center"
|
||||
label="操作"
|
||||
width="220">
|
||||
<template v-slot="scope">
|
||||
<el-button @click="detailPageFun(scope.row)"
|
||||
class="primary"
|
||||
type="primary"
|
||||
size="default">
|
||||
编辑礼包
|
||||
</el-button>
|
||||
<el-button @click="getRewardList(scope.row.packId)"
|
||||
class="primary"
|
||||
type="primary"
|
||||
size="default">
|
||||
奖品列表
|
||||
</el-button>
|
||||
<el-button @click="
|
||||
getAwardsFun(scope.row.partitionId);
|
||||
addFormData.packId = scope.row.packId;
|
||||
"
|
||||
class="primary"
|
||||
type="primary"
|
||||
size="default"
|
||||
style="margin-left: 0; margin-top: 10px">
|
||||
添加奖品
|
||||
</el-button>
|
||||
<el-button @click="
|
||||
addFormData.packId = scope.row.packId;
|
||||
sendPackCenterDialog = true;
|
||||
"
|
||||
class="primary"
|
||||
type="primary"
|
||||
size="default"
|
||||
style="margin-top: 10px">
|
||||
赠送礼包
|
||||
</el-button>
|
||||
</template>
|
||||
</el-table-column>
|
||||
</el-table>
|
||||
<!-- 分页 -->
|
||||
<el-pagination style="margin-top: 10px"
|
||||
class="paginationClass"
|
||||
:current-page="formData.pageNo"
|
||||
:page-size="formData.pageSize"
|
||||
:page-sizes="[10, 20, 50, 100, 200]"
|
||||
layout="sizes, prev, pager, next"
|
||||
:total="tableData.total"
|
||||
@size-change="handleSizeChange"
|
||||
@current-change="handleCurrentChange" />
|
||||
<el-dialog v-model="addDialog"
|
||||
:title="addFormData.packId == '' ? '新增' : '编辑'"
|
||||
width="28%"
|
||||
center>
|
||||
<div style="margin-bottom: 25px">
|
||||
<span style="display: inline-block; margin-right: 20px; width: 100px"
|
||||
class="col-sm-2 control-label">礼包名称-华语</span>
|
||||
<el-input v-model="addFormData.packNameZh"
|
||||
style="width: 50%"
|
||||
class="input"></el-input>
|
||||
</div>
|
||||
<div style="margin-bottom: 25px">
|
||||
<span style="display: inline-block; margin-right: 20px; width: 100px"
|
||||
class="col-sm-2 control-label">礼包名称-英语</span>
|
||||
<el-input v-model="addFormData.packNameEn"
|
||||
style="width: 50%"
|
||||
class="input"></el-input>
|
||||
</div>
|
||||
<div style="margin-bottom: 25px">
|
||||
<span style="display: inline-block; margin-right: 20px; width: 100px"
|
||||
class="col-sm-2 control-label">礼包名称-阿语</span>
|
||||
<el-input v-model="addFormData.packNameAr"
|
||||
style="width: 50%"
|
||||
class="input"></el-input>
|
||||
</div>
|
||||
<div style="margin-bottom: 25px">
|
||||
<span style="display: inline-block; margin-right: 20px; width: 100px"
|
||||
class="col-sm-2 control-label">礼包名称-土耳其</span>
|
||||
<el-input v-model="addFormData.packNameTr"
|
||||
style="width: 50%"
|
||||
class="input"></el-input>
|
||||
</div>
|
||||
<div style="margin-bottom: 25px">
|
||||
<span style="display: inline-block; margin-right: 20px; width: 100px"
|
||||
class="col-sm-2 control-label">礼包名称-葡萄牙语</span>
|
||||
<el-input v-model="addFormData.packNamePt"
|
||||
style="width: 50%"
|
||||
class="input"></el-input>
|
||||
</div>
|
||||
<div style="margin-bottom: 25px">
|
||||
<span style="display: inline-block; margin-right: 20px; width: 100px"
|
||||
class="col-sm-2 control-label">礼包名称-俄语</span>
|
||||
<el-input v-model="addFormData.packNameRu"
|
||||
style="width: 50%"
|
||||
class="input"></el-input>
|
||||
</div>
|
||||
<div style="margin-bottom: 25px">
|
||||
<span style="display: inline-block; margin-right: 20px; width: 100px"
|
||||
class="col-sm-2 control-label">礼包名称-西班牙语</span>
|
||||
<el-input v-model="addFormData.packNameEs"
|
||||
style="width: 50%"
|
||||
class="input"></el-input>
|
||||
</div>
|
||||
<div style="margin-bottom: 25px">
|
||||
<span style="display: inline-block; margin-right: 20px; width: 100px"
|
||||
class="col-sm-2 control-label">礼包名称-乌兹别克语</span>
|
||||
<el-input v-model="addFormData.packNameUz"
|
||||
style="width: 50%"
|
||||
class="input"></el-input>
|
||||
</div>
|
||||
|
||||
<div class="selectBox selectBoxImg">
|
||||
<span class="left"
|
||||
style="display: inline-block; margin-right: 20px; width: 100px">礼包样式</span>
|
||||
<!-- action="/admin/tencent/cos/upload/file" -->
|
||||
<el-upload class="avatar-uploader"
|
||||
action="/admin/tencent/cos/upload/file"
|
||||
:show-file-list="false"
|
||||
:on-success="handleAvatarSuccess"
|
||||
:before-upload="beforeAvatarUpload"
|
||||
:on-error="handleAvatarError">
|
||||
<img v-if="addFormData.imgUrl"
|
||||
:src="addFormData.imgUrl"
|
||||
class="avatar" />
|
||||
<el-icon v-else
|
||||
class="avatar-uploader-icon">
|
||||
<Plus />
|
||||
</el-icon>
|
||||
</el-upload>
|
||||
</div>
|
||||
<div style="margin-bottom: 25px">
|
||||
<span style="display: inline-block; margin-right: 20px; width: 100px"
|
||||
class="col-sm-2 control-label">状态</span>
|
||||
<el-select v-model="addFormData.status"
|
||||
placeholder="请选择">
|
||||
<el-option label="有效"
|
||||
:value="1"></el-option>
|
||||
<el-option label="无效"
|
||||
:value="0"></el-option>
|
||||
</el-select>
|
||||
</div>
|
||||
<div style="margin-bottom: 25px">
|
||||
<span style="display: inline-block; margin-right: 20px; width: 100px"
|
||||
class="col-sm-2 control-label">分区</span>
|
||||
<partition-select v-model:partition-id="addFormData.partitionId" />
|
||||
</div>
|
||||
<div style="margin-bottom: 25px">
|
||||
<span style="display: inline-block; margin-right: 20px; width: 100px"
|
||||
class="col-sm-2 control-label">礼包过期时间</span>
|
||||
<el-input v-model="addFormData.expireDay"
|
||||
style="width: 50%"
|
||||
class="input"></el-input>
|
||||
</div>
|
||||
<template #footer>
|
||||
<span class="dialog-footer">
|
||||
<el-button @click="addDialog = false">取消</el-button>
|
||||
<el-button type="primary"
|
||||
@click="addFun()"> 确认 </el-button>
|
||||
</span>
|
||||
</template>
|
||||
</el-dialog>
|
||||
<!-- 详情表格 -->
|
||||
<el-dialog v-model="detailsDialog"
|
||||
title="奖品列表"
|
||||
width="50%"
|
||||
center>
|
||||
<!-- 内表格 -->
|
||||
<el-table v-loading="tableDetailData.loading"
|
||||
:data="tableDetailData.data"
|
||||
border
|
||||
style="width: 100%; margin-top: 25px">
|
||||
<el-table-column prop="awardTypeName"
|
||||
align="center"
|
||||
label="类型">
|
||||
<template v-slot="scope">
|
||||
{{ scope.row.awardTypeName + "-" + scope.row.awardName }}
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column prop="awardId"
|
||||
align="center"
|
||||
label="ID" />
|
||||
<el-table-column prop="awardNum"
|
||||
align="center"
|
||||
label="天数/数量" />
|
||||
<el-table-column prop="awardPic"
|
||||
align="center"
|
||||
label="样式">
|
||||
<template v-slot="scope">
|
||||
<el-image style="width: 100px; height: 100px"
|
||||
:src="scope.row.awardPic"
|
||||
:zoom-rate="1.1"
|
||||
:preview-src-list="[scope.row.awardPic ?? '']"
|
||||
fit="scale-down"
|
||||
preview-teleported="true"
|
||||
hide-on-click-modal="true" />
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column align="center"
|
||||
label="操作"
|
||||
width="220">
|
||||
<template v-slot="scope">
|
||||
<el-button @click="delPageFun(scope.row.itemId)"
|
||||
class="primary"
|
||||
type="primary"
|
||||
size="default">
|
||||
删除
|
||||
</el-button>
|
||||
</template>
|
||||
</el-table-column>
|
||||
</el-table>
|
||||
</el-dialog>
|
||||
<el-dialog v-model="addRewardDialog"
|
||||
title="添加奖品"
|
||||
width="28%"
|
||||
center>
|
||||
<div style="margin-bottom: 25px">
|
||||
<span style="display: inline-block; margin-right: 20px; width: 100px"
|
||||
class="col-sm-2 control-label">添加奖品</span>
|
||||
<el-select v-model="addFormData.awardId"
|
||||
placeholder="请选择">
|
||||
<el-option v-for="item in awardsList"
|
||||
:key="item.awardId"
|
||||
:label="item.awardTypeName + '-' + item.awardName"
|
||||
:value="item.awardId">
|
||||
</el-option>
|
||||
</el-select>
|
||||
</div>
|
||||
<template #footer>
|
||||
<span class="dialog-footer">
|
||||
<el-button @click="addRewardDialog = false">取消</el-button>
|
||||
<el-button type="primary"
|
||||
@click="addRewardFun()"> 确认 </el-button>
|
||||
</span>
|
||||
</template>
|
||||
</el-dialog>
|
||||
<el-dialog v-model="sendPackCenterDialog"
|
||||
title="赠送礼包"
|
||||
width="28%"
|
||||
center>
|
||||
<div style="margin-bottom: 25px">
|
||||
<span style="display: inline-block; margin-right: 20px; width: 100px"
|
||||
class="col-sm-2 control-label">平台ID</span>
|
||||
<el-input v-model="addFormData.erbanNo"
|
||||
style="width: 50%"
|
||||
class="input"></el-input>
|
||||
</div>
|
||||
<div style="margin-bottom: 25px">
|
||||
<span style="display: inline-block; margin-right: 20px; width: 100px"
|
||||
class="col-sm-2 control-label">礼包数量</span>
|
||||
<el-input v-model="addFormData.packNum"
|
||||
style="width: 50%"
|
||||
class="input"></el-input>
|
||||
</div>
|
||||
<div style="margin-bottom: 25px">
|
||||
<span style="display: inline-block; margin-right: 20px; width: 100px"
|
||||
class="col-sm-2 control-label">赠送理由</span>
|
||||
<el-input v-model="addFormData.remark"
|
||||
style="width: 50%"
|
||||
class="input"
|
||||
:rows="5"
|
||||
type="textarea"></el-input>
|
||||
</div>
|
||||
<template #footer>
|
||||
<span class="dialog-footer">
|
||||
<el-button @click="sendPackCenterDialog = false">取消</el-button>
|
||||
<el-button type="primary"
|
||||
@click="sendPackCenterFun()">
|
||||
确认
|
||||
</el-button>
|
||||
</span>
|
||||
</template>
|
||||
</el-dialog>
|
||||
</div>
|
||||
</template>
|
||||
|
||||
<script>
|
||||
import { ref, onMounted, reactive, computed } from "vue";
|
||||
import { ElMessage, ElMessageBox } from "element-plus";
|
||||
import {
|
||||
getConfigList,
|
||||
configSave,
|
||||
getItemList,
|
||||
deleteReward,
|
||||
addReward,
|
||||
getAwardsList,
|
||||
sendPackCenter,
|
||||
} from "@/api/giftPackCenter/giftPackCenter";
|
||||
import PartitionSelect from "@/views/common/partitionSelect.vue";
|
||||
export default {
|
||||
name: "giftPackageConfiguration",
|
||||
components: {
|
||||
PartitionSelect,
|
||||
},
|
||||
setup () {
|
||||
const formData = reactive({
|
||||
pageNo: 1,
|
||||
pageSize: 10,
|
||||
});
|
||||
const addFormData = reactive({
|
||||
expireDay: "",
|
||||
imgUrl: "",
|
||||
packId: "",
|
||||
status: "",
|
||||
partitionId: undefined,
|
||||
packNameZh: "",
|
||||
packNameEn: "",
|
||||
packNameAr: "",
|
||||
packNameTr: "",
|
||||
packNamePt: "",
|
||||
packNameRu: "",
|
||||
packNameEs: "",
|
||||
packNameUz: "",
|
||||
awardId: "",
|
||||
erbanNo: "",
|
||||
packNum: "",
|
||||
remark: "",
|
||||
});
|
||||
const tableData = reactive({
|
||||
data: [],
|
||||
total: 0,
|
||||
loading: false,
|
||||
});
|
||||
const tableDetailData = reactive({
|
||||
data: [],
|
||||
total: 0,
|
||||
loading: false,
|
||||
});
|
||||
const awardsList = ref([]);
|
||||
const addRewardDialog = ref(false);
|
||||
const addDialog = ref(false);
|
||||
const detailsDialog = ref(false);
|
||||
const sendPackCenterDialog = ref(false);
|
||||
const getRewardPackId = ref('');
|
||||
const getData = () => {
|
||||
tableData.loading = true;
|
||||
getConfigList(formData).then((res) => {
|
||||
if (res.code == 200) {
|
||||
tableData.data = res.data.rows;
|
||||
tableData.total = res.data.total;
|
||||
tableData.loading = false;
|
||||
} else {
|
||||
tableData.loading = false;
|
||||
ElMessage.error(res.message);
|
||||
}
|
||||
});
|
||||
};
|
||||
// 增加
|
||||
const addFun = () => {
|
||||
const obj = {
|
||||
expireDay: addFormData.expireDay,
|
||||
imgUrl: addFormData.imgUrl,
|
||||
status: addFormData.status,
|
||||
packName: JSON.stringify({
|
||||
zh: addFormData.packNameZh,
|
||||
en: addFormData.packNameEn,
|
||||
ar: addFormData.packNameAr,
|
||||
tr: addFormData.packNameTr,
|
||||
pt: addFormData.packNamePt,
|
||||
ru: addFormData.packNameRu,
|
||||
es: addFormData.packNameEs,
|
||||
uz: addFormData.packNameUz,
|
||||
}),
|
||||
partitionId: addFormData.partitionId,
|
||||
};
|
||||
if (addFormData.packId) {
|
||||
obj.packId = addFormData.packId;
|
||||
}
|
||||
configSave(obj).then((res) => {
|
||||
if (res.code == 200) {
|
||||
if (addFormData.packId) {
|
||||
ElMessage.success("修改成功");
|
||||
} else {
|
||||
ElMessage.success("添加成功");
|
||||
}
|
||||
resetaddFormData();
|
||||
addDialog.value = false;
|
||||
getData();
|
||||
} else {
|
||||
ElMessage.error(res.message);
|
||||
addDialog.value = false;
|
||||
}
|
||||
});
|
||||
};
|
||||
// 重置
|
||||
const resetaddFormData = () => {
|
||||
Object.assign(addFormData, {
|
||||
expireDay: "",
|
||||
imgUrl: "",
|
||||
packId: "",
|
||||
status: "",
|
||||
partitionId: undefined,
|
||||
packNameZh: "",
|
||||
packNameEn: "",
|
||||
packNameAr: "",
|
||||
packNameTr: "",
|
||||
packNamePt: "",
|
||||
packNameRu: "",
|
||||
packNameEs: "",
|
||||
packNameUz: "",
|
||||
awardId: "",
|
||||
erbanNo: "",
|
||||
packNum: "",
|
||||
remark: "",
|
||||
});
|
||||
};
|
||||
// 编辑
|
||||
const detailPageFun = (row) => {
|
||||
Object.assign(addFormData, row);
|
||||
if (row.packName) {
|
||||
addFormData.packNameZh = JSON.parse(row.packName).zh;
|
||||
addFormData.packNameEn = JSON.parse(row.packName).en;
|
||||
addFormData.packNameAr = JSON.parse(row.packName).ar;
|
||||
addFormData.packNameTr = JSON.parse(row.packName).tr;
|
||||
addFormData.packNamePt = JSON.parse(row.packName).pt;
|
||||
addFormData.packNameRu = JSON.parse(row.packName).ru;
|
||||
addFormData.packNameEs = JSON.parse(row.packName).es;
|
||||
addFormData.packNameUz = JSON.parse(row.packName).uz;
|
||||
}
|
||||
addDialog.value = true;
|
||||
};
|
||||
// 奖品列表
|
||||
const getRewardList = (packId) => {
|
||||
getRewardPackId.value = packId;
|
||||
tableDetailData.loading = true;
|
||||
getItemList({ packId }).then((res) => {
|
||||
if (res.code == 200) {
|
||||
tableDetailData.data = res.data;
|
||||
tableDetailData.total = res.data.total;
|
||||
tableDetailData.loading = false;
|
||||
detailsDialog.value = true;
|
||||
} else {
|
||||
tableDetailData.loading = false;
|
||||
ElMessage.error(res.message);
|
||||
}
|
||||
});
|
||||
};
|
||||
// 奖品列表 - 删除奖品
|
||||
const delPageFun = (itemId) => {
|
||||
deleteReward({ itemId }).then((res) => {
|
||||
if (res.code == 200) {
|
||||
ElMessage.success("删除成功");
|
||||
getRewardList(getRewardPackId.value);
|
||||
} else {
|
||||
ElMessage.error(res.message);
|
||||
}
|
||||
});
|
||||
};
|
||||
const getAwardsFun = (partitionId) => {
|
||||
getAwardsList({ partitionId }).then((res) => {
|
||||
if (res.code == 200) {
|
||||
awardsList.value = res.data;
|
||||
addRewardDialog.value = true;
|
||||
} else {
|
||||
ElMessage.error(res.message);
|
||||
}
|
||||
});
|
||||
};
|
||||
// 添加奖品
|
||||
const addRewardFun = () => {
|
||||
const { awardId, packId } = addFormData;
|
||||
addReward({ awardId, packId }).then((res) => {
|
||||
if (res.code == 200) {
|
||||
ElMessage.success("添加成功");
|
||||
addRewardDialog.value = false;
|
||||
addFormData.awardId = "";
|
||||
addFormData.packId = "";
|
||||
} else {
|
||||
ElMessage.error(res.message);
|
||||
}
|
||||
});
|
||||
};
|
||||
// 赠送礼包
|
||||
const sendPackCenterFun = () => {
|
||||
let obj = {
|
||||
erbanNo: addFormData.erbanNo,
|
||||
packId: addFormData.packId,
|
||||
packNum: addFormData.packNum,
|
||||
remark: addFormData.remark,
|
||||
};
|
||||
sendPackCenter(obj).then((res) => {
|
||||
if (res.code == 200) {
|
||||
ElMessage.success("赠送成功");
|
||||
sendPackCenterDialog.value = false;
|
||||
resetaddFormData();
|
||||
} else {
|
||||
ElMessage.error(res.message);
|
||||
}
|
||||
});
|
||||
};
|
||||
const // 解析json字段
|
||||
getJsonField = (jsonStr, field) => {
|
||||
try {
|
||||
if (!jsonStr) return "";
|
||||
const obj = JSON.parse(jsonStr);
|
||||
return obj?.[field] || "";
|
||||
} catch (e) {
|
||||
console.error("JSON 解析失败:", jsonStr);
|
||||
return "";
|
||||
}
|
||||
};
|
||||
const handleSizeChange = (val) => {
|
||||
formData.pageSize = val;
|
||||
getData();
|
||||
};
|
||||
const handleCurrentChange = (val) => {
|
||||
formData.pageNo = val;
|
||||
getData();
|
||||
};
|
||||
const beforeAvatarUpload = () => {
|
||||
ElMessage({
|
||||
showClose: true,
|
||||
message: "上传中~",
|
||||
type: "warning",
|
||||
});
|
||||
};
|
||||
const handleAvatarError = () => {
|
||||
ElMessage({
|
||||
showClose: true,
|
||||
message: "上传失败!",
|
||||
type: "error",
|
||||
});
|
||||
};
|
||||
const handleAvatarSuccess = (res, file) => {
|
||||
addFormData.imgUrl = file.response.data;
|
||||
ElMessage({
|
||||
showClose: true,
|
||||
message: "上传成功!",
|
||||
type: "success",
|
||||
});
|
||||
};
|
||||
onMounted(() => {
|
||||
getData();
|
||||
});
|
||||
return {
|
||||
formData,
|
||||
tableData,
|
||||
getData,
|
||||
handleSizeChange,
|
||||
handleCurrentChange,
|
||||
getJsonField,
|
||||
addDialog,
|
||||
addFormData,
|
||||
addFun,
|
||||
beforeAvatarUpload,
|
||||
handleAvatarError,
|
||||
handleAvatarSuccess,
|
||||
detailPageFun,
|
||||
tableDetailData,
|
||||
detailsDialog,
|
||||
getRewardList,
|
||||
delPageFun,
|
||||
addRewardFun,
|
||||
addRewardDialog,
|
||||
getAwardsFun,
|
||||
awardsList,
|
||||
resetaddFormData,
|
||||
sendPackCenterDialog,
|
||||
sendPackCenterFun,
|
||||
getRewardPackId
|
||||
};
|
||||
},
|
||||
};
|
||||
</script>
|
||||
|
||||
<style lang="less" scoped>
|
||||
.box {
|
||||
padding-top: 20px;
|
||||
background: #ecf0f5;
|
||||
|
||||
.inquire {
|
||||
display: inline-block;
|
||||
margin-right: 20px;
|
||||
|
||||
span {
|
||||
margin-right: 10px;
|
||||
}
|
||||
|
||||
.input {
|
||||
width: 180px;
|
||||
margin-right: 10px;
|
||||
}
|
||||
}
|
||||
|
||||
.dialogTableVisibleBut {
|
||||
display: block;
|
||||
margin: 30px 0 0 830px;
|
||||
}
|
||||
|
||||
.paginationClass {
|
||||
margin: 15px 0 5px 0px;
|
||||
}
|
||||
}
|
||||
.selectBox {
|
||||
display: flex;
|
||||
height: 35px;
|
||||
line-height: 35px;
|
||||
margin-bottom: 20px;
|
||||
}
|
||||
|
||||
.selectBoxImg {
|
||||
height: 150px;
|
||||
}
|
||||
|
||||
.avatar {
|
||||
width: 178px;
|
||||
height: 178px;
|
||||
display: block;
|
||||
}
|
||||
</style>
|
219
src/views/giftPackCenter/usageRecord.vue
Normal file
219
src/views/giftPackCenter/usageRecord.vue
Normal file
@@ -0,0 +1,219 @@
|
||||
<template>
|
||||
<div class="box">
|
||||
<div class="inquire">
|
||||
<span>用户ID:</span>
|
||||
<el-input v-model="formData.erbanNo"
|
||||
placeholder=""
|
||||
class="input" />
|
||||
</div>
|
||||
<el-button style=""
|
||||
type="primary"
|
||||
@click="getData()">查询</el-button>
|
||||
<el-table v-loading="tableData.loading"
|
||||
:data="tableData.data"
|
||||
ref="multipleTable"
|
||||
@selection-change="handleSelectionChange"
|
||||
border
|
||||
style="width: 100%; margin-top: 25px">
|
||||
<el-table-column prop="packId"
|
||||
align="center"
|
||||
label="礼包ID" />
|
||||
<el-table-column prop="partitionDesc"
|
||||
align="center"
|
||||
label="分区" />
|
||||
<el-table-column prop="packName"
|
||||
align="center"
|
||||
label="礼包名称-华语区">
|
||||
<template v-slot="scope">{{
|
||||
getJsonField(scope.row.packName, "zh")
|
||||
}}</template>
|
||||
</el-table-column>
|
||||
<el-table-column prop="packName"
|
||||
align="center"
|
||||
label="礼包名称-英语区">
|
||||
<template v-slot="scope">{{
|
||||
getJsonField(scope.row.packName, "en")
|
||||
}}</template>
|
||||
</el-table-column>
|
||||
<el-table-column prop="packName"
|
||||
align="center"
|
||||
label="礼包名称-阿语区">
|
||||
<template v-slot="scope">{{
|
||||
getJsonField(scope.row.packName, "ar")
|
||||
}}</template>
|
||||
</el-table-column>
|
||||
<el-table-column prop="packName"
|
||||
align="center"
|
||||
label="礼包名称-土耳其区">
|
||||
<template v-slot="scope">{{
|
||||
getJsonField(scope.row.packName, "tr")
|
||||
}}</template>
|
||||
</el-table-column>
|
||||
<el-table-column prop="packName"
|
||||
align="center"
|
||||
label="礼包名称-葡萄牙语区">
|
||||
<template v-slot="scope">{{
|
||||
getJsonField(scope.row.packName, "pt")
|
||||
}}</template>
|
||||
</el-table-column>
|
||||
<el-table-column prop="packName"
|
||||
align="center"
|
||||
label="礼包名称-俄语">
|
||||
<template v-slot="scope">{{
|
||||
getJsonField(scope.row.packName, "ru")
|
||||
}}</template>
|
||||
</el-table-column>
|
||||
<el-table-column prop="packName"
|
||||
align="center"
|
||||
label="礼包名称-西班牙语">
|
||||
<template v-slot="scope">{{
|
||||
getJsonField(scope.row.packName, "es")
|
||||
}}</template>
|
||||
</el-table-column>
|
||||
<el-table-column prop="packName"
|
||||
align="center"
|
||||
label="礼包名称-乌兹别克语">
|
||||
<template v-slot="scope">{{
|
||||
getJsonField(scope.row.packName, "uz")
|
||||
}}</template>
|
||||
</el-table-column>
|
||||
<el-table-column prop="erbanNo"
|
||||
align="center"
|
||||
label="用户ID" />
|
||||
<el-table-column prop="nick"
|
||||
align="center"
|
||||
label="用户昵称" />
|
||||
<el-table-column prop="targeErbanNo"
|
||||
align="center"
|
||||
label="赠送用户ID" />
|
||||
<el-table-column prop="targeNick"
|
||||
align="center"
|
||||
label="赠送用户昵称" />
|
||||
<el-table-column prop="packNum"
|
||||
align="center"
|
||||
label="赠送/使用数量" />
|
||||
<el-table-column prop="packNum"
|
||||
align="center"
|
||||
label="赠送/使用数量" />
|
||||
<el-table-column prop="createTime"
|
||||
align="center"
|
||||
label="使用时间">
|
||||
<template v-slot="scope">{{
|
||||
convertTimestamp(scope.row.createTime)
|
||||
}}</template>
|
||||
</el-table-column>
|
||||
</el-table>
|
||||
<!-- 分页 -->
|
||||
<el-pagination style="margin-top: 10px"
|
||||
class="paginationClass"
|
||||
:current-page="formData.pageNo"
|
||||
:page-size="formData.pageSize"
|
||||
:page-sizes="[20, 50, 100, 200]"
|
||||
layout="sizes, prev, pager, next"
|
||||
:total="tableData.total"
|
||||
@size-change="handleSizeChange"
|
||||
@current-change="handleCurrentChange" />
|
||||
</div>
|
||||
</template>
|
||||
|
||||
<script>
|
||||
import { ref, onMounted, reactive, computed } from "vue";
|
||||
import { ElMessage, ElMessageBox } from "element-plus";
|
||||
import { getUseRecordList } from "@/api/giftPackCenter/giftPackCenter";
|
||||
export default {
|
||||
name: "usageRecord",
|
||||
setup () {
|
||||
const formData = reactive({
|
||||
pageNo: 1,
|
||||
pageSize: 10,
|
||||
erbanNo: "",
|
||||
});
|
||||
const tableData = reactive({
|
||||
data: [],
|
||||
total: 0,
|
||||
loading: false,
|
||||
});
|
||||
const getData = () => {
|
||||
tableData.loading = true;
|
||||
getUseRecordList(formData).then((res) => {
|
||||
if (res.code == 200) {
|
||||
tableData.data = res.data.rows;
|
||||
tableData.total = res.data.total;
|
||||
tableData.loading = false;
|
||||
} else {
|
||||
tableData.loading = false;
|
||||
ElMessage.error(res.message);
|
||||
}
|
||||
});
|
||||
};
|
||||
const // 解析json字段
|
||||
getJsonField = (jsonStr, field) => {
|
||||
try {
|
||||
if (!jsonStr) return "";
|
||||
const obj = JSON.parse(jsonStr);
|
||||
return obj?.[field] || "";
|
||||
} catch (e) {
|
||||
console.error("JSON 解析失败:", jsonStr);
|
||||
return "";
|
||||
}
|
||||
};
|
||||
const convertTimestamp = (time) => {
|
||||
let date = new Date(time);
|
||||
return date.format("yyyy-MM-dd hh:mm:ss");
|
||||
};
|
||||
return {
|
||||
formData,
|
||||
tableData,
|
||||
getData,
|
||||
getJsonField,
|
||||
convertTimestamp
|
||||
};
|
||||
},
|
||||
};
|
||||
</script>
|
||||
|
||||
<style lang="less" scoped>
|
||||
.box {
|
||||
padding-top: 20px;
|
||||
background: #ecf0f5;
|
||||
|
||||
.inquire {
|
||||
display: inline-block;
|
||||
margin-right: 20px;
|
||||
|
||||
span {
|
||||
margin-right: 10px;
|
||||
}
|
||||
|
||||
.input {
|
||||
width: 180px;
|
||||
margin-right: 10px;
|
||||
}
|
||||
}
|
||||
|
||||
.dialogTableVisibleBut {
|
||||
display: block;
|
||||
margin: 30px 0 0 830px;
|
||||
}
|
||||
|
||||
.paginationClass {
|
||||
margin: 15px 0 5px 0px;
|
||||
}
|
||||
}
|
||||
.selectBox {
|
||||
display: flex;
|
||||
height: 35px;
|
||||
line-height: 35px;
|
||||
margin-bottom: 20px;
|
||||
}
|
||||
|
||||
.selectBoxImg {
|
||||
height: 150px;
|
||||
}
|
||||
|
||||
.avatar {
|
||||
width: 178px;
|
||||
height: 178px;
|
||||
display: block;
|
||||
}
|
||||
</style>
|
280
src/views/guildOperationManagement/DailyTaskRewardCollection.vue
Normal file
280
src/views/guildOperationManagement/DailyTaskRewardCollection.vue
Normal file
@@ -0,0 +1,280 @@
|
||||
<template>
|
||||
<div class="box">
|
||||
<!-- 表格数据 -->
|
||||
<el-table
|
||||
v-loading="tableData.loading"
|
||||
:data="tableData.data"
|
||||
ref="multipleTable"
|
||||
@selection-change="handleSelectionChange"
|
||||
border
|
||||
style="width: 100%; margin-top: 25px"
|
||||
>
|
||||
<el-table-column prop="statDate" align="center" label="日期" />
|
||||
<el-table-column
|
||||
prop="reachNum"
|
||||
align="center"
|
||||
label="公会成员达到人数"
|
||||
/>
|
||||
<el-table-column
|
||||
prop="receiveNum"
|
||||
align="center"
|
||||
label="公会成员领取人数"
|
||||
>
|
||||
<template v-slot="scope">
|
||||
<el-button @click="detailFun(scope.row)" type="text" size="small">
|
||||
{{ scope.row.receiveNum }}
|
||||
</el-button>
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column
|
||||
prop="guildMemberNumn"
|
||||
align="center"
|
||||
label="公会成员人数"
|
||||
/>
|
||||
</el-table>
|
||||
<!-- 分页 -->
|
||||
<el-pagination
|
||||
style="margin-top: 10px"
|
||||
class="paginationClass"
|
||||
:current-page="formData.pageNo"
|
||||
:page-size="formData.pageSize"
|
||||
:page-sizes="[10, 20, 50, 100, 200]"
|
||||
layout="sizes, prev, pager, next"
|
||||
:total="tableData.total"
|
||||
@size-change="handleSizeChange"
|
||||
@current-change="handleCurrentChange"
|
||||
/>
|
||||
|
||||
<!-- 明细弹窗 -->
|
||||
<el-dialog
|
||||
v-model="dailydetailDialog"
|
||||
title="日任务奖励领取明细"
|
||||
width="60%"
|
||||
center
|
||||
>
|
||||
<div>
|
||||
<div class="inquire">
|
||||
<span>用户ID:</span>
|
||||
<el-input v-model="detailData.erbanNo" placeholder="" class="input" />
|
||||
</div>
|
||||
<div class="inquire">
|
||||
<span>设备:</span>
|
||||
<el-input
|
||||
v-model="detailData.deviceId"
|
||||
placeholder="支持模糊搜索"
|
||||
class="input"
|
||||
/>
|
||||
</div>
|
||||
<div class="inquire">
|
||||
<span>IP:</span>
|
||||
<el-input
|
||||
v-model="detailData.ip"
|
||||
placeholder="支持模糊搜索"
|
||||
class="input"
|
||||
/>
|
||||
</div>
|
||||
<el-button style="" type="primary" @click="detailFun()">查询</el-button>
|
||||
<el-button style="" type="primary" @click="confirmExport2Excel()"
|
||||
>导出</el-button
|
||||
>
|
||||
</div>
|
||||
<el-table
|
||||
:data="detailtableData.data"
|
||||
style="width: 100%; margin-top: 30px"
|
||||
ref="multipleTable"
|
||||
border
|
||||
>
|
||||
<el-table-column prop="guildId" align="center" label="公会ID" />
|
||||
<el-table-column prop="erbanNo" align="center" label="用户ID" />
|
||||
<el-table-column prop="uid" align="center" label="用户UID" />
|
||||
<el-table-column prop="deviceId" align="center" label="领取设备" />
|
||||
<el-table-column prop="ip" align="center" label="领取IP" />
|
||||
<el-table-column prop="statusStr" align="center" label="主播状态" />
|
||||
<el-table-column prop="receiveTime" align="center" label="领取时间" />
|
||||
</el-table>
|
||||
<el-pagination
|
||||
style="margin-top: 10px"
|
||||
class="paginationClass"
|
||||
:current-page="detailData.pageNo"
|
||||
:page-size="detailData.pageSize"
|
||||
:page-sizes="[10, 20, 50, 100, 200]"
|
||||
layout="sizes, prev, pager, next"
|
||||
:total="detailtableData.total"
|
||||
@size-change="handleSizeChangeDetail"
|
||||
@current-change="handleCurrentChangeDetail"
|
||||
/>
|
||||
<template #footer>
|
||||
<span class="dialog-footer">
|
||||
<el-button type="primary" @click="dailydetailDialog = false">
|
||||
关闭
|
||||
</el-button>
|
||||
</span>
|
||||
</template>
|
||||
</el-dialog>
|
||||
</div>
|
||||
</template>
|
||||
|
||||
<script>
|
||||
export default {
|
||||
name: "DailyTaskRewardCollection",
|
||||
};
|
||||
</script>
|
||||
<script setup>
|
||||
import { ref, onMounted, reactive, computed } from "vue";
|
||||
import { ElMessage, ElMessageBox } from "element-plus";
|
||||
import { formatDate } from "@/utils/relDate";
|
||||
import { dateFormat } from "@/utils/system-helper";
|
||||
import {
|
||||
getDailyTaskCoinRecvNums,
|
||||
getDailyTaskcoinRecvDetail,
|
||||
exportMiniGameDetail,
|
||||
} from "@/api/DailyTaskRewardCollection/DailyTaskRewardCollection";
|
||||
const formData = reactive({
|
||||
pageNo: 1,
|
||||
pageSize: 10,
|
||||
});
|
||||
const tableData = reactive({
|
||||
data: [],
|
||||
total: 0,
|
||||
loading: false,
|
||||
});
|
||||
const detailData = reactive({
|
||||
partitionId: "",
|
||||
statDate: "",
|
||||
pageNo: 1,
|
||||
pageSize: 10,
|
||||
deviceId: "",
|
||||
ip: "",
|
||||
erbanNo: "",
|
||||
});
|
||||
const detailtableData = reactive({
|
||||
data: [],
|
||||
total: 0,
|
||||
loading: false,
|
||||
});
|
||||
const dailydetailDialog = ref(false);
|
||||
|
||||
// 查询
|
||||
const getData = () => {
|
||||
tableData.loading = true;
|
||||
getDailyTaskCoinRecvNums(formData).then((res) => {
|
||||
if (res.code == 200) {
|
||||
tableData.data = res.data.rows;
|
||||
tableData.loading = false;
|
||||
tableData.total = res.data.total;
|
||||
} else {
|
||||
tableData.loading = false;
|
||||
|
||||
ElMessage.error(res.message);
|
||||
}
|
||||
});
|
||||
};
|
||||
// 明细
|
||||
const detailFun = (row) => {
|
||||
if (row) {
|
||||
detailData.partitionId = row.partitionId;
|
||||
detailData.statDate = row.statDate;
|
||||
}
|
||||
getDailyTaskcoinRecvDetail(detailData).then((res) => {
|
||||
if (res.code == 200) {
|
||||
detailtableData.data = res.data.rows;
|
||||
detailtableData.loading = false;
|
||||
detailtableData.total = res.data.total;
|
||||
dailydetailDialog.value = true;
|
||||
} else {
|
||||
ElMessage.error(res.message);
|
||||
}
|
||||
});
|
||||
};
|
||||
// 导出
|
||||
const confirmExport2Excel = async () => {
|
||||
try {
|
||||
const res = await exportMiniGameDetail(detailData);
|
||||
if (res) {
|
||||
ElMessage({
|
||||
message: "导出成功",
|
||||
type: "success",
|
||||
});
|
||||
let time = formatDate(new Date());
|
||||
let alink = document.createElement("a");
|
||||
alink.download = `日任务奖励领取明细${time}.xls`;
|
||||
alink.style.display = "none";
|
||||
const blob = new Blob([res]);
|
||||
alink.href = URL.createObjectURL(blob);
|
||||
document.body.appendChild(alink);
|
||||
alink.click();
|
||||
URL.revokeObjectURL(alink.href);
|
||||
}
|
||||
} catch (error) {
|
||||
ElMessage({
|
||||
message: error.message,
|
||||
type: "error",
|
||||
});
|
||||
}
|
||||
};
|
||||
const handleSizeChange = (val) => {
|
||||
formData.pageSize = val;
|
||||
getData();
|
||||
};
|
||||
const handleCurrentChange = (val) => {
|
||||
formData.pageNo = val;
|
||||
getData();
|
||||
};
|
||||
const handleSizeChangeDetail = (val) => {
|
||||
detailData.pageSize = val;
|
||||
detailFun();
|
||||
};
|
||||
const handleCurrentChangeDetail = (val) => {
|
||||
detailData.pageNo = val;
|
||||
detailFun();
|
||||
};
|
||||
onMounted(() => {
|
||||
getData();
|
||||
});
|
||||
</script>
|
||||
|
||||
<style lang="less" scoped>
|
||||
.box {
|
||||
padding-top: 20px;
|
||||
background: #ecf0f5;
|
||||
|
||||
.inquire {
|
||||
display: inline-block;
|
||||
margin-right: 20px;
|
||||
|
||||
span {
|
||||
margin-right: 10px;
|
||||
}
|
||||
|
||||
.input {
|
||||
width: 180px;
|
||||
margin-right: 10px;
|
||||
}
|
||||
}
|
||||
|
||||
.dialogTableVisibleBut {
|
||||
display: block;
|
||||
margin: 30px 0 0 830px;
|
||||
}
|
||||
|
||||
.paginationClass {
|
||||
margin: 15px 0 5px 0px;
|
||||
}
|
||||
}
|
||||
.selectBox {
|
||||
display: flex;
|
||||
height: 35px;
|
||||
line-height: 35px;
|
||||
margin-bottom: 20px;
|
||||
}
|
||||
|
||||
.selectBoxImg {
|
||||
height: 150px;
|
||||
}
|
||||
|
||||
.avatar {
|
||||
width: 178px;
|
||||
height: 178px;
|
||||
display: block;
|
||||
}
|
||||
</style>
|
1086
src/views/guildOperationManagement/GuildSozinhoInfoNew.vue
Normal file
1086
src/views/guildOperationManagement/GuildSozinhoInfoNew.vue
Normal file
File diff suppressed because it is too large
Load Diff
283
src/views/guildOperationManagement/SalaryDetails.vue
Normal file
283
src/views/guildOperationManagement/SalaryDetails.vue
Normal file
@@ -0,0 +1,283 @@
|
||||
<template>
|
||||
<div class="box">
|
||||
<div class="inquire">
|
||||
<span>公会ID:</span>
|
||||
<el-input v-model="formData.guildId" placeholder="" class="input" />
|
||||
</div>
|
||||
<div class="inquire">
|
||||
<span>公会长ID:</span>
|
||||
<el-input v-model="formData.ownerErbanNo" placeholder="" class="input" />
|
||||
</div>
|
||||
<div class="inquire">
|
||||
<span>主播ID:</span>
|
||||
<el-input v-model="formData.erbanNo" placeholder="" class="input" />
|
||||
</div>
|
||||
<div class="inquire">
|
||||
<span>周期</span>
|
||||
<el-select
|
||||
v-model="selectedDate"
|
||||
placeholder="请选择"
|
||||
@change="handleDateChange"
|
||||
clearable
|
||||
value-key="cycleDate"
|
||||
>
|
||||
<el-option
|
||||
v-for="item in dateCycleArr"
|
||||
:key="item.cycleDate"
|
||||
:label="item.intervalFormatter"
|
||||
:value="item"
|
||||
>
|
||||
</el-option>
|
||||
</el-select>
|
||||
</div>
|
||||
<el-button style="" type="primary" @click="getData()">查询</el-button>
|
||||
<el-button style="" type="primary" @click="confirmExportExcel()"
|
||||
>导出</el-button
|
||||
>
|
||||
<!-- 表格数据 -->
|
||||
<el-table
|
||||
v-loading="tableData.loading"
|
||||
:data="tableData.data"
|
||||
ref="multipleTable"
|
||||
@selection-change="handleSelectionChange"
|
||||
border
|
||||
style="width: 100%; margin-top: 25px"
|
||||
>
|
||||
<el-table-column prop="guildId" align="center" label="公会ID" />
|
||||
<el-table-column prop="guildName" align="center" label="公会昵称" />
|
||||
<el-table-column prop="erbanNo" align="center" label="主播ID" />
|
||||
<el-table-column prop="nick" align="center" label="主播昵称" />
|
||||
<el-table-column prop="diamondNum" align="center" label="钻石收入" />
|
||||
<el-table-column
|
||||
prop="micMinutes"
|
||||
align="center"
|
||||
label="活跃时长(分钟)"
|
||||
/>
|
||||
<el-table-column prop="micDay" align="center" label="有效天数">
|
||||
<template v-slot="scope">
|
||||
<el-button @click="micDayDetail(scope.row)" type="text" size="small">
|
||||
{{ scope.row.micDay }}
|
||||
</el-button>
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column
|
||||
prop="anchorDiamondSalary"
|
||||
align="center"
|
||||
label="主播钻石薪资"
|
||||
/>
|
||||
<el-table-column
|
||||
prop="anchorMicSalary"
|
||||
align="center"
|
||||
label="主播时长薪资"
|
||||
/>
|
||||
<el-table-column prop="ownerSalary" align="center" label="公会长薪资" />
|
||||
</el-table>
|
||||
<!-- 分页 -->
|
||||
<el-pagination
|
||||
style="margin-top: 10px"
|
||||
class="paginationClass"
|
||||
:current-page="formData.pageNo"
|
||||
:page-size="formData.pageSize"
|
||||
:page-sizes="[10, 20, 50, 100, 200]"
|
||||
layout="sizes, prev, pager, next"
|
||||
:total="tableData.total"
|
||||
@size-change="handleSizeChange"
|
||||
@current-change="handleCurrentChange"
|
||||
/>
|
||||
<!-- 详情 -->
|
||||
<el-dialog v-model="detailsDialog" title="有效天数明细" width="30%" center>
|
||||
<!-- 内表格 -->
|
||||
<el-table
|
||||
v-loading="tableDataIn.loading"
|
||||
:data="tableDataIn.data"
|
||||
border
|
||||
style="width: 100%; margin-top: 25px"
|
||||
>
|
||||
<el-table-column prop="statDate" align="center" label="日期" />
|
||||
<el-table-column
|
||||
prop="micMinutes"
|
||||
align="center"
|
||||
label="活跃时长(分钟)"
|
||||
/>
|
||||
<el-table-column prop="day" align="center" label="是否有效">
|
||||
<template v-slot="scope">
|
||||
{{ scope.row.micDay >= 1 ? "有效" : "无效" }}
|
||||
</template>
|
||||
</el-table-column>
|
||||
</el-table>
|
||||
<!-- 操作 -->
|
||||
<template #footer>
|
||||
<span class="dialog-footer">
|
||||
<el-button
|
||||
type="primary"
|
||||
class="primary"
|
||||
@click="detailsDialog = false"
|
||||
>关闭</el-button
|
||||
>
|
||||
</span>
|
||||
</template>
|
||||
</el-dialog>
|
||||
</div>
|
||||
</template>
|
||||
|
||||
<script>
|
||||
export default {
|
||||
name: "SalaryDetails",
|
||||
};
|
||||
</script>
|
||||
<script setup>
|
||||
import { ref, onMounted, reactive, computed } from "vue";
|
||||
import { ElMessage, ElMessageBox } from "element-plus";
|
||||
import {
|
||||
getGuildPolicyQueryMemberPage,
|
||||
exportQueryMember,
|
||||
getGuildPolicyCycleDates,
|
||||
getGuildPolicyMicDayDetail,
|
||||
} from "@/api/SalaryDetails/SalaryDetails.js";
|
||||
import { formatDate } from "@/utils/relDate";
|
||||
const formData = reactive({
|
||||
pageNo: 1,
|
||||
pageSize: 10,
|
||||
erbanNo: "",
|
||||
guildId: "",
|
||||
ownerErbanNo: "",
|
||||
endDate: "",
|
||||
startDate: "",
|
||||
});
|
||||
const selectedDate = ref(null);
|
||||
const tableData = reactive({
|
||||
data: [],
|
||||
total: 0,
|
||||
loading: false,
|
||||
});
|
||||
const tableDataIn = reactive({
|
||||
data: [],
|
||||
loading: false,
|
||||
});
|
||||
const dateCycleArr = ref([]);
|
||||
const detailsDialog = ref(false);
|
||||
// 下拉选择
|
||||
const handleDateChange = (val) => {
|
||||
formData.startDate = val.startDate;
|
||||
formData.endDate = val.endDate;
|
||||
};
|
||||
// 查询
|
||||
const getData = () => {
|
||||
tableData.loading = true;
|
||||
getGuildPolicyQueryMemberPage(formData).then((res) => {
|
||||
if (res.code == 200) {
|
||||
tableData.data = res.data.rows;
|
||||
tableData.total = res.data.total;
|
||||
tableData.loading = false;
|
||||
} else {
|
||||
tableData.loading = false;
|
||||
ElMessage.error(res.message);
|
||||
}
|
||||
});
|
||||
};
|
||||
// 有效天数详情
|
||||
const micDayDetail = (row) => {
|
||||
getGuildPolicyMicDayDetail({
|
||||
guildMemberId: row.guildMemberId,
|
||||
endDate: formData.endDate,
|
||||
startDate: formData.startDate,
|
||||
}).then((res) => {
|
||||
if (res.code == 200) {
|
||||
tableDataIn.data = res.data;
|
||||
tableDataIn.loading = false;
|
||||
detailsDialog.value = true;
|
||||
} else {
|
||||
tableDataIn.loading = false;
|
||||
ElMessage.error(res.message);
|
||||
}
|
||||
});
|
||||
};
|
||||
// 导出
|
||||
const confirmExportExcel = async () => {
|
||||
// Object.assign(formData, { pageSize: 10000, pageNo: 1 });
|
||||
try {
|
||||
const res = await exportQueryMember(formData);
|
||||
if (res) {
|
||||
ElMessage({
|
||||
message: "导出成功",
|
||||
type: "success",
|
||||
});
|
||||
let time = formatDate(new Date());
|
||||
let alink = document.createElement("a");
|
||||
alink.download = `薪资明细${time}.xls`;
|
||||
alink.style.display = "none";
|
||||
const blob = new Blob([res]);
|
||||
alink.href = URL.createObjectURL(blob);
|
||||
document.body.appendChild(alink);
|
||||
alink.click();
|
||||
URL.revokeObjectURL(alink.href);
|
||||
}
|
||||
} catch (error) {
|
||||
ElMessage({
|
||||
message: error.message,
|
||||
type: "error",
|
||||
});
|
||||
}
|
||||
};
|
||||
const handleSizeChange = (val) => {
|
||||
formData.pageSize = val;
|
||||
getData();
|
||||
};
|
||||
const handleCurrentChange = (val) => {
|
||||
formData.pageNo = val;
|
||||
getData();
|
||||
};
|
||||
onMounted(() => {
|
||||
getGuildPolicyCycleDates().then((res) => {
|
||||
if (res.code == 200) {
|
||||
dateCycleArr.value = res.data;
|
||||
} else {
|
||||
ElMessage({
|
||||
showClose: true,
|
||||
message: res.message,
|
||||
type: "error",
|
||||
});
|
||||
}
|
||||
});
|
||||
});
|
||||
</script>
|
||||
|
||||
<style lang="less" scoped>
|
||||
.box {
|
||||
padding-top: 20px;
|
||||
background: #ecf0f5;
|
||||
|
||||
.inquire {
|
||||
display: inline-block;
|
||||
margin-right: 20px;
|
||||
|
||||
span {
|
||||
margin-right: 10px;
|
||||
}
|
||||
|
||||
.input {
|
||||
width: 180px;
|
||||
margin-right: 10px;
|
||||
}
|
||||
}
|
||||
|
||||
.dialogTableVisibleBut {
|
||||
display: block;
|
||||
margin: 30px 0 0 830px;
|
||||
}
|
||||
|
||||
.paginationClass {
|
||||
margin: 15px 0 5px 0px;
|
||||
}
|
||||
}
|
||||
.selectBox {
|
||||
display: flex;
|
||||
height: 35px;
|
||||
line-height: 35px;
|
||||
margin-bottom: 20px;
|
||||
}
|
||||
|
||||
.selectBoxImg {
|
||||
height: 150px;
|
||||
}
|
||||
</style>
|
@@ -3,142 +3,142 @@
|
||||
<div class="container">
|
||||
<div class="region-box">
|
||||
<el-radio-group v-model="region">
|
||||
<el-radio
|
||||
v-for="(item, index) in userAreaRegion"
|
||||
:key="index"
|
||||
:label="item.value"
|
||||
>{{ item.name }}</el-radio
|
||||
>
|
||||
<el-radio v-for="(item, index) in userAreaRegion"
|
||||
:key="index"
|
||||
:label="item.value">{{ item.name }}</el-radio>
|
||||
</el-radio-group>
|
||||
</div>
|
||||
<div class="handle-box">
|
||||
<el-form
|
||||
ref="searchForm"
|
||||
:model="searchForm"
|
||||
:rules="searchRule"
|
||||
label-width="90px"
|
||||
:disabled="tableLoading"
|
||||
>
|
||||
<el-form ref="searchForm"
|
||||
:model="searchForm"
|
||||
:rules="searchRule"
|
||||
label-width="90px"
|
||||
:disabled="tableLoading">
|
||||
<div class="search-line">
|
||||
<el-form-item label="分区" prop="partitionId">
|
||||
<el-select v-model="searchForm.partitionId" placeholder="请选择">
|
||||
<el-option
|
||||
v-for="item in partitionArr"
|
||||
:key="item.id"
|
||||
:label="item.desc"
|
||||
:value="item.id"
|
||||
>
|
||||
</el-option>
|
||||
</el-select>
|
||||
<el-form-item label="分区"
|
||||
prop="partitionId">
|
||||
<partition-select v-model:partition-id="searchForm.partitionId"
|
||||
v-model:partition-infos="partitionArr" />
|
||||
</el-form-item>
|
||||
<el-form-item label="公会ID" prop="agencyId">
|
||||
<el-input
|
||||
v-model.trim="searchForm.agencyId"
|
||||
placeholder="请输入"
|
||||
></el-input>
|
||||
<el-form-item label="地区"
|
||||
prop="regionId">
|
||||
<partition-region-select v-model:partition-id="searchForm.partitionId"
|
||||
v-model:region-id="searchForm.regionId"
|
||||
v-model:after-init="getData" />
|
||||
</el-form-item>
|
||||
<el-form-item label="公会长ID" prop="agencyOwnerId">
|
||||
<el-input
|
||||
v-model.trim="searchForm.agencyOwnerId"
|
||||
placeholder="请输入"
|
||||
></el-input>
|
||||
<el-form-item label="公会ID"
|
||||
prop="agencyId">
|
||||
<el-input v-model.trim="searchForm.agencyId"
|
||||
placeholder="请输入"></el-input>
|
||||
</el-form-item>
|
||||
<el-form-item label="周期" prop="dateCycle">
|
||||
<el-select placeholder="请选择" v-model="searchForm.dateCycle">
|
||||
<el-option
|
||||
v-for="(item, i) in dateCycleList"
|
||||
:key="i"
|
||||
:label="item.startDateStr + '~' + item.endDateStr"
|
||||
:value="item.dateCycle"
|
||||
></el-option>
|
||||
<el-form-item label="公会长ID"
|
||||
prop="agencyOwnerId">
|
||||
<el-input v-model.trim="searchForm.agencyOwnerId"
|
||||
placeholder="请输入"></el-input>
|
||||
</el-form-item>
|
||||
<el-form-item label="周期"
|
||||
prop="dateCycle">
|
||||
<el-select placeholder="请选择"
|
||||
v-model="searchForm.dateCycle">
|
||||
<el-option v-for="(item, i) in dateCycleList"
|
||||
:key="i"
|
||||
:label="item.startDateStr + '~' + item.endDateStr"
|
||||
:value="item.dateCycle"></el-option>
|
||||
</el-select>
|
||||
</el-form-item>
|
||||
|
||||
<el-form-item label-width="40px">
|
||||
<el-button type="primary" @click="handSearch">搜索</el-button>
|
||||
<el-button plain @click="resetSearchForm">重置搜索</el-button>
|
||||
<el-button type="primary"
|
||||
@click="handSearch">搜索</el-button>
|
||||
<el-button plain
|
||||
@click="resetSearchForm">重置搜索</el-button>
|
||||
</el-form-item>
|
||||
</div>
|
||||
</el-form>
|
||||
<el-button type="primary" class="exportBtn" @click="confirmExport2Excel"
|
||||
>导出</el-button
|
||||
>
|
||||
<el-button type="primary"
|
||||
class="exportBtn"
|
||||
@click="confirmExport2Excel">导出</el-button>
|
||||
</div>
|
||||
<div class="table">
|
||||
<el-table
|
||||
:data="tableData"
|
||||
border
|
||||
v-loading="tableLoading"
|
||||
@header-click="headerCopy"
|
||||
style="width: 100%"
|
||||
>
|
||||
<el-table :data="tableData"
|
||||
border
|
||||
v-loading="tableLoading"
|
||||
@header-click="headerCopy"
|
||||
style="width: 100%">
|
||||
<!-- <el-table-column align="center" prop="region" label="区服">
|
||||
<template v-slot="scope">
|
||||
{{ regionType(scope.row.region) }}
|
||||
</template>
|
||||
</el-table-column> -->
|
||||
<el-table-column align="center" prop="partitionDesc" label="分区"> </el-table-column>
|
||||
<el-table-column align="center" prop="agencyId" label="公会ID">
|
||||
<el-table-column align="center"
|
||||
prop="partitionDesc"
|
||||
label="分区"> </el-table-column>
|
||||
<el-table-column align="center"
|
||||
prop="agencyId"
|
||||
label="公会ID">
|
||||
</el-table-column>
|
||||
<el-table-column align="center" prop="agencyName" label="公会名称">
|
||||
<el-table-column align="center"
|
||||
prop="agencyName"
|
||||
label="公会名称">
|
||||
</el-table-column>
|
||||
<el-table-column
|
||||
align="center"
|
||||
prop="hallMemberCount"
|
||||
label="主播人数"
|
||||
>
|
||||
<el-table-column align="center"
|
||||
prop="hallMemberCount"
|
||||
label="主播人数">
|
||||
</el-table-column>
|
||||
<!-- <el-table-column align="center" prop="agencyAbbr" label="公会国家"> </el-table-column> -->
|
||||
<el-table-column align="center" prop="agencyErbanNo" label="公会长ID">
|
||||
<el-table-column align="center"
|
||||
prop="agencyErbanNo"
|
||||
label="公会长ID">
|
||||
</el-table-column>
|
||||
<el-table-column align="center" prop="energyValue" label="总钻石流水">
|
||||
<el-table-column align="center"
|
||||
prop="agencyRegionName"
|
||||
label="公会长地区">
|
||||
</el-table-column>
|
||||
<el-table-column align="center"
|
||||
prop="energyValue"
|
||||
label="总钻石流水">
|
||||
<template v-slot="scope">
|
||||
{{
|
||||
scope.row.energyValue
|
||||
? scope.row.energyValue.toLocaleString()
|
||||
: "null"
|
||||
}}
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column
|
||||
align="center"
|
||||
prop="salaryRate"
|
||||
label="公会长薪资比例"
|
||||
>
|
||||
<el-table-column align="center"
|
||||
prop="salaryRate"
|
||||
label="公会长薪资比例">
|
||||
<template v-slot="scope">
|
||||
{{ scope.row.salaryRate ? scope.row.salaryRate + "%" : "0%" }}
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column align="center" prop="hallSalary" label="公会长薪资">
|
||||
<el-table-column align="center"
|
||||
prop="hallSalary"
|
||||
label="公会长薪资">
|
||||
</el-table-column>
|
||||
</el-table>
|
||||
</div>
|
||||
<table-pagination
|
||||
:pageParams="pageParams"
|
||||
:pageTotal="pageTotal"
|
||||
:page-sizes="[10, 20, 100, 200]"
|
||||
@handleSizeChange="handleSizeChange"
|
||||
@handlePageChange="handlePageChange"
|
||||
></table-pagination>
|
||||
<table-pagination :pageParams="pageParams"
|
||||
:pageTotal="pageTotal"
|
||||
:page-sizes="[10, 20, 100, 200]"
|
||||
@handleSizeChange="handleSizeChange"
|
||||
@handlePageChange="handlePageChange"></table-pagination>
|
||||
</div>
|
||||
</div>
|
||||
</template>
|
||||
|
||||
<script lang=js>
|
||||
import { getDateCycleList, getAgencyDiamondFlow, agencyDiamondFlowExport,listPartitionInfo } from '@/api/relAgency/relAgency.js';
|
||||
import { getDateCycleList, getAgencyDiamondFlow, agencyDiamondFlowExport } from '@/api/relAgency/relAgency.js';
|
||||
import TablePagination from '@/components/common/TablePagination';
|
||||
import { formatDate, formatDateYMD } from '@/utils/relDate';
|
||||
// @ts-ignore
|
||||
import { ElMessage } from "element-plus";
|
||||
import { ref } from 'vue'; // 引入 ref
|
||||
import { ElMessageBox } from 'element-plus'; // 正确引入 ElM
|
||||
import { ElMessageBox } from 'element-plus';
|
||||
import PartitionSelect from "@/views/common/partitionSelect.vue"; // 正确引入 ElM
|
||||
import PartitionRegionSelect from "@/views/common/partitionRegionSelect.vue"; // 正确引入 ElM
|
||||
// 混入
|
||||
// import Mixin from '../../mixin/mixRegion.js';
|
||||
|
||||
export default {
|
||||
name: "agencyDiamondFlow",
|
||||
// mixins: [Mixin],
|
||||
components: { TablePagination },
|
||||
components: {PartitionSelect, TablePagination },
|
||||
data() {
|
||||
return {
|
||||
partitionArr: [],
|
||||
@@ -158,7 +158,8 @@ export default {
|
||||
agencyId: null,
|
||||
dateCycle: null,
|
||||
region: null,
|
||||
partitionId: "",
|
||||
partitionId: undefined,
|
||||
regionId: undefined,
|
||||
},
|
||||
searchRule: {
|
||||
startTime: [
|
||||
@@ -191,19 +192,20 @@ export default {
|
||||
};
|
||||
},
|
||||
created() {
|
||||
listPartitionInfo().then((res) => {
|
||||
this.partitionArr = res.data;
|
||||
this.searchForm.partitionId=this.partitionArr[0].id;
|
||||
});
|
||||
this.getDateCycleList();
|
||||
},
|
||||
methods: {
|
||||
getDateCycleList() {
|
||||
getDateCycleList({ month: 3 }).then((res) => {
|
||||
this.dateCycleList = res.data || [];
|
||||
this.searchForm.dateCycle = res.data? this.dateCycleList[0].dateCycle: undefined;
|
||||
});
|
||||
},
|
||||
getData() {
|
||||
if (!this.searchForm.dateCycle) {
|
||||
return;
|
||||
}
|
||||
|
||||
this.tableLoading = true;
|
||||
|
||||
let { pageParams, searchForm } = this;
|
||||
@@ -294,7 +296,6 @@ export default {
|
||||
},
|
||||
// 分页导航
|
||||
handleSizeChange(val) {
|
||||
console.log(val);
|
||||
this.pageParams.pageSize = val;
|
||||
this.getData();
|
||||
},
|
||||
|
@@ -11,15 +11,10 @@
|
||||
>
|
||||
<div class="search-line">
|
||||
<el-form-item label="分区" prop="partitionId">
|
||||
<el-select v-model="searchForm.partitionId" placeholder="请选择">
|
||||
<el-option
|
||||
v-for="item in partitionArr"
|
||||
:key="item.id"
|
||||
:label="item.desc"
|
||||
:value="item.id"
|
||||
>
|
||||
</el-option>
|
||||
</el-select>
|
||||
<partition-select v-model:partition-id="searchForm.partitionId"
|
||||
v-model:partition-infos="partitionArr"
|
||||
v-model:after-init="getData"
|
||||
/>
|
||||
</el-form-item>
|
||||
<el-form-item label="充值代理ID" prop="chargeAgentErbanNo">
|
||||
<el-input
|
||||
@@ -50,6 +45,7 @@
|
||||
></el-date-picker>
|
||||
</el-form-item>
|
||||
</el-form-item>
|
||||
<div class='title'>统计时间按照东八区统计。东三区时间筛选需要增加5小时!!!!!</div>
|
||||
|
||||
<el-form-item label-width="40px">
|
||||
<el-button type="primary" @click="handSearch">搜索</el-button>
|
||||
@@ -104,13 +100,10 @@
|
||||
</el-table-column>
|
||||
<el-table-column
|
||||
align="center"
|
||||
prop="createTime"
|
||||
prop="createTimeStr"
|
||||
label="创建时间"
|
||||
width="160"
|
||||
>
|
||||
<template v-slot="scope">
|
||||
{{ convertTimestamp(scope.row.createTime) }}
|
||||
</template>
|
||||
</el-table-column>
|
||||
</el-table>
|
||||
</div>
|
||||
@@ -129,7 +122,6 @@
|
||||
import {
|
||||
chargeAgentList,
|
||||
chargeAgentSum,
|
||||
listPartitionInfo,
|
||||
chargeAgentExport,
|
||||
} from "@/api/relAgency/relAgency.js";
|
||||
import TablePagination from "@/components/common/TablePagination";
|
||||
@@ -138,9 +130,10 @@ import { dateFormat } from "@/utils/system-helper";
|
||||
// @ts-ignore
|
||||
import { ElMessage } from "element-plus";
|
||||
import { ref } from "vue";
|
||||
import PartitionSelect from "@/views/common/partitionSelect.vue";
|
||||
export default {
|
||||
name: "agentSendSalary",
|
||||
components: { TablePagination },
|
||||
components: {PartitionSelect, TablePagination },
|
||||
data() {
|
||||
return {
|
||||
total: 0,
|
||||
@@ -159,7 +152,7 @@ export default {
|
||||
chargeAgentErbanNo: null,
|
||||
startTime: null,
|
||||
endTime: null,
|
||||
partitionId: "",
|
||||
partitionId: undefined,
|
||||
},
|
||||
partitionArr: [],
|
||||
searchRule: {
|
||||
@@ -192,13 +185,6 @@ export default {
|
||||
},
|
||||
};
|
||||
},
|
||||
created() {
|
||||
// this.getData();
|
||||
listPartitionInfo().then((res) => {
|
||||
this.partitionArr = res.data;
|
||||
this.searchForm.partitionId = this.partitionArr[0].id;
|
||||
});
|
||||
},
|
||||
methods: {
|
||||
getData() {
|
||||
this.tableLoading = true;
|
||||
@@ -306,21 +292,7 @@ export default {
|
||||
headerCopy(column, e) {
|
||||
this.$copy(column.label);
|
||||
},
|
||||
},
|
||||
computed: {
|
||||
convertTimestamp1() {
|
||||
return function (time) {
|
||||
let date = new Date(time);
|
||||
return formatDateYMD(date);
|
||||
};
|
||||
},
|
||||
convertTimestamp() {
|
||||
return function (time) {
|
||||
let date = new Date(time);
|
||||
return formatDate(date);
|
||||
};
|
||||
},
|
||||
},
|
||||
}
|
||||
};
|
||||
</script>
|
||||
|
||||
@@ -337,4 +309,10 @@ export default {
|
||||
.search-line {
|
||||
width: 38%;
|
||||
}
|
||||
.title{
|
||||
color: red;
|
||||
font-size: 16px;
|
||||
margin-bottom: 18px;
|
||||
margin-left:40px;
|
||||
}
|
||||
</style>
|
||||
|
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user