diff --git a/src/api/planet.js b/src/api/planet.js
index 469e245..01d2993 100644
--- a/src/api/planet.js
+++ b/src/api/planet.js
@@ -68,4 +68,15 @@ export const planetLandmarkPage = (params) => getRequest(`${PREFIX}/landmark/pag
export const planetLandmarkSave = (params) => postBodyRequest(`${PREFIX}/landmark/save`, params);
export const planetLandmarkDelete = (id) => postRequest(`${PREFIX}/landmark/delete`, { id });
+export const planetCollegePage = (params) => getRequest(`${PREFIX}/college/page`, params);
+export const planetCollegeSave = (params) => postBodyRequest(`${PREFIX}/college/save`, params);
+export const planetCollegeDelete = (id) => postRequest(`${PREFIX}/college/delete`, { id });
+
export const planetEconomyPage = (params) => getRequest(`${PREFIX}/economy/page`, params);
+
+// ---------------- 学院助推赛 ----------------
+export const planetAdventureEventPage = (params) => getRequest(`${PREFIX}/adventure/event/page`, params);
+export const planetAdventureEventSave = (params) => postBodyRequest(`${PREFIX}/adventure/event/save`, params);
+export const planetAdventureEventDelete = (id) => postRequest(`${PREFIX}/adventure/event/delete`, { id });
+export const planetAdventureRankPage = (params) => getRequest(`${PREFIX}/adventure/rank/page`, params);
+export const planetAdventureSessionPage = (params) => getRequest(`${PREFIX}/adventure/session/page`, params);
diff --git a/src/views/app/business/luckey/luckey.vue b/src/views/app/business/luckey/luckey.vue
index 962ebd5..0732081 100644
--- a/src/views/app/business/luckey/luckey.vue
+++ b/src/views/app/business/luckey/luckey.vue
@@ -89,6 +89,14 @@
@on-change="p => changePage('landmark', p)" size="small" show-total>
+
+
+
+
+ changePage('college', p)" size="small" show-total>
+
+
@@ -97,6 +105,29 @@
+
+
+
+
+ changePage('adventureEvent', p)" size="small" show-total>
+
+
+
+
+
+ changePage('adventureRank', p)" size="small" show-total>
+
+
+
+
+
+ changePage('adventureSession', p)" size="small" show-total>
+
+
+
@@ -306,6 +337,29 @@
+
+
+
+
+
+
+
+
@@ -324,7 +378,10 @@
planetSearchPage, planetSearchSave, planetSearchDelete,
planetStaminaPage, planetStaminaSave, planetStaminaDelete,
planetLandmarkPage, planetLandmarkSave, planetLandmarkDelete,
- planetEconomyPage
+ planetCollegePage, planetCollegeSave, planetCollegeDelete,
+ planetEconomyPage,
+ planetAdventureEventPage, planetAdventureEventSave, planetAdventureEventDelete,
+ planetAdventureRankPage, planetAdventureSessionPage
} from '@/api/planet';
export default {
@@ -347,7 +404,11 @@
search: { loading: false, data: [], total: 0, pageNumber: 1, pageSize: 10 },
stamina: { loading: false, data: [], total: 0, pageNumber: 1, pageSize: 10 },
landmark: { loading: false, data: [], total: 0, pageNumber: 1, pageSize: 10 },
+ college: { loading: false, data: [], total: 0, pageNumber: 1, pageSize: 10 },
economy: { loading: false, data: [], total: 0, pageNumber: 1, pageSize: 10 },
+ adventureEvent: { loading: false, data: [], total: 0, pageNumber: 1, pageSize: 10 },
+ adventureRank: { loading: false, data: [], total: 0, pageNumber: 1, pageSize: 10 },
+ adventureSession: { loading: false, data: [], total: 0, pageNumber: 1, pageSize: 10 },
// 弹窗
poolModal: false,
poolForm: {},
@@ -364,12 +425,14 @@
newsForm: {},
operateModal: false,
operateType: '',
- operateForm: {}
+ operateForm: {},
+ adventureEventModal: false,
+ adventureEventForm: {}
}
},
computed: {
operateTitle() {
- const map = { tree: '券树周期', warehouse: '仓库等级', tower: '防御塔等级', search: '搜查规则', stamina: '体力道具', landmark: '校园地标' }
+ const map = { tree: '券树周期', warehouse: '仓库等级', tower: '防御塔等级', search: '搜查规则', stamina: '体力道具', landmark: '校园地标', college: '学院配置' }
return (this.operateForm.id ? '编辑' : '新增') + (map[this.operateType] || '经营配置')
},
operateFields() {
@@ -432,6 +495,14 @@
{ key: 'settleTime', label: '结算时间' },
{ key: 'sort', label: '排序', type: 'number' },
{ key: 'enabled', label: '是否启用', type: 'switch' }
+ ],
+ college: [
+ { key: 'collegeName', label: '学院名称' },
+ { key: 'shortName', label: '简称' },
+ { key: 'icon', label: '图标/Emoji' },
+ { key: 'themeColor', label: '主题色' },
+ { key: 'sort', label: '排序', type: 'number' },
+ { key: 'enabled', label: '是否启用', type: 'switch' }
]
}
return fields[this.operateType] || []
@@ -644,6 +715,17 @@
this.operateActionColumn('landmark')
]
},
+ collegeColumns() {
+ return [
+ { title: '学院名称', key: 'collegeName', minWidth: 150 },
+ { title: '简称', key: 'shortName', width: 100 },
+ { title: '图标', key: 'icon', width: 90 },
+ { title: '主题色', key: 'themeColor', width: 100 },
+ { title: '排序', key: 'sort', width: 80 },
+ { title: '启用', width: 70, render: (h, p) => this.enabledTag(h, p.row.enabled) },
+ this.operateActionColumn('college')
+ ]
+ },
economyColumns() {
return [
{ title: '日期', key: 'auditDate', width: 120 },
@@ -656,6 +738,46 @@
{ title: '活跃持券用户', key: 'activeUserCount', width: 120 },
{ title: '预警', width: 80, render: (h, p) => h('Tag', { props: { color: p.row.warning === 1 ? 'red' : 'green' } }, p.row.warning === 1 ? '净增' : '平衡') }
]
+ },
+ adventureEventColumns() {
+ return [
+ { title: '日期', key: 'eventDate', width: 120 },
+ { title: '类型', key: 'eventType', width: 130 },
+ { title: '名称', key: 'name', minWidth: 130 },
+ { title: '描述', key: 'description', minWidth: 180 },
+ { title: '效果值', key: 'effectValue', width: 90 },
+ { title: '启用', width: 70, render: (h, p) => this.enabledTag(h, p.row.enabled) },
+ { title: '操作', width: 150, align: 'center', render: (h, p) => h('div', [
+ h('Button', { props: { type: 'text', size: 'small' }, on: { click: () => this.openAdventureEvent(p.row) } }, '编辑'),
+ h('Button', { props: { type: 'text', size: 'small' }, style: { color: '#ed4014' }, on: { click: () => this.delAdventureEvent(p.row) } }, '删除')
+ ]) }
+ ]
+ },
+ adventureRankColumns() {
+ return [
+ { title: '日期', key: 'rankDate', width: 120 },
+ { title: '名次', key: 'rankNo', width: 80 },
+ { title: '昵称', key: 'nickname', minWidth: 120 },
+ { title: '学院', key: 'college', minWidth: 120 },
+ { title: '分数', key: 'score', width: 90 },
+ { title: '次数', key: 'playCount', width: 80 },
+ { title: '奖励券', key: 'rewardTickets', width: 90 },
+ { title: '称号', key: 'titleName', width: 120 },
+ { title: '结算', width: 80, render: (h, p) => h('Tag', { props: { color: p.row.settled === 1 ? 'green' : 'orange' } }, p.row.settled === 1 ? '已结算' : '未结算') }
+ ]
+ },
+ adventureSessionColumns() {
+ return [
+ { title: '用户', key: 'nickname', minWidth: 120 },
+ { title: '日期', key: 'playDate', width: 120 },
+ { title: '分数', key: 'score', width: 90 },
+ { title: '耗时', key: 'durationSeconds', width: 80 },
+ { title: '免费局', width: 80, render: (h, p) => h('span', p.row.freeUsed === 1 ? '是' : '否') },
+ { title: '扣券', key: 'costTickets', width: 80 },
+ { title: '异常', width: 80, render: (h, p) => h('Tag', { props: { color: p.row.cheatFlag === 'Y' ? 'red' : 'green' } }, p.row.cheatFlag === 'Y' ? '异常' : '正常') },
+ { title: '原因', key: 'cheatReason', minWidth: 160 },
+ { title: '时间', key: 'createTime', minWidth: 160 }
+ ]
}
},
mounted() {
@@ -689,7 +811,8 @@
draw: this.loadDraw, winner: this.loadWinner,
tree: this.loadTree, warehouse: this.loadWarehouse, tower: this.loadTower,
search: this.loadSearch, stamina: this.loadStamina, landmark: this.loadLandmark,
- economy: this.loadEconomy
+ college: this.loadCollege, economy: this.loadEconomy, adventureEvent: this.loadAdventureEvent,
+ adventureRank: this.loadAdventureRank, adventureSession: this.loadAdventureSession
}
map[name] && map[name]()
},
@@ -749,7 +872,11 @@
loadSearch() { if (!this.guardRegion('search')) return; this.search.loading = true; planetSearchPage(this.baseParams('search')).then(r => this.fill('search', r)) },
loadStamina() { if (!this.guardRegion('stamina')) return; this.stamina.loading = true; planetStaminaPage(this.baseParams('stamina')).then(r => this.fill('stamina', r)) },
loadLandmark() { if (!this.guardRegion('landmark')) return; this.landmark.loading = true; planetLandmarkPage(this.baseParams('landmark')).then(r => this.fill('landmark', r)) },
+ loadCollege() { if (!this.guardRegion('college')) return; this.college.loading = true; planetCollegePage(this.baseParams('college')).then(r => this.fill('college', r)) },
loadEconomy() { if (!this.guardRegion('economy')) return; this.economy.loading = true; planetEconomyPage(this.baseParams('economy')).then(r => this.fill('economy', r)) },
+ loadAdventureEvent() { if (!this.guardRegion('adventureEvent')) return; this.adventureEvent.loading = true; planetAdventureEventPage(this.baseParams('adventureEvent')).then(r => this.fill('adventureEvent', r)) },
+ loadAdventureRank() { if (!this.guardRegion('adventureRank')) return; this.adventureRank.loading = true; planetAdventureRankPage(this.baseParams('adventureRank')).then(r => this.fill('adventureRank', r)) },
+ loadAdventureSession() { if (!this.guardRegion('adventureSession')) return; this.adventureSession.loading = true; planetAdventureSessionPage(this.baseParams('adventureSession')).then(r => this.fill('adventureSession', r)) },
// ---- 奖池 ----
openPool(row) {
this.poolForm = row ? Object.assign({}, row) : { regionId: this.regionId || '', poolAmount: 88.88, status: 0 }
@@ -865,7 +992,8 @@
tower: { save: planetTowerSave, del: planetTowerDelete, load: this.loadTower, defaults: { level: 1, interceptRate: 5, damage: 5, counterRate: 2, upgradeCost: 10, enabled: 1 } },
search: { save: planetSearchSave, del: planetSearchDelete, load: this.loadSearch, defaults: { dailyLimit: 3, staminaCost: 30, minGain: 1, maxGain: 3, targetBalanceRate: 0.1, dailyGainLimit: 8, targetProtectMinutes: 30, enabled: 1 } },
stamina: { save: planetStaminaSave, del: planetStaminaDelete, load: this.loadStamina, defaults: { name: '松果能量', recoverStamina: 30, costTickets: 2, dailyBuyLimit: 2, sort: 0, enabled: 1 } },
- landmark: { save: planetLandmarkSave, del: planetLandmarkDelete, load: this.loadLandmark, defaults: { name: '图书馆', icon: 'LIB', benefitType: 'ticket', benefitValue: 5, dailyOutputLimit: 5, openStartTime: '08:00', openEndTime: '22:00', settleTime: '22:00', sort: 0, enabled: 1 } }
+ landmark: { save: planetLandmarkSave, del: planetLandmarkDelete, load: this.loadLandmark, defaults: { name: '图书馆', icon: 'LIB', benefitType: 'ticket', benefitValue: 5, dailyOutputLimit: 5, openStartTime: '08:00', openEndTime: '22:00', settleTime: '22:00', sort: 0, enabled: 1 } },
+ college: { save: planetCollegeSave, del: planetCollegeDelete, load: this.loadCollege, defaults: { collegeName: '计算机学院', shortName: '计院', icon: '💻', themeColor: '#4FB7FF', sort: 0, enabled: 1 } }
}[type]
},
openOperate(type, row) {
@@ -894,6 +1022,28 @@
onOk: () => api.del(row.id).then(() => { this.$Message.success('删除成功'); api.load() })
})
},
+ openAdventureEvent(row) {
+ this.adventureEventForm = row ? Object.assign({}, row) : { regionId: this.regionId || '', eventDate: new Date(), eventType: 'harvest', name: '松子丰收日', description: '普通松子出现更多', effectValue: 1, enabled: 1 }
+ this.adventureEventModal = true
+ },
+ saveAdventureEvent() {
+ const form = Object.assign({}, this.adventureEventForm)
+ if (form.eventDate instanceof Date) {
+ const p = n => (n < 10 ? '0' + n : n)
+ form.eventDate = `${form.eventDate.getFullYear()}-${p(form.eventDate.getMonth() + 1)}-${p(form.eventDate.getDate())}`
+ }
+ planetAdventureEventSave(form).then(r => {
+ if (r && r.success) { this.$Message.success('保存成功'); this.adventureEventModal = false; this.loadAdventureEvent() }
+ else { this.$Message.error((r && r.message) || '保存失败') }
+ })
+ },
+ delAdventureEvent(row) {
+ this.$Modal.confirm({
+ title: '确认删除',
+ content: '确认删除该每日宇宙事件?',
+ onOk: () => planetAdventureEventDelete(row.id).then(() => { this.$Message.success('删除成功'); this.loadAdventureEvent() })
+ })
+ },
fmt(d) {
const p = n => (n < 10 ? '0' + n : n)
return `${d.getFullYear()}-${p(d.getMonth() + 1)}-${p(d.getDate())} ${p(d.getHours())}:${p(d.getMinutes())}:${p(d.getSeconds())}`
diff --git a/vue.config.js b/vue.config.js
index d96c1d5..d794016 100644
--- a/vue.config.js
+++ b/vue.config.js
@@ -7,8 +7,8 @@ module.exports = {
port: 8889,
proxy: {
'/hiver': {
- target: 'https://hbkuaishi.com', // 正式1
- // target: 'http://192.168.100.32:8888', // 本地
+ //target: 'https://hbkuaishi.com', // 正式1
+ target: 'http://127.0.0.1:8888', // 本地
// target: 'https://storage.xenjoyou.com', // 测试
ws: false
},