From a3ddb3673f36d562ba05efad5d02220a20bcf0d8 Mon Sep 17 00:00:00 2001 From: yulixing Date: Mon, 27 May 2019 19:57:22 +0800 Subject: [PATCH] =?UTF-8?q?=E6=B8=B8=E6=88=8F=E8=AF=A6=E6=83=85=E9=A1=B5?= =?UTF-8?q?=E6=94=B9=E7=89=88=20=20=E5=B9=B3=E5=8F=B0=E7=AE=A1=E7=90=86?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/api/platforms.js | 25 + src/icons/svg/close.svg | 1 + src/router/modules/games.js | 6 + src/utils/request.js | 117 ++--- src/views/games/details/info.del.vue | 282 ++++++++++++ src/views/games/details/info.vue | 508 +++++++++++---------- src/views/games/details/settings/index.vue | 34 +- src/views/games/platforms.vue | 183 ++++++++ 8 files changed, 859 insertions(+), 297 deletions(-) create mode 100644 src/api/platforms.js create mode 100644 src/icons/svg/close.svg create mode 100644 src/views/games/details/info.del.vue create mode 100644 src/views/games/platforms.vue diff --git a/src/api/platforms.js b/src/api/platforms.js new file mode 100644 index 0000000..e1a3c87 --- /dev/null +++ b/src/api/platforms.js @@ -0,0 +1,25 @@ +import request from '@/utils/request' + +export function getPlatformList() { + return request({ + url: '/games/platforms/list', + method: 'get' + }) +} + +export function savePlatform(data) { + return request({ + url: '/games/platforms/save', + method: 'post', + data + }) +} + +export function editPlatform(data) { + return request({ + url: '/games/platforms/edit', + method: 'post', + data + }) +} + diff --git a/src/icons/svg/close.svg b/src/icons/svg/close.svg new file mode 100644 index 0000000..d43b646 --- /dev/null +++ b/src/icons/svg/close.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/router/modules/games.js b/src/router/modules/games.js index 0d1727c..17109b7 100644 --- a/src/router/modules/games.js +++ b/src/router/modules/games.js @@ -24,6 +24,12 @@ const gamesRouter = { name: 'GameSettings', meta: { title: '配置项管理' } }, + { + path: 'platforms', + component: () => import('@/views/games/platforms'), // Parent router-view + name: 'GamePlatforms', + meta: { title: '平台管理' } + }, { path: 'details/:uid?', component: () => import('@/views/games/details/index'), // Parent router-view diff --git a/src/utils/request.js b/src/utils/request.js index 6c186b1..f1e6096 100644 --- a/src/utils/request.js +++ b/src/utils/request.js @@ -28,60 +28,73 @@ service.interceptors.request.use( } ) -// // response interceptor -// service.interceptors.response.use( -// /** -// * If you want to get http information such as headers or status -// * Please return response => response -// */ +// response interceptor +service.interceptors.response.use( + /** + * If you want to get http information such as headers or status + * Please return response => response + */ -// /** -// * Determine the request status by custom code -// * Here is just an example -// * You can also judge the status by HTTP Status Code -// */ -// response => { -// const res = response.data + /** + * Determine the request status by custom code + * Here is just an example + * You can also judge the status by HTTP Status Code + */ + response => { + const { data } = response -// // if the custom code is not 20000, it is judged as an error. -// if (res.code !== 20000) { -// Message({ -// message: res.message || 'error', -// type: 'error', -// duration: 5 * 1000 -// }) + if (data.errcode !== 0) { + Message({ + message: data.errmsg || 'error', + type: 'error', + duration: 5 * 1000 + }) + return Promise.reject(data.errmsg || 'error') + } else { + return response + } -// // 50008: Illegal token; 50012: Other clients logged in; 50014: Token expired; -// if (res.code === 50008 || res.code === 50012 || res.code === 50014) { -// // to re-login -// MessageBox.confirm( -// 'You have been logged out, you can cancel to stay on this page, or log in again', -// 'Confirm logout', -// { -// confirmButtonText: 'Re-Login', -// cancelButtonText: 'Cancel', -// type: 'warning' -// } -// ).then(() => { -// store.dispatch('user/resetToken').then(() => { -// location.reload() -// }) -// }) -// } -// return Promise.reject(res.message || 'error') -// } else { -// return res -// } -// }, -// error => { -// console.log('err' + error) // for debug -// Message({ -// message: error.message, -// type: 'error', -// duration: 5 * 1000 -// }) -// return Promise.reject(error) -// } -// ) + // const res = response.data + + // if the custom code is not 20000, it is judged as an error. + // if (res.code !== 20000) { + // Message({ + // message: res.message || 'error', + // type: 'error', + // duration: 5 * 1000 + // }) + + // // 50008: Illegal token; 50012: Other clients logged in; 50014: Token expired; + // if (res.code === 50008 || res.code === 50012 || res.code === 50014) { + // // to re-login + // MessageBox.confirm( + // 'You have been logged out, you can cancel to stay on this page, or log in again', + // 'Confirm logout', + // { + // confirmButtonText: 'Re-Login', + // cancelButtonText: 'Cancel', + // type: 'warning' + // } + // ).then(() => { + // store.dispatch('user/resetToken').then(() => { + // location.reload() + // }) + // }) + // } + // return Promise.reject(res.message || 'error') + // } else { + // return res + // } + }, + error => { + console.log('err' + error) // for debug + Message({ + message: error.message, + type: 'error', + duration: 5 * 1000 + }) + return Promise.reject(error) + } +) export default service diff --git a/src/views/games/details/info.del.vue b/src/views/games/details/info.del.vue new file mode 100644 index 0000000..b59125d --- /dev/null +++ b/src/views/games/details/info.del.vue @@ -0,0 +1,282 @@ + + + diff --git a/src/views/games/details/info.vue b/src/views/games/details/info.vue index b59125d..1d27e4f 100644 --- a/src/views/games/details/info.vue +++ b/src/views/games/details/info.vue @@ -1,118 +1,179 @@ + + + diff --git a/src/views/games/details/settings/index.vue b/src/views/games/details/settings/index.vue index 347d6cf..bb2cfd0 100644 --- a/src/views/games/details/settings/index.vue +++ b/src/views/games/details/settings/index.vue @@ -1,6 +1,6 @@ @@ -20,6 +27,9 @@ export default { return { changed: false, active: 'normal', + modalVisible: false, + activeName: '', + oldActiveName: '', } }, components: { @@ -28,26 +38,26 @@ export default { methods: { handleLeave(activeName, oldActiveName) { if (this.changed) { - this.$confirm('配置项已修改未保存,是否离开', '提示', { - confirmButtonText: '确定', - cancelButtonText: '取消', - type: 'warning' - }) - .then(() => {}) - .catch(() => { - return false - }) + this.modalVisible = true + this.activeName = activeName + this.oldActiveName = oldActiveName + return false } }, handleChange(val) { this.changed = val }, openModal() { - this.modaleVisible = true + this.modalVisible = true }, closeModal() { - this.modaleVisible = false + this.modalVisible = false }, + switchTab() { + this.changed = false + this.active = this.activeName + this.modalVisible = false + } } } diff --git a/src/views/games/platforms.vue b/src/views/games/platforms.vue new file mode 100644 index 0000000..fd6e0d1 --- /dev/null +++ b/src/views/games/platforms.vue @@ -0,0 +1,183 @@ + + +