完善本地质量门禁与资金链路测试

This commit is contained in:
yml2213
2026-09-02 13:50:19 +08:00
parent dd2b45bd2c
commit 208f12ddb4
80 changed files with 12245 additions and 11541 deletions
@@ -0,0 +1,560 @@
.admin-page {
display: grid;
height: 100%;
min-height: 0;
grid-template-rows: auto minmax(0, 1fr);
}
.page-head {
display: flex;
flex: none;
align-items: center;
justify-content: space-between;
margin-bottom: 16px;
}
.page-head h1 {
margin: 0;
font-size: 22px;
}
.page-head p {
margin: 6px 0 0;
color: #6b7280;
}
.head-right {
display: flex;
align-items: center;
flex-wrap: wrap;
gap: 8px;
}
.chat-workbench {
display: grid;
min-height: 0;
grid-template-columns: 330px minmax(0, 1fr);
overflow: hidden;
border: 1px solid #e5e7eb;
border-radius: 8px;
background: #fff;
}
.conversation-pane {
min-height: 0;
overflow-y: auto;
border-right: 1px solid #e5e7eb;
background: #f8fafc;
}
.filter-tabs {
display: grid;
gap: 10px;
padding: 10px 12px 12px;
border-bottom: 1px solid #e5e7eb;
}
.filter-tabs :deep(.el-radio-group) {
display: flex;
width: 100%;
}
.filter-tabs :deep(.el-radio-button) {
flex: 1;
}
.filter-tabs :deep(.el-radio-button__inner) {
width: 100%;
padding: 7px 8px;
}
.stage-tabs {
display: flex;
flex-wrap: wrap;
gap: 6px;
}
.stage-tabs button {
display: inline-flex;
align-items: center;
gap: 4px;
height: 26px;
padding: 0 8px;
border: 1px solid #d8dee8;
border-radius: 999px;
background: #fff;
color: #4b5563;
font-size: 12px;
font-weight: 700;
cursor: pointer;
}
.stage-tabs button.active {
border-color: #3b82f6;
background: #eff6ff;
color: #2563eb;
}
.stage-tabs em {
color: #94a3b8;
font-style: normal;
font-weight: 800;
}
.stage-tabs button.active em {
color: #2563eb;
}
.conversation-search {
width: 100%;
}
.conversation-pagination {
display: flex;
justify-content: center;
padding: 12px 8px;
border-top: 1px solid #e5e7eb;
background: #fff;
}
.conversation-row {
position: relative;
display: block;
width: 100%;
padding: 14px;
border: 0;
border-bottom: 1px solid #e5e7eb;
background: transparent;
text-align: left;
}
.conversation-row.active {
background: #eef6ff;
}
.row-title {
display: flex;
gap: 10px;
align-items: center;
}
.row-title strong {
min-width: 0;
flex: 1;
overflow: hidden;
color: #111827;
text-overflow: ellipsis;
white-space: nowrap;
}
.row-title span {
flex: none;
color: #9ca3af;
font-size: 12px;
}
.conversation-row p {
margin: 8px 24px 0 0;
overflow: hidden;
color: #6b7280;
font-size: 13px;
text-overflow: ellipsis;
white-space: nowrap;
}
.row-tags {
display: flex;
min-width: 0;
gap: 6px;
align-items: center;
margin-top: 8px;
}
.row-tags span {
overflow: hidden;
max-width: 160px;
padding: 2px 7px;
border-radius: 999px;
background: #eef2f7;
color: #64748b;
font-size: 11px;
line-height: 18px;
text-overflow: ellipsis;
white-space: nowrap;
}
.row-tags .stage-tag {
flex: none;
max-width: none;
font-weight: 700;
}
.stage-tag.pending {
background: #fee2e2;
color: #dc2626;
}
.stage-tag.unjoined {
background: #fef3c7;
color: #b45309;
}
.stage-tag.handoff {
background: #dbeafe;
color: #2563eb;
}
.stage-tag.renting {
background: #dcfce7;
color: #15803d;
}
.stage-tag.after-sale {
background: #f3e8ff;
color: #7e22ce;
}
.stage-tag.ended {
background: #e5e7eb;
color: #4b5563;
}
.row-meta {
display: flex;
align-items: center;
justify-content: space-between;
margin-top: 8px;
}
.support-name {
color: #8a94a6;
font-size: 12px;
}
.row-meta em {
min-width: 18px;
height: 18px;
padding: 0 5px;
border-radius: 9px;
background: #ef4444;
color: #fff;
font-size: 11px;
font-style: normal;
font-weight: 700;
line-height: 18px;
text-align: center;
}
.message-pane {
display: grid;
min-width: 0;
min-height: 0;
grid-template-rows: auto minmax(0, 1fr) auto;
}
.message-head {
display: flex;
align-items: flex-start;
justify-content: space-between;
padding: 14px 18px;
border-bottom: 1px solid #e5e7eb;
}
.head-title {
flex: 1;
min-width: 0;
}
.head-title h2 {
margin: 0;
font-size: 18px;
display: flex;
align-items: center;
gap: 8px;
}
.head-title p {
margin: 6px 0 0;
color: #6b7280;
font-size: 13px;
}
.head-actions {
display: flex;
gap: 8px;
flex-shrink: 0;
}
.head-actions a {
text-decoration: none;
}
.message-body {
display: grid;
min-width: 0;
min-height: 0;
background: #f3f6fa;
}
.message-body.has-order {
grid-template-columns: minmax(0, 1fr) minmax(330px, 38%);
}
.message-list {
min-height: 0;
overflow-y: auto;
padding: 18px;
background: #f3f6fa;
}
.order-side-panel {
min-width: 0;
overflow-y: auto;
padding: 16px;
border-left: 1px solid #e5e7eb;
background: #f8fafc;
}
.order-side-head,
.order-side-section {
padding: 14px;
border: 1px solid #edf2f7;
border-radius: 8px;
background: #fff;
box-shadow: 0 8px 18px rgba(15, 23, 42, 0.03);
}
.order-side-head {
display: grid;
gap: 6px;
margin-bottom: 12px;
}
.order-side-head span {
color: #2563eb;
font-size: 12px;
font-weight: 700;
}
.order-side-head strong {
color: #071947;
font-size: 18px;
}
.order-side-head p,
.order-side-section p {
margin: 0;
color: #7c8aaa;
font-size: 13px;
line-height: 1.6;
}
.order-side-metrics {
display: grid;
grid-template-columns: repeat(2, minmax(0, 1fr));
gap: 10px;
margin-bottom: 12px;
}
.order-side-metrics div {
display: grid;
gap: 5px;
min-width: 0;
padding: 12px;
border: 1px solid #edf2f7;
border-radius: 8px;
background: #fff;
}
.order-side-metrics span {
color: #8a94a6;
font-size: 12px;
}
.order-side-metrics strong {
overflow: hidden;
color: #071947;
font-size: 16px;
font-weight: 800;
text-overflow: ellipsis;
white-space: nowrap;
}
.order-side-section {
display: grid;
gap: 8px;
}
.order-side-section + .order-side-section {
margin-top: 12px;
}
.order-side-section h3 {
margin: 0;
color: #071947;
font-size: 15px;
}
.order-side-section strong {
color: #071947;
font-size: 13px;
}
.message-row {
max-width: 70%;
margin-bottom: 14px;
}
.message-row.self {
margin-left: auto;
text-align: right;
}
.message-row.system {
max-width: none;
text-align: center;
}
.system-block {
display: inline-flex;
max-width: min(100%, 320px);
flex-direction: column;
align-items: center;
gap: 8px;
}
.system-attachments {
display: grid;
justify-items: center;
gap: 6px;
}
.message-row small {
display: block;
margin-bottom: 5px;
color: #8a94a6;
}
.read-status {
margin-top: 4px;
margin-bottom: 0;
font-size: 11px;
}
.read-status.read {
color: #67c23a;
}
.message-row p {
display: inline-block;
margin: 0;
padding: 10px 12px;
border-radius: 8px;
background: #fff;
color: #111827;
line-height: 1.5;
text-align: left;
}
.message-row.self p {
background: #dff5eb;
}
.message-row.admin p {
background: #fff4e6;
border-left: 3px solid #ff9800;
}
.admin-label {
color: #ff9800 !important;
font-weight: 600;
}
.message-attachments {
display: grid;
justify-items: start;
gap: 6px;
}
.message-row.self .message-attachments {
justify-items: end;
}
.message-row.system span {
display: inline-block;
padding: 5px 10px;
border-radius: 8px;
background: #e5e7eb;
color: #6b7280;
font-size: 12px;
}
.composer {
border-top: 1px solid #e5e7eb;
}
.composer-tools {
display: flex;
gap: 8px;
align-items: center;
padding: 8px 14px;
border-bottom: 1px solid #f0f0f0;
}
.hidden-file {
display: none;
}
.pending-attachments {
display: flex;
gap: 8px;
padding: 10px 14px 0;
overflow-x: auto;
}
.pending-item {
position: relative;
flex: none;
}
.pending-item :deep(.chat-image-button) {
width: 84px;
height: 84px;
}
.pending-item :deep(.chat-image-button img) {
height: 84px;
}
.remove-attachment {
position: absolute;
top: 4px;
right: 4px;
display: grid;
width: 22px;
height: 22px;
place-items: center;
border: 0;
border-radius: 50%;
background: rgba(17, 24, 39, 0.72);
color: #fff;
cursor: pointer;
}
.composer-input {
display: grid;
grid-template-columns: minmax(0, 1fr) 88px;
gap: 12px;
align-items: end;
padding: 14px;
}
.reply-title {
font-weight: 500;
margin-right: 8px;
}
.reply-preview {
color: #9ca3af;
font-size: 12px;
}