| | |
| | | # 部署模式:standalone单机版 cluster集群版 |
| | | deploymentMode: cluster |
| | | # 集群版是否对接中台:true对接 false不对接 |
| | | middlePlatformEnabled: true |
| | | middlePlatformEnabled: false |
| | | # 开发环境配置 |
| | | server: |
| | | # 服务器的HTTP端口,默认为8080 |
| | |
| | | import com.ruoyi.common.core.domain.AjaxResult; |
| | | import com.ruoyi.system.dto.SysVisitorRecordDetailRequest; |
| | | import com.ruoyi.system.dto.SysVisitorRecordPageRequest; |
| | | import com.ruoyi.system.service.ISysVersionUpdateService; |
| | | import com.ruoyi.system.service.ISysVisitorRecordService; |
| | | import com.ruoyi.system.vo.SysVersionUpdateVO; |
| | | import com.ruoyi.system.vo.SysVisitorRecordDetailVO; |
| | | import com.ruoyi.system.vo.SysVisitorRecordVO; |
| | | import io.swagger.annotations.Api; |
| | |
| | | { |
| | | @Autowired |
| | | private ISysVisitorRecordService visitorRecordService; |
| | | |
| | | @Autowired |
| | | private ISysVersionUpdateService versionUpdateService; |
| | | |
| | | /** |
| | | * 分页查询访客记录 |
| | |
| | | { |
| | | return success(visitorRecordService.detail(request)); |
| | | } |
| | | |
| | | /** |
| | | * 获取最新版本信息 |
| | | */ |
| | | @ApiOperation( |
| | | value = "获取最新版本信息", |
| | | notes = "返回最新一条未删除的版本更新记录", |
| | | response = SysVersionUpdateVO.class |
| | | ) |
| | | @ApiResponses({ |
| | | @ApiResponse( |
| | | code = 200, |
| | | message = "成功", |
| | | response = AjaxResult.class, |
| | | responseContainer = "Data" |
| | | ) |
| | | }) |
| | | @PostMapping("/latestVersion") |
| | | public AjaxResult<SysVersionUpdateVO> latestVersion() |
| | | { |
| | | return success(versionUpdateService.latest()); |
| | | } |
| | | } |
| | |
| | | public List<SysVersionUpdateVO> pageList(@Param("query") SysVersionUpdatePageRequest query, |
| | | @Param("pageInfo") PageInfo<SysVersionUpdateVO> pageInfo); |
| | | |
| | | public SysVersionUpdateVO selectLatest(); |
| | | |
| | | public SysVersionUpdateVO selectById(Long updateId); |
| | | |
| | | public int insertVersionUpdate(SysVersionUpdate versionUpdate); |
| | |
| | | { |
| | | public PageInfo<SysVersionUpdateVO> pageList(SysVersionUpdatePageRequest request); |
| | | |
| | | public SysVersionUpdateVO latest(); |
| | | |
| | | public SysVersionUpdateVO detail(SysVersionUpdateDetailRequest request); |
| | | |
| | | public int add(SysVersionUpdateAddRequest request, String username); |
| | |
| | | } |
| | | |
| | | @Override |
| | | public SysVersionUpdateVO latest() |
| | | { |
| | | return versionUpdateMapper.selectLatest(); |
| | | } |
| | | |
| | | @Override |
| | | public SysVersionUpdateVO detail(SysVersionUpdateDetailRequest request) |
| | | { |
| | | if (request == null || request.getUpdateId() == null) |
| | |
| | | and del_flag = '0' |
| | | </select> |
| | | |
| | | <select id="selectLatest" resultMap="SysVersionUpdateVOResult"> |
| | | <include refid="selectVersionUpdateVo" /> |
| | | where del_flag = '0' |
| | | order by create_time desc, update_id desc |
| | | limit 1 |
| | | </select> |
| | | |
| | | <insert id="insertVersionUpdate" parameterType="SysVersionUpdate" useGeneratedKeys="true" keyProperty="updateId"> |
| | | insert into t_version_update ( |
| | | version_no, |
| | |
| | | # 页面标题 |
| | | VUE_APP_TITLE = 运营活动管理平台 |
| | | VUE_APP_TITLE = 访客机自助登记管理平台 |
| | | |
| | | # 开发环境配置 |
| | | ENV = 'development' |
| | |
| | | |
| | | # 访客后台前端部署模式:standalone 单机版需要输入IP,cluster 集群版不输入IP |
| | | VUE_APP_VISITOR_FRONTEND_MODE = 'cluster' |
| | | VUE_APP_VISITOR_MIDDLE_PLATFORM_ENABLED = 'true' |
| | | VUE_APP_VISITOR_MIDDLE_PLATFORM_ENABLED = 'false' |
| | | # VUE_APP_VISITOR_LOGIN_MIDDLE_PLATFORM_ENABLED 未配置时默认跟随 VUE_APP_VISITOR_MIDDLE_PLATFORM_ENABLED |
| | | |
| | | # 开发环境通过 /dev-api 代理到本地 9098 |
| | |
| | | # 页面标题 |
| | | VUE_APP_TITLE = 运营活动管理平台 |
| | | VUE_APP_TITLE = 访客机自助登记管理平台 |
| | | |
| | | # 生产环境配置 |
| | | ENV = 'production' |
| | |
| | | "author": "若依", |
| | | "license": "MIT", |
| | | "scripts": { |
| | | "dev": "vue-cli-service serve", |
| | | "build:prod": "vue-cli-service build", |
| | | "build:stage": "vue-cli-service build --mode staging", |
| | | "dev": "node --openssl-legacy-provider ./node_modules/@vue/cli-service/bin/vue-cli-service.js serve", |
| | | "build:prod": "node --openssl-legacy-provider ./node_modules/@vue/cli-service/bin/vue-cli-service.js build", |
| | | "build:stage": "node --openssl-legacy-provider ./node_modules/@vue/cli-service/bin/vue-cli-service.js build --mode staging", |
| | | "preview": "node build/index.js --preview", |
| | | "lint": "eslint --ext .js,.vue src" |
| | | }, |
| | |
| | | min-width: 0 !important; |
| | | height: 36px !important; |
| | | line-height: 36px !important; |
| | | margin: 0; |
| | | margin: 0 0 4px; |
| | | padding: 0 0 0 48px !important; |
| | | border-radius: 0; |
| | | border-radius: 13px; |
| | | color: rgba(255, 255, 255, 0.92) !important; |
| | | background: transparent !important; |
| | | font-size: 12px; |
| | |
| | | background-color: rgba(255, 255, 255, 0.14) !important; |
| | | } |
| | | |
| | | .theme-dark .el-submenu .el-menu-item:hover, |
| | | .theme-dark .el-submenu .el-menu-item.is-active, |
| | | .el-submenu .el-menu-item:hover, |
| | | .el-submenu .el-menu-item.is-active { |
| | | color: #fff !important; |
| | | background: transparent !important; |
| | | background-color: transparent !important; |
| | | background: rgba(255, 255, 255, 0.14) !important; |
| | | background-color: rgba(255, 255, 255, 0.14) !important; |
| | | } |
| | | |
| | | > .el-scrollbar > .el-scrollbar__wrap > .el-scrollbar__view > .el-menu > .el-menu-item.is-active, |
| | |
| | | text-overflow: ellipsis; |
| | | white-space: nowrap; |
| | | vertical-align: middle; |
| | | } |
| | | |
| | | .content-preview { |
| | | position: absolute; |
| | | left: -16px; |
| | | top: 38px; |
| | | z-index: 10; |
| | | width: 204px; |
| | | min-height: 102px; |
| | | display: none; |
| | | padding: 0 10px 12px; |
| | | border: 1px solid #f0bc2d; |
| | | border-radius: 2px; |
| | | background: #fff; |
| | | box-shadow: 0 4px 12px rgba(15, 35, 70, 0.12); |
| | | } |
| | | |
| | | .version-content-cell:hover .content-preview { |
| | | display: block; |
| | | } |
| | | |
| | | .preview-index { |
| | | height: 16px; |
| | | margin: 0 -10px 12px; |
| | | padding-left: 9px; |
| | | color: #111827; |
| | | background: #ffd753; |
| | | font-weight: 700; |
| | | line-height: 16px; |
| | | } |
| | | |
| | | .preview-content { |
| | | min-height: 42px; |
| | | color: #111827; |
| | | font-weight: 700; |
| | | line-height: 18px; |
| | | word-break: break-word; |
| | | } |
| | | |
| | | .preview-foot { |
| | | margin-top: 26px; |
| | | color: #8a9ab0; |
| | | font-size: 11px; |
| | | } |
| | | |
| | | .table-actions { |
| | |
| | | </el-form-item> |
| | | </el-col> |
| | | </el-row> |
| | | <el-form-item label="人脸图片" prop="faceImage"> |
| | | <el-input v-model="form.faceImage" placeholder="请输入人脸图片地址" /> |
| | | <el-form-item label="人脸图片" prop="faceImage" class="employee-face-upload"> |
| | | <image-upload v-model="form.faceImage" :limit="1" :file-size="5" :is-show-tip="false" /> |
| | | </el-form-item> |
| | | </el-form> |
| | | <div slot="footer" class="dialog-footer"> |
| | |
| | | this.title = '新增员工' |
| | | this.form = { |
| | | deptId: this.queryParams.deptId, |
| | | enabled: true |
| | | enabled: true, |
| | | faceImage: '' |
| | | } |
| | | this.open = true |
| | | }, |
| | |
| | | .employee-add-col .el-button { |
| | | border-radius: 8px; |
| | | } |
| | | |
| | | .employee-face-upload ::v-deep .el-upload--picture-card, |
| | | .employee-face-upload ::v-deep .el-upload-list--picture-card .el-upload-list__item { |
| | | width: 96px; |
| | | height: 96px; |
| | | line-height: 96px; |
| | | } |
| | | |
| | | .employee-face-upload ::v-deep .el-upload--picture-card { |
| | | border-radius: 8px; |
| | | } |
| | | </style> |
| | |
| | | <td>v{{ row.versionNo }}</td> |
| | | <td class="version-content-cell"> |
| | | <span class="version-content-text">{{ row.updateContent || '-' }}</span> |
| | | <div class="content-preview"> |
| | | <div class="preview-index">{{ index + 1 }}</div> |
| | | <div class="preview-content">{{ row.updateContent || '暂无更新内容' }}</div> |
| | | <div class="preview-foot">{{ parseTime(row.createTime) || '-' }}</div> |
| | | </div> |
| | | </td> |
| | | <td>{{ parseTime(row.createTime) }}</td> |
| | | <td v-if="!isMiddlePlatformReadonly && $auth.hasPermi('visitor:version:remove')"> |
| | |
| | | vertical-align: middle; |
| | | } |
| | | |
| | | .content-preview { |
| | | position: absolute; |
| | | left: -62px; |
| | | top: 38px; |
| | | z-index: 10; |
| | | width: 204px; |
| | | min-height: 102px; |
| | | display: none; |
| | | padding: 0 10px 12px; |
| | | border: 1px solid #f0bc2d; |
| | | border-radius: 2px; |
| | | background: #fff; |
| | | box-shadow: 0 4px 12px rgba(15, 35, 70, 0.12); |
| | | } |
| | | |
| | | .content-preview::before { |
| | | content: ""; |
| | | position: absolute; |
| | | left: 46px; |
| | | top: -188px; |
| | | width: 1px; |
| | | height: 188px; |
| | | background: #dca51f; |
| | | } |
| | | |
| | | .content-preview::after { |
| | | content: ""; |
| | | position: absolute; |
| | | left: 42px; |
| | | top: -191px; |
| | | width: 8px; |
| | | height: 8px; |
| | | border-radius: 50%; |
| | | background: #dca51f; |
| | | } |
| | | |
| | | .version-content-cell:hover .content-preview { |
| | | display: block; |
| | | } |
| | | |
| | | .preview-index { |
| | | height: 16px; |
| | | margin: 0 -10px 12px; |
| | | padding-left: 9px; |
| | | color: #111827; |
| | | background: #ffd753; |
| | | font-weight: 700; |
| | | line-height: 16px; |
| | | } |
| | | |
| | | .preview-content { |
| | | min-height: 42px; |
| | | color: #111827; |
| | | font-weight: 700; |
| | | line-height: 18px; |
| | | word-break: break-word; |
| | | } |
| | | |
| | | .preview-foot { |
| | | margin-top: 26px; |
| | | color: #8a9ab0; |
| | | font-size: 11px; |
| | | } |
| | | |
| | | .table-actions { |
| | | display: flex; |
| | | align-items: center; |
| | |
| | | } else if (state.mode === "detail") { |
| | | title = "角色详情"; |
| | | } |
| | | document.title = title + " - 运营活动管理平台"; |
| | | document.title = title + " - 访客机自助登记管理平台"; |
| | | document.getElementById("pageTitle").textContent = title; |
| | | document.getElementById("pageTab").textContent = title; |
| | | document.getElementById("formActions").hidden = state.mode === "detail"; |
| | |
| | | ' <td>' + escapeHtml(item.versionNo || "-") + '</td>', |
| | | ' <td class="version-content-cell">', |
| | | ' <span class="version-content-text">' + escapeHtml(item.updateContent || "-") + '</span>', |
| | | ' <div class="content-preview">', |
| | | ' <div class="preview-index">' + rowIndex + '</div>', |
| | | ' <div class="preview-content">' + escapeHtml(item.updateContent || "-") + '</div>', |
| | | ' <div class="preview-foot">' + escapeHtml(item.packageName || "安装包") + ' ' + escapeHtml(shortDate(item.createTime)) + '</div>', |
| | | ' </div>', |
| | | ' </td>', |
| | | ' <td>' + escapeHtml(item.createTime || "-") + '</td>', |
| | | ' <td><div class="table-actions">', |
| | |
| | | <head> |
| | | <meta charset="UTF-8"> |
| | | <meta name="viewport" content="width=device-width, initial-scale=1.0"> |
| | | <title>首页 - 运营活动管理平台</title> |
| | | <title>首页 - 访客机自助登记管理平台</title> |
| | | <link rel="stylesheet" href="../css/dashboard.css"> |
| | | <link rel="stylesheet" href="../css/components.css"> |
| | | </head> |
| | |
| | | <aside class="sidebar"> |
| | | <div class="brand"> |
| | | <img src="../assets/login-avatar.svg" alt=""> |
| | | <strong>运营活动管理平台</strong> |
| | | <strong>访客机自助登记管理平台</strong> |
| | | </div> |
| | | |
| | | <nav class="menu" aria-label="主菜单"> |
| | |
| | | <head> |
| | | <meta charset="UTF-8"> |
| | | <meta name="viewport" content="width=device-width, initial-scale=1.0"> |
| | | <title>部门管理 - 运营活动管理平台</title> |
| | | <title>部门管理 - 访客机自助登记管理平台</title> |
| | | <link rel="stylesheet" href="../css/dashboard.css"> |
| | | <link rel="stylesheet" href="../css/components.css"> |
| | | <link rel="stylesheet" href="../css/department-management.css"> |
| | |
| | | <aside class="sidebar"> |
| | | <div class="brand"> |
| | | <img src="../assets/login-avatar.svg" alt=""> |
| | | <strong>运营活动管理平台</strong> |
| | | <strong>访客机自助登记管理平台</strong> |
| | | </div> |
| | | |
| | | <nav class="menu" aria-label="主菜单"> |
| | |
| | | <head> |
| | | <meta charset="UTF-8"> |
| | | <meta name="viewport" content="width=device-width, initial-scale=1.0"> |
| | | <title>门禁设备管理 - 运营活动管理平台</title> |
| | | <title>门禁设备管理 - 访客机自助登记管理平台</title> |
| | | <link rel="stylesheet" href="../css/dashboard.css"> |
| | | <link rel="stylesheet" href="../css/components.css"> |
| | | <link rel="stylesheet" href="../css/door-management.css"> |
| | |
| | | <aside class="sidebar"> |
| | | <div class="brand"> |
| | | <img src="../assets/login-avatar.svg" alt=""> |
| | | <strong>运营活动管理平台</strong> |
| | | <strong>访客机自助登记管理平台</strong> |
| | | </div> |
| | | |
| | | <nav class="menu" aria-label="主菜单"> |
| | |
| | | <head> |
| | | <meta charset="UTF-8"> |
| | | <meta name="viewport" content="width=device-width, initial-scale=1.0"> |
| | | <title>员工管理 - 运营活动管理平台</title> |
| | | <title>员工管理 - 访客机自助登记管理平台</title> |
| | | <link rel="stylesheet" href="../css/dashboard.css"> |
| | | <link rel="stylesheet" href="../css/components.css"> |
| | | <link rel="stylesheet" href="../css/employee-management.css"> |
| | |
| | | <aside class="sidebar"> |
| | | <div class="brand"> |
| | | <img src="../assets/login-avatar.svg" alt=""> |
| | | <strong>运营活动管理平台</strong> |
| | | <strong>访客机自助登记管理平台</strong> |
| | | </div> |
| | | |
| | | <nav class="menu" aria-label="主菜单"> |
| | |
| | | <head> |
| | | <meta charset="UTF-8"> |
| | | <meta name="viewport" content="width=device-width, initial-scale=1.0"> |
| | | <title>平台管理员 - 运营活动管理平台</title> |
| | | <title>平台管理员 - 访客机自助登记管理平台</title> |
| | | <link rel="stylesheet" href="../css/dashboard.css"> |
| | | <link rel="stylesheet" href="../css/components.css"> |
| | | <link rel="stylesheet" href="../css/platform-admin.css"> |
| | |
| | | <aside class="sidebar"> |
| | | <div class="brand"> |
| | | <img src="../assets/login-avatar.svg" alt=""> |
| | | <strong>运营活动管理平台</strong> |
| | | <strong>访客机自助登记管理平台</strong> |
| | | </div> |
| | | <nav class="menu" aria-label="主菜单"> |
| | | <a class="menu-item" href="./dashboard.html"><span class="menu-icon home"></span><span>首页</span></a> |
| | |
| | | <head> |
| | | <meta charset="UTF-8"> |
| | | <meta name="viewport" content="width=device-width, initial-scale=1.0"> |
| | | <title>入园承诺 - 运营活动管理平台</title> |
| | | <title>入园承诺 - 访客机自助登记管理平台</title> |
| | | <link rel="stylesheet" href="../css/dashboard.css"> |
| | | <link rel="stylesheet" href="../css/components.css"> |
| | | <link rel="stylesheet" href="../css/protocol-config.css"> |
| | |
| | | <aside class="sidebar"> |
| | | <div class="brand"> |
| | | <img src="../assets/login-avatar.svg" alt=""> |
| | | <strong>运营活动管理平台</strong> |
| | | <strong>访客机自助登记管理平台</strong> |
| | | </div> |
| | | |
| | | <nav class="menu" aria-label="主菜单"> |
| | |
| | | <head> |
| | | <meta charset="UTF-8"> |
| | | <meta name="viewport" content="width=device-width, initial-scale=1.0"> |
| | | <title>角色 - 运营活动管理平台</title> |
| | | <title>角色 - 访客机自助登记管理平台</title> |
| | | <link rel="stylesheet" href="../css/dashboard.css"> |
| | | <link rel="stylesheet" href="../css/components.css"> |
| | | <link rel="stylesheet" href="../css/role-management.css"> |
| | |
| | | <aside class="sidebar"> |
| | | <div class="brand"> |
| | | <img src="../assets/login-avatar.svg" alt=""> |
| | | <strong>运营活动管理平台</strong> |
| | | <strong>访客机自助登记管理平台</strong> |
| | | </div> |
| | | <nav class="menu" aria-label="主菜单"> |
| | | <a class="menu-item" href="./dashboard.html"><span class="menu-icon home"></span><span>首页</span></a> |
| | |
| | | <head> |
| | | <meta charset="UTF-8"> |
| | | <meta name="viewport" content="width=device-width, initial-scale=1.0"> |
| | | <title>角色管理 - 运营活动管理平台</title> |
| | | <title>角色管理 - 访客机自助登记管理平台</title> |
| | | <link rel="stylesheet" href="../css/dashboard.css"> |
| | | <link rel="stylesheet" href="../css/components.css"> |
| | | <link rel="stylesheet" href="../css/role-management.css"> |
| | |
| | | <aside class="sidebar"> |
| | | <div class="brand"> |
| | | <img src="../assets/login-avatar.svg" alt=""> |
| | | <strong>运营活动管理平台</strong> |
| | | <strong>访客机自助登记管理平台</strong> |
| | | </div> |
| | | <nav class="menu" aria-label="主菜单"> |
| | | <a class="menu-item" href="./dashboard.html"><span class="menu-icon home"></span><span>首页</span></a> |
| | |
| | | <head> |
| | | <meta charset="UTF-8"> |
| | | <meta name="viewport" content="width=device-width, initial-scale=1.0"> |
| | | <title>信息配置 - 运营活动管理平台</title> |
| | | <title>信息配置 - 访客机自助登记管理平台</title> |
| | | <link rel="stylesheet" href="../css/dashboard.css"> |
| | | <link rel="stylesheet" href="../css/components.css"> |
| | | <link rel="stylesheet" href="../css/system-config.css"> |
| | |
| | | <aside class="sidebar"> |
| | | <div class="brand"> |
| | | <img src="../assets/login-avatar.svg" alt=""> |
| | | <strong>运营活动管理平台</strong> |
| | | <strong>访客机自助登记管理平台</strong> |
| | | </div> |
| | | |
| | | <nav class="menu" aria-label="主菜单"> |
| | |
| | | <head> |
| | | <meta charset="UTF-8"> |
| | | <meta name="viewport" content="width=device-width, initial-scale=1.0"> |
| | | <title>访客机版本更新 - 运营活动管理平台</title> |
| | | <title>访客机版本更新 - 访客机自助登记管理平台</title> |
| | | <link rel="stylesheet" href="../css/dashboard.css"> |
| | | <link rel="stylesheet" href="../css/components.css"> |
| | | <link rel="stylesheet" href="../css/version-update.css"> |
| | |
| | | <aside class="sidebar"> |
| | | <div class="brand"> |
| | | <img src="../assets/login-avatar.svg" alt=""> |
| | | <strong>运营活动管理平台</strong> |
| | | <strong>访客机自助登记管理平台</strong> |
| | | </div> |
| | | |
| | | <nav class="menu" aria-label="主菜单"> |
| | |
| | | <head> |
| | | <meta charset="UTF-8"> |
| | | <meta name="viewport" content="width=device-width, initial-scale=1.0"> |
| | | <title>访客机管理 - 运营活动管理平台</title> |
| | | <title>访客机管理 - 访客机自助登记管理平台</title> |
| | | <link rel="stylesheet" href="../css/dashboard.css"> |
| | | <link rel="stylesheet" href="../css/components.css"> |
| | | <link rel="stylesheet" href="../css/visitor-machine.css"> |
| | |
| | | <aside class="sidebar"> |
| | | <div class="brand"> |
| | | <img src="../assets/login-avatar.svg" alt=""> |
| | | <strong>运营活动管理平台</strong> |
| | | <strong>访客机自助登记管理平台</strong> |
| | | </div> |
| | | |
| | | <nav class="menu" aria-label="主菜单"> |
| | |
| | | <head> |
| | | <meta charset="UTF-8"> |
| | | <meta name="viewport" content="width=device-width, initial-scale=1.0"> |
| | | <title>预约详情 - 运营活动管理平台</title> |
| | | <title>预约详情 - 访客机自助登记管理平台</title> |
| | | <link rel="stylesheet" href="../css/dashboard.css"> |
| | | <link rel="stylesheet" href="../css/components.css"> |
| | | <link rel="stylesheet" href="../css/visitor-record.css"> |
| | |
| | | <body> |
| | | <div class="app-shell"> |
| | | <aside class="sidebar"> |
| | | <div class="brand"><img src="../assets/login-avatar.svg" alt=""><strong>运营活动管理平台</strong></div> |
| | | <div class="brand"><img src="../assets/login-avatar.svg" alt=""><strong>访客机自助登记管理平台</strong></div> |
| | | <nav class="menu" aria-label="主菜单"> |
| | | <a class="menu-item" href="./dashboard.html"><span class="menu-icon home"></span><span>首页</span></a> |
| | | <section class="menu-group open"> |
| | |
| | | <head> |
| | | <meta charset="UTF-8"> |
| | | <meta name="viewport" content="width=device-width, initial-scale=1.0"> |
| | | <title>访客登记记录 - 运营活动管理平台</title> |
| | | <title>访客登记记录 - 访客机自助登记管理平台</title> |
| | | <link rel="stylesheet" href="../css/dashboard.css"> |
| | | <link rel="stylesheet" href="../css/components.css"> |
| | | <link rel="stylesheet" href="../css/visitor-record.css"> |
| | |
| | | <aside class="sidebar"> |
| | | <div class="brand"> |
| | | <img src="../assets/login-avatar.svg" alt=""> |
| | | <strong>运营活动管理平台</strong> |
| | | <strong>访客机自助登记管理平台</strong> |
| | | </div> |
| | | <nav class="menu" aria-label="主菜单"> |
| | | <a class="menu-item" href="./dashboard.html"><span class="menu-icon home"></span><span>首页</span></a> |