guanqb
2022-12-20 34fa711f3db4eb1778b3491adc5310249b6b7062
登录页、大搜、样式调整
7 files modified
17 files added
666 ■■■■ changed files
package-lock.json 22 ●●●●● patch | view | raw | blame | history
package.json 18 ●●●●● patch | view | raw | blame | history
public/img/bg/b-t.png patch | view | raw | blame | history
public/img/bg/echarts-content.png patch | view | raw | blame | history
public/img/bg/echarts-title.png patch | view | raw | blame | history
public/img/bg/editLogin.webp patch | view | raw | blame | history
public/img/bg/group13@2x.png patch | view | raw | blame | history
public/img/bg/group16@2x(1).png patch | view | raw | blame | history
public/img/bg/group16@2x.png patch | view | raw | blame | history
public/img/bg/left-bottom.png patch | view | raw | blame | history
public/img/bg/left-top.png patch | view | raw | blame | history
public/img/bg/login-bg.png patch | view | raw | blame | history
public/img/bg/login-content-bg.png patch | view | raw | blame | history
public/img/bg/login_title@2x.png patch | view | raw | blame | history
public/img/bg/rectangle11@2x.png patch | view | raw | blame | history
public/img/bg/right-bottom.png patch | view | raw | blame | history
public/img/bg/right-top.png patch | view | raw | blame | history
src/router/axios.js 48 ●●●● patch | view | raw | blame | history
src/router/page/index.js 10 ●●●●● patch | view | raw | blame | history
src/styles/media/index.scss 51 ●●●●● patch | view | raw | blame | history
src/utils/auth.js 19 ●●●●● patch | view | raw | blame | history
src/views/house/index.vue 57 ●●●● patch | view | raw | blame | history
src/views/login/index.vue 342 ●●●●● patch | view | raw | blame | history
src/views/lyout/index.vue 99 ●●●●● patch | view | raw | blame | history
package-lock.json
@@ -22,8 +22,10 @@
                "element-ui": "^2.15.6",
                "flv.js": "^1.6.2",
                "font-awesome": "^4.7.0",
                "js-md5": "^0.7.3",
                "lib-flexible": "^0.3.2",
                "moment": "^2.29.1",
                "nprogress": "^0.2.0",
                "postcss-px-to-viewport": "^1.1.1",
                "postcss-px2rem": "^0.3.0",
                "px2rem-loader": "^0.1.9",
@@ -10322,6 +10324,11 @@
            "resolved": "https://registry.npmjs.org/js-base64/-/js-base64-2.6.4.tgz",
            "integrity": "sha512-pZe//GGmwJndub7ZghVHz7vjb2LgC1m8B07Au3eYqeqv9emhESByMXxaEgkUkEqJe87oBbSniGYoQNIBklc7IQ=="
        },
        "node_modules/js-md5": {
            "version": "0.7.3",
            "resolved": "https://registry.npmmirror.com/js-md5/-/js-md5-0.7.3.tgz",
            "integrity": "sha512-ZC41vPSTLKGwIRjqDh8DfXoCrdQIyBgspJVPXHBGu4nZlAEvG3nf+jO9avM9RmLiGakg7vz974ms99nEV0tmTQ=="
        },
        "node_modules/js-message": {
            "version": "1.0.7",
            "resolved": "https://registry.npmjs.org/js-message/-/js-message-1.0.7.tgz",
@@ -11374,6 +11381,11 @@
            "engines": {
                "node": ">=4"
            }
        },
        "node_modules/nprogress": {
            "version": "0.2.0",
            "resolved": "https://registry.npmmirror.com/nprogress/-/nprogress-0.2.0.tgz",
            "integrity": "sha512-I19aIingLgR1fmhftnbWWO3dXc0hSxqHQHQb3H8m+K3TnEn/iSeTZZOyvKXWqQESMwuUVnatlCnZdLBZZt2VSA=="
        },
        "node_modules/nth-check": {
            "version": "2.1.1",
@@ -26310,6 +26322,11 @@
            "resolved": "https://registry.npmjs.org/js-base64/-/js-base64-2.6.4.tgz",
            "integrity": "sha512-pZe//GGmwJndub7ZghVHz7vjb2LgC1m8B07Au3eYqeqv9emhESByMXxaEgkUkEqJe87oBbSniGYoQNIBklc7IQ=="
        },
        "js-md5": {
            "version": "0.7.3",
            "resolved": "https://registry.npmmirror.com/js-md5/-/js-md5-0.7.3.tgz",
            "integrity": "sha512-ZC41vPSTLKGwIRjqDh8DfXoCrdQIyBgspJVPXHBGu4nZlAEvG3nf+jO9avM9RmLiGakg7vz974ms99nEV0tmTQ=="
        },
        "js-message": {
            "version": "1.0.7",
            "resolved": "https://registry.npmjs.org/js-message/-/js-message-1.0.7.tgz",
@@ -27203,6 +27220,11 @@
                "path-key": "^2.0.0"
            }
        },
        "nprogress": {
            "version": "0.2.0",
            "resolved": "https://registry.npmmirror.com/nprogress/-/nprogress-0.2.0.tgz",
            "integrity": "sha512-I19aIingLgR1fmhftnbWWO3dXc0hSxqHQHQb3H8m+K3TnEn/iSeTZZOyvKXWqQESMwuUVnatlCnZdLBZZt2VSA=="
        },
        "nth-check": {
            "version": "2.1.1",
            "resolved": "https://registry.npmmirror.com/nth-check/-/nth-check-2.1.1.tgz",
package.json
@@ -9,6 +9,11 @@
    },
    "dependencies": {
        "@dvgis/dc-sdk": "^2.16.2",
        "@fullcalendar/core": "^5.10.1",
        "@fullcalendar/daygrid": "^5.10.1",
        "@fullcalendar/interaction": "^5.10.1",
        "@fullcalendar/timegrid": "^5.10.1",
        "@fullcalendar/vue": "^5.10.1",
        "@turf/turf": "^6.5.0",
        "axios": "^0.22.0",
        "core-js": "^3.6.5",
@@ -17,23 +22,20 @@
        "element-ui": "^2.15.6",
        "flv.js": "^1.6.2",
        "font-awesome": "^4.7.0",
        "js-md5": "^0.7.3",
        "lib-flexible": "^0.3.2",
        "moment": "^2.29.1",
        "nprogress": "^0.2.0",
        "postcss-px-to-viewport": "^1.1.1",
        "postcss-px2rem": "^0.3.0",
        "px2rem-loader": "^0.1.9",
        "qs.js": "^0.1.12",
        "tippy.js": "^6.3.7",
        "vue": "^2.6.11",
        "vue-axios": "^3.3.7",
        "vue-router": "^3.2.0",
        "vue-seamless-scroll": "^1.1.23",
        "vuex": "^3.4.0",
        "@fullcalendar/core": "^5.10.1",
        "@fullcalendar/daygrid": "^5.10.1",
        "@fullcalendar/interaction": "^5.10.1",
        "@fullcalendar/timegrid": "^5.10.1",
        "@fullcalendar/vue": "^5.10.1",
        "moment": "^2.29.1",
        "tippy.js": "^6.3.7"
        "vuex": "^3.4.0"
    },
    "devDependencies": {
        "@vue/cli-plugin-babel": "~4.5.15",
public/img/bg/b-t.png
public/img/bg/echarts-content.png
public/img/bg/echarts-title.png
public/img/bg/editLogin.webp
Binary files differ
public/img/bg/group13@2x.png
public/img/bg/group16@2x(1).png
public/img/bg/group16@2x.png
public/img/bg/left-bottom.png
public/img/bg/left-top.png
public/img/bg/login-bg.png
public/img/bg/login-content-bg.png
public/img/bg/login_title@2x.png
public/img/bg/rectangle11@2x.png
public/img/bg/right-bottom.png
public/img/bg/right-top.png
src/router/axios.js
@@ -14,6 +14,8 @@
 * isToken是否需要token
 */
import axios from 'axios'
import router from '@/router/page/index.js'
import { Message } from 'element-ui'
// 获取公共配置域名
@@ -28,9 +30,9 @@
    // baseURL: 'http://192.168.0.102:1888/api',
    // baseURL: 'http://192.168.0.105:18080/api',
    // baseURL: 'http://192.168.0.115:82',
    baseURL: 'http://192.168.0.112:18080',
    // baseURL: 'http://192.168.0.112:18080',
    // baseURL: 'http://192.168.0.112:9091',
    baseURL: 'http://192.168.0.112:9091',
    // baseURL: 'http://192.168.0.106:1888/api',
    // 内网部署地址
@@ -73,28 +75,26 @@
)
// http response 拦截
// service.interceptors.response.use(
//     (res) => {
//         const code = res.data.code
service.interceptors.response.use(
    (res) => {
        // console.log(res, 12569)
        const code = res.data.code
        if (code == 403 && res.data.data == 'token 验证失败!') {
            // sessionStorage.removeItem('token')
            router.push('/login')
        } else {
            return res
        }
    },
    (error) => {
        Message({
            message: error.message,
            type: 'error',
            duration: 5 * 1000
        })
//         // console.log(code, 555)
//         if (code == 403 && res.data.data == 'token 验证失败!') {
//             sessionStorage.removeItem('token')
//             router.push('/login')
//         } else {
//             return res
//         }
//     },
//     (error) => {
//         Message({
//             message: error.message,
//             type: 'error',
//             duration: 5 * 1000
//         })
//         return Promise.reject(new Error(error))
//     }
// )
        return Promise.reject(new Error(error))
    }
)
export default service
src/router/page/index.js
@@ -17,9 +17,19 @@
const videoList = () => import('../../views/video/list.vue')
const videoRegion = () => import('../../views/video/region.vue')
const activity = () => import('../../views/activity/index.vue')
const login = () => import('../../views/login/index.vue')
const routes = [
    {
        path: '/login',
        name: 'login',
        component: resolve => require(['../../views/login/index.vue'], resolve),
        meta: {
            title: '登录页',
            isAuth: false
        }
    },
    {
        path: '/',
        redirect: '/lyout'
    },
src/styles/media/index.scss
@@ -218,6 +218,7 @@
                                        &>div {
                                            padding: 0 countSizeVw(10, 1920);
                                            font-size:  countSizeVh(16);
                                            .l {
                                                width: countSizeVw(80, 1920);
@@ -552,11 +553,11 @@
                        .search-content {
                            left:  countSizeVw(760, 1920);
                            top: countSizeVh(40);
                            width: countSizeVh(460);
                            width:  countSizeVw(460, 1920);
                            height: countSizeVh(36);
                    
                            input {
                                width: calc(100% - countSizeVw(80, 1920));
                                width: countSizeVw(380, 1920);
                                font-size: countSizeVh(18);
                                border: countSizeVh(1) solid rgb(0, 92, 169);
                                border-radius: countSizeVh(20) 0 0 countSizeVh(20);
@@ -578,8 +579,8 @@
                        .searchExtensively-val-box {
                            top:  countSizeVh(80);
                            left:  countSizeVw(760,1920);
                            width:  countSizeVw(314,1920);
                            max-height:  countSizeVh(200);
                            width:  countSizeVw(380,1920);
                            max-height:  countSizeVh(400);
                            border-radius:  countSizeVh(10);
                    
                            & > div {
@@ -1386,7 +1387,49 @@
                    bottom: countSizeVh(154);
                }
            }
            .auth-page {
                .loginTitle {
                    font-size: countSizeVh(46);
                    letter-spacing: countSizeVh(6);
                }
                .login_content {
                    width: countSizeVw(300, 1920);
                    padding: countSizeVh(30);
                    background-size: 100% 100%, countSizeVh(25), countSizeVh(25), countSizeVh(25), countSizeVh(25);
                    p {
                        font-size: countSizeVh(26);
                        margin-bottom: countSizeVh(15);
                        letter-spacing: countSizeVh(4);
                    }
                    .el-button--primary {
                        height: countSizeVh(34);
                        border-radius: countSizeVh(2);
                    }
                    .el-button {
                        height: countSizeVh(34);
                        line-height: countSizeVh(24);
                        font-size:countSizeVh(14);
                    }
                    .el-input__inner,.el-input__icon{
                        font-size:countSizeVh(14);
                        line-height: countSizeVh(34);
                    }
                    .el-input__inner{
                        height: countSizeVh(34);
                    }
                    .el-input__prefix{
                        left:countSizeVw(5, 1920);
                    }
                    .el-input--prefix .el-input__inner{
                        padding-left:countSizeVw(30, 1920);
                    }
                }
            }
        }
        .option-css,.activity-option,.unit-option{
            height: countSizeVh(40);
            line-height: countSizeVh(40);
src/utils/auth.js
New file
@@ -0,0 +1,19 @@
/*
 * @Author: shuishen 1109946754@qq.com
 * @Date: 2022-07-28 17:50:14
 * @LastEditors: shuishen 1109946754@qq.com
 * @LastEditTime: 2022-08-05 11:45:20
 * @FilePath: \zhny-dsj\src\utils\auth.js
 * @Description: 这是默认设置,请设置`customMade`, 打开koroFileHeader查看配置 进行设置: https://github.com/OBKoro1/koro1FileHeader/wiki/%E9%85%8D%E7%BD%AE
 */
export const getToken = () => {
    return window.sessionStorage.getItem('token')
}
export const setToken = token => {
    return window.sessionStorage.setItem('token', token)
}
export const removeToken = () => {
    return window.sessionStorage.removeItem('token')
}
src/views/house/index.vue
@@ -445,11 +445,7 @@
                    @click="searchExtensivelyVlaClick(item)"
                    v-for="(item, index) in searchExtensivelyArray"
                    :key="index"
                >
                    {{
                    item.name
                    }}
                </div>
                >{{item.name}}</div>
            </div>
        </div>
        <el-dialog
@@ -712,36 +708,6 @@
            searchExtensivelyValBoxShow: false,
            searchExtensivelyArray: [],
            searchExtensivelyValue: '',
            houseTestData: [
                {
                    name: '123',
                    position: [116.026877, 28.685077]
                },
                {
                    name: '234',
                    position: [116.024711, 28.712695]
                },
                {
                    name: '345',
                    position: [116.008426, 28.671838]
                },
                {
                    name: '456',
                    position: [116.017700, 28.675880]
                },
                {
                    name: '567',
                    position: [116.035374, 28.681405]
                },
                {
                    name: '678',
                    position: [116.010374, 28.691405]
                },
                {
                    name: '789',
                    position: [116.038374, 28.701405]
                }
            ],
        }
    },
    watch: {
@@ -809,7 +775,7 @@
        // 大搜
        getSearchExtensively (ak, region, query) {
            getSearchExtensively(ak, region, query).then(res => {
                console.log(res, 333)
                this.searchExtensivelyArray = res.data.result
            })
        },
@@ -991,8 +957,8 @@
        },
        searchExtensivelyClick () {
            this.searchExtensivelyArray = listQuery(this.houseTestData, this.searchExtensivelyValue, 'name')
            console.log(this.searchExtensivelyValue, this.searchExtensivelyArray, 111)
            this.getSearchExtensively('ebf48ecaa1fd436fa3d40c4600aa051f', '361100', this.searchExtensivelyValue)
            this.searchExtensivelyValBoxShow = false
        },
        searchExtensivelyChange () {
@@ -1001,7 +967,7 @@
                this.searchExtensivelyArray = []
            } else {
                this.searchExtensivelyValBoxShow = true
                this.searchExtensivelyArray = listQuery(this.houseTestData, this.searchExtensivelyValue, 'name')
                this.getSearchExtensively('ebf48ecaa1fd436fa3d40c4600aa051f', '361100', this.searchExtensivelyValue)
            }
        },
@@ -1009,8 +975,8 @@
            this.searchExtensivelyValBoxShow = false
            this.searchExtensivelyValue = item.name
            this.$EventBus.$emit('toPosition', {
                siteJd: `${item.position[0]}`,
                siteWd: `${item.position[1]}`,
                siteJd: `${item.location.lng}`,
                siteWd: `${item.location.lat}`,
                siteGd: 200,
                siteHeading: -3,
                sitePitch: -45
@@ -1019,7 +985,7 @@
        searchExtensivelyFocus () {
            this.searchExtensivelyValBoxShow = true
            this.searchExtensivelyArray = listQuery(this.houseTestData, this.searchExtensivelyValue, 'name')
            this.getSearchExtensively('ebf48ecaa1fd436fa3d40c4600aa051f', '361100', this.searchExtensivelyValue)
        }
    },
@@ -1601,12 +1567,12 @@
        input {
            flex: 1;
            width: calc(100% - 80px);
            width: 380px;
            height: 100%;
            font-size: 18px;
            text-indent: 1em;
            color: #ffffff;
            background-color: transparent;
            background-color: $table-body-tr-2n-color;
            border: 1px solid rgb(0, 92, 169);
            border-radius: 20px 0 0 20px;
            vertical-align: top;
@@ -1643,9 +1609,8 @@
        position: absolute;
        top: 80px;
        left: 760px;
        width: 314px;
        width: 380px;
        max-height: 160px;
        height: 160px;
        text-align: left;
        color: #fff;
        background: $el-dialog-bg-color;
src/views/login/index.vue
New file
@@ -0,0 +1,342 @@
<template>
    <div class="auth-page">
        <!-- <div class="title">社区警务平台</div> -->
        <!-- <div class="container"> -->
        <!-- <h1 class="text-xs-center">用户登录</h1> -->
        <!-- <div class="loginbody">
                <el-form :model="user" ref="formName" status-icon :rules="rules">
                    <span class="input">用户名:</span>
                    <el-form-item prop="username">
                        <el-input
                            v-model="user.username"
                            prefix-icon="el-icon-user"
                            placeholder="请输入您的用户名"
                            autocomplete="off"
                        ></el-input>
                    </el-form-item>
                    <span class="input">密码:</span>
                    <el-form-item prop="password">
                        <el-input
                            type="password"
                            v-model="user.password"
                            prefix-icon="el-icon-lock"
                            placeholder="请输入您密码"
                            autocomplete="off"
                        ></el-input>
                    </el-form-item>
                    <el-form-item>
                        <el-button type="primary" @click.enter="onLogin(user)">登&nbsp;录</el-button>
                    </el-form-item>
                </el-form>
        </div>-->
        <!-- </div> -->
        <div class="loginTitle">社区警务平台</div>
        <div class="layui-form login_content">
            <p>用户登录</p>
            <el-form :model="user" ref="formName" status-icon :rules="rules">
                <el-form-item prop="username">
                    <el-input
                        v-model="user.username"
                        prefix-icon="el-icon-user"
                        placeholder="请输入您的用户名"
                        autocomplete="off"
                    ></el-input>
                </el-form-item>
                <el-form-item prop="password">
                    <el-input
                        type="password"
                        v-model="user.password"
                        prefix-icon="el-icon-lock"
                        placeholder="请输入您密码"
                        autocomplete="off"
                    ></el-input>
                </el-form-item>
                <el-form-item>
                    <el-button type="primary" @click.enter="onLogin(user)">登&nbsp;录</el-button>
                </el-form-item>
            </el-form>
        </div>
    </div>
</template>
<script>
import nprogress from 'nprogress'
import md5 from 'js-md5'
import axios from 'axios'
import * as auth from '@/utils/auth'
export default {
    name: 'AppRegister',
    data () {
        return {
            user: {
                username: '',
                password: ''
            },
            rules: {
                username: [
                    { required: true, message: '用户名不能为空', trigger: 'blur' },
                    {
                        min: 3,
                        max: 10,
                        message: '用户账号长度在3~10个字符之间',
                        trigger: 'blur'
                    }
                ],
                password: [
                    { required: true, message: '密码不能为空', trigger: 'blur' },
                    {
                        min: 3,
                        max: 10,
                        message: '用户密码长度在3~10个字符之间',
                        trigger: 'blur'
                    }
                ]
            },
            errors: null,
            newAxios: null
        }
    },
    created () {
        var that = this
        this.newAxios = axios.create({
            baseURL: 'http://dev.jxpskj.com:8020/api',
            timeout: 600000,
            headers: {
                Authorization: 'Basic c2FiZXI6c2FiZXJfc2VjcmV0',
                'Tenant-Id': '000000'
            }
        })
        document.onkeydown = (e) => {
            const _key = window.event.keyCode
            if (_key === 13) {
                that.onLogin(that.user)
            }
        }
    },
    methods: {
        onLogin ({ username, password }) {
            this.$refs.formName.validate((valid) => {
                if (valid) {
                    nprogress.start()
                    this.newAxios({
                        method: 'POST',
                        url: '/blade-auth/oauth/token',
                        params: {
                            username: username,
                            password: md5(password),
                            tenantId: '000000'
                        }
                    }).then((res) => {
                        if (res.data.access_token) {
                            this.$store.commit('setUser', res.data)
                            auth.setToken(res.data.access_token)
                            console.log('23232323', res.data)
                            window.localStorage.setItem('userName', res.data.nick_name)//赋值
                            this.$router.push({ path: '/' })
                        } else {
                            this.$message({
                                type: 'warning',
                                message: '用户名或密码不正确,请重新输入'
                            })
                        }
                        nprogress.done()
                    })
                }
            })
        }
    }
}
</script>
<style scoped lang="scss">
.auth-page {
    position: fixed;
    top: 0;
    left: 0;
    right: 0;
    bottom: 0;
    background-image: url(../../../public/img/bg/login-bg.png);
    background-size: 100% 100%;
    margin: 0;
    padding: 0;
    .loginTitle {
        color: #00cbdd;
        font-size: 46px;
        letter-spacing: 6px;
        font-weight: 700;
        position: absolute;
        top: 20%;
        right: 25%;
        transform: translateX(50%);
    }
    .login_content {
        width: 300px;
        position: absolute;
        text-align: center;
        top: 50%;
        right: 25%;
        transform: translateY(-40%) translateX(50%);
        color: #ffffff;
        padding: 30px;
        background: url(../../../public/img/bg/login-content-bg.png),
            url(../../../public/img/bg/left-top.png) no-repeat left top,
            url(../../../public/img/bg/left-bottom.png) no-repeat left bottom,
            url(../../../public/img/bg/right-top.png) no-repeat right top,
            url(../../../public/img/bg/right-bottom.png) no-repeat right bottom;
        background-repeat: no-repeat;
        background-size: 100% 100%, 25px, 25px, 25px, 25px;
        p {
            font-size: 26px;
            margin-bottom: 15px;
            letter-spacing: 4px;
        }
        :deep(.el-button--primary) {
            width: 100%;
            height: 34px;
            border-radius: 2px;
        }
        :deep(.el-button) {
            line-height: 14px;
        }
    }
    // .title {
    //     width: 1389px;
    //     height: 115px;
    //     // background-image: url(../../../public/img/bg/login_title@2x.png);
    //     background-size: 100% 100%;
    //     margin: 99px 264px 0px 266px;
    //     font-size: 74px;
    //     color: #fff;
    // }
    // .container {
    //     position: absolute;
    //     top: 0;
    //     left: 0;
    //     right: 0;
    //     bottom: 0;
    //     margin: 317px auto;
    //     width: 653px;
    //     height: 552px;
    //     background-image: url(../../../public/img/bg/rectangle11@2x.png);
    //     background-size: 100% 100%;
    //     border-radius: 10px;
    //     letter-spacing: 100;
    //     // h1 {
    //     //     margin: 54px 244px 0px 243px;
    //     //     width: 166px;
    //     //     text-align: left;
    //     //     width: 176px;
    //     //     height: 30px;
    //     //     font-size: 42px;
    //     //     font-family: PangMenZhengDao;
    //     //     font-weight: 400;
    //     //     color: #ffffff;
    //     //     line-height: 30px;
    //     //     letter-spacing: 2px;
    //     // }
    //     // .loginbody {
    //     //     position: absolute;
    //     //     top: 120px;
    //     //     left: 0;
    //     //     right: 0;
    //     //     bottom: 0;
    //     //     width: 72%;
    //     //     // margin: auto;
    //     //     margin-left: 51px;
    //     //     .el-form-item {
    //     //         text-align: center;
    //     //         :deep(.el-input__inner) {
    //     //             width: 548px;
    //     //             height: 59px;
    //     //             background: #0c2d49;
    //     //             opacity: 0.5;
    //     //             margin-bottom: 15px;
    //     //             font-size: 21px;
    //     //         }
    //     //         :deep(.el-input--prefix .el-input__inner) {
    //     //             padding-left: 40px;
    //     //         }
    //     //         :deep(.el-input__inner:focus) {
    //     //             border: 2px solid #22b4cb;
    //     //             opacity: 0.8;
    //     //             color: #fff;
    //     //         }
    //     //         :deep(.el-form-item__error) {
    //     //             color: #f00;
    //     //             line-height: 0;
    //     //             font-size: 15px;
    //     //             opacity: 0.8;
    //     //             letter-spacing: 2px;
    //     //             font-weight: 700;
    //     //         }
    //     //         :deep(.el-input__icon) {
    //     //             height: 91%;
    //     //             width: 34px;
    //     //         }
    //     //         :deep(.el-icon-user::before),
    //     //         :deep(.el-icon-lock::before) {
    //     //             font-size: 22px;
    //     //         }
    //     //         :deep(.el-form-item.is-error)v,
    //     //         :deep(.el-input__validateIcon) {
    //     //             font-size: 22px;
    //     //         }
    //     //         :deep(.el-input__suffix) {
    //     //             right: -48px;
    //     //         }
    //     //         :deep(.el-input input::-webkit-input-placeholder) {
    //     //             color: #ffffff;
    //     //             font-size: 21px;
    //     //             opacity: 0.5;
    //     //             line-height: 27px;
    //     //         }
    //     //         :deep(.el-input input::-moz-input-placeholder) {
    //     //             color: #ffffff;
    //     //             font-size: 21px;
    //     //             opacity: 0.5;
    //     //         }
    //     //         :deep(.el-input input::-ms-input-placeholder) {
    //     //             color: #ffffff;
    //     //             font-size: 21px;
    //     //             opacity: 0.5;
    //     //             line-height: 27px;
    //     //         }
    //     //         :deep(.el-button) {
    //     //             width: 548px;
    //     //             height: 59px;
    //     //             background: linear-gradient(
    //     //                 90deg,
    //     //                 rgba(0, 249, 247, 0.54),
    //     //                 rgba(0, 182, 249, 0.54)
    //     //             );
    //     //             box-shadow: 0px 2px 20px 1px rgba(1, 25, 70, 0.46);
    //     //             font-size: 29px;
    //     //             margin-top: 25px;
    //     //         }
    //     //     }
    //     //     .input {
    //     //         display: inline-block;
    //     //         width: 100px;
    //     //         height: 23px;
    //     //         font-size: 24px;
    //     //         font-family: PingFang SC;
    //     //         color: #ffffff;
    //     //         margin-bottom: 21px;
    //     //     }
    //     // }
    // }
}
</style>
src/views/lyout/index.vue
@@ -11,7 +11,6 @@
<template>
    <div class="wrapper">
        <div class="main-header">
            <!-- <div class="title"></div> -->
            <div class="menu-list left">
                <div
                    @mouseenter="item.childrenFlag = true"
@@ -37,7 +36,6 @@
            </div>
            <div class="title">
                <!-- <img src="../../../public/img/icon.png" /> -->
                <h3>社区警务平台</h3>
            </div>
@@ -67,11 +65,33 @@
            </div>
            <!-- 用户登录展示的 -->
            <div class="user-infor">
                <div>
            <div class="user-infor" @click="openUser">
                <div class="userIcon" :class="{on: userOn == true}">
                    <i class="el-icon-user-solid"></i>
                </div>
                <div class="userDetail" v-if="isShowUserDetail">
                    <div class="triangle"></div>
                    <div class="userName">用户名:{{userName}}</div>
                    <div class="userBtn">
                        <div class="edit" @click="goTOLogin">
                            <img src="../../../public/img/bg/editLogin.webp" alt />
                        </div>
                    </div>
                </div>
            </div>
            <!-- <div class="userIcon" :class="{on: userOn == true}" @click="openUser">
                <div class="userDetail" v-if="isShowUserDetail">
                    <div class="triangle"></div>
                    <div class="userName">用户名:{{userName}}</div>
                    <div class="userBtn">
                        <div class="edit" @click="goTOLogin">
                            >
                            <img src="../../../public/img/editLogin.webp" alt />
                        </div>
                        <div class="return" @click="goTOFllow">返回引导页</div>
                    </div>
                </div>
            </div>-->
        </div>
        <div class="main-container">
@@ -152,7 +172,9 @@
            boxWidth: 0,
            currentUrl: '/lyout/home'
            currentUrl: '/lyout/home',
            userOn: false,
            isShowUserDetail: false,
        }
    },
@@ -252,6 +274,11 @@
                    document.querySelector('.image-switch-img-btn').classList.remove('shrink-btn')
                }
            })
        },
        openUser () {
            this.userOn = !this.userOn
            this.isShowUserDetail = !this.isShowUserDetail
        },
    }
}
@@ -416,7 +443,7 @@
            font-size: 24px;
            cursor: pointer;
            div {
            .userIcon {
                position: absolute;
                top: 0;
                right: 0;
@@ -431,6 +458,66 @@
                box-shadow: inset 0 0 10px $menu-tab-shadow;
                border-radius: 50%;
            }
            .userIcon.on {
                color: rgba(252, 189, 86, 1);
            }
            .userDetail {
                width: 180px;
                height: 92px;
                position: absolute;
                top: 64px;
                right: 4px;
                background: $menu-tab-bg-color;
                border-radius: 8px;
                cursor: default;
                .triangle {
                    position: absolute;
                    top: -16px;
                    right: 20px;
                    width: 0px;
                    height: 0px;
                    border: 8px solid #000;
                    border-top-color: transparent;
                    border-bottom-color: rgba(3, 82, 102, 0.8);
                    border-left-color: transparent;
                    border-right-color: transparent;
                }
                .userName {
                    width: 100%;
                    height: 40px;
                    font-size: 14px;
                    font-weight: 500;
                    color: #fff;
                    line-height: 40px;
                    border-bottom: 1px solid rgba(255, 255, 255, 0.5);
                    position: absolute;
                    top: 0px;
                }
                .userBtn {
                    width: 100%;
                    height: 50px;
                    position: absolute;
                    bottom: 0px;
                    display: flex;
                    justify-content: space-around;
                    padding-top: 4px;
                    & > div {
                        width: 100px;
                        height: 40px;
                        background-color: rgba(168, 222, 255, 0.6);
                        border-radius: 4px;
                        cursor: pointer;
                        line-height: 44px;
                        img {
                            width: 76px;
                            height: 20px;
                        }
                    }
                }
            }
        }
    }