完成文档类型增删改查

This commit is contained in:
2025-04-11 18:45:03 +08:00
parent d54d0f25c6
commit 8177b4195f
18 changed files with 3298 additions and 371 deletions
+35
View File
@@ -0,0 +1,35 @@
.document-types-page {
@apply w-full;
}
.document-types-page .page-header {
@apply flex justify-between items-center mb-4;
}
.document-types-page .page-title {
@apply text-xl font-medium;
}
.document-types-page .type-badge {
@apply inline-flex items-center px-2 py-0.5 rounded-full text-xs bg-primary-50 text-primary-600 mr-1 mb-1;
}
.document-types-page .groups-container {
@apply flex flex-wrap gap-1 max-w-md;
}
.document-types-page .operation-btn {
@apply inline-flex items-center text-sm px-2 py-1 rounded hover:bg-gray-100;
}
.document-types-page .operation-btn i {
@apply mr-1;
}
.document-types-page .text-primary {
@apply text-primary-600;
}
.document-types-page .text-error {
@apply text-red-600;
}
+142
View File
@@ -0,0 +1,142 @@
.document-type-new-page {
@apply w-full;
}
.document-type-new-page .page-header {
@apply flex justify-between items-center mb-4;
}
.document-type-new-page .page-title {
@apply text-xl font-medium;
}
.document-type-new-page .form-group {
@apply mb-4;
}
.document-type-new-page .form-label {
@apply block text-sm font-medium text-gray-700 mb-1;
}
.document-type-new-page .form-input,
.document-type-new-page .form-textarea,
.document-type-new-page .form-select {
@apply w-full rounded-md border border-gray-300 shadow-sm px-3 py-2 transition-all duration-300;
@apply focus:outline-none focus:border-[var(--primary-color)] focus:shadow-[0_0_0_2px_rgba(0,104,74,0.2)];
}
.document-type-new-page .form-textarea {
@apply resize-none;
}
.document-type-new-page .form-tip {
@apply text-xs text-gray-500 mt-1;
}
.document-type-new-page .input-error {
@apply border-red-500;
}
.document-type-new-page .error-message {
@apply text-sm text-red-600 mt-1 font-medium;
display: flex;
align-items: center;
}
.document-type-new-page .error-message::before {
content: "⚠️";
margin-right: 0.25rem;
}
.document-type-new-page .error-show {
display: flex !important;
color: #ff4d4f;
font-weight: 500;
visibility: visible;
}
.document-type-new-page .general-error {
@apply flex items-center p-3 mb-4 bg-red-50 rounded-md text-red-600 text-sm;
}
.document-type-new-page .general-error i {
@apply mr-2;
}
.document-type-new-page .group-error {
@apply border border-red-500 rounded-md;
}
/* 复选框样式 */
.document-type-new-page .checkbox-group {
@apply flex flex-col gap-2 mt-2;
}
.document-type-new-page .checkbox-item {
@apply flex items-center p-2 border border-gray-200 rounded cursor-pointer transition-all;
}
.document-type-new-page .checkbox-item:hover {
@apply border-[var(--primary-color)] bg-[rgba(0,104,74,0.15)];
}
.document-type-new-page .checkbox-item.checked {
@apply border-[var(--primary-color)] bg-[rgba(0,104,74,0.25)];
}
/* 父子级分组样式 */
.document-type-new-page .parent-checkbox-item {
@apply bg-gray-50 font-medium;
}
.document-type-new-page .child-checkbox-item {
@apply ml-8 border-l-2 border-l-[var(--primary-color)];
}
.document-type-new-page .expand-icon {
@apply w-6 h-6 flex items-center justify-center rounded hover:bg-[rgba(0,104,74,0.15)] mr-2 cursor-pointer;
}
.document-type-new-page .group-badge {
@apply inline-flex items-center px-2 py-0.5 rounded-full text-xs ml-2;
}
.document-type-new-page .parent-badge {
@apply bg-[rgba(0,104,74,1)] text-white;
}
.document-type-new-page .child-badge {
@apply bg-[rgba(0,104,1,0.61)] text-white;
}
/* 添加checkbox-input样式,使用视觉上更美观的自定义复选框样式 */
.document-type-new-page .checkbox-input {
@apply mr-2 h-4 w-4 text-primary-600 border-gray-300 rounded;
@apply focus:ring-primary-500 cursor-pointer;
}
.document-type-new-page .checkbox-label {
@apply text-gray-700 font-normal cursor-pointer flex-1 flex items-center;
@apply bg-transparent border-none p-0 text-left appearance-none;
outline: none;
}
.document-type-new-page .checkbox-label:focus {
@apply outline-none ring-2 ring-primary-300 rounded;
}
.document-type-new-page .checkbox-item.checked .checkbox-label {
@apply text-[var(--primary-color)] font-medium;
}
.document-type-new-page .radio-input {
@apply mr-1 h-4 w-4 text-primary-600 border-gray-300 rounded;
@apply focus:ring-primary-500 cursor-pointer;
accent-color: #00684a;
}
/* 更完整的自定义单选按钮样式(可选) */
.document-type-new-page .radio-input:checked {
background-color: #00684a;
border-color: #00684a;
}
+201
View File
@@ -0,0 +1,201 @@
.document-edit-page {
@apply w-full;
}
.document-edit-page .page-header {
@apply flex justify-between items-center mb-4;
}
.document-edit-page .page-title {
@apply text-xl font-medium;
}
.document-edit-page .form-group {
@apply mb-4;
}
.document-edit-page .form-label {
@apply block text-sm font-medium text-gray-700 mb-1;
}
.document-edit-page .form-input,
.document-edit-page .form-textarea,
.document-edit-page .form-select {
@apply w-full rounded-md border border-gray-300 shadow-sm px-3 py-2;
@apply focus:outline-none focus:ring-1 focus:ring-primary-500 focus:border-primary-500;
}
.document-edit-page .text-secondary {
@apply text-gray-500;
}
/* 文档信息样式 */
.document-info {
@apply flex items-start mb-6;
}
.document-icon {
@apply text-3xl mr-4 p-2 bg-gray-50 rounded-lg;
}
.document-details {
@apply flex-1;
}
.document-name {
@apply text-lg font-medium mb-1;
}
.document-meta {
@apply flex items-center flex-wrap gap-4 text-sm text-gray-600;
}
.meta-item {
@apply flex items-center;
}
.meta-item i {
@apply mr-1;
}
/* 状态徽章样式 */
.status-badge {
@apply inline-flex items-center px-2 py-0.5 rounded-full text-xs;
}
.status-pending {
@apply bg-blue-50 text-blue-600;
}
.status-processing {
@apply bg-yellow-50 text-yellow-600;
}
.status-pass {
@apply bg-green-50 text-green-600;
}
.status-warning {
@apply bg-orange-50 text-orange-600;
}
.status-fail {
@apply bg-red-50 text-red-600;
}
/* 提示框样式 */
.alert {
@apply flex items-center p-3 rounded-md;
}
.alert-info {
@apply bg-blue-50 border border-blue-100 text-blue-700;
}
/* 切换开关样式 */
.switch {
position: relative;
display: inline-block;
width: 36px;
height: 20px;
@apply align-middle;
}
.switch input {
opacity: 0;
width: 0;
height: 0;
}
.slider {
position: absolute;
cursor: pointer;
top: 0;
left: 0;
right: 0;
bottom: 0;
background-color: #ccc;
transition: .4s;
border-radius: 34px;
}
.slider:before {
position: absolute;
content: "";
height: 16px;
width: 16px;
left: 2px;
bottom: 2px;
background-color: white;
transition: .4s;
border-radius: 50%;
}
input:checked + .slider {
@apply bg-primary-500;
}
input:focus + .slider {
@apply ring-2 ring-offset-2 ring-primary-500;
}
input:checked + .slider:before {
transform: translateX(16px);
}
/* 文档预览样式 */
.document-preview {
@apply border border-gray-200 rounded-md overflow-hidden h-96;
}
.preview-toolbar {
@apply px-4 py-2 bg-gray-50 border-b border-gray-200 flex justify-between items-center;
}
.preview-content {
@apply h-full overflow-auto p-4 bg-white;
}
.preview-placeholder {
@apply flex flex-col justify-center items-center h-full text-gray-500;
}
.preview-placeholder i {
@apply text-4xl mb-4 text-gray-300;
}
/* 历史时间线样式 */
.history-timeline {
@apply relative pl-5 mt-5;
}
.history-timeline::before {
content: '';
@apply absolute left-0 top-2 bottom-2 w-0.5 bg-gray-100;
}
.timeline-item {
@apply relative pb-4;
}
.timeline-item::before {
content: '';
@apply absolute w-2.5 h-2.5 rounded-full bg-primary-500 -left-6 top-1.5;
}
.timeline-item:last-child {
@apply pb-0;
}
.timeline-time {
@apply text-xs text-gray-500 mb-1;
}
.timeline-content {
@apply bg-gray-50 p-2 rounded;
}
/* 错误容器样式 */
.error-container {
@apply p-6;
}