-

+
+
{{ fileItem }}
@@ -256,23 +298,62 @@
-
+
+
+
{{ radio.label }}
+
+ 是
+ 否
+
+
+
+
+
+
+
+
+
+
+
{{ textarea.label }}
+
+
+
AI小助手
@@ -287,1507 +368,723 @@
+
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- {{ record.fileName }}
-
-
-
- {{ formatFileSize(record.fileSize) }}
-
-
- {{ record.fileType }}
-
-
-
-
-
-
-
-
diff --git a/src/views/pwl/pwlProject/components/style/style.scss b/src/views/pwl/pwlProject/components/style/style.scss
new file mode 100644
index 0000000..abdd9e5
--- /dev/null
+++ b/src/views/pwl/pwlProject/components/style/style.scss
@@ -0,0 +1,456 @@
+.audit-content {
+ .audit-section {
+ .child-title {
+ font-weight: 600;
+ font-size: 15px;
+ color: #333;
+ margin-bottom: 8px;
+ padding-left: 8px;
+ border-left: 3px solid #1890ff;
+ display: flex;
+ justify-content: space-between;
+ align-items: center;
+
+ .ant-btn {
+ margin-left: 0;
+ }
+ }
+ }
+}
+
+.question-prompt {
+ color: #1677ff;
+ font-weight: 500;
+ margin-bottom: 8px;
+ font-size: 14px;
+ cursor: pointer;
+ display: flex;
+ align-items: center;
+
+ &::before {
+ content: '✍️';
+ margin-right: 6px;
+ font-size: 16px;
+ }
+
+ &:hover {
+ color: #0958d9;
+ }
+}
+
+.suggestion-textarea {
+ &:focus {
+ border-color: #1677ff !important;
+ box-shadow: 0 0 0 2px rgba(22, 119, 255, 0.1) !important;
+ }
+
+ &:hover {
+ border-color: #4096ff !important;
+ }
+}
+
+/* textarea内嵌按钮样式 */
+.textarea-with-button {
+ position: relative;
+
+ .suggestion-textarea-inner {
+ padding-right: 70px !important;
+ border-radius: 6px;
+
+ &:focus {
+ border-color: #1677ff !important;
+ box-shadow: 0 0 0 2px rgba(22, 119, 255, 0.1) !important;
+ }
+
+ &:hover {
+ border-color: #4096ff !important;
+ }
+ }
+
+ .send-button-inner {
+ position: absolute;
+ right: 8px;
+ bottom: 8px;
+ z-index: 10;
+ padding: 4px 12px;
+ height: 28px;
+ font-size: 12px;
+
+ &:hover {
+ transform: none;
+ box-shadow: 0 2px 8px rgba(24, 144, 255, 0.3);
+ }
+ }
+}
+
+:deep(.export-button) {
+ border: 2px solid #ff4d4f !important;
+ border-radius: 20px !important;
+
+ &:hover,
+ &:focus {
+ border-color: #ff7875 !important;
+ box-shadow: 0 0 8px rgba(255, 77, 79, 0.3);
+ }
+}
+
+/* 统一设置所有按钮为圆角 */
+:deep(.ant-btn) {
+ border-radius: 20px !important;
+ transition: all 0.3s ease;
+
+ &:hover {
+ transform: translateY(-1px);
+ box-shadow: 0 4px 12px rgba(0, 0, 0, 0.15);
+ }
+}
+
+/* 发送按钮特殊样式 */
+:deep(.ant-btn-primary) {
+ border-radius: 20px !important;
+
+ &:hover {
+ transform: translateY(-1px);
+ box-shadow: 0 4px 12px rgba(24, 144, 255, 0.3);
+ }
+}
+
+/* 生成全部方案按钮橙色样式 */
+:deep(.generate-all-button) {
+ background-color: #ff7b00 !important;
+ border-color: #ff7b00 !important;
+
+ &:hover {
+ background-color: #e56500 !important;
+ border-color: #e56500 !important;
+ box-shadow: 0 4px 12px rgba(255, 123, 0, 0.4) !important;
+ }
+
+ &:focus {
+ background-color: #e56500 !important;
+ border-color: #e56500 !important;
+ box-shadow: 0 4px 12px rgba(255, 123, 0, 0.4) !important;
+ }
+}
+
+.navigation-container {
+ .nav-grid {
+ display: grid;
+ grid-template-columns: repeat(auto-fit, minmax(200px, 1fr));
+ gap: 12px;
+ margin-bottom: 20px;
+ }
+
+ .nav-button {
+ height: 48px;
+ border-radius: 20px !important;
+ transition: all 0.3s ease;
+ display: flex;
+ align-items: center;
+ justify-content: flex-start;
+ padding: 0 16px;
+ text-align: left;
+
+ .nav-number {
+ font-weight: bold;
+ margin-right: 8px;
+ min-width: 20px;
+ }
+
+ .nav-text {
+ flex: 1;
+ font-size: 14px;
+ }
+
+ &:hover {
+ transform: translateY(-2px);
+ box-shadow: 0 4px 12px rgba(0, 0, 0, 0.15);
+ }
+
+ &.active {
+ box-shadow: 0 4px 12px rgba(24, 144, 255, 0.3);
+ }
+ }
+
+ .progress-container {
+ display: flex;
+ align-items: center;
+ gap: 12px;
+
+ .progress-bar {
+ flex: 1;
+ height: 6px;
+ background: #f0f0f0;
+ border-radius: 3px;
+ overflow: hidden;
+
+ .progress-fill {
+ height: 100%;
+ background: linear-gradient(90deg, #1890ff, #52c41a);
+ border-radius: 3px;
+ transition: width 0.3s ease;
+ }
+ }
+
+ .progress-text {
+ font-size: 12px;
+ color: #666;
+ min-width: 40px;
+ text-align: center;
+ }
+ }
+}
+
+.audit-content {
+ .audit-section {
+ scroll-margin-top: 20px;
+
+ .section-description {
+ color: #999999;
+ font-size: 14px;
+ margin-bottom: 8px;
+ padding: 12px;
+ background: #f8f9fa;
+ border-radius: 6px;
+ }
+
+ .child-section {
+ margin-bottom: 24px;
+ padding-bottom: 16px;
+ border-bottom: 1px dashed #e8e8e8;
+
+ &:last-child {
+ border-bottom: none;
+ margin-bottom: 0;
+ }
+ }
+
+ .child-title {
+ font-weight: 600;
+ font-size: 15px;
+ color: #333;
+ margin-bottom: 8px;
+ padding-left: 8px;
+ border-left: 3px solid #1890ff;
+ }
+
+ .content-textarea {
+ border-radius: 6px;
+ transition: all 0.3s ease;
+
+ &:focus {
+ border-color: #1890ff;
+ box-shadow: 0 0 0 2px rgba(24, 144, 255, 0.2);
+ }
+ }
+ }
+}
+
+:deep(.ant-card-head) {
+ background: linear-gradient(135deg, #f5f7fa 0%, #c3cfe2 100%);
+ border-radius: 6px 6px 0 0;
+}
+
+:deep(.ant-card-body) {
+ padding: 20px;
+}
+
+:deep(.ant-back-top) {
+ right: 30px;
+ bottom: 30px;
+}
+
+.btn {
+ padding: 5px 10px;
+ color: white;
+ border-radius: 999px;
+ cursor: pointer;
+}
+.btn-gray {
+ background-color: #bbbbbb;
+}
+.btn-green {
+ background-color: #479b33;
+}
+
+/* 选择文件按钮样式 */
+.select-file-btn {
+ color: #1890ff;
+ font-size: 12px;
+ padding: 2px 8px;
+ border: 1px solid #d9d9d9;
+ border-radius: 4px;
+ background: #fff;
+
+ &:hover {
+ color: #40a9ff;
+ border-color: #40a9ff;
+ }
+}
+
+/* 文档选择弹窗样式 */
+.doc-select-container {
+ height: 550px;
+}
+
+.doc-layout {
+ display: flex;
+ height: 100%;
+ gap: 16px;
+}
+
+.dir-tree-panel {
+ width: 280px;
+ border: 1px solid #e8e8e8;
+ border-radius: 6px;
+ display: flex;
+ flex-direction: column;
+ flex-shrink: 0;
+}
+
+.dir-header {
+ padding: 12px 16px;
+ border-bottom: 1px solid #e8e8e8;
+ background: #fafafa;
+ display: flex;
+ justify-content: space-between;
+ align-items: center;
+ font-weight: 500;
+}
+
+.tree-container {
+ flex: 1;
+ padding: 8px;
+ overflow: auto;
+}
+
+.doc-list-panel {
+ flex: 1;
+ display: flex;
+ flex-direction: column;
+ border: 1px solid #e8e8e8;
+ border-radius: 6px;
+ min-width: 0;
+ overflow: hidden;
+}
+
+.doc-header {
+ padding: 12px 16px;
+ border-bottom: 1px solid #e8e8e8;
+ background: #fafafa;
+}
+
+.doc-actions {
+ display: flex;
+ align-items: center;
+ justify-content: space-between;
+ gap: 12px;
+}
+
+.doc-tips {
+ color: #1890ff;
+ font-size: 14px;
+ font-weight: 500;
+}
+
+.doc-content {
+ flex: 1;
+ padding: 16px;
+ display: flex;
+ flex-direction: column;
+ overflow: hidden;
+ min-width: 0;
+}
+
+/* 树节点激活样式 */
+:deep(.active-dir) {
+ color: #1890ff;
+ font-weight: 500;
+}
+
+:deep(.ant-tree-node-content-wrapper) {
+ border-radius: 4px;
+ transition: all 0.3s;
+}
+
+:deep(.ant-tree-node-content-wrapper:hover) {
+ background-color: #f5f5f5;
+}
+
+:deep(.ant-tree .ant-tree-treenode-selected .ant-tree-node-content-wrapper) {
+ background-color: #e6f7ff;
+}
+
+/* 优化表格样式 */
+:deep(.doc-select-modal .ant-modal-body) {
+ padding: 16px;
+}
+
+:deep(.doc-content .ant-table-wrapper) {
+ flex: 1;
+ display: flex;
+ flex-direction: column;
+ min-width: 0;
+}
+
+:deep(.doc-content .ant-spin-nested-loading) {
+ flex: 1;
+ display: flex;
+ flex-direction: column;
+ min-width: 0;
+}
+
+:deep(.doc-content .ant-spin-container) {
+ flex: 1;
+ display: flex;
+ flex-direction: column;
+ height: 100%;
+ min-width: 0;
+}
+
+:deep(.doc-content .ant-table) {
+ width: 100%;
+ flex: 1;
+}
+
+:deep(.doc-content .ant-table-container) {
+ flex: 1;
+ display: flex;
+ flex-direction: column;
+}
+
+:deep(.doc-content .ant-table-body) {
+ flex: 1;
+}
+
+:deep(.doc-content .ant-table-thead > tr > th) {
+ background: #fafafa;
+ font-weight: 600;
+ white-space: nowrap;
+}
+
+:deep(.doc-content .ant-table-tbody > tr > td) {
+ white-space: nowrap;
+ overflow: hidden;
+ text-overflow: ellipsis;
+}
+
+/* 文件名列特殊处理,允许换行 */
+:deep(.doc-content .ant-table-tbody > tr > td:first-child) {
+ white-space: normal;
+ word-break: break-word;
+ line-height: 1.4;
+ max-width: 400px;
+}
+
+/* 分页样式调整 */
+:deep(.doc-content .ant-pagination) {
+ margin-top: 16px;
+ margin-bottom: 0;
+}
+
+:deep(.doc-content .ant-table-pagination) {
+ margin-top: 16px;
+ margin-bottom: 0;
+ flex-shrink: 0;
+}