Kaynağa Gözat

新增成渝北授权登录页

duy 2 ay önce
ebeveyn
işleme
aa363dcacd

+ 13 - 3
src/api/request/index.js

@@ -29,10 +29,20 @@ export const HcApi = async (obj, msg) => {
 
 //处理数据
 const getResData = ({ msg, code }, isMsg) => {
+
     if (code === 401) {
         window.$message?.error('身份失效,请重新登录!')
-        router.push({ path: '/login-main' }).then()
-    } else if (isMsg) {
-        window.$message?.error(msg || '操作失败')
+       
+        // // 建议修改为
+        const { pid } = router.currentRoute.value.query
+        
+        if (pid === '1891312830718746625') {
+            console.log(77777777777777)
+            
+            // router.push({ path: '/login1' })
+            router.push({ path: '/login-main' }).then()
+        } else {
+            router.push({ path: '/login-main' }).then()
+        }
     }
 }

+ 1 - 1
src/router/index.js

@@ -16,7 +16,7 @@ const router = vueRouter.createRouter({
 //路由拦截
 router.beforeResolve(async (to) => {
     NProgress.start()
-    const token = getToken(), auth = ['/login-main', '/new-login', '/login', '/auth', '/auth-token']
+    const token = getToken(), auth = ['/login-main', '/new-login', '/login', '/login1', '/auth', '/auth-token']
     if (auth.indexOf(to.path) !== -1) {
         return true
     } else if (!token) {

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

@@ -18,6 +18,12 @@ export default [
         meta: { title: '登录' },
         component: () => import('~src/views/login/index.vue'),
     },
+    {
+        path: '/login1',
+        name: 'login1',
+        meta: { title: '登录' },
+        component: () => import('~src/views/login/index1.vue'),
+    },
     {
         path: '/new-login',
         name: 'new-login',

+ 8 - 1
src/views/home/auth.vue

@@ -113,7 +113,14 @@ const loginByTokenApi = async (form) => {
 
 //跳转登陆
 const toLoginTap = () => {
-    router.push({ path: '/login' })
+    // router.push({ path: '/login' })
+    const { pid } = getObjValue(useRoutes.query)
+        if (pid === '1891312830718746625') {
+            // router.push({ path: '/login1' })
+            router.push({ path: '/login-main' })
+        } else {
+            router.push({ path: '/login-main' })
+        }
 }
 </script>
 

+ 3 - 3
src/views/login/components/pic.vue

@@ -1,5 +1,5 @@
 <template>
-    <div class="left-pic-content" v-if="isBody">
+    <div v-if="isBody" class="left-pic-content">
         <div class="dt small-logo">
             <div class="cons">
                 <img src="../../../assets/login/bim.png" alt="" class="logos">
@@ -38,14 +38,14 @@
         </div>
         <div class="logo">
             <a href="http://hczc.hcxxy.com/" target="_blank">
-                <div class="a-cons"/>
+                <div class="a-cons" />
             </a>
         </div>
     </div>
 </template>
 
 <script setup>
-import {ref, nextTick} from "vue";
+import { nextTick, ref } from 'vue'
 
 const isBody = ref(false)
 

+ 235 - 0
src/views/login/index1.vue

@@ -0,0 +1,235 @@
+<template>
+    <div class="login-body">
+        <a v-if="appLogoIcon" class="left-logo" href="http://hczc.hcxxy.com/" target="_blank">
+            <!-- <img id="logo-icon" alt="" :src="appLogoIcon"> -->
+            <img id="logo-name" alt="" :src="appLogoName">
+        </a>
+        <div class="left-pic-container">
+            <Suspense>
+                <HcPicVue />
+                <template #fallback>
+                    Loading...
+                </template>
+            </Suspense>
+        </div>
+        <div class="right-container">
+            <div class="right-app-title">登录档案管理平台</div>
+            <div class="sign-list">
+                <div class="title-tab">
+                    <div :class="account ? 'active' : ''" @click="accountClick">密码登录</div>
+                    <div :class="account ? '' : 'active'" @click="accountClick">游客登录</div>
+                </div>
+                <div v-if="account" class="form-box mt-4">
+                    <el-form ref="formRef" :model="formValue" :rules="formRules" label-width="0px" label-position="left" size="large">
+                        <el-form-item prop="username">
+                            <el-input v-model="formValue.username" placeholder="账号" clearable />
+                        </el-form-item>
+                        <el-form-item prop="password" class="mt-8">
+                            <el-input v-model="formValue.password" type="password" placeholder="密码" clearable show-password @keyup="passwordKeyUp">
+                                <template #suffix>
+                                    <span class="clickable-text" @click="clickableClick">忘记密码</span>
+                                </template>
+                            </el-input>
+                        </el-form-item>
+                        <el-form-item v-if="tenantMode" prop="tenantId">
+                            <el-input v-model="formValue.tenantId" clearable placeholder="租户ID" />
+                        </el-form-item>
+                        <el-form-item>
+                            <el-checkbox v-model="checkbox" label="记住密码" />
+                        </el-form-item>
+                        <el-form-item class="mt-8">
+                            <el-button type="primary" block :loading="loading" @click="formValidateClick">登 录</el-button>
+                        </el-form-item>
+                        <div class="form-protocol" @click="protocolClick">《软件产品用户使用服务协议》</div>
+                    </el-form>
+                </div>
+
+                <div v-else class="form-box mt-4">
+                    <el-form ref="touristsRef" :model="touristsForm" :rules="touristsRules" label-width="auto" label-position="left" size="large">
+                        <el-form-item prop="phone">
+                            <el-input v-model="touristsForm.phone" placeholder="请输入手机号" clearable />
+                        </el-form-item>
+                        <el-form-item class="mt-8">
+                            <el-button type="primary" block :loading="loading" @click="touristsValidateClick">登 录</el-button>
+                        </el-form-item>
+                    </el-form>
+                </div>
+            </div>
+        </div>
+        <!-- 预先加载首页背景图 -->
+        <Suspense>
+            <HcHomeBg />
+        </Suspense>
+    </div>
+</template>
+
+<script setup>
+import { nextTick, onMounted, ref } from 'vue'
+import router from '~src/router/index'
+import { useAppStore } from '~src/store'
+import { setUserTenantInfo, useAppLogin } from '~sto/user'
+import HcPicVue from './components/pic.vue'
+import HcHomeBg from './components/home-bg.vue'
+import { getTenantID } from '~api/user'
+import { getTopUrl } from '~uti/tools'
+import { formValidate, getObjVal, setImageColorStyle } from 'js-fast-way'
+import website from '~src/config'
+import notableform from '~src/assets/view/notableform.svg'
+import { getStoreValue } from '~uti/storage'
+
+const userStore = useAppStore()
+userStore.clearStoreData() //先清理下缓存
+
+//系统信息
+const appLogoIcon = ref('')
+const appLogoName = ref('')
+
+//切换登录类型
+const account = ref(true)
+const tenantMode = ref(true)
+
+const accountClick = () => {
+    account.value = !account.value
+}
+
+onMounted(() => {
+    getTenantIdApi()
+    setAppImageColor()
+})
+
+const setAppImageColor = () => {
+    setImageColorStyle('logo-icon', '#1ECC95')
+    //document.documentElement.setAttribute('class','light color-green')
+}
+
+//表单
+const formRef = ref(null)
+const checkbox = ref(false)
+const formValue = ref({ tenantId: '000000', username: '', password: '', type: 'account' })
+const formRules = {
+    tenantId: {
+        required: true,
+        message: '请输入租户ID',
+        trigger: 'blur',
+    },
+    username: {
+        required: true,
+        message: '请输入账号',
+        trigger: 'blur',
+    },
+    password: {
+        required: true,
+        message: '请输入密码',
+        trigger: 'blur',
+    },
+}
+const passwordKeyUp = (e) => {
+    if (e.key === 'Enter') {
+        formValidateClick()
+    }
+}
+
+//获取租户id
+const getTenantIdApi = async () => {
+    const { error, code, data } = await getTenantID(getTopUrl())
+    const res = getObjVal(data)
+    tenantMode.value = !(!error && code === 200 && res)
+    const { icon, name, id } = await setUserTenantInfo(res)
+    appLogoIcon.value = icon //设置logo图标
+    appLogoName.value = name //设置logo文字
+    formValue.value.tenantId = id //设置租户ID
+    await nextTick(() => {
+        setAppImageColor()
+    })
+}
+
+//登录
+const loading = ref(false)
+const formValidateClick = async () => {
+    const formRes = await formValidate(formRef.value)
+    if (!formRes) return false
+    //登录请求
+    loading.value = true
+    const { error, msg } = await useAppLogin(formValue.value)
+    //登录失败
+    if (error) {
+        loading.value = false
+        window?.$message?.error(msg)
+        return false
+    }
+    window?.$message?.success('登录成功')
+    const role_id = getStoreValue('role_id')
+    setTimeout(() => {
+        loading.value = false
+        if (!website.localModel) {
+            //210跳转文件收集
+            if (website.ex_role_id.includes(role_id)) {
+                router.push({ name: 'transfer-initial-expert' })
+            } else {
+                router.push({ name: 'statistics-stats' })
+            }
+        } else {
+            //甬台温,跳转大屏
+            router.push({
+                name: 'statistics-datav',
+            })
+        }
+    }, 1500)
+}
+
+//游客登录
+const touristsRef = ref(null)
+const touristsForm = ref({ phone: '' })
+const touristsRules = {
+    phone: {
+        required: true,
+        message: '请输入手机号',
+        trigger: 'blur',
+    },
+}
+const touristsValidateClick = async () => {
+    const formRes = await formValidate(touristsRef.value)
+    if (formRes) {
+        console.log(touristsForm.value)
+    }
+}
+
+//忘记密码
+const clickableClick = () => {
+    const val = '<div style="font-size: 16px;">忘记密码请不要紧张,联系您项目上的专属客服人员电话 <span style="color:#1ECC95;">18423665354</span> ,提供身份证明信息即可初始化密码,建议初始化之后由您单独去更改密码</div>'
+    window?.$messageBox?.alert(val, '联系项目客服', {
+        confirmButtonText: '确定',
+        dangerouslyUseHTMLString: true,
+    })
+}
+
+//协议
+const protocolClick = () => {
+    window.open('https://blade-oss-chongqing.oss-cn-shenzhen.aliyuncs.com//upload/20231213/73025c8aba72e1165e0731942f6e66c9.pdf', '_blank')
+}
+</script>
+
+<style lang="scss" scoped>
+@import "../../styles/view/login.scss";
+</style>
+
+<style lang="scss">
+@import "../../styles/theme/login.scss";
+.form-box {
+    .el-input__wrapper.is-focus{
+        box-shadow: 0 0 0 2px var(--el-input-focus-border-color) inset;
+    }
+    .el-form-item.is-error .el-input__wrapper {
+        box-shadow: 0 0 0 2px var(--el-color-danger) inset;
+    }
+}
+.form-protocol {
+    color: #8C8889;
+    font-size: 13px;
+    cursor: pointer;
+    transition: color 0.3s;
+    &:hover {
+        color: var(--el-color-primary);
+    }
+}
+</style>