From 048db8f9075a64691feadae0f7e355ac7baa112b Mon Sep 17 00:00:00 2001 From: hanyuxia Date: Wed, 11 Sep 2024 15:14:14 +0800 Subject: feat: 1.Profile下environment页面(列表,新增/编辑,删除)开发;2.member等列表无数据时报错问题修改; MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/assets/iconfont/iconfont.css | 10 +- src/assets/iconfont/iconfont.js | 2 +- src/assets/iconfont/iconfont.json | 7 + src/assets/iconfont/iconfont.ttf | Bin 18372 -> 18532 bytes src/assets/iconfont/iconfont.woff | Bin 11584 -> 11708 bytes src/assets/iconfont/iconfont.woff2 | Bin 9864 -> 9992 bytes src/axios/api/envMgt.js | 70 ++++++ src/axios/api/environment.js | 4 +- src/axios/api/index.js | 3 +- src/components/layout/index.vue | 27 ++- src/components/layout/layoutHeader.vue | 35 ++- src/components/layout/leftMenu.vue | 40 +++- src/i18n/en.js | 19 +- src/i18n/zh.js | 19 +- src/router/permissions.js | 20 +- src/styles/common.scss | 56 +++++ src/styles/components/detail.scss | 2 +- src/utils/constants.js | 60 ++++- src/views/envMgts/detail.vue | 390 +++++++++++++++++++++++++++++++++ src/views/envMgts/index.vue | 373 +++++++++++++++++++++++++++++++ src/views/environments/index.vue | 134 ++++++++--- src/views/users/index.vue | 69 ++---- src/views/workspaces/members/index.vue | 194 +++++----------- 23 files changed, 1279 insertions(+), 255 deletions(-) create mode 100644 src/axios/api/envMgt.js create mode 100644 src/views/envMgts/detail.vue create mode 100644 src/views/envMgts/index.vue diff --git a/src/assets/iconfont/iconfont.css b/src/assets/iconfont/iconfont.css index 51c8767..168a2be 100644 --- a/src/assets/iconfont/iconfont.css +++ b/src/assets/iconfont/iconfont.css @@ -1,8 +1,8 @@ @font-face { font-family: "asw-icon"; /* Project id 4624922 */ - src: url('iconfont.woff2?t=1725588985108') format('woff2'), - url('iconfont.woff?t=1725588985108') format('woff'), - url('iconfont.ttf?t=1725588985108') format('truetype'); + src: url('iconfont.woff2?t=1726024310348') format('woff2'), + url('iconfont.woff?t=1726024310348') format('woff'), + url('iconfont.ttf?t=1726024310348') format('truetype'); } .asw-icon { @@ -13,6 +13,10 @@ -moz-osx-font-smoothing: grayscale; } +.icon-location:before { + content: "\e832"; +} + .icon-Members:before { content: "\e831"; } diff --git a/src/assets/iconfont/iconfont.js b/src/assets/iconfont/iconfont.js index 68edb9d..9ef507c 100644 --- a/src/assets/iconfont/iconfont.js +++ b/src/assets/iconfont/iconfont.js @@ -1 +1 @@ -window._iconfont_svg_string_4624922='',(l=>{var a=(c=(c=document.getElementsByTagName("script"))[c.length-1]).getAttribute("data-injectcss"),c=c.getAttribute("data-disable-injectsvg");if(!c){var h,o,v,i,m,t=function(a,c){c.parentNode.insertBefore(a,c)};if(a&&!l.__iconfont__svg__cssinject__){l.__iconfont__svg__cssinject__=!0;try{document.write("")}catch(a){console&&console.log(a)}}h=function(){var a,c=document.createElement("div");c.innerHTML=l._iconfont_svg_string_4624922,(c=c.getElementsByTagName("svg")[0])&&(c.setAttribute("aria-hidden","true"),c.style.position="absolute",c.style.width=0,c.style.height=0,c.style.overflow="hidden",c=c,(a=document.body).firstChild?t(c,a.firstChild):a.appendChild(c))},document.addEventListener?~["complete","loaded","interactive"].indexOf(document.readyState)?setTimeout(h,0):(o=function(){document.removeEventListener("DOMContentLoaded",o,!1),h()},document.addEventListener("DOMContentLoaded",o,!1)):document.attachEvent&&(v=h,i=l.document,m=!1,s(),i.onreadystatechange=function(){"complete"==i.readyState&&(i.onreadystatechange=null,z())})}function z(){m||(m=!0,v())}function s(){try{i.documentElement.doScroll("left")}catch(a){return void setTimeout(s,50)}z()}})(window); \ No newline at end of file +window._iconfont_svg_string_4624922='',(l=>{var a=(c=(c=document.getElementsByTagName("script"))[c.length-1]).getAttribute("data-injectcss"),c=c.getAttribute("data-disable-injectsvg");if(!c){var h,o,v,i,m,t=function(a,c){c.parentNode.insertBefore(a,c)};if(a&&!l.__iconfont__svg__cssinject__){l.__iconfont__svg__cssinject__=!0;try{document.write("")}catch(a){console&&console.log(a)}}h=function(){var a,c=document.createElement("div");c.innerHTML=l._iconfont_svg_string_4624922,(c=c.getElementsByTagName("svg")[0])&&(c.setAttribute("aria-hidden","true"),c.style.position="absolute",c.style.width=0,c.style.height=0,c.style.overflow="hidden",c=c,(a=document.body).firstChild?t(c,a.firstChild):a.appendChild(c))},document.addEventListener?~["complete","loaded","interactive"].indexOf(document.readyState)?setTimeout(h,0):(o=function(){document.removeEventListener("DOMContentLoaded",o,!1),h()},document.addEventListener("DOMContentLoaded",o,!1)):document.attachEvent&&(v=h,i=l.document,m=!1,s(),i.onreadystatechange=function(){"complete"==i.readyState&&(i.onreadystatechange=null,z())})}function z(){m||(m=!0,v())}function s(){try{i.documentElement.doScroll("left")}catch(a){return void setTimeout(s,50)}z()}})(window); \ No newline at end of file diff --git a/src/assets/iconfont/iconfont.json b/src/assets/iconfont/iconfont.json index 0437467..64d135e 100644 --- a/src/assets/iconfont/iconfont.json +++ b/src/assets/iconfont/iconfont.json @@ -5,6 +5,13 @@ "css_prefix_text": "icon-", "description": "", "glyphs": [ + { + "icon_id": "41813405", + "name": "location", + "font_class": "location", + "unicode": "e832", + "unicode_decimal": 59442 + }, { "icon_id": "41726689", "name": "Members", diff --git a/src/assets/iconfont/iconfont.ttf b/src/assets/iconfont/iconfont.ttf index ee8fe6f..f419a11 100644 Binary files a/src/assets/iconfont/iconfont.ttf and b/src/assets/iconfont/iconfont.ttf differ diff --git a/src/assets/iconfont/iconfont.woff b/src/assets/iconfont/iconfont.woff index 3d52f04..238bf14 100644 Binary files a/src/assets/iconfont/iconfont.woff and b/src/assets/iconfont/iconfont.woff differ diff --git a/src/assets/iconfont/iconfont.woff2 b/src/assets/iconfont/iconfont.woff2 index 0768b9f..c62784a 100644 Binary files a/src/assets/iconfont/iconfont.woff2 and b/src/assets/iconfont/iconfont.woff2 differ diff --git a/src/axios/api/envMgt.js b/src/axios/api/envMgt.js new file mode 100644 index 0000000..a58e0cc --- /dev/null +++ b/src/axios/api/envMgt.js @@ -0,0 +1,70 @@ +import axiosInstance from '@/axios/index.js'; + +// envMgt列表 +export const envMgtListApi = async (data) => { + try { + const res = await axiosInstance({ + url: '/api/v1/env/mgt', + method: 'GET', + params: data, + }); + return res.data; + } catch (err) { + return err.data; + } +}; + +// envMgt详情 +export const envMgtDetailApi = async (id) => { + try { + const res = await axiosInstance({ + url: `/api/v1/env/${id}`, + method: 'GET', + }); + return res.data; + } catch (err) { + return err.data; + } +}; + +// envMgt新增 +export const envMgtAddApi = async (data) => { + try { + const res = await axiosInstance({ + url: '/api/v1/env/mgt', + method: 'POST', + data: data, + }); + return res.data; + } catch (err) { + return err.data; + } +}; + +// envMgt修改 +export const envMgtEditApi = async (data) => { + try { + const res = await axiosInstance({ + url: '/api/v1/env/mgt', + method: 'PUT', + data: data, + }); + return res.data; + } catch (err) { + return err.data; + } +}; + +// envMgt删除 +export const envMgtDeleteApi = async (data) => { + try { + const res = await axiosInstance({ + url: '/api/v1/env/mgt', + method: 'DELETE', + params: data, + }); + return res.data; + } catch (err) { + return err.data; + } +}; \ No newline at end of file diff --git a/src/axios/api/environment.js b/src/axios/api/environment.js index 0844cd3..3770fb3 100644 --- a/src/axios/api/environment.js +++ b/src/axios/api/environment.js @@ -14,8 +14,8 @@ export const environmentListApi = async (data) => { } }; -// my device列表 -export const myDeviceListApi = async (data) => { +// my environments列表 +export const myEnvironmentsListApi = async (data) => { try { const res = await axiosInstance({ url: '/api/v1/env/mySession', diff --git a/src/axios/api/index.js b/src/axios/api/index.js index 74bc948..fa15920 100644 --- a/src/axios/api/index.js +++ b/src/axios/api/index.js @@ -5,4 +5,5 @@ export * from './user' export * from './workspace' export * from './role' export * from './environment' -export * from './workspaceMember' \ No newline at end of file +export * from './workspaceMember' +export * from './envMgt' \ No newline at end of file diff --git a/src/components/layout/index.vue b/src/components/layout/index.vue index 1a04b9b..c6cc207 100644 --- a/src/components/layout/index.vue +++ b/src/components/layout/index.vue @@ -6,15 +6,16 @@ @refreshEnd="refreshEnd" @goBackWorkspace="goBackWorkspace" @gotoUserManage="gotoUserManage" + @gotoProfileManage="gotoProfileManage" >
- +
@@ -26,9 +27,10 @@ import layoutHeader from '@/components/layout/layoutHeader.vue'; import leftMenu from '@/components/layout/leftMenu.vue'; import { isAdministrator, goHome } from '@/utils/index'; import { useRouter } from 'vue-router'; +import { userMenuType, profileMenuType, normalMenuType } from '@/utils/constants'; const isRefresh = ref(true); -let isUserManage = ref(false); +let curMenuType = ref(normalMenuType); const refresh = () => { isRefresh.value = false; @@ -63,23 +65,34 @@ onBeforeMount(() => { (router.currentRoute.value.path === '/users' || router.currentRoute.value.path.startsWith('/users/')) ) { - isUserManage.value = true; + curMenuType.value = userMenuType; + } else if (router.currentRoute.value.path === '/envMgts' || + router.currentRoute.value.path.startsWith('/envMgts/') + ) { + curMenuType.value = profileMenuType; } else { - isUserManage.value = false; + curMenuType.value = normalMenuType; } }); const goBackWorkspace = (val) => { - isUserManage.value = false; + curMenuType.value = normalMenuType; goHome(); }; const gotoUserManage = (val) => { - isUserManage.value = true; + curMenuType.value = userMenuType; router.push({ name: 'users', }); }; + +const gotoProfileManage = (val) => { + curMenuType.value = profileMenuType; + router.push({ + name: 'envMgts', + }); +}; diff --git a/src/views/envMgts/index.vue b/src/views/envMgts/index.vue new file mode 100644 index 0000000..87e0b1a --- /dev/null +++ b/src/views/envMgts/index.vue @@ -0,0 +1,373 @@ + + + + + diff --git a/src/views/environments/index.vue b/src/views/environments/index.vue index fcab050..2dcc7ce 100644 --- a/src/views/environments/index.vue +++ b/src/views/environments/index.vue @@ -17,7 +17,7 @@ type="primary" size="large" class="environments-all" - @click="showEnvironmentList('all')" + @click="showAllEnvironmentList()" :class="{ inactive: !showAllEnvironment }" > {{ t('environment.all') }} @@ -26,10 +26,10 @@ type="primary" size="large" class="environments-my" - @click="showEnvironmentList('my')" + @click="showMyEnvironmentList()" :class="{ inactive: showAllEnvironment }" > - {{ t('environment.my_devices') }} + {{ t('environment.my_environments') }}