Showing
18 changed files
with
103 additions
and
483 deletions
| @@ -42,7 +42,7 @@ export const getAccountList = (params: AccountParams) => | @@ -42,7 +42,7 @@ export const getAccountList = (params: AccountParams) => | ||
| 42 | */ | 42 | */ |
| 43 | export const getOrganizationList = (params?: OrganizationListItem) => | 43 | export const getOrganizationList = (params?: OrganizationListItem) => |
| 44 | defHttp.get<OrganizationListGetResultModel>({ | 44 | defHttp.get<OrganizationListGetResultModel>({ |
| 45 | - url: Api.BaseOrganization + '/me/organizations', | 45 | + url: Api.BaseOrganization + '/me/list', |
| 46 | params, | 46 | params, |
| 47 | }); | 47 | }); |
| 48 | 48 |
| 1 | +// import { getMenuList } from '/@/api/sys/menu'; | ||
| 2 | +// import { reactive } from 'vue'; | ||
| 3 | + | ||
| 4 | +// const isDolang = reactive({ | ||
| 5 | +// key: 1, | ||
| 6 | +// value: '', | ||
| 7 | +// }); | ||
| 8 | +// //这里判断是否含有首页 | ||
| 9 | +// async function doMenu() { | ||
| 10 | +// const routeList = await getMenuList(); | ||
| 11 | +// const getHomePage = routeList.find((f) => { | ||
| 12 | +// return f.path == '/dashboard'; | ||
| 13 | +// }); | ||
| 14 | +// if (getHomePage?.path == '/dashboard') { | ||
| 15 | +// // router.push('/dashboard'); | ||
| 16 | +// } else { | ||
| 17 | +// const route = routeList[0].path + ''; | ||
| 18 | +// isDolang.key = 1; | ||
| 19 | +// isDolang.value = route; | ||
| 20 | +// return isDolang; | ||
| 21 | +// // router.push(route); | ||
| 22 | +// } | ||
| 23 | +// } | ||
| 24 | + | ||
| 25 | +// setTimeout(() => { | ||
| 26 | +// doMenu(); | ||
| 27 | +// }, 1000); | ||
| 28 | + | ||
| 29 | +// console.log(isDolang.value); | ||
| 30 | +// console.log(typeof isDolang.value); | ||
| 31 | + | ||
| 32 | +// setTimeout(() => { | ||
| 33 | +// console.log(isDolang); | ||
| 34 | +// }, 1500); | ||
| 35 | + | ||
| 1 | export enum PageEnum { | 36 | export enum PageEnum { |
| 2 | // basic login path | 37 | // basic login path |
| 3 | BASE_LOGIN = '/login', | 38 | BASE_LOGIN = '/login', |
| 4 | // basic home path | 39 | // basic home path |
| 5 | - BASE_HOME = '/dashboard', | 40 | + BASE_HOME = '/system/account', |
| 41 | + // BASE_HOME = '/dashboard', | ||
| 6 | // error page path | 42 | // error page path |
| 7 | ERROR_PAGE = '/exception', | 43 | ERROR_PAGE = '/exception', |
| 8 | // error log page path | 44 | // error log page path |
| 1 | -import type { AppRouteModule } from '/@/router/types'; | 1 | +// import type { AppRouteModule } from '/@/router/types'; |
| 2 | 2 | ||
| 3 | -import { LAYOUT } from '/@/router/constant'; | ||
| 4 | -import { t } from '/@/hooks/web/useI18n'; | 3 | +// import { LAYOUT } from '/@/router/constant'; |
| 4 | +// import { t } from '/@/hooks/web/useI18n'; | ||
| 5 | 5 | ||
| 6 | -const dashboard: AppRouteModule = { | ||
| 7 | - path: '/dashboard', | ||
| 8 | - name: 'Dashboard', | ||
| 9 | - component: LAYOUT, | ||
| 10 | - redirect: '/dashboard/analysis', | ||
| 11 | - meta: { | ||
| 12 | - orderNo: 10, | ||
| 13 | - icon: 'ion:grid-outline', | ||
| 14 | - title: t('routes.dashboard.dashboard'), | ||
| 15 | - }, | ||
| 16 | - children: [ | ||
| 17 | - { | ||
| 18 | - path: 'analysis', | ||
| 19 | - name: 'Analysis', | ||
| 20 | - component: () => import('/@/views/dashboard/analysis/index.vue'), | ||
| 21 | - meta: { | ||
| 22 | - // affix: true, | ||
| 23 | - title: t('routes.dashboard.analysis'), | ||
| 24 | - }, | ||
| 25 | - }, | ||
| 26 | - { | ||
| 27 | - path: 'workbench', | ||
| 28 | - name: 'Workbench', | ||
| 29 | - component: () => import('/@/views/dashboard/workbench/index.vue'), | ||
| 30 | - meta: { | ||
| 31 | - title: t('routes.dashboard.workbench'), | ||
| 32 | - }, | ||
| 33 | - }, | ||
| 34 | - ], | ||
| 35 | -}; | 6 | +// const dashboard: AppRouteModule = { |
| 7 | +// path: '/dashboard', | ||
| 8 | +// name: 'Dashboard', | ||
| 9 | +// component: LAYOUT, | ||
| 10 | +// redirect: '/dashboard/analysis', | ||
| 11 | +// meta: { | ||
| 12 | +// orderNo: 10, | ||
| 13 | +// icon: 'ion:grid-outline', | ||
| 14 | +// title: t('routes.dashboard.dashboard'), | ||
| 15 | +// }, | ||
| 16 | +// children: [ | ||
| 17 | +// { | ||
| 18 | +// path: 'analysis', | ||
| 19 | +// name: 'Analysis', | ||
| 20 | +// component: () => import('/@/views/dashboard/analysis/index.vue'), | ||
| 21 | +// meta: { | ||
| 22 | +// // affix: true, | ||
| 23 | +// title: t('routes.dashboard.analysis'), | ||
| 24 | +// }, | ||
| 25 | +// }, | ||
| 26 | +// { | ||
| 27 | +// path: 'workbench', | ||
| 28 | +// name: 'Workbench', | ||
| 29 | +// component: () => import('/@/views/dashboard/workbench/index.vue'), | ||
| 30 | +// meta: { | ||
| 31 | +// title: t('routes.dashboard.workbench'), | ||
| 32 | +// }, | ||
| 33 | +// }, | ||
| 34 | +// ], | ||
| 35 | +// }; | ||
| 36 | 36 | ||
| 37 | -export default dashboard; | 37 | +// export default dashboard; |
| @@ -96,7 +96,7 @@ export const useMultipleTabStore = defineStore({ | @@ -96,7 +96,7 @@ export const useMultipleTabStore = defineStore({ | ||
| 96 | const len = this.tabList.length; | 96 | const len = this.tabList.length; |
| 97 | const { path } = unref(router.currentRoute); | 97 | const { path } = unref(router.currentRoute); |
| 98 | 98 | ||
| 99 | - let toPath: PageEnum | string = PageEnum.BASE_HOME; | 99 | + let toPath: PageEnum | string = BASE_HOME; |
| 100 | 100 | ||
| 101 | if (len > 0) { | 101 | if (len > 0) { |
| 102 | const page = this.tabList[len - 1]; | 102 | const page = this.tabList[len - 1]; |
| 1 | import type { AppRouteRecordRaw, Menu } from '/@/router/types'; | 1 | import type { AppRouteRecordRaw, Menu } from '/@/router/types'; |
| 2 | - | ||
| 3 | import { defineStore } from 'pinia'; | 2 | import { defineStore } from 'pinia'; |
| 4 | import { store } from '/@/store'; | 3 | import { store } from '/@/store'; |
| 5 | import { useI18n } from '/@/hooks/web/useI18n'; | 4 | import { useI18n } from '/@/hooks/web/useI18n'; |
| @@ -8,22 +7,16 @@ import { useAppStoreWithOut } from './app'; | @@ -8,22 +7,16 @@ import { useAppStoreWithOut } from './app'; | ||
| 8 | import { toRaw } from 'vue'; | 7 | import { toRaw } from 'vue'; |
| 9 | import { transformObjToRoute, flatMultiLevelRoutes } from '/@/router/helper/routeHelper'; | 8 | import { transformObjToRoute, flatMultiLevelRoutes } from '/@/router/helper/routeHelper'; |
| 10 | import { transformRouteToMenu } from '/@/router/helper/menuHelper'; | 9 | import { transformRouteToMenu } from '/@/router/helper/menuHelper'; |
| 11 | - | ||
| 12 | import projectSetting from '/@/settings/projectSetting'; | 10 | import projectSetting from '/@/settings/projectSetting'; |
| 13 | - | ||
| 14 | import { PermissionModeEnum } from '/@/enums/appEnum'; | 11 | import { PermissionModeEnum } from '/@/enums/appEnum'; |
| 15 | - | ||
| 16 | import { asyncRoutes } from '/@/router/routes'; | 12 | import { asyncRoutes } from '/@/router/routes'; |
| 17 | import { ERROR_LOG_ROUTE, PAGE_NOT_FOUND_ROUTE } from '/@/router/routes/basic'; | 13 | import { ERROR_LOG_ROUTE, PAGE_NOT_FOUND_ROUTE } from '/@/router/routes/basic'; |
| 18 | - | ||
| 19 | import { filter } from '/@/utils/helper/treeHelper'; | 14 | import { filter } from '/@/utils/helper/treeHelper'; |
| 20 | - | ||
| 21 | import { getMenuList } from '/@/api/sys/menu'; | 15 | import { getMenuList } from '/@/api/sys/menu'; |
| 22 | import { getPermCode } from '/@/api/sys/user'; | 16 | import { getPermCode } from '/@/api/sys/user'; |
| 23 | - | ||
| 24 | import { useMessage } from '/@/hooks/web/useMessage'; | 17 | import { useMessage } from '/@/hooks/web/useMessage'; |
| 25 | import { PageEnum } from '/@/enums/pageEnum'; | 18 | import { PageEnum } from '/@/enums/pageEnum'; |
| 26 | - | 19 | +import { router } from '/@/router'; |
| 27 | interface PermissionState { | 20 | interface PermissionState { |
| 28 | // Permission code list | 21 | // Permission code list |
| 29 | permCodeList: string[] | number[]; | 22 | permCodeList: string[] | number[]; |
| @@ -177,7 +170,7 @@ export const usePermissionStore = defineStore({ | @@ -177,7 +170,7 @@ export const usePermissionStore = defineStore({ | ||
| 177 | 170 | ||
| 178 | createMessage.loading({ | 171 | createMessage.loading({ |
| 179 | content: t('sys.app.menuLoading'), | 172 | content: t('sys.app.menuLoading'), |
| 180 | - duration: 1, | 173 | + duration: 0.5, |
| 181 | }); | 174 | }); |
| 182 | 175 | ||
| 183 | // !Simulate to obtain permission codes from the background, | 176 | // !Simulate to obtain permission codes from the background, |
| @@ -186,6 +179,16 @@ export const usePermissionStore = defineStore({ | @@ -186,6 +179,16 @@ export const usePermissionStore = defineStore({ | ||
| 186 | try { | 179 | try { |
| 187 | this.changePermissionCode(); | 180 | this.changePermissionCode(); |
| 188 | routeList = (await getMenuList()) as AppRouteRecordRaw[]; | 181 | routeList = (await getMenuList()) as AppRouteRecordRaw[]; |
| 182 | + //这里判断是否含有首页 | ||
| 183 | + const getHomePage = routeList.find((f) => { | ||
| 184 | + return f.path == '/dashboard'; | ||
| 185 | + }); | ||
| 186 | + if (getHomePage?.path == '/dashboard') { | ||
| 187 | + router.push('/dashboard'); | ||
| 188 | + } else { | ||
| 189 | + const route = routeList[0].path + ''; | ||
| 190 | + router.push(route); | ||
| 191 | + } | ||
| 189 | } catch (error) { | 192 | } catch (error) { |
| 190 | console.error(error); | 193 | console.error(error); |
| 191 | } // Dynamically introduce components | 194 | } // Dynamically introduce components |
| @@ -203,7 +206,7 @@ export const usePermissionStore = defineStore({ | @@ -203,7 +206,7 @@ export const usePermissionStore = defineStore({ | ||
| 203 | routes = [PAGE_NOT_FOUND_ROUTE, ...routeList]; | 206 | routes = [PAGE_NOT_FOUND_ROUTE, ...routeList]; |
| 204 | break; | 207 | break; |
| 205 | } | 208 | } |
| 206 | - | 209 | + console.log('错误页'); |
| 207 | routes.push(ERROR_LOG_ROUTE); | 210 | routes.push(ERROR_LOG_ROUTE); |
| 208 | patchHomeAffix(routes); | 211 | patchHomeAffix(routes); |
| 209 | return routes; | 212 | return routes; |
| @@ -26,14 +26,7 @@ import { router } from '/@/router'; | @@ -26,14 +26,7 @@ import { router } from '/@/router'; | ||
| 26 | const globSetting = useGlobSetting(); | 26 | const globSetting = useGlobSetting(); |
| 27 | const urlPrefix = globSetting.urlPrefix; | 27 | const urlPrefix = globSetting.urlPrefix; |
| 28 | const { createMessage, createErrorModal } = useMessage(); | 28 | const { createMessage, createErrorModal } = useMessage(); |
| 29 | - | ||
| 30 | const getJwtTokenInfo = getAuthCache(REFRESH_TOKEN_KEY); | 29 | const getJwtTokenInfo = getAuthCache(REFRESH_TOKEN_KEY); |
| 31 | -const getRefreshTokenInfo = getAuthCache(JWT_TOKEN_KEY); | ||
| 32 | -// console.log(getJwtTokenInfo); | ||
| 33 | -// console.log(getRefreshTokenInfo); | ||
| 34 | -const getRefreshTokenInfo1 = getAuthCache(PROJ_CFG_KEY); | ||
| 35 | - | ||
| 36 | -// console.log(getRefreshTokenInfo1); | ||
| 37 | 30 | ||
| 38 | /** | 31 | /** |
| 39 | * @description: 数据处理,方便区分多种处理方式 | 32 | * @description: 数据处理,方便区分多种处理方式 |
| 1 | -import { BasicColumn } from '/@/components/Table'; | ||
| 2 | -import { FormSchema } from '/@/components/Table'; | 1 | +import { BasicColumn, FormSchema } from '/@/components/Table'; |
| 3 | import { getOrganizationList } from '/@/api/system/system'; | 2 | import { getOrganizationList } from '/@/api/system/system'; |
| 4 | import { copyTransFun } from '/@/utils/fnUtils'; | 3 | import { copyTransFun } from '/@/utils/fnUtils'; |
| 4 | + | ||
| 5 | // 表格列数据 | 5 | // 表格列数据 |
| 6 | export const columns: BasicColumn[] = [ | 6 | export const columns: BasicColumn[] = [ |
| 7 | { | 7 | { |
| @@ -67,6 +67,7 @@ | @@ -67,6 +67,7 @@ | ||
| 67 | const [registerTable, { reload }] = useTable({ | 67 | const [registerTable, { reload }] = useTable({ |
| 68 | api: getAlarmContact, | 68 | api: getAlarmContact, |
| 69 | columns, | 69 | columns, |
| 70 | + clickToRowSelect: false, | ||
| 70 | formConfig: { | 71 | formConfig: { |
| 71 | labelWidth: 120, | 72 | labelWidth: 120, |
| 72 | schemas: searchFormSchema, | 73 | schemas: searchFormSchema, |
src/views/dashboard/analysis/components/DynamicInfo.vue
deleted
100644 → 0
| 1 | -<template> | ||
| 2 | - <Card title="最新动态" v-bind="$attrs"> | ||
| 3 | - <template #extra> | ||
| 4 | - <a-button type="link" size="small">更多</a-button> | ||
| 5 | - </template> | ||
| 6 | - <List item-layout="horizontal" :data-source="dynamicInfoItems"> | ||
| 7 | - <template #renderItem="{ item }"> | ||
| 8 | - <ListItem> | ||
| 9 | - <ListItemMeta> | ||
| 10 | - <template #description> | ||
| 11 | - {{ item.date }} | ||
| 12 | - </template> | ||
| 13 | - <!-- eslint-disable-next-line --> | ||
| 14 | - <template #title> {{ item.name }} <span v-html="item.desc"> </span> </template> | ||
| 15 | - <template #avatar> | ||
| 16 | - <Icon :icon="item.avatar" :size="30" /> | ||
| 17 | - </template> | ||
| 18 | - </ListItemMeta> | ||
| 19 | - </ListItem> | ||
| 20 | - </template> | ||
| 21 | - </List> | ||
| 22 | - </Card> | ||
| 23 | -</template> | ||
| 24 | -<script lang="ts" setup> | ||
| 25 | - import { Card, List } from 'ant-design-vue'; | ||
| 26 | - import { dynamicInfoItems } from './data'; | ||
| 27 | - import { Icon } from '/@/components/Icon'; | ||
| 28 | - | ||
| 29 | - const ListItem = List.Item; | ||
| 30 | - const ListItemMeta = List.Item.Meta; | ||
| 31 | -</script> |
src/views/dashboard/analysis/components/ProjectCard.vue
deleted
100644 → 0
| 1 | -<template> | ||
| 2 | - <Card title="项目" v-bind="$attrs"> | ||
| 3 | - <template #extra> | ||
| 4 | - <a-button type="link" size="small">更多</a-button> | ||
| 5 | - </template> | ||
| 6 | - | ||
| 7 | - <template v-for="item in items" :key="item"> | ||
| 8 | - <CardGrid class="!md:w-1/3 !w-full"> | ||
| 9 | - <span class="flex"> | ||
| 10 | - <Icon :icon="item.icon" :color="item.color" size="30" /> | ||
| 11 | - <span class="text-lg ml-4">{{ item.title }}</span> | ||
| 12 | - </span> | ||
| 13 | - <div class="flex mt-2 h-10 text-secondary"> {{ item.desc }} </div> | ||
| 14 | - <div class="flex justify-between text-secondary"> | ||
| 15 | - <span>{{ item.group }}</span> | ||
| 16 | - <span>{{ item.date }}</span> | ||
| 17 | - </div> | ||
| 18 | - </CardGrid> | ||
| 19 | - </template> | ||
| 20 | - </Card> | ||
| 21 | -</template> | ||
| 22 | -<script lang="ts"> | ||
| 23 | - import { defineComponent } from 'vue'; | ||
| 24 | - import { Card } from 'ant-design-vue'; | ||
| 25 | - import { Icon } from '/@/components/Icon'; | ||
| 26 | - import { groupItems } from './data'; | ||
| 27 | - | ||
| 28 | - export default defineComponent({ | ||
| 29 | - components: { Card, CardGrid: Card.Grid, Icon }, | ||
| 30 | - setup() { | ||
| 31 | - return { items: groupItems }; | ||
| 32 | - }, | ||
| 33 | - }); | ||
| 34 | -</script> |
src/views/dashboard/analysis/components/QuickNav.vue
deleted
100644 → 0
| 1 | -<template> | ||
| 2 | - <Card title="快捷导航" v-bind="$attrs"> | ||
| 3 | - <template v-for="item in navItems" :key="item"> | ||
| 4 | - <CardGrid> | ||
| 5 | - <span class="flex flex-col items-center"> | ||
| 6 | - <Icon :icon="item.icon" :color="item.color" size="20" /> | ||
| 7 | - <span class="text-md mt-2">{{ item.title }}</span> | ||
| 8 | - </span> | ||
| 9 | - </CardGrid> | ||
| 10 | - </template> | ||
| 11 | - </Card> | ||
| 12 | -</template> | ||
| 13 | -<script lang="ts" setup> | ||
| 14 | - import { Card } from 'ant-design-vue'; | ||
| 15 | - import { navItems } from './data'; | ||
| 16 | - import { Icon } from '/@/components/Icon'; | ||
| 17 | - | ||
| 18 | - const CardGrid = Card.Grid; | ||
| 19 | -</script> |
src/views/dashboard/analysis/components/SaleRadar.vue
deleted
100644 → 0
| 1 | -<template> | ||
| 2 | - <Card title="销售统计" :loading="loading"> | ||
| 3 | - <div ref="chartRef" :style="{ width, height }"></div> | ||
| 4 | - </Card> | ||
| 5 | -</template> | ||
| 6 | -<script lang="ts" setup> | ||
| 7 | - import { Ref, ref, watch } from 'vue'; | ||
| 8 | - import { Card } from 'ant-design-vue'; | ||
| 9 | - import { useECharts } from '/@/hooks/web/useECharts'; | ||
| 10 | - | ||
| 11 | - const props = defineProps({ | ||
| 12 | - loading: Boolean, | ||
| 13 | - width: { | ||
| 14 | - type: String as PropType<string>, | ||
| 15 | - default: '100%', | ||
| 16 | - }, | ||
| 17 | - height: { | ||
| 18 | - type: String as PropType<string>, | ||
| 19 | - default: '400px', | ||
| 20 | - }, | ||
| 21 | - }); | ||
| 22 | - | ||
| 23 | - const chartRef = ref<HTMLDivElement | null>(null); | ||
| 24 | - const { setOptions } = useECharts(chartRef as Ref<HTMLDivElement>); | ||
| 25 | - watch( | ||
| 26 | - () => props.loading, | ||
| 27 | - () => { | ||
| 28 | - if (props.loading) { | ||
| 29 | - return; | ||
| 30 | - } | ||
| 31 | - setOptions({ | ||
| 32 | - legend: { | ||
| 33 | - bottom: 0, | ||
| 34 | - data: ['Visits', 'Sales'], | ||
| 35 | - }, | ||
| 36 | - tooltip: {}, | ||
| 37 | - radar: { | ||
| 38 | - radius: '60%', | ||
| 39 | - splitNumber: 8, | ||
| 40 | - indicator: [ | ||
| 41 | - { | ||
| 42 | - text: '2017', | ||
| 43 | - max: 100, | ||
| 44 | - }, | ||
| 45 | - { | ||
| 46 | - text: '2017', | ||
| 47 | - max: 100, | ||
| 48 | - }, | ||
| 49 | - { | ||
| 50 | - text: '2018', | ||
| 51 | - max: 100, | ||
| 52 | - }, | ||
| 53 | - { | ||
| 54 | - text: '2019', | ||
| 55 | - max: 100, | ||
| 56 | - }, | ||
| 57 | - { | ||
| 58 | - text: '2020', | ||
| 59 | - max: 100, | ||
| 60 | - }, | ||
| 61 | - { | ||
| 62 | - text: '2021', | ||
| 63 | - max: 100, | ||
| 64 | - }, | ||
| 65 | - ], | ||
| 66 | - }, | ||
| 67 | - series: [ | ||
| 68 | - { | ||
| 69 | - type: 'radar', | ||
| 70 | - symbolSize: 0, | ||
| 71 | - areaStyle: { | ||
| 72 | - shadowBlur: 0, | ||
| 73 | - shadowColor: 'rgba(0,0,0,.2)', | ||
| 74 | - shadowOffsetX: 0, | ||
| 75 | - shadowOffsetY: 10, | ||
| 76 | - opacity: 1, | ||
| 77 | - }, | ||
| 78 | - data: [ | ||
| 79 | - { | ||
| 80 | - value: [90, 50, 86, 40, 50, 20], | ||
| 81 | - name: 'Visits', | ||
| 82 | - itemStyle: { | ||
| 83 | - color: '#b6a2de', | ||
| 84 | - }, | ||
| 85 | - }, | ||
| 86 | - { | ||
| 87 | - value: [70, 75, 70, 76, 20, 85], | ||
| 88 | - name: 'Sales', | ||
| 89 | - itemStyle: { | ||
| 90 | - color: '#67e0e3', | ||
| 91 | - }, | ||
| 92 | - }, | ||
| 93 | - ], | ||
| 94 | - }, | ||
| 95 | - ], | ||
| 96 | - }); | ||
| 97 | - }, | ||
| 98 | - { immediate: true } | ||
| 99 | - ); | ||
| 100 | -</script> |
src/views/dashboard/analysis/components/data.ts
deleted
100644 → 0
| 1 | -interface GroupItem { | ||
| 2 | - title: string; | ||
| 3 | - icon: string; | ||
| 4 | - color: string; | ||
| 5 | - desc: string; | ||
| 6 | - date: string; | ||
| 7 | - group: string; | ||
| 8 | -} | ||
| 9 | - | ||
| 10 | -interface NavItem { | ||
| 11 | - title: string; | ||
| 12 | - icon: string; | ||
| 13 | - color: string; | ||
| 14 | -} | ||
| 15 | - | ||
| 16 | -interface DynamicInfoItem { | ||
| 17 | - avatar: string; | ||
| 18 | - name: string; | ||
| 19 | - date: string; | ||
| 20 | - desc: string; | ||
| 21 | -} | ||
| 22 | - | ||
| 23 | -export const navItems: NavItem[] = [ | ||
| 24 | - { | ||
| 25 | - title: '首页', | ||
| 26 | - icon: 'ion:home-outline', | ||
| 27 | - color: '#1fdaca', | ||
| 28 | - }, | ||
| 29 | - { | ||
| 30 | - title: '仪表盘', | ||
| 31 | - icon: 'ion:grid-outline', | ||
| 32 | - color: '#bf0c2c', | ||
| 33 | - }, | ||
| 34 | - { | ||
| 35 | - title: '组件', | ||
| 36 | - icon: 'ion:layers-outline', | ||
| 37 | - color: '#e18525', | ||
| 38 | - }, | ||
| 39 | - { | ||
| 40 | - title: '系统管理', | ||
| 41 | - icon: 'ion:settings-outline', | ||
| 42 | - color: '#3fb27f', | ||
| 43 | - }, | ||
| 44 | - { | ||
| 45 | - title: '权限管理', | ||
| 46 | - icon: 'ion:key-outline', | ||
| 47 | - color: '#4daf1bc9', | ||
| 48 | - }, | ||
| 49 | - { | ||
| 50 | - title: '图表', | ||
| 51 | - icon: 'ion:bar-chart-outline', | ||
| 52 | - color: '#00d8ff', | ||
| 53 | - }, | ||
| 54 | -]; | ||
| 55 | - | ||
| 56 | -export const dynamicInfoItems: DynamicInfoItem[] = [ | ||
| 57 | - { | ||
| 58 | - avatar: 'dynamic-avatar-1|svg', | ||
| 59 | - name: '威廉', | ||
| 60 | - date: '刚刚', | ||
| 61 | - desc: `在 <a>开源组</a> 创建了项目 <a>Vue</a>`, | ||
| 62 | - }, | ||
| 63 | - { | ||
| 64 | - avatar: 'dynamic-avatar-2|svg', | ||
| 65 | - name: '艾文', | ||
| 66 | - date: '1个小时前', | ||
| 67 | - desc: `关注了 <a>威廉</a> `, | ||
| 68 | - }, | ||
| 69 | - { | ||
| 70 | - avatar: 'dynamic-avatar-3|svg', | ||
| 71 | - name: '克里斯', | ||
| 72 | - date: '1天前', | ||
| 73 | - desc: `发布了 <a>个人动态</a> `, | ||
| 74 | - }, | ||
| 75 | - { | ||
| 76 | - avatar: 'dynamic-avatar-4|svg', | ||
| 77 | - name: 'Vben', | ||
| 78 | - date: '2天前', | ||
| 79 | - desc: `发表文章 <a>如何编写一个Vite插件</a> `, | ||
| 80 | - }, | ||
| 81 | - { | ||
| 82 | - avatar: 'dynamic-avatar-5|svg', | ||
| 83 | - name: '皮特', | ||
| 84 | - date: '3天前', | ||
| 85 | - desc: `回复了 <a>杰克</a> 的问题 <a>如何进行项目优化?</a>`, | ||
| 86 | - }, | ||
| 87 | - { | ||
| 88 | - avatar: 'dynamic-avatar-6|svg', | ||
| 89 | - name: '杰克', | ||
| 90 | - date: '1周前', | ||
| 91 | - desc: `关闭了问题 <a>如何运行项目</a> `, | ||
| 92 | - }, | ||
| 93 | - { | ||
| 94 | - avatar: 'dynamic-avatar-1|svg', | ||
| 95 | - name: '威廉', | ||
| 96 | - date: '1周前', | ||
| 97 | - desc: `发布了 <a>个人动态</a> `, | ||
| 98 | - }, | ||
| 99 | - { | ||
| 100 | - avatar: 'dynamic-avatar-1|svg', | ||
| 101 | - name: '威廉', | ||
| 102 | - date: '2021-04-01 20:00', | ||
| 103 | - desc: `推送了代码到 <a>Github</a>`, | ||
| 104 | - }, | ||
| 105 | -]; | ||
| 106 | - | ||
| 107 | -export const groupItems: GroupItem[] = [ | ||
| 108 | - { | ||
| 109 | - title: 'Github', | ||
| 110 | - icon: 'carbon:logo-github', | ||
| 111 | - color: '', | ||
| 112 | - desc: '不要等待机会,而要创造机会。', | ||
| 113 | - group: '开源组', | ||
| 114 | - date: '2021-04-01', | ||
| 115 | - }, | ||
| 116 | - { | ||
| 117 | - title: 'Vue', | ||
| 118 | - icon: 'ion:logo-vue', | ||
| 119 | - color: '#3fb27f', | ||
| 120 | - desc: '现在的你决定将来的你。', | ||
| 121 | - group: '算法组', | ||
| 122 | - date: '2021-04-01', | ||
| 123 | - }, | ||
| 124 | - { | ||
| 125 | - title: 'Html5', | ||
| 126 | - icon: 'ion:logo-html5', | ||
| 127 | - color: '#e18525', | ||
| 128 | - desc: '没有什么才能比努力更重要。', | ||
| 129 | - group: '上班摸鱼', | ||
| 130 | - date: '2021-04-01', | ||
| 131 | - }, | ||
| 132 | - { | ||
| 133 | - title: 'Angular', | ||
| 134 | - icon: 'ion:logo-angular', | ||
| 135 | - color: '#bf0c2c', | ||
| 136 | - desc: '热情和欲望可以突破一切难关。', | ||
| 137 | - group: 'UI', | ||
| 138 | - date: '2021-04-01', | ||
| 139 | - }, | ||
| 140 | - { | ||
| 141 | - title: 'React', | ||
| 142 | - icon: 'bx:bxl-react', | ||
| 143 | - color: '#00d8ff', | ||
| 144 | - desc: '健康的身体是实目标的基石。', | ||
| 145 | - group: '技术牛', | ||
| 146 | - date: '2021-04-01', | ||
| 147 | - }, | ||
| 148 | - { | ||
| 149 | - title: 'Js', | ||
| 150 | - icon: 'ion:logo-javascript', | ||
| 151 | - color: '#4daf1bc9', | ||
| 152 | - desc: '路是走出来的,而不是空想出来的。', | ||
| 153 | - group: '架构组', | ||
| 154 | - date: '2021-04-01', | ||
| 155 | - }, | ||
| 156 | -]; |
src/views/dashboard/analysis/index.vue
deleted
100644 → 0
| 1 | -<template> | ||
| 2 | - <PageWrapper> | ||
| 3 | - <template #headerContent> <WorkbenchHeader /> </template> | ||
| 4 | - <div class="lg:flex"> | ||
| 5 | - <div class="lg:w-7/10 w-full !mr-4 enter-y"> | ||
| 6 | - <ProjectCard :loading="loading" class="enter-y" /> | ||
| 7 | - <DynamicInfo :loading="loading" class="!my-4 enter-y" /> | ||
| 8 | - </div> | ||
| 9 | - <div class="lg:w-3/10 w-full enter-y"> | ||
| 10 | - <QuickNav :loading="loading" class="enter-y" /> | ||
| 11 | - | ||
| 12 | - <Card class="!my-4 enter-y" :loading="loading"> | ||
| 13 | - <img class="xl:h-50 h-30 mx-auto" src="../../../assets/svg/illustration.svg" /> | ||
| 14 | - </Card> | ||
| 15 | - | ||
| 16 | - <SaleRadar :loading="loading" class="enter-y" /> | ||
| 17 | - </div> | ||
| 18 | - </div> | ||
| 19 | - <BasicModal | ||
| 20 | - @register="register" | ||
| 21 | - v-bind="$attrs" | ||
| 22 | - :mask="true" | ||
| 23 | - :showCancelBtn="false" | ||
| 24 | - :showOkBtn="false" | ||
| 25 | - :canFullscreen="false" | ||
| 26 | - :closable="false" | ||
| 27 | - :maskStyle="maskColor" | ||
| 28 | - :height="600" | ||
| 29 | - :width="1500" | ||
| 30 | - :maskClosable="false" | ||
| 31 | - title="请修改密码" | ||
| 32 | - :helpMessage="['请您修改密码']" | ||
| 33 | - > | ||
| 34 | - <PasswordDialog /> | ||
| 35 | - </BasicModal> | ||
| 36 | - </PageWrapper> | ||
| 37 | -</template> | ||
| 38 | -<script lang="ts" setup> | ||
| 39 | - import PasswordDialog from '/@/views/system/password/index.vue'; | ||
| 40 | - import { BasicModal, useModal } from '/@/components/Modal'; | ||
| 41 | - import { getAuthCache } from '/@/utils/auth'; | ||
| 42 | - import { USER_INFO_KEY } from '/@/enums/cacheEnum'; | ||
| 43 | - import { ref, onMounted } from 'vue'; | ||
| 44 | - import { Card } from 'ant-design-vue'; | ||
| 45 | - import { PageWrapper } from '/@/components/Page'; | ||
| 46 | - import WorkbenchHeader from './components/WorkbenchHeader.vue'; | ||
| 47 | - import ProjectCard from './components/ProjectCard.vue'; | ||
| 48 | - import QuickNav from './components/QuickNav.vue'; | ||
| 49 | - import DynamicInfo from './components/DynamicInfo.vue'; | ||
| 50 | - import SaleRadar from './components/SaleRadar.vue'; | ||
| 51 | - | ||
| 52 | - const maskColor = ref({ backgroundColor: 'grey' }); | ||
| 53 | - const statusModel = ref(false); | ||
| 54 | - const [register, { openModal }] = useModal(); | ||
| 55 | - onMounted(() => { | ||
| 56 | - const userInfo: object = getAuthCache(USER_INFO_KEY); | ||
| 57 | - if (userInfo.needSetPwd == true) { | ||
| 58 | - statusModel.value = true; | ||
| 59 | - openModal(statusModel.value); | ||
| 60 | - } else if (userInfo.needSetPwd == false) { | ||
| 61 | - openModal(statusModel.value); | ||
| 62 | - } | ||
| 63 | - }); | ||
| 64 | - //Yunteng123456!!! | ||
| 65 | - //Password123456! | ||
| 66 | - //System123456! | ||
| 67 | - //Testrole123456! | ||
| 68 | - const loading = ref(false); | ||
| 69 | - setTimeout(() => { | ||
| 70 | - loading.value = false; | ||
| 71 | - }, 1500); | ||
| 72 | -</script> |
| @@ -25,8 +25,8 @@ | @@ -25,8 +25,8 @@ | ||
| 25 | :height="600" | 25 | :height="600" |
| 26 | :width="1500" | 26 | :width="1500" |
| 27 | :maskClosable="false" | 27 | :maskClosable="false" |
| 28 | - title="请修改密码" | ||
| 29 | - :helpMessage="['请您修改密码']" | 28 | + title="请您修改初始密码" |
| 29 | + :helpMessage="['请您修改初始密码']" | ||
| 30 | > | 30 | > |
| 31 | <PasswordDialog /> | 31 | <PasswordDialog /> |
| 32 | </BasicModal> | 32 | </BasicModal> |
| @@ -47,7 +47,7 @@ | @@ -47,7 +47,7 @@ | ||
| 47 | const statusModel = ref(false); | 47 | const statusModel = ref(false); |
| 48 | const [register, { openModal }] = useModal(); | 48 | const [register, { openModal }] = useModal(); |
| 49 | onMounted(() => { | 49 | onMounted(() => { |
| 50 | - const userInfo: object = getAuthCache(USER_INFO_KEY); | 50 | + const userInfo = getAuthCache(USER_INFO_KEY); |
| 51 | if (userInfo.needSetPwd == true) { | 51 | if (userInfo.needSetPwd == true) { |
| 52 | statusModel.value = true; | 52 | statusModel.value = true; |
| 53 | openModal(statusModel.value); | 53 | openModal(statusModel.value); |
| @@ -47,26 +47,27 @@ | @@ -47,26 +47,27 @@ | ||
| 47 | const getTitle = computed(() => (!unref(isUpdate) ? '新增设备配置' : '编辑设备配置')); | 47 | const getTitle = computed(() => (!unref(isUpdate) ? '新增设备配置' : '编辑设备配置')); |
| 48 | const [register] = useModalInner((data) => { | 48 | const [register] = useModalInner((data) => { |
| 49 | isUpdate.value = !!data?.isUpdate; | 49 | isUpdate.value = !!data?.isUpdate; |
| 50 | + if (!unref(isUpdate)) { | ||
| 51 | + current.value = 0; | ||
| 52 | + } | ||
| 50 | }); | 53 | }); |
| 51 | function handleStepPrev() { | 54 | function handleStepPrev() { |
| 52 | current.value--; | 55 | current.value--; |
| 53 | } | 56 | } |
| 54 | - function handleStep1Next(step1Values: any) { | 57 | + function handleStep1Next() { |
| 55 | current.value++; | 58 | current.value++; |
| 56 | - console.log(step1Values); | ||
| 57 | } | 59 | } |
| 58 | - function handleStep2Next(step2Values: any) { | 60 | + function handleStep2Next() { |
| 59 | current.value++; | 61 | current.value++; |
| 60 | - console.log(step2Values); | ||
| 61 | } | 62 | } |
| 62 | function handleRedo() { | 63 | function handleRedo() { |
| 63 | current.value = 0; | 64 | current.value = 0; |
| 64 | } | 65 | } |
| 65 | const handleSubmit = () => { | 66 | const handleSubmit = () => { |
| 66 | - console.log(1); | 67 | + console.log(); |
| 67 | }; | 68 | }; |
| 68 | const handleCancel = () => { | 69 | const handleCancel = () => { |
| 69 | - console.log(1); | 70 | + console.log(); |
| 70 | }; | 71 | }; |
| 71 | return { | 72 | return { |
| 72 | handleSubmit, | 73 | handleSubmit, |
| @@ -46,7 +46,6 @@ | @@ -46,7 +46,6 @@ | ||
| 46 | }, | 46 | }, |
| 47 | setup(props) { | 47 | setup(props) { |
| 48 | const statusMapRef = ref(new Map<string | number, MapValue>()); | 48 | const statusMapRef = ref(new Map<string | number, MapValue>()); |
| 49 | - | ||
| 50 | const { query } = useRoute(); | 49 | const { query } = useRoute(); |
| 51 | const go = useGo(); | 50 | const go = useGo(); |
| 52 | const redo = useRedo(); | 51 | const redo = useRedo(); |
| @@ -97,12 +97,11 @@ | @@ -97,12 +97,11 @@ | ||
| 97 | // console.log(record); | 97 | // console.log(record); |
| 98 | try { | 98 | try { |
| 99 | let ids = [record.id]; | 99 | let ids = [record.id]; |
| 100 | - await delOrganization(ids).then(() => { | ||
| 101 | - createMessage.success('删除组织成功'); | ||
| 102 | - handleSuccess(); | ||
| 103 | - }); | 100 | + await delOrganization(ids); |
| 101 | + createMessage.success('删除组织成功'); | ||
| 102 | + handleSuccess(); | ||
| 104 | } catch (e) { | 103 | } catch (e) { |
| 105 | - return Promise.reject(e); | 104 | + return e; |
| 106 | } | 105 | } |
| 107 | } | 106 | } |
| 108 | 107 |