feat: 负责人下钻视图+项目负责人编辑管理+企微授权自助绑定
- 任务/项目负责人 union scope:任务中心分组视图、工作台项目进度卡、收录验证列 - 项目负责人可管理自己项目:编辑/删除项目、编辑任务、分配负责人、推送、项目内建任务;堵死转移归属/越权新建/任务迁移 - 只读依赖放开给已登录:inspect_feishu、wecom_list_internal_contacts - 企微 OAuth 自助绑定:/api/wecom-bind(state 签名校验+登录态一致性+归属冲突检查),未绑定 banner 增加入口 - 工作台项目进度卡与未绑定 banner 排版修复 - 修 user-auth 判空分支被 Turbopack dev 折叠删除导致匿名请求 500
This commit is contained in:
193
app/globals.css
193
app/globals.css
@@ -338,6 +338,13 @@ button:disabled {
|
||||
margin: 0 !important;
|
||||
}
|
||||
|
||||
.related-task-meta {
|
||||
color: #277a5d;
|
||||
background: #e6f3ee;
|
||||
border-radius: 9px;
|
||||
padding: 2px 8px;
|
||||
}
|
||||
|
||||
a {
|
||||
color: inherit;
|
||||
text-decoration: none;
|
||||
@@ -985,7 +992,9 @@ a {
|
||||
.workflow-panel,
|
||||
.task-mini-panel,
|
||||
.table-panel,
|
||||
.wecom-status-panel {
|
||||
.wecom-status-panel,
|
||||
.project-progress-panel,
|
||||
.owner-unbound-banner {
|
||||
padding: 21px;
|
||||
}
|
||||
|
||||
@@ -1013,6 +1022,44 @@ a {
|
||||
font-size: 10px;
|
||||
}
|
||||
|
||||
.owner-unbound-banner {
|
||||
display: flex;
|
||||
align-items: center;
|
||||
justify-content: space-between;
|
||||
gap: 24px;
|
||||
}
|
||||
|
||||
.owner-unbound-banner h2 {
|
||||
margin: 0;
|
||||
font-size: 15px;
|
||||
font-weight: 670;
|
||||
letter-spacing: -0.02em;
|
||||
}
|
||||
|
||||
.owner-unbound-banner p {
|
||||
margin: 6px 0 0;
|
||||
color: #7d8683;
|
||||
font-size: 12px;
|
||||
line-height: 1.7;
|
||||
}
|
||||
|
||||
.owner-bind-button {
|
||||
flex-shrink: 0;
|
||||
padding: 9px 18px;
|
||||
border: 1px solid var(--green-deep);
|
||||
border-radius: 10px;
|
||||
color: white;
|
||||
background: var(--green);
|
||||
font-size: 12px;
|
||||
font-weight: 600;
|
||||
text-decoration: none;
|
||||
white-space: nowrap;
|
||||
}
|
||||
|
||||
.owner-bind-button:hover {
|
||||
background: var(--green-deep);
|
||||
}
|
||||
|
||||
.workflow-track {
|
||||
display: grid;
|
||||
grid-template-columns: auto 1fr auto 1fr auto 1fr auto;
|
||||
@@ -1334,7 +1381,8 @@ a {
|
||||
background: #e9f3f6;
|
||||
}
|
||||
|
||||
.status-pill.complete {
|
||||
.status-pill.complete,
|
||||
.status-pill.completed {
|
||||
color: #277a5d;
|
||||
background: #e6f3ee;
|
||||
}
|
||||
@@ -1942,6 +1990,15 @@ a {
|
||||
background: #e5e9e6;
|
||||
}
|
||||
|
||||
.inline-summary.related-summary {
|
||||
border-color: #bfe3d6;
|
||||
background: #f4faf7;
|
||||
}
|
||||
|
||||
.inline-summary.related-summary strong {
|
||||
font-size: 14px;
|
||||
}
|
||||
|
||||
.summary-note {
|
||||
display: flex;
|
||||
align-items: center;
|
||||
@@ -2131,6 +2188,46 @@ a {
|
||||
letter-spacing: -0.03em;
|
||||
}
|
||||
|
||||
.task-scope-companion {
|
||||
display: flex;
|
||||
align-items: center;
|
||||
gap: 10px;
|
||||
margin-top: 2px;
|
||||
padding: 10px 12px;
|
||||
border: 1px dashed #cfe0d8;
|
||||
border-radius: 9px;
|
||||
background: #f6faf8;
|
||||
font-size: 10px;
|
||||
}
|
||||
|
||||
.task-scope-companion .companion-label {
|
||||
color: #277a5d;
|
||||
font-weight: 650;
|
||||
}
|
||||
|
||||
.task-scope-companion strong {
|
||||
flex: 1;
|
||||
min-width: 0;
|
||||
overflow: hidden;
|
||||
text-overflow: ellipsis;
|
||||
white-space: nowrap;
|
||||
font-size: 10px;
|
||||
}
|
||||
|
||||
.task-scope-companion .companion-progress {
|
||||
color: #99a29f;
|
||||
white-space: nowrap;
|
||||
}
|
||||
|
||||
.tag-weak {
|
||||
padding: 1px 7px;
|
||||
border-radius: 8px;
|
||||
color: #b3aba5;
|
||||
background: #f6f4f2;
|
||||
font-size: 8px;
|
||||
white-space: nowrap;
|
||||
}
|
||||
|
||||
.task-scope-open {
|
||||
display: flex;
|
||||
width: 100%;
|
||||
@@ -3331,6 +3428,98 @@ a {
|
||||
gap: 6px;
|
||||
}
|
||||
|
||||
.collection-verify-cell {
|
||||
display: flex;
|
||||
flex-direction: column;
|
||||
align-items: flex-start;
|
||||
gap: 4px;
|
||||
}
|
||||
|
||||
.collection-verify-cell small {
|
||||
color: #99a29f;
|
||||
font-size: 8px;
|
||||
}
|
||||
|
||||
.project-progress-list {
|
||||
display: flex;
|
||||
flex-direction: column;
|
||||
gap: 12px;
|
||||
}
|
||||
|
||||
.project-progress-row {
|
||||
display: flex;
|
||||
align-items: center;
|
||||
gap: 18px;
|
||||
padding: 13px 16px;
|
||||
border: 1px solid #eef1ef;
|
||||
border-radius: 11px;
|
||||
background: #fbfcfb;
|
||||
}
|
||||
|
||||
.project-progress-title {
|
||||
display: flex;
|
||||
flex: 1;
|
||||
min-width: 0;
|
||||
align-items: center;
|
||||
gap: 12px;
|
||||
}
|
||||
|
||||
.project-progress-title .avatar {
|
||||
width: 34px;
|
||||
height: 34px;
|
||||
flex-shrink: 0;
|
||||
}
|
||||
|
||||
.project-progress-title strong {
|
||||
display: block;
|
||||
font-size: 13px;
|
||||
}
|
||||
|
||||
.project-progress-title span {
|
||||
display: block;
|
||||
margin-top: 3px;
|
||||
color: #7d8683;
|
||||
font-size: 11px;
|
||||
}
|
||||
|
||||
.project-progress-funnel {
|
||||
display: flex;
|
||||
align-items: center;
|
||||
gap: 12px;
|
||||
white-space: nowrap;
|
||||
}
|
||||
|
||||
.project-progress-funnel i {
|
||||
color: #c6cdc9;
|
||||
font-size: 11px;
|
||||
font-style: normal;
|
||||
}
|
||||
|
||||
.funnel-chip {
|
||||
display: inline-flex;
|
||||
align-items: baseline;
|
||||
gap: 6px;
|
||||
padding: 5px 12px;
|
||||
border-radius: 9px;
|
||||
color: #6b7470;
|
||||
background: #f1f4f2;
|
||||
font-size: 11px;
|
||||
}
|
||||
|
||||
.funnel-chip b {
|
||||
color: #37423d;
|
||||
font-size: 13px;
|
||||
}
|
||||
|
||||
.funnel-chip.done {
|
||||
color: #277a5d;
|
||||
background: #e6f3ee;
|
||||
}
|
||||
|
||||
.funnel-chip.done b {
|
||||
color: #277a5d;
|
||||
}
|
||||
|
||||
.creator-screenshot-link {
|
||||
position: relative;
|
||||
width: 72px;
|
||||
|
||||
Reference in New Issue
Block a user