feat: OA(泛微 ecology)登录身份校验 + 公示详情悬浮按钮/PDF缩放
OA 登录校验 (manager/leader 单一可信源 = ecology 合规视图 v_compliance_project_manager): - ComplianceLoginService: 手机号登录查视图(type=1→manager/type=2→leader), 自动建号 sys_user+biz_person, 角色不匹配软删重建; 密码登录门禁 gateForPasswordLogin - EcologyDataSourceConfig: 独立只读 JdbcTemplate(ecologyJdbcTemplate) 接泛微库, 不接入主库动态数据源 - SysLoginController: 密码登录前 complianceGate 校验 manager/leader 仍存于视图 - BizAuthController: smsLogin 改走 reconcileForLogin; 发码放行 ecology 视图内未注册手机号 - application*.yml: 新增 spring.datasource.ecology 只读连接(prod/test) - Login.vue: 登录标题居中微调 + 供应商注册跳生产域名 公示详情 (publicity/:id): - 右侧悬浮操作按钮从垂直居中改为主区右上(紧贴版心右缘), 中窄屏兜底贴右缘 - PDF 预览 #zoom 由 page-width 改为数值缩放(121), 放大正文占满宽度 文档: - shouce/ 手册 md 入仓 注: oalogin/ (含 OA 管理员密码的临时笔记) 已加 .gitignore, 不入库
This commit is contained in:
+2
-2
@@ -1,5 +1,5 @@
|
||||
# 测试环境 API 基路径 (nginx 反向代理前缀)
|
||||
VITE_APP_BASE_API = '/hegui-api'
|
||||
VITE_APP_BASE_API = '/hg-api'
|
||||
|
||||
# 测试环境静态资源子路径 (nginx 部署在 /hegui/)
|
||||
VITE_BASE = '/hegui/'
|
||||
VITE_BASE = '/hg/'
|
||||
|
||||
Binary file not shown.
|
Before Width: | Height: | Size: 478 KiB After Width: | Height: | Size: 118 KiB |
@@ -21,8 +21,8 @@
|
||||
<!-- 右侧登录卡片 -->
|
||||
<section class="login-section">
|
||||
<div class="login-card">
|
||||
<h1 class="login-title">{{ loginMode === 'password' ? '账号登录' : '手机号登录' }}</h1>
|
||||
<p class="login-subtitle">{{ loginMode === 'password' ? '请输入您的账号信息' : '请输入手机号接收验证码' }}</p>
|
||||
<h1 class="login-title">{{ loginMode === 'password' ? '登录' : '登录' }}</h1>
|
||||
<!-- <p class="login-subtitle">{{loginMode === 'password' ? '请输入您的账号信息' : '请输入手机号接收验证码' }}</p> -->
|
||||
|
||||
<div class="login-tabs">
|
||||
<span class="tab" :class="{ active: loginMode === 'password' }" @click="switchMode('password')">账号密码登录</span>
|
||||
@@ -103,7 +103,6 @@
|
||||
<input type="radio" name="registerUserType" :value="t.value" v-model="registerUserType">
|
||||
<div class="info">
|
||||
<div class="name">{{ t.name }}</div>
|
||||
<div class="desc">{{ t.desc }}</div>
|
||||
</div>
|
||||
</label>
|
||||
</div>
|
||||
@@ -375,7 +374,7 @@ function confirmRegister() {
|
||||
// 执行方(供应商)注册: 跳转到独立供应商注册系统, 不走本系统注册页
|
||||
if (registerUserType.value === 'executor') {
|
||||
showRoleModal.value = false
|
||||
window.location.href = 'https://zbsuppliertest.guojustar.com/'
|
||||
window.location.href = 'https://zbsupplier.guojustar.com/'
|
||||
return
|
||||
}
|
||||
const routeMap = {
|
||||
@@ -599,11 +598,13 @@ body { margin: 0; padding: 0; }
|
||||
}
|
||||
|
||||
.login-page .login-title{
|
||||
transform: translateY(-10px);
|
||||
font-size: 26px;
|
||||
font-weight: 600;
|
||||
color: #1f2937;
|
||||
margin-bottom: 10px;
|
||||
letter-spacing: 2px;
|
||||
text-align: center;
|
||||
}
|
||||
|
||||
.login-page .login-subtitle{
|
||||
|
||||
@@ -279,11 +279,13 @@ function isImg(url) {
|
||||
// OSS bucket 设置了 Content-Disposition: attachment, iframe/embed 直接访问会被强制下载.
|
||||
// 所有 OSS 文件 URL 走 /common/oss/proxy 后端代理 (重写为 inline)
|
||||
// 必须加 /dev-api 前缀: Vite dev server proxy 只代理 /dev-api/* 到后端, 其他相对 URL 会 SPA fallback 到 index.html
|
||||
// #toolbar=0 隐藏 Chrome PDF viewer 工具栏, #zoom=page-width 强制 PDF 撑满 iframe 宽度
|
||||
// #toolbar=0 隐藏 Chrome PDF viewer 工具栏, #zoom=<百分比> 放大 PDF 内容
|
||||
// 红头文件自带较宽页边距, page-width 会把整页(含边距)缩进 iframe, 正文仍偏小;
|
||||
// 用数值缩放(如 160)裁掉边距、让正文尽量占满宽度, 数字越大越大/裁得越多
|
||||
function proxyUrl(url) {
|
||||
if (!url) return url
|
||||
if (url.includes('hwtossbamlorgcn.oss-cn-beijing.aliyuncs.com')) {
|
||||
return import.meta.env.VITE_APP_BASE_API + '/common/oss/proxy?url=' + encodeURIComponent(url) + '#toolbar=0&zoom=page-width'
|
||||
return import.meta.env.VITE_APP_BASE_API + '/common/oss/proxy?url=' + encodeURIComponent(url) + '#toolbar=0&zoom=121'
|
||||
}
|
||||
return url
|
||||
}
|
||||
@@ -584,8 +586,6 @@ onBeforeUnmount(() => {
|
||||
gap: 20px;
|
||||
background: transparent; /* 不要 card 包裹 */
|
||||
padding: 24px 0; /* 去掉左右内边距让内容铺满 */
|
||||
/* 给悬浮按钮留右边距,避免按钮遮住内容 */
|
||||
padding-right: 80px;
|
||||
border-radius: 0;
|
||||
box-shadow: none;
|
||||
align-items: stretch;
|
||||
@@ -689,18 +689,24 @@ onBeforeUnmount(() => {
|
||||
100% { background-position: -200% 0; }
|
||||
}
|
||||
|
||||
/* 悬浮固定到页面右侧中部 - 不占 detail-main 空间 */
|
||||
/* 悬浮固定到 main 右上, 紧贴版心右侧 - 不占 detail-main 空间 */
|
||||
.detail-actions {
|
||||
position: fixed;
|
||||
right: 24px;
|
||||
top: 50%;
|
||||
transform: translateY(-50%);
|
||||
left: calc(50% + 630px); /* 版心右缘(677) 附近, 按钮右缘略出内容右上角 */
|
||||
top: 180px;
|
||||
z-index: 100;
|
||||
display: flex;
|
||||
flex-direction: column;
|
||||
gap: 12px;
|
||||
width: 132px;
|
||||
}
|
||||
/* 中窄屏: 版心右侧放不下按钮时改贴屏幕右缘, 避免溢出 */
|
||||
@media (max-width: 1660px) and (min-width: 901px) {
|
||||
.detail-actions {
|
||||
left: auto;
|
||||
right: 12px;
|
||||
}
|
||||
}
|
||||
.action-btn {
|
||||
display: flex; align-items: center; justify-content: center; gap: 6px;
|
||||
height: 38px; padding: 0 18px;
|
||||
|
||||
Reference in New Issue
Block a user