From ba83dcb6669986660d1a9f55282d618c50855d18 Mon Sep 17 00:00:00 2001 From: Dong Xia Date: Thu, 31 Oct 2024 10:06:41 +0800 Subject: [PATCH 1/2] =?UTF-8?q?=E9=99=90=E5=88=B6=E6=9C=AA=E5=9C=A8?= =?UTF-8?q?=E7=BA=BF=E8=8A=82=E7=82=B9=E4=B8=8D=E5=8F=AF=E8=BF=9B=E8=A1=8C?= =?UTF-8?q?=E8=8A=82=E7=82=B9=E8=AF=A6=E6=83=85?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../repository/package/pkgInstallInfo.vue | 22 +++++++++++++++++++ src/router/route-menu.js | 5 ++++- vue.config.js | 4 ++-- 3 files changed, 28 insertions(+), 3 deletions(-) diff --git a/src/pages/repository/package/pkgInstallInfo.vue b/src/pages/repository/package/pkgInstallInfo.vue index a4002dc..b4ce97a 100644 --- a/src/pages/repository/package/pkgInstallInfo.vue +++ b/src/pages/repository/package/pkgInstallInfo.vue @@ -8,6 +8,9 @@ :row-key="(record, index) => record.id" :pagination="false" > + @@ -39,6 +42,7 @@ export default { }, async mounted() { await this.getPkgInstallInfo() + this.getAllNodeStatus() }, methods: { getPkgInstallInfo() { @@ -60,6 +64,24 @@ export default { // 打开对应的节点管理页面,若节点不在线则只跳转到节点列表 this.$store.commit('SET_OPEN_NODE', row) this.$router.push('/node/list') + }, + // 查询对应节点状态,设置能否跳转 + getAllNodeStatus() { + let promiseList = [] + this.packageList.forEach(item => { + const p = getNodeStatus(item.id).then(res => { + if (res.code === 200) { + // 主机在线 + item.disabled = false + } else { + item.disabled = true + } + }) + promiseList.push(p) + }) + Promise.all(promiseList).then(() => { + this.packageList = [...this.packageList] + }) } } } diff --git a/src/router/route-menu.js b/src/router/route-menu.js index 34478b1..dfdbf57 100644 --- a/src/router/route-menu.js +++ b/src/router/route-menu.js @@ -5,11 +5,14 @@ */ const routeMenuMap = { 'nodeList': '/node/list', + 'nodeGroupManager': '/node/nodeGroupManager', 'audit': '/audit/list', 'user': '/user/list', 'repository_source': '/repository/source', 'repository_package': '/repository/package', - 'nodeGroupManager': '/node/nodeGroupManager' + 'manageScript': '/script/script', + 'manageCommand': '/script/command', + 'upgrade': '/upgrade/list' } export default routeMenuMap diff --git a/vue.config.js b/vue.config.js index d06955d..335437a 100644 --- a/vue.config.js +++ b/vue.config.js @@ -16,11 +16,11 @@ module.exports = { pluginOptions: { // electron构建时的插件 electronBuilder: { - // nodeIntegration: true, + nodeIntegration: true, builderOptions: { productName: 'mpms-system', electronDownload: { - mirror: 'http://172.30.31.77:8080/uploadfiles/electron/', + // mirror: 'http://172.30.31.77:8080/uploadfiles/electron/', customDir: 'v13.6.9' } }, -- Gitee From df6201600c254a1710ece4034bb6ddcf62e6155c Mon Sep 17 00:00:00 2001 From: Dong Xia Date: Thu, 31 Oct 2024 10:08:56 +0800 Subject: [PATCH 2/2] =?UTF-8?q?=E5=AE=8C=E6=88=90=E9=99=90=E5=88=B6?= =?UTF-8?q?=E6=9C=AA=E5=9C=A8=E7=BA=BF=E8=8A=82=E7=82=B9=E8=BF=9B=E5=85=A5?= =?UTF-8?q?=E8=8A=82=E7=82=B9=E8=AF=A6=E6=83=85?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/store/modules/node-package.js | 5 +- src/store/modules/node-source.js | 9 ++ src/store/modules/node.js | 9 ++ src/store/modules/user.js | 223 ++++++++++++++++-------------- 4 files changed, 141 insertions(+), 105 deletions(-) diff --git a/src/store/modules/node-package.js b/src/store/modules/node-package.js index 78fdce8..7711691 100644 --- a/src/store/modules/node-package.js +++ b/src/store/modules/node-package.js @@ -2,7 +2,9 @@ import { getInstallablePackage } from '@/api/node_package' const nodePackage = { state: { + // 可安装软件包 installPackages: [], + // 当前选中的软件包 selectPackage: '' }, mutations: { @@ -14,6 +16,7 @@ const nodePackage = { } }, actions: { + // 获取软件可安装软件包列表 getPackages({ commit }, params) { return new Promise((reslove, reject) => { getInstallablePackage(params).then(res => { @@ -33,4 +36,4 @@ const nodePackage = { } } -export default nodePackage \ No newline at end of file +export default nodePackage diff --git a/src/store/modules/node-source.js b/src/store/modules/node-source.js index f4a0914..0e84a82 100644 --- a/src/store/modules/node-source.js +++ b/src/store/modules/node-source.js @@ -1,8 +1,14 @@ + const nodeSource = { state: { + // 存放节点,检测源配置30秒后才能再次操作 nodeCheckSetting: [] + }, + getters: { + }, mutations: { + // 倒计时30秒 SET_CHECK_SOURCE_INTERVAL(state, nodeId) { const obj = { nodeId, @@ -19,6 +25,9 @@ const nodeSource = { state.nodeCheckSetting.push(obj) } }, + actions: { + + } } export default nodeSource diff --git a/src/store/modules/node.js b/src/store/modules/node.js index de05781..0a10a01 100644 --- a/src/store/modules/node.js +++ b/src/store/modules/node.js @@ -3,11 +3,20 @@ import { getTaskStatus } from '@/api/node_package' const node = { state: { + openNodeFlag: false, + openNode: {}, taskList: [] }, mutations: { SET_TASK_LIST(state, data) { state.taskList = data + }, + SET_OPEN_NODE(state, data) { + state.openNode = { ...data } + state.openNodeFlag = true + }, + CLEAR_OPEN_NODE(state) { + state.openNodeFlag = false } }, actions: { diff --git a/src/store/modules/user.js b/src/store/modules/user.js index 3e8a397..7dbe507 100644 --- a/src/store/modules/user.js +++ b/src/store/modules/user.js @@ -1,104 +1,119 @@ -import { TOKEN_KEY, USER_INFO_KEY, MENU_KEY, LONG_TERM_TOKEN } from '../../utils/const' -import { getUserInfo, loginOut } from '../../api/user' -import { getSystemMenu } from '../../api/menu' -import routeMenuMap from '../../router/route-menu' - -const user = { - state: { - token: sessionStorage.getItem(TOKEN_KEY), - longTermToken: sessionStorage.getItem(LONG_TERM_TOKEN), - userInfo: JSON.parse(sessionStorage.getItem(USER_INFO_KEY)), - menus: JSON.parse(sessionStorage.getItem(MENU_KEY)) - }, - mutations: { - setToken(state, data) { - state.token = data.token || '' - state.longTermToken = data.longTermToken || '' - if (state.token) { - sessionStorage.setItem(TOKEN_KEY, data.token) - } else { - sessionStorage.removeItem(TOKEN_KEY) - } - if (state.longTermToken) { - sessionStorage.setItem(LONG_TERM_TOKEN, data.longTermToken) - } else { - sessionStorage.removeItem(LONG_TERM_TOKEN) - } - }, - setUserInfo(state, userInfo) { - state.userInfo = userInfo - }, - setMenus(state, menus) { - state.menus = menus - } - }, - actions: { - login({ dispatch, commit }, data) { - return new Promise((resolve) => { - commit('setToken', data) - getUserInfo().then(res => { - if (res.code === 200) { - commit('setUserInfo', res.data) - sessionStorage.setItem(USER_INFO_KEY, JSON.stringify(res.data)) - } - }) - dispatch('loadSystemMenus').then(() => { - resolve() - }) - }) - }, - loadSystemMenus({ commit }) { - return new Promise((resolve, reject) => { - getSystemMenu().then(res => { - res.data.forEach(element => { - if (element.childs && element.childs.length > 0) { - const childs = element.childs.map(child => { - return { - ...child, - 'path': routeMenuMap[child.id] - } - }) - element.childs = childs - } - }) - commit('setMenus', res.data) - sessionStorage.setItem(MENU_KEY, JSON.stringify(res.data)) - resolve() - }).catch(error => { - reject(error) - }) - }) - }, - logOut({ dispatch, commit }) { - return new Promise((resolve, reject) => { - commit('setToken', {}) - commit('setMenus', '') - sessionStorage.removeItem(MENU_KEY) - // 调用其他 action - dispatch('clearTabs', true) - loginOut({}).then(() => { - resolve() - }).catch(() => { - reject() - }) - }) - } - - }, - getters: { - getToken(state) { - return state.token - }, - getLongTermToken(state) { - return state.longTermToken - }, - getUserInfo(state) { - return state.userInfo - }, - getMenus(state) { - return state.menus - } - } -} - -export default user +/** + * 用户相关的 store + * 存储了用户的 token,用于接口请求的权限验证 + * 存储用户的基本信息,用于展示 + * 存储该用户对应的菜单列表,用于渲染侧边栏菜单 + * 同样提供与之对应的更新功能 + */ +import { TOKEN_KEY, USER_INFO_KEY, MENU_KEY, LONG_TERM_TOKEN } from '../../utils/const' +import { getUserInfo, loginOut } from '../../api/user' +import { getSystemMenu } from '../../api/menu' +import routeMenuMap from '../../router/route-menu' + +const user = { + state: { + token: sessionStorage.getItem(TOKEN_KEY), + longTermToken: sessionStorage.getItem(LONG_TERM_TOKEN), + userInfo: JSON.parse(sessionStorage.getItem(USER_INFO_KEY)), + menus: JSON.parse(sessionStorage.getItem(MENU_KEY)) + }, + mutations: { + setToken(state, data) { + state.token = data.token || '' + state.longTermToken = data.longTermToken || '' + if (state.token) { + sessionStorage.setItem(TOKEN_KEY, data.token) + } else { + sessionStorage.removeItem(TOKEN_KEY) + } + if (state.longTermToken) { + sessionStorage.setItem(LONG_TERM_TOKEN, data.longTermToken) + } else { + sessionStorage.removeItem(LONG_TERM_TOKEN) + } + }, + setUserInfo(state, userInfo) { + state.userInfo = userInfo + }, + setMenus(state, menus) { + state.menus = menus + } + }, + actions: { + // 登录 data = {token: 'xxx', userName: 'name'} + login({ dispatch, commit }, data) { + return new Promise((resolve) => { + commit('setToken', data) + // commit('setUserName', data.userName); + // 加载用户信息 + getUserInfo().then(res => { + if (res.code === 200) { + commit('setUserInfo', res.data) + sessionStorage.setItem(USER_INFO_KEY, JSON.stringify(res.data)) + } + }) + // 加载系统菜单 这里需要等待 action 执行完毕返回 promise, 否则第一次登录可能会从 store 里面获取不到 menus 数据而报错 + dispatch('loadSystemMenus').then(() => { + resolve() + }) + }) + }, + // 加载系统菜单 action + loadSystemMenus({ commit }) { + return new Promise((resolve, reject) => { + // 加载系统菜单 + getSystemMenu().then(res => { + res.data.forEach(element => { + if (element.childs && element.childs.length > 0) { + const childs = element.childs.map(child => { + return { + ...child, + 'path': routeMenuMap[child.id] + } + }) + element.childs = childs + } else { + element.path = routeMenuMap[element.id] + } + }) + commit('setMenus', res.data) + sessionStorage.setItem(MENU_KEY, JSON.stringify(res.data)) + resolve() + }).catch(error => { + reject(error) + }) + }) + }, + // 退出登录 移除对应的 store + logOut({ dispatch, commit }) { + return new Promise((resolve, reject) => { + commit('setToken', {}) + commit('setMenus', '') + sessionStorage.removeItem(MENU_KEY) + // 调用其他 action + dispatch('clearTabs', true) + loginOut({}).then(() => { + resolve() + }).catch(() => { + reject() + }) + }) + } + }, + getters: { + getToken(state) { + return state.token + }, + getLongTermToken(state) { + return state.longTermToken + }, + getUserInfo(state) { + return state.userInfo + }, + getMenus(state) { + return state.menus + } + } +} + +export default user -- Gitee