ZaiZai 1 年之前
父節點
當前提交
b7638ea813

+ 10 - 0
electron.vite.config.mjs

@@ -29,5 +29,15 @@ export default defineConfig({
             }),
             UnoCSS(),
         ],
+        server: {
+            proxy: {
+                '/api': {
+                    ws: true,
+                    changeOrigin: true,
+                    target: 'http://39.108.216.210:8014',
+                    rewrite: (path) => path.replace(new RegExp('^/api'), '/'),
+                },
+            },
+        },
     }
 })

二進制
src/renderer/src/assets/images/bj.png


二進制
src/renderer/src/assets/images/jgxt.png


二進制
src/renderer/src/assets/images/section.png


二進制
src/renderer/src/assets/images/section_hover.png


二進制
src/renderer/src/assets/images/xmjszhzx.png


二進制
src/renderer/src/assets/images/xtglxt.png


+ 3 - 0
src/renderer/src/router/index.js

@@ -21,10 +21,13 @@ const router = vueRouter.createRouter({
 router.beforeResolve(async (to) => {
     NProgress.start()
     const token = getStore('access-token'), auth = ['/login']
+    const okArr = ['os']
     if (auth.indexOf(to.path) !== -1) {
         return true
     } else if (isNullES(token)) {
         return '/login'
+    } else if (okArr.indexOf(to.name) !== -1) {
+        return true
     } else {
         const res = await getRouterData(to.name)
         if (res) return true

+ 6 - 0
src/renderer/src/router/modules/base.js

@@ -14,6 +14,12 @@ export default [
         meta: { title: '登录' },
         component: () => import('~src/views/login/index.vue'),
     },
+    {
+        path: '/os',
+        name: 'os',
+        meta: { title: '选择平台' },
+        component: () => import('~src/views/login/os.vue'),
+    },
     {
         path: '/other',
         name: 'other',

+ 1 - 1
src/renderer/src/router/modules/token.js

@@ -1,2 +1,2 @@
 //内置路由需要验证的
-export default []
+export default ['os']

+ 21 - 14
src/renderer/src/views/login/index.vue

@@ -32,19 +32,23 @@
 
 <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 { userLogin } from "~api/user";
 import { deepClone, formValidate } from 'js-fast-way'
-import { useAppLogin } from '~store/user'
 import { getStore, setStore } from '~src/utils/storage'
+import { setRefreshToken, setToken } from 'hc-vue3-ui'
+
 //图片文件
 import bg1Png from '~src/assets/login/bg1.png'
 import bgPng from '~src/assets/login/bg.png'
 import imgPng from '~src/assets/login/img.png'
 
 //初始化
+const router = useRouter()
 const store = useAppStore()
 
+//渲染完成
 onMounted(async () => {
     const username = deepClone(getStore('login-username') || '')
     const password = deepClone(getStore('login-password') || '')
@@ -82,21 +86,24 @@ const formValidateClick = async () => {
     if (!formRes) return false
     //登录请求
     loading.value = true
-    const { error, msg } = await useAppLogin(formValue.value)
-    //登录失败
-    if (error) {
+    const { error, code, res } = await userLogin(formValue.value)
+    if (!error && code === 200) {
+        setToken(res['access_token'])
+        setRefreshToken(res['refresh_token'])
+        store.setUserInfo(res)
+        //登录成功
+        loading.value = false
+        window?.$message?.success('登录成功')
+        setLoginData()
+        setTimeout(() => {
+            loading.value = false
+            router.push({ path: '/os' })
+        }, 1500)
+    } else {
         loading.value = false
-        window?.$message?.error(msg)
+        window?.$message?.error('登录失败')
         return false
     }
-    //登录成功
-    loading.value = false
-    window?.$message?.success('登录成功')
-    setLoginData()
-    setTimeout(() => {
-        loading.value = false
-        router.push({ name: store.home })
-    }, 1500)
 }
 
 //缓存账号密码

+ 92 - 0
src/renderer/src/views/login/os.vue

@@ -0,0 +1,92 @@
+<template>
+    <div class="hc-analysis-os-vue h-full hc-flex-center">
+        <div class="body">
+            <div class="title text-30px font-bold mb-50px text-center">请选择需要使用的数据分析工具</div>
+            <div class="row hc-flex">
+                <div class="col w-300px h-394px hc-flex-center" @click="toPageOs('1')">
+                    <img :src="png2" class="w-50% mt-10px mb-50px" alt=""/>
+                    <div class="text text-24px font-bold mt-34px">数据分析处理工具</div>
+                </div>
+                <div class="col w-300px h-394px hc-flex-center" @click="toPageOs('2')">
+                    <img :src="png3" class="w-50% mt-10px mb-50px" alt=""/>
+                    <div class="text text-24px font-bold mt-34px">高速公路模型分析工具</div>
+                </div>
+            </div>
+        </div>
+    </div>
+</template>
+
+<script setup>
+import { onMounted, ref } from 'vue'
+import { useAppLogin } from '~store/user'
+import { useRouter } from 'vue-router'
+import { useAppStore } from '~src/store'
+import { deepClone, formValidate } from 'js-fast-way'
+import { getStore, setStore } from '~src/utils/storage'
+
+//图片文件
+import png1 from '~ass/images/xmjszhzx.png'
+import png2 from '~ass/images/jgxt.png'
+import png3 from '~ass/images/xtglxt.png'
+
+//初始化
+const router = useRouter()
+const store = useAppStore()
+
+//渲染完成
+onMounted(async () => {
+
+})
+
+//跳转页面
+const toPageOs = (type) => {
+
+}
+</script>
+
+<style scoped lang="scss">
+.hc-analysis-os-vue {
+    background: url(~ass/images/bj.png) no-repeat;
+    background-size: cover;
+    color: #fff;
+    .body {
+        position: relative;
+        .title {
+            letter-spacing: 1px;
+            text-shadow: 0 0 7px rgba(52, 255, 204, .1);
+            background: linear-gradient(180deg, #fff 30%, #8bc0f8);
+            -webkit-background-clip: text;
+            -webkit-text-fill-color: transparent;
+        }
+        .row {
+            position: relative;
+            .col {
+                position: relative;
+                cursor: pointer;
+                flex-direction: column;
+                background: url(~ass/images/section.png) no-repeat;
+                background-size: contain;
+                .text {
+                    letter-spacing: 1px;
+                    text-shadow: 0 0 7px rgba(52, 255, 204, .1);
+                    background: linear-gradient(180deg, #fff 10%, #99c7f6);
+                    -webkit-background-clip: text;
+                    -webkit-text-fill-color: transparent;
+                }
+                &:hover {
+                    background: url(~ass/images/section_hover.png) no-repeat;
+                    background-size: contain;
+                    .text {
+                        background: linear-gradient(180deg,#fff 10%,#7cfaaa);
+                        -webkit-background-clip: text;
+                        -webkit-text-fill-color: transparent;
+                    }
+                }
+            }
+            .col + .col {
+                margin-left: 50px;
+            }
+        }
+    }
+}
+</style>