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)
This commit is contained in:
郭庆泰
2026-08-15 12:41:10 +08:00
commit cf5790229a
694 changed files with 102090 additions and 0 deletions
+272
View File
@@ -0,0 +1,272 @@
<!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>