通知与推荐功能,css样式优化

Change-Id: I33d934bfdca88b7a8e6742be2a3c7323d28ffbcf
diff --git a/src/components/Personal/personalSubpage.css b/src/components/Personal/personalSubpage.css
index 2ba8687..ff587e2 100644
--- a/src/components/Personal/personalSubpage.css
+++ b/src/components/Personal/personalSubpage.css
@@ -1,336 +1,553 @@
+/* personalSubpage.css - 现代化设计 */

+

 /* 上传记录表格样式 */

 .uploads-table {

   width: 100%;

-  border-collapse: collapse;

-  margin-top: 20px;

+  border-collapse: separate;

+  border-spacing: 0;

+  margin-top: 25px;

+  background: white;

+  border-radius: 12px;

+  overflow: hidden;

+  box-shadow: 0 8px 20px rgba(0, 0, 0, 0.08);

 }

 

 .uploads-table th, .uploads-table td {

-  padding: 12px 15px;

+  padding: 15px;

   text-align: left;

-  border-bottom: 1px solid #e0e0e0;

+  border-bottom: 1px solid #f0f2f5;

 }

 

 .uploads-table th {

-  background-color: #f5f5f5;

+  background-color: #1e3c72;

+  color: white;

   font-weight: 600;

+  text-transform: uppercase;

+  font-size: 14px;

 }

 

-.list-item:hover {

-  background-color: #f9f9f9;

+.uploads-table tr:last-child td {

+  border-bottom: none;

+}

+

+.uploads-table tr:hover td {

+  background-color: #f9fafc;

 }

 

 /* 操作按钮样式 */

 .action-btn {

-  padding: 6px 12px;

+  padding: 8px 16px;

   border: none;

-  border-radius: 4px;

+  border-radius: 6px;

   cursor: pointer;

   font-size: 14px;

-  transition: background-color 0.2s;

+  font-weight: 600;

+  transition: all 0.3s;

+  display: inline-flex;

+  align-items: center;

+  gap: 5px;

 }

 

 .delete-btn {

-  background-color: #ff4d4f;

+  background: linear-gradient(135deg, #ff4d4f 0%, #f5222d 100%);

   color: white;

 }

 

 .delete-btn:hover {

-  background-color: #ff7875;

+  transform: translateY(-2px);

+  box-shadow: 0 4px 12px rgba(255, 77, 79, 0.3);

 }

 

 /* 分页控件样式 */

 .pagination {

-  margin-top: 20px;

+  margin-top: 30px;

   display: flex;

   justify-content: center;

   align-items: center;

-  gap: 15px;

-}

-

-.pagination button {

-  padding: 6px 12px;

-  border: 1px solid #d9d9d9;

-  background-color: #fff;

-  border-radius: 4px;

-  cursor: pointer;

-}

-

-.pagination button:disabled {

-  color: #d9d9d9;

-  cursor: not-allowed;

-}

-

-.pagination button:not(:disabled):hover {

-  border-color: #1890ff;

-  color: #1890ff;

-}

-

-/* 分页控件样式 */

-.pagination {

-  margin-top: 20px;

-  display: flex;

-  justify-content: center;

-  align-items: center;

-  gap: 8px;

+  gap: 10px;

   flex-wrap: wrap;

 }

 

 .page-nav, .page-number {

-  padding: 6px 12px;

+  padding: 8px 16px;

   border: 1px solid #d9d9d9;

-  background-color: #fff;

-  border-radius: 4px;

+  background-color: white;

+  color:#333;

+  border-radius: 6px;

   cursor: pointer;

-  min-width: 32px;

+  min-width: 40px;

   text-align: center;

+  transition: all 0.3s;

+  font-weight: 600;

 }

 

 .page-nav:disabled, .page-number:disabled {

-  color: #d9d9d9;

+  color: #070202;

   cursor: not-allowed;

 }

 

 .page-nav:not(:disabled):hover, 

 .page-number:not(:disabled):hover {

-  border-color: #1890ff;

-  color: #1890ff;

+  border-color: #1e3c72;

+  color: #1e3c72;

+  transform: translateY(-2px);

 }

 

 .page-number.active {

-  background-color: #1890ff;

+  background: linear-gradient(135deg, #1e3c72 0%, #2a5298 100%);

   color: white;

-  border-color: #1890ff;

+  border-color: #1e3c72;

 }

 

 .ellipsis {

-  padding: 0 8px;

+  padding: 0 12px;

 }

 

 .page-info {

   display: flex;

   align-items: center;

-  gap: 8px;

-  margin-left: 15px;

+  gap: 10px;

+  margin-left: 20px;

 }

 

 .page-info input {

-  width: 50px;

-  padding: 4px;

+  width: 60px;

+  padding: 8px;

   border: 1px solid #d9d9d9;

-  border-radius: 4px;

+  border-radius: 6px;

   text-align: center;

+  font-weight: 600;

 }

 

 .page-info input:focus {

   outline: none;

-  border-color: #1890ff;

-}

-

-/* 调整表格列宽 */

-.uploads-table th:nth-child(1),

-.uploads-table td:nth-child(1) {

-  width: 30%;

-}

-

-.uploads-table th:nth-child(2),

-.uploads-table td:nth-child(2) {

-  width: 15%;

-}

-

-.uploads-table th:nth-child(3),

-.uploads-table td:nth-child(3) {

-  width: 20%;

-}

-

-.uploads-table th:nth-child(4),

-.uploads-table td:nth-child(4) {

-  width: 15%;

-  text-align: center;

-}

-

-.uploads-table th:nth-child(5),

-.uploads-table td:nth-child(5) {

-  width: 20%;

-  text-align: center;

+  border-color: #1e3c72;

+  box-shadow: 0 0 0 3px rgba(30, 60, 114, 0.2);

 }

 

 /* 兑换区样式 */

 .exchange-section {

-  margin-top: 20px;

-  padding: 20px;

-  background-color: #f9f9f9;

-  border-radius: 8px;

+  margin-top: 30px;

+  padding: 25px;

+  background: white;

+  border-radius: 12px;

+  box-shadow: 0 8px 20px rgba(0, 0, 0, 0.08);

 }

 

 .exchange-card {

-  margin-bottom: 20px;

-  padding: 15px;

-  background-color: white;

-  border-radius: 6px;

-  box-shadow: 0 2px 4px rgba(0, 0, 0, 0.1);

+  margin-bottom: 25px;

+  padding: 20px;

+  background: #f9fafc;

+  border-radius: 10px;

+  border: 1px solid #f0f2f5;

+  transition: all 0.3s;

+}

+

+.exchange-card:hover {

+  transform: translateY(-3px);

+  box-shadow: 0 4px 12px rgba(0, 0, 0, 0.1);

 }

 

 .exchange-card h4 {

   margin-top: 0;

-  color: #333;

+  color: #1e3c72;

+  font-size: 18px;

 }

 

 .exchange-card p {

   color: #666;

-  margin-bottom: 15px;

+  margin-bottom: 20px;

+  font-size: 15px;

 }

 

 .exchange-btn {

-  padding: 8px 16px;

-  background-color: #1890ff;

+  padding: 10px 20px;

+  background: linear-gradient(135deg, #1e3c72 0%, #2a5298 100%);

   color: white;

   border: none;

-  border-radius: 4px;

+  border-radius: 6px;

   cursor: pointer;

-  transition: background-color 0.3s;

+  font-weight: 600;

+  transition: all 0.3s;

+  display: inline-flex;

+  align-items: center;

+  gap: 8px;

 }

 

 .exchange-btn:hover {

-  background-color: #40a9ff;

+  transform: translateY(-2px);

+  box-shadow: 0 4px 12px rgba(30, 60, 114, 0.3);

 }

 

 .exchange-btn:disabled {

-  background-color: #d9d9d9;

+  background: #d9d9d9;

   cursor: not-allowed;

+  transform: none;

+  box-shadow: none;

 }

 

 .exchange-input-group {

   display: flex;

-  gap: 10px;

-  margin-top: 10px;

+  gap: 15px;

+  margin-top: 15px;

 }

 

 .exchange-input-group input {

   flex: 1;

-  padding: 8px;

+  padding: 10px;

   border: 1px solid #d9d9d9;

-  border-radius: 4px;

+  border-radius: 6px;

+  font-size: 15px;

+}

+

+.exchange-input-group input:focus {

+  outline: none;

+  border-color: #1e3c72;

+  box-shadow: 0 0 0 3px rgba(30, 60, 114, 0.2);

 }

 

 .invite-code-list {

-  margin-top: 20px;

+  margin-top: 25px;

 }

 

 .invite-code-list ul {

   list-style: none;

   padding: 0;

+  margin: 0;

 }

 

 .invite-code-list li {

   display: flex;

   justify-content: space-between;

-  padding: 10px;

-  border-bottom: 1px solid #eee;

+  align-items: center;

+  padding: 15px;

+  border-bottom: 1px solid #f0f2f5;

+  transition: all 0.3s;

+}

+

+.invite-code-list li:hover {

+  background-color: #f9fafc;

 }

 

 .invite-code-list .code {

   font-family: monospace;

+  font-size: 16px;

+  color: #1e3c72;

 }

 

 .invite-code-list .status {

-  padding: 2px 6px;

-  border-radius: 3px;

-  font-size: 12px;

+  padding: 4px 12px;

+  border-radius: 20px;

+  font-size: 13px;

+  font-weight: 600;

 }

 

 .invite-code-list .status.available {

-  background-color: #f6ffed;

-  color: #52c41a;

-  border: 1px solid #b7eb8f;

+  background: linear-gradient(135deg, #52c41a 0%, #a0d911 100%);

+  color: white;

 }

 

 .invite-code-list .status.used {

+  background: linear-gradient(135deg, #ff4d4f 0%, #f5222d 100%);

+  color: white;

+}

+

+/* 设置页面样式 */

+.setting-section {

+  max-width: 800px;

+  margin: 0 auto;

+  padding: 25px;

+  background: white;

+  border-radius: 12px;

+  box-shadow: 0 8px 20px rgba(0, 0, 0, 0.08);

+}

+

+.user-info-card, .password-form-card {

+  background: #f9fafc;

+  border-radius: 10px;

+  padding: 25px;

+  margin-bottom: 25px;

+  border: 1px solid #f0f2f5;

+}

+

+.info-item {

+  display: flex;

+  margin-bottom: 15px;

+  align-items: center;

+}

+

+.info-item label {

+  font-weight: 600;

+  width: 150px;

+  color: #1e3c72;

+}

+

+.info-item span {

+  flex: 1;

+  color: #333;

+}

+

+.info-note {

+  color: #666;

+  font-size: 14px;

+  margin-top: 15px;

+  line-height: 1.6;

+}

+

+.form-group {

+  margin-bottom: 20px;

+}

+

+.form-group label {

+  display: block;

+  margin-bottom: 8px;

+  font-weight: 600;

+  color: #1e3c72;

+}

+

+.form-group input {

+  width: 100%;

+  padding: 12px;

+  border: 1px solid #d9d9d9;

+  border-radius: 6px;

+  box-sizing: border-box;

+  font-size: 15px;

+  transition: all 0.3s;

+}

+

+.form-group input:focus {

+  outline: none;

+  border-color: #1e3c72;

+  box-shadow: 0 0 0 3px rgba(30, 60, 114, 0.2);

+}

+

+.submit-button {

+  padding: 12px 24px;

+  background: linear-gradient(135deg, #1e3c72 0%, #2a5298 100%);

+  color: white;

+  border: none;

+  border-radius: 6px;

+  cursor: pointer;

+  font-size: 16px;

+  font-weight: 600;

+  transition: all 0.3s;

+}

+

+.submit-button:hover {

+  transform: translateY(-2px);

+  box-shadow: 0 4px 12px rgba(30, 60, 114, 0.3);

+}

+

+.submit-button:disabled {

+  background: #d9d9d9;

+  cursor: not-allowed;

+  transform: none;

+  box-shadow: none;

+}

+

+.error-message {

+  color: #ff4d4f;

+  margin-bottom: 20px;

+  padding: 10px;

+  background: #fff2f0;

+  border-radius: 6px;

+  border: 1px solid #ffccc7;

+}

+

+.success-message {

+  color: #52c41a;

+  margin-bottom: 20px;

+  padding: 10px;

+  background: #f6ffed;

+  border-radius: 6px;

+  border: 1px solid #b7eb8f;

+}

+

+.subpage-container {

+  max-width: 800px;

+  margin: 0 auto;

+  padding: 25px;

+  animation: fadeIn 0.5s ease-out forwards;

+}

+

+.back-button {

+  display: inline-flex;

+  align-items: center;

+  gap: 8px;

+  padding: 8px 16px;

+  background: linear-gradient(135deg, #1e3c72 0%, #2a5298 100%);

+  color: white;

+  border: none;

+  border-radius: 6px;

+  font-weight: 600;

+  cursor: pointer;

+  transition: all 0.3s;

+  margin-bottom: 30px;

+  box-shadow: 0 2px 8px rgba(30, 60, 114, 0.2);

+}

+

+.back-button:hover {

+  transform: translateY(-2px);

+  box-shadow: 0 4px 12px rgba(30, 60, 114, 0.3);

+}

+

+.back-button::before {

+  content: "←";

+}

+

+.page-title {

+  font-size: 24px;

+  margin: 0 0 25px;

+  background: linear-gradient(135deg, #1e3c72 0%, #2a5298 100%);

+  -webkit-background-clip: text;

+  -webkit-text-fill-color: transparent;

+  font-weight: 800;

+  padding-bottom: 10px;

+  border-bottom: 2px solid #f0f2f5;

+}

+

+.loading-message, .error-message {

+  padding: 15px;

+  border-radius: 8px;

+  margin-bottom: 20px;

+  text-align: center;

+}

+

+.loading-message {

+  background-color: #f5f5f5;

+  color: #666;

+}

+

+.error-message {

   background-color: #fff2f0;

   color: #ff4d4f;

   border: 1px solid #ffccc7;

 }

 

-

-/* personalSubpage.css 中添加以下样式 */

-

-.setting-section {

-  max-width: 600px;

-  margin: 0 auto;

-  padding: 20px;

+.notice-list {

+  background: white;

+  border-radius: 12px;

+  box-shadow: 0 8px 20px rgba(0, 0, 0, 0.08);

+  overflow: hidden;

 }

 

-.user-info-card, .password-form-card {

-  background: #fff;

-  border-radius: 8px;

-  padding: 20px;

-  margin-bottom: 20px;

-  box-shadow: 0 2px 4px rgba(0, 0, 0, 0.1);

-}

-

-.info-item {

-  display: flex;

-  margin-bottom: 10px;

-}

-

-.info-item label {

-  font-weight: bold;

-  width: 100px;

-}

-

-.info-item span {

-  flex: 1;

-}

-

-.info-note {

+.empty-notice {

+  text-align: center;

+  padding: 50px 20px;

   color: #666;

-  font-size: 0.9em;

-  margin-top: 10px;

-}

-

-.form-group {

-  margin-bottom: 15px;

-}

-

-.form-group label {

-  display: block;

-  margin-bottom: 5px;

-  font-weight: bold;

-}

-

-.form-group input {

-  width: 100%;

-  padding: 8px;

-  border: 1px solid #ddd;

-  border-radius: 4px;

-  box-sizing: border-box;

-}

-

-.submit-button {

-  background-color: #4CAF50;

-  color: white;

-  padding: 10px 15px;

-  border: none;

-  border-radius: 4px;

-  cursor: pointer;

   font-size: 16px;

 }

 

-.submit-button:hover {

-  background-color: #45a049;

+.list-item {

+  padding: 20px;

+  border-bottom: 1px solid #f0f2f5;

+  transition: all 0.3s;

+  cursor: pointer;

 }

 

-.submit-button:disabled {

-  background-color: #cccccc;

-  cursor: not-allowed;

+.list-item:last-child {

+  border-bottom: none;

 }

 

-.error-message {

-  color: #f44336;

-  margin-bottom: 15px;

+.list-item:hover {

+  background-color: #f9fafc;

+  transform: translateX(5px);

 }

 

-.success-message {

-  color: #4CAF50;

-  margin-bottom: 15px;

+.list-item.unread {

+  background-color: #f0f7ff;

+}

+

+.notice-header {

+  display: flex;

+  justify-content: space-between;

+  align-items: center;

+  margin-bottom: 10px;

+}

+

+.notice-header h3 {

+  margin: 0;

+  font-size: 18px;

+  color: #1e3c72;

+  font-weight: 600;

+}

+

+.notice-date {

+  font-size: 14px;

+  color: #888;

+  display: flex;

+  align-items: center;

+  gap: 8px;

+}

+

+.unread-badge {

+  background: #ff4d4f;

+  color: white;

+  font-size: 12px;

+  padding: 2px 8px;

+  border-radius: 10px;

+  font-weight: 500;

+}

+

+.notice-content {

+  margin: 0;

+  color: #333;

+  line-height: 1.6;

+  font-size: 15px;

+}

+

+/* 动画效果 */

+@keyframes fadeIn {

+  from { opacity: 0; transform: translateY(10px); }

+  to { opacity: 1; transform: translateY(0); }

+}

+

+/* 响应式设计 */

+@media (max-width: 768px) {

+  

+}

+

+/* 响应式设计 */

+@media (max-width: 768px) {

+  .uploads-table {

+    display: block;

+    overflow-x: auto;

+  }

+  

+  .exchange-input-group {

+    flex-direction: column;

+  }

+  

+  .info-item {

+    flex-direction: column;

+    align-items: flex-start;

+  }

+  

+  .info-item label {

+    width: 100%;

+    margin-bottom: 5px;

+  }

+  

+  .pagination {

+    flex-direction: column;

+    align-items: center;

+  }

+  

+  .page-info {

+    margin-left: 0;

+    margin-top: 15px;

+  }

+  .subpage-container {

+    padding: 15px;

+  }

+  

+  .notice-header {

+    flex-direction: column;

+    align-items: flex-start;

+    gap: 5px;

+  }

+  

+  .list-item:hover {

+    transform: none;

+  }

 }
\ No newline at end of file