feat(mp, web, calendar): 新增微信收藏夹与日历批量生成功能

- 新增微信小程序版个人收藏夹全套功能,包含聚合首页、收藏列表、编辑、详情页面与配套后端API
- 新增web版时光助手门户与个人收藏夹工具,支持与小程序共享后端数据
- 优化日历提醒工具:替换本地bootstrap资源为公共CDN版本,新增批量生成循环提醒的前端界面与后端逻辑,新增数据库batch_id字段,更新鉴权配置文件
- 补充项目配置、站点地图、调试诊断脚本等配套文件
- 完善各模块的页面配置与样式文件
This commit is contained in:
yangxiangyuan
2026-09-02 22:20:37 +08:00
parent 132d132473
commit db7648eb4d
75 changed files with 8618 additions and 70 deletions
-52
View File
@@ -1,52 +0,0 @@
*{box-sizing:border-box}
html{font-size:14px}
body{margin:0;font-family:-apple-system,BlinkMacSystemFont,'Segoe UI',Roboto,'Helvetica Neue',Arial,'Noto Sans','Liberation Sans',sans-serif;line-height:1.5;color:#212529;overflow-x:hidden}
.container{width:100%;max-width:1140px;margin:0 auto;padding-left:12px;padding-right:12px}
.container-fluid{width:100%;padding-left:12px;padding-right:12px}
.navbar{display:flex;align-items:center;padding:.5rem 0}
.navbar{flex-wrap:wrap}
.navbar .container-fluid{display:flex;align-items:center;justify-content:center;gap:.75rem}
.bg-primary{background-color:#0d6efd}
.bg-dark{background-color:#2b2b2b}
.navbar-dark{color:#fff}
.navbar-dark .navbar-brand{color:#fff}
.navbar .navbar-brand{font-size:1.25rem;font-weight:500}
.text-white{color:#fff}
.text-muted{color:#6c757d}
.small{font-size:.875em}
.btn{display:inline-block;font-weight:400;line-height:1.5;color:#212529;text-align:center;text-decoration:none;vertical-align:middle;cursor:pointer;user-select:none;background-color:#f8f9fa;border:1px solid rgba(0,0,0,.125);padding:.375rem .75rem;border-radius:.375rem;transition:background-color .15s ease}
.btn:disabled{opacity:.65}
.btn:hover{background-color:#e9ecef}
.btn-light{color:#212529;background-color:#f8f9fa;border-color:#ced4da}
.btn-secondary{color:#fff;background-color:#6c757d;border-color:#6c757d}
.btn-danger{color:#fff;background-color:#dc3545;border-color:#dc3545}
.btn-primary{color:#fff;background-color:#0d6efd;border-color:#0d6efd}
.btn-sm{padding:.25rem .5rem;font-size:.875rem;border-radius:.25rem}
.card{display:block;background-color:#fff;border:1px solid rgba(0,0,0,.125);border-radius:.5rem}
.card-header{padding:.5rem 1rem;border-bottom:1px solid rgba(0,0,0,.125);background-color:#f8f9fa;font-weight:500}
.card-body{padding:1rem}
.row{display:flex;flex-wrap:wrap}
.row.g-2{gap:.5rem}
.col-12{flex:0 0 auto;width:100%}
.col-6{flex:0 0 auto;width:50%}
@media (min-width:992px){.col-lg-8{flex:0 0 auto;width:66.6667%}.col-lg-4{flex:0 0 auto;width:33.3333%}}
.form-label{margin-bottom:.25rem;font-weight:500}
.form-control,.form-select{display:block;width:100%;padding:.5rem .75rem;font-size:1rem;line-height:1.5;color:#212529;background-color:#fff;background-clip:padding-box;border:1px solid #ced4da;border-radius:.375rem}
.form-control:focus,.form-select:focus{outline:none;border-color:#86b7fe;box-shadow:0 0 0 .2rem rgba(13,110,253,.25)}
.form-control::-webkit-input-placeholder{color:#6c757d}
.form-control::-moz-placeholder{color:#6c757d}
input[type=datetime-local],input[type=time]{padding-right:2.25rem}
.card{box-shadow:0 8px 24px rgba(0,0,0,.08)}
.list-group{display:block;border-radius:.5rem;overflow:hidden}
.list-group .list-group-item{display:block;padding:.5rem 1rem;background-color:#fff;border-bottom:1px solid rgba(0,0,0,.125)}
.list-group-flush .list-group-item{border-left:0;border-right:0}
.hstack{display:flex;align-items:center}
.justify-content-between{justify-content:space-between}
.gap-2{gap:.5rem}
.mt-2{margin-top:.5rem}
.mb-2{margin-bottom:.5rem}
.mb-0{margin-bottom:0}
.py-3{padding-top:1rem;padding-bottom:1rem}
.d-flex{display:flex}
.align-items-center{align-items:center}
.d-none{display:none!important}
@@ -678,3 +678,25 @@ main {
@keyframes spin {
to { transform: rotate(360deg); }
}
/* Batch tool (批量生成) */
#btnOpenBatchTool { font-weight: 600; }
.mode-fieldset {
border: 1px solid #e9ecef;
border-radius: 10px;
padding: 12px 14px 6px;
background: #fbfcfd;
}
#batch_sqlText {
font-family: ui-monospace, SFMono-Regular, Menlo, Consolas, monospace;
font-size: 11px;
line-height: 1.45;
white-space: pre;
background: #1f2937;
color: #f8fafc;
border-color: #111827;
}
#batch_sampleTable { font-size: 12px; }
#batch_listTable .badge { font-size: 11px; }
.batch-detail-diag { margin-top: 0.5rem; display: flex; flex-wrap: wrap; gap: 0.4rem; }