Compare commits

..

5 Commits

Author SHA1 Message Date
dragon
d31726d6e7 更新请求接口方式 2024-07-18 16:39:18 +08:00
dragon
7bdbb9f071 修复bug暂存-周卡 2024-07-18 14:48:58 +08:00
dragon
cb54148f6e 对接完成接口-周卡 2024-07-18 14:48:58 +08:00
dragon
fcefd9e09d 暂存 2024-07-18 14:48:57 +08:00
dragon
210a6a8f71 暂存 2024-07-18 14:48:57 +08:00
279 changed files with 23394 additions and 80120 deletions

View File

@@ -1,2 +1,2 @@
VUE_APP_API_BASE_URL='http://localhost:8080'
VUE_APP_API_BASE_URL='http://beta.admin.pekolive.com'
VUE_APP_DEBUG_MODE=true

View File

@@ -1,2 +1,2 @@
VUE_APP_API_BASE_URL=http://admin.web.epartylive.com
VUE_APP_API_BASE_URL=http://admin.web.pekolive.com
VUE_APP_DEBUG_MODE=false

View File

@@ -17,6 +17,5 @@ module.exports = {
'no-unused-vars': 'off',
'no-useless-escape': 'off',
'no-control-regex': 'off',
'no-extra-semi': 'off',
}
}

9
auto-imports.d.ts vendored
View File

@@ -1,9 +0,0 @@
/* eslint-disable */
/* prettier-ignore */
// @ts-nocheck
// noinspection JSUnusedGlobalSymbols
// Generated by unplugin-auto-import
export {}
declare global {
}

47
components.d.ts vendored
View File

@@ -1,47 +0,0 @@
/* 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']
}
}

110
package-lock.json generated
View File

@@ -14,7 +14,6 @@
"bootstrap": "^3.3.5",
"core-js": "^3.8.3",
"element-plus": "^2.3.14",
"file-saver": "^2.0.5",
"font-awesome": "^4.6.3",
"ionicons": "^2.0.1",
"jquery": "^2.2.0",
@@ -22,14 +21,11 @@
"knockout": "^3.5.1",
"less": "^4.2.0",
"less-loader": "^11.1.3",
"moment-timezone": "^0.5.45",
"node-sass": "^9.0.0",
"popper.js": "^1.16.1",
"sass": "^1.67.0",
"sass-loader": "^13.3.2",
"svgaplayerweb": "^2.3.2",
"unplugin-element-plus": "^0.8.0",
"vue-clipboard2": "^0.3.3",
"vue-router": "^4.0.3",
"vuex": "^4.0.0",
"xlsx": "^0.18.5"
@@ -44,7 +40,6 @@
"@vue/cli-service": "~5.0.0",
"eslint": "^7.32.0",
"eslint-plugin-vue": "^8.0.3",
"script-loader": "^0.7.2",
"unplugin-auto-import": "^0.16.7",
"unplugin-vue-components": "^0.25.2",
"vue": "^3.2.13",
@@ -4440,23 +4435,9 @@
}
},
"node_modules/caniuse-lite": {
"version": "1.0.30001651",
"resolved": "https://registry.npmmirror.com/caniuse-lite/-/caniuse-lite-1.0.30001651.tgz",
"integrity": "sha512-9Cf+Xv1jJNe1xPZLGuUXLNkE1BoDkqRqYyFJ9TDYSqhduqA4hu4oR9HluGoWYQC/aj8WHjsGVV+bwkh0+tegRg==",
"funding": [
{
"type": "opencollective",
"url": "https://opencollective.com/browserslist"
},
{
"type": "tidelift",
"url": "https://tidelift.com/funding/github/npm/caniuse-lite"
},
{
"type": "github",
"url": "https://github.com/sponsors/ai"
}
]
"version": "1.0.30001546",
"resolved": "https://registry.npmmirror.com/caniuse-lite/-/caniuse-lite-1.0.30001546.tgz",
"integrity": "sha512-zvtSJwuQFpewSyRrI3AsftF6rM0X80mZkChIt1spBGEvRglCrjTniXvinc8JKRoqTwXAgvqTImaN9igfSMtUBw=="
},
"node_modules/case-sensitive-paths-webpack-plugin": {
"version": "2.4.0",
@@ -4671,16 +4652,6 @@
"node": ">=6"
}
},
"node_modules/clipboard": {
"version": "2.0.11",
"resolved": "https://registry.npmmirror.com/clipboard/-/clipboard-2.0.11.tgz",
"integrity": "sha512-C+0bbOqkezLIsmWSvlsXS0Q0bmkugu7jcfMIACB+RDEntIzQIkdr148we28AfSloQLRdZlYL/QYyrq05j/3Faw==",
"dependencies": {
"good-listener": "^1.2.2",
"select": "^1.1.2",
"tiny-emitter": "^2.0.0"
}
},
"node_modules/clipboardy": {
"version": "2.3.0",
"resolved": "https://registry.npmmirror.com/clipboardy/-/clipboardy-2.3.0.tgz",
@@ -5576,11 +5547,6 @@
"node": ">=0.4.0"
}
},
"node_modules/delegate": {
"version": "3.2.0",
"resolved": "https://registry.npmmirror.com/delegate/-/delegate-3.2.0.tgz",
"integrity": "sha512-IofjkYBZaZivn0V8nnsMJGBr4jVLxHDheKSW88PyxS5QC4Vo9ZbZVvhzlSxY87fVq3STR6r+4cGepyHkcWOQSw=="
},
"node_modules/delegates": {
"version": "1.0.0",
"resolved": "https://registry.npmmirror.com/delegates/-/delegates-1.0.0.tgz",
@@ -6719,11 +6685,6 @@
"node": "^10.12.0 || >=12.0.0"
}
},
"node_modules/file-saver": {
"version": "2.0.5",
"resolved": "https://registry.npmmirror.com/file-saver/-/file-saver-2.0.5.tgz",
"integrity": "sha512-P9bmyZ3h/PRG+Nzga+rbdI4OEpNDzAVyy74uVO9ATgzLK6VtAsYybF/+TOCvrc0MO793d6+42lLyZTw7/ArVzA=="
},
"node_modules/fill-range": {
"version": "7.0.1",
"resolved": "https://registry.npmmirror.com/fill-range/-/fill-range-7.0.1.tgz",
@@ -7121,14 +7082,6 @@
"node": "*"
}
},
"node_modules/good-listener": {
"version": "1.2.2",
"resolved": "https://registry.npmmirror.com/good-listener/-/good-listener-1.2.2.tgz",
"integrity": "sha512-goW1b+d9q/HIwbVYZzZ6SsTr4IgE+WA44A0GmPIQstuOrgsFcT7VEJ48nmr9GaRtNu0XTKacFLGnBPAM6Afouw==",
"dependencies": {
"delegate": "^3.1.2"
}
},
"node_modules/gopd": {
"version": "1.0.1",
"resolved": "https://registry.npmmirror.com/gopd/-/gopd-1.0.1.tgz",
@@ -8976,25 +8929,6 @@
"integrity": "sha512-23g5BFj4zdQL/b6tor7Ji+QY4pEfNH784BMslY9Qb0UnJWRAt+lQGLYmRaM0KDBwIG23ffEBELhZDP2rhi9f/Q==",
"dev": true
},
"node_modules/moment": {
"version": "2.30.1",
"resolved": "https://registry.npmmirror.com/moment/-/moment-2.30.1.tgz",
"integrity": "sha512-uEmtNhbDOrWPFS+hdjFCBfy9f2YoyzRpwcl+DqpC6taX21FzsTLQVbMV/W7PzNSX6x/bhC1zA3c2UQ5NzH6how==",
"engines": {
"node": "*"
}
},
"node_modules/moment-timezone": {
"version": "0.5.45",
"resolved": "https://registry.npmmirror.com/moment-timezone/-/moment-timezone-0.5.45.tgz",
"integrity": "sha512-HIWmqA86KcmCAhnMAN0wuDOARV/525R2+lOLotuGFzn4HO+FH+/645z2wx0Dt3iDv6/p61SIvKnDstISainhLQ==",
"dependencies": {
"moment": "^2.29.4"
},
"engines": {
"node": "*"
}
},
"node_modules/mrmime": {
"version": "1.0.1",
"resolved": "https://registry.npmmirror.com/mrmime/-/mrmime-1.0.1.tgz",
@@ -10856,12 +10790,6 @@
"node": ">= 0.8"
}
},
"node_modules/raw-loader": {
"version": "0.5.1",
"resolved": "https://registry.npmmirror.com/raw-loader/-/raw-loader-0.5.1.tgz",
"integrity": "sha512-sf7oGoLuaYAScB4VGr0tzetsYlS8EJH6qnTCfQ/WVEa89hALQ4RQfCKt5xCyPQKPDUbVUAIP1QsxAwfAjlDp7Q==",
"dev": true
},
"node_modules/read-pkg": {
"version": "5.2.0",
"resolved": "https://registry.npmmirror.com/read-pkg/-/read-pkg-5.2.0.tgz",
@@ -11310,15 +11238,6 @@
"node": ">= 8.9.0"
}
},
"node_modules/script-loader": {
"version": "0.7.2",
"resolved": "https://registry.npmmirror.com/script-loader/-/script-loader-0.7.2.tgz",
"integrity": "sha512-UMNLEvgOAQuzK8ji8qIscM3GIrRCWN6MmMXGD4SD5l6cSycgGsCo0tX5xRnfQcoghqct0tjHjcykgI1PyBE2aA==",
"dev": true,
"dependencies": {
"raw-loader": "~0.5.1"
}
},
"node_modules/scss-tokenizer": {
"version": "0.4.3",
"resolved": "https://registry.npmmirror.com/scss-tokenizer/-/scss-tokenizer-0.4.3.tgz",
@@ -11342,11 +11261,6 @@
"integrity": "sha512-4AsO/FrViE/iDNEPaAQlb77tf0csuq27EsVpy6ett584EcRTp6pTDLoGWVxCD77y5iU5FauOvhsI4o1APwPoSQ==",
"dev": true
},
"node_modules/select": {
"version": "1.1.2",
"resolved": "https://registry.npmmirror.com/select/-/select-1.1.2.tgz",
"integrity": "sha512-OwpTSOfy6xSs1+pwcNrv0RBMOzI39Lp3qQKUTPVVPRjCdNa5JH/oPRiqsesIskK8TVgmRiHwO4KXlV2Li9dANA=="
},
"node_modules/select-hose": {
"version": "2.0.0",
"resolved": "https://registry.npmmirror.com/select-hose/-/select-hose-2.0.0.tgz",
@@ -11991,11 +11905,6 @@
"integrity": "sha512-ovssysQTa+luh7A5Weu3Rta6FJlFBBbInjOh722LIt6klpU2/HtdUbszju/G4devcvk8PGt7FCLv5wftu3THUA==",
"dev": true
},
"node_modules/svgaplayerweb": {
"version": "2.3.2",
"resolved": "https://registry.npmmirror.com/svgaplayerweb/-/svgaplayerweb-2.3.2.tgz",
"integrity": "sha512-QuTvNIgy3W6Mi4h74SczEHUtAwb8m3ax7Ai7xRLUuN6hjJh49RGtWOWq1IuF2I7ECcl0HAYn8FcTn99UDz9UiQ=="
},
"node_modules/svgo": {
"version": "2.8.0",
"resolved": "https://registry.npmmirror.com/svgo/-/svgo-2.8.0.tgz",
@@ -12233,11 +12142,6 @@
"integrity": "sha512-eHY7nBftgThBqOyHGVN+l8gF0BucP09fMo0oO/Lb0w1OF80dJv+lDVpXG60WMQvkcxAkNybKsrEIE3ZtKGmPrA==",
"dev": true
},
"node_modules/tiny-emitter": {
"version": "2.1.0",
"resolved": "https://registry.npmmirror.com/tiny-emitter/-/tiny-emitter-2.1.0.tgz",
"integrity": "sha512-NB6Dk1A9xgQPMoGqC5CVXn123gWyte215ONT5Pp5a0yt4nlEoO1ZWeCwpncaekPHXO60i47ihFnZPiRPjRMq4Q=="
},
"node_modules/to-fast-properties": {
"version": "2.0.0",
"resolved": "https://registry.npmmirror.com/to-fast-properties/-/to-fast-properties-2.0.0.tgz",
@@ -12734,14 +12638,6 @@
"@vue/shared": "3.2.13"
}
},
"node_modules/vue-clipboard2": {
"version": "0.3.3",
"resolved": "https://registry.npmmirror.com/vue-clipboard2/-/vue-clipboard2-0.3.3.tgz",
"integrity": "sha512-aNWXIL2DKgJyY/1OOeITwAQz1fHaCIGvUFHf9h8UcoQBG5a74MkdhS/xqoYe7DNZdQmZRL+TAdIbtUs9OyVjbw==",
"dependencies": {
"clipboard": "^2.0.0"
}
},
"node_modules/vue-eslint-parser": {
"version": "8.3.0",
"resolved": "https://registry.npmmirror.com/vue-eslint-parser/-/vue-eslint-parser-8.3.0.tgz",

View File

@@ -14,7 +14,6 @@
"bootstrap": "^3.3.5",
"core-js": "^3.8.3",
"element-plus": "^2.3.14",
"file-saver": "^2.0.5",
"font-awesome": "^4.6.3",
"ionicons": "^2.0.1",
"jquery": "^2.2.0",
@@ -22,14 +21,11 @@
"knockout": "^3.5.1",
"less": "^4.2.0",
"less-loader": "^11.1.3",
"moment-timezone": "^0.5.45",
"node-sass": "^9.0.0",
"popper.js": "^1.16.1",
"sass": "^1.67.0",
"sass-loader": "^13.3.2",
"svgaplayerweb": "^2.3.2",
"unplugin-element-plus": "^0.8.0",
"vue-clipboard2": "^0.3.3",
"vue-router": "^4.0.3",
"vuex": "^4.0.0",
"xlsx": "^0.18.5"
@@ -44,7 +40,6 @@
"@vue/cli-service": "~5.0.0",
"eslint": "^7.32.0",
"eslint-plugin-vue": "^8.0.3",
"script-loader": "^0.7.2",
"unplugin-auto-import": "^0.16.7",
"unplugin-vue-components": "^0.25.2",
"vue": "^3.2.13",

View File

@@ -34,11 +34,3 @@ export default {
computed: {},
};
</script>
<style>
.modal-open{
overflow-y: scroll;
}
body{
padding-right:0 !important;
}
</style>

View File

@@ -1,17 +0,0 @@
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
});
};

View File

@@ -1,75 +0,0 @@
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
});
};

View File

@@ -1,58 +0,0 @@
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
});
};

View File

@@ -1,19 +0,0 @@
import request from '@/utils/request';
import { genQueryParam } from '@/utils/maintainer';
// 列表
export const list = query => {
return request({
url: '/giftPanelTab/list',
method: 'get',
params: query
});
};
// 保存
export const update = query => {
return request({
url: '/giftPanelTab/update',
method: 'post',
params: query
});
};

View File

@@ -1,25 +0,0 @@
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
});
};

View File

@@ -1,17 +0,0 @@
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
});
};

View File

@@ -1,83 +0,0 @@
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
});
};

View File

@@ -1,52 +0,0 @@
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'
});
}

View File

@@ -1,25 +0,0 @@
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
});
};

View File

@@ -1,42 +0,0 @@
import request from '@/utils/request';
import { genQueryParam } from '@/utils/maintainer';
import qs from 'qs';
// 周期选项下拉框
export const cycleDateList = query => {
return request({
url: '/admin/ssGuild/cycleDateList',
method: 'get',
params: query
});
};
// SS公会列表
export const list = query => {
return request({
url: '/admin/ssGuild/list',
method: 'get',
params: query
});
};
// 发送金币&批量发送
export const sendGold = query => {
return request({
url: '/admin/ssGuild/sendGold',
method: 'post',
params: query
});
};
// 导出
// export const ssGuildExport = query => {
// return request({
// url: `/admin/ssGuild/export`,
// method: 'post',
// params: query,
// responseType: 'blob'
// });
// };
// 导出-公会信息
export const ssGuildExport = query => {
window.location.href = `/admin/ssGuild/export?${genQueryParam(query)}`;
return;
};

View File

@@ -1,75 +0,0 @@
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'
});
};

View File

@@ -31,12 +31,4 @@ export const vipSendSend = query => {
method: 'post',
params: query
});
};
// 赠送VIP接口 - 客服
export const vipSendSendCustomerSend = query => {
return request({
url: '/vipSend/customerSend',
method: 'post',
params: query
});
};

View File

@@ -1,42 +0,0 @@
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'
});
}

View File

@@ -1,41 +0,0 @@
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
});
};

View File

@@ -1,157 +0,0 @@
import request from '@/utils/request';
import { genQueryParam } from '@/utils/maintainer';
// 邀请移除记录
export const pageOperateRecord = query => {
return request({
url: '/admin/guild/manage/pageOperateRecord',
method: 'get',
params: query
});
};
// 查询公会信息
export const pageFamily = query => {
return request({
url: '/admin/guild/manage/pageGuild',
method: 'get',
params: query
});
};
// 公会成员信息
export const pageFamilyMember = query => {
return request({
url: '/admin/family/manage/pageFamilyMember',
method: 'get',
params: query
});
};
// 创建公会信息
export const create = query => {
return request({
url: '/admin/guild/manage/create',
method: 'post',
params: query
});
};
// 删除公会信息
export const dismiss = query => {
return request({
url: '/admin/guild/manage/dismiss',
method: 'post',
params: query
});
};
// 幸运礼物详情导出
export const luckyGiftRewardRecordExport = query => {
window.location.href = `/admin/luckyGiftRewardRecord/export?${genQueryParam(query)}`;
return;
};
// 公会信息编辑接口
export const update = query => {
return request({
url: '/admin/guild/manage/update',
method: 'post',
params: query
});
};
// 导出-公会信息
export const exportInfo = query => {
window.location.href = `/admin/guild/manage/exportGuild?${genQueryParam(query)}`;
return;
};
// 成员信息-弹窗详情
export const manageListFamilyMember = query => {
return request({
url: '/admin/guild/manage/listGuildMember',
method: 'get',
params: query
});
};
// 成员信息-新增成员
export const addMember = query => {
return request({
url: '/admin/guild/manage/addMember',
method: 'post',
params: query
});
};
// 成员信息-设置管理员
export const setManager = query => {
return request({
url: '/admin/guild/manage/setManager',
method: 'post',
params: query
});
};
// 成员信息-删除管理员
export const removeMember = query => {
return request({
url: '/admin/guild/manage/removeMember',
method: 'post',
params: query
});
};
// ========================================================Boom活动等级配置================================================
// Boom活动等级配置-列表
export const levelList = query => {
return request({
url: '/room/boom/level/list',
method: 'get',
params: query
});
};
// Boom活动等级配置-弹窗列表详情
export const awardList = query => {
return request({
url: '/room/boom/level/award/list',
method: 'get',
params: query
});
};
// Boom活动等级配置-弹窗列表删除详情
export const awardDel = query => {
return request({
url: '/room/boom/level/award/del',
method: 'get',
params: query
});
};
// Boom活动等级配置-编辑
export const levelUpdate = query => {
return request({
url: '/room/boom/level/update',
method: 'put',
data: query
});
};
// Boom活动等级配置-弹窗编辑
export const awardUpdate = query => {
return request({
url: '/room/boom/level/award/update',
method: 'put',
data: query
});
};
// ========================================================Boom数据后台================================================
// Boom活动等级配置-数据后台列表
export const recordList = query => {
return request({
url: '/room/boom/award/record/list',
method: 'get',
params: query
});
};
// Boom活动等级配置-数据后台明细列表
export const detailList = query => {
return request({
url: '/room/boom/award/record/detail/list',
method: 'get',
params: query
});
};
// 导出-Boom活动等级配置
export const recordExport = query => {
window.location.href = `/room/boom/award/record/export?${genQueryParam(query)}`;
return;
};

View File

@@ -1,26 +0,0 @@
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
});
};

View File

@@ -1,68 +0,0 @@
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
});
};

View File

@@ -1,13 +0,0 @@
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
});
};

View File

@@ -1,10 +0,0 @@
import request from '@/utils/request';
import {genQueryParam} from "@/utils/maintainer";
export const pageRecord = query => {
return request({
url: '/admin/emailRecord/page',
method: 'get',
params: query
});
};

View File

@@ -1,69 +0,0 @@
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
});
};

View File

@@ -1,26 +0,0 @@
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
});
};

View File

@@ -1,35 +0,0 @@
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
});
};

View File

@@ -1,82 +0,0 @@
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
});
};

View File

@@ -1,38 +0,0 @@
import request from '@/utils/request';
import { genQueryParam } from '@/utils/maintainer';
import qs from 'qs';
// 获取游戏列表
export const sysConfKey = query => {
return request({
url: '/admin/sysConf/key',
method: 'get',
params: query
});
};
// 获取列表
export const statisPage = query => {
return request({
url: '/admin/miniGame/leadercc/statis/page',
method: 'get',
params: query
});
};
// 获取详情列表
export const detailPage = query => {
return request({
url: '/admin/miniGame/leadercc/statis/detailPage',
method: 'get',
params: query
});
};
// 导出
export const exportForMiniGame = query => {
window.location.href = `/admin/miniGame/leadercc/statis/exportForMiniGame?${genQueryParam(query)}`;
return;
};
// 导出弹窗
export const statisExport = query => {
window.location.href = `/admin/miniGame/leadercc/statis/export?${genQueryParam(query)}`;
return;
};

View File

@@ -1,25 +0,0 @@
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
});
};

View File

@@ -1,83 +0,0 @@
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;
};

View File

@@ -1,103 +0,0 @@
import request from '@/utils/request';
import { genQueryParam } from '@/utils/maintainer';
import qs from 'qs';
// 奖池拉框
export const listType = query => {
return request({
url: '/admin/lucky24/pool/listType',
method: 'get',
params: query
});
};
// 池子列表
export const list = query => {
return request({
url: '/admin/lucky24/pool/list',
method: 'get',
params: query
});
};
// 基础配置
export const getConfig = query => {
return request({
url: '/admin/lucky24/config/getConfig',
method: 'get',
params: query
});
};
// 基础配置-修改
export const updateSet = query => {
return request({
headers: { "Content-Type": 'application/json;charset=UTF-8' },
url: '/admin/lucky24/config/update',
method: 'post',
data: query
});
};
// 个人数据
export const personal = query => {
return request({
url: '/admin/lucky24/record/personal',
method: 'get',
params: query
});
};
// 个人数据
export const exportPersonal = query => {
window.location.href = `/admin/lucky24/record/personal/export?${genQueryParam(query)}`;
return;
};
// 汇总
export const platform = query => {
return request({
url: '/admin/lucky24/record/platform',
method: 'get',
params: query
});
};
// 保存池子
export const save = query => {
return request({
headers: { "Content-Type": 'application/json;charset=UTF-8' },
url: '/admin/lucky24/pool/save',
method: 'post',
data: query
});
};
// 赠送用户
export const updateUserMulti = query => {
return request({
url: '/admin/lucky24/config/updateUserMulti',
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;
};

View File

@@ -1,6 +1,14 @@
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({

View File

@@ -1,28 +0,0 @@
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
});
};

View File

@@ -1,6 +1,13 @@
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({

View File

@@ -1,23 +0,0 @@
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
});
};

View File

@@ -102,14 +102,6 @@ export const addRecord = query => {
params: query
});
};
// 保存收款账户
export const savePayAccount = query => {
return request({
url: '/admin/family/manage/savePayAccount',
method: 'post',
params: query
});
};
// 违规类查询
export const listRecord = query => {
return request({
@@ -128,159 +120,3 @@ export const exportInfo = query => {
window.location.href = `/admin/family/manage/exportFamily?${genQueryParam(query)}`;
return;
};
// 工资梯度-列表
export const manageList = query => {
return request({
url: '/admin/family/manage/list',
method: 'get',
params: query
});
};
// 工资梯度-新增
export const manageAdd = query => {
return request({
url: '/admin/family/manage/add',
method: 'post',
params: query
});
};
// 工资梯度-删除
export const manageDelete = query => {
return request({
url: '/admin/family/manage/delete',
method: 'post',
params: query
});
};
// 工会统计-列表
export const statPageFamily = query => {
return request({
url: '/admin/family/wage/stat/pageFamily',
method: 'get',
params: query
});
};
// 工会统计-单个工会详情
export const listFamilyMember = query => {
return request({
url: '/admin/family/wage/stat/listFamilyMember',
method: 'get',
params: query
});
};
// 工会统计-单个工会导出
export const statExportFamilyMember = query => {
window.location.href = `/admin/family/wage/stat/exportFamilyMember?${genQueryParam(query)}`;
return;
};
// 工会统计-导出公会工资统计
export const statExportFamily = query => {
window.location.href = `/admin/family/wage/stat/exportFamily?${genQueryParam(query)}`;
return;
};
// 工会统计-导出家族流水
export const incomeExportFamilys = query => {
window.location.href = `/admin/family/income/exportFamily?${genQueryParam(query)}`;
return;
};
// 金币流水-列表
export const incomePageFamily = query => {
return request({
url: '/admin/family/income/pageFamily',
method: 'get',
params: query
});
};
// 金币流水-详情
export const incomeListFamilyMember = query => {
return request({
url: '/admin/family/income/listFamilyMember',
method: 'get',
params: query
});
};
// 金币流水-导出成员流水信息
export const incomeExportFamily = query => {
window.location.href = `/admin/family/income/exportFamilyMember?${genQueryParam(query)}`;
return;
};
// 成员信息-弹窗详情
export const manageListFamilyMember = query => {
return request({
url: '/admin/family/manage/listFamilyMember',
method: 'get',
params: query
});
};
// 成员信息-新增成员
export const addMember = query => {
return request({
url: '/admin/family/manage/addMember',
method: 'post',
params: query
});
};
// 成员信息-设置管理员
export const setManager = query => {
return request({
url: '/admin/family/manage/setManager',
method: 'post',
params: query
});
};
// 成员信息-删除管理员
export const removeMember = query => {
return request({
url: '/admin/family/manage/removeMember',
method: 'post',
params: query
});
};
// -审核列表
export const guildApplyList = query => {
return request({
url: '/admin/guildApply/list',
method: 'get',
params: query
});
};
// -审核操作
export const guildApplyAudit = query => {
return request({
url: '/admin/guildApply/audit',
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
});
};

View File

@@ -1,154 +0,0 @@
import request from '@/utils/request';
import { genQueryParam } from '@/utils/maintainer';
// 邀请移除记录
export const pageOperateRecord = query => {
return request({
url: '/admin/guild/manage/pageOperateRecord',
method: 'get',
params: query
});
};
// 查询公会信息
export const pageFamily = query => {
return request({
url: '/admin/guild/manage/pageGuild',
method: 'get',
params: query
});
};
// 公会成员信息
export const pageFamilyMember = query => {
return request({
url: '/admin/family/manage/pageFamilyMember',
method: 'get',
params: query
});
};
// 创建公会信息
export const create = query => {
return request({
url: '/admin/guild/manage/create',
method: 'post',
data: query
});
};
// 删除公会信息
export const dismiss = query => {
return request({
url: '/admin/guild/manage/dismiss',
method: 'post',
params: query
});
};
// 幸运礼物详情导出
export const luckyGiftRewardRecordExport = query => {
window.location.href = `/admin/luckyGiftRewardRecord/export?${genQueryParam(query)}`;
return;
};
// 公会信息编辑接口
export const update = query => {
return request({
url: '/admin/guild/manage/update',
method: 'post',
data: query
});
};
// 导出-公会信息
export const exportInfo = query => {
window.location.href = `/admin/guild/manage/exportGuild?${genQueryParam(query)}`;
return;
};
// 成员信息-弹窗详情
export const manageListFamilyMember = query => {
return request({
url: '/admin/guild/manage/listGuildMember',
method: 'get',
params: query
});
};
// 成员信息-新增成员
export const addMember = query => {
return request({
url: '/admin/guild/manage/addMember',
method: 'post',
params: query
});
};
// 成员信息-设置管理员
export const setManager = query => {
return request({
url: '/admin/guild/manage/setManager',
method: 'post',
params: query
});
};
// 成员信息-删除管理员
export const removeMember = query => {
return request({
url: '/admin/guild/manage/removeMember',
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
});
};

View File

@@ -6,11 +6,4 @@ export const getPartitionInfoList = query => {
method: 'get',
params: query
});
};
export const listAll = query => {
return request({
url: '/partition/listAll',
method: 'get',
params: query
});
};

View File

@@ -1,16 +0,0 @@
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
});
};

View File

@@ -1,44 +0,0 @@
import request from '@/utils/request';
import { genQueryParam } from '@/utils/maintainer';
import qs from 'qs';
// 个人主页资源管理列表
export const pesonalBackgroundListByPage = query => {
return request({
url: '/admin/pesonalBackground/listByPage',
method: 'get',
params: query
});
};
// 个人主页资源管理赠送
export const pesonalBackgroundListSend = query => {
return request({
url: '/admin/pesonalBackground/send',
method: 'get',
params: query
});
};
// 个人主页资源管理保存
export const pesonalBackgroundSaveOrUpdate = query => {
return request({
url: '/admin/pesonalBackground/saveOrUpdate',
method: 'post',
params: query
});
};
// 个人主页记录管理&个人赠送记录
export const pesonalBackgroundListRecordByPage = query => {
return request({
url: '/admin/pesonalBackground/listRecordByPage',
method: 'get',
params: query
});
};
// 个人赠送记录撤回
export const pesonalBackgroundListRecordRecoveryPersonalBackground = query => {
return request({
url: '/admin/pesonalBackground/recoveryPersonalBackground',
method: 'get',
params: query
});
};

View File

@@ -1,37 +0,0 @@
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
});
};

View File

@@ -1,40 +0,0 @@
import request from '@/utils/request';
import qs from 'qs';
import { genQueryParam } from '@/utils/maintainer';
// 活动配置 相关接口(一级菜单:活动配置)
// 国家
export const regionInfoList = query => {
return request({
url: '/admin/regionInfo/list',
method: 'get',
params: query
});
};
// 列表
export const refundList = query => {
return request({
url: '/admin/chargeRecord/refundList',
method: 'get',
params: query
});
};
// 导出
export const refundExport = query => {
window.location.href = `/admin/chargeRecord/refundExport?${genQueryParam(query)}`;
return;
};
// ======================================金币钻石操作记录==================================
// 列表
export const goldcoinRecordAll = query => {
return request({
url: '/admin/goldcoin/recordAll',
method: 'get',
params: query
});
};
// 导出
export const recordAllExport = query => {
window.location.href = `/admin/goldcoin/recordAllExport?${genQueryParam(query)}`;
return;
};

View File

@@ -1,471 +0,0 @@
import request from '@/utils/request';
import qs from 'qs';
import { genQueryParam } from '@/utils/maintainer';
// 活动配置 相关接口(一级菜单:活动配置)
// 充值代理列表导出
export const chargeAgentExport = query => {
window.location.href = `/anchorSalaryBill/chargeAgent/export?${genQueryParam(query)}`;
return;
};
// 获取 周期列表
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 => {
return request({
url: '/agency/diamond/flow/page',
method: 'get',
params: query
});
};
// 公会钻石薪资流水统计 导出
// export const agencyDiamondFlowExport = query => {
// return request({
// url: `/agency/diamond/flow/export`,
// method: 'post',
// params: query,
// responseType: 'blob'
// });
// };
export const agencyDiamondFlowExport = query => {
window.location.href = `/agency/diamond/flow/export?${genQueryParam(query)}`;
return;
};
// 主播薪资操作(不用分区)
export const getAnchorSalaryBill = query => {
return request({
url: '/anchorSalaryBill/anchorSummary/list',
method: 'get',
params: query
});
};
// salaryType 1钻石兑换薪资明细 2 薪资转赠充值代理 明细 3薪资转增公会长明细 4官方提现 6 薪资兑换金币明细
export const anchorSalaryBillDetail = query => {
return request({
url: '/anchorSalaryBill/detail/list',
method: 'get',
params: query
});
};
// 充值代理转增薪资
export const chargeAgentList = query => {
return request({
url: '/anchorSalaryBill/chargeAgent/list',
method: 'get',
params: query
});
};
// 充值代理转增薪资 总值
export const chargeAgentSum = query => {
return request({
url: '/anchorSalaryBill/chargeAgent/sum',
method: 'get',
params: query
});
};
// 官方提现记录 列表
export const agencyWithdrawList = query => {
return request({
url: '/agencyWithdrawExamine/list',
method: 'get',
params: query
});
};
// 官方提现记录 导出
export const agencyWithdrawExamineExport = query => {
return request({
url: `/agencyWithdrawExamine/export`,
method: 'post',
params: query,
responseType: 'blob'
});
};
// 官方提现记录 结算
// export const agencyWithdrawSet = query => {
// return request({
// url: '/agencyWithdrawExamine/settle',
// method: 'post',
// params: query
// });
// };
export const agencyWithdrawSet = query => {
return request({
url: '/agencyWithdrawExamine/batchSettle',
method: 'post',
params: query
});
};
// 官方提现记录 批量结算
export const agencyWithdrawBatchSet = query => {
return request({
url: '/agencyWithdrawExamine/batchSettle',
method: 'post',
params: query
});
};
// 官方提现记录 批量驳回
export const batchReject = query => {
return request({
url: '/agencyWithdrawExamine/batchReject',
method: 'post',
params: query
});
};
// 公会开业数据统计
export const agencyOpenList = query => {
return request({
url: '/agency/open/list',
method: 'get',
params: query
});
};
// 公会开业数据 详情
export const agencyOpenDetail = query => {
return request({
url: '/agency/open/detail/list',
method: 'get',
params: query
});
};
// 公会优秀主播数据统计
export const excellentAnchorList = query => {
return request({
url: '/agency/open/excellentAnchor/list',
method: 'get',
params: query
});
};
// 公会优秀主播数据统计
export const excellentAnchorDetail = query => {
return request({
url: '/agency/open/excellentAnchor/detail/list',
method: 'get',
params: query
});
};
// 官方提现-国家
export const adminCountry = query => {
return request({
url: '/admin/country/list',
method: 'get',
params: query
});
};
// =====================================钻石充值流水=======================================
// 查询
export const diamondStatistics = query => {
return request({
url: '/admin/guild/diamondStatistics',
method: 'get',
params: 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'
});
};
// 主播游戏薪资操作(不用分区)
export const getAnchorGameSalaryBill = query => {
return request({
url: '/anchorGameSalaryBill/anchorSummary/list',
method: 'get',
params: query
});
};
// salaryType 1钻石兑换薪资明细 2 薪资转赠充值代理 明细 3薪资转增公会长明细 4官方提现 6 薪资兑换金币明细
export const anchorGameSalaryBillDetail = query => {
return request({
url: '/anchorGameSalaryBill/detail/list',
method: 'get',
params: query
});
};
// 游戏薪资官方提现记录 列表
export const gameUsdWithdrawExamineList = query => {
return request({
url: '/gameUsdWithdrawExamine/list',
method: 'get',
params: query
});
};
// 游戏薪资官方提现记录 导出
export const gameUsdWithdrawExamineExport = query => {
return request({
url: `/gameUsdWithdrawExamine/export`,
method: 'post',
params: query,
responseType: 'blob'
});
};
// 游戏薪资官方提现记录 结算
export const gameUsdWithdrawExamineSet = query => {
return request({
url: '/gameUsdWithdrawExamine/batchSettle',
method: 'post',
params: query
});
};
// 游戏薪资官方提现记录 批量驳回
export const batchGameUsdWithdrawExamineReject = query => {
return request({
url: '/gameUsdWithdrawExamine/batchReject',
method: 'post',
params: query
});
};
// 充值代理转增游戏薪资
export const chargeGameAgentList = query => {
return request({
url: '/anchorGameSalaryBill/chargeAgent/list',
method: 'get',
params: query
});
};
// 充值代理转增薪资 总值
export const chargeGameAgentSum = query => {
return request({
url: '/anchorGameSalaryBill/chargeAgent/sum',
method: 'get',
params: query
});
};
// 充值代理转增薪资导出
export const chargeGameAgentExport = query => {
window.location.href = `/anchorGameSalaryBill/chargeAgent/export?${genQueryParam(query)}`;
return;
};
// 游戏薪资明细
export const getGameUsdList = query => {
return request({
url: '/gameUsd/detail',
method: 'get',
params: query
});
};
// 游戏薪资官方提现方式配置渠道 列表
export const getGamelistAccountType = query => {
return request({
url: '/admin/gameUsdWithdrawAccountConfig/listAccountType',
method: 'get',
params: query
});
};
// 游戏薪资官方提现方式配置 列表
export const getGameAccountConfigList = query => {
return request({
url: '/admin/gameUsdWithdrawAccountConfig/page',
method: 'get',
params: query
});
};
// 游戏薪资官方提现方式配置 编辑
export const saveGameAccountConfig = query => {
return request({
url: '/admin/gameUsdWithdrawAccountConfig/save',
method: 'get',
params: query
});
};
// 房间金币流水 -列表
export const getRoomWeekDiamondPage = query => {
return request({
url: '/admin/roomWeekDiamond/page',
method: 'get',
params: query
});
};
// 房间金币流水-导出
export const exportRoomWeekDiamond = query => {
return request({
url: `/admin/roomWeekDiamond/export`,
method: 'get',
params: query,
responseType: 'blob'
});
}
// 房间金币流水 -发放
export const sendRoomWeekDiamondRaward = query => {
return request({
url: '/admin/roomWeekDiamond/send',
method: 'post',
params: query
});
};
// 房间金币流水 -档位列表
export const getRoomWeekDiamondListLevel = query => {
return request({
url: '/admin/roomWeekDiamond/listLevel',
method: 'get',
params: query
});
};
// 主播周奖励 - 列表
export const getguildMemberWeekLevelRewardPage = query => {
return request({
url: '/admin/guildMemberWeekLevelReward/page',
method: 'get',
params: query
});
};
// 主播周奖励 - 周期
export const getguildMemberWeekLevelRewardListCycleDate = query => {
return request({
url: '/admin/guildMemberWeekLevelReward/listCycleDate',
method: 'get',
params: query
});
};
// 主播周奖励-导出
export const exportGuildMemberWeekLevelReward = query => {
return request({
url: `/admin/guildMemberWeekLevelReward/export`,
method: 'get',
params: query,
responseType: 'blob'
});
}
// 房间日流水 -列表
export const getRoomSendRankDayRewardPage = query => {
return request({
url: '/admin/roomSendRank/dayReward/page',
method: 'get',
params: query
});
};
// 房间日流水-导出
export const exportRoomSendRankDayReward = query => {
return request({
url: `/admin/roomSendRank/dayReward/export`,
method: 'get',
params: query,
responseType: 'blob'
});
}
// 房间日流水 -明细
export const getRoomSendRankDayRewardListDetail = query => {
return request({
url: '/admin/roomSendRank/dayReward/listDetail',
method: 'get',
params: query
});
};
// 半个月周期
export const getWageStatListDateCycle = query => {
return request({
url: '/admin/family/wage/stat/listDateCycle',
method: 'get',
params: query
});
};

View File

@@ -1,43 +0,0 @@
import request from '@/utils/request';
import qs from 'qs';
// 靓号申请管理 列表
export const getPrettyNumberExamineList = query => {
return request({
url: '/admin/prettyNumber/examine/list',
method: 'get',
params: query
});
};
// 靓号申请管理 通过
export const prettyNumberExaminePass = query => {
return request({
url: '/admin/prettyNumber/examine/pass',
method: 'post',
params: query
});
};
// 靓号申请管理 删除
export const prettyNumberExamineDelete = query => {
return request({
url: '/admin/prettyNumber/examine/delete',
method: 'get',
params: query
});
};
// 靓号申请管理 拒绝
export const prettyNumberExamineReject = query => {
return request({
url: '/admin/prettyNumber/examine/reject',
method: 'post',
params: query
});
};
// 靓号导入
export const erbanUpload = query => {
return request({
url: '/admin/prettyNumber/upload',
method: 'post',
headers: { 'Content-Type': 'multipart/form-data' },
data: query
});
};

View File

@@ -1,104 +0,0 @@
import request from '@/utils/request';
import qs from 'qs';
// 用户财产 相关接口(一级菜单:用户财产管理)
// 获取 金币转赠历史列表
export const getGoldCoinTransferList = query => {
return request({
url: '/gold/give/history',
method: 'get',
params: query
});
};
// 获取 金币转赠历史 金币汇总
export const getGoldCoinSumGold = query => {
return request({
url: '/gold/give/history/sumGold',
method: 'get',
params: query
});
};
// 用户资产排行 列表
export const getUserAssetsList = query => {
return request({
url: '/userAssets/list',
method: 'get',
params: query
});
};
// 用户资产排行 导出
export const userAssetsExport = query => {
return request({
url: '/userAssets/export',
method: 'get',
params: query,
responseType: 'blob'
});
};
// 金币钻石操作记录 列表
export const officalGoldSearch = query => {
return request({
url: '/offical/gold/search',
method: 'get',
params: query
});
};
// 金币钻石操作记录 导出
export const officalGoldExport = query => {
return request({
url: '/offical/gold/export',
method: 'get',
params: query,
responseType: 'blob'
});
};
// 操作货币增加/减少 列表
export const officalGoldGive= query => {
return request({
url: '/offical/gold/give',
method: 'post',
params: query
// data: qs.stringify(query)
});
};
// 操作货币增加/减少 查看用户
export const getofficalGoldUserInfo = query => {
return request({
url: '/offical/gold/userInfo',
method: 'get',
params: query
});
};
// 冻结用户资产管理 列表
export const getFrozenRecordList = query => {
return request({
url: '/frozenRecord/list',
method: 'get',
params: query
});
};
// 冻结用户资产管理 冻结
export const userRecordFrozen= query => {
return request({
url: '/frozenRecord/frozen',
method: 'post',
params: query
});
};
// 冻结用户资产管理 解冻
export const frozenRecordFree= query => {
return request({
url: '/frozenRecord/free',
method: 'post',
params: query
});
};

View File

@@ -1,40 +0,0 @@
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
});
};

View File

@@ -1,77 +0,0 @@
import request from '@/utils/request';
// ==============================================首页ui配置==============================================
// 配置
export const appUiSetting = query => {
return request({
url: '/appUiSetting',
method: 'get',
params: query
});
};
// 保存
export const appUiSettingSave = query => {
return request({
url: '/appUiSetting/save',
method: 'post',
data: query
});
};
// ==============================================自定义背景==============================================
// 列表
export const page = query => {
return request({
url: '/admin/roomBackground/page',
method: 'get',
params: query
});
};
// 新增
export const roomBackgroundAdd = query => {
return request({
url: '/admin/roomBackground/add',
method: 'post',
params: query
});
};
// 编辑
export const roomBackgroundUpdate = query => {
return request({
url: '/admin/roomBackground/update',
method: 'post',
params: query
});
};
// ==============================================自定义背景==============================================
// 列表
export const customPage = query => {
return request({
url: '/admin/roomBackground/custom/page',
method: 'get',
params: query
});
};
// 通过
export const customPass = query => {
return request({
url: '/admin/roomBackground/custom/pass',
method: 'post',
params: query
});
};
// 拒绝
export const customReject = query => {
return request({
url: '/admin/roomBackground/custom/reject',
method: 'post',
params: query
});
};
// 删除
export const customDel = query => {
return request({
url: '/admin/roomBackground/custom/del',
method: 'post',
params: query
});
};

View File

@@ -1,10 +0,0 @@
import request from '@/utils/request';
import {genQueryParam} from "@/utils/maintainer";
export const pageRecord = query => {
return request({
url: '/admin/smsRecord/page',
method: 'get',
params: query
});
};

View File

@@ -1,31 +0,0 @@
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
});
};

View File

@@ -1,9 +0,0 @@
import request from '@/utils/request';
// 获取列表
export const incomePageFamily = query => {
return request({
url: '/admin/superCenter/pageFamilyIncomes',
method: 'get',
params: query
});
};

View File

@@ -1,17 +0,0 @@
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
});
};

View File

@@ -1,17 +0,0 @@
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
});
};

View File

@@ -1,9 +0,0 @@
import request from '@/utils/request';
// 获取列表
export const diamondStatistics = query => {
return request({
url: '/admin/superCenter/diamondStatistics',
method: 'get',
params: query
});
};

View File

@@ -1,9 +0,0 @@
import request from '@/utils/request';
// 获取列表
export const guildApplyList = query => {
return request({
url: '/admin/superCenter/guildApplyList',
method: 'get',
params: query
});
};

View File

@@ -1,27 +0,0 @@
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
});
};

View File

@@ -1,75 +0,0 @@
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
});
};

View File

@@ -1,18 +0,0 @@
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
});
};

View File

@@ -1,18 +0,0 @@
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,
});
}

View File

@@ -1,10 +0,0 @@
import request from "@/utils/request";
// 列表
export const getMiniGameLudoList = query => {
return request({
url: '/admin/miniGame/ludo/stat',
method: 'get',
params: query,
});
}

View File

@@ -0,0 +1,135 @@
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({
url: '/admin/gift/getGiftByTypes',
method: 'get',
params: query
});
};
// 福袋礼物列表请求
export const getPrizeGroupsInfo = query => {
return request({
url: '/admin/luckyBag/getGroupInfo',
method: 'get',
params: query
});
};
// 所有礼物列表请求
export const getAll = query => {
return request({
url: '/admin/gift/getAll',
method: 'get',
params: query
});
};
// 所有座驾列表请求
export const carAll = query => {
return request({
url: '/admin/car/goods/total/list',
method: 'get',
params: query
});
};
// 所有头饰列表请求
export const headwearAll = query => {
return request({
url: '/admin/headwear/total/list',
method: 'get',
params: query
});
};
// 所有铭牌列表请求
export const nameplateAll = query => {
return request({
url: '/admin/nameplate/total/list',
method: 'get',
params: query
});
};
// 所有气泡列表请求
export const chatbubbleAll = query => {
return request({
url: '/admin/chatbubble/total/list',
method: 'get',
params: query
});
};
// 所有资料卡列表请求
export const infocard = query => {
return request({
url: '/admin/infocard/total/list',
method: 'get',
params: query
});
};
// 周卡TAB-列表
export const weekCardTabList = query => {
return request({
url: '/admin/weekCardTab/list',
method: 'get',
params: query
});
};
// 周卡TAB-保存
export const weekCardTabSave = query => {
return request({
url: '/admin/weekCardTab/save',
method: 'post',
params: query
});
};
// 周卡激励统计-列表
export const weekCardRecordPage = query => {
return request({
url: '/admin/weekCardRecord/page',
method: 'get',
params: query
});
};
// 周卡激励统计-详情
export const weekCardRecordGetDetailPage = query => {
return request({
url: '/admin/weekCardRecord/getDetailPage',
method: 'get',
params: query
});
};
// 周卡激励统计-导出
export const weekCardRecordExport = query => {
window.location.href = `/admin/weekCardRecord/export?${genQueryParam(query)}`;
return;
};
// 周卡激励配置-列表
export const weekCardPage = query => {
return request({
url: '/admin/weekCard/page',
method: 'get',
params: query
});
};
// 周卡激励配置-上下线
export const updateEnabled = query => {
return request({
url: '/admin/weekCard/updateEnabled',
method: 'get',
params: query
});
};
// 周卡激励配置-保存
export const weekCardSave = query => {
return request({
url: '/admin/weekCard/save',
method: 'post',
params: query
});
};

View File

@@ -1,98 +0,0 @@
<template>
<div class="pagination">
<el-pagination
background
:layout="paginationLayout"
:current-page="pageParams.pageNo"
:page-size="pageParams.pageSize"
:page-sizes="pageSizes"
:total="pageTotal"
:pager-count="pagerCount"
@size-change="handleSizeChange"
@current-change="handlePageChange"
></el-pagination>
</div>
</template>
<script>
export default {
props: {
pageParams: {
type: Object,
default: () => {}
},
pageSizes: {
type: Array,
default: function () {
return [5, 10, 20, 30, 40, 50, 100];
}
},
// pagerCount: {
// type: Number,
// default: 5
// },
pageTotal: {
type: Number,
default: 0
},
ifShowTotal: {
type: Boolean,
default: true
},
ifShowSizes: {
type: Boolean,
default: true
},
ifShowPrev: {
type: Boolean,
default: true
},
ifShowPager: {
type: Boolean,
default: true
},
ifShowNext: {
type: Boolean,
default: true
},
ifShowJumper: {
type: Boolean,
default: false
}
},
data() {
return {
pagerCount: 5
};
},
methods: {
handleSizeChange(val) {
this.$emit('handleSizeChange', val);
},
handlePageChange(val) {
this.$emit('handlePageChange', val);
},
handleResize() {
if (window.innerWidth > 768) {
this.pagerCount = 5;
} else {
this.pagerCount = 2;
}
}
},
mounted() {
this.handleResize(); // 初始化宽度
},
computed: {
paginationLayout() {
const layoutStr = ['total', 'sizes', 'prev', 'pager', 'next', 'jumper'];
const { ifShowTotal, ifShowSizes, ifShowPrev, ifShowPager, ifShowNext, ifShowJumper } = this;
let layoutWantedToBeShowed = [];
[ifShowTotal, ifShowSizes, ifShowPrev, ifShowPager, ifShowNext, ifShowJumper].forEach((item, index) => {
if (item) layoutWantedToBeShowed.push(index);
});
return layoutWantedToBeShowed.map((item) => layoutStr[item]).join(',');
}
}
};
</script>

View File

@@ -3,7 +3,7 @@
<div class="pull-right hidden-xs">
<b>Version</b> 2.0.0
</div>
<strong>Copyright &copy; 2025 <a href="">卡盖亚网络</a>.</strong> All rights
<strong>Copyright &copy; 2024 <a href="">触海网络</a>.</strong> All rights
reserved.
</footer>
</template>

View File

@@ -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>e-party</b>管理系统</span>
<span class="logo-lg"><b>molistar</b>管理系统</span>
</a>
<!-- Header Navbar: style can be found in header.less -->
<nav class="navbar navbar-static-top" role="navigation">
@@ -92,12 +92,4 @@ export default {
}
</script>
<style scoped>
.navbar,.logo,.user-header{
/* background-color: ; */
background-color: #04D5C6 !important;
}
.sidebar-toggle:hover{
background-color:#04D5C6 !important;
}
</style>
<style scoped></style>

View File

@@ -250,7 +250,4 @@ export default {
<style scoped>
@import "@/css/main.css";
.pull-right{
background-color:#04D5C6 !important;
}
</style>

View File

@@ -49,28 +49,11 @@ import '@/assets/plugins/bootstrap-treeview/js/bootstrap-treeview.min.js'
// @ts-ignore
import components from '@/utils/components.js'
import Vue from 'vue';
// import ElementPlus from 'element-plus'
// import 'element-plus/dist/index.css'
import '@/css/public.css'
import VueClipboard from 'vue-clipboard2'
// import 'vue-clipboard2/dist/vue-clipboard.min.css'
import { copy } from './utils/copy.js';
const app = createApp(App)
app.config.globalProperties.$copy = function (text) {
copy(text, this);
};
// 全局错误处理
window.onerror = function (message, source, lineno, colno, error) {
console.log(error)
// 判断是否是 'insertBefore' 错误
if (error instanceof TypeError && message.includes('insertBefore')) {
console.error('捕获到 TypeError 错误:', error);
window.location.reload();
// 你可以在这里处理错误,比如记录日志或执行其他操作
return true; // 阻止浏览器默认的错误处理
}
return false; // 默认处理其他类型的错误
};
app.config.warnHandler = () => null;
app.use(store).use(router).use(components).use(VueClipboard).mount('#app')
app.use(store).use(router).use(components).mount('#app')

View File

@@ -1,81 +0,0 @@
// 公共混入 用户区服处理
/**
* 注意: 使用混入,在选择区服切换的时候会添加搜索的区服,
* 所以页面data如果没有searchForm: { region: null }, 需要加上,否则查询searchForm为空
*/
export default {
data() {
return {
userRegion: JSON.parse(localStorage.getItem('user_region')),
regionEnum: [
{ value: 1, name: 'A区' },
{ value: 2, name: 'B区' },
{ value: 3, name: 'C区' },
{ value: 4, name: 'D区' },
{ value: 5, name: 'E区' },
{ value: 6, name: 'F区' }
],
userAreaRegion: [], //拥有权限的区域列表
region: null, //展示的区域
}
},
created() {
this.handleUserRegion()
},
methods: {
handleUserRegion() {
if (this.userRegion.length == 0) {
this.$message.error({
message: '请先联系管理员设置你的区服权限!',
duration: 5000
});
return
}
this.userAreaRegion = this.regionEnum.filter(item => this.userRegion.includes(item.value));
this.region = this.userAreaRegion[0].value;
this.searchForm.region = this.region;
console.log('当前查看区服:', this.region);
},
handSearchRegion() {
if (this.$refs['searchForm']) { // 检查 this.$refs['searchForm'] 是否存在
this.$refs['searchForm'].validate((valid) => {
if (valid) {
this.pageParams.pageNo = 1;
this.getData();
}
});
} else {
this.pageParams.pageNo = 1;
this.getData();
}
},
},
computed: {
regionType() {
const { regionEnum } = this;
return function (value) {
for (let item of regionEnum) {
if (item.value === value) {
return item.name;
}
}
return '';
};
}
},
watch: {
region: {
handler(newVal, oldVal) {
this.searchForm.region = newVal;
// 防止初始化重复调用查询表单接口
if (oldVal != null) {
this.handSearchRegion()
}
},
// immediate: true, //立即监听
},
}
}

View File

@@ -1,11 +0,0 @@
// copy.js
export function copy(text, vueInstance) {
vueInstance.$copyText(text)
.then(() => {
vueInstance.$message.success('已复制');
})
.catch(() => {
vueInstance.$message.warning('复制失败');
});
}

View File

@@ -1,684 +0,0 @@
// /* Blob.js
// * A Blob, File, FileReader & URL implementation.
// * 2019-04-19
// *
// * By Eli Grey, http://eligrey.com
// * By Jimmy Wärting, https://github.com/jimmywarting
// * License: MIT
// * See https://github.com/eligrey/Blob.js/blob/master/LICENSE.md
// */
// ; (function () {
// var global = typeof window === 'object'
// ? window : typeof self === 'object'
// ? self : this
// var BlobBuilder = global.BlobBuilder
// || global.WebKitBlobBuilder
// || global.MSBlobBuilder
// || global.MozBlobBuilder
// global.URL = global.URL || global.webkitURL || function (href, a) {
// a = document.createElement('a')
// a.href = href
// return a
// }
// var origBlob = global.Blob
// var createObjectURL = URL.createObjectURL
// var revokeObjectURL = URL.revokeObjectURL
// var strTag = global.Symbol && global.Symbol.toStringTag
// var blobSupported = false
// var blobSupportsArrayBufferView = false
// var arrayBufferSupported = !!global.ArrayBuffer
// var blobBuilderSupported = BlobBuilder
// && BlobBuilder.prototype.append
// && BlobBuilder.prototype.getBlob
// try {
// // Check if Blob constructor is supported
// blobSupported = new Blob(['ä']).size === 2
// // Check if Blob constructor supports ArrayBufferViews
// // Fails in Safari 6, so we need to map to ArrayBuffers there.
// blobSupportsArrayBufferView = new Blob([new Uint8Array([1, 2])]).size === 2
// } catch (e) { }
// /**
// * Helper function that maps ArrayBufferViews to ArrayBuffers
// * Used by BlobBuilder constructor and old browsers that didn't
// * support it in the Blob constructor.
// */
// function mapArrayBufferViews(ary) {
// return ary.map(function (chunk) {
// if (chunk.buffer instanceof ArrayBuffer) {
// var buf = chunk.buffer
// // if this is a subarray, make a copy so we only
// // include the subarray region from the underlying buffer
// if (chunk.byteLength !== buf.byteLength) {
// var copy = new Uint8Array(chunk.byteLength)
// copy.set(new Uint8Array(buf, chunk.byteOffset, chunk.byteLength))
// buf = copy.buffer
// }
// return buf
// }
// return chunk
// })
// }
// function BlobBuilderConstructor(ary, options) {
// options = options || {}
// var bb = new BlobBuilder()
// mapArrayBufferViews(ary).forEach(function (part) {
// bb.append(part)
// })
// return options.type ? bb.getBlob(options.type) : bb.getBlob()
// }
// function BlobConstructor(ary, options) {
// return new origBlob(mapArrayBufferViews(ary), options || {})
// }
// if (global.Blob) {
// BlobBuilderConstructor.prototype = Blob.prototype
// BlobConstructor.prototype = Blob.prototype
// }
// /********************************************************/
// /* String Encoder fallback */
// /********************************************************/
// function stringEncode(string) {
// var pos = 0
// var len = string.length
// var Arr = global.Uint8Array || Array // Use byte array when possible
// var at = 0 // output position
// var tlen = Math.max(32, len + (len >> 1) + 7) // 1.5x size
// var target = new Arr((tlen >> 3) << 3) // ... but at 8 byte offset
// while (pos < len) {
// var value = string.charCodeAt(pos++)
// if (value >= 0xd800 && value <= 0xdbff) {
// // high surrogate
// if (pos < len) {
// var extra = string.charCodeAt(pos)
// if ((extra & 0xfc00) === 0xdc00) {
// ++pos
// value = ((value & 0x3ff) << 10) + (extra & 0x3ff) + 0x10000
// }
// }
// if (value >= 0xd800 && value <= 0xdbff) {
// continue // drop lone surrogate
// }
// }
// // expand the buffer if we couldn't write 4 bytes
// if (at + 4 > target.length) {
// tlen += 8 // minimum extra
// tlen *= (1.0 + (pos / string.length) * 2) // take 2x the remaining
// tlen = (tlen >> 3) << 3 // 8 byte offset
// var update = new Uint8Array(tlen)
// update.set(target)
// target = update
// }
// if ((value & 0xffffff80) === 0) { // 1-byte
// target[at++] = value // ASCII
// continue
// } else if ((value & 0xfffff800) === 0) { // 2-byte
// target[at++] = ((value >> 6) & 0x1f) | 0xc0
// } else if ((value & 0xffff0000) === 0) { // 3-byte
// target[at++] = ((value >> 12) & 0x0f) | 0xe0
// target[at++] = ((value >> 6) & 0x3f) | 0x80
// } else if ((value & 0xffe00000) === 0) { // 4-byte
// target[at++] = ((value >> 18) & 0x07) | 0xf0
// target[at++] = ((value >> 12) & 0x3f) | 0x80
// target[at++] = ((value >> 6) & 0x3f) | 0x80
// } else {
// // FIXME: do we care
// continue
// }
// target[at++] = (value & 0x3f) | 0x80
// }
// return target.slice(0, at)
// }
// /********************************************************/
// /* String Decoder fallback */
// /********************************************************/
// function stringDecode(buf) {
// var end = buf.length
// var res = []
// var i = 0
// while (i < end) {
// var firstByte = buf[i]
// var codePoint = null
// var bytesPerSequence = (firstByte > 0xEF) ? 4
// : (firstByte > 0xDF) ? 3
// : (firstByte > 0xBF) ? 2
// : 1
// if (i + bytesPerSequence <= end) {
// var secondByte, thirdByte, fourthByte, tempCodePoint
// switch (bytesPerSequence) {
// case 1:
// if (firstByte < 0x80) {
// codePoint = firstByte
// }
// break
// case 2:
// secondByte = buf[i + 1]
// if ((secondByte & 0xC0) === 0x80) {
// tempCodePoint = (firstByte & 0x1F) << 0x6 | (secondByte & 0x3F)
// if (tempCodePoint > 0x7F) {
// codePoint = tempCodePoint
// }
// }
// break
// case 3:
// secondByte = buf[i + 1]
// thirdByte = buf[i + 2]
// if ((secondByte & 0xC0) === 0x80 && (thirdByte & 0xC0) === 0x80) {
// tempCodePoint = (firstByte & 0xF) << 0xC | (secondByte & 0x3F) << 0x6 | (thirdByte & 0x3F)
// if (tempCodePoint > 0x7FF && (tempCodePoint < 0xD800 || tempCodePoint > 0xDFFF)) {
// codePoint = tempCodePoint
// }
// }
// break
// case 4:
// secondByte = buf[i + 1]
// thirdByte = buf[i + 2]
// fourthByte = buf[i + 3]
// if ((secondByte & 0xC0) === 0x80 && (thirdByte & 0xC0) === 0x80 && (fourthByte & 0xC0) === 0x80) {
// tempCodePoint = (firstByte & 0xF) << 0x12 | (secondByte & 0x3F) << 0xC | (thirdByte & 0x3F) << 0x6 | (fourthByte & 0x3F)
// if (tempCodePoint > 0xFFFF && tempCodePoint < 0x110000) {
// codePoint = tempCodePoint
// }
// }
// }
// }
// if (codePoint === null) {
// // we did not generate a valid codePoint so insert a
// // replacement char (U+FFFD) and advance only 1 byte
// codePoint = 0xFFFD
// bytesPerSequence = 1
// } else if (codePoint > 0xFFFF) {
// // encode to utf16 (surrogate pair dance)
// codePoint -= 0x10000
// res.push(codePoint >>> 10 & 0x3FF | 0xD800)
// codePoint = 0xDC00 | codePoint & 0x3FF
// }
// res.push(codePoint)
// i += bytesPerSequence
// }
// var len = res.length
// var str = ''
// var i = 0
// while (i < len) {
// str += String.fromCharCode.apply(String, res.slice(i, i += 0x1000))
// }
// return str
// }
// // string -> buffer
// var textEncode = typeof TextEncoder === 'function'
// ? TextEncoder.prototype.encode.bind(new TextEncoder())
// : stringEncode
// // buffer -> string
// var textDecode = typeof TextDecoder === 'function'
// ? TextDecoder.prototype.decode.bind(new TextDecoder())
// : stringDecode
// function FakeBlobBuilder() {
// function isDataView(obj) {
// return obj && DataView.prototype.isPrototypeOf(obj)
// }
// function bufferClone(buf) {
// var view = new Array(buf.byteLength)
// var array = new Uint8Array(buf)
// var i = view.length
// while (i--) {
// view[i] = array[i]
// }
// return view
// }
// function array2base64(input) {
// var byteToCharMap = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/='
// var output = []
// for (var i = 0; i < input.length; i += 3) {
// var byte1 = input[i]
// var haveByte2 = i + 1 < input.length
// var byte2 = haveByte2 ? input[i + 1] : 0
// var haveByte3 = i + 2 < input.length
// var byte3 = haveByte3 ? input[i + 2] : 0
// var outByte1 = byte1 >> 2
// var outByte2 = ((byte1 & 0x03) << 4) | (byte2 >> 4)
// var outByte3 = ((byte2 & 0x0F) << 2) | (byte3 >> 6)
// var outByte4 = byte3 & 0x3F
// if (!haveByte3) {
// outByte4 = 64
// if (!haveByte2) {
// outByte3 = 64
// }
// }
// output.push(
// byteToCharMap[outByte1], byteToCharMap[outByte2],
// byteToCharMap[outByte3], byteToCharMap[outByte4]
// )
// }
// return output.join('')
// }
// var create = Object.create || function (a) {
// function c() { }
// c.prototype = a
// return new c()
// }
// if (arrayBufferSupported) {
// var viewClasses = [
// '[object Int8Array]',
// '[object Uint8Array]',
// '[object Uint8ClampedArray]',
// '[object Int16Array]',
// '[object Uint16Array]',
// '[object Int32Array]',
// '[object Uint32Array]',
// '[object Float32Array]',
// '[object Float64Array]'
// ]
// var isArrayBufferView = ArrayBuffer.isView || function (obj) {
// return obj && viewClasses.indexOf(Object.prototype.toString.call(obj)) > -1
// }
// }
// function concatTypedarrays(chunks) {
// var size = 0
// var i = chunks.length
// while (i--) { size += chunks[i].length }
// var b = new Uint8Array(size)
// var offset = 0
// for (i = 0, l = chunks.length; i < l; i++) {
// var chunk = chunks[i]
// b.set(chunk, offset)
// offset += chunk.byteLength || chunk.length
// }
// return b
// }
// /********************************************************/
// /* Blob constructor */
// /********************************************************/
// function Blob(chunks, opts) {
// chunks = chunks || []
// opts = opts == null ? {} : opts
// for (var i = 0, len = chunks.length; i < len; i++) {
// var chunk = chunks[i]
// if (chunk instanceof Blob) {
// chunks[i] = chunk._buffer
// } else if (typeof chunk === 'string') {
// chunks[i] = textEncode(chunk)
// } else if (arrayBufferSupported && (ArrayBuffer.prototype.isPrototypeOf(chunk) || isArrayBufferView(chunk))) {
// chunks[i] = bufferClone(chunk)
// } else if (arrayBufferSupported && isDataView(chunk)) {
// chunks[i] = bufferClone(chunk.buffer)
// } else {
// chunks[i] = textEncode(String(chunk))
// }
// }
// this._buffer = global.Uint8Array
// ? concatTypedarrays(chunks)
// : [].concat.apply([], chunks)
// this.size = this._buffer.length
// this.type = opts.type || ''
// if (/[^\u0020-\u007E]/.test(this.type)) {
// this.type = ''
// } else {
// this.type = this.type.toLowerCase()
// }
// }
// Blob.prototype.arrayBuffer = function () {
// return Promise.resolve(this._buffer)
// }
// Blob.prototype.text = function () {
// return Promise.resolve(textDecode(this._buffer))
// }
// Blob.prototype.slice = function (start, end, type) {
// var slice = this._buffer.slice(start || 0, end || this._buffer.length)
// return new Blob([slice], { type: type })
// }
// Blob.prototype.toString = function () {
// return '[object Blob]'
// }
// /********************************************************/
// /* File constructor */
// /********************************************************/
// function File(chunks, name, opts) {
// opts = opts || {}
// var a = Blob.call(this, chunks, opts) || this
// a.name = name.replace(/\//g, ':')
// a.lastModifiedDate = opts.lastModified ? new Date(opts.lastModified) : new Date()
// a.lastModified = +a.lastModifiedDate
// return a
// }
// File.prototype = create(Blob.prototype)
// File.prototype.constructor = File
// if (Object.setPrototypeOf) {
// Object.setPrototypeOf(File, Blob)
// } else {
// try { File.__proto__ = Blob } catch (e) { }
// }
// File.prototype.toString = function () {
// return '[object File]'
// }
// /********************************************************/
// /* FileReader constructor */
// /********************************************************/
// function FileReader() {
// if (!(this instanceof FileReader)) {
// throw new TypeError("Failed to construct 'FileReader': Please use the 'new' operator, this DOM object constructor cannot be called as a function.")
// }
// var delegate = document.createDocumentFragment()
// this.addEventListener = delegate.addEventListener
// this.dispatchEvent = function (evt) {
// var local = this['on' + evt.type]
// if (typeof local === 'function') local(evt)
// delegate.dispatchEvent(evt)
// }
// this.removeEventListener = delegate.removeEventListener
// }
// function _read(fr, blob, kind) {
// if (!(blob instanceof Blob)) {
// throw new TypeError("Failed to execute '" + kind + "' on 'FileReader': parameter 1 is not of type 'Blob'.")
// }
// fr.result = ''
// setTimeout(function () {
// this.readyState = FileReader.LOADING
// fr.dispatchEvent(new Event('load'))
// fr.dispatchEvent(new Event('loadend'))
// })
// }
// FileReader.EMPTY = 0
// FileReader.LOADING = 1
// FileReader.DONE = 2
// FileReader.prototype.error = null
// FileReader.prototype.onabort = null
// FileReader.prototype.onerror = null
// FileReader.prototype.onload = null
// FileReader.prototype.onloadend = null
// FileReader.prototype.onloadstart = null
// FileReader.prototype.onprogress = null
// FileReader.prototype.readAsDataURL = function (blob) {
// _read(this, blob, 'readAsDataURL')
// this.result = 'data:' + blob.type + ';base64,' + array2base64(blob._buffer)
// }
// FileReader.prototype.readAsText = function (blob) {
// _read(this, blob, 'readAsText')
// this.result = textDecode(blob._buffer)
// }
// FileReader.prototype.readAsArrayBuffer = function (blob) {
// _read(this, blob, 'readAsText')
// // return ArrayBuffer when possible
// this.result = (blob._buffer.buffer || blob._buffer).slice()
// }
// FileReader.prototype.abort = function () { }
// /********************************************************/
// /* URL */
// /********************************************************/
// URL.createObjectURL = function (blob) {
// return blob instanceof Blob
// ? 'data:' + blob.type + ';base64,' + array2base64(blob._buffer)
// : createObjectURL.call(URL, blob)
// }
// URL.revokeObjectURL = function (url) {
// revokeObjectURL && revokeObjectURL.call(URL, url)
// }
// /********************************************************/
// /* XHR */
// /********************************************************/
// var _send = global.XMLHttpRequest && global.XMLHttpRequest.prototype.send
// if (_send) {
// XMLHttpRequest.prototype.send = function (data) {
// if (data instanceof Blob) {
// this.setRequestHeader('Content-Type', data.type)
// _send.call(this, textDecode(data._buffer))
// } else {
// _send.call(this, data)
// }
// }
// }
// global.FileReader = FileReader
// global.File = File
// global.Blob = Blob
// }
// function fixFileAndXHR() {
// var isIE = !!global.ActiveXObject || (
// '-ms-scroll-limit' in document.documentElement.style &&
// '-ms-ime-align' in document.documentElement.style
// )
// // Monkey patched
// // IE don't set Content-Type header on XHR whose body is a typed Blob
// // https://developer.microsoft.com/en-us/microsoft-edge/platform/issues/6047383
// var _send = global.XMLHttpRequest && global.XMLHttpRequest.prototype.send
// if (isIE && _send) {
// XMLHttpRequest.prototype.send = function (data) {
// if (data instanceof Blob) {
// this.setRequestHeader('Content-Type', data.type)
// _send.call(this, data)
// } else {
// _send.call(this, data)
// }
// }
// }
// try {
// new File([], '')
// } catch (e) {
// try {
// var klass = new Function('class File extends Blob {' +
// 'constructor(chunks, name, opts) {' +
// 'opts = opts || {};' +
// 'super(chunks, opts || {});' +
// 'this.name = name.replace(/\//g, ":");' +
// 'this.lastModifiedDate = opts.lastModified ? new Date(opts.lastModified) : new Date();' +
// 'this.lastModified = +this.lastModifiedDate;' +
// '}};' +
// 'return new File([], ""), File'
// )()
// global.File = klass
// } catch (e) {
// var klass = function (b, d, c) {
// var blob = new Blob(b, c)
// var t = c && void 0 !== c.lastModified ? new Date(c.lastModified) : new Date()
// blob.name = d.replace(/\//g, ':')
// blob.lastModifiedDate = t
// blob.lastModified = +t
// blob.toString = function () {
// return '[object File]'
// }
// if (strTag) {
// blob[strTag] = 'File'
// }
// return blob
// }
// global.File = klass
// }
// }
// }
// if (blobSupported) {
// fixFileAndXHR()
// global.Blob = blobSupportsArrayBufferView ? global.Blob : BlobConstructor
// } else if (blobBuilderSupported) {
// fixFileAndXHR()
// global.Blob = BlobBuilderConstructor
// } else {
// FakeBlobBuilder()
// }
// if (strTag) {
// File.prototype[strTag] = 'File'
// Blob.prototype[strTag] = 'Blob'
// FileReader.prototype[strTag] = 'FileReader'
// }
// var blob = global.Blob.prototype
// var stream
// function promisify(obj) {
// return new Promise(function (resolve, reject) {
// obj.onload =
// obj.onerror = function (evt) {
// obj.onload =
// obj.onerror = null
// evt.type === 'load'
// ? resolve(obj.result || obj)
// : reject(new Error('Failed to read the blob/file'))
// }
// })
// }
// try {
// new ReadableStream({ type: 'bytes' })
// stream = function stream() {
// var position = 0
// var blob = this
// return new ReadableStream({
// type: 'bytes',
// autoAllocateChunkSize: 524288,
// pull: function (controller) {
// var v = controller.byobRequest.view
// var chunk = blob.slice(position, position + v.byteLength)
// return chunk.arrayBuffer()
// .then(function (buffer) {
// var uint8array = new Uint8Array(buffer)
// var bytesRead = uint8array.byteLength
// position += bytesRead
// v.set(uint8array)
// controller.byobRequest.respond(bytesRead)
// if (position >= blob.size)
// controller.close()
// })
// }
// })
// }
// } catch (e) {
// try {
// new ReadableStream({})
// stream = function stream(blob) {
// var position = 0
// var blob = this
// return new ReadableStream({
// pull: function (controller) {
// var chunk = blob.slice(position, position + 524288)
// return chunk.arrayBuffer().then(function (buffer) {
// position += buffer.byteLength
// var uint8array = new Uint8Array(buffer)
// controller.enqueue(uint8array)
// if (position == blob.size)
// controller.close()
// })
// }
// })
// }
// } catch (e) {
// try {
// new Response('').body.getReader().read()
// stream = function stream() {
// return (new Response(this)).body
// }
// } catch (e) {
// stream = function stream() {
// throw new Error('Include https://github.com/MattiasBuelens/web-streams-polyfill')
// }
// }
// }
// }
// if (!blob.arrayBuffer) {
// blob.arrayBuffer = function arrayBuffer() {
// var fr = new FileReader()
// fr.readAsArrayBuffer(this)
// return promisify(fr)
// }
// }
// if (!blob.text) {
// blob.text = function text() {
// var fr = new FileReader()
// fr.readAsText(this)
// return promisify(fr)
// }
// }
// if (!blob.stream) {
// blob.stream = stream
// }
// })()

View File

@@ -1,141 +0,0 @@
/* eslint-disable */
require('script-loader!file-saver');
// require('script-loader!./Blob.js');
require('script-loader!xlsx/dist/xlsx.core.min');
function generateArray(table) {
var out = [];
var rows = table.querySelectorAll('tr');
var ranges = [];
for (var R = 0; R < rows.length; ++R) {
var outRow = [];
var row = rows[R];
var columns = row.querySelectorAll('td');
for (var C = 0; C < columns.length; ++C) {
var cell = columns[C];
var colspan = cell.getAttribute('colspan');
var rowspan = cell.getAttribute('rowspan');
var cellValue = cell.innerText;
if (cellValue !== "" && cellValue == +cellValue) cellValue = +cellValue;
//Skip ranges
ranges.forEach(function (range) {
if (R >= range.s.r && R <= range.e.r && outRow.length >= range.s.c && outRow.length <= range.e.c) {
for (var i = 0; i <= range.e.c - range.s.c; ++i) outRow.push(null);
}
});
//Handle Row Span
if (rowspan || colspan) {
rowspan = rowspan || 1;
colspan = colspan || 1;
ranges.push({s: {r: R, c: outRow.length}, e: {r: R + rowspan - 1, c: outRow.length + colspan - 1}});
}
;
//Handle Value
outRow.push(cellValue !== "" ? cellValue : null);
//Handle Colspan
if (colspan) for (var k = 0; k < colspan - 1; ++k) outRow.push(null);
}
out.push(outRow);
}
return [out, ranges];
};
function datenum(v, date1904) {
if (date1904) v += 1462;
var epoch = Date.parse(v);
return (epoch - new Date(Date.UTC(1899, 11, 30))) / (24 * 60 * 60 * 1000);
}
function sheet_from_array_of_arrays(data, opts) {
var ws = {};
var range = {s: {c: 10000000, r: 10000000}, e: {c: 0, r: 0}};
for (var R = 0; R != data.length; ++R) {
for (var C = 0; C != data[R].length; ++C) {
if (range.s.r > R) range.s.r = R;
if (range.s.c > C) range.s.c = C;
if (range.e.r < R) range.e.r = R;
if (range.e.c < C) range.e.c = C;
var cell = {v: data[R][C]};
if (cell.v == null) continue;
var cell_ref = XLSX.utils.encode_cell({c: C, r: R});
if (typeof cell.v === 'number') cell.t = 'n';
else if (typeof cell.v === 'boolean') cell.t = 'b';
else if (cell.v instanceof Date) {
cell.t = 'n';
cell.z = XLSX.SSF._table[14];
cell.v = datenum(cell.v);
}
else cell.t = 's';
ws[cell_ref] = cell;
}
}
if (range.s.c < 10000000) ws['!ref'] = XLSX.utils.encode_range(range);
return ws;
}
function Workbook() {
if (!(this instanceof Workbook)) return new Workbook();
this.SheetNames = [];
this.Sheets = {};
}
function s2ab(s) {
var buf = new ArrayBuffer(s.length);
var view = new Uint8Array(buf);
for (var i = 0; i != s.length; ++i) view[i] = s.charCodeAt(i) & 0xFF;
return buf;
}
export function export_table_to_excel(id) {
var theTable = document.getElementById(id);
console.log('a')
var oo = generateArray(theTable);
var ranges = oo[1];
/* original data */
var data = oo[0];
var ws_name = "SheetJS";
console.log(data);
var wb = new Workbook(), ws = sheet_from_array_of_arrays(data);
/* add ranges to worksheet */
// ws['!cols'] = ['apple', 'banan'];
ws['!merges'] = ranges;
/* add worksheet to workbook */
wb.SheetNames.push(ws_name);
wb.Sheets[ws_name] = ws;
var wbout = XLSX.write(wb, {bookType: 'xlsx', bookSST: false, type: 'binary'});
saveAs(new Blob([s2ab(wbout)], {type: "application/octet-stream"}), "test.xlsx")
}
function formatJson(jsonData) {
console.log(jsonData)
}
export function export_json_to_excel(th, jsonData, defaultTitle) {
/* original data */
var data = jsonData;
data.unshift(th);
var ws_name = "SheetJS";
var wb = new Workbook(), ws = sheet_from_array_of_arrays(data);
/* add worksheet to workbook */
wb.SheetNames.push(ws_name);
wb.Sheets[ws_name] = ws;
var wbout = XLSX.write(wb, {bookType: 'xlsx', bookSST: false, type: 'binary'});
var title = defaultTitle || '列表'
saveAs(new Blob([s2ab(wbout)], {type: "application/octet-stream"}), title + ".xlsx")
}

View File

@@ -1,11 +0,0 @@
function formatJson(filterVal, jsonData) {
return jsonData.map(v => filterVal.map(j => v[j]));
}
export const exportExcel = (tHeader, filterVal, data, excelName) => {
require.ensure([], () => {
const { export_json_to_excel } = require('./excel/Export2Excel.js');
const combineData = formatJson(filterVal, data);
export_json_to_excel(tHeader, combineData, excelName);
});
}

View File

@@ -1,21 +0,0 @@
const partitionInfoMap = {
1: '英语区',
2: '阿拉伯语区',
4: '华语区',
8: '土耳其区',
16: '英语2区',
}
export const partitionDesc = (val) => {
return Object.keys(partitionInfoMap).filter(k=>{
return(Number(val) & Number(k)) != 0
}).map(k=>partitionInfoMap[k]).join(",");
}
export const partitionIdArr = (val) => {
var arr =[];
Object.keys(partitionInfoMap).filter(k=>{
return(Number(val) & Number(k)) != 0
}).map(k=>arr.push(Number(k)));
return arr
}

View File

@@ -1,107 +0,0 @@
export const formatDate = (value) => {
let timezone = 3; //目标时区时间东3区(东时区正数 西时区负数)
let offset_GMT = new Date(value).getTimezoneOffset(); // 本地时间和格林威治的时间差,单位为分钟
let nowDate = new Date(value).getTime(); // 本地时间距 1970 年 1 月 1 日午夜GMT 时间)之间的毫秒数
let date = new Date(nowDate + offset_GMT * 60 * 1000 + timezone * 60 * 60 * 1000);
// 提取年、月、日、小时、分钟和秒
let y = date.getFullYear();
let MM = date.getMonth() + 1;
MM = MM < 10 ? ('0' + MM) : MM;
let d = date.getDate();
d = d < 10 ? ('0' + d) : d;
let h = date.getHours();
h = h < 10 ? ('0' + h) : h;
let m = date.getMinutes();
m = m < 10 ? ('0' + m) : m;
let s = date.getSeconds();
s = s < 10 ? ('0' + s) : s;
return `${y}-${MM}-${d} ${h}:${m}:${s}`;
}
export const formatDate2 = (value) => {
let timezone = 3; //目标时区时间东3区(东时区正数 西时区负数)
let offset_GMT = new Date(value).getTimezoneOffset(); // 本地时间和格林威治的时间差,单位为分钟
let nowDate = new Date(value).getTime(); // 本地时间距 1970 年 1 月 1 日午夜GMT 时间)之间的毫秒数
let date = new Date(nowDate + offset_GMT * 60 * 1000 + timezone * 60 * 60 * 1000);
let y = date.getFullYear();
let MM = date.getMonth() + 1;
MM = MM < 10 ? ('0' + MM) : MM;
let d = date.getDate();
d = d < 10 ? ('0' + d) : d;
let h = date.getHours();
h = h < 10 ? ('0' + h) : h;
let m = date.getMinutes();
m = m < 10 ? ('0' + m) : m;
let s = date.getSeconds();
s = s < 10 ? ('0' + s) : s;
return `${y}/${MM}/${d} ${h}:${m}:${s}`;
}
export const formatDateYMD = (value) => {
let timezone = 3; //目标时区时间东3区(东时区正数 西时区负数)
let offset_GMT = new Date(value).getTimezoneOffset(); // 本地时间和格林威治的时间差,单位为分钟
let nowDate = new Date(value).getTime(); // 本地时间距 1970 年 1 月 1 日午夜GMT 时间)之间的毫秒数
let date = new Date(nowDate + offset_GMT * 60 * 1000 + timezone * 60 * 60 * 1000);
let y = date.getFullYear();
let MM = date.getMonth() + 1;
MM = MM < 10 ? ('0' + MM) : MM;
let d = date.getDate();
d = d < 10 ? ('0' + d) : d;
let h = date.getHours();
h = h < 10 ? ('0' + h) : h;
let m = date.getMinutes();
m = m < 10 ? ('0' + m) : m;
let s = date.getSeconds();
s = s < 10 ? ('0' + s) : s;
return `${y}/${MM}/${d}`;
}
export const formatDateYYYYMMDD = (value) => {
let date = new Date(value);
// 将时区设置为GMT+3
let gmtOffset = 3; // GMT+3时区偏移量为3小时
let localOffset = date.getTimezoneOffset() / 60; // 获取本地时区偏移量(以小时为单位)
let targetOffset = gmtOffset - localOffset; // 计算目标时区偏移量
date.setHours(date.getHours() + targetOffset); // 根据偏移量调整小时
const y = date.getFullYear();
let MM = date.getMonth() + 1;
MM = MM < 10 ? ('0' + MM) : MM;
let d = date.getDate();
d = d < 10 ? ('0' + d) : d;
let h = date.getHours();
h = h < 10 ? ('0' + h) : h;
let m = date.getMinutes();
m = m < 10 ? ('0' + m) : m;
let s = date.getSeconds();
s = s < 10 ? ('0' + s) : s;
return `${y}-${MM}-${d}`;
}
export const formatDateYYYYMM = (value) => {
let date = new Date(value);
// 将时区设置为GMT+3
let gmtOffset = 3; // GMT+3时区偏移量为3小时
let localOffset = date.getTimezoneOffset() / 60; // 获取本地时区偏移量(以小时为单位)
let targetOffset = gmtOffset - localOffset; // 计算目标时区偏移量
date.setHours(date.getHours() + targetOffset); // 根据偏移量调整小时
let y = date.getFullYear();
let MM = date.getMonth() + 1;
MM = MM < 10 ? ('0' + MM) : MM;
let d = date.getDate();
d = d < 10 ? ('0' + d) : d;
let h = date.getHours();
h = h < 10 ? ('0' + h) : h;
let m = date.getMinutes();
m = m < 10 ? ('0' + m) : m;
let s = date.getSeconds();
s = s < 10 ? ('0' + s) : s;
console.log(y, MM, d, h, s);
return `${y}-${MM}`;
}

View File

@@ -5,7 +5,7 @@ import global from "@/constants/global";
const service = axios.create();
import { ElMessage } from 'element-plus'
service.interceptors.request.use(config => {
// console.log('config', config);
console.log('config', config);
return config;
}, error => {
Promise.reject(error);
@@ -13,7 +13,7 @@ service.interceptors.request.use(config => {
service.interceptors.response.use(res => {
userLogout(res.headers[global.NEED_LOGOUT.toLowerCase()]);
// console.log('res.data', res);
console.log('res.data', res);
// if (res.data.code == 200) {
// ElMessage({
// message: "成功",

View File

@@ -1,325 +0,0 @@
<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>

View File

@@ -1,442 +0,0 @@
<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>

View File

@@ -1,234 +0,0 @@
<template>
<div class="box">
<!-- 选择分区 -->
<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>
</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="是否生效">
<template v-slot="scope">{{ scope.row.enable ? "是" : "否" }}</template>
</el-table-column>
<el-table-column align="center"
label="操作">
<template v-slot="scope">
<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>
<!-- 礼物面板类型 -->
<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>
</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>
</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>
</el-select>
</div>
<template #footer>
<span class="dialog-footer">
<el-button @click="eidDialog = false">取消</el-button>
<el-button type="primary"
@click="eidDialogClick()"> 确认 </el-button>
</span>
</template>
</el-dialog>
</div>
</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 () {
return {
loading: false,
//查询所需条件对象
inquire: {
partitionId: 1,
inquireonInfos: [
// { desc: "英语区", id: 1 },
// { desc: "阿拉伯区", id: 2 },
// { desc: "华语区", id: 4 },
// { desc: "土耳其区", id: 8 },
],
},
// 表格
tableData: [],
// 编辑
eidDialog: false,
eidDialogTitle: "",
eidText: "",
eidObjNew: {},
eidObj: {
type: "",
clientName: "",
seq: "",
value: "",
option: [
{
desc: "是",
id: true,
},
{
desc: "否",
id: false,
},
],
},
};
},
created () {
this.eidDialogTitle = `编辑礼物面板信息-华语区`;
this.eidText = `华语区`;
this.getData();
listAll().then((res) => {
this.inquire.inquireonInfos = res.data;
});
},
methods: {
// 查询接口
getData () {
this.loading = true;
list({
partitionId: this.inquire.partitionId,
}).then((res) => {
this.tableData = res.data;
this.loading = false;
});
},
ediClick (val) {
this.eidDialog = true;
this.eidObj.type = val.name;
this.eidObj.seq = val.seq;
this.eidObj.value = val.enable;
this.eidObjNew = val;
},
eidDialogClick () {
update({
enable: this.eidObj.value,
id: this.eidObjNew.id,
seq: this.eidObj.seq,
partitionId: this.inquire.partitionId,
}).then((res) => {
if (res.code == 200) {
ElMessage({
showClose: true,
message: "编辑成功",
type: "success",
});
this.eidDialog = false;
this.getData();
} else {
ElMessage({
showClose: true,
message: res.message,
type: "error",
});
}
});
},
handleChange (val) {
console.log(val);
if (val == 1) {
this.eidDialogTitle = `编辑礼物面板信息-英语区`;
this.eidText = `英语区`;
} else if (val == 2) {
this.eidDialogTitle = `编辑礼物面板信息-阿拉伯区`;
this.eidText = `阿拉伯区`;
} else if (val == 4) {
this.eidDialogTitle = `编辑礼物面板信息-华语区`;
this.eidText = `华语区`;
} else if (val == 8) {
this.eidDialogTitle = `编辑礼物面板信息-土耳其区`;
this.eidText = `土耳其区`;
} else if (val == 16) {
this.eidDialogTitle = `编辑礼物面板信息-英语2区`;
this.eidText = `英语2区`;
}
this.getData();
},
},
};
</script>
<style lang="less" scoped>
.box {
padding-top: 20px;
background: #ecf0f5;
.inquire {
display: inline-block;
margin-right: 70px;
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>

View File

@@ -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,15 +10,6 @@
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">
@@ -39,7 +30,6 @@
<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="邀请码" />
@@ -61,7 +51,6 @@
{{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
@@ -139,10 +128,13 @@ export default {
name: "AccessRestriction",
data() {
return {
userId: undefined, //用戶id
email: undefined, //用戶id
userId: "", //用戶id
loading: false, //列表loading
tableData: [], //列表数据
tableData: [
{
erbanNo: "123123123",
},
], //列表数据
total: 10, //总页数
currentPage: 1, //页码
pageSize: 10, //条数
@@ -165,7 +157,6 @@ export default {
page: this.currentPage,
pageSize: this.pageSize,
userErBanNo: this.userId,
email: this.email,
}).then((res) => {
this.tableData = res.data.records;
this.loading = false;

View File

@@ -1,457 +0,0 @@
<template>
<div class="account-apply-manage">
<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-group>
</div>
<div class="handle-box">
<el-form ref="searchForm"
:model="searchForm"
label-width="90px"
:disabled="tableLoading">
<div class="search-line">
<el-form-item label="MoliStar ID"
prop="erbanNo">
<el-input v-model.trim="searchForm.erbanNo"
placeholder="Please enter"></el-input>
</el-form-item>
<el-form-item label="UID"
prop="uid">
<el-input v-model.trim="searchForm.uid"
placeholder="Please enter"></el-input>
</el-form-item>
<el-form-item label="SID"
prop="sid">
<el-input v-model.trim="searchForm.sid"
placeholder="Please enter"></el-input>
</el-form-item>
<el-form-item label="Region"
prop="partitionId">
<el-select v-model="searchForm.partitionId">
<el-option label="全部"
value=""></el-option>
<el-option v-for="item in partitionInfoList"
:key="item.id"
:label="item.desc"
:value="item.id"></el-option>
</el-select>
</el-form-item>
<el-form-item label-width="40px">
<el-button type="primary"
@click="handSearch">Search</el-button>
<el-button plain
@click="resetSearchForm">Reset Search</el-button>
<el-upload class="file-uploader"
action="#"
list-type="picture-card"
:show-file-list="false"
:on-change="handleExcel"
accept=".xls, .xlsx"
:auto-upload="false">
<el-button type="primary">Import</el-button>
</el-upload>
</el-form-item>
</div>
</el-form>
<!-- <el-upload
class="file-uploader"
action="#"
list-type="picture-card"
:show-file-list="false"
:on-change="handleExcel"
accept=".xls, .xlsx"
:auto-upload="false"
>
<el-button type="primary" class="el-icon-upload">Import</el-button>
</el-upload> -->
</div>
<div class="table">
<el-table :data="tableData"
border
v-loading="tableLoading"
@header-click="headerCopy"
style="width: 100%">
<el-table-column align="center"
prop="id"
label="No.">
</el-table-column>
<el-table-column align="center"
prop="erbanNo"
label="MoliStar ID">
</el-table-column>
<el-table-column align="center"
prop="uid"
label="UID">
</el-table-column>
<el-table-column align="center"
prop="level"
label="SID Level">
</el-table-column>
<el-table-column align="center"
prop="nick"
label="Nickname">
</el-table-column>
<el-table-column align="center"
prop="partitionInfo"
label="Region">
</el-table-column>
<el-table-column align="center"
prop="createTime"
label="Apply time">
<template v-slot="scope">{{
convertTimestamp(scope.row.createTime)
}}</template>
</el-table-column>
<el-table-column align="center"
prop="prettyNo"
label="SID">
</el-table-column>
<el-table-column align="center"
prop="status"
label="State">
<template v-slot="scope">
<el-tag :type="applyStateTag(scope.row.status)">{{
applyStateText(scope.row.status)
}}</el-tag>
</template>
</el-table-column>
<el-table-column align="center"
prop="updateTime"
label="Review time">
<template v-slot="scope">{{
convertTimestamp(scope.row.updateTime)
}}</template>
</el-table-column>
<el-table-column align="center"
prop="operater"
label="Operator">
</el-table-column>
<el-table-column align="center"
label="Operate">
<template v-slot="scope">
<el-button type="text"
v-if="scope.row.status == 0"
@click="handlePass(scope.$index, scope.row)">
Pass
</el-button>
<el-button type="text"
v-if="scope.row.status == 0"
@click="handleReject(scope.$index, scope.row)">
Reject
</el-button>
<el-button type="text"
v-if="scope.row.status == 1"
class="red"
@click="handleDelete(scope.$index, scope.row)">
Delete
</el-button>
</template>
</el-table-column>
</el-table>
<table-pagination :pageParams="pageParams"
:pageTotal="pageTotal"
:ifShowSizes="true"
@handleSizeChange="handleSizeChange"
@handlePageChange="handlePageChange"></table-pagination>
</div>
</div>
</div>
</template>
<script>
import {
getPrettyNumberExamineList,
prettyNumberExaminePass,
prettyNumberExamineDelete,
prettyNumberExamineReject,
erbanUpload,
} from "@/api/relPrivilegeManage/relPrivilegeManage.js";
import { getPartitionInfoList } from '@/api/partition/partitionInfo';
import TablePagination from "@/components/common/TablePagination";
import { formatDate } from "@/utils/relDate";
import { ElMessageBox, ElMessage } from "element-plus"; // 正确引入 ElM
// 混入
// import Mixin from '../../mixin/mixRegion.js';
export default {
name: "accountApplyManage",
// mixins: [Mixin],
components: { TablePagination },
data () {
return {
partitionInfoList: [],
tableLoading: false, // 表格是否加载中
tableData: [], // 接口返回的表格数据
// 搜索表单相关
searchForm: {
erbanNo: null,
uid: null,
sid: null,
partitionId: null,
},
pageTotal: 0, // 接口返回的表格总条数
pageParams: {
pageNo: 1,
pageSize: 10,
},
};
},
created () {
this.initPartition();
this.getData();
},
methods: {
getData () {
this.tableLoading = true;
let { pageParams, searchForm } = this;
searchForm = JSON.parse(JSON.stringify(searchForm));
pageParams = JSON.parse(JSON.stringify(pageParams));
Object.keys(searchForm).forEach((item) => {
if (
!searchForm[item] ||
(searchForm[item] !== undefined && searchForm[item] === "")
) {
delete searchForm[item];
}
});
Object.assign(pageParams, searchForm);
getPrettyNumberExamineList(pageParams).then((res) => {
this.tableLoading = false;
if (res.code == 200) {
let data = res.data;
console.log(data);
this.tableData = data.rows;
this.pageTotal = data.total;
}
});
},
//导入表格
handleExcel (file) {
let formData = new FormData(); //声明一个FormDate对象
formData.append("file", file.raw); //把文件信息放入对象中
console.log(file.raw);
erbanUpload(formData)
.then((res) => {
if (res.code == 200) {
this.getData();
this.$message.success("Operation successful");
}
})
.catch((err) => {
// that.$message({
// type: 'error',
// message: 'Operation failed'
// });
});
},
// 通过
handlePass (index, row) {
ElMessageBox.confirm("Are you sure you want to pass?", "Prompt", {
type: "warning",
confirmButtonText: "Sure",
cancelButtonText: "Cancel",
})
.then(() => {
prettyNumberExaminePass({ id: row.id }).then((res) => {
if (res.code == 200) {
this.getData();
ElMessage({
showClose: true,
message: "Operation successful",
type: "success",
});
} else {
ElMessage({
showClose: true,
message: res.message,
type: "error",
});
}
});
})
.catch(() => { });
},
// 拒绝
handleReject (index, row) {
ElMessageBox.confirm("Are you sure you want to refuse?", "Prompt", {
type: "warning",
confirmButtonText: "Sure",
cancelButtonText: "Cancel",
})
.then(() => {
prettyNumberExamineReject({ id: row.id }).then((res) => {
if (res.code == 200) {
this.getData();
ElMessage({
showClose: true,
message: "Operation successful",
type: "success",
});
} else {
ElMessage({
showClose: true,
message: res.message,
type: "error",
});
}
});
})
.catch(() => { });
},
// 删除操作
handleDelete (index, row) {
// 二次确认删除
ElMessageBox.confirm("Are you sure you want to delete?", "Prompt", {
type: "warning",
confirmButtonText: "Sure",
cancelButtonText: "Cancel",
})
.then(() => {
prettyNumberExamineDelete({ id: row.id }).then((res) => {
if (res.code == 200) {
this.getData();
ElMessage({
showClose: true,
message: "Operation successful",
type: "success",
});
} else {
ElMessage({
showClose: true,
message: res.message,
type: "error",
});
}
});
})
.catch(() => { });
},
// 点击搜索
handSearch () {
this.$refs["searchForm"].validate((valid) => {
if (valid) {
this.pageParams.pageNo = 1;
this.getData();
}
});
},
// 重置搜索表单
resetSearchForm () {
this.$refs["searchForm"].resetFields();
this.pageParams.pageNo = 1;
this.getData();
},
// 分页导航
handleSizeChange (val) {
this.pageParams.pageNo = val;
this.getData();
},
handlePageChange (val) {
this.pageParams.pageNo = val;
this.getData();
},
headerCopy (column, e) {
this.$copy(column.label);
},
initPartition () {
getPartitionInfoList().then(res => {
let data = res.data;
this.partitionInfoList = data;
});
},
},
computed: {
applyStateTag () {
return function (val) {
let text = "";
switch (val) {
case 0:
text = "warning";
break;
case 1:
text = "success";
break;
case 2:
text = "info";
break;
case 3:
text = "danger";
break;
}
return text;
};
},
applyStateText () {
return function (val) {
let text = "";
switch (val) {
case 0:
text = "In Review";
break;
case 1:
text = "Passed";
break;
case 2:
text = "Rejected";
break;
case 3:
text = "Deleted";
break;
}
return text;
};
},
convertTimestamp () {
return function (time) {
let date = new Date(time);
return formatDate(date);
};
},
},
};
</script>
<style lang="scss">
.red {
color: rgb(241, 19, 19);
}
// ::v-deep {
// .el-upload--picture-card {
// background-color: transparent;
// border: 0;
// border-radius: 0;
// box-sizing: border-box;
// width: 0;
// height: 45px;
// line-height: 0;
// vertical-align: top;
// }
// }
.file-uploader {
display: block;
margin-left: 51px;
input {
display: none;
}
.el-upload {
background-color: transparent;
border: 0;
border-radius: 0;
box-sizing: border-box;
width: 0;
height: 45px;
line-height: 0;
vertical-align: top;
}
span {
display: block;
}
}
</style>

File diff suppressed because it is too large Load Diff

View File

@@ -1,971 +0,0 @@
<template>
<div class="box">
<!-- 查询 -->
<div class="inquire">
<span>分区</span>
<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
>
<!-- 表格 -->
<el-table
v-loading="loading"
:data="tableData"
border
style="width: 100%; margin-top: 25px"
>
<el-table-column prop="levelName" align="center" label="Boom等级" />
<el-table-column prop="goldNum" align="center" label="金币任务数" />
<el-table-column prop="countDownVapUrl" align="center" label="Boom等级图">
<template v-slot="scope">
<el-image
style="width: 100px; height: 100px"
:src="scope.row.pic"
:zoom-rate="1.1"
:preview-src-list="[scope.row.pic]"
fit="contain"
preview-teleported="true"
hide-on-click-modal="true"
/>
</template>
</el-table-column>
<el-table-column prop="x" align="center" label="Boom倒计时">
<template v-slot="scope">
<video
:key="scope.row.countDownVapUrl"
width="320"
height="240"
controls="controls"
>
<source :src="scope.row.countDownVapUrl" type="video/mp4" /></video
></template>
</el-table-column>
<el-table-column prop="x" align="center" label="Boon"
><template v-slot="scope">
<video
:key="scope.row.endVapUrl"
width="320"
height="240"
controls="controls"
>
<source :src="scope.row.endVapUrl" type="video/mp4" /></video
></template>
</el-table-column>
<el-table-column align="center" label="操作" width="300">
<template v-slot="scope">
<el-button
@click="
eidObj.level = scope.row.level;
eidObj.goldNum = scope.row.goldNum;
eidObj.imageUrl1 = scope.row.pic;
eidObj.imageUrl2 = scope.row.countDownVapUrl;
eidObj.imageUrl3 = scope.row.endVapUrl;
id = scope.row.id;
eidDialogBox = true;
"
type="text"
size="default"
>编辑</el-button
>
<el-button
@click="
member.level = scope.row.level;
member.goldNum = scope.row.goldNum;
seeList(scope.row);
"
type="text"
size="default"
>查看明细</el-button
>
<el-button
@click="
member.level = scope.row.level;
member.goldNum = scope.row.goldNum;
id = scope.row.level;
eidList(scope.row);
"
type="text"
size="default"
>编辑明细</el-button
>
</template>
</el-table-column>
</el-table>
<!-- 等级奖励配置查看 -->
<el-dialog v-model="memberDialog" title="等级奖励配置(查看)" center>
<div class="inquire">
<span>Boom等级{{ member.level }}</span>
</div>
<div class="inquire">
<span>金币任务数量{{ member.goldNum }}</span>
</div>
<!-- 内嵌表格 -->
<el-table
:data="member.tableData"
border
style="width: 100%; margin-top: 25px"
>
<el-table-column prop="seq" align="center" label="排序" />
<el-table-column prop="x" align="center" label="奖品类型">
<template v-slot="scope">
{{
scope.row.awardType == 8
? "金币"
: scope.row.awardType == 6
? "礼物"
: scope.row.awardType == 5
? "座驾"
: scope.row.awardType == 1
? "头饰"
: scope.row.awardType == 3
? "气泡"
: scope.row.awardType == 10
? "VIP"
: scope.row.awardType == 11
? "勋章"
: scope.row.awardType == 13
? "金豆"
: "铭牌"
}}
</template>
</el-table-column>
<el-table-column prop="awardNum" align="center" label="奖品天数" />
<el-table-column prop="type" align="center" label="用户身份">
<template v-slot="scope">
{{ scope.row.type == 1 ? "固定身份" : "随机身份" }}
</template>
</el-table-column>
<el-table-column
prop="awardId"
align="center"
label="奖品ID/VIP等级1"
/>
<el-table-column prop="isShow" align="center" label="是否展示">
<template v-slot="scope">
{{ scope.row.isShow == 1 ? "" : "" }}
</template>
</el-table-column>
<el-table-column prop="awardStock" 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="contain"
preview-teleported="true"
hide-on-click-modal="true"
/>
</template>
</el-table-column>
</el-table>
<template #footer>
<span class="dialog-footer">
<el-button type="primary" @click="memberDialog = false">
关闭
</el-button>
</span>
</template>
</el-dialog>
<!-- 等级奖励配置编辑 -->
<el-dialog v-model="eidDialog" title="等级奖励配置(编辑)" center>
<div class="inquire">
<span>Boom等级{{ member.level }}</span>
</div>
<div class="inquire">
<span>金币任务数量{{ member.goldNum }}</span>
</div>
<!-- 内嵌表格 -->
<el-table
:data="eid.tableData"
border
style="width: 100%; margin-top: 25px"
>
<el-table-column prop="seq" align="center" label="排序" />
<el-table-column prop="x" align="center" label="奖品类型">
<template v-slot="scope">
{{
scope.row.awardType == 8
? "金币"
: scope.row.awardType == 6
? "礼物"
: scope.row.awardType == 5
? "座驾"
: scope.row.awardType == 1
? "头饰"
: scope.row.awardType == 3
? "气泡"
: scope.row.awardType == 10
? "VIP"
: scope.row.awardType == 11
? "勋章"
: scope.row.awardType == 13
? "金豆"
: "铭牌"
}}
</template>
</el-table-column>
<el-table-column prop="awardNum" align="center" label="奖品天数" />
<el-table-column prop="type" align="center" label="用户身份">
<template v-slot="scope">
{{ scope.row.type == 1 ? "固定身份" : "随机身份" }}
</template>
</el-table-column>
<el-table-column prop="awardId" align="center" label="奖品ID/VIP等级" />
<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="contain"
preview-teleported="true"
hide-on-click-modal="true"
/>
</template>
</el-table-column>
<el-table-column prop="isShow" align="center" label="是否展示">
<template v-slot="scope">
{{ scope.row.isShow == 1 ? "" : "" }}
</template>
</el-table-column>
<el-table-column prop="awardStock" align="center" label="奖品库存" />
<el-table-column prop="x" align="center" label="操作">
<template v-slot="scope">
<el-button @click="editFun(scope.row)" type="text" size="default"
>编辑</el-button
>
<el-button @click="delFun(scope.row)" type="text" size="default"
>删除</el-button
>
</template>
</el-table-column>
</el-table>
<template #footer>
<span class="dialog-footer">
<el-button type="primary" @click="addDialog = true">
增加一条
</el-button>
<el-button type="primary" @click="eidDialog = false">
关闭
</el-button>
</span>
</template>
</el-dialog>
<!-- 增加一条弹窗 -->
<el-dialog
v-model="addDialog"
title="等级奖励配置(新增)"
class="addBox"
center
width="26%"
>
<div class="inquire">
<span>奖品类型</span>
<el-select filterable v-model="addObj.giftVal" placeholder="请选择">
<el-option
v-for="item in addObj.giftType"
:key="item.id"
:label="item.desc"
:value="item.value"
>
</el-option>
</el-select>
</div>
<div class="inquire">
<span>用户身份</span>
<el-select filterable v-model="addObj.type" placeholder="请选择">
<el-option
v-for="item in addObj.typeArr"
:key="item.id"
:label="item.desc"
:value="item.value"
>
</el-option>
</el-select>
</div>
<div class="inquire">
<span>奖品ID/VIP等级:</span>
<el-input
v-model="addObj.giftId"
placeholder=""
class="input"
></el-input>
</div>
<div class="inquire">
<span>奖励数量/天数</span>
<el-input
v-model="addObj.giftNum"
placeholder=""
class="input"
></el-input>
</div>
<div class="inquire">
<span>库存</span>
<el-input
v-model="addObj.awardStock"
placeholder=""
class="input"
></el-input>
</div>
<div class="inquire">
<span>顺序:</span>
<el-input v-model="addObj.sNo" placeholder="" class="input"></el-input>
</div>
<div class="inquire">
<span>是否展示</span>
<el-select filterable v-model="addObj.showVal" placeholder="请选择">
<el-option
v-for="item in addObj.show"
:key="item.id"
:label="item.desc"
:value="item.value"
>
</el-option>
</el-select>
</div>
<div class="inquire">
<span>奖励图片</span>
<el-upload
class="avatar-uploader"
action="/admin/tencent/cos/upload/file"
:show-file-list="false"
:on-success="handleAvatarSuccess4"
:before-upload="beforeAvatarUpload"
:on-error="handleAvatarError"
>
<img v-if="addObj.imageUrl" :src="addObj.imageUrl" class="avatar" />
<el-icon v-else class="avatar-uploader-icon"><Plus /></el-icon>
</el-upload>
</div>
<template #footer>
<span class="dialog-footer">
<el-button type="primary" @click="addFun()"> 保存 </el-button>
<el-button type="primary" @click="addDialog = false">
取消
</el-button>
</span>
</template>
</el-dialog>
<!-- 编辑弹窗 -->
<el-dialog
v-model="editDialog"
title="等级奖励配置(编辑)"
class="addBox"
center
width="26%"
>
<div class="inquire">
<span>奖品类型</span>
<el-select filterable v-model="editObj.giftVal" placeholder="请选择">
<el-option
v-for="item in editObj.giftType"
:key="item.id"
:label="item.desc"
:value="item.value"
>
</el-option>
</el-select>
</div>
<div class="inquire">
<span>用户身份</span>
<el-select filterable v-model="editObj.type" placeholder="请选择">
<el-option
v-for="item in editObj.typeArr"
:key="item.id"
:label="item.desc"
:value="item.value"
>
</el-option>
</el-select>
</div>
<div class="inquire">
<span>奖品ID/VIP等级:</span>
<el-input
v-model="editObj.giftId"
placeholder=""
class="input"
></el-input>
</div>
<div class="inquire">
<span>奖励数量/天数</span>
<el-input
v-model="editObj.giftNum"
placeholder=""
class="input"
></el-input>
</div>
<div class="inquire">
<span>库存</span>
<el-input
v-model="editObj.awardStock"
placeholder=""
class="input"
></el-input>
</div>
<div class="inquire">
<span>顺序:</span>
<el-input v-model="editObj.sNo" placeholder="" class="input"></el-input>
</div>
<div class="inquire">
<span>是否展示</span>
<el-select filterable v-model="editObj.showVal" placeholder="请选择">
<el-option
v-for="item in editObj.show"
:key="item.id"
:label="item.desc"
:value="item.value"
>
</el-option>
</el-select>
</div>
<div class="inquire">
<span>奖励图片</span>
<el-upload
class="avatar-uploader"
action="/admin/tencent/cos/upload/file"
:show-file-list="false"
:on-success="handleAvatarSuccess5"
:before-upload="beforeAvatarUpload"
:on-error="handleAvatarError"
>
<img v-if="editObj.imageUrl" :src="editObj.imageUrl" class="avatar" />
<el-icon v-else class="avatar-uploader-icon"><Plus /></el-icon>
</el-upload>
</div>
<template #footer>
<span class="dialog-footer">
<el-button type="primary" @click="editSaveFun()"> 保存 </el-button>
<el-button type="primary" @click="editDialog = false">
取消
</el-button>
</span>
</template>
</el-dialog>
<!-- 编辑弹窗 -->
<el-dialog
v-model="eidDialogBox"
title="编辑"
class="addBox"
center
width="26%"
>
<div class="inquire">
<span>BOOM等级</span>
<el-input
v-model="eidObj.level"
placeholder=""
class="input"
disabled
></el-input>
</div>
<div class="inquire">
<span>金币任务数</span>
<el-input
v-model="eidObj.goldNum"
placeholder=""
class="input"
></el-input>
</div>
<div class="inquire">
<span style="float: left">等级图</span>
<el-upload
style="float: left"
class="avatar-uploader input"
action="/admin/tencent/cos/upload/file"
:show-file-list="false"
:on-success="handleAvatarSuccess1"
:before-upload="beforeAvatarUpload"
:on-error="handleAvatarError"
>
<img v-if="eidObj.imageUrl1" :src="eidObj.imageUrl1" class="avatar" />
<el-icon v-else class="avatar-uploader-icon">
<Plus />
</el-icon>
</el-upload>
</div>
<div class="inquire">
<span style="float: left">倒计时</span>
<el-upload
style="float: left; width: 200px; height: 150px"
class="avatar-uploader input"
action="/admin/tencent/cos/upload/file"
:show-file-list="false"
:on-success="handleAvatarSuccess2"
:before-upload="beforeAvatarUpload"
:on-error="handleAvatarError"
>
<video
v-if="eidObj.imageUrl2"
:key="eidObj.imageUrl2"
autoplay
width="320"
height="240"
controls="controls"
>
<source :src="eidObj.imageUrl2" type="video/mp4" />
</video>
</el-upload>
</div>
<div class="inquire">
<span style="float: left">Boom</span>
<el-upload
style="float: left; width: 200px; height: 150px"
class="avatar-uploader input"
action="/admin/tencent/cos/upload/file"
:show-file-list="false"
:on-success="handleAvatarSuccess3"
:before-upload="beforeAvatarUpload"
:on-error="handleAvatarError"
>
<video
v-if="eidObj.imageUrl3"
:key="eidObj.imageUrl3"
autoplay
width="320"
height="240"
controls="controls"
>
<source :src="eidObj.imageUrl3" type="video/mp4" />
</video>
</el-upload>
</div>
<template #footer>
<span class="dialog-footer">
<el-button type="primary" @click="levelUpdateFun()"> 保存 </el-button>
<el-button type="primary" @click="eidDialogBox = false">
取消
</el-button>
</span>
</template>
</el-dialog>
</div>
</template>
<script>
import {
levelList,
levelUpdate,
awardList,
awardUpdate,
awardDel,
} from "@/api/boom/boom";
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: undefined,
options: [],
},
// 表格
tableData: [],
// 内嵌表格查看
memberDialog: false,
member: {
level: "",
goldNum: "",
tableData: [],
},
// 内嵌表格编辑
eidDialog: false,
eid: {
tableData: [],
},
// 编辑弹窗
editDialog: false,
editObj: {
imageUrl: "",
giftVal: 8,
giftType: [
{ desc: "金币", value: 8 },
{ desc: "礼物", value: 6 },
{ desc: "座驾", value: 5 },
{ desc: "头饰", value: 1 },
{ desc: "气泡", value: 3 },
{ desc: "VIP", value: 10 },
{ desc: "勋章", value: 11 },
{ desc: "铭牌", value: 2 },
{ desc: "金豆", value: 13 },
],
type: "",
typeArr: [
{ desc: "固定身份", value: 1 },
{ desc: "随机身份", value: 2 },
],
giftId: "",
giftNum: "",
awardStock: "",
sNo: "",
showVal: "",
id: "",
show: [
{ desc: "是", value: 1 },
{ desc: "否", value: 0 },
],
},
// 新增弹窗
addDialog: false,
addObj: {
imageUrl: "",
giftVal: 8,
giftType: [
{ desc: "金币", value: 8 },
{ desc: "礼物", value: 6 },
{ desc: "座驾", value: 5 },
{ desc: "头饰", value: 1 },
{ desc: "气泡", value: 3 },
{ desc: "VIP", value: 10 },
{ desc: "勋章", value: 11 },
{ desc: "铭牌", value: 2 },
{ desc: "金豆", value: 13 },
],
type: "",
typeArr: [
{ desc: "固定身份", value: 1 },
{ desc: "随机身份", value: 2 },
],
giftId: "",
giftNum: "",
awardStock: "",
sNo: "",
showVal: "",
show: [
{ desc: "是", value: 1 },
{ desc: "否", value: 0 },
],
},
//编辑
eidDialogBox: false,
eidObj: {
level: "",
goldNum: "",
imageUrl1: "",
imageUrl2: "",
imageUrl3: "",
},
// 分页
total: 0, //总页数
currentPage: 1, //页码
pageSize: 5, //条数
};
},
methods: {
// 查询接口
getData() {
this.loading = true;
levelList({
partitionId: this.inquire.partitionId,
}).then((res) => {
if (res.code == 200) {
// this.total = res.data.total;
// this.tableData = res.data.records;
this.tableData = res.data;
this.loading = false;
} else {
ElMessage({
showClose: true,
message: res.message,
type: "error",
});
}
});
},
// 编辑弹窗
editFun(val) {
this.editObj.giftVal = val.awardType;
this.editObj.giftNum = val.awardNum;
this.editObj.giftId = val.awardId;
this.editObj.awardStock = val.awardStock;
this.editObj.sNo = val.seq;
this.editObj.showVal = val.isShow;
this.editObj.type = val.type;
this.editObj.imageUrl = val.awardPic;
this.editObj.id = val.id;
this.editDialog = true;
},
// 确认编辑弹窗
editSaveFun() {
var level = this.id;
var obj = {
awardType: this.editObj.giftVal,
awardNum: this.editObj.giftNum,
awardId: this.editObj.giftId,
awardStock: this.editObj.awardStock,
seq: this.editObj.sNo,
isShow: this.editObj.showVal,
type: this.editObj.type,
awardPic: this.editObj.imageUrl,
id: this.editObj.id,
partitionId: this.inquire.partitionId,
level,
};
awardUpdate(obj).then((res) => {
if (res.code == 200) {
this.editDialog = false;
awardList({
level,
partitionId: this.inquire.partitionId,
}).then((res) => {
this.eid.tableData = res.data;
ElMessage({
showClose: true,
message: "成功",
type: "success",
});
});
} else {
ElMessage({
showClose: true,
message: res.message,
type: "error",
});
}
});
},
// 新增
addFun() {
var level = this.id;
var obj = {
awardType: this.addObj.giftVal,
awardNum: this.addObj.giftNum,
awardId: this.addObj.giftId,
awardStock: this.addObj.awardStock,
seq: this.addObj.sNo,
isShow: this.addObj.showVal,
type: this.addObj.type,
awardPic: this.addObj.imageUrl,
partitionId: this.inquire.partitionId,
level,
};
awardUpdate(obj).then((res) => {
if (res.code == 200) {
this.addDialog = false;
awardList({
level,
partitionId: this.inquire.partitionId,
}).then((res) => {
this.eid.tableData = res.data;
ElMessage({
showClose: true,
message: "成功",
type: "success",
});
});
} else {
ElMessage({
showClose: true,
message: res.message,
type: "error",
});
}
});
},
// 删除
delFun(val) {
var level = this.id;
awardDel({
id: val.id,
}).then((res) => {
if (res.code == 200) {
awardList({
level,
partitionId: this.inquire.partitionId,
}).then((res) => {
this.eid.tableData = res.data;
ElMessage({
showClose: true,
message: "成功",
type: "success",
});
});
} else {
ElMessage({
showClose: true,
message: res.message,
type: "error",
});
}
});
},
// 查看明细
seeList(val) {
awardList({
level: val.level,
partitionId: this.inquire.partitionId,
}).then((res) => {
this.memberDialog = true;
this.member.tableData = res.data;
});
},
eidList(val) {
awardList({
level: val.level,
partitionId: this.inquire.partitionId,
}).then((res) => {
this.eidDialog = true;
this.eid.tableData = res.data;
});
},
// 编辑列表
levelUpdateFun() {
var obj = {
id: this.id,
level: this.eidObj.level,
goldNum: this.eidObj.goldNum,
pic: this.eidObj.imageUrl1,
countDownVapUrl: this.eidObj.imageUrl2,
endVapUrl: this.eidObj.imageUrl3,
partition: this.inquire.partitionId,
};
levelUpdate(obj).then((res) => {
if (res.code == 200) {
ElMessage({
showClose: true,
message: "编辑成功!",
type: "success",
});
this.eidDialogBox = false;
this.getData();
} else {
ElMessage({
showClose: true,
message: res.success,
type: "error",
});
}
});
},
beforeAvatarUpload() {
ElMessage({
showClose: true,
message: "上传中,可能较慢,请等待上穿成功的提示在操作下一步~",
type: "warning",
});
},
handleAvatarError() {
ElMessage({
showClose: true,
message: "上传失败!",
type: "error",
});
},
handleAvatarSuccess1(res, file) {
console.log(file);
// this.ediObj.imageUrl = URL.createObjectURL();
this.eidObj.imageUrl1 = res.data;
ElMessage({
showClose: true,
message: "上传成功!",
type: "success",
});
},
handleAvatarSuccess2(res, file) {
console.log(file);
// this.ediObj.imageUrl = URL.createObjectURL();
this.eidObj.imageUrl2 = res.data;
ElMessage({
showClose: true,
message: "上传成功!",
type: "success",
});
},
handleAvatarSuccess3(res, file) {
console.log(file);
// this.ediObj.imageUrl = URL.createObjectURL();
this.eidObj.imageUrl3 = res.data;
ElMessage({
showClose: true,
message: "上传成功!",
type: "success",
});
},
handleAvatarSuccess4(res, file) {
console.log(file);
// this.ediObj.imageUrl = URL.createObjectURL();
this.addObj.imageUrl = res.data;
ElMessage({
showClose: true,
message: "上传成功!",
type: "success",
});
},
handleAvatarSuccess5(res, file) {
console.log(file);
// this.ediObj.imageUrl = URL.createObjectURL();
this.editObj.imageUrl = res.data;
ElMessage({
showClose: true,
message: "上传成功!",
type: "success",
});
},
// 分页导航
handleSizeChange() {
this.getData();
},
handleCurrentChange() {
this.getData();
},
},
};
</script>
<style lang="less" scoped>
.box {
padding-top: 20px;
background: #ecf0f5;
.inquire {
display: inline-block;
margin-right: 20px;
margin-bottom: 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;
}
.addBox {
.el-dialog__body {
.inquire {
span {
margin-right: 10px;
width: 113px;
display: inline-block;
}
.input {
width: 180px;
margin-right: 10px;
}
}
}
}
</style>

View File

@@ -1,410 +0,0 @@
<template>
<div class="box">
<!-- 查询 -->
<div class="inquire">
<span>分区</span>
<partition-select v-model:partition-id="inquire.partitionId" v-model:partition-infos="inquire.options" />
</div>
<div class="inquire">
<span>房间ID:</span>
<el-input
v-model="inquire.roomId"
placeholder=""
class="input"
></el-input>
</div>
<div class="inquire">
<span>BOOM等级:</span>
<el-input
v-model="inquire.boomLevel"
placeholder=""
class="input"
></el-input>
</div>
<div class="inquire">
<span>触发者ID</span>
<el-input
v-model="inquire.triggererId"
placeholder=""
class="input"
></el-input>
</div>
<div class="inquire">
<div class="block">
<span class="demonstration">开始时间</span>
<el-date-picker
v-model="inquire.time[0]"
type="datetime"
placeholder="开始时间"
>
</el-date-picker>
</div>
</div>
<div class="inquire">
<div class="block">
<span class="demonstration">结束时间</span>
<el-date-picker
v-model="inquire.time[1]"
type="datetime"
placeholder="结束时间"
>
</el-date-picker>
</div>
</div>
<!-- 查询按钮 -->
<el-button class="primary but" type="primary" @click="getData()"
>查询</el-button
>
<el-button
class="primary"
type="primary"
@click="
inquire.partitionId = inquire.options[0].id;
inquire.roomId = '';
inquire.boomLevel = '';
inquire.triggererId = '';
inquire.time = [];
getData();
"
>重置查询</el-button
>
<el-button
class="primary"
type="primary"
@click="diamondStatisticsExportFun()"
>导出</el-button
>
<!-- 表格 -->
<el-table
v-loading="loading"
:data="tableData"
border
style="width: 100%; margin-top: 25px"
>
<el-table-column prop="cycleDate" align="center" label="日期" />
<el-table-column prop="roomErbanNo" align="center" label="房间ID" />
<el-table-column prop="level" align="center" label="Boom等级" />
<el-table-column prop="erbanNo" align="center" label="触发者ID" />
<el-table-column prop="drawTime" align="center" label="触发时间" />
<el-table-column prop="num" align="center" label="参与用户数" />
<el-table-column prop="awardNum" align="center" label="发放奖励数" />
<el-table-column prop="ownerGold" align="center" label="获得金币数" />
<el-table-column align="center" label="操作" width="300">
<template v-slot="scope">
<el-button
@click="
memberVal = scope.row;
detailListFun();
"
type="text"
size="default"
>贡献及获奖明细</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-loading="loading2"
v-model="memberDialog"
title="贡献或获奖明细"
center
>
<!-- 内嵌表格 -->
<el-table
:data="member.tableData"
border
style="width: 100%; margin-top: 25px"
>
<el-table-column prop="roleType" align="center" label="角色">
<template v-slot="scope">
{{
scope.row.roleType == 1
? "房主"
: scope.row.roleType == 2
? "贡献榜1"
: scope.row.roleType == 3
? "贡献榜2"
: scope.row.roleType == 4
? "贡献榜3"
: scope.row.roleType == 5
? "boom触发者"
: scope.row.roleType == 6
? "房内普通用户"
: ""
}}
</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="exper" align="center" label="贡献值" />
<el-table-column prop="level" align="center" label="Boom等级" />
<el-table-column prop="awardType" align="center" label="奖品类型">
<template v-slot="scope">
{{
scope.row.awardType == 8
? "金币"
: scope.row.awardType == 6
? "礼物"
: scope.row.awardType == 5
? "座驾"
: scope.row.awardType == 1
? "头饰"
: scope.row.awardType == 3
? "气泡"
: scope.row.awardType == 10
? "VIP"
: scope.row.awardType == 11
? "勋章"
: scope.row.awardType == 13
? "金豆"
: "铭牌"
}}
</template>
</el-table-column>
<el-table-column prop="awardName" align="center" label="获得奖励" />
<el-table-column prop="awardNum" 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"
v-model:current-page="currentPage2"
v-model:page-size="pageSize2"
:page-sizes="[10, 20, 30, 40, 50, 100, 200, 300, 400, 500, 999999999]"
layout="sizes, prev, pager, next"
:total="total2"
@size-change="handleSizeChange2"
@current-change="handleCurrentChange2"
/>
<template #footer>
<span class="dialog-footer">
<el-button type="primary" @click="memberDialog = false">
关闭
</el-button>
</span>
</template>
</el-dialog>
</div>
</template>
<script>
import {
recordList,
detailList,
recordExport,
} 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: "recordData",
components: {PartitionSelect},
data() {
return {
loading: false,
loading2: false,
//查询所需条件对象
inquire: {
partitionId: undefined,
options: [],
roomId: "",
boomLevel: "",
triggererId: "",
time: [],
},
// 表格
tableData: [],
// 内嵌表格
memberDialog: false,
memberVal: null,
member: {
tableData: [],
},
// 新增弹窗
addDialog: false,
// 分页
total: 0, //总页数
currentPage: 1, //页码
pageSize: 10, //条数
// 分页
total2: 0, //总页数
currentPage2: 1, //页码
pageSize2: 10, //条数
};
},
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;
}
recordList({
partitionId: this.inquire.partitionId,
erbanNo: this.inquire.triggererId,
level: this.inquire.boomLevel,
roomErbanNo: this.inquire.roomId,
startTime: startTime,
endTime: endTime,
pageNo: this.currentPage,
pageSize: this.pageSize,
}).then((res) => {
if (res.code == 200) {
this.total = res.data.total;
this.tableData = res.data.records;
this.loading = false;
} else {
ElMessage({
showClose: true,
message: res.message,
type: "error",
});
}
});
},
// 详细弹窗
detailListFun() {
this.loading2 = 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;
}
detailList({
partitionId: this.inquire.partitionId,
signId: this.memberVal.signId,
level: this.memberVal.level,
startTime: startTime,
endTime: endTime,
pageNo: this.currentPage2,
pageSize: this.pageSize2,
}).then((res) => {
if (res.code == 200) {
this.total2 = res.data.total;
this.member.tableData = res.data.records;
this.memberDialog = true;
this.loading2 = false;
} else {
ElMessage({
showClose: true,
message: res.message,
type: "error",
});
}
});
},
diamondStatisticsExportFun() {
let time = this.inquire.time;
let startTime = "";
let endTime = "";
if (time.length > 0) {
startTime = this.inquire.time[0]
? dateFormat(this.inquire.time[0], "yyyy-MM-dd hh:mm:ss")
: "";
endTime = this.inquire.time[1]
? dateFormat(this.inquire.time[1], "yyyy-MM-dd hh:mm:ss")
: "";
}
recordExport({
partitionId: this.inquire.partitionId,
erbanNo: this.inquire.triggererId,
level: this.inquire.boomLevel,
roomErbanNo: this.inquire.roomId,
startTime: startTime,
endTime: endTime,
}).then();
},
convertTimestamp (time) {
let date = new Date(time);
return date.format("yyyy-MM-dd hh:mm:ss");
},
// 分页详情导航
handleSizeChange2() {
this.detailListFun();
},
handleCurrentChange2() {
this.detailListFun();
},
// 分页导航
handleSizeChange() {
this.getData();
},
handleCurrentChange() {
this.getData();
},
},
};
</script>
<style lang="less" scoped>
.box {
padding-top: 20px;
background: #ecf0f5;
.inquire {
display: inline-block;
margin-right: 20px;
margin-bottom: 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>

View File

@@ -1,182 +0,0 @@
<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>

View File

@@ -1,121 +0,0 @@
<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>

View File

@@ -1,236 +0,0 @@
<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>

View File

@@ -1,255 +0,0 @@
<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>

View File

@@ -1,122 +0,0 @@
<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>

View File

@@ -1,552 +0,0 @@
<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

File diff suppressed because it is too large Load Diff

View File

@@ -1,108 +0,0 @@
<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>

View File

@@ -1,125 +0,0 @@
<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>

View File

@@ -1,403 +0,0 @@
<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>

View File

@@ -1,375 +0,0 @@
<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>

View File

@@ -1,398 +0,0 @@
<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>

View File

@@ -1,260 +0,0 @@
<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>

Some files were not shown because too many files have changed in this diff Show More