主要改动: - SQL: biz_support_unit → biz_org, 加 org_type, 加 business_nature; 删 biz_execution_unit, biz_service_org - SQL: biz_project.support_unit_id/name + service_org_id/name → org_id/name/type - SQL: biz_meeting.support_unit_name → org_name - SQL: biz_person.work_unit → org_id (FK) - 后端: 新 BizOrg entity/mapper/service/controller - 后端: BizProject/BizMeeting 字段重命名 - 后端: 删 12 个 BizSupportUnit/BizExecutionUnit/BizServiceOrg Java 文件 - 后端: BizPersonImportVO.workUnit → orgName (导入时查 biz_org 取 org_id) - 后端: BizAuthController.registerExecutor 完整实现 (原 registerSupplier stub) - 前端: 新 admin/Orgs.vue + manager/Orgs.vue (原 SupportUnits) - 前端: RegisterExecutor.vue (原 RegisterSupplier, 单页 2 步) - 前端: sponsor/executor/manager 多个文件 workUnit → orgId/orgName 重命名 - 前端: 统一 supplier → executor, 业务命名 sponsor(赞助方) / executor(执行方=供应商) - 前端: 全工程 execution → executor (company type / role / person unit_type)
272 lines
9.6 KiB
HTML
272 lines
9.6 KiB
HTML
<!DOCTYPE html>
|
||
<html lang="zh-CN">
|
||
<head>
|
||
<meta charset="UTF-8">
|
||
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
||
<title>查看人员 - 项目管理系统</title>
|
||
<style>
|
||
/* ============= 全局(沿用 account-info.html / people.html / new-person.html 视觉约定)============= */
|
||
* { margin: 0; padding: 0; box-sizing: border-box; }
|
||
|
||
body {
|
||
font-family: -apple-system, "PingFang SC", "Microsoft YaHei", sans-serif;
|
||
color: #333;
|
||
background: #fafafa;
|
||
min-height: 100vh;
|
||
}
|
||
|
||
.content { padding: 24px 32px; }
|
||
|
||
/* ============= 面包屑(原型 u10669)============= */
|
||
.breadcrumb {
|
||
font-size: 13px;
|
||
color: #8c8c8c;
|
||
margin-bottom: 12px;
|
||
}
|
||
.breadcrumb a {
|
||
color: #1890ff;
|
||
text-decoration: none;
|
||
}
|
||
.breadcrumb a:hover { text-decoration: underline; }
|
||
|
||
/* ============= 页面标题(原型 u10671)============= */
|
||
.page-title {
|
||
font-size: 22px;
|
||
font-weight: 600;
|
||
color: #1a1a1a;
|
||
margin-bottom: 16px;
|
||
}
|
||
|
||
/* ============= 详情卡片 ============= */
|
||
.card {
|
||
background: #fff;
|
||
border-radius: 8px;
|
||
padding: 32px 40px;
|
||
border: 1px solid #f0f0f0;
|
||
}
|
||
|
||
.detail-list {
|
||
max-width: 560px;
|
||
margin: 0 auto;
|
||
}
|
||
|
||
/* ============= label-value 行(原型 label top 比 value top 高 4~9px,是 Axure 自动居中,按行映射)============= */
|
||
.view-row {
|
||
display: flex;
|
||
align-items: center;
|
||
margin-bottom: 20px;
|
||
min-height: 32px;
|
||
}
|
||
.view-row:last-of-type { margin-bottom: 0; }
|
||
|
||
.view-label {
|
||
flex: 0 0 90px;
|
||
font-size: 14px;
|
||
color: #595959;
|
||
text-align: right;
|
||
padding-right: 16px;
|
||
white-space: nowrap;
|
||
}
|
||
|
||
.view-value {
|
||
flex: 0 0 358px;
|
||
font-size: 14px;
|
||
color: #1a1a1a;
|
||
line-height: 32px;
|
||
word-break: break-all;
|
||
}
|
||
|
||
/* ============= 状态徽章(原型 u10701 "正常" 用现代表达)============= */
|
||
.status-tag {
|
||
display: inline-block;
|
||
padding: 2px 10px;
|
||
border-radius: 10px;
|
||
font-size: 12px;
|
||
}
|
||
.status-normal {
|
||
background: #f6ffed;
|
||
color: #52c41a;
|
||
}
|
||
.status-disabled {
|
||
background: #fff1f0;
|
||
color: #ff4d4f;
|
||
}
|
||
|
||
/* ============= 角色徽章(原型 u10697 "监察员" 用现代表达)============= */
|
||
.role-tag {
|
||
display: inline-block;
|
||
padding: 2px 10px;
|
||
border-radius: 10px;
|
||
font-size: 12px;
|
||
background: #e6f7ff;
|
||
color: #1890ff;
|
||
}
|
||
|
||
/* ============= 按钮区(原型 u10673 返回,140×40 白底灰边圆角)============= */
|
||
.form-actions {
|
||
display: flex;
|
||
gap: 12px;
|
||
justify-content: center;
|
||
margin-top: 32px;
|
||
padding-top: 24px;
|
||
border-top: 1px solid #f0f0f0;
|
||
}
|
||
|
||
.btn {
|
||
height: 40px;
|
||
padding: 0 24px;
|
||
border-radius: 5px;
|
||
font-size: 14px;
|
||
cursor: pointer;
|
||
min-width: 140px;
|
||
transition: all 0.2s;
|
||
}
|
||
|
||
.btn-default {
|
||
background: #fff;
|
||
color: #333;
|
||
border: 1px solid #797979;
|
||
}
|
||
.btn-default:hover { border-color: #1890ff; color: #1890ff; }
|
||
|
||
/* ============= 响应式 ============= */
|
||
@media (max-width: 768px) {
|
||
.content { padding: 16px; }
|
||
.card { padding: 20px; }
|
||
.detail-list { max-width: 100%; }
|
||
.view-row { flex-direction: column; align-items: stretch; }
|
||
.view-label { text-align: left; padding-right: 0; margin-bottom: 6px; }
|
||
.view-value { flex: 1; width: 100%; }
|
||
.btn { width: 100%; }
|
||
}
|
||
</style>
|
||
</head>
|
||
<body>
|
||
<!--
|
||
============================================================
|
||
来源: 原型/查看_1.html + 原型/files/查看_1/styles.css
|
||
用途: "人员管理 → 操作 → 查看"详情页(仅查看,不可编辑)
|
||
作为子页面,通过 iframe 加载到 executor.html 等父级页面中
|
||
输出: html/components/view-person.html
|
||
============================================================
|
||
按 top 排序的内容区模块:
|
||
#1 u10669 "首页" (287, 52) → 面包屑根
|
||
#2 u10671 "查看人员" (712, 183) → h1 页面标题
|
||
#3 u10675+u10687 姓名 + 张三 (543/629, 270)
|
||
#4 u10677+u10689 手机号 + 13534621147 (529/629, 316)
|
||
#5 u10679+u10691 工作单位 + 北京XXXXXXX公司 (515/629, 366)
|
||
#6 u10681+u10693 部门 + 华北大区 (543/629, 407)
|
||
#7 u10683+u10695 职务 + 项目负责人 (543/629, 458)
|
||
#8 u10685+u10697 角色 + 监察员 (543/629, 511)
|
||
#9 u10699+u10701 状态 + 正常 (543/629, 563)
|
||
#10 u10673 "返回" (698, 632) → 次按钮(白底灰边)
|
||
============================================================
|
||
框架元素(由父级渲染,本页面不输出):
|
||
- u10651 顶栏水平线 (10, 100)
|
||
- u10653 logo (32, 12)
|
||
- u10655/u10657/u10659/u10665 侧边栏菜单 (left:75)
|
||
- u10661 头像 (1182, 10)
|
||
- u10663 用户名 (1262, 35)
|
||
- u10667 侧边栏竖线 (230, 126)
|
||
============================================================
|
||
新增项(非原型):
|
||
- 角色 / 状态用徽章样式展示,与 people.html 列表视觉一致
|
||
- 移动端响应式适配
|
||
============================================================
|
||
-->
|
||
<main class="content">
|
||
|
||
<!-- #1 面包屑(原型 u10669) -->
|
||
<div class="breadcrumb">
|
||
<a href="javascript:void(0)" onclick="goHome()">首页</a> >
|
||
<a href="javascript:void(0)" onclick="goPeople()">人员管理</a> >
|
||
查看人员
|
||
</div>
|
||
|
||
<!-- #2 页面标题(原型 u10671) -->
|
||
<h1 class="page-title">查看人员</h1>
|
||
|
||
<!-- #3~#9 详情卡片(7 行 label-value) -->
|
||
<div class="card">
|
||
<div class="detail-list">
|
||
|
||
<!-- #3 姓名:u10675 label + u10687 value -->
|
||
<div class="view-row">
|
||
<label class="view-label">姓名</label>
|
||
<div class="view-value">张三</div>
|
||
</div>
|
||
|
||
<!-- #4 手机号:u10677 label + u10689 value -->
|
||
<div class="view-row">
|
||
<label class="view-label">手机号</label>
|
||
<div class="view-value">13534621147</div>
|
||
</div>
|
||
|
||
<!-- #5 工作单位:u10679 label + u10691 value -->
|
||
<div class="view-row">
|
||
<label class="view-label">工作单位</label>
|
||
<div class="view-value">北京XXXXXXX公司</div>
|
||
</div>
|
||
|
||
<!-- #6 部门:u10681 label + u10693 value -->
|
||
<div class="view-row">
|
||
<label class="view-label">部门</label>
|
||
<div class="view-value">华北大区</div>
|
||
</div>
|
||
|
||
<!-- #7 职务:u10683 label + u10695 value -->
|
||
<div class="view-row">
|
||
<label class="view-label">职务</label>
|
||
<div class="view-value">项目负责人</div>
|
||
</div>
|
||
|
||
<!-- #8 角色:u10685 label + u10697 value -->
|
||
<div class="view-row">
|
||
<label class="view-label">角色</label>
|
||
<div class="view-value">
|
||
<span class="role-tag">监察员</span>
|
||
</div>
|
||
</div>
|
||
|
||
<!-- #9 状态:u10699 label + u10701 value -->
|
||
<div class="view-row">
|
||
<label class="view-label">状态</label>
|
||
<div class="view-value">
|
||
<span class="status-tag status-normal">正常</span>
|
||
</div>
|
||
</div>
|
||
|
||
<!-- #10 返回按钮:u10673 -->
|
||
<div class="form-actions">
|
||
<button type="button" class="btn btn-default" onclick="goBack()">返回</button>
|
||
</div>
|
||
|
||
</div>
|
||
</div>
|
||
</main>
|
||
|
||
<script>
|
||
// 通过父级 iframe 切换页面(executor.html 等父页面都有 #contentFrame)
|
||
function goHome() {
|
||
try {
|
||
if (window.parent && window.parent.document.getElementById('contentFrame')) {
|
||
window.parent.document.getElementById('contentFrame').src = 'overview.html';
|
||
}
|
||
} catch (e) {}
|
||
}
|
||
|
||
function goPeople() {
|
||
try {
|
||
if (window.parent && window.parent.document.getElementById('contentFrame')) {
|
||
window.parent.document.getElementById('contentFrame').src = 'people.html';
|
||
}
|
||
} catch (e) {}
|
||
}
|
||
|
||
// 返回按钮:返回人员管理列表
|
||
function goBack() {
|
||
goPeople();
|
||
}
|
||
</script>
|
||
</body>
|
||
</html> |