vue3中英文切换

效果图如下

 

在/src/main.ts文档添加如下内容

增加引入

import i18n from './locales/index'
增加.use(i18n)如下
app
  .use(createPinia())
  .use(router)
  .use(RenRadioGroup)
  .use(RenSelect)
  .use(RenDeptTree)
  .use(RenRegionTree)
  .use(ElementPlus, { locale: zhCn, size: "default" })
  .use(i18n)
  .use(ustore)
  .mount("#app");

第二:在src文件夹下创建locales文件夹,在locales文件夹里新建三个ts文件,分别是index.ts,en.ts,和zh-cn.ts

 /src/locales/index.tsr 内容如下:

import { createI18n } from 'vue-i18n'

// element-plus 中的语言配置
import elementEnLocale from 'element-plus/es/locale/lang/en'
import elementZhLocale from 'element-plus/es/locale/lang/zh-cn'

// 自己的语言配置
import enLocale from './en'
import zhLocale from './zh-cn'

// 语言配置整合
const messages = {
  en:{
    ...enLocale,
    ...elementEnLocale
  },
  'zh-cn':{
    ...zhLocale,
    elementZhLocale
  }
}

// 创建 i18n
const i18n = createI18n({
  legacy: false,
  globalInjection:true,  // 全局模式,可以直接使用 $t
  locale: 'zh-cn',
  messages: messages
})

export default i18n
 
-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
/src/locales/en.ts内容如下
export default {
    common:{
      more:'More',
       logoName:"communication",//"communication management machine platform",
       systemStatus: 'systemStatus',
       systemInfoLabel: 'systemInfo',
       systemInfoValue: 'Mainly display software version, online time and so on.',
       wanNetwork: 'wanNetwork',
       wanNetworkValue: 'The information displayed varies according to the Internet access mode.',
       lanNetworkLabel: 'lanNetwork',
       lanNetworkValue: `The basic information about the router'S LAN interface is displayed.`,
       vpnvalue: 'Displays PPTP, IPSEC, L2TP, OPENVPN connection status.',
       softwareVersion: 'softwareVersion',
       localTime: 'localTime',
       runtime: 'runtime',
       onlineTime: 'onlineTime',
       sendBytes: 'sendBytes',
       receiveBytes: 'receiveBytes',
       networkMode: 'networkMode',
       switchMode: 'switchMode',
       ipAddress: 'ipAddress',
       subnetMask: 'subnetMask',
       MAC: 'MAC',
       addressPool: 'addressPool',
       corporate: 'Caimore Communication Technology Co.,  @2009 ',
       telephone: 'telephone',
       Fax: 'Fax',
    },
    menus:{
      '/':'home',
      Home:'Home',
      home:'home',
      About:'About',
      about:'about',
      welcome: 'Welcome',
      language: 'Language',
      permission: 'permission',
      workbenche: 'workbenche',
      systemSettings: 'systemSettings',
      network: 'network',
      internetManagement: 'internetManagement',
      VPN: 'VPN',
      firewall: 'firewall',
      application: 'application',
      system: 'system',
      WAN: 'WAN',
      LAN: 'LAN',
      WIFI: 'WIFI',
      keepAlive: 'keepAlive',
      networkFilter: 'networkFilter',
      routerSet: 'routerSet',
      securityPolicy: 'securityPolicy',
      remoteManagement: 'remoteManagement',
      wifiAuthentication: 'wifiAuthentication',
      localService: 'localService',
      userManagement: 'userManagement',
      upgrade: 'upgrade',
      netTool: 'netTool',
      timeManagement: 'timeManagement',
      timeToReboot: 'timeToReboot',
      historyLog: 'historyLog',
      debug: 'debug',
      openwrtLog: 'openwrtLog',
      dhcpList: 'dhcpList',
      },
  }
 
--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
src/locales/zh-cn.ts内容如下:
 
export default {
    common:{
      more:'查看更多',
      logoName:"通信管理机平台",
      systemStatus: '系统状态',
      systemInfoLabel: '系统信息',
      systemInfoValue: '主要显示软件版本,在线时间等。',
      wanNetwork: 'WAN网络',
      wanNetworkValue: '不同上网模式,显示WAN口信息不相同。',
      lanNetworkLabel: '局域网',
      lanNetworkValue: '显示路由器LAN口基本信息。',
      vpnvalue: '显示PPTP,IPSEC,L2TP,OPENVPN等连接状态',
      softwareVersion: '软件版本',
      localTime: '本地时间',
      runtime: '运行时间',
      onlineTime: '在线时间',
      sendBytes: '发送字节',
      receiveBytes: '接收字节',
      networkMode: '网络模式',
      switchMode: '交换机模式',
      ipAddress: 'IP地址',
      subnetMask: '子网掩码',
      MAC: '物理地址',
      addressPool: '地址池',
      corporate: '厦门才茂通信科技有限公司',
      telephone: '电话',
      Fax: '传真',
    },
    menus:{
      '/':'首页',
      Home:'首页',
      home:'主页',
      About:'关于',
      about:'关于',
      welcome: '欢迎',
      language: '语言',
      permission: '权限管理',
      workbenche: '工作台',
      systemSettings: '系统设置',
      network: '网络配置',
      internetManagement: '上网管理',
      VPN: 'VPN通道',
      firewall: '防火墙',
      application: '应用功能',
      system: '系统管理',
      WAN: 'WAN配置',
      LAN: 'LAN配置',
      WIFI: 'WIFI配置',
      keepAlive: '在线保持',
      networkFilter: '网络过滤',
      routerSet: '路由配置',
      securityPolicy: '安全策略',
      remoteManagement: '远程管理',
      wifiAuthentication: 'WIFI认证',
      localService: '本地服务',
      userManagement: '用户管理',
      upgrade: '软件升级',
      netTool: '网络诊断',
      timeManagement: '时间管理',
      timeToReboot: '定时重启',
      historyLog: '历史日志',
      debug: '系统日志',
      openwrtLog: 'openwrt日志',
      dhcpList: 'DHCP列表',
     
      },
  }
 
 
-------------------------------------------------------------------------------------------------------------------------------------------------------------------
src/store/index.ts内容如下
import { CacheToken } from "@/constants/cacheKey";
import { IObject } from "@/types/interface";
import { getSysRouteMap } from "@/router";
import baseService from "@/service/baseService";
import { removeCache } from "@/utils/cache";
import { mergeServerRoute } from "@/utils/router";
import { defineStore } from "pinia";


export const useAppStore = defineStore("useAppStore", {
   
  state: () => ({
    state: {
      appIsLogin: false, //是否登录
      appIsReady: false, //app数据是否就绪
      appIsRender: false, //app是否开始渲染内容
      permissions: [], //权限集合
      user: {
        createDate: "",
        deptId: "",
        deptName: "",
        email: "",
        gender: 0,
        headUrl: "",
        id: "",
        mobile: "",
        postIdList: "",
        realName: "",
        roleIdList: "",
        status: 0,
        superAdmin: 0,
        code: "",
        username: ""
      }, //用户信息
      dicts: [], //字典
      routes: [], //最终的路由集合
      menus: [] , //菜单集合
      routeToMeta: {}, //url对应标题meta信息
      tabs: [], //tab标签页集合
      activeTabName: "", //tab当前焦点页
      closedTabs: [] //存储已经关闭过的tab
    } as IObject
  }),
  actions: {
    updateState(data: IObject) {
      Object.keys(data).forEach((x: string) => {
        this.state[x] = data[x];
      });
    },
    initApp() {
      return Promise.all([
        // baseService.get("/sys/menu/nav"), //加载菜单
        // baseService.get("/sys/menu/permissions"), //加载权限
        // baseService.get("/sys/user/info"), //加载用户信息
        // baseService.get("/sys/dict/type/all") //加载字典
      ]).then(() => {
        //[menus, permissions, user, dicts]
        let menus: any = `{
            "code": 0,
            "msg": "success",
            "data": [
                {
                    "id": "1728552235698116810",
                    "pid": "0",
                    "children": [
                        {
                            "id": "1728552700555951042",
                            "pid": "1728552235698116810",
                            "children": [],
                            "name": "WAN配置",
                            "url": "iot/wanconfigure",
                            "menuType": 0,
                            "icon": "icon-user",
                            "permissions": null,
                            "sort": 0,
                            "createDate": "2024-06-04 10:59:53",
                            "parentName": null
                        },
                        {
                            "id": "1728552749673250984",
                            "pid": "1728552235698116810",
                            "children": [],
                            "name": "LAN配置",
                            "url": "iot/lanconfigure",
                            "menuType": 0,
                            "icon": "icon-apartment",
                            "permissions": null,
                            "sort": 1,
                            "createDate": "2024-06-04 10:59:53",
                            "parentName": null
                        },
                        {
                            "id": "1728552821345245556",
                            "pid": "1728552235698116810",
                            "children": [],
                            "name": "WIFI配置",
                            "url": "iot/wificonfigure",
                            "menuType": 0,
                            "icon": "icon-apartment",
                            "permissions": null,
                            "sort": 1,
                            "createDate": "2024-06-04 10:59:53",
                            "parentName": null
                        },
                        {
                            "id": "1728552874444113992",
                            "pid": "1728552235698116810",
                            "children": [],
                            "name": "在线保持",
                            "url": "iot/keepalive",
                            "menuType": 0,
                            "icon": "icon-apartment",
                            "permissions": null,
                            "sort": 1,
                            "createDate": "2024-06-04 10:59:53",
                            "parentName": null
                        }

                    ],
                    "name": "网络配置",
                   
                    "url": null,
                    "menuType": 0,
                    "icon": "icon-safetycertificate",
                    "permissions": null,
                    "sort": 0,
                    "createDate": "2024-06-04 10:59:53",
                    "parentName": null
                },
                {
                    "id": "1728552971720334598",
                    "pid": "0",
                    "children": [
                        {
                            "id": "1728553019691686260",
                            "pid": "1728552971720334598",
                            "children": [],
                            "name": "网络过滤",
                            "url": "iot/networkfilter",
                            "menuType": 0,
                            "icon": "icon-unorderedlist",
                            "permissions": null,
                            "sort": 0,
                            "createDate": "2024-06-04 10:59:53",
                            "parentName": null
                        }
                    ],
                    "name": "上网管理",
                    "url": null,
                    "menuType": 0,
                    "icon": "icon-setting",
                    "permissions": null,
                    "sort": 1,
                    "createDate": "2024-06-04 10:59:53",
                    "parentName": null
                },
                {
                    "id": "1728553165344203805",
                    "pid": "0",
                    "children": [
                        {
                            "id": "1728553215997110862",
                            "pid": "1728553165344203805",
                            "children": [],
                            "name": "PPTP",
                            "url": "iot/pptp",
                            "menuType": 0,
                            "icon": "icon-user",
                            "permissions": null,
                            "sort": 0,
                            "createDate": "2024-06-04 10:59:53",
                            "parentName": null
                        },
                        {
                            "id": "1728553450052368837",
                            "pid": "1728553165344203805",
                            "children": [],
                            "name": "IPSEC",
                            "url": "iot/ipsec",
                            "menuType": 0,
                            "icon": "icon-apartment",
                            "permissions": null,
                            "sort": 1,
                            "createDate": "2024-06-04 10:59:53",
                            "parentName": null
                        },
                        {
                            "id": "1734501924026209585",
                            "pid": "1728553165344203805",
                            "children": [],
                            "name": "L2TP",
                            "url": "iot/l2tp",
                            "menuType": 0,
                            "icon": "icon-apartment",
                            "permissions": null,
                            "sort": 1,
                            "createDate": "2024-06-04 10:59:53",
                            "parentName": null
                        },
                        {
                            "id": "1728553633467822150",
                            "pid": "1728553165344203805",
                            "children": [],
                            "name": "OPENVPN",
                            "url": "iot/openvpn",
                            "menuType": 0,
                            "icon": "icon-apartment",
                            "permissions": null,
                            "sort": 1,
                            "createDate": "2024-06-04 10:59:53",
                            "parentName": null
                        },
                        {
                            "id": "1728553675135523401",
                            "pid": "1728553165344203805",
                            "children": [],
                            "name": "GRE",
                            "url": "iot/gre",
                            "menuType": 0,
                            "icon": "icon-apartment",
                            "permissions": null,
                            "sort": 1,
                            "createDate": "2024-06-04 10:59:53",
                            "parentName": null
                        },
                        {
                            "id": "1728553712184734015",
                            "pid": "1728553165344203805",
                            "children": [],
                            "name": "VXLAN",
                            "url": "iot/vxlan",
                            "menuType": 0,
                            "icon": "icon-apartment",
                            "permissions": null,
                            "sort": 1,
                            "createDate": "2024-06-04 10:59:53",
                            "parentName": null
                        }
                    ],
                    "name": "VPN通道",
                   
                    "url": null,
                    "menuType": 0,
                    "icon": "icon-safetycertificate",
                    "permissions": null,
                    "sort": 0,
                    "createDate": "2024-06-04 10:59:53",
                    "parentName": null
                },
                {
                    "id": "1728554281741718227",
                    "pid": "0",
                    "children": [
                        {
                            "id": "1728554398063451250",
                            "pid": "1728554281741718227",
                            "children": [],
                            "name": "路由配置",
                            "url": "iot/routerinfo",
                            "menuType": 0,
                            "icon": "icon-user",
                            "permissions": null,
                            "sort": 0,
                            "createDate": "2024-06-04 10:59:53",
                            "parentName": null
                        },
                        {
                            "id": "1728556122756836074",
                            "pid": "1728554281741718227",
                            "children": [],
                            "name": "NAT",
                            "url": "iot/nat",
                            "menuType": 0,
                            "icon": "icon-apartment",
                            "permissions": null,
                            "sort": 1,
                            "createDate": "2024-06-04 10:59:53",
                            "parentName": null
                        },
                        {
                            "id": "1734692546426845009",
                            "pid": "1728554281741718227",
                            "children": [],
                            "name": "DMZ",
                            "url": "iot/dmz",
                            "menuType": 0,
                            "icon": "icon-apartment",
                            "permissions": null,
                            "sort": 1,
                            "createDate": "2024-06-04 10:59:53",
                            "parentName": null
                        },
                        {
                            "id": "1728556199613867003",
                            "pid": "1728554281741718227",
                            "children": [],
                            "name": "安全策略",
                            "url": "iot/securitypolicy",
                            "menuType": 0,
                            "icon": "icon-apartment",
                            "permissions": null,
                            "sort": 1,
                            "createDate": "2024-06-04 10:59:53",
                            "parentName": null
                        },
                        {
                            "id": "1728556289513164640",
                            "pid": "1728554281741718227",
                            "children": [],
                            "name": "OSPF",
                            "url": "iot/ospf",
                            "menuType": 0,
                            "icon": "icon-apartment",
                            "permissions": null,
                            "sort": 1,
                            "createDate": "2024-06-04 10:59:53",
                            "parentName": null
                        }
                    ],
                    "name": "防火墙",
                   
                    "url": null,
                    "menuType": 0,
                    "icon": "icon-safetycertificate",
                    "permissions": null,
                    "sort": 0,
                    "createDate": "2024-06-04 10:59:53",
                    "parentName": null
                },
                {
                    "id": "1728556484530391897",
                    "pid": "0",
                    "children": [
                        {
                            "id": "1732674486799345215",
                            "pid": "1728556484530391897",
                            "children": [],
                            "name": "下行通道配置",
                            "url": "iot/downchannelconfig",
                            "menuType": 0,
                            "icon": "icon-user",
                            "permissions": null,
                            "sort": 0,
                            "createDate": "2024-06-04 10:59:53",
                            "parentName": null
                        },
                        {
                            "id": "1732674949801480987",
                            "pid": "1728556484530391897",
                            "children": [],
                            "name": "转发表配置",
                            "url": "iot/forwardingtableconfig",
                            "menuType": 0,
                            "icon": "icon-user",
                            "permissions": null,
                            "sort": 0,
                            "createDate": "2024-06-04 10:59:53",
                            "parentName": null
                        },
                        {
                            "id": "1732675121434331862",
                            "pid": "1728556484530391897",
                            "children": [],
                            "name": "上行通道配置",
                            "url": "iot/upchannelconfig",
                            "menuType": 0,
                            "icon": "icon-user",
                            "permissions": null,
                            "sort": 0,
                            "createDate": "2024-06-04 10:59:53",
                            "parentName": null
                        }
                       
                    ],
                    "name": "应用功能",
                   
                    "url": null,
                    "menuType": 0,
                    "icon": "icon-safetycertificate",
                    "permissions": null,
                    "sort": 0,
                    "createDate": "2024-06-04 10:59:53",
                    "parentName": null
                },
                {
                    "id": "1728556887096287226",
                    "pid": "0",
                    "children": [
                        {
                            "id": "1732267360983751307",
                            "pid": "1728556887096287226",
                            "children": [],
                            "name": "系统状态",
                            "url": "home",
                            "menuType": 0,
                            "icon": "icon-apartment",
                            "permissions": null,
                            "sort": 1,
                            "createDate": "2024-06-04 10:59:53",
                            "parentName": null
                        },
                        {
                            "id": "1728557186293855237",
                            "pid": "1728556887096287226",
                            "children": [],
                            "name": "用户管理",
                            "url": "iot/usermanagement",
                            "menuType": 0,
                            "icon": "icon-user",
                            "permissions": null,
                            "sort": 0,
                            "createDate": "2024-06-04 10:59:53",
                            "parentName": null
                        },
                        {
                            "id": "1735011112715780614",
                            "pid": "1728556887096287226",
                            "children": [],
                            "name": "页面端口",
                            "url": "iot/pageport",
                            "menuType": 0,
                            "icon": "icon-user",
                            "permissions": null,
                            "sort": 0,
                            "createDate": "2024-06-04 10:59:53",
                            "parentName": null
                        },
                        {
                            "id": "1735011112715780614",
                            "pid": "1728556887096287226",
                            "children": [],
                            "name": "设备唯一性",
                            "url": "iot/deviceuniqueness",
                            "menuType": 0,
                            "icon": "icon-user",
                            "permissions": null,
                            "sort": 0,
                            "createDate": "2024-06-04 10:59:53",
                            "parentName": null
                        },
                        {
                            "id": "1728557208665184441",
                            "pid": "1728556887096287226",
                            "children": [],
                            "name": "软件升级",
                            "url": "iot/softwareupgrade",
                            "menuType": 0,
                            "icon": "icon-apartment",
                            "permissions": null,
                            "sort": 1,
                            "createDate": "2024-06-04 10:59:53",
                            "parentName": null
                        },
                        {
                            "id": "1728557387532462541",
                            "pid": "1728556887096287226",
                            "children": [],
                            "name": "网络诊断",
                            "url": "iot/networkdiagnosis",
                            "menuType": 0,
                            "icon": "icon-apartment",
                            "permissions": null,
                            "sort": 1,
                            "createDate": "2024-06-04 10:59:53",
                            "parentName": null
                        },
                        {
                            "id": "1728557434119292569",
                            "pid": "1728556887096287226",
                            "children": [],
                            "name": "时间管理",
                            "url": "iot/timemanagement",
                            "menuType": 0,
                            "icon": "icon-apartment",
                            "permissions": null,
                            "sort": 1,
                            "createDate": "2024-06-04 10:59:53",
                            "parentName": null
                        },
                        {
                            "id": "1728557531699428292",
                            "pid": "1728556887096287226",
                            "children": [],
                            "name": "定时重启",
                            "url": "iot/timedrestart",
                            "menuType": 0,
                            "icon": "icon-apartment",
                            "permissions": null,
                            "sort": 1,
                            "createDate": "2024-06-04 10:59:53",
                            "parentName": null
                        },
                        {
                            "id": "1728557613314500512",
                            "pid": "1728556887096287226",
                            "children": [],
                            "name": "历史日志",
                            "url": "iot/historylog",
                            "menuType": 0,
                            "icon": "icon-apartment",
                            "permissions": null,
                            "sort": 1,
                            "createDate": "2024-06-04 10:59:53",
                            "parentName": null
                        },
                        {
                            "id": "1728557659188977369",
                            "pid": "1728556887096287226",
                            "children": [],
                            "name": "系统日志",
                            "url": "iot/systemlog",
                            "menuType": 0,
                            "icon": "icon-apartment",
                            "permissions": null,
                            "sort": 1,
                            "createDate": "2024-06-04 10:59:53",
                            "parentName": null
                        },
                        {
                            "id": "1728557698037707331",
                            "pid": "1728556887096287226",
                            "children": [],
                            "name": "OpenWrt日志",
                            "url": "iot/openwrtlog",
                            "menuType": 0,
                            "icon": "icon-apartment",
                            "permissions": null,
                            "sort": 1,
                            "createDate": "2024-06-04 10:59:53",
                            "parentName": null
                        },
                        {
                            "id": "1728557736431123513",
                            "pid": "1728556887096287226",
                            "children": [],
                            "name": "DHCP列表",
                            "url": "iot/dhcplist",
                            "menuType": 0,
                            "icon": "icon-apartment",
                            "permissions": null,
                            "sort": 1,
                            "createDate": "2024-06-04 10:59:53",
                            "parentName": null
                        }
                    ],
                    "name": "系统管理",
                   
                    "url": null,
                    "menuType": 0,
                    "icon": "icon-safetycertificate",
                    "permissions": null,
                    "sort": 0,
                    "createDate": "2024-06-04 10:59:53",
                    "parentName": null
                }
            ]
        }`;
      let user: any = `{
            "code": 0,
            "msg": "success",
            "data": {
                "id": "1067246875800000001",
                "username": "admin",
                "realName": "管理员",
                "headUrl": null,
                "gender": 0,
                "email": "root@renren.io",
                "mobile": "13612345678",
                "deptId": null,
                "status": 1,
                "createDate": null,
                "superAdmin": 1,
                "roleIdList": null,
                "deptName": null
            }
        }`;
        let permissions: any = `{
                "code": 0,
                "msg": "success",
                "data": [
                    "iot:deviceinfo:heart",
                    "sys:dept:update",
                    "sys:params:update",
                    "iot:deviceinfo:synchronState",
                    "iot:projectinfo:delete",
                    "iot:electricityalarm:info",
                    "sys:dept:info",
                    "iot:projectnode:export",
                    "sys:role:page",
                    "sys:user:export",
                    "sys:dept:delete",
                    "sys:params:delete",
                    "iot:projectinfo:update",
                    "sys:params:page",
                    "sys:dept:list",
                    "sys:user:page",
                    "iot:deviceinfo:getDeviceInfoListByProjectNodeCode",
                    "sys:role:list",
                    "sys:menu:select",
                    "sys:schedule:update",
                    "sys:schedule:save",
                    "sys:params:save",
                    "iot:deviceinfo:info",
                    "iot:projectinfo:info",
                    "sys:params:info",
                    "sys:schedule:page",
                    "sys:dict:info",
                    "iot:deviceinfo:setBreakerParameter",
                    "sys:role:save",
                    "iot:electricityalarm:page",
                    "sys:schedule:log",
                    "iot:projectnode:page",
                    "iot:deviceinfo:save",
                    "sys:role:update",
                    "iot:circuitinfo:page",
                    "iot:deviceinfo:page",
                    "sys:log:login",
                    "iot:deviceinfo:getBreakerParameter",
                    "iot:deviceinfo:delete",
                    "iot:electricityconsumptionday:page",
                    "iot:circuitinfo:delete",
                    "iot:projectinfo:page",
                    "sys:user:save",
                    "iot:projectnode:save",
                    "sys:oss:all",
                    "iot:circuitinfo:save",
                    "sys:schedule:info",
                    "sys:params:export",
                    "iot:projectnode:delete",
                    "sys:menu:update",
                    "sys:menu:delete",
                    "iot:electricityconsumptionday:getElectricityConsumptionDayListByCircuitCode",
                    "sys:dict:delete",
                    "sys:dict:data:list",
                    "iot:deviceinfo:closeSwitch",
                    "iot:deviceinfo:restart",
                    "sys:menu:list",
                    "iot:deviceinfo:update",
                    "iot:projectinfo:save",
                    "sys:dict:page",
                    "iot:circuitinfo:export",
                    "sys:schedule:resume",
                    "iot:electricityconsumptionday:info",
                    "iot:electricityconsumptionday:export",
                    "iot:circuitinfo:info",
                    "sys:user:delete",
                    "iot:deviceinfo:openSwitch",
                    "iot:projectnode:info",
                    "iot:deviceinfo:getwayParameter",
                    "sys:user:update",
                    "sys:menu:info",
                    "iot:projectnode:update",
                    "iot:projectinfo:export",
                    "sys:menu:save",
                    "sys:log:operation",
                    "iot:electricityalarm:update",
                    "sys:role:info",
                    "sys:schedule:delete",
                    "iot:deviceinfo:softReset",
                    "sys:log:error",
                    "sys:user:info",
                    "iot:deviceinfo:setGatewayParameter",
                    "sys:schedule:run",
                    "sys:role:delete",
                    "iot:deviceinfo:deviceCode",
                    "iot:deviceinfo:export",
                    "sys:dept:save",
                    "sys:schedule:pause",
                    "sys:dict:update",
                    "iot:circuitinfo:update",
                    "sys:dict:save",
                    "iot:deviceinfo:remoteSettings"
                ]
            }`;
            let dicts: any = `{
                      "code": 0,
                      "msg": "success",
                      "data": [
                          {
                              "dictType": "air_conditioning_controller",
                              "dataList": []
                          },
                          {
                              "dictType": "arc_extinguisher",
                              "dataList": []
                          },
                          {
                              "dictType": "backup_power_monitoring",
                              "dataList": []
                          },
                          {
                              "dictType": "door_magnet",
                              "dataList": []
                          },
                          {
                              "dictType": "gender",
                              "dataList": [
                                  {
                                      "dictLabel": "男",
                                      "dictValue": "0"
                                  },
                                  {
                                      "dictLabel": "女",
                                      "dictValue": "1"
                                  },
                                  {
                                      "dictLabel": "保密",
                                      "dictValue": "2"
                                  }
                              ]
                          },
                          {
                              "dictType": "infrared_human_body_sensor",
                              "dataList": []
                          },
                          {
                              "dictType": "multi_channel_dc_metering_control_unit",
                              "dataList": []
                          },
                          {
                              "dictType": "notice_type",
                              "dataList": [
                                  {
                                      "dictLabel": "公告",
                                      "dictValue": "0"
                                  },
                                  {
                                      "dictLabel": "会议",
                                      "dictValue": "1"
                                  },
                                  {
                                      "dictLabel": "其他",
                                      "dictValue": "2"
                                  }
                              ]
                          },
                          {
                              "dictType": "online_monitoring_device",
                              "dataList": []
                          },
                          {
                              "dictType": "smoke_detection",
                              "dataList": []
                          },
                          {
                              "dictType": "temperature_humidity_transmitter",
                              "dataList": []
                          },
                          {
                              "dictType": "video_monitoring",
                              "dataList": []
                          }
                      ]
                  }`;

            menus = JSON.parse(menus);  
            // console.log("menus--->",menus);
            permissions = JSON.parse(permissions);  
            // console.log("permissions--->",permissions);
            user = JSON.parse(user);  
            // console.log("user--->",user);
            dicts = JSON.parse(dicts);  
            // console.log("dicts--->",dicts);

        if (user.code !== 0) {
          console.error("初始化用户数据错误", user.msg);
        }
        const [routes, routeToMeta] = mergeServerRoute(menus.data || [], getSysRouteMap());
        this.updateState({
          permissions: permissions.data || [],
          user: user.data || {},
          dicts: dicts.data || [],
          routeToMeta: routeToMeta || {},
          menus: []
        });
        return routes;
      });
     
    },
    //退出
    logout() {
      removeCache(CacheToken, true);
      this.updateState({
        appIsLogin: false,
        permissions: [],
        user: {},
        dicts: [],
        menus: [],
        routes: [],
        tabs: [],
        activeTabName: ""
      });
    }
  }
});
 
 
 
-------------------------------------------------------------------------------------------------------------------------------------------------------------------
src/store/store.ts内容如下
 

// store.ts

import { createStore } from 'vuex';
 
export default createStore({
 state() {
    return {
      count: 0,
      logoName:"通信管理机平台",
      menuHome: "主页",
      menuPermission: '权限管理',
      workbenche: '工作台',
      systemSettings: '系统设置',
      network: '网络配置',
      internetManagement: '上网管理',
      VPN: 'VPN通道',
      firewall: '防火墙',
      application: '应用功能',
      system: '系统管理',
      WAN: 'WAN配置',
      LAN: 'LAN配置',
      WIFI: 'WIFI配置',
      keepAlive: '在线保持',
      networkFilter: '网络过滤',
      routerSet: '路由配置',
      securityPolicy: '安全策略',
      remoteManagement: '远程管理',
      wifiAuthentication: 'WIFI认证',
      localService: '本地服务',
      userManagement: '用户管理',
      upgrade: '软件升级',
      netTool: '网络诊断',
      timeManagement: '时间管理',
      timeToReboot: '定时重启',
      historyLog: '历史日志',
      debug: '系统日志',
      openwrtLog: 'openwrt日志',
      dhcpList: 'DHCP列表',
      systemStatus: '系统状态',
      systemInfoLabel: '系统信息',
      systemInfoValue: '主要显示软件版本,在线时间等。',
      wanNetwork: 'WAN网络',
      wanNetworkValue: '不同上网模式,显示WAN口信息不相同。',
      lanNetworkLabel: '局域网',
      lanNetworkValue: '显示路由器LAN口基本信息。',
      vpnvalue: '显示PPTP,IPSEC,L2TP,OPENVPN等连接状态',
      softwareVersion: '软件版本',
      localTime: '本地时间',
      runtime: '运行时间',
      onlineTime: '在线时间',
      sendBytes: '发送字节',
      receiveBytes: '接收字节',
      networkMode: '网络模式',
      switchMode: '交换机模式',
      ipAddress: 'IP地址',
      subnetMask: '子网掩码',
      MAC: '物理地址',
      addressPool: '地址池',
      corporate: '厦门才茂通信科技有限公司',
      telephone: '电话',
      Fax: '传真',
      downChannelDataList: [] as any[],
      upChannelDataList: [] as any[]
    };
 },
 mutations: {
    increment(state) {
      state.count++;
    },
    decrement(state) {
      state.count--;
    },
 },
 actions: {
    increment(context) {
      context.commit('increment');
    },
    decrement(context) {
      context.commit('decrement');
    },
 },
 
});
 
 
---------------------------------------------------------------------------------------------------------------------------------------------
src/layout/header/expand.vue内容如下
 
<script lang="ts">
import SvgIcon from "@/components/base/svg-icon";
import baseService from "@/service/baseService";
import { useFullscreen } from "@vueuse/core";
import { defineComponent, computed } from "vue";
import { useRouter } from "vue-router";
import { useAppStore } from "@/store";
import userLogo from "@/assets/images/user.png";
import "@/assets/css/header.less";
import { ElMessageBox } from "element-plus";

// ---------------------------------------------
      import { reactive } from 'vue'
      import { useI18n } from 'vue-i18n'
      import i18n from '@/locales/index'

// -------------------------------------------------
import { mapState, mapActions } from 'vuex';
import { useStore } from 'vuex';
// ---------------------------------------------------

interface IExpand {
  userName?: string;
}

/**
 * 顶部右侧扩展区域
 */
export default defineComponent({
  name: "Expand",
  components: { SvgIcon },
  props: {
    userName: String,
  },
  setup(props: IExpand) {
    const ustore = useStore();
    // console.log("expand.vue----logoName:" ,ustore.state.logoName);

    // ---------------------------------------------------
    const { locale } = useI18n();
    const globalt = i18n.global.t;
    const state = reactive({
      curLanguage: 'zh-cn',
      menuHome : { name: globalt('menus.home') },
      commonLogoName : { name: globalt('common.logoName') },
     
    });
    // console.log("locale",locale);

    const changeLanguage= () =>{
      // if(state.curLanguage == "0"){
      //   locale.value = 'en';
      // }
      // else if(state.curLanguage == "1"){
      //   locale.value = 'zh-cn';
      // }
      locale.value = state.curLanguage;
      state.menuHome = { name: globalt('menus.home') }
      // console.log("menuHome.name----->",state.menuHome.name);
      state.commonLogoName = { name: globalt('common.logoName') };
      // console.log("commonLogoName.name----->",state.commonLogoName.name);
      ustore.state.logoName = state.commonLogoName.name;
      // console.log("ustore.state.logoName----->",ustore.state.logoName);
      ustore.state.menuHome = state.menuHome.name;
// ---------------------------------------------------------------------

      let workbenche = { name: globalt('menus.workbenche') };
      ustore.state.workbenche = workbenche.name;

      let network = { name: globalt('menus.network') };
      ustore.state.network = network.name;
      // console.log("ustore.state.network----->",ustore.state.network);

      let internetManagement = { name: globalt('menus.internetManagement') };
      ustore.state.internetManagement = internetManagement.name;

      let VPN = { name: globalt('menus.VPN') };
      ustore.state.VPN = VPN.name;
     
      let firewall = { name: globalt('menus.firewall') };
      ustore.state.firewall = firewall.name;
     
      let application = { name: globalt('menus.application') };
      ustore.state.application = application.name;
     
      let system = { name: globalt('menus.system') };
      ustore.state.system = system.name;
     
      let WAN = { name: globalt('menus.WAN') };
      ustore.state.WAN = WAN.name;
     
      let LAN = { name: globalt('menus.LAN') };
      ustore.state.LAN = LAN.name;
           
      let WIFI = { name: globalt('menus.WIFI') };
      ustore.state.WIFI = WIFI.name;
           
      let keepAlive = { name: globalt('menus.keepAlive') };
      ustore.state.keepAlive = keepAlive.name;
           
      let networkFilter = { name: globalt('menus.networkFilter') };
      ustore.state.networkFilter = networkFilter.name;
           
      let routerSet = { name: globalt('menus.routerSet') };
      ustore.state.routerSet = routerSet.name;
           
      let securityPolicy = { name: globalt('menus.securityPolicy') };
      ustore.state.securityPolicy = securityPolicy.name;
           
      let remoteManagement = { name: globalt('menus.remoteManagement') };
      ustore.state.remoteManagement = remoteManagement.name;
           
      let wifiAuthentication = { name: globalt('menus.wifiAuthentication') };
      ustore.state.wifiAuthentication = wifiAuthentication.name;
           
      let localService = { name: globalt('menus.localService') };
      ustore.state.localService = localService.name;
           
      let userManagement = { name: globalt('menus.userManagement') };
      ustore.state.userManagement = userManagement.name;
           
      let upgrade = { name: globalt('menus.upgrade') };
      ustore.state.upgrade = upgrade.name;
           
      let netTool = { name: globalt('menus.netTool') };
      ustore.state.netTool = netTool.name;
           
      let timeManagement = { name: globalt('menus.timeManagement') };
      ustore.state.timeManagement = timeManagement.name;
           
      let timeToReboot = { name: globalt('menus.timeToReboot') };
      ustore.state.timeToReboot = timeToReboot.name;
           
      let historyLog = { name: globalt('menus.historyLog') };
      ustore.state.historyLog = historyLog.name;
           
      let debug = { name: globalt('menus.debug') };
      ustore.state.debug = debug.name;
           
      let openwrtLog = { name: globalt('menus.openwrtLog') };
      ustore.state.openwrtLog = openwrtLog.name;
           
      let dhcpList = { name: globalt('menus.dhcpList') };
      ustore.state.dhcpList = dhcpList.name;
// ----------------------------------------------------------------------------
           
      let systemStatus = { name: globalt('common.systemStatus') };
      ustore.state.systemStatus = systemStatus.name;

      let systemInfoLabel = { name: globalt('common.systemInfoLabel') };
      ustore.state.systemInfoLabel = systemInfoLabel.name;

      let systemInfoValue = { name: globalt('common.systemInfoValue') };
      ustore.state.systemInfoValue = systemInfoValue.name;

      let wanNetwork = { name: globalt('common.wanNetwork') };
      ustore.state.wanNetwork = wanNetwork.name;

      let wanNetworkValue = { name: globalt('common.wanNetworkValue') };
      ustore.state.wanNetworkValue = wanNetworkValue.name;

      let lanNetworkLabel = { name: globalt('common.lanNetworkLabel') };
      ustore.state.lanNetworkLabel = lanNetworkLabel.name;

      let lanNetworkValue = { name: globalt('common.lanNetworkValue') };
      ustore.state.lanNetworkValue = lanNetworkValue.name;

      let vpnvalue = { name: globalt('common.vpnvalue') };
      ustore.state.vpnvalue = vpnvalue.name;

      let softwareVersion = { name: globalt('common.softwareVersion') };
      ustore.state.softwareVersion = softwareVersion.name;

      let localTime = { name: globalt('common.localTime') };
      ustore.state.localTime = localTime.name;

      let runtime = { name: globalt('common.runtime') };
      ustore.state.runtime = runtime.name;

      let onlineTime = { name: globalt('common.onlineTime') };
      ustore.state.onlineTime = onlineTime.name;

      let sendBytes = { name: globalt('common.sendBytes') };
      ustore.state.sendBytes = sendBytes.name;

      let receiveBytes = { name: globalt('common.receiveBytes') };
      ustore.state.receiveBytes = receiveBytes.name;

      let networkMode = { name: globalt('common.networkMode') };
      ustore.state.networkMode = networkMode.name;

      let switchMode = { name: globalt('common.switchMode') };
      ustore.state.switchMode = switchMode.name;

      let ipAddress = { name: globalt('common.ipAddress') };
      ustore.state.ipAddress = ipAddress.name;

      let subnetMask = { name: globalt('common.subnetMask') };
      ustore.state.subnetMask = subnetMask.name;

      let MAC = { name: globalt('common.MAC') };
      ustore.state.MAC = MAC.name;

      let addressPool = { name: globalt('common.addressPool') };
      ustore.state.addressPool = addressPool.name;

      let corporate = { name: globalt('common.corporate') };
      ustore.state.corporate = corporate.name;

      let telephone = { name: globalt('common.telephone') };
      ustore.state.telephone = telephone.name;

      let Fax = { name: globalt('common.Fax') };
      ustore.state.Fax = Fax.name;

      console.log("------------>localTime---",ustore.state.localTime);




    };
    // -----------------------------------------------------------------

// ----------------------------------------------------------------------------
    const router = useRouter();
    const store = useAppStore();
    const { isFullscreen, toggle } = useFullscreen();

    const onClickUserMenus = (path: string) => {
      if (path === "/login") {
        ElMessageBox.confirm("确定进行[退出]操作?", "提示", {
          confirmButtonText: "确定",
          cancelButtonText: "取消",
          type: "warning",
        })
          .then(() => {
            baseService.post("/logout").finally(() => {
              router.push(path);
            });
          })
          .catch(() => {
            //
          });
      } else {
        router.push(path);
      }
    };
    // const changeLanguage = () => {
    //     state.curLanguage = state.curLanguage === 'zh-cn' ? 'en' : 'zh-cn'
    //     locale.value = state.curLanguage
    //   };
    return {
      props,
      store,
      isFullscreen,
      userLogo,
      onClickUserMenus,
      toggle,
      // menuHome,
      state,
      locale,
      changeLanguage,
      globalt,
    };

// --------------------------------------------------

// -----------------------------------------------------

  },


});

</script>
<template>
  <div class="rr-header-right-items">

    <div class="flex flex-wrap gap-4 items-center"  >
      <!-- <el-select
      v-model="state.curLanguage"
      placeholder="change Language"
       @change="changeLanguage"  
       size="large"
       style="width: 180px">
        <el-option label="English" :value="0"></el-option>
        <el-option label="中文" :value="1"></el-option>
      </el-select> -->
      <select v-model="state.curLanguage" placeholder="change Language" @change="changeLanguage">
        <option value="en">English</option>
        <option value="zh-cn">中文</option>
      </select>
      </div>

    <!-- <div>{{state.menuHome.name}}</div> -->


    <div>
      <a href="https://www.caimore.com" target="_blank">
        <svg-icon name="icon-earth"></svg-icon>
      </a>
    </div>
    <div>
      <a href="https://www.caimore.com" target="_blank">
        <svg-icon name="icon-gitee"></svg-icon>
      </a>
    </div>
    <div @click="toggle" class="hidden-xs-only">
      <span>
        <svg-icon :name="isFullscreen ? 'tuichuquanping' : 'fullscreen2'"></svg-icon>
      </span>
    </div>
    <div style="display: flex; justify-content: center; align-items: center">
      <img
        :src="userLogo"
        :alt="props.userName"
        style="
          width: 30px;
          height: 30px;
          border-radius: 50%;
          margin-top: 3px;
          margin-right: 5px;
        "
      />
      <el-dropdown @command="onClickUserMenus">
        <template #dropdown>
          <el-dropdown-menu>
            <el-dropdown-item icon="lock" command="/user/password">
              修改密码
            </el-dropdown-item>
            <el-dropdown-item icon="switch-button" divided command="/login">
              退出登录
            </el-dropdown-item>
          </el-dropdown-menu>
        </template>
        <span class="el-dropdown-link" style="display: flex">
          {{ props.userName }}
          <el-icon class="el-icon--right" style="font-size: 14px"><arrow-down /></el-icon>
        </span>
      </el-dropdown>
    </div>
  </div>
</template>
 
 
--------------------------------------------------------------------------------------------------------------------------------------------------------------
src/layout/header/breadcrumb.vue内容如下
 
<script lang="ts">
import { IObject } from "@/types/interface";
import { getValueByKeys } from "@/utils/utils";
import { defineComponent, ref, watch } from "vue";
import { RouteLocationMatched, useRouter } from "vue-router";
// -------------------------------------------------
import { mapState, mapActions } from 'vuex';
import { useStore } from 'vuex';
// ---------------------------------------------------
/**
 * 顶部面包屑
 */
export default defineComponent({
  name: "Breadcrumb",
  setup() {
    const ustore = useStore();

    const router = useRouter();
    const breadcrumbs = ref<IObject[]>([]);
    const { currentRoute } = router;
    const firstRoute = (router.options.routes[0] || {}) as RouteLocationMatched;
    const home: RouteLocationMatched = firstRoute.children && firstRoute.children.length > 0 ? (firstRoute.children[0] as RouteLocationMatched) : firstRoute;
    watch(
      () => currentRoute.value,
      () => {
        breadcrumbs.value = currentRoute.value.path !== home.path ? getValueByKeys(currentRoute.value, "meta.matched", []) : [];
        // console.log("breadcrumb.vue----------breadcrumbs--->",breadcrumbs);
        for( let i =0; i < breadcrumbs.value.length; i++){
          let item1 = breadcrumbs.value[i];
          // console.log("breadcrumb.vue----------item1--->",item1);
          if(item1?.id === "1728558685361984802"){//工作台
            item1.title = ustore.state.workbenche;
            breadcrumbs.value.splice(i,1,item1);
          }
          else if(item1?.id === "1728552235698116810"){//网络配置
            item1.title = ustore.state.network;
            breadcrumbs.value.splice(i,1,item1);
          }
          else if(item1?.id === "1728552971720334598"){//上网管理
            item1.title = ustore.state.internetManagement;
            breadcrumbs.value.splice(i,1,item1);
          }
          else if(item1?.id === "1728553165344203805"){//VPN通道
            item1.title = ustore.state.VPN;
            breadcrumbs.value.splice(i,1,item1);
          }
          else if(item1?.id === "1728554281741718227"){//防火墙
            item1.title = ustore.state.firewall;
            breadcrumbs.value.splice(i,1,item1);
          }
          else if(item1?.id === "1728556484530391897"){//应用功能
            item1.title = ustore.state.application;
            breadcrumbs.value.splice(i,1,item1);
          }
          else if(item1?.id === "1728556887096287226"){//系统管理
            item1.title = ustore.state.system;
            breadcrumbs.value.splice(i,1,item1);
          }
          else if(item1?.id == "1728558602965812843"){
              item1.title = ustore.state.menuHome;
              breadcrumbs.value.splice(i,1,item1);
          }
          else if(item1?.id == "1728552700555951042"){//WAN配置
              item1.title = ustore.state.WAN;
              breadcrumbs.value.splice(i,1,item1);
          }
          else if(item1?.id == "1728552749673250984"){//LAN配置
              item1.title = ustore.state.LAN;
              breadcrumbs.value.splice(i,1,item1);
          }
          else if(item1?.id == "1728552821345245556"){//WIFI配置
            item1.title = ustore.state.WIFI;
              breadcrumbs.value.splice(i,1,item1);
          }
          else if(item1?.id == "1728552874444113992"){//在线保持
            item1.title = ustore.state.keepAlive;
              breadcrumbs.value.splice(i,1,item1);
          }
          else if(item1?.id == "1728553019691686260"){//网络过滤
            item1.title = ustore.state.networkFilter;
              breadcrumbs.value.splice(i,1,item1);
          }
          else if(item1?.id == "1728554398063451250"){//路由配置
            item1.title = ustore.state.routerSet;
              breadcrumbs.value.splice(i,1,item1);
          }
          else if(item1?.id == "1728556199613867003"){//安全策略
            item1.title = ustore.state.securityPolicy;
              breadcrumbs.value.splice(i,1,item1);
          }
          else if(item1?.id == "1728556528657490922"){//远程管理
            item1.title = ustore.state.remoteManagement;
              breadcrumbs.value.splice(i,1,item1);
          }
          else if(item1?.id == "1728556555003359389"){//WIFI认证
            item1.title = ustore.state.wifiAuthentication;
              breadcrumbs.value.splice(i,1,item1);
          }
          else if(item1?.id == "1728556793123544755"){//本地服务
            item1.title = ustore.state.localService;
              breadcrumbs.value.splice(i,1,item1);
          }
          else if(item1?.id == "1728557186293855237"){//用户管理
            item1.title = ustore.state.userManagement;
              breadcrumbs.value.splice(i,1,item1);
          }
          else if(item1?.id == "1728557208665184441"){//软件升级
            item1.title = ustore.state.upgrade;
              breadcrumbs.value.splice(i,1,item1);
          }
          else if(item1?.id == "1728557387532462541"){//网络诊断
            item1.title = ustore.state.netTool;
              breadcrumbs.value.splice(i,1,item1);
          }
          else if(item1?.id == "1728557434119292569"){//时间管理
            item1.title = ustore.state.timeManagement;
              breadcrumbs.value.splice(i,1,item1);
          }
          else if(item1?.id == "1728557531699428292"){//定时重启
            item1.title = ustore.state.timeToReboot;
              breadcrumbs.value.splice(i,1,item1);
          }
          else if(item1?.id == "1728557613314500512"){//历史日志
            item1.title = ustore.state.historyLog;
              breadcrumbs.value.splice(i,1,item1);
          }
          else if(item1?.id == "1728557659188977369"){//系统日志
            item1.title = ustore.state.debug;
              breadcrumbs.value.splice(i,1,item1);
          }
          else if(item1?.id == "1728557698037707331"){//openwrt日志
            item1.title = ustore.state.openwrtLog;
              breadcrumbs.value.splice(i,1,item1);
          }
          else if(item1?.id == "1728557736431123513"){//DHCP列表
            item1.title = ustore.state.dhcpList;
              breadcrumbs.value.splice(i,1,item1);
          }
        }

      }
    );

    return { breadcrumbs, currentRoute, home,ustore };
  }
});
</script>
<template>
  <el-breadcrumb separator="/" style="padding-top: 4px">
    <el-breadcrumb-item :to="{ path: home.path }"> {{ustore.state.menuHome}} </el-breadcrumb-item>
    <el-breadcrumb-item v-for="x in breadcrumbs" :key="x.path">{{ currentRoute.query._mt || x.title || "" }} </el-breadcrumb-item>
  </el-breadcrumb>
</template>
 
------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
src/layout/sidebar/base-sidebar.vue内容如下
 
<script lang="ts">
import { themeSetting } from "@/constants/config";
import { EMitt, EThemeSetting } from "@/constants/enum";
import { IObject } from "@/types/interface";
import Layout from "@/layout/layout.vue";
import emits from "@/utils/emits";
import { toValidRoutes } from "@/utils/router";
import { getThemeConfigCacheByKey } from "@/utils/theme";
import { useWindowSize } from "@vueuse/core";
import { defineComponent, onMounted, reactive, ref, watch } from "vue";
import { RouteRecordRaw, useRoute, useRouter } from "vue-router";
import { useAppStore } from "@/store";
import SidebarMenusItems from "./sidebar-menus-items.vue";
import { getValueByKeys } from "@/utils/utils";
// -------------------------------------------------
import { mapState, mapActions } from 'vuex';
import { useStore } from 'vuex';
// ---------------------------------------------------


/**
 * 侧边栏导航菜单
 */
export default defineComponent({
  name: "BaseSidebar",
  components: { SidebarMenusItems },
  props: {
    mode: { type: String, default: "vertical" },
    menus: Array,
    currRoute: String,
    router: Boolean,
    onSelect: Function,
    isMobile: Boolean
  },
  setup(props) {
    const ustore = useStore();
    const route = useRoute();
    const router = useRouter();
    const win = useWindowSize();
    const store = useAppStore();
    const defaultMenus = toValidRoutes((props.menus ?? store.state.routes) as RouteRecordRaw[]);
    const getPopClassName = () => {
      const sidebarCache = getThemeConfigCacheByKey(EThemeSetting.Sidebar);
      return `rr-sidebar-menu-pop-${props.mode === "vertical" && sidebarCache === "dark" ? "dark" : "light"}`;
    };
    const state = reactive({
      collapseSidebar: getThemeConfigCacheByKey(EThemeSetting.SidebarCollapse),
      uniqueOpened: themeSetting.sidebarUniOpened,
      windowWidth: win.width || 800,
      hiddenIndex: -1,
      rawMenus: defaultMenus,
      menus: defaultMenus,
      popClassName: getPopClassName(),
      currRoute: props.currRoute ?? route.path
    });
    const elm = ref({} as IObject);
    const li = ref({
      widths: [] as number[]
    });
    const initComputeSidebarLayout = (width: number) => {
      // console.log("base-sidebar.vue-----rawMenus---11111>",state.rawMenus);
      if (props.mode === "horizontal") {
        //存储水平布局元素信息
        const el = elm.value.$el;
        const lis = el.querySelectorAll("li");
        li.value.widths = [];
        lis.forEach((x: Element) => {
          li.value.widths.push(x.getBoundingClientRect().width);
        });
        computeSidebarLayout(width);
      }
    };

    //
    onMounted(() => {
      initComputeSidebarLayout(state.windowWidth);
    });
    watch(

      () => {
        for( let i =0; i < state.menus.length; i++){
          let item1 = state.menus[i];
          // console.log("base-sidebar.vue-----item1--->",i,item1);
          if(item1.meta?.id === "1728558685361984802"){//工作台
            item1.meta.title = ustore.state.workbenche;
            state.menus.splice(i,1,item1);
          }
          else if(item1.meta?.id === "1728552235698116810"){//网络配置
            item1.meta.title = ustore.state.network;
            state.menus.splice(i,1,item1);
          }
          else if(item1.meta?.id === "1728552971720334598"){//上网管理
            item1.meta.title = ustore.state.internetManagement;
            state.menus.splice(i,1,item1);
          }
          else if(item1.meta?.id === "1728553165344203805"){//VPN通道
            item1.meta.title = ustore.state.VPN;
            state.menus.splice(i,1,item1);
          }
          else if(item1.meta?.id === "1728554281741718227"){//防火墙
            item1.meta.title = ustore.state.firewall;
            state.menus.splice(i,1,item1);
          }
          else if(item1.meta?.id === "1728556484530391897"){//应用功能
            item1.meta.title = ustore.state.application;
            state.menus.splice(i,1,item1);
          }
          else if(item1.meta?.id === "1728556887096287226"){//系统管理
            item1.meta.title = ustore.state.system;
            state.menus.splice(i,1,item1);
          }
          // debugger;
          let itemTemp : Array<any>;
          itemTemp = (Array<any>)(item1.children);
          for(let j =0; j < itemTemp.length; j++){
            let item2 = itemTemp[j];

            for(let k =0; k < item2.length; k++){
              let item3 = item2[k];
              if(item3.meta?.id == "1728558602965812843"){
                  item3.meta.title = ustore.state.menuHome;
                  item2.splice(k,1,item3);
                  state.menus.splice(i,1,item1);
              }
              else if(item3.meta?.id == "1728552700555951042"){//WAN配置
                  item3.meta.title = ustore.state.WAN;
                  item2.splice(k,1,item3);
                  state.menus.splice(i,1,item1);
              }
              else if(item3.meta?.id == "1728552749673250984"){//LAN配置
                  item3.meta.title = ustore.state.LAN;
                  item2.splice(k,1,item3);
                  state.menus.splice(i,1,item1);
              }
              else if(item3.meta?.id == "1728552821345245556"){//WIFI配置
                  item3.meta.title = ustore.state.WIFI;
                  item2.splice(k,1,item3);
                  state.menus.splice(i,1,item1);
              }
              else if(item3.meta?.id == "1728552874444113992"){//在线保持
                  item3.meta.title = ustore.state.keepAlive;
                  item2.splice(k,1,item3);
                  state.menus.splice(i,1,item1);
              }
              else if(item3.meta?.id == "1728553019691686260"){//网络过滤
                  item3.meta.title = ustore.state.networkFilter;
                  item2.splice(k,1,item3);
                  state.menus.splice(i,1,item1);
              }
              else if(item3.meta?.id == "1728554398063451250"){//路由配置
                  item3.meta.title = ustore.state.routerSet;
                  item2.splice(k,1,item3);
                  state.menus.splice(i,1,item1);
              }
              else if(item3.meta?.id == "1728556199613867003"){//安全策略
                  item3.meta.title = ustore.state.securityPolicy;
                  item2.splice(k,1,item3);
                  state.menus.splice(i,1,item1);
              }
              else if(item3.meta?.id == "1728556528657490922"){//远程管理
                  item3.meta.title = ustore.state.remoteManagement;
                  item2.splice(k,1,item3);
                  state.menus.splice(i,1,item1);
              }
              else if(item3.meta?.id == "1728556555003359389"){//WIFI认证
                  item3.meta.title = ustore.state.wifiAuthentication;
                  item2.splice(k,1,item3);
                  state.menus.splice(i,1,item1);
              }
              else if(item3.meta?.id == "1728556793123544755"){//本地服务
                  item3.meta.title = ustore.state.localService;
                  item2.splice(k,1,item3);
                  state.menus.splice(i,1,item1);
              }
              else if(item3.meta?.id == "1728557186293855237"){//用户管理
                  item3.meta.title = ustore.state.userManagement;
                  item2.splice(k,1,item3);
                  state.menus.splice(i,1,item1);
              }
              else if(item3.meta?.id == "1728557208665184441"){//软件升级
                  item3.meta.title = ustore.state.upgrade;
                  item2.splice(k,1,item3);
                  state.menus.splice(i,1,item1);
              }
              else if(item3.meta?.id == "1728557387532462541"){//网络诊断
                  item3.meta.title = ustore.state.netTool;
                  item2.splice(k,1,item3);
                  state.menus.splice(i,1,item1);
              }
              else if(item3.meta?.id == "1728557434119292569"){//时间管理
                  item3.meta.title = ustore.state.timeManagement;
                  item2.splice(k,1,item3);
                  state.menus.splice(i,1,item1);
              }
              else if(item3.meta?.id == "1728557531699428292"){//定时重启
                  item3.meta.title = ustore.state.timeToReboot;
                  item2.splice(k,1,item3);
                  state.menus.splice(i,1,item1);
              }
              else if(item3.meta?.id == "1728557613314500512"){//历史日志
                  item3.meta.title = ustore.state.historyLog;
                  item2.splice(k,1,item3);
                  state.menus.splice(i,1,item1);
              }
              else if(item3.meta?.id == "1728557659188977369"){//系统日志
                  item3.meta.title = ustore.state.debug;
                  item2.splice(k,1,item3);
                  state.menus.splice(i,1,item1);
              }
              else if(item3.meta?.id == "1728557698037707331"){//openwrt日志
                  item3.meta.title = ustore.state.openwrtLog;
                  item2.splice(k,1,item3);
                  state.menus.splice(i,1,item1);
              }
              else if(item3.meta?.id == "1728557736431123513"){//DHCP列表
                  item3.meta.title = ustore.state.dhcpList;
                  item2.splice(k,1,item3);
                  state.menus.splice(i,1,item1);
              }


            }

          }

         
        }

        props.menus;
      },
      (vl: any) => {
        const ms = toValidRoutes((vl ? vl : store.state.routes) as RouteRecordRaw[]);
        state.menus = ms;
        state.rawMenus = ms;
      },
      // { deep: true }
    );
    watch(
      () => {
        store.state.routes;
      },
      (vl: any) => {
        const ms = toValidRoutes(vl as RouteRecordRaw[]);
        state.rawMenus = ms;
        state.menus = ms;
      }
    );
    emits.on(EMitt.OnSwitchLeftSidebar, () => {
      state.collapseSidebar = !state.collapseSidebar;
    });
    emits.on(EMitt.OnSetThemeNotUniqueOpened, (vl) => {
      state.uniqueOpened = vl;
    });
    emits.on(EMitt.OnSetTheme, ([vl]) => {
      if (vl === EThemeSetting.Sidebar) {
        state.popClassName = getPopClassName();
      }
    });
    watch(
      () => route.path,
      (vl) => {
        const matchedRoute = getValueByKeys(getValueByKeys(router.currentRoute.value.meta, "matched", [])[0], "path", "");
        if (!route.query.pop && matchedRoute) {
          setTimeout(() => {
            state.currRoute = vl;
          }, 10);
        }
      }
    );
    watch(
      () => state.windowWidth,
      (vl) => {
        computeSidebarLayout(vl);
      }
    );

    const computeSidebarLayout = (windowWidth: number) => {
      if (props.mode === "horizontal" && windowWidth > 768 && elm.value.$el) {
        //菜单水平方向菜单过长,采用折叠效果
        const width = elm.value.$el.parentNode.getBoundingClientRect().width;
        let liWidth = 0;
        let index = -1;
        for (let i = 0; i < li.value.widths.length; i++) {
          liWidth += li.value.widths[i];
          if (liWidth > width) {
            index = i - 1;
            break;
          }
        }

        state.hiddenIndex = index;
        state.menus =
          index > -1
            ? state.rawMenus.slice(0, index).concat({
                path: "/__more",
                component: Layout,
                meta: { title: "更多菜单", icon: false, isMore: true },
                children: state.rawMenus.slice(index)
              })
            : state.rawMenus;
      }
    };

    return { elm, props, state };
  }
});
</script>

<template>
  <el-menu
    ref="elm"
    :default-active="props.currRoute ?? state.currRoute"
    :mode="props.mode"
    :collapse="props.isMobile ? false : props.mode === 'vertical' && state.collapseSidebar"
    :router="props.router"
    :unique-opened="state.uniqueOpened"
    :onSelect="props.onSelect"
    :collapse-transition="false"
    class="rr-sidebar-menu"
  >
    <sidebar-menus-items :className="state.popClassName" :menus="state.menus" :hiddenIndex="state.hiddenIndex"></sidebar-menus-items>
  </el-menu>
</template>
 
 
 
--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
src/views/home.vue内容如下
 
<template>
  <div class="divContainer">

      <el-row  class="tac" :gutter="24" >
        <el-col :span="19">
          <div class="divMiddle">
              <el-scrollbar height="800px">

                <span class="middle-top-title">{{state.systemStatus}}</span>
                <!-- <hr /> -->

                <div class=" box1">
                  <div class="box1title">
                    {{ state.systemInfoLabel }}
                  </div>
                  <div class="box1context">
                    <span class="contextlabel">{{state.softwareVersion}}</span>
                    <span class="contextvalue">{{state.softwareVersionValue}}</span>
                  </div>
                  <div class="box1context">
                    <span class="contextlabel">{{state.localTime}}</span>
                    <span class="contextvalue">{{ state.localTimeValue }}</span>
                  </div>
                  <div class="box1context">
                    <span class="contextlabel">{{state.runtime}}</span>
                    <span class="contextvalue">{{state.runtimeValue}}</span>
                  </div>
                  <div class="box1context">
                    <span class="contextlabel">{{state.onlineTime}}</span>
                    <span class="contextvalue">{{state.onlineTimeValue}}</span>
                  </div>
                  <div class="box1context">
                    <span class="contextlabel">{{state.sendBytes}}</span>
                    <span class="contextvalue">{{state.sendBytesValue}}</span>
                  </div>
                  <div class="box1context">
                    <span class="contextlabel">{{state.receiveBytes}}</span>
                    <span class="contextvalue">{{state.receiveBytesValue}}</span>
                  </div>
                </div>

                <div class=" box2">
                  <div class="box1title">
                    {{ state.wanNetwork }}
                  </div>
                  <div class="box1context">
                    <span class="contextlabel">{{state.networkMode}}</span>
                    <span class="contextvalue">{{state.switchMode}}</span>
                  </div>
                  <div class="box1context">
                    <span class="contextlabel">连接状态</span>
                    <span class="contextvalue">{{state.connectionStatus}}</span>
                  </div>
                  <div class="box1context">
                    <span class="contextlabel">IP地址</span>
                    <span class="contextvalue">{{ state.wanIPaddress }}</span>
                  </div>
                  <div class="box1context">
                    <span class="contextlabel">DNS</span>
                    <span class="contextvalue"> {{ state.wanDNS }}</span>
                  </div>
                </div>

                <div class=" box3">
                  <div class="box1title">
                    {{ state.lanNetworkLabel }}
                  </div>
                  <div class="box1context">
                    <span class="contextlabel">{{state.ipAddress}}</span>
                    <span class="contextvalue">{{state.lanipAddress}}</span>
                  </div>
                  <div class="box1context">
                    <span class="contextlabel">{{state.subnetMask}}</span>
                    <span class="contextvalue">{{state.subnetMaskValue}}</span>
                  </div>
                  <div class="box1context">
                    <span class="contextlabel">{{state.MAC}}</span>
                    <span class="contextvalue">{{state.MACvalue}}</span>
                  </div>
                  <div class="box1context">
                    <span class="contextlabel">{{state.addressPool}}</span>
                    <span class="contextvalue">{{state.addressPoolValue}}</span>
                  </div>
                </div>

                <div class=" box4">
                  <div class="box1title">
                    VPN状态
                  </div>
                  <div class="box1context">
                    <span class="contextlabel">VPN模式</span>
                    <span class="contextvalue">{{state.vpnModelValue}}</span>
                  </div>
                  <div class="box1context">
                    <span class="contextlabel">连接状态</span>
                    <span class="contextvalue">{{state.vpnConnectionStatus}}</span>
                  </div>
                </div>
                <div class="submitclass">

                  </div>
              </el-scrollbar>

          </div>
          <div class="divFloor">
            <innerfloor ></innerfloor>
          </div>
        </el-col>
        <el-col :span="5">
          <div class="divRight">
            <el-scrollbar height="500px">
              <div class="box2title">
                  {{state.systemStatus}}
              </div>
              <div class="box2context">
                  <span class="contextlabel">{{state.systemInfoLabel}}:</span>
                  <span class="contextvalue">{{state.systemInfoValue}}</span>
                </div>
                <div class="box2context">
                  <span class="contextlabel">{{state.wanNetwork}}:</span>
                  <span class="contextvalue">{{state.wanNetworkValue}}</span>
                </div>
                <div class="box2context">
                  <span class="contextlabel">{{state.lanNetworkLabel}}:</span>
                  <span class="contextvalue">{{state.lanNetworkValue}}</span>
                </div>
                <div class="box2context">
                  <span class="contextlabel">VPN:</span>
                  <span class="contextvalue">{{state.vpnvalue}}</span>
                </div>
                     

                     
              </el-scrollbar>
          </div>
        </el-col>
      </el-row>
      <!-- --------------------------------------------------------------------- -->

      <!-- ------------------------------------------------------------------------- -->

      <!-- -------------------------------------------------------------------------------- -->
  </div>

</template>

<script lang="ts" setup>
import logo from "@/assets/images/logo.png";
import { EMitt, ESidebarLayoutEnum, EThemeSetting } from "@/constants/enum";
import emits from "@/utils/emits";
import { getThemeConfigCacheByKey } from "@/utils/theme";
import { defineComponent, reactive , computed, ref, toRefs, watch,onMounted,onBeforeUnmount} from "vue";
import { useAppStore } from "@/store";

import Logo from "./logo.vue";
// import "@/assets/css/header.less";
// ---------------------------------------------
import { CacheToken } from "@/constants/cacheKey";
import baseService from "@/service/baseService";
import { getCache } from "@/utils/cache";
// -------------------------------------------------
import { mapState, mapActions } from 'vuex';
import { useStore } from 'vuex';
// ---------------------------------------------------
// ---------------------------------------------------------------------------
import Expand from "../layout/header/expand.vue";
import Innerfloor from "./iot/innerfloor.vue";
// ------------------------------------------------------------------------------
import useView from "@/hooks/useView";
import { ElMessage, ElMessageBox } from "element-plus";
// ---------------------------------------------
import app from "@/constants/app";
import axiosrequest from '@/service/axiosrequest';
import axios, { AxiosRequestConfig, AxiosResponse } from 'axios';
// ------------------------------------------------------------------------------

const mytoken = ref("");
const myhostname = ref("");

  defineComponent({
  name: "Home",
  components: {  Innerfloor },
  setup() {

    const state = reactive({
      sidebarLayout: getThemeConfigCacheByKey(EThemeSetting.NavLayout),
    });
 


    emits.on(EMitt.OnSetNavLayout, (vl) => {
      state.sidebarLayout = vl;
    });
    const onRefresh = () => {
      emits.emit(EMitt.OnReloadTabPage);
    };

    return {  state, onRefresh, logo, ESidebarLayoutEnum};
  }
});

const ustore = useStore();
// let month1 = (new Date().getMonth() + 1) >= 10 ? (new Date().getMonth() + 1) : "0" + (new Date().getMonth() + 1);
// let day1 = new Date().getDate() >= 10 ? new Date().getDate() : "0" + new Date().getDate();
// let hour = new Date().getHours() >= 10 ? new Date().getHours() : "0" + new Date().getHours();
// let minute = new Date().getMinutes() >= 10 ? new Date().getMinutes() : "0" + new Date().getMinutes();
// let second = new Date().getSeconds() >= 10 ? new Date().getSeconds() : "0" + new Date().getSeconds();

const view = reactive({
      deleteIsBatch: true,
      systemStatus: ustore.state.systemStatus,
      systemInfoLabel: ustore.state.systemInfoLabel,
      systemInfoValue: ustore.state.systemInfoValue,
      wanNetwork: ustore.state.wanNetwork,
      wanNetworkValue: ustore.state.wanNetworkValue,
      lanNetworkLabel: ustore.state.lanNetworkLabel,
      lanNetworkValue: ustore.state.lanNetworkValue,
      vpnvalue: ustore.state.vpnvalue,
      softwareVersion: ustore.state.softwareVersion,
      localTime: ustore.state.localTime,
      localTimeValue: '',
      runtime: ustore.state.runtime,
      runtimeValue: '',
      onlineTime: ustore.state.onlineTime,
      onlineTimeValue: '',
      sendBytes: ustore.state.sendBytes,
      sendBytesValue: '',
      receiveBytes: ustore.state.receiveBytes,
      receiveBytesValue: '',
      networkMode: ustore.state.networkMode,
      switchMode: ustore.state.switchMode,
      ipAddress: ustore.state.ipAddress,
      subnetMask: ustore.state.subnetMask,
      MAC: ustore.state.MAC,
      addressPool: ustore.state.addressPool,
      currentTime :  "",
      softwareVersionValue: '',
      connectionStatus: '',
      wanIPaddress: '',
      wanDNS: '',
      lanipAddress: '',
      subnetMaskValue: '',
      MACvalue: '',
      addressPoolValue: '',
      vpnModelValue: '',
      vpnConnectionStatus: '',
      // getDataListURL: "/iot/deviceinfo/page",
      // getDataListIsPage: true,
      // exportURL: "/iot/deviceinfo/export",
      // deleteURL: "/iot/deviceinfo",
      dataForm: {
        projectNodeCode: "",
        onlineNum: 0,
        offlineNum: 0,
        closeNum: 0,
        openNum: 0,
        alarmNum: 0,
        faultNum: 0,
        state: "",
        switchState: "",
        faultState: "",
        alarmState: "",
        deviceType: ""
      }
    });
    const state = reactive({ ...useView(view), ...toRefs(view) });
    watch(
      ()=>{
        state.systemStatus = ustore.state.systemStatus;
        state.systemInfoLabel = ustore.state.systemInfoLabel;
        state.systemInfoValue = ustore.state.systemInfoValue;
        state.wanNetwork = ustore.state.wanNetwork;
        state.wanNetworkValue = ustore.state.wanNetworkValue;
        state.lanNetworkLabel = ustore.state.lanNetworkLabel;
        state.lanNetworkValue = ustore.state.lanNetworkValue;
        state.vpnvalue = ustore.state.vpnvalue;
        state.softwareVersion = ustore.state.softwareVersion;
        state.localTime = ustore.state.localTime;
        state.runtime = ustore.state.runtime;
        state.onlineTime = ustore.state.onlineTime;
        state.sendBytes = ustore.state.sendBytes;
        state.receiveBytes = ustore.state.receiveBytes;
        state.networkMode = ustore.state.networkMode;
        state.switchMode = ustore.state.switchMode;
        state.ipAddress = ustore.state.ipAddress;
        state.subnetMask = ustore.state.subnetMask;
        state.MAC = ustore.state.MAC;
        state.addressPool = ustore.state.addressPool;
        // -----------------------------------------------------
        const date = new Date();
        const year = date.getFullYear().toString().padStart(2, '0');
        const month = (date.getMonth()+ 1).toString().padStart(2, '0');
        const day = date.getDay().toString().padStart(2, '0');
        const hours = date.getHours().toString().padStart(2, '0');
        const minutes = date.getMinutes().toString().padStart(2, '0');
        const seconds = date.getSeconds().toString().padStart(2, '0');
        state.currentTime = `${year}-${month}-${day} ${hours}:${minutes}:${seconds}`;
      },
      ()=>{
        // console.log("1111111222333");
      }
    );
    // function getCurrentTime() {
    //   const date = new Date();
    //   const year = date.getFullYear().toString().padStart(2, '0');
    //   const month = (date.getMonth()+ 1).toString().padStart(2, '0');
    //   const day = date.getDay().toString().padStart(2, '0');
    //   const hours = date.getHours().toString().padStart(2, '0');
    //   const minutes = date.getMinutes().toString().padStart(2, '0');
    //   const seconds = date.getSeconds().toString().padStart(2, '0');
    //   state.currentTime = `${year}-${month}-${day} ${hours}:${minutes}:${seconds}`;
 
    // };
    const timer = ref()
    // onMounted(()=>{
     
    //   mytoken.value = sessionStorage.getItem("mytoken") as string;
    //   console.log("mytoken.value----->",mytoken.value);
    //   myhostname.value = sessionStorage.getItem("myhostname") as string;
    //   // 更新时间
    //   // timer.value =setInterval(() => {
    //   //     getCurrentTime()
    //   // }, 1000);
    // });
    //取消定时器
    onBeforeUnmount(() => {
        // clearInterval(timer.value) //清除定时器
        clearTimeout(timer.value) //清除定时器
    });
// -----------------------------------------------------------------------------------------------
onMounted(()=>{
       
       mytoken.value = sessionStorage.getItem("mytoken") as string;
       myhostname.value = sessionStorage.getItem("myhostname") as string;
       console.log("mytoken.value----->",mytoken.value);

       timer.value = setTimeout(initReaderRequest,100);
   });
   
   const requestReadParam = reactive({
         cmd:"read",
         form:"SystemStatusForm",
         code: 0,
         ["@sys[0]-version"]:'',
         localTime:'',
         runTime: '',
         onlineTime:'',
         TxPacket: '',
         RxPacket: '',
         wan: {},
         lan: {},
         vpn: {}
     });
   
   const initReaderRequest = () => {
   
     requestReadParam.code = parseInt(mytoken.value );
     // console.log("mytoken.value----->",mytoken.value);
     // console.log("------------++++++++",JSON.stringify(requestReadParam));
     axios.post(myhostname.value + '/post',JSON.stringify(requestReadParam)).then(res=>{  
        //  console.log("networkfilter,initRequest--------->",res);
         if(res.status == 200 && (res.data.result == "OK")){
     
                  state.softwareVersionValue = res.data["@sys[0]-version"];
                  state.localTimeValue = res.data.localTime;
                  state.runtimeValue = res.data.runTime;
                  state.onlineTimeValue = res.data.onlineTime;
                  state.sendBytesValue = res.data.TxPacket;
                  state.receiveBytesValue = res.data.RxPacket;
                  let wan = {} as any;
                  wan = res.data.wan;
                  if(wan != undefined && wan != null){
                      let cur_net_mode  = wan.cur_net_mode;
                      switch(cur_net_mode){
                        case "1":
                          {
                            state.switchMode = "有线上网";
                            break;
                          }
                          case "2":
                          {
                            state.switchMode = "SIM网络";
                            break;
                          }
                          case "3":
                          {
                            state.switchMode = "WIFI客户端";
                            break;
                          }
                          case "4":
                          {
                            state.switchMode = "主辅模式";
                            break;
                          }
                          case "5":
                          {
                            state.switchMode = "交换机";
                            break;
                          }
                          case "6":
                          {
                            state.switchMode = "双模路模式";
                            break;
                          }
                          default:break;
                      }
                      state.connectionStatus = wan.online_status;
                      state.wanIPaddress = wan.ipaddr;  
                      state.wanDNS = wan.dns;
                  }
                  let lan = {} as any;
                  lan = res.data.lan;
                  if(lan != undefined && lan != null){
                      state.lanipAddress = lan.ipaddr;
                      state.subnetMaskValue = lan.netmask;
                      state.MACvalue = lan.macaddr;
                      state.addressPoolValue = lan.addrpool;
                  }
                  let vpn = {} as any;
                  vpn = res.data.vpn;
                  if(vpn != undefined && vpn != null){
                      state.vpnModelValue = vpn.enable == "checked" ? "开通": "关闭";
                      state.vpnConnectionStatus = vpn.vpninfo;
                  }
   
   
           
   
   
   
           }else{
                ElMessage.error("网络连接失败");
           }
         }).catch(err=>{
              console.log('timeout')
              console.log(err)
         });
         timer.value = null;
         timer.value = setTimeout(initReaderRequest,5000);
     };
   
// -----------------------------------------------------------------------------------------------
</script>


<style scoped lang="less">

.dvi1{
  width: 100%;
  height: 500px;
  align-content: center;
  //
}

.middle-top-title{
  font-size: 19px;
  font-weight: bold;
  color: #0482AD;
}
.divMiddle  .box1{
  width: 80%;
  height: 250px;
  // background: gray;
  display: block;
  flex-direction: col;
  flex-wrap: wrap;
  margin-left: 80px;
  align-content: flex-start;
  border: 1px solid lightblue;
  border-radius: 5px;
  box-shadow: inset 5px 5px 5px lightblue,5px 5px 5px lightblue;
};

.divMiddle  .box2{
  margin-top: 25px;
  width: 80%;
  height: 198px;
  display: block;
  flex-direction: col;
  flex-wrap: wrap;
  margin-left: 80px;
  align-content: flex-start;
  border: 1px solid lightblue;
  border-radius: 5px;
  box-shadow: inset 5px 5px 5px lightblue,5px 5px 5px lightblue;
};
.divMiddle  .box3{
  width: 80%;
  margin-top: 25px;
  height: 216px;
  // background: gray;
  display: block;
  flex-direction: col;
  flex-wrap: wrap;
  margin-left: 80px;
  align-content: flex-start;
  border: 1px solid lightblue;
  border-radius: 5px;
  box-shadow: inset 5px 5px 5px lightblue,5px 5px 5px lightblue;
}
.divMiddle  .box4{
  width: 80%;
  margin-top: 25px;
  height: 116px;
  // background: gray;
  display: block;
  flex-direction: col;
  flex-wrap: wrap;
  margin-left: 80px;
  align-content: flex-start;
  border: 1px solid lightblue;
  border-radius: 5px;
  box-shadow: inset 5px 5px 5px lightblue,5px 5px 5px lightblue;
}
.divMiddle  .box1title{
    width: 110px;
    font-size: 17px;
    text-align: left;
    margin-top: 20px;    
    //background: gray;
    margin-left: 35px;
  };
  .divMiddle  .box1context{
    width: 100%;
    font-size: 14px;
    text-align: letf;
    margin-top: 1px;  
    margin-left: 130px;
    //background: gray;
    display: flex;
    flex-direction: row;
    flex-wrap: nowrap;
    align-content: flex-start;
    padding: 5px 0px;
    justify-content: flex-start;

  };
 
  .divMiddle  .box1context .contextlabel{
    width: 100%;
    // display: flex;
   
  };
  .divMiddle  .box1context .contextvalue{
    width: 100%;
    font-size: 14px;
    text-align: letf;
    margin-top: 0px;  
    // margin-left: 100px;
    //background: gray;
    // display: flex;
  };

  // ------------------------------------------------------------
.divRight{
  width: 100%;
  height: 100%;
  // height: 1314px;
  //
  // background:  #7CB0DC;
  background:  #c9e7ee;
}
.divRight  .box2title{
    width: 110px;
    font-size: 17px;
    text-align: left;
    margin-top: 20px;    
    //background: gray;
    margin-left: 5px;
    font-weight: bold;
  };
  .divRight  .box2context {
    margin-left: 5px;
    margin-top: 5px;
  };
  .divRight  .box2context .contextlabel{
    font-weight: bold;
  };


/* --------------------------------------------------- */
.submitclass{
  margin-top: 15px;
  margin-left: 25%;
  padding: 35px;
}

.submitclass .submitconfirm{
  margin-left: 100px;
}

/* ------------------------------------------------- */
 

 /* ------------------------------------------------------------ */
 


 /* ------------------------------------------------------------- */
</style>
 
 

 

posted on 2024-12-26 11:27  yebinghuai-qq-com  阅读(104)  评论(0)    收藏  举报

导航