Files
郭庆泰 cf5790229a refactor: 合并 biz_support_unit/biz_execution_unit/biz_service_org 为 biz_org, 删除 2 张孤儿表, 改 biz_person.work_unit → org_id FK
主要改动:
- 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)
2026-08-15 12:41:10 +08:00

272 lines
9.6 KiB
HTML
Raw Permalink Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
<!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> &gt;
<a href="javascript:void(0)" onclick="goPeople()">人员管理</a> &gt;
查看人员
</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>