Browse Source

增加菜单和修改布局

ZaiZai 1 year ago
parent
commit
503c52879b

+ 1 - 1
src/api/modules/other.js

@@ -8,7 +8,7 @@ export const userConfigSave = (form, msg = true) => httpApi({
 }, msg)
 
 //用户配置详情
-export const userConfigInfo = (form, msg = true) => httpApi({
+export const userConfigInfo = (form = {}, msg = true) => httpApi({
     url: '/api/blade-business/defaultConfig/detail',
     method: 'get',
     params: form,

+ 25 - 37
src/layout/index.vue

@@ -7,7 +7,7 @@
             </div>
             <div class="hc-aside-menu-box">
                 <el-scrollbar>
-                    <MenuBar :collapse="isCollapse" :cur="MenuBarKey" :datas="MenuBarData" :msg-count="msgCount" @change="MenuBarChange" />
+                    <MenuBar :collapse="isCollapse" :cur="MenuBarKey" :datas="MenuBarData" @change="MenuBarChange" />
                 </el-scrollbar>
             </div>
             <div class="hc-aside-bar-box">
@@ -23,7 +23,7 @@
             <el-header class="hc-header-view">
                 <div class="hc-header-box">
                     <div class="hc-header-menu">
-                        111
+                        <HcTopMenuBar @change="TopMenuChange" />
                     </div>
                     <div class="hc-header-content">
                         <HcCascader @change="cascaderChange" />
@@ -39,8 +39,8 @@
             <el-main id="hc-main-box" class="hc-main-box">
                 <router-view v-if="reloadRouter" v-slot="{ Component }">
                     <transition name="fade-transform">
-                        <keep-alive :max="10" exclude="home,home-index,home-config,other-file-view,other-file-form">
-                            <component :is="Component" :msg-count="msgCount" />
+                        <keep-alive :max="10">
+                            <component :is="Component" />
                         </keep-alive>
                     </transition>
                 </router-view>
@@ -59,13 +59,14 @@ import HelpInfoBar from './modules/HelpInfoBar.vue'
 import UserInfoBar from './modules/UserInfoBar.vue'
 import ConfigBar from './modules/ConfigBar.vue'
 import TopMenuBar from './modules/TopMenuBar.vue'
-import { getArrValue, setImageColorStyle } from 'js-fast-way'
+import HcTopMenuBar from './modules/HcTopMenu.vue'
+import { setImageColorStyle } from 'js-fast-way'
 import { setAppName } from '~uti/tools'
 
 //初始组合式
 const router = useRouter()
 const useRoutes = useRoute()
-const useAppState = useAppStore()
+const store = useAppStore()
 
 //路由参数
 const reloadRouter = ref(true)
@@ -73,49 +74,43 @@ const BarMenuKey = useRoutes?.name ?? 'home-index'
 const BarMenuTitle = useRoutes?.meta?.title ?? ''
 
 //系统信息
-const appTitle = ref(useAppState.getTitle)
-const appLogoIcon = ref(useAppState.getLogoIcon)
-const appLogoName = ref(useAppState.getLogoName)
-const AppColor = ref(useAppState.getColor)
+const appTitle = ref(store.getTitle)
+const appLogoIcon = ref(store.getLogoIcon)
+const appLogoName = ref(store.getLogoName)
+const AppColor = ref(store.getColor)
 
 //顶部菜单数据和相关处理
 const MenuBarKey = ref(BarMenuKey)
 const RoutesTitle = ref(BarMenuTitle)
-const isCollapse = ref(useAppState.getCollapse)
+const isCollapse = ref(store.getCollapse)
 
 //渲染完成
 onMounted(() => {
     setLogoImageColor()
-    setMenuBarData(useAppState.getMenus)
-    useAppState.barMenuName = BarMenuTitle
-    setLogoNameColor(useAppState.getTheme)
-})
-
-//监听
-watch(() => useAppState.getMenus, (val) => {
-    setMenuBarData(val)
+    store.barMenuName = BarMenuTitle
+    setLogoNameColor(store.getTheme)
 })
 
 //监听
 watch(() => [
     useRoutes?.name,
     useRoutes?.meta?.title,
-    useAppState.getCollapse,
+    store.getCollapse,
 ], ([RouteName, RouteTitle, collapse]) => {
     MenuBarKey.value = RouteName ?? 'home-index'
     RoutesTitle.value = RouteTitle ?? ''
     isCollapse.value = collapse
     setIsCollapse(MenuBarKey.value)
-    useAppState.barMenuName = RouteTitle ?? ''
+    store.barMenuName = RouteTitle ?? ''
     setAppName(appTitle.value)
 })
 
 //监听
 watch(() => [
-    useAppState.getTitle,
-    useAppState.getLogoIcon,
-    useAppState.getLogoName,
-    useAppState.getColor,
+    store.getTitle,
+    store.getLogoIcon,
+    store.getLogoName,
+    store.getColor,
 ], ([Title, LogoIcon, LogoName, ColorVal]) => {
     appTitle.value = Title
     appLogoIcon.value = LogoIcon
@@ -143,24 +138,20 @@ const setLogoNameColor = (theme) => {
 const setIsCollapse = (key) => {
     if (key === 'data-fill-wbs') {
         isCollapse.value = true
-        useAppState.setCollapse(true)
+        store.setCollapse(true)
     }
 }
 
-
 //是否折叠
 const collapseChange = (bool) => {
     isCollapse.value = bool
-    useAppState.setCollapse(bool)
+    store.setCollapse(bool)
 }
 
 //菜单数据
-const topMenuData = ref([])
 const MenuBarData = ref([])
-const setMenuBarData = (menu) => {
-    topMenuData.value = getArrValue(menu)
-    console.log(menu)
-    //MenuBarData.value = userMenus
+const TopMenuChange = (data) => {
+    MenuBarData.value = data
 }
 
 
@@ -173,7 +164,7 @@ const MenuBarChange = (item) => {
 
 //首页
 const logoClick = () => {
-    router.push({ name: 'home-index' })
+    router.push({ name: store.homeUrl })
 }
 
 //项目被改变
@@ -184,9 +175,6 @@ const cascaderChange = () => {
         reloadRouter.value = true
     })
 }
-
-//消息数量
-const msgCount = ref({})
 </script>
 
 <style lang="scss" scoped>

+ 1 - 1
src/layout/layout.scoped.scss

@@ -109,7 +109,7 @@
                     display: flex;
                     align-items: center;
                     justify-content: flex-end;
-                    max-width: 50%;
+                    max-width: 60%;
 
                 }
             }

+ 71 - 0
src/layout/modules/HcTopMenu.vue

@@ -0,0 +1,71 @@
+<template>
+    <div class="hc-top-menu-box">
+        <el-scrollbar>
+            <div class="hc-flex">
+                <template v-for="(item, index) in topMenuData" :key="index">
+                    <div class="hc-top-menu-item hc-flex text-4.5" :class="curKey === item?.code ? 'cur' : '' " @click="topMenuClick(item)">
+                        <HcIcon v-if="item?.source" :name="item?.source" :fill="curKey === item?.code" class="mr-1" />
+                        <span class="name">{{ item?.name }}</span>
+                    </div>
+                </template>
+            </div>
+        </el-scrollbar>
+    </div>
+</template>
+
+<script setup>
+import { ref, watch } from 'vue'
+import { useRoute } from 'vue-router'
+import { useAppStore } from '~src/store'
+import { getArrValue } from 'js-fast-way'
+
+const emit = defineEmits(['change'])
+//初始组合式
+const useRoutes = useRoute()
+const useAppState = useAppStore()
+
+//监听菜单数据
+const topMenuData = ref([])
+watch(() => useAppState.getMenus, (val) => {
+    topMenuData.value = getArrValue(val)
+}, { immediate: true, deep: true })
+
+//监听路由数据
+const curKey = ref('')
+watch(() => useRoutes, (obj) => {
+    const topMenuName = obj.matched[0]?.name
+    const menus = topMenuData.value
+    for (let i = 0; i < menus.length; i++) {
+        if (menus[i].code === topMenuName) {
+            emit('change', menus[i].children)
+        }
+    }
+    curKey.value = topMenuName
+}, { immediate: true, deep: true })
+
+//菜单被点击
+const topMenuClick = (item) => {
+    emit('change', item.children)
+}
+</script>
+
+<style lang="scss">
+.hc-top-menu-box {
+    position: relative;
+    height: 100%;
+    .hc-top-menu-item {
+        color: #303133;
+        cursor: pointer;
+        transition: color .2s;
+        &:hover {
+            color: var(--el-color-primary-light-5);
+        }
+        &.cur {
+            color: var(--el-color-primary);
+        }
+    }
+    .hc-top-menu-item + .hc-top-menu-item {
+        margin-left: 24px;
+    }
+}
+</style>

+ 9 - 55
src/layout/modules/MenuBar.vue

@@ -1,37 +1,13 @@
 <template>
     <el-menu :collapse="isCollapse" :default-active="curKey" class="hc-aside-menu" unique-opened>
-        <el-menu-item v-if="indexModel === '1'" index="home-index" @click="MenuClick({ code: 'home-index' })">
-            <div class="hc-aside-menu-item">
-                <div class="menu---item">
-                    <HcIcon :fill="curKey === 'home-index'" class="hc-menu-icon" name="home-3" />
-                    <div class="name">
-                        首页
-                    </div>
-                </div>
-            </div>
-        </el-menu-item>
-        <el-menu-item v-if="indexModel === '2'" index="home-index" @click="MenuClick({ code: 'home-index-static' })">
-            <div class="hc-aside-menu-item">
-                <div class="menu---item">
-                    <HcIcon :fill="curKey === 'home-index-static'" class="hc-menu-icon" name="home-3" />
-                    <div class="name">
-                        首页
-                    </div>
-                </div>
-            </div>
-        </el-menu-item>
-        <MenuItem :collapse="isCollapse" :cur="curKey" :datas="datas" :msg-count="msgCount" @change="MenuClick" />
+        <MenuItem :collapse="isCollapse" :cur="curKey" :datas="datas" @change="MenuClick" />
     </el-menu>
 </template>
 
 <script setup>
 import { ref, watch } from 'vue'
 import MenuItem from './MenuItem.vue'
-import { getToken } from '~src/api/util/auth'
-import { getStoreValue } from '~uti/storage'
-import { getTenantDetail } from '~api/other'
-import { getObjValue } from 'js-fast-way'
-import { useAppStore } from '~src/store'
+
 const props = defineProps({
     datas: {
         type: Array,
@@ -39,55 +15,33 @@ const props = defineProps({
     },
     cur: {
         type: String,
-        default: 'home-index',
+        default: '',
     },
     collapse: {
         type: Boolean,
         default: false,
     },
-    msgCount: {
-        type: Object,
-        default: () => ({}),
-    },
 })
 //事件
 const emit = defineEmits(['change'])
-const useAppState = useAppStore()
+
 //初始变量
 const curKey = ref(props.cur)
 const isCollapse = ref(props.collapse)
-//首页模式
-const indexModel = ref(useAppState.getIndexModel)
+
 //监听
 watch(() => [
     props.cur,
     props.collapse,
-    useAppState.getIndexModel,
-], ([cur, collapse, IndexModel]) => {
+], ([cur, collapse]) => {
     curKey.value = cur
     isCollapse.value = collapse
-    indexModel.value = IndexModel
 })
 
-
+//菜单被点击
 const MenuClick = async (item) => {
-    if (item?.code === 'to-archives-url') {
-        let token = getToken(), domain = item?.path
-        const tenantId = getStoreValue('tenantId')
-        if (tenantId === '000000' || !tenantId) {
-            domain = item?.path
-        } else {
-            const { error, code, data } = await getTenantDetail(tenantId)
-            if (!error && code === 200) {
-                const url = getObjValue(data).domainUrl
-                domain = url ? url : item?.path
-            }
-        }
-        window.open(domain + '/#/auth?token=' + token, '_blank')
-    } else {
-        curKey.value = item?.code || ''
-        emit('change', item)
-    }
+    curKey.value = item?.code || ''
+    emit('change', item)
 }
 </script>
 

+ 2 - 23
src/layout/modules/MenuItem.vue

@@ -17,12 +17,11 @@
                         <div v-else class="name truncate">
                             {{ item?.name }}
                         </div>
-                        <el-badge v-if="item?.code === 'tasks' && msgCount?.allCount > 0" :value="msgCount.allCount" />
                     </div>
                 </div>
                 <HcIcon name="arrow-down-s" ui="el-icon el-sub-menu__icon-arrow" />
             </template>
-            <MenuItem :datas="item?.children" :cur="curKey" :msg-count="msgCount" @change="MenuClick" />
+            <MenuItem :datas="item?.children" :cur="curKey" @change="MenuClick" />
         </el-sub-menu>
         <el-menu-item v-else :index="item?.code" @click="MenuClick(item)">
             <div class="hc-aside-menu-item">
@@ -37,14 +36,6 @@
                     <div v-else class="name truncate">
                         {{ item?.name }}
                     </div>
-                    <el-badge
-                        v-if="item?.code === 'tasks-data' && msgCount?.taskCount > 0"
-                        :value="msgCount.taskCount"
-                    />
-                    <el-badge
-                        v-if="item?.code === 'message-data' && msgCount?.messageCount > 0"
-                        :value="msgCount.messageCount"
-                    />
                 </div>
             </div>
         </el-menu-item>
@@ -68,22 +59,10 @@ const props = defineProps({
         type: Boolean,
         default: false,
     },
-    msgCount: {
-        type: Object,
-        default: () => ({
-            allCount: 0,
-            taskCount: 0,
-            messageCount: 0,
-            messageCount_1: 0,
-            messageCount_2: 0,
-            messageCount_3: 0,
-            messageCount_4: 0,
-            messageCount_5: 0,
-        }),
-    },
 })
 //事件
 const emit = defineEmits(['change'])
+
 //初始变量
 const curKey = ref(props.cur)
 const isCollapse = ref(props.collapse)

+ 8 - 8
src/layout/modules/TopMenuBar.vue

@@ -24,10 +24,12 @@
 import { onMounted, ref, watch } from 'vue'
 import { useRoute, useRouter } from 'vue-router'
 import { getStoreValue, setStoreValue } from '~src/utils/storage'
+import { useAppStore } from '~src/store'
 
 //初始组合式
 const router = useRouter()
 const useRoutes = useRoute()
+const store = useAppStore()
 
 //初始变量
 const barMenuData = ref(getStoreValue('bar-menu-datas') || [])
@@ -54,13 +56,11 @@ watch(() => [
 //设置菜单数据
 const setBarMenuData = () => {
     const { key, path, title, query } = barRoutes.value
-    if (['home', 'home-index'].indexOf(key) === -1) {
-        const index = barMenuData.value.findIndex(item => item.key === key)
-        if (index === -1) {
-            barMenuData.value.push({ path, key: key, title, query })
-        }
-        setStoreValue('bar-menu-datas', barMenuData.value)
+    const index = barMenuData.value.findIndex(item => item.key === key)
+    if (index === -1) {
+        barMenuData.value.push({ path, key: key, title, query })
     }
+    setStoreValue('bar-menu-datas', barMenuData.value)
 }
 
 //菜单被点击
@@ -94,7 +94,7 @@ const handleMenuSelect = ({ key }) => {
     } else if (key === 'all') {
         barMenuData.value = []
         setStoreValue('bar-menu-datas', [])
-        router.push({ name: 'home-index' })
+        router.push({ name: store.homeUrl })
     } else if (key === 'other') {
         const { key } = barRoutes.value
         barMenuData.value = barMenuData.value.filter(item => item.key === key)
@@ -117,7 +117,7 @@ const barMenuCloseClick = (item, index) => {
         }
         if (indexs < 0) {
             setStoreValue('bar-menu-datas', barMenuData.value)
-            router.push({ name: 'home-index' })
+            router.push({ name: store.homeUrl })
         } else {
             barRoutes.value = items
             setStoreValue('bar-menu-datas', barMenuData.value)

+ 4 - 16
src/router/modules/base.js

@@ -44,13 +44,13 @@ export default [
         name: 'debit-pay-top',
         redirect: '/debit-pay/admin/apply',
         meta: { title: '计量支付' },
+        component: Layout,
         children: [
             {
                 path: '/debit-pay/admin',
                 name: 'debit-pay-admin',
                 redirect: '/debit-pay/admin/apply',
                 meta: { title: '计量支付管理' },
-                component: Layout,
                 children: [
                     {
                         path: '/debit-pay/admin/apply',
@@ -89,7 +89,6 @@ export default [
                 name: 'debit-pay-material',
                 redirect: '/debit-pay/material/contract',
                 meta: { title: '材料计量申请' },
-                component: Layout,
                 children: [
                     {
                         path: '/debit-pay/material/contract',
@@ -99,7 +98,7 @@ export default [
                     },
                     {
                         path: '/debit-pay/material/periods',
-                        name: 'debit-pay-admin-periods',
+                        name: 'debit-pay-material-periods',
                         meta: { title: '材料预付款计量期' },
                         component: () => import('~src/views/debit-pay/material/periods.vue'),
                     },
@@ -122,7 +121,6 @@ export default [
                 name: 'debit-pay-start-work',
                 redirect: '/debit-pay/material/contract',
                 meta: { title: '开工预付款计量申请' },
-                component: Layout,
                 children: [
                     {
                         path: '/debit-pay/start-work/period',
@@ -149,7 +147,6 @@ export default [
                 name: 'debit-pay-ledgers',
                 redirect: '/debit-pay/ledgers/debit',
                 meta: { title: '计量支付台账' },
-                component: Layout,
                 children: [
                     {
                         path: '/debit-pay/ledgers/debit',
@@ -194,7 +191,6 @@ export default [
                 name: 'debit-pay-project',
                 redirect: '/debit-pay/project/pay',
                 meta: { title: '工程结算' },
-                component: Layout,
                 children: [
                     {
                         path: '/debit-pay/project/pay',
@@ -217,13 +213,13 @@ export default [
         name: 'periods-top',
         redirect: '/periods/admin/measure',
         meta: { title: '工区计量' },
+        component: Layout,
         children: [
             {
                 path: '/periods/admin',
                 name: 'periods-admin',
                 redirect: '/periods/admin/measure',
                 meta: { title: '工区计量支付管理' },
-                component: Layout,
                 children: [
                     {
                         path: '/periods/admin/measure',
@@ -250,7 +246,6 @@ export default [
                 name: 'periods-ledgers',
                 redirect: '/periods/ledgers/pay',
                 meta: { title: '工区计量支付台账' },
-                component: Layout,
                 children: [
                     {
                         path: '/periods/ledgers/pay',
@@ -295,7 +290,6 @@ export default [
                 name: 'periods-project',
                 redirect: '/periods/project/pay',
                 meta: { title: '工区工程结算' },
-                component: Layout,
                 children: [
                     {
                         path: '/periods/project/pay',
@@ -316,7 +310,6 @@ export default [
                 name: 'periods-start-work',
                 redirect: '/periods/start-work/phase',
                 meta: { title: '开工预付款计量申请' },
-                component: Layout,
                 children: [
                     {
                         path: '/periods/start-work/phase',
@@ -343,7 +336,6 @@ export default [
                 name: 'periods-material',
                 redirect: '/periods/material/contract',
                 meta: { title: '材料计量申请' },
-                component: Layout,
                 children: [
                     {
                         path: '/periods/material/contract',
@@ -376,7 +368,6 @@ export default [
                 name: 'periods-contract-admin',
                 redirect: '/periods/contract-admin/phase',
                 meta: { title: '合同计量支付管理' },
-                component: Layout,
                 children: [
                     {
                         path: '/periods/contract-admin/phase',
@@ -403,7 +394,6 @@ export default [
                 name: 'periods-contract-book',
                 redirect: '/periods/contract-book/ledgers',
                 meta: { title: '合同计量支付台账' },
-                component: Layout,
                 children: [
                     {
                         path: '/periods/contract-book/ledgers',
@@ -420,13 +410,13 @@ export default [
         name: 'alter-top',
         redirect: '/alter/admin/zero',
         meta: { title: '变更管理' },
+        component: Layout,
         children: [
             {
                 path: '/alter/admin',
                 name: 'alter-admin',
                 redirect: '/alter/admin/zero',
                 meta: { title: '变更管理' },
-                component: Layout,
                 children: [
                     {
                         path: '/alter/admin/zero',
@@ -459,7 +449,6 @@ export default [
                 name: 'alter-ledgers',
                 redirect: '/alter/ledgers/cover',
                 meta: { title: '工程变更台账' },
-                component: Layout,
                 children: [
                     {
                         path: '/alter/ledgers/cover',
@@ -504,7 +493,6 @@ export default [
                 name: 'alter-collection',
                 redirect: '/alter/collection/scan',
                 meta: { title: '变更资料归集' },
-                component: Layout,
                 children: [
                     {
                         path: '/alter/collection/scan',

+ 6 - 0
src/store/index.js

@@ -24,6 +24,7 @@ export const useAppStore = defineStore('main', {
         //菜单信息
         menus: getStoreValue('menus') || [],
         buttons: getStoreValue('buttons') || {},
+        homeUrl: getStoreValue('homeUrl'), //首页路由
         //项目合同段数据
         projectContract: getStoreValue('projectContract') || [],
         projectInfo: getStoreValue('projectInfo') || {},
@@ -54,6 +55,7 @@ export const useAppStore = defineStore('main', {
         //菜单信息
         getMenus: state => state.menus,
         getButtons: state => state.buttons,
+        getHomeUrl: state => state.homeUrl,
         //项目合同段数据
         getProjectContract: state => state.projectContract,
         getProjectInfo: state => state.projectInfo,
@@ -124,6 +126,10 @@ export const useAppStore = defineStore('main', {
         getButtonsVal(value) {
             return this.buttons[value] || false
         },
+        setHomeUrl(value) {
+            this.homeUrl = value
+            setStoreValue('homeUrl', value)
+        },
         //项目合同段数据
         setProjectContract(value) {
             this.projectContract = value

+ 38 - 12
src/store/modules/user.js

@@ -7,7 +7,7 @@ import tokenData from '~src/router/modules/token'
 import { setStoreValue } from '~src/utils/storage'
 import { logout, refreshToken, userLogin } from '~api/user'
 import { userConfigInfo, userConfigSave } from '~api/other'
-import { ArrToOneObj, arrIndex, getArrValue, getObjValue } from 'js-fast-way'
+import { ArrToOneObj, arrIndex, getArrValue, getObjValue, isNullES } from 'js-fast-way'
 import { useOsTheme } from 'hc-vue3-ui'
 
 //初始变量
@@ -21,23 +21,49 @@ export const useAppLogin = async (form) => {
         store.setRefreshTokenVal(res['refresh_token'])
         store.setTenantId(res['tenant_id'])
         store.setUserInfo(res)
+        //获取路由菜单
         const routerRes = await setRouterData()
-        if (!routerRes) {
-            return Promise.reject({ msg: '路由异常' })
+        if (routerRes.length <= 0) {
+            return { error: true, msg: '路由异常' }
         }
+        //获取路由首页
+        const isHomeUrl = await getHomeRouter(routerRes)
+        if (isNullES(isHomeUrl)) {
+            return { error: true, msg: '菜单权限异常' }
+        }
+        //获取配置数据
         await initUserConfigInfo()
-        return Promise.resolve({ error, status, res })
+        return { error, status, res }
     } else {
-        return Promise.reject({ error, status, res })
+        return { error, status, res }
     }
 }
 
+//获取路由菜单的主入口路径
+const getHomeRouter = async (arr) => {
+    //判断 arr 数组中的 children 中是否有数据,没数据的话,取下一个元素
+    const menus = arr.filter((item) => {
+        if (item?.children.length > 0) {
+            const menua = item.children.filter((items) => {
+                return items?.children.length > 0
+            })
+            return menua.length > 0
+        } else {
+            return false
+        }
+    })
+    //处理数据
+    if (menus.length <= 0) return false
+    const code = menus[0]?.children[0]?.children[0]?.code
+    if (isNullES(code)) return false
+    store.setHomeUrl(code)
+    return true
+}
+
 //用户信息初始化
 export const initUserConfigInfo = async () => {
     const { error, data } = await userConfigInfo()
-    if (error) {
-        return Promise.reject(false)
-    }
+    if (error) return false
     const res = getObjValue(data)
     if (res?.theme) {
         const { theme, color } = res
@@ -56,13 +82,13 @@ export const initUserConfigInfo = async () => {
         if (colorIndex !== -1) {
             store.setColor(themeColor[colorIndex])
         }
-        return Promise.resolve(true)
+        return true
     } else {
         await userConfigSave({
             theme: appConfig?.theme || '',
-            color: appConfig?.color?.name || ''
+            color: appConfig?.color?.name || '',
         })
-        return Promise.resolve(true)
+        return true
     }
 }
 
@@ -82,7 +108,7 @@ export const setRouterData = async () => {
     store.setMenus(resData)
     setStoreValue('route', routesObj)
     setStoreValue('routes', routes)
-    return Promise.resolve(true)
+    return resData
 }
 
 //刷新token

+ 10 - 0
src/views/debit-pay/admin/book.vue

@@ -0,0 +1,10 @@
+<template>
+</template>
+
+<script setup>
+
+</script>
+
+<style scoped lang="scss">
+
+</style>

+ 23 - 13
src/views/login/index.vue

@@ -54,7 +54,7 @@
 
 <script setup>
 import { nextTick, onMounted, ref } from 'vue'
-import router from '~src/router/index'
+import { useRouter } from 'vue-router'
 import { useAppStore } from '~src/store'
 import { useAppLogin } from '~sto/user'
 import { getTenantID } from '~api/user'
@@ -63,10 +63,11 @@ import { getTopUrl, setAppName } from '~uti/tools'
 import HcPicVue from './components/pic.vue'
 import logoIcon from '~src/assets/logo/icon.png'
 import logoName from '~src/assets/logo/name.png'
-import { formValidate, getObjVal, setImageColorStyle } from 'js-fast-way'
+import { formValidate, getObjVal, isNullES, setImageColorStyle } from 'js-fast-way'
 
+//初始化
+const router = useRouter()
 const userStore = useAppStore()
-userStore.clearStoreData() //先清理下缓存
 
 //系统信息
 const appLogoIcon = ref('')
@@ -76,6 +77,7 @@ const appLogoName = ref('')
 const tenantMode = ref(true)
 
 onMounted(() => {
+    userStore.clearStoreData() //先清理下缓存
     getTenantIdApi()
     setAppImageColor()
 })
@@ -155,23 +157,31 @@ const getTenantIdApi = async () => {
     }
     nextTick(() => {
         setAppImageColor()
-    })
+    }).then()
 }
 
 //登录
 const loading = ref(false)
 const formValidateClick = async () => {
     const formRes = await formValidate(formRef.value)
-    if (formRes) {
-        loading.value = true
-        useAppLogin(formValue.value).then(() => {
-            loading.value = false
-            window?.$message?.success('登录成功')
-            router.push({ path: '/home/index' })
-        }).catch(() => {
-            loading.value = false
-        })
+    if (!formRes) return false
+    //登录请求
+    loading.value = true
+    const { error, msg } = await useAppLogin(formValue.value)
+    loading.value = false
+    //登录失败
+    if (error && isNullES(msg)) return false
+    if (error && !isNullES(msg)) {
+        window?.$message?.error(msg)
+        return false
     }
+    //登录成功
+    window?.$message?.success('登录成功')
+    setTimeout(() => {
+        router.push({
+            name: userStore.homeUrl,
+        })
+    }, 1500)
 }
 
 //忘记密码