Compare commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
43e5411b6a | ||
|
|
c06d293424 | ||
|
|
6c444a4a04 | ||
|
|
cc6173e5b0 | ||
|
|
5794f60c5d | ||
|
|
35f91ee37a | ||
|
|
bc1228a310 | ||
|
|
8b9df1154c | ||
|
|
5f53aa0bbd | ||
|
|
ed040025e4 | ||
|
|
49309b7c57 | ||
|
|
18b92f1767 | ||
|
|
79601ea176 | ||
|
|
c1eee2d28a | ||
|
|
2fc8048844 | ||
|
|
18c15d1262 | ||
|
|
21790e35f4 | ||
|
|
cbe71905c0 | ||
|
|
72a5300b08 | ||
|
|
07188e82f8 | ||
|
|
c3713a8785 | ||
|
|
dddf2348d3 | ||
|
|
18ed3c48fa | ||
|
|
26839c2957 | ||
|
|
b2eb18c75f | ||
|
|
a1092c02c3 | ||
|
|
f48a66b611 | ||
|
|
28cd110dae | ||
|
|
6d9fe1bbf8 | ||
|
|
bc9ad1d3cd | ||
|
|
09d3fcbf82 | ||
|
|
5711ad946f | ||
|
|
d005a0bf3c | ||
|
|
03fe4ddf9d |
+34
-33
@@ -1,33 +1,34 @@
|
||||
# Build and Release Folders
|
||||
bin-debug/
|
||||
bin-release/
|
||||
[Oo]bj/
|
||||
[Bb]in/
|
||||
|
||||
# Other files and folders
|
||||
.settings/
|
||||
|
||||
# Executables
|
||||
*.swf
|
||||
*.air
|
||||
*.ipa
|
||||
*.apk
|
||||
|
||||
# Project files, i.e. `.project`, `.actionScriptProperties` and `.flexProperties`
|
||||
# should NOT be excluded as they contain compiler settings and other important
|
||||
# information for Eclipse / Flash Builder.
|
||||
|
||||
/.idea
|
||||
/.codex-tasks
|
||||
/.trellis
|
||||
/.claude
|
||||
/.agent
|
||||
/.shared
|
||||
/.cursor
|
||||
/.codex
|
||||
/.agents
|
||||
/server/.spool
|
||||
/server/.claude
|
||||
/.spool
|
||||
TUICallKit-Vue3/.env
|
||||
/.codegraph
|
||||
# Build and Release Folders
|
||||
bin-debug/
|
||||
bin-release/
|
||||
[Oo]bj/
|
||||
[Bb]in/
|
||||
|
||||
# Other files and folders
|
||||
.settings/
|
||||
|
||||
# Executables
|
||||
*.swf
|
||||
*.air
|
||||
*.ipa
|
||||
*.apk
|
||||
|
||||
# Project files, i.e. `.project`, `.actionScriptProperties` and `.flexProperties`
|
||||
# should NOT be excluded as they contain compiler settings and other important
|
||||
# information for Eclipse / Flash Builder.
|
||||
# 测试临时目录
|
||||
app/.test-tmp-stream/
|
||||
/.idea
|
||||
/.codex-tasks
|
||||
/.trellis
|
||||
/.claude
|
||||
/.agent
|
||||
/.shared
|
||||
/.cursor
|
||||
/.codex
|
||||
/.agents
|
||||
/server/.spool
|
||||
/server/.claude
|
||||
/.spool
|
||||
TUICallKit-Vue3/.env
|
||||
/.codegraph
|
||||
|
||||
@@ -0,0 +1,90 @@
|
||||
# 2026-08-20 — 医生工作站 AI 问诊对话框布局优化
|
||||
|
||||
## 改动
|
||||
- 文件: `app/src/doctor_workstation/ui/dialogs/ai_consult.py`
|
||||
- 模块: `AiConsultDialog` 右侧「智能分析」卡片 + 问诊对话卡片密度优化
|
||||
- 新增 helpers: `_InsightItem`, `_split_insight_segments`, `_split_numbered_list`, `_split_plain_paragraph`, `_split_label_or_sentence`, `_escape_html`
|
||||
- `_set_insights` 改成将稠密段落拆成 lead / list / plain 三类, 每类单独 QLabel 显示
|
||||
- CSS 新增 `AiConsultInsightMarker` / `AiConsultInsightText` / `AiConsultInsightPlaceholder`
|
||||
- 卡片 padding `10,8,10,8` → `14,12,14,14`; 卡间距 `8` → `10`
|
||||
- 聊天气泡垂直 margin `4` → `6`, chat_layout spacing `10` → `12`
|
||||
|
||||
## 拆分策略
|
||||
- 文本以 `1./2、/3)/4)` 起头 → 视为完整编号列表
|
||||
- 文本中嵌入 `…:1.…2.…` → 拆出序言 + 编号列表
|
||||
- 短中文标签 `XX:YY` 开头 → 视为 lead, 标签部分加粗
|
||||
- 其余按 `。/;/;/` 分句 → 单独成行
|
||||
|
||||
## 测试
|
||||
- 现有 `tests/test_ai_consult_ui.py` 通过 `widget.objectName() == "AiConsultRecordTitle"` 校验标题仍在, 未受影响
|
||||
- 暂未运行 UI 测试 (开发环境未装 PySide6); 解析逻辑单独脚本验证通过
|
||||
|
||||
## 注意
|
||||
- PySide6 QSS 对 `QLabel` 的 `line-height` 支持有限; 主要靠 item 间距 `8px` 与 `padding:1px 0` 提供节奏
|
||||
- 如果后续接入 `AiConsultInsightText` 还嫌密集, 可再调 `body_host.setSpacing`
|
||||
|
||||
---
|
||||
|
||||
# 接诊台 AI 智能分析详情对话框 (`ReceptionAiAnalysisDialog`) 优化
|
||||
用户截图(`clipboard-2026-08-20T08-42-40`...)反馈: 「问诊详情 → AI 智能分析」卡片里的诊断建议 / 风险评估 / 治疗建议三段文字太稠密, 不利于阅读。
|
||||
|
||||
## 关键差异
|
||||
这次的目标文件和上次不同 — 用户截图里出现 "诊断建议 / 风险评估 / 治疗建议" 标题, 而 `ai_consult.py` 用的是 "血糖控制评估 / 并发症风险评估 / 用药合理性评估"。实际是 `app/src/doctor_workstation/ui/pages/reception.py` 中的 `_ReceptionAiAnalysisDialog` 类。
|
||||
|
||||
## 改动
|
||||
- 文件: `app/src/doctor_workstation/ui/pages/reception.py`
|
||||
- 新增 helpers (与 ai_consult.py 类似但导出名加 `_ai_` 前缀):
|
||||
- `_ai_split_into_segments` / `_ai_split_numbered_list` / `_ai_split_plain_paragraph`
|
||||
- `_ai_segments_to_html` / `_ai_narrative_structured_html`
|
||||
- `_ai_split_label_or_sentence` / `_ai_escape_html`
|
||||
- 正则: `_AI_INSIGHT_LIST_RE`, `_AI_INSIGHT_LIST_LOOKAHEAD_RE`, `_AI_INSIGHT_LABEL_RE`
|
||||
- `add_text_section` 闭包内多挂一个 RichText `_structured_labels[name]` 标签 (`.setObjectName(name + "Structured")`, `property="dialogAiStructured"`)
|
||||
- 原 PlainText `value_label` 仍存在 (`hide()` + `setMaximumHeight(0)`) 用于兼容既有 findChild 测试
|
||||
- `_render_model` 同步刷新两个结构化标签; 空 HTML 时回退显示原 label 文本
|
||||
- 风险评估 FlowLayout spacing `7×7` → `9×9`
|
||||
- `body_layout.setSpacing` `12` → `14`
|
||||
- 卡片 contentsMargins `14,13,16,15` → `16,14,18,16`
|
||||
- QSS: `dialogAiBody` 加 `line-height: 1.85`, 新增 `dialogAiStructured` 选择器 (line-height 175%); 风险 pill `min-height` `28` → `30`, padding `4 10` → `5 12`, font 12 → 12.5, border-radius `7` → `8`
|
||||
|
||||
## 兼容约束
|
||||
- `tests/test_reception_parity_ui.py` 严格校验:
|
||||
- `findChild(QLabel, "ReceptionAiAnalysisDialogDiagnosisText")` 必须能找到
|
||||
- `.text()` 必须等于 `_ai_narrative_text` 归一化结果
|
||||
- `.textFormat() == Qt.TextFormat.PlainText`
|
||||
- 因此 PlainText 标签必须原样保留, 仅做 `.hide()` + `setMaximumHeight(0)` (避免 QSS `>` 子选择器不被 Qt 支持)
|
||||
|
||||
## 验证
|
||||
- `py_compile` 通过, 无 `SyntaxWarning`
|
||||
- 单独脚本跑过 4 组样本文本 (稠密段落 / 嵌入式编号列表 / 短句 / 纯编号列表), 拆分结果符合预期
|
||||
- 未在本机跑 UI 测试 (缺 PySide6)
|
||||
|
||||
---
|
||||
|
||||
# 患者列表 AI 分析: 发送完整患者资料给 AI
|
||||
|
||||
用户需求: 患者列表 AI 分析时, 每日血糖报告、舌苔、AI 报告、视频录制回放的文字对话都要发给 AI。
|
||||
|
||||
## 改动
|
||||
- `app/src/doctor_workstation/ui/dialogs/ai_consult.py`
|
||||
- `_load_workspace` 新增 `list_call_records` section (视频问诊记录, 含 `transcript_text`)
|
||||
- 模块级纯函数 (无 Qt 依赖, 便于测试):
|
||||
- `AI_CONTEXT_MAX_CHARS=320`, `AI_PROMPT_LIMIT=500`, `AI_CONTEXT_SEPARATOR="\n\n— 医生提问 —\n"`
|
||||
- `_truncate_for_context` / `_patient_context_blood_sugar` / `_patient_context_tongue` / `_patient_context_reports` / `_patient_context_prescriptions` / `_patient_context_videos` / `build_patient_ai_context` / `_compose_ai_prompt`
|
||||
- `build_patient_ai_context` 返回 `(text, labels)`, 按 每日血糖→舌苔/脉象→视频问诊文字→历史AI报告→处方记录 顺序装入 320 字预算的信封
|
||||
- `_patient_context_videos` 按 `diagnosis_id` 过滤归属 (`_exact_positive_id`), 只取最近一条有文字的
|
||||
- `_compose_ai_prompt` 本地强制 500 字上限: 上下文 + "— 医生提问 —" + 问题, 超长时截断问题加 `…` (服务端 `tcm.diagnosis/aiAssistant` prompt 上限 500)
|
||||
- `_ChatBubble.attach_extra()` 支持气泡下方挂载控件
|
||||
- `_render_patient_context`: 聊天区系统气泡 "AI 已加载本诊单上下文(N 项…)", `_attach_context_detail` 挂 "查看本次发送给 AI 的资料全文" 展开按钮 (QSS: `AiConsultContextToggle`/`AiConsultContextReveal`)
|
||||
- `_ask` 用 `_compose_ai_prompt(text, self._patient_ai_context)` 组装后传给 `_AiStreamWorker`; 医生气泡仍显示原始问题
|
||||
- `open_for` / `_clear_chat` 重置 `_patient_ai_context*` 三个状态, 防止跨患者残留
|
||||
|
||||
## 测试
|
||||
- `app/tests/test_ai_consult_ui.py` 新增 5 个测试 (总 15 个全通过):
|
||||
纯函数: 全 section 信封+视频按诊单过滤 / 仅基本病历返回空 / 长问题截断≤500
|
||||
UI: 上下文气泡+展开按钮+视频记录计数 / `_ask` 注入上下文 (FakeWorker 捕获 prompt, monkeypatch `QThreadPool`)
|
||||
- `app/scripts/check_ai_context.py`: AST 提取纯函数的冒烟脚本 (无需 Qt)
|
||||
- `tests/test_ai_consult_workspace_ui.py` 18 个测试无回归
|
||||
|
||||
## 环境要点 (重要)
|
||||
- **PySide6 + pytest 在 `app/.venv` 里可用**: 用 `D:/web/zyt/app/.venv/Scripts/python.exe -m pytest` 跑 UI 测试 (QT_QPA_PLATFORM=offscreen)。之前"本机缺 PySide6"的结论只对系统 Python 成立。
|
||||
- 测试 FakeWorker 需实现 `signals.event/error/finished.connect()` 和 `cancel()` (closeEvent 会调 cancel)
|
||||
+1
@@ -0,0 +1 @@
|
||||
"use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const e=require("./common/vendor.js");exports.createApp=e.createApp;
|
||||
+42
@@ -0,0 +1,42 @@
|
||||
{
|
||||
"pages": [
|
||||
"tongji/pages/weekly",
|
||||
"pages/user/user",
|
||||
"pages/user/userinfo",
|
||||
"pages/Card/Card",
|
||||
"pages/Card/edit_card",
|
||||
"pages/Card/contact",
|
||||
"tongji/pages/index",
|
||||
"tongji/pages/more",
|
||||
"tongji/endless-game/index"
|
||||
],
|
||||
"subPackages": [
|
||||
{
|
||||
"root": "training",
|
||||
"pages": [
|
||||
"pages/grip-ring",
|
||||
"pages/pilates-ring",
|
||||
"pages/foot-pedal",
|
||||
"pages/dumbbell",
|
||||
"pages/metronome"
|
||||
]
|
||||
}
|
||||
],
|
||||
"window": {
|
||||
"navigationBarTextStyle": "black",
|
||||
"navigationBarTitleText": "甄养堂血糖管理",
|
||||
"navigationBarBackgroundColor": "#F8F8F8",
|
||||
"backgroundColor": "#F8F8F8"
|
||||
},
|
||||
"lazyCodeLoading": "requiredComponents",
|
||||
"requiredBackgroundModes": [
|
||||
"audio"
|
||||
],
|
||||
"plugins": {
|
||||
"WechatSI": {
|
||||
"version": "0.3.5",
|
||||
"provider": "wx069ba97219f66d99"
|
||||
}
|
||||
},
|
||||
"usingComponents": {}
|
||||
}
|
||||
+2
@@ -0,0 +1,2 @@
|
||||
page{background-color:#f4fbf4;font-family:-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Helvetica Neue,Arial,sans-serif}
|
||||
page::after{position:fixed;content:'';left:-1000px;top:-1000px;-webkit-animation:shadow-preload .1s;-webkit-animation-delay:3s;animation:shadow-preload .1s;animation-delay:3s}@-webkit-keyframes shadow-preload{0%{background-image:url(https://cdn1.dcloud.net.cn/5645394f5230704a4d44456c4a5864344e7a6c694f574577596d5a695a6d553359324a6a5a413d3d/img/shadow-grey.png)}100%{background-image:url(https://cdn1.dcloud.net.cn/5645394f5230704a4d44456c4a5864344e7a6c694f574577596d5a695a6d553359324a6a5a413d3d/img/shadow-grey.png)}}@keyframes shadow-preload{0%{background-image:url(https://cdn1.dcloud.net.cn/5645394f5230704a4d44456c4a5864344e7a6c694f574577596d5a695a6d553359324a6a5a413d3d/img/shadow-grey.png)}100%{background-image:url(https://cdn1.dcloud.net.cn/5645394f5230704a4d44456c4a5864344e7a6c694f574577596d5a695a6d553359324a6a5a413d3d/img/shadow-grey.png)}}page{--status-bar-height:25px;--top-window-height:0px;--window-top:0px;--window-bottom:0px;--window-left:0px;--window-right:0px;--window-magin:0px}[data-c-h="true"]{display: none !important;}
|
||||
File diff suppressed because one or more lines are too long
@@ -0,0 +1 @@
|
||||
"use strict";const e=require("../../common/vendor.js"),t="#8a8a8a",c="#204e2b",r={__name:"tab-bar-dock",props:{active:{type:Number,default:0}},setup(r){const a=r;function o(){1!==a.active&&e.index.redirectTo({url:"/pages/user/user"})}function s(){0!==a.active&&e.index.redirectTo({url:"/tongji/pages/weekly"})}return(a,i)=>({a:0===r.active?1:"",b:0===r.active?c:t,c:e.o(s),d:1===r.active?"/static/user/user_no.png":"/static/user/user.png",e:1===r.active?c:t,f:e.o(o)})}},a=e._export_sfc(r,[["__scopeId","data-v-6c5d8930"]]);wx.createComponent(a);
|
||||
@@ -0,0 +1,4 @@
|
||||
{
|
||||
"component": true,
|
||||
"usingComponents": {}
|
||||
}
|
||||
@@ -0,0 +1 @@
|
||||
<view class="tab-dock data-v-6c5d8930"><view class="tab-dock__inner data-v-6c5d8930"><view class="tab-dock__item tab-dock__item--center data-v-6c5d8930" bindtap="{{c}}"><view class="{{['tab-dock__fab', 'data-v-6c5d8930', a && 'tab-dock__fab--active']}}"><text class="tab-dock__fab-text data-v-6c5d8930">糖</text></view><text class="tab-dock__label tab-dock__label--center data-v-6c5d8930" style="{{'color:' + b}}">血糖</text></view><view class="tab-dock__item data-v-6c5d8930" bindtap="{{f}}"><image class="tab-dock__icon data-v-6c5d8930" src="{{d}}" mode="aspectFit"/><text class="tab-dock__label data-v-6c5d8930" style="{{'color:' + e}}">我的</text></view></view><view class="tab-dock__safe data-v-6c5d8930"/></view>
|
||||
@@ -0,0 +1 @@
|
||||
.tab-dock.data-v-6c5d8930{position:fixed;left:0;right:0;bottom:0;z-index:999;background:#fff;border-top:1rpx solid rgba(0,0,0,.06);box-shadow:0 -6rpx 20rpx rgba(0,0,0,.04)}.tab-dock__inner.data-v-6c5d8930{display:flex;align-items:flex-end;height:100rpx}.tab-dock__item.data-v-6c5d8930{flex:1;height:100rpx;display:flex;flex-direction:column;align-items:center;justify-content:center}.tab-dock__item--center.data-v-6c5d8930{justify-content:flex-end;padding-bottom:6rpx}.tab-dock__icon.data-v-6c5d8930{width:46rpx;height:46rpx}.tab-dock__label.data-v-6c5d8930{margin-top:6rpx;font-size:22rpx;line-height:1.2}.tab-dock__label--center.data-v-6c5d8930{margin-top:8rpx}.tab-dock__fab.data-v-6c5d8930{width:96rpx;height:96rpx;margin-top:-48rpx;border-radius:50%;background:linear-gradient(180deg,#2d7340,#204e2b);border:6rpx solid #ffffff;box-shadow:0 10rpx 24rpx rgba(32,78,43,.35);display:flex;align-items:center;justify-content:center}.tab-dock__fab--active.data-v-6c5d8930{transform:scale(1.04);box-shadow:0 12rpx 28rpx rgba(32,78,43,.42)}.tab-dock__fab-text.data-v-6c5d8930{color:#fff;font-size:38rpx;font-weight:700;line-height:1}.tab-dock__safe.data-v-6c5d8930{height:env(safe-area-inset-bottom);background:#fff}
|
||||
@@ -0,0 +1 @@
|
||||
"use strict";const e=require("../../common/vendor.js"),n=e.defineComponent({__name:"index",props:{bottom:{default:200},inline:{type:Boolean,default:!1},tone:{default:"default"}},setup(n){const i=[{url:"/training/pages/dumbbell",title:"哑铃",sub:"力量塑形",icon:"dumbbell",iconClass:"menu-icon--dumbbell"},{url:"/training/pages/foot-pedal",title:"脚蹬器",sub:"下肢有氧",icon:"pedal",iconClass:"menu-icon--pedal"},{url:"/training/pages/pilates-ring",title:"瑜伽环",sub:"核心塑形",icon:"pilates",iconClass:"menu-icon--pilates"},{url:"/training/pages/grip-ring",title:"握力环",sub:"握力训练",icon:"grip",iconClass:"menu-icon--grip"},{url:"/training/pages/metronome",title:"耗糖节拍器",sub:"健走配速",icon:"metro",iconClass:"menu-icon--metro",featured:!0}],o=n,l=e.computed(()=>{if("weekly"!==o.tone)return i;const e=i.find(e=>"metro"===e.icon),n=i.filter(e=>"metro"!==e.icon);return e?[e,...n]:i}),t=e.ref(!0),a=e.ref(!1),r=()=>{a.value=!a.value},u=n=>{a.value=!1,e.index.navigateTo({url:n})};return(n,i)=>e.e({a:t.value&&o.inline},t.value&&o.inline?e.e({b:"weekly"===o.tone},(o.tone,{}),{c:e.f(l.value,(n,i,o)=>e.e({a:n.featured},(n.featured,{}),{b:"dumbbell"===n.icon},("dumbbell"===n.icon||"pedal"===n.icon||"pilates"===n.icon||"grip"===n.icon||n.icon,{}),{c:"pedal"===n.icon,d:"pilates"===n.icon,e:"grip"===n.icon,f:"metro"===n.icon,g:e.n(n.iconClass),h:e.t(n.title),i:e.t(n.sub),j:n.url,k:e.o(e=>u(n.url),n.url)})),d:"weekly"===o.tone},(o.tone,{}),{e:"weekly"===o.tone?1:""}):t.value?e.e({g:a.value},a.value?{h:e.o(e=>u("/training/pages/dumbbell")),i:e.o(e=>u("/training/pages/foot-pedal")),j:e.o(e=>u("/training/pages/pilates-ring")),k:e.o(e=>u("/training/pages/grip-ring")),l:e.o(e=>u("/training/pages/metronome")),m:e.o(()=>{})}:{},{n:!a.value},(a.value,{}),{o:!a.value},(a.value,{}),{p:a.value},(a.value,{}),{q:a.value?1:"",r:e.o(r),s:o.bottom+"rpx"}):{},{f:t.value})}}),i=e._export_sfc(n,[["__scopeId","data-v-2ae07c93"]]);wx.createComponent(i);
|
||||
@@ -0,0 +1,4 @@
|
||||
{
|
||||
"component": true,
|
||||
"usingComponents": {}
|
||||
}
|
||||
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
@@ -0,0 +1 @@
|
||||
"use strict";const e=require("../../common/vendor.js");if(!Array){e.resolveComponent("uni-icons")()}Math;const t={__name:"Card",setup(t){const{proxy:n}=e.getCurrentInstance(),a=e.ref([]),i=e.ref(!1);e.onMounted(()=>{o()}),e.onShow(()=>{o()});const o=async()=>{var t;i.value=!0;try{if(!e.index.getStorageSync("token"))return void e.index.showToast({title:"请先登录",icon:"none"});const i=e.index.getStorageSync("userData"),o=null==(t=null==i?void 0:i.diagnosis)?void 0:t.patient_id;if(!o)return;const d=await n.apiUrl({url:"/api/tcm/getCardList",method:"GET",data:{patient_id:o}});1===d.code?a.value=d.data||[]:e.index.showToast({title:d.msg||"获取失败",icon:"none"})}catch(o){console.error("加载就诊卡列表失败:",o)}finally{i.value=!1}},d=t=>{e.index.navigateTo({url:`/pages/Card/edit_card?id=${t.id}`})},s=()=>{e.index.getStorageSync("token")?e.index.navigateTo({url:"/pages/Card/edit_card?add=1"}):e.index.showToast({title:"请先登录",icon:"none"})},r=e=>1===e?"status-confirmed":"status-pending",c={first_visit:"初诊",follow_up:"复诊",consultation:"会诊"},l={qi_deficiency:"气虚",blood_deficiency:"血虚",yin_deficiency:"阴虚",yang_deficiency:"阳虚",qi_stagnation:"气滞",blood_stasis:"血瘀",phlegm_dampness:"痰湿",damp_heat:"湿热",cold_dampness:"寒湿",wind_cold:"风寒",wind_heat:"风热"},g=e=>l[e]||e||"-",_=e=>{if(!e)return"-";const t=new Date(1e3*e);return`${t.getFullYear()}-${String(t.getMonth()+1).padStart(2,"0")}-${String(t.getDate()).padStart(2,"0")}`};return(t,n)=>e.e({a:e.f(a.value,(t,n,a)=>{return{a:e.t(t.id),b:e.t(t.status_desc||(o=t.status,1===o?"启用":"禁用")),c:e.n(r(t.status)),d:e.t(t.patient_name||"-"),e:e.t(t.gender_desc||"-"),f:e.t(t.age),g:e.t((i=t.diagnosis_type,c[i]||i||"-")),h:e.t(g(t.syndrome_type)),i:e.t(t.diagnosis_date_text||_(t.diagnosis_date)),j:e.t(t.create_time||"-"),k:e.o(n=>(t=>{const n=`/tongji/pages/index?diagnosis_id=${t.id}&patient_id=${t.patient_id||""}&patient_name=${encodeURIComponent(t.patient_name||"")}&age=${t.age||""}&gender=${t.gender||""}`;e.index.navigateTo({url:n})})(t),t.id),l:e.o(e=>d(t),t.id),m:t.id,n:e.o(e=>d(t),t.id)};var i,o}),b:!i.value&&0===a.value.length},i.value||0!==a.value.length?{}:{c:e.p({type:"wallet",size:"80",color:"#1890ff"}),d:e.o(s)},{e:i.value},(i.value,{}))}},n=e._export_sfc(t,[["__scopeId","data-v-341940bb"]]);t.__runtimeHooks=2,wx.createPage(n);
|
||||
@@ -0,0 +1,6 @@
|
||||
{
|
||||
"navigationBarTitleText": "就诊卡",
|
||||
"usingComponents": {
|
||||
"uni-icons": "../../uni_modules/uni-icons/components/uni-icons/uni-icons"
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1 @@
|
||||
<view class="card-container data-v-341940bb"><view class="card-list data-v-341940bb"><view wx:for="{{a}}" wx:for-item="card" wx:key="m" class="card-item data-v-341940bb" bindtap="{{card.n}}"><view class="card-header data-v-341940bb"><view class="card-id data-v-341940bb"><text class="label data-v-341940bb">诊单编号:</text><text class="value data-v-341940bb">{{card.a}}</text></view><view class="{{['data-v-341940bb', 'status-badge', card.c]}}">{{card.b}}</view></view><view class="card-info data-v-341940bb"><view class="info-row data-v-341940bb"><text class="info-label data-v-341940bb">患者姓名:</text><text class="info-value data-v-341940bb">{{card.d}}</text></view><view class="info-row data-v-341940bb"><text class="info-label data-v-341940bb">性别年龄:</text><text class="info-value data-v-341940bb">{{card.e}} / {{card.f}}岁</text></view><view class="info-row data-v-341940bb"><text class="info-label data-v-341940bb">诊断类型:</text><text class="info-value data-v-341940bb">{{card.g}}</text></view><view class="info-row data-v-341940bb"><text class="info-label data-v-341940bb">证型:</text><text class="info-value data-v-341940bb">{{card.h}}</text></view></view><view class="card-footer data-v-341940bb"><view class="time-info data-v-341940bb"><text class="time-label data-v-341940bb">诊断日期:</text><text class="time-value data-v-341940bb">{{card.i}}</text></view><view class="time-info data-v-341940bb"><text class="time-label data-v-341940bb">创建时间:</text><text class="time-value data-v-341940bb">{{card.j}}</text></view></view><view class="card-actions data-v-341940bb"><view class="card-action-btn primary data-v-341940bb" catchtap="{{card.k}}"><text class="card-action-icon data-v-341940bb">📈</text><text class="card-action-text data-v-341940bb">日常记录</text></view><view class="card-action-btn data-v-341940bb" catchtap="{{card.l}}"><text class="card-action-icon data-v-341940bb">📝</text><text class="card-action-text data-v-341940bb">查看 / 编辑</text></view></view></view><view wx:if="{{b}}" class="empty-state data-v-341940bb"><uni-icons wx:if="{{c}}" class="data-v-341940bb" u-i="341940bb-0" bind:__l="__l" u-p="{{c}}"></uni-icons><text class="empty-text data-v-341940bb">暂无就诊卡</text><view class="add-card-btn data-v-341940bb" bindtap="{{d}}">新建就诊卡</view></view><view wx:if="{{e}}" class="loading-state data-v-341940bb"><text class="loading-text data-v-341940bb">加载中...</text></view></view></view>
|
||||
@@ -0,0 +1 @@
|
||||
.card-container.data-v-341940bb{min-height:100vh;background:linear-gradient(180deg,#e8f0fa,#fff);padding-bottom:56rpx}.header.data-v-341940bb{background:#fff;padding:48rpx 40rpx;box-shadow:0 2rpx 12rpx rgba(0,0,0,.06)}.header .header-title.data-v-341940bb{font-size:48rpx;font-weight:700;color:#1890ff}.card-list.data-v-341940bb{padding:40rpx}.card-item.data-v-341940bb{background:#fff;border-radius:28rpx;padding:44rpx;margin-bottom:36rpx;box-shadow:0 4rpx 20rpx rgba(0,0,0,.08);transition:all .3s;min-height:200rpx}.card-item.data-v-341940bb:active{transform:scale(.98);box-shadow:0 2rpx 12rpx rgba(0,0,0,.1)}.card-header.data-v-341940bb{display:flex;justify-content:space-between;align-items:center;margin-bottom:32rpx;padding-bottom:28rpx;border-bottom:4rpx solid #e8eaed}.card-id .label.data-v-341940bb{font-size:34rpx;color:#555}.card-id .value.data-v-341940bb{font-size:40rpx;font-weight:700;color:#1a1a1a}.status-badge.data-v-341940bb{padding:12rpx 28rpx;border-radius:28rpx;font-size:32rpx;font-weight:500}.status-badge.status-confirmed.data-v-341940bb{background:#f6ffed;color:#204e2b;border:4rpx solid #204e2b}.status-badge.status-pending.data-v-341940bb{background:#fff7e6;color:#fa8c16;border:4rpx solid #ffd591}.card-info.data-v-341940bb{margin-bottom:28rpx}.info-row.data-v-341940bb{display:flex;align-items:center;margin-bottom:24rpx}.info-row .info-label.data-v-341940bb{font-size:34rpx;color:#555;min-width:200rpx}.info-row .info-value.data-v-341940bb{font-size:36rpx;color:#1a1a1a;font-weight:500}.card-footer.data-v-341940bb{padding-top:28rpx;border-top:4rpx solid #e8eaed}.card-actions.data-v-341940bb{display:flex;gap:20rpx;margin-top:28rpx;padding-top:28rpx;border-top:4rpx solid #e8eaed}.card-action-btn.data-v-341940bb{flex:1;display:flex;align-items:center;justify-content:center;gap:12rpx;padding:24rpx 12rpx;background:#f6faff;border-radius:20rpx;border:2rpx solid #d6e6fb;min-height:80rpx;transition:all .2s}.card-action-btn.data-v-341940bb:active{transform:scale(.98);opacity:.85}.card-action-btn.primary.data-v-341940bb{background:linear-gradient(135deg,#1890ff,#0ea5a4);border-color:transparent}.card-action-btn.primary .card-action-icon.data-v-341940bb,.card-action-btn.primary .card-action-text.data-v-341940bb{color:#fff}.card-action-icon.data-v-341940bb{font-size:36rpx;color:#1890ff}.card-action-text.data-v-341940bb{font-size:30rpx;color:#1890ff;font-weight:500}.time-info.data-v-341940bb{display:flex;align-items:center;margin-bottom:20rpx}.time-info .time-label.data-v-341940bb{font-size:30rpx;color:#555;min-width:180rpx}.time-info .time-value.data-v-341940bb{font-size:32rpx;color:#555}.view-count.data-v-341940bb{display:flex;align-items:center;margin-top:12rpx}.view-count .count-icon.data-v-341940bb{font-size:34rpx;margin-right:12rpx}.view-count .count-text.data-v-341940bb{font-size:30rpx;color:#555}.empty-state.data-v-341940bb{display:flex;flex-direction:column;align-items:center;justify-content:center;padding:160rpx 0}.empty-state .empty-icon.data-v-341940bb{font-size:140rpx;margin-bottom:40rpx}.empty-state .empty-text.data-v-341940bb{font-size:40rpx;color:#555;margin-bottom:56rpx}.add-card-btn.data-v-341940bb{padding:36rpx 88rpx;background:#1890ff;color:#fff;font-size:40rpx;font-weight:500;border-radius:56rpx;min-height:100rpx}.loading-state.data-v-341940bb{display:flex;justify-content:center;padding:120rpx 0}.loading-state .loading-text.data-v-341940bb{font-size:36rpx;color:#555}
|
||||
@@ -0,0 +1 @@
|
||||
"use strict";const e=require("../../common/vendor.js"),t={__name:"contact",setup(t){const{proxy:a}=e.getCurrentInstance(),n=e.ref({}),o=e.ref(!1),r=e.ref("");e.onMounted(()=>{c()});const c=async()=>{o.value=!0;try{const t=getCurrentPages(),o=t[t.length-1];r.value=o.options.type;const c=await a.apiUrl({url:"/api/index/policy",method:"GET",data:{type:r.value}});n.value=c.data,e.index.setNavigationBarTitle({title:c.data.title})}catch(t){console.error("加载就诊卡列表失败:",t)}finally{o.value=!1}};return(t,a)=>({a:e.t(n.value.title),b:n.value.content})}},a=e._export_sfc(t,[["__scopeId","data-v-5e5077b6"]]);wx.createPage(a);
|
||||
@@ -0,0 +1,4 @@
|
||||
{
|
||||
"navigationBarTitleText": "服务",
|
||||
"usingComponents": {}
|
||||
}
|
||||
@@ -0,0 +1 @@
|
||||
<view class="card-container data-v-5e5077b6"><view class="header data-v-5e5077b6"><text class="header-title data-v-5e5077b6">{{a}}</text></view><view class="card-list data-v-5e5077b6"><rich-text class="data-v-5e5077b6" nodes="{{b}}"/></view></view>
|
||||
@@ -0,0 +1 @@
|
||||
.card-container.data-v-5e5077b6{min-height:100vh;background:linear-gradient(180deg,#f0f7ff,#fff);padding-bottom:40rpx}.header.data-v-5e5077b6{background:#fff;padding:40rpx 30rpx;box-shadow:0 2rpx 8rpx rgba(0,0,0,.05)}.header .header-title.data-v-5e5077b6{font-size:40rpx;font-weight:700;color:#1890ff}.card-list.data-v-5e5077b6{padding:30rpx}.card-item.data-v-5e5077b6{background:#fff;border-radius:20rpx;padding:30rpx;margin-bottom:24rpx;box-shadow:0 4rpx 12rpx rgba(0,0,0,.08);transition:all .3s}.card-item.data-v-5e5077b6:active{transform:scale(.98);box-shadow:0 2rpx 8rpx rgba(0,0,0,.1)}.card-header.data-v-5e5077b6{display:flex;justify-content:space-between;align-items:center;margin-bottom:24rpx;padding-bottom:20rpx;border-bottom:2rpx solid #f0f0f0}.card-id .label.data-v-5e5077b6{font-size:28rpx;color:#666}.card-id .value.data-v-5e5077b6{font-size:32rpx;font-weight:700;color:#333}.status-badge.data-v-5e5077b6{padding:8rpx 20rpx;border-radius:20rpx;font-size:24rpx;font-weight:500}.status-badge.status-confirmed.data-v-5e5077b6{background:#f6ffed;color:#52c41a;border:2rpx solid #b7eb8f}.status-badge.status-pending.data-v-5e5077b6{background:#fff7e6;color:#fa8c16;border:2rpx solid #ffd591}.card-info.data-v-5e5077b6{margin-bottom:20rpx}.info-row.data-v-5e5077b6{display:flex;align-items:center;margin-bottom:16rpx}.info-row .info-label.data-v-5e5077b6{font-size:28rpx;color:#666;min-width:160rpx}.info-row .info-value.data-v-5e5077b6{font-size:30rpx;color:#333;font-weight:500}.card-footer.data-v-5e5077b6{padding-top:20rpx;border-top:2rpx solid #f0f0f0}.time-info.data-v-5e5077b6{display:flex;align-items:center;margin-bottom:12rpx}.time-info .time-label.data-v-5e5077b6{font-size:24rpx;color:#999;min-width:140rpx}.time-info .time-value.data-v-5e5077b6{font-size:26rpx;color:#666}.view-count.data-v-5e5077b6{display:flex;align-items:center;margin-top:8rpx}.view-count .count-icon.data-v-5e5077b6{font-size:28rpx;margin-right:8rpx}.view-count .count-text.data-v-5e5077b6{font-size:24rpx;color:#999}.empty-state.data-v-5e5077b6{display:flex;flex-direction:column;align-items:center;justify-content:center;padding:120rpx 0}.empty-state .empty-icon.data-v-5e5077b6{font-size:120rpx;margin-bottom:30rpx}.empty-state .empty-text.data-v-5e5077b6{font-size:32rpx;color:#999}.loading-state.data-v-5e5077b6{display:flex;justify-content:center;padding:80rpx 0}.loading-state .loading-text.data-v-5e5077b6{font-size:28rpx;color:#999}
|
||||
File diff suppressed because one or more lines are too long
@@ -0,0 +1,6 @@
|
||||
{
|
||||
"navigationBarTitleText": "修改就诊卡",
|
||||
"usingComponents": {
|
||||
"uni-icons": "../../uni_modules/uni-icons/components/uni-icons/uni-icons"
|
||||
}
|
||||
}
|
||||
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
@@ -0,0 +1 @@
|
||||
"use strict";const e=require("../../common/vendor.js"),a={name:"profileB",components:{DevTrainingEntry:()=>"../../components/dev-training-entry/index.js",TabBarDock:()=>"../../components/app-tab-bar/tab-bar-dock.js"},data:()=>({userInfo:{avatar:"",nickname:"",userId:"",balance:"0",points:"0",coupons:"5"},orderTypes:[{name:"待付款",image:"/static/images/my/payment.png",path:"/pages/order/list?type=1",count:2},{name:"待发货",image:"/static/images/my/delivery.png",path:"/pages/order/list?type=2",count:1},{name:"待收货",image:"/static/images/my/shipping.png",path:"/pages/order/list?type=3",count:0},{name:"待评价",image:"/static/images/my/review.png",path:"/pages/order/list?type=4",count:3},{name:"退换/售后",image:"/static/images/my/after-sale.png",path:"/pages/order/list?type=5",count:0}],allServices:[{name:"就诊卡",icon:"folder-add",path:"/pages/Card/Card",class:"bg-cyan"},{name:"设置",icon:"gear",path:"/pages/user/userinfo",class:"bg-gray"}]}),onShow(){this.userInfo=e.index.getStorageSync("userData")},methods:{navigateTo(a){e.index.navigateTo({url:a})},showQRCode(){}}};if(!Array){(e.resolveComponent("uni-icons")+e.resolveComponent("dev-training-entry")+e.resolveComponent("TabBarDock"))()}Math;const n=e._export_sfc(a,[["render",function(a,n,t,o,s,r){return{a:s.userInfo.avatar,b:e.t(s.userInfo.nickname||"未登录"),c:e.t(s.userInfo.balance||0),d:e.t(s.userInfo.points||0),e:e.t(s.userInfo.coupons||0),f:e.o(e=>r.navigateTo("/pages/user/userinfo")),g:e.f(s.allServices,(a,n,t)=>e.e({a:"285a6397-0-"+t,b:e.p({type:a.icon,size:"28",color:"#fff"}),c:e.n(a.class),d:e.t(a.name),e:a.desc},a.desc?{f:e.t(a.desc)}:{},{g:"285a6397-1-"+t,h:n,i:e.o(e=>r.navigateTo(a.path),n)})),h:e.p({type:"right",size:"20",color:"#666"}),i:e.p({bottom:360}),j:e.p({active:1})}}],["__scopeId","data-v-285a6397"]]);a.__runtimeHooks=2,wx.createPage(n);
|
||||
@@ -0,0 +1,10 @@
|
||||
{
|
||||
"navigationBarTitleText": "我的",
|
||||
"backgroundColor": "#e8eaed",
|
||||
"backgroundColorTop": "#e8eaed",
|
||||
"usingComponents": {
|
||||
"dev-training-entry": "../../components/dev-training-entry/index",
|
||||
"tab-bar-dock": "../../components/app-tab-bar/tab-bar-dock",
|
||||
"uni-icons": "../../uni_modules/uni-icons/components/uni-icons/uni-icons"
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1 @@
|
||||
<view class="mine-page data-v-285a6397"><view class="user-card data-v-285a6397" bindtap="{{f}}"><view class="user-header data-v-285a6397"><image class="avatar data-v-285a6397" src="{{a}}" mode="aspectFill"/><view class="user-info data-v-285a6397"><text class="nickname data-v-285a6397">{{b}}</text></view></view><view class="stat-row data-v-285a6397"><view class="stat-item data-v-285a6397"><text class="value data-v-285a6397">{{c}}</text><text class="label data-v-285a6397">钱包(元)</text></view><view class="stat-item data-v-285a6397"><text class="value data-v-285a6397">{{d}}</text><text class="label data-v-285a6397">积分</text></view><view class="stat-item data-v-285a6397"><text class="value data-v-285a6397">{{e}}</text><text class="label data-v-285a6397">优惠券</text></view></view></view><view class="service-list data-v-285a6397"><view wx:for="{{g}}" wx:for-item="item" wx:key="h" class="service-item data-v-285a6397" bindtap="{{item.i}}"><view class="left data-v-285a6397"><view class="{{['service-icon', 'data-v-285a6397', item.c]}}"><uni-icons wx:if="{{item.b}}" class="data-v-285a6397" u-i="{{item.a}}" bind:__l="__l" u-p="{{item.b}}"></uni-icons></view><text class="service-name data-v-285a6397">{{item.d}}</text></view><view class="right data-v-285a6397"><text wx:if="{{item.e}}" class="desc data-v-285a6397">{{item.f}}</text><uni-icons wx:if="{{h}}" class="data-v-285a6397" u-i="{{item.g}}" bind:__l="__l" u-p="{{h}}"></uni-icons></view></view></view><dev-training-entry wx:if="{{i}}" class="data-v-285a6397" u-i="285a6397-2" bind:__l="__l" u-p="{{i}}"/><tab-bar-dock wx:if="{{j}}" class="data-v-285a6397" u-i="285a6397-3" bind:__l="__l" u-p="{{j}}"/></view>
|
||||
@@ -0,0 +1 @@
|
||||
.mine-page.data-v-285a6397{min-height:100vh;background:#e8eaed;padding:40rpx;padding-bottom:calc(240rpx + env(safe-area-inset-bottom))}.user-card.data-v-285a6397{background:#fff;border-radius:28rpx;padding:48rpx;margin-bottom:40rpx;box-shadow:0 4rpx 20rpx rgba(0,0,0,.06)}.user-card .user-header.data-v-285a6397{display:flex;align-items:center;margin-bottom:48rpx}.user-card .user-header .avatar.data-v-285a6397{width:160rpx;height:160rpx;border-radius:80rpx;margin-right:36rpx;border:4rpx solid #e0e0e0}.user-card .user-header .user-info.data-v-285a6397{flex:1}.user-card .user-header .user-info .nickname.data-v-285a6397{font-size:48rpx;font-weight:600;color:#1a1a1a;margin-bottom:16rpx;display:block;letter-spacing:1rpx}.user-card .user-header .user-info .vip-tag.data-v-285a6397{background:linear-gradient(90deg,gold,orange);color:#fff;font-size:28rpx;padding:6rpx 20rpx;border-radius:24rpx;display:inline-block}.user-card .user-header .qr-code.data-v-285a6397{width:88rpx;height:88rpx;border-radius:44rpx;background:#f5f6fa;display:flex;align-items:center;justify-content:center}.user-card .stat-row.data-v-285a6397{display:flex;padding-top:40rpx;border-top:4rpx solid #e8eaed}.user-card .stat-row .stat-item.data-v-285a6397{flex:1;text-align:center;min-height:120rpx}.user-card .stat-row .stat-item .value.data-v-285a6397{font-size:52rpx;font-weight:600;color:#1a1a1a;margin-bottom:12rpx;display:block}.user-card .stat-row .stat-item .label.data-v-285a6397{font-size:32rpx;color:#555;font-weight:500}.order-card.data-v-285a6397{background:#fff;border-radius:24rpx;padding:40rpx;margin-bottom:30rpx;box-shadow:0 4rpx 16rpx rgba(0,0,0,.04)}.order-card .card-header.data-v-285a6397{display:flex;justify-content:space-between;align-items:center;margin-bottom:40rpx}.order-card .card-header .title.data-v-285a6397{font-size:32rpx;font-weight:600;color:#333}.order-card .card-header .more.data-v-285a6397{display:flex;align-items:center}.order-card .card-header .more text.data-v-285a6397{font-size:26rpx;color:#999;margin-right:8rpx}.order-card .order-list.data-v-285a6397{display:flex;justify-content:space-between}.order-card .order-list .order-item.data-v-285a6397{flex:1;text-align:center}.order-card .order-list .order-item .icon-wrapper.data-v-285a6397{width:100rpx;height:100rpx;margin:0 auto;position:relative;display:flex;align-items:center;justify-content:center}.order-card .order-list .order-item .icon-wrapper .count-badge.data-v-285a6397{position:absolute;top:-10rpx;right:-10rpx;background:#ff4d4f;color:#fff;font-size:20rpx;min-width:32rpx;height:32rpx;line-height:32rpx;text-align:center;border-radius:16rpx;padding:0 8rpx}.order-card .order-list .order-item .icon-wrapper .order-icon.data-v-285a6397{width:56rpx;height:56rpx}.order-card .order-list .order-item .order-name.data-v-285a6397{font-size:26rpx;color:#666}.quick-actions.data-v-285a6397{display:grid;grid-template-columns:repeat(4,1fr);gap:30rpx;margin-bottom:30rpx}.quick-actions .action-item.data-v-285a6397{background:#fff;border-radius:24rpx;padding:30rpx 20rpx;text-align:center;box-shadow:0 4rpx 16rpx rgba(0,0,0,.04)}.quick-actions .action-item .action-icon.data-v-285a6397{width:80rpx;height:80rpx;border-radius:40rpx;margin:0 auto 16rpx;display:flex;align-items:center;justify-content:center}.quick-actions .action-item .action-name.data-v-285a6397{font-size:26rpx;color:#666}.service-list.data-v-285a6397{background:#fff;border-radius:28rpx;padding:20rpx 40rpx;box-shadow:0 4rpx 20rpx rgba(0,0,0,.06)}.service-list .service-item.data-v-285a6397{display:flex;align-items:center;justify-content:space-between;padding:44rpx 0;border-bottom:4rpx solid #e8eaed;min-height:120rpx}.service-list .service-item.data-v-285a6397:last-child{border-bottom:none}.service-list .service-item .left.data-v-285a6397{display:flex;align-items:center}.service-list .service-item .left .service-icon.data-v-285a6397{width:88rpx;height:88rpx;border-radius:44rpx;margin-right:32rpx;display:flex;align-items:center;justify-content:center}.service-list .service-item .left .service-name.data-v-285a6397{font-size:38rpx;color:#1a1a1a;font-weight:500}.service-list .service-item .right.data-v-285a6397{display:flex;align-items:center}.service-list .service-item .right .desc.data-v-285a6397{font-size:30rpx;color:#555;margin-right:20rpx}.bg-red.data-v-285a6397{background:#ff4d4f}.bg-blue.data-v-285a6397{background:#1890ff}.bg-green.data-v-285a6397{background:#52c41a}.bg-purple.data-v-285a6397{background:#722ed1}.bg-orange.data-v-285a6397{background:#fa8c16}.bg-cyan.data-v-285a6397{background:#13c2c2}.bg-pink.data-v-285a6397{background:#eb2f96}.bg-gray.data-v-285a6397{background:#666}
|
||||
@@ -0,0 +1 @@
|
||||
"use strict";const e=require("../../common/vendor.js");if(!Array){e.resolveComponent("uni-icons")()}Math;const a={__name:"userinfo",setup(a){const{proxy:n}=e.getCurrentInstance(),t=e.getCurrentInstance().appContext.config.globalProperties.$url,o=e.ref(!1),i=e.ref(!1),s=e.ref({avatar:"",patient_name:"",phone:"",nickname:"",sex:1,age:""});e.onMounted(()=>{l()});const l=async()=>{o.value=!0;try{const a=await n.apiUrl({url:"/api/user/info",method:"GET",data:{}});if(1===a.code){const e=a.data;s.value={avatar:e.avatar||"",patient_name:e.patient_name||e.nickname||"",phone:e.phone||"",nickname:e.nickname||"",sex:"男"==e.sex?1:2,age:e.age||""}}else e.index.showToast({title:a.msg||"加载失败",icon:"none"})}catch(a){console.error("加载用户信息失败:",a),e.index.showToast({title:"加载失败",icon:"none"})}finally{o.value=!1}},c=()=>{e.index.chooseImage({count:1,sizeType:["compressed"],sourceType:["album","camera"],success:async a=>{const n=a.tempFilePaths[0];try{e.index.showLoading({title:"上传中..."});const a=e.index.getStorageSync("token"),o=await new Promise((o,i)=>{e.index.uploadFile({url:t+"/api/upload/image",filePath:n,name:"file",header:{token:a,"content-type":"multipart/form-data"},success:e=>{const a=JSON.parse(e.data);o(a)},fail:e=>{i(e)}})});e.index.hideLoading(),1===o.code?(s.value.avatar=o.data.uri||o.data,e.index.showToast({title:"头像上传成功",icon:"success"})):e.index.showToast({title:o.msg||"上传失败",icon:"none"})}catch(o){e.index.hideLoading(),console.error("上传头像失败:",o),e.index.showToast({title:"上传失败",icon:"none"})}},fail:a=>{console.error("选择图片失败:",a),e.index.showToast({title:"选择图片失败",icon:"none"})}})},r=async()=>{if(s.value.patient_name)if(s.value.phone&&((a=s.value.phone)&&!/^1[3-9]\d{9}$/.test(a)))e.index.showToast({title:"手机号格式不正确",icon:"none"});else{var a;i.value=!0;try{const a=await n.apiUrl({url:"/api/user/setInfo",method:"POST",data:{avatar:s.value.avatar,phone:s.value.phone,nickname:s.value.nickname,sex:s.value.sex,age:s.value.age,patient_name:s.value.patient_name}});if(1===a.code){const a=e.index.getStorageSync("userData"),n={...a,avatar:s.value.avatar,phone:s.value.phone,nickname:s.value.nickname,sex:s.value.sex,age:s.value.age,patient_name:s.value.patient_name,diagnosis:{...a.diagnosis,patient_name:s.value.patient_name}};e.index.setStorageSync("userData",n),e.index.showToast({title:"保存成功",icon:"success"}),setTimeout(()=>{e.index.navigateBack()},1500)}else e.index.showToast({title:a.msg||"保存失败",icon:"none"})}catch(t){console.error("保存失败:",t),e.index.showToast({title:"保存失败",icon:"none"})}finally{i.value=!1}}else e.index.showToast({title:"姓名不能为空",icon:"none"})};return(a,n)=>e.e({a:o.value},o.value?{}:{b:s.value.avatar,c:e.p({type:"upload-filled",size:"24",color:"#FFA500"}),d:e.o(c),e:s.value.nickname,f:e.o(e=>s.value.nickname=e.detail.value),g:1===s.value.sex?1:"",h:e.o(e=>s.value.sex=1),i:2===s.value.sex?1:"",j:e.o(e=>s.value.sex=2),k:s.value.age,l:e.o(e.m(e=>s.value.age=e.detail.value,{number:!0})),m:e.t(i.value?"保存中...":"保存修改"),n:e.o(r),o:i.value})}},n=e._export_sfc(a,[["__scopeId","data-v-c609dd4e"]]);wx.createPage(n);
|
||||
@@ -0,0 +1,6 @@
|
||||
{
|
||||
"navigationBarTitleText": "个人资料",
|
||||
"usingComponents": {
|
||||
"uni-icons": "../../uni_modules/uni-icons/components/uni-icons/uni-icons"
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1 @@
|
||||
<view class="userinfo-container data-v-c609dd4e"><view wx:if="{{a}}" class="loading-state data-v-c609dd4e"><text class="data-v-c609dd4e">加载中...</text></view><view wx:else class="form-wrapper data-v-c609dd4e"><view class="form-section data-v-c609dd4e"><view class="form-group data-v-c609dd4e"><text class="form-label data-v-c609dd4e">头像</text><view class="avatar-container data-v-c609dd4e"><image src="{{b}}" class="avatar-image data-v-c609dd4e" mode="aspectFill"/><view class="avatar-upload data-v-c609dd4e" bindtap="{{d}}"><uni-icons wx:if="{{c}}" class="upload-icon data-v-c609dd4e" u-i="c609dd4e-0" bind:__l="__l" u-p="{{c}}"></uni-icons><text class="upload-text data-v-c609dd4e">更换头像</text></view></view></view></view><view class="form-section data-v-c609dd4e"><text class="section-title data-v-c609dd4e">基本信息</text><view class="form-group data-v-c609dd4e"><text class="form-label data-v-c609dd4e">昵称</text><input class="form-input data-v-c609dd4e" placeholder="请输入昵称" maxlength="50" value="{{e}}" bindinput="{{f}}"/></view><view class="form-group data-v-c609dd4e"><text class="form-label data-v-c609dd4e">性别</text><view class="sex-group data-v-c609dd4e"><view class="{{['sex-btn', 'data-v-c609dd4e', g && 'active']}}" bindtap="{{h}}"> 男 </view><view class="{{['sex-btn', 'data-v-c609dd4e', i && 'active']}}" bindtap="{{j}}"> 女 </view></view></view><view class="form-group data-v-c609dd4e"><text class="form-label data-v-c609dd4e">年龄</text><input class="form-input data-v-c609dd4e" type="number" placeholder="请输入年龄" min="0" max="150" value="{{k}}" bindinput="{{l}}"/></view></view><view class="button-group data-v-c609dd4e"><button class="btn btn-submit data-v-c609dd4e" bindtap="{{n}}" disabled="{{o}}">{{m}}</button></view></view></view>
|
||||
@@ -0,0 +1 @@
|
||||
.userinfo-container.data-v-c609dd4e{min-height:100vh;background:#e8eaed}.header.data-v-c609dd4e{display:flex;justify-content:space-between;align-items:center;background:#fff;padding:24rpx 40rpx;box-shadow:0 2rpx 12rpx rgba(0,0,0,.06)}.header-back.data-v-c609dd4e{font-size:48rpx;color:orange;width:88rpx;height:88rpx;display:flex;align-items:center;justify-content:center}.header-title.data-v-c609dd4e{font-size:44rpx;font-weight:700;color:#1a1a1a;flex:1;text-align:center}.header-placeholder.data-v-c609dd4e{width:88rpx}.loading-state.data-v-c609dd4e{display:flex;justify-content:center;align-items:center;height:100vh;font-size:36rpx;color:#555}.form-wrapper.data-v-c609dd4e{padding:40rpx}.form-section.data-v-c609dd4e{background:#fff;border-radius:24rpx;padding:40rpx;margin-bottom:36rpx;box-shadow:0 4rpx 16rpx rgba(0,0,0,.06)}.section-title.data-v-c609dd4e{font-size:40rpx;font-weight:700;color:orange;margin-bottom:32rpx;display:block;padding-bottom:24rpx;border-bottom:4rpx solid #f0f0f0}.form-group.data-v-c609dd4e{margin-bottom:36rpx}.form-group.data-v-c609dd4e:last-child{margin-bottom:0}.form-label.data-v-c609dd4e{display:block;font-size:36rpx;color:#1a1a1a;font-weight:500;margin-bottom:20rpx;line-height:1.6}.form-input.data-v-c609dd4e{width:100%;padding:28rpx;border:4rpx solid #e0e0e0;border-radius:16rpx;font-size:36rpx;line-height:1.6;color:#1a1a1a;background:#fff;box-sizing:border-box;display:block;height:auto;min-height:96rpx}.form-input.data-v-c609dd4e::-moz-placeholder{color:#999;font-size:34rpx}.form-input.data-v-c609dd4e::placeholder{color:#999;font-size:34rpx}.avatar-container.data-v-c609dd4e{display:flex;align-items:center;gap:32rpx}.avatar-image.data-v-c609dd4e{width:160rpx;height:160rpx;border-radius:80rpx;background:#f0f0f0;border:4rpx solid #e0e0e0}.avatar-upload.data-v-c609dd4e{flex:1;padding:36rpx;border:4rpx dashed #FFA500;border-radius:20rpx;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:16rpx;min-height:120rpx}.upload-icon.data-v-c609dd4e{font-size:56rpx}.upload-text.data-v-c609dd4e{font-size:34rpx;color:orange;font-weight:500}.sex-group.data-v-c609dd4e{display:flex;gap:28rpx}.sex-btn.data-v-c609dd4e{flex:1;padding:32rpx;border:4rpx solid #e0e0e0;border-radius:16rpx;text-align:center;font-size:38rpx;line-height:1.5;color:#555;background:#fff;transition:all .3s;display:flex;align-items:center;justify-content:center;min-height:96rpx}.sex-btn.active.data-v-c609dd4e{border-color:orange;background:#fff7e6;color:orange;font-weight:700}.button-group.data-v-c609dd4e{display:flex;gap:28rpx;margin-top:56rpx;margin-bottom:56rpx}.btn.data-v-c609dd4e{flex:1;padding:36rpx;border-radius:20rpx;font-size:40rpx;font-weight:700;border:none;cursor:pointer;transition:all .3s;min-height:100rpx}.btn.data-v-c609dd4e:active{transform:scale(.98)}.btn.data-v-c609dd4e:disabled{opacity:.6;cursor:not-allowed}.btn-cancel.data-v-c609dd4e{background:#f0f0f0;color:#555}.btn-submit.data-v-c609dd4e{background:orange;color:#fff}.btn-submit.data-v-c609dd4e:active:not(:disabled){background:#e69500}
|
||||
@@ -0,0 +1,36 @@
|
||||
{
|
||||
"description": "项目配置文件。",
|
||||
"packOptions": {
|
||||
"ignore": []
|
||||
},
|
||||
"setting": {
|
||||
"urlCheck": false,
|
||||
"es6": true,
|
||||
"postcss": false,
|
||||
"minified": true,
|
||||
"newFeature": true,
|
||||
"bigPackageSizeSupport": true
|
||||
},
|
||||
"compileType": "miniprogram",
|
||||
"libVersion": "",
|
||||
"appid": "wx79b9a0bfbfe7cbcd",
|
||||
"projectname": "tongji-uniapp",
|
||||
"condition": {
|
||||
"search": {
|
||||
"current": -1,
|
||||
"list": []
|
||||
},
|
||||
"conversation": {
|
||||
"current": -1,
|
||||
"list": []
|
||||
},
|
||||
"game": {
|
||||
"current": -1,
|
||||
"list": []
|
||||
},
|
||||
"miniprogram": {
|
||||
"current": -1,
|
||||
"list": []
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1 @@
|
||||
"use strict";const t=require("../../common/vendor.js");Math||e();const e=()=>"./TongjiIcon.js",a={__name:"CelebrateBurst",props:{show:{type:Boolean,default:!1},title:{type:String,default:""},subtitle:{type:String,default:""}},setup(e){const a=e,o=t.ref([]),s=t.ref(!1),l=["#204E2B","#386641","#AFE2B3","#FBBF24","#727970","#DC2626"];return t.watch(()=>a.show,t=>{t?(o.value=function(){const t=[];for(let e=0;e<18;e++){const a=8+84*Math.random(),o=.35*Math.random(),s=l[e%l.length],n=10+Math.floor(14*Math.random());t.push({id:`${Date.now()}_${e}`,style:{left:`${a}%`,width:`${n}rpx`,height:`${n}rpx`,background:s,animationDelay:`${o}s`}})}return t}(),s.value=!1,setTimeout(()=>{s.value=!0},30)):(o.value=[],s.value=!1)}),(a,l)=>t.e({a:e.show},e.show?t.e({b:t.f(o.value,(e,a,o)=>({a:e.id,b:t.s(e.style)})),c:e.title},e.title?t.e({d:t.p({name:"sparkles",size:"lg",color:"#204E2B"}),e:t.t(e.title),f:e.subtitle},e.subtitle?{g:t.t(e.subtitle)}:{},{h:s.value?1:""}):{},{i:t.o(()=>{})}):{})}},o=t._export_sfc(a,[["__scopeId","data-v-333a1623"]]);wx.createComponent(o);
|
||||
@@ -0,0 +1,6 @@
|
||||
{
|
||||
"component": true,
|
||||
"usingComponents": {
|
||||
"tongji-icon": "./TongjiIcon"
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1 @@
|
||||
<view wx:if="{{a}}" class="celebrate-root data-v-333a1623" catchtouchmove="{{i}}"><view wx:for="{{b}}" wx:for-item="p" wx:key="a" class="celebrate-particle data-v-333a1623" style="{{p.b}}"/><view wx:if="{{c}}" class="{{['celebrate-card', 'data-v-333a1623', h && 'pop']}}"><view class="celebrate-card-glow data-v-333a1623"/><tongji-icon wx:if="{{d}}" class="data-v-333a1623" u-i="333a1623-0" bind:__l="__l" u-p="{{d}}"/><text class="celebrate-card-title data-v-333a1623">{{e}}</text><text wx:if="{{f}}" class="celebrate-card-sub data-v-333a1623">{{g}}</text></view></view>
|
||||
@@ -0,0 +1 @@
|
||||
.celebrate-root.data-v-333a1623{position:fixed;top:0;right:0;bottom:0;left:0;z-index:9999;pointer-events:none;overflow:hidden}.celebrate-particle.data-v-333a1623{position:absolute;top:-20rpx;border-radius:4rpx;opacity:.9;animation:celebrate-fall-333a1623 1.6s ease-in forwards}@keyframes celebrate-fall-333a1623{0%{transform:translateY(0) rotate(0) scale(1);opacity:1}to{transform:translateY(110vh) rotate(540deg) scale(.4);opacity:0}}.celebrate-card.data-v-333a1623{position:absolute;left:50%;top:38%;transform:translate(-50%,-50%) scale(.82);width:78%;max-width:560rpx;padding:36rpx 32rpx 32rpx;background:rgba(255,255,255,.96);border-radius:28rpx;box-shadow:0 20rpx 60rpx rgba(8,145,178,.22);border:2rpx solid rgba(8,145,178,.12);display:flex;flex-direction:column;align-items:center;text-align:center;opacity:0;transition:transform .35s cubic-bezier(.34,1.56,.64,1),opacity .25s ease}.celebrate-card.pop.data-v-333a1623{opacity:1;transform:translate(-50%,-50%) scale(1)}.celebrate-card-glow.data-v-333a1623{position:absolute;top:-20rpx;right:-20rpx;bottom:-20rpx;left:-20rpx;border-radius:36rpx;background:radial-gradient(circle,rgba(34,211,238,.2),transparent 70%);pointer-events:none}.celebrate-card-title.data-v-333a1623{position:relative;z-index:1;margin-top:16rpx;font-size:36rpx;font-weight:800;color:#1b1c1a}.celebrate-card-sub.data-v-333a1623{position:relative;z-index:1;margin-top:10rpx;font-size:26rpx;color:#475569;line-height:1.45}
|
||||
@@ -0,0 +1 @@
|
||||
"use strict";const e=require("../../common/vendor.js"),l={__name:"SugarTreeGraphic",props:{level:{type:Number,default:0},size:{type:String,default:"md"},watering:{type:Boolean,default:!1}},setup(l){const t=e.TREE_MAX_LEVEL,c=e.ref(!0),a=l,r=e.computed(()=>Math.min(t,Math.max(0,Number(a.level)||0))),i=e.computed(()=>{const e=r.value;return e<=0?0:e<=2?1:e<=4?2:e<=6?3:e<=8?4:5}),n=e.computed(()=>(e.TREE_LEVELS[r.value]||e.TREE_LEVELS[0]).emoji);const o=e.computed(()=>e.svgToDataUrl(function(e){const l='\n <ellipse cx="24" cy="50" rx="15" ry="3" fill="#204e2b" opacity="0.12"/>\n <path d="M11 46h26c1.2 0 2 1 2 2.2v3.8c0 1-.8 1.8-1.8 1.8H10.8c-1 0-1.8-.8-1.8-1.8v-3.8c0-1.2.8-2.2 2-2.2z" fill="#E7E5E4"/>\n <path d="M12.5 46h23c.8 0 1.5.7 1.5 1.5v2.2c0 .6-.5 1.1-1.1 1.1H12.1c-.6 0-1.1-.5-1.1-1.1v-2.2c0-.8.7-1.5 1.5-1.5z" fill="#D6D3D1"/>\n <ellipse cx="24" cy="46.5" rx="9" ry="1.6" fill="#A8A29E" opacity="0.35"/>\n ',t='<ellipse cx="24" cy="44.5" rx="8" ry="2.2" fill="#386641" opacity="0.18"/>';if(e<=0)return`<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 48 56" fill="none">\n ${l}${t}\n <circle cx="24" cy="41.5" r="2.2" fill="#a8a29e" opacity="0.7"/>\n <path d="M24 41.5v3.5" stroke="#78716c" stroke-width="1" stroke-linecap="round"/>\n </svg>`;const c=e>=6?16:e>=3?14:10,a=46-c,r=`<rect x="22.2" y="${a}" width="3.6" height="${c}" rx="1.8" fill="#78716C"/>\n <rect x="22.6" y="${a+1}" width="2.8" height="${c-1}" rx="1.4" fill="#A8A29E" opacity="0.35"/>`,i=(e,l,t,c,a=1)=>`<circle cx="${e}" cy="${l}" r="${t}" fill="${c}" opacity="${a}"/>\n <circle cx="${e-.25*t}" cy="${l-.2*t}" r="${.35*t}" fill="#eef6ef" opacity="0.55"/>`,n=e>=7?i(17,18,3,"#fda4af",.95)+i(31,17,2.8,"#f9a8d4",.9)+i(24,13,3.2,"#fb7185",.95)+'<circle cx="24" cy="12" r="1.3" fill="#fef3c7"/>':"",o=e>=9?i(12,22,6,"#34d399",.9)+i(36,22,6,"#34d399",.9)+i(24,10,7,"#386641",.95)+n:n;let u="";return u=1===e?i(24,38,4,"#afe2b3")+'<path d="M24 38v-5" stroke="#386641" stroke-width="1.2" stroke-linecap="round"/>':2===e?i(24,32,5.5,"#34d399")+i(20,34,3.5,"#6ee7b7",.9):e<=4?i(24,28,7,"#34d399")+i(17,30,5,"#6ee7b7",.9)+i(31,30,5,"#6ee7b7",.9):e<=6?i(24,24,9,"#22c55e")+i(14,26,7,"#4ade80",.92)+i(34,26,7,"#4ade80",.92)+i(24,16,6,"#386641",.88):i(24,20,10,"#204e2b")+i(13,24,8,"#34d399",.95)+i(35,24,8,"#34d399",.95)+o,`<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 48 56" fill="none">${l}${t}${r}${u}</svg>`}(r.value)));return(a,u)=>e.e({a:r.value>=7},(r.value,{}),{b:!c.value},c.value?{e:e.t(n.value)}:{c:o.value,d:e.o(e=>c.value=!0)},{f:r.value>=7},(r.value,{}),{g:r.value>=8},(r.value,{}),{h:r.value>=e.unref(t)},(r.value,e.unref(t),{}),{i:e.n(`lv-${r.value}`),j:e.n(`tier-${i.value}`),k:e.n(`size-${l.size}`),l:e.n({watering:l.watering,"is-max":r.value>=e.unref(t)})})}},t=e._export_sfc(l,[["__scopeId","data-v-86839929"]]);wx.createComponent(t);
|
||||
@@ -0,0 +1,4 @@
|
||||
{
|
||||
"component": true,
|
||||
"usingComponents": {}
|
||||
}
|
||||
@@ -0,0 +1 @@
|
||||
<view class="{{['sugar-tree-graphic', 'data-v-86839929', i, j, k, l]}}"><view class="stg-glow data-v-86839929"/><view wx:if="{{a}}" class="stg-aura data-v-86839929"/><image wx:if="{{b}}" class="stg-image data-v-86839929" src="{{c}}" mode="aspectFit" binderror="{{d}}"/><text wx:else class="stg-emoji data-v-86839929">{{e}}</text><view wx:if="{{f}}" class="stg-sparkle stg-sparkle-a data-v-86839929"/><view wx:if="{{g}}" class="stg-sparkle stg-sparkle-b data-v-86839929"/><view wx:if="{{h}}" class="stg-sparkle stg-sparkle-c data-v-86839929"/></view>
|
||||
@@ -0,0 +1 @@
|
||||
.sugar-tree-graphic.data-v-86839929{position:relative;display:flex;align-items:center;justify-content:center;box-sizing:border-box}.size-sm.data-v-86839929{width:64rpx;height:72rpx}.size-md.data-v-86839929{width:80rpx;height:88rpx}.size-lg.data-v-86839929{width:112rpx;height:124rpx}.stg-glow.data-v-86839929{position:absolute;top:6%;right:6%;bottom:6%;left:6%;border-radius:50%;background:radial-gradient(circle,rgba(32,78,43,.22) 0%,transparent 68%);pointer-events:none}.lv-0 .stg-glow.data-v-86839929{background:radial-gradient(circle,rgba(148,163,184,.25) 0%,transparent 70%)}.tier-4 .stg-glow.data-v-86839929,.tier-5 .stg-glow.data-v-86839929,.is-max .stg-glow.data-v-86839929{background:radial-gradient(circle,rgba(251,191,36,.3) 0%,rgba(32,78,43,.15) 55%,transparent 72%)}.stg-aura.data-v-86839929{position:absolute;top:-8%;right:-8%;bottom:-8%;left:-8%;border-radius:50%;border:2rpx solid rgba(253,224,71,.35);animation:stg-aura-pulse-86839929 2.4s ease-in-out infinite;pointer-events:none}@keyframes stg-aura-pulse-86839929{0%,to{transform:scale(.92);opacity:.5}50%{transform:scale(1.05);opacity:1}}.stg-image.data-v-86839929{position:relative;z-index:1;width:100%;height:100%;transition:transform .35s ease}.sugar-tree-graphic.watering .stg-image.data-v-86839929,.sugar-tree-graphic.watering .stg-emoji.data-v-86839929{animation:stg-water-bounce-86839929 .65s ease}.stg-emoji.data-v-86839929{position:relative;z-index:1;line-height:1;font-size:72rpx}.size-sm .stg-emoji.data-v-86839929{font-size:48rpx}.size-md .stg-emoji.data-v-86839929{font-size:60rpx}.size-lg .stg-emoji.data-v-86839929{font-size:88rpx}@keyframes stg-water-bounce-86839929{0%,to{transform:scale(1)}35%{transform:scale(1.1) translateY(-6rpx)}60%{transform:scale(.96) translateY(2rpx)}}.stg-sparkle.data-v-86839929{position:absolute;z-index:2;width:8rpx;height:8rpx;border-radius:50%;background:#fde68a;box-shadow:0 0 6rpx rgba(253,224,71,.8);pointer-events:none;animation:stg-sparkle-twinkle-86839929 1.8s ease-in-out infinite}.stg-sparkle-a.data-v-86839929{top:4%;right:16%}.stg-sparkle-b.data-v-86839929{top:12%;left:10%;width:6rpx;height:6rpx;animation-delay:.4s}.stg-sparkle-c.data-v-86839929{top:22%;right:28%;width:10rpx;height:10rpx;animation-delay:.8s}@keyframes stg-sparkle-twinkle-86839929{0%,to{opacity:.4;transform:scale(.8)}50%{opacity:1;transform:scale(1.2)}}
|
||||
File diff suppressed because one or more lines are too long
@@ -0,0 +1,4 @@
|
||||
{
|
||||
"component": true,
|
||||
"usingComponents": {}
|
||||
}
|
||||
@@ -0,0 +1 @@
|
||||
<view class="{{['tj-icon-wrap', 'data-v-d92a1022', f]}}"><image wx:if="{{a}}" class="{{['tj-icon', 'data-v-d92a1022', b, c]}}" src="{{d}}" mode="aspectFit" binderror="{{e}}"/></view>
|
||||
@@ -0,0 +1 @@
|
||||
.tj-icon-wrap.data-v-d92a1022{display:inline-flex;align-items:center;justify-content:center;flex-shrink:0}.tj-icon-wrap--sm.data-v-d92a1022{width:32rpx;height:32rpx}.tj-icon-wrap--md.data-v-d92a1022{width:40rpx;height:40rpx}.tj-icon-wrap--lg.data-v-d92a1022{width:48rpx;height:48rpx}.tj-icon-wrap--xl.data-v-d92a1022{width:56rpx;height:56rpx}.tj-icon.data-v-d92a1022{display:block;width:100%;height:100%}.tj-icon--send.data-v-d92a1022{transform:translate(-10%,10%)}.tj-icon-fallback.data-v-d92a1022{display:block;line-height:1;font-weight:700;text-align:center}.tj-icon-fallback--sm.data-v-d92a1022{font-size:24rpx}.tj-icon-fallback--md.data-v-d92a1022{font-size:30rpx}.tj-icon-fallback--lg.data-v-d92a1022{font-size:36rpx}.tj-icon-fallback--xl.data-v-d92a1022{font-size:42rpx}
|
||||
@@ -0,0 +1 @@
|
||||
"use strict";const e=require("../../common/vendor.js"),t={__name:"VoiceSpeakMascot",props:{active:{type:Boolean,default:!1},onDark:{type:Boolean,default:!1},size:{type:String,default:"md"}},setup:t=>(a,o)=>e.e({a:t.active},(t.active,{}),{b:e.n(`vsm--${t.size}`),c:e.n({"vsm--active":t.active,"vsm--on-dark":t.onDark})})},a=e._export_sfc(t,[["__scopeId","data-v-c347644e"]]);wx.createComponent(a);
|
||||
@@ -0,0 +1,4 @@
|
||||
{
|
||||
"component": true,
|
||||
"usingComponents": {}
|
||||
}
|
||||
@@ -0,0 +1 @@
|
||||
<view class="{{['vsm', 'data-v-c347644e', b, c]}}"><view class="vsm-body data-v-c347644e"><view class="vsm-leaf data-v-c347644e" aria-hidden="true"/><view class="vsm-face data-v-c347644e"><view class="vsm-eye vsm-eye--l data-v-c347644e"/><view class="vsm-eye vsm-eye--r data-v-c347644e"/><view class="vsm-blush vsm-blush--l data-v-c347644e"/><view class="vsm-blush vsm-blush--r data-v-c347644e"/><view class="vsm-mouth data-v-c347644e"/></view><view wx:if="{{a}}" class="vsm-waves data-v-c347644e" aria-hidden="true"><view class="vsm-wave vsm-wave--1 data-v-c347644e"/><view class="vsm-wave vsm-wave--2 data-v-c347644e"/><view class="vsm-wave vsm-wave--3 data-v-c347644e"/></view></view></view>
|
||||
@@ -0,0 +1 @@
|
||||
.vsm.data-v-c347644e{display:flex;align-items:center;justify-content:center;flex-shrink:0}.vsm--md.data-v-c347644e{width:72rpx;height:72rpx}.vsm--sm.data-v-c347644e{width:64rpx;height:64rpx}.vsm-body.data-v-c347644e{position:relative;width:100%;height:100%;display:flex;align-items:center;justify-content:center}.vsm-leaf.data-v-c347644e{position:absolute;top:2rpx;left:50%;width:16rpx;height:16rpx;margin-left:-8rpx;border-radius:0 100%;background:#34d399;transform:rotate(-18deg);z-index:2}.vsm--on-dark .vsm-leaf.data-v-c347644e{background:#a7f3d0}.vsm-face.data-v-c347644e{position:relative;width:52rpx;height:52rpx;border-radius:50%;background:#fef9c3;border:3rpx solid #047857;box-shadow:0 4rpx 10rpx rgba(4,120,87,.18);z-index:1}.vsm--sm .vsm-face.data-v-c347644e{width:46rpx;height:46rpx}.vsm--on-dark .vsm-face.data-v-c347644e{background:#fffbeb;border-color:rgba(255,255,255,.85);box-shadow:0 4rpx 12rpx rgba(0,0,0,.12)}.vsm-eye.data-v-c347644e{position:absolute;top:16rpx;width:6rpx;height:8rpx;border-radius:50%;background:#064e3b}.vsm--sm .vsm-eye.data-v-c347644e{top:14rpx;width:5rpx;height:7rpx}.vsm--on-dark .vsm-eye.data-v-c347644e{background:#134e4a}.vsm-eye--l.data-v-c347644e{left:12rpx}.vsm-eye--r.data-v-c347644e{right:12rpx}.vsm--sm .vsm-eye--l.data-v-c347644e{left:10rpx}.vsm--sm .vsm-eye--r.data-v-c347644e{right:10rpx}.vsm-blush.data-v-c347644e{position:absolute;top:24rpx;width:10rpx;height:6rpx;border-radius:50%;background:rgba(251,113,133,.45);opacity:.85}.vsm--sm .vsm-blush.data-v-c347644e{top:21rpx;width:8rpx;height:5rpx}.vsm-blush--l.data-v-c347644e{left:6rpx}.vsm-blush--r.data-v-c347644e{right:6rpx}.vsm--on-dark .vsm-blush.data-v-c347644e{background:rgba(255,255,255,.35)}.vsm-mouth.data-v-c347644e{position:absolute;left:50%;bottom:10rpx;width:18rpx;height:8rpx;margin-left:-9rpx;border-radius:0 0 18rpx 18rpx;background:#047857;transform-origin:center top}.vsm--sm .vsm-mouth.data-v-c347644e{bottom:9rpx;width:16rpx;height:7rpx;margin-left:-8rpx}.vsm--on-dark .vsm-mouth.data-v-c347644e{background:#ecfdf5}.vsm-waves.data-v-c347644e{position:absolute;right:-2rpx;top:50%;display:flex;align-items:flex-end;gap:4rpx;height:28rpx;margin-top:-14rpx;z-index:0}.vsm-wave.data-v-c347644e{width:5rpx;border-radius:4rpx;background:#047857;animation:vsm-wave-jump-c347644e .72s ease-in-out infinite}.vsm--on-dark .vsm-wave.data-v-c347644e{background:rgba(255,255,255,.9)}.vsm-wave--1.data-v-c347644e{height:10rpx;animation-delay:0s}.vsm-wave--2.data-v-c347644e{height:18rpx;animation-delay:.12s}.vsm-wave--3.data-v-c347644e{height:12rpx;animation-delay:.24s}.vsm--active .vsm-body.data-v-c347644e{animation:vsm-bob-c347644e .9s ease-in-out infinite}.vsm--active .vsm-mouth.data-v-c347644e{animation:vsm-talk-c347644e .32s ease-in-out infinite alternate}.vsm--active .vsm-eye.data-v-c347644e{animation:vsm-blink-c347644e 2.4s ease-in-out infinite}@keyframes vsm-bob-c347644e{0%,to{transform:translateY(0)}50%{transform:translateY(-4rpx)}}@keyframes vsm-talk-c347644e{0%{transform:scaleY(.45);border-radius:0 0 18rpx 18rpx}to{transform:scaleY(1.15);height:12rpx;border-radius:50%}}@keyframes vsm-blink-c347644e{0%,42%,46%,to{transform:scaleY(1)}44%{transform:scaleY(.15)}}@keyframes vsm-wave-jump-c347644e{0%,to{transform:scaleY(.45);opacity:.55}50%{transform:scaleY(1);opacity:1}}
|
||||
File diff suppressed because one or more lines are too long
@@ -0,0 +1,11 @@
|
||||
{
|
||||
"navigationStyle": "custom",
|
||||
"navigationBarTitleText": "识糖小课堂",
|
||||
"backgroundColor": "#eefbf4",
|
||||
"disableScroll": false,
|
||||
"enableShareAppMessage": true,
|
||||
"enableShareTimeline": true,
|
||||
"usingComponents": {
|
||||
"tongji-icon": "../components/TongjiIcon"
|
||||
}
|
||||
}
|
||||
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
@@ -0,0 +1,17 @@
|
||||
{
|
||||
"navigationBarTitleText": "血糖记录",
|
||||
"navigationBarBackgroundColor": "#204e2b",
|
||||
"navigationBarTextStyle": "white",
|
||||
"backgroundColor": "#faf9f5",
|
||||
"enablePullDownRefresh": true,
|
||||
"usingPlugins": {
|
||||
"WechatSI": {
|
||||
"version": "0.3.5",
|
||||
"provider": "wx069ba97219f66d99"
|
||||
}
|
||||
},
|
||||
"usingComponents": {
|
||||
"sugar-tree-graphic": "../components/SugarTreeGraphic",
|
||||
"tongji-icon": "../components/TongjiIcon"
|
||||
}
|
||||
}
|
||||
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
@@ -0,0 +1,18 @@
|
||||
{
|
||||
"navigationStyle": "custom",
|
||||
"navigationBarTitleText": "日常护理",
|
||||
"backgroundColor": "#f4fbf4",
|
||||
"enablePullDownRefresh": true,
|
||||
"usingPlugins": {
|
||||
"WechatSI": {
|
||||
"version": "0.3.5",
|
||||
"provider": "wx069ba97219f66d99"
|
||||
}
|
||||
},
|
||||
"usingComponents": {
|
||||
"sugar-tree-graphic": "../components/SugarTreeGraphic",
|
||||
"tongji-icon": "../components/TongjiIcon",
|
||||
"celebrate-burst": "../components/CelebrateBurst",
|
||||
"voice-speak-mascot": "../components/VoiceSpeakMascot"
|
||||
}
|
||||
}
|
||||
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
@@ -0,0 +1,17 @@
|
||||
{
|
||||
"navigationStyle": "custom",
|
||||
"navigationBarTitleText": "血糖管理",
|
||||
"backgroundColor": "#f4fbf4",
|
||||
"enablePullDownRefresh": true,
|
||||
"usingPlugins": {
|
||||
"WechatSI": {
|
||||
"version": "0.3.5",
|
||||
"provider": "wx069ba97219f66d99"
|
||||
}
|
||||
},
|
||||
"usingComponents": {
|
||||
"tongji-icon": "../components/TongjiIcon",
|
||||
"tab-bar-dock": "../../components/app-tab-bar/tab-bar-dock",
|
||||
"dev-training-entry": "../../components/dev-training-entry/index"
|
||||
}
|
||||
}
|
||||
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
@@ -0,0 +1,4 @@
|
||||
{
|
||||
"component": true,
|
||||
"usingComponents": {}
|
||||
}
|
||||
@@ -0,0 +1 @@
|
||||
<view class="crush-canvas-container data-v-ecab95cd"><canvas type="2d" id="crush" class="crush-canvas data-v-ecab95cd"></canvas></view>
|
||||
@@ -0,0 +1 @@
|
||||
.crush-canvas-container.data-v-ecab95cd{position:absolute;top:0;left:0;width:100%;height:100%;pointer-events:none;z-index:10}.crush-canvas.data-v-ecab95cd{display:block;width:100%;height:100%;background:transparent}
|
||||
File diff suppressed because one or more lines are too long
+4
@@ -0,0 +1,4 @@
|
||||
{
|
||||
"component": true,
|
||||
"usingComponents": {}
|
||||
}
|
||||
+1
@@ -0,0 +1 @@
|
||||
<view class="walker-canvas-container data-v-06b6a3c2"><block wx:if="{{r0}}"><canvas canvas-id="walker" id="walker" class="walker-canvas data-v-06b6a3c2" style="{{'width:' + a + ';' + ('height:' + b)}}" bindtouchstart="{{c}}" bindtouchmove="{{d}}" bindtouchend="{{e}}" bindtouchcancel="{{f}}"></canvas></block></view>
|
||||
+1
@@ -0,0 +1 @@
|
||||
.walker-canvas-container.data-v-06b6a3c2{width:100%;height:100%;position:absolute;top:0;left:0;right:0;bottom:0}.walker-canvas.data-v-06b6a3c2{display:block;width:100%;height:100%;background:transparent}
|
||||
File diff suppressed because one or more lines are too long
@@ -0,0 +1,7 @@
|
||||
{
|
||||
"navigationBarTitleText": "哑铃训练",
|
||||
"navigationBarBackgroundColor": "#f8fafc",
|
||||
"navigationBarTextStyle": "black",
|
||||
"backgroundColor": "#f8fafc",
|
||||
"usingComponents": {}
|
||||
}
|
||||
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
@@ -0,0 +1,7 @@
|
||||
{
|
||||
"navigationBarTitleText": "脚蹬器训练",
|
||||
"navigationBarBackgroundColor": "#f8fafc",
|
||||
"navigationBarTextStyle": "black",
|
||||
"backgroundColor": "#f8fafc",
|
||||
"usingComponents": {}
|
||||
}
|
||||
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
@@ -0,0 +1,9 @@
|
||||
{
|
||||
"navigationBarTitleText": "握力环训练",
|
||||
"navigationBarBackgroundColor": "#f8fafc",
|
||||
"navigationBarTextStyle": "black",
|
||||
"backgroundColor": "#f8fafc",
|
||||
"usingComponents": {
|
||||
"crush-canvas": "./components/crush-canvas"
|
||||
}
|
||||
}
|
||||
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
@@ -0,0 +1 @@
|
||||
"use strict";const e=require("../../common/vendor.js");Math||a();const a=()=>"./components/walker-canvas.js",o=e.defineComponent({__name:"metronome",setup(a){const o=[{id:"slow",bpm:110,label:"慢走",desc:"热身 · 恢复"},{id:"normal",bpm:130,label:"健走",desc:"日常 · 通勤"},{id:"brisk",bpm:150,label:"快走",desc:"提速 · 燃脂"}],n=e.ref(!1),c=e.ref("normal"),l=e.ref("crisp"),t=e.ref(null),u={crisp:{normal:"https://gz-1349751149.cos.ap-guangzhou.myqcloud.com/uploads/file/20260527/202605271539371ebe13672.mp3",accent:"https://gz-1349751149.cos.ap-guangzhou.myqcloud.com/uploads/file/20260527/202605271539376ff628472.mp3"},wood:{normal:"https://gz-1349751149.cos.ap-guangzhou.myqcloud.com/uploads/file/20260526/202605261051282a0a94508.mp3",accent:"https://gz-1349751149.cos.ap-guangzhou.myqcloud.com/uploads/file/20260526/202605261051282a0a94508.mp3"}},p=e.useMetronome({initialBpm:130,accentEvery:2,clickSrc:u.crisp.normal,accentSrc:u.crisp.accent,poolSize:4,onBeat:(e,a)=>{t.value&&t.value.triggerBeat&&t.value.triggerBeat()}}),s=e.computed(()=>p.isPlaying.value),r=e.computed(()=>p.bpm.value),d=e.computed(()=>p.accentEvery.value),i=e.computed(()=>6e4/p.bpm.value),m=()=>{p.isPlaying.value?(p.stop(),e.index.setKeepScreenOn({keepScreenOn:!1})):(p.start(),e.index.setKeepScreenOn({keepScreenOn:!0}))},v=()=>{if(n.value=!n.value,n.value)p.preload();else{const e=o.find(e=>e.bpm===p.bpm.value);c.value=e?e.id:null}},f=e=>{p.setBpm(p.bpm.value+e),c.value=null},g=e=>{l.value=e;const a=u[e];p.updateAudioSrc(a.normal,a.accent)},b=e.computed(()=>({"--beat-duration":`${i.value}ms`}));function S(){p.stop(),e.index.setKeepScreenOn({keepScreenOn:!1})}return e.onShow(()=>{p.preload()}),e.onHide(S),e.onUnload(S),e.onUnmounted(S),(a,u)=>e.e({a:e.sr(t,"a9d4f6cc-0",{k:"walkerCanvasRef"}),b:e.o(m),c:e.p({bpm:r.value,"is-playing":s.value}),d:"crisp"===l.value?1:"",e:e.o(e=>g("crisp")),f:"wood"===l.value?1:"",g:e.o(e=>g("wood")),h:e.f(o,(a,n,l)=>({a:e.t(a.label),b:e.t(a.bpm),c:e.t(a.desc),d:a.id,e:c.value===a.id?1:"",f:e.o(n=>(a=>{const n=o.find(e=>e.id===a);n&&(c.value=a,p.setBpm(n.bpm),p.isPlaying.value||(p.start(),e.index.setKeepScreenOn({keepScreenOn:!0})))})(a.id),a.id)})),i:e.t(n.value?"✕ 收起自定义":"⚙ 自定义节奏"),j:e.o(v),k:n.value},n.value?{l:e.o(e=>f(-5)),m:e.o(e=>f(-1)),n:e.t(r.value),o:e.o(e=>f(1)),p:e.o(e=>f(5)),q:e.f([2,3,4],(a,o,n)=>({a:e.t(a),b:a,c:d.value===a?1:"",d:e.o(e=>(e=>{p.setAccentEvery(e)})(a),a)}))}:{},{r:e.s(b.value)})}}),n=e._export_sfc(o,[["__scopeId","data-v-a9d4f6cc"]]);wx.createPage(n);
|
||||
@@ -0,0 +1,9 @@
|
||||
{
|
||||
"navigationBarTitleText": "耗糖节拍器",
|
||||
"navigationBarBackgroundColor": "#f8fafc",
|
||||
"navigationBarTextStyle": "black",
|
||||
"backgroundColor": "#f8fafc",
|
||||
"usingComponents": {
|
||||
"walker-canvas": "./components/walker-canvas"
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1 @@
|
||||
<view class="page data-v-a9d4f6cc" style="{{r}}"><view class="stage-canvas-wrapper data-v-a9d4f6cc"><walker-canvas wx:if="{{c}}" class="r data-v-a9d4f6cc" u-r="walkerCanvasRef" bindtogglePlay="{{b}}" u-i="a9d4f6cc-0" bind:__l="__l" u-p="{{c}}"/></view><view class="sound-selector data-v-a9d4f6cc"><view class="{{['sound-option', 'data-v-a9d4f6cc', d && 'active']}}" bindtap="{{e}}"><text class="sound-icon data-v-a9d4f6cc">✨</text><text class="sound-label data-v-a9d4f6cc">清脆</text></view><view class="{{['sound-option', 'data-v-a9d4f6cc', f && 'active']}}" bindtap="{{g}}"><text class="sound-icon data-v-a9d4f6cc">🪵</text><text class="sound-label data-v-a9d4f6cc">木鱼</text></view></view><view class="presets data-v-a9d4f6cc"><view wx:for="{{h}}" wx:for-item="p" wx:key="d" class="{{['preset', 'data-v-a9d4f6cc', p.e && 'active']}}" bindtap="{{p.f}}"><text class="preset-name data-v-a9d4f6cc">{{p.a}}</text><text class="preset-bpm data-v-a9d4f6cc">{{p.b}} BPM</text><text class="preset-desc data-v-a9d4f6cc">{{p.c}}</text></view></view><view class="custom-section data-v-a9d4f6cc"><view class="custom-header data-v-a9d4f6cc" bindtap="{{j}}"><text class="custom-title data-v-a9d4f6cc">{{i}}</text></view><view wx:if="{{k}}" class="custom-content data-v-a9d4f6cc"><view class="row data-v-a9d4f6cc"><text class="row-label data-v-a9d4f6cc">BPM</text><view class="bpm-stepper data-v-a9d4f6cc"><view class="step-btn data-v-a9d4f6cc" bindtap="{{l}}">−5</view><view class="step-btn data-v-a9d4f6cc" bindtap="{{m}}">−1</view><view class="step-val data-v-a9d4f6cc">{{n}}</view><view class="step-btn data-v-a9d4f6cc" bindtap="{{o}}">+1</view><view class="step-btn data-v-a9d4f6cc" bindtap="{{p}}">+5</view></view></view><view class="row data-v-a9d4f6cc"><text class="row-label data-v-a9d4f6cc">拍号</text><view class="meter-tabs data-v-a9d4f6cc"><view wx:for="{{q}}" wx:for-item="n" wx:key="b" class="{{['meter-tab', 'data-v-a9d4f6cc', n.c && 'active']}}" bindtap="{{n.d}}">{{n.a}}/4</view></view></view></view></view></view>
|
||||
@@ -0,0 +1 @@
|
||||
.page.data-v-a9d4f6cc{position:relative;min-height:100vh;box-sizing:border-box;padding:30rpx 28rpx 50rpx;background:#f8fafc;display:flex;flex-direction:column;align-items:center;gap:20rpx;color:#0f172a}.stage-canvas-wrapper.data-v-a9d4f6cc{width:100vw;margin-left:-28rpx;margin-right:-28rpx;flex-shrink:0;height:600rpx;display:flex;justify-content:center;align-items:center;margin-bottom:24rpx;position:relative}.sound-selector.data-v-a9d4f6cc{width:100%;display:flex;gap:14rpx;margin-bottom:20rpx}.sound-option.data-v-a9d4f6cc{flex:1;background:#fff;border:2rpx solid rgba(15,23,42,.06);border-radius:24rpx;padding:20rpx 16rpx;display:flex;align-items:center;justify-content:center;gap:10rpx;box-shadow:0 4rpx 12rpx rgba(15,23,42,.04);transition:all .18s}.sound-option .sound-icon.data-v-a9d4f6cc{font-size:32rpx}.sound-option .sound-label.data-v-a9d4f6cc{font-size:26rpx;font-weight:600;color:#475569;letter-spacing:1rpx}.sound-option.data-v-a9d4f6cc:active{transform:scale(.97)}.sound-option.active.data-v-a9d4f6cc{background:linear-gradient(135deg,#d1fae5,#a7f3d0);border-color:#10b981;box-shadow:0 8rpx 20rpx rgba(16,185,129,.18),inset 0 0 0 2rpx rgba(16,185,129,.4)}.sound-option.active .sound-label.data-v-a9d4f6cc{color:#047857}.presets.data-v-a9d4f6cc{width:100%;display:flex;gap:14rpx}.preset.data-v-a9d4f6cc{flex:1;background:#fff;border:2rpx solid rgba(15,23,42,.06);border-radius:24rpx;padding:26rpx 8rpx;display:flex;flex-direction:column;align-items:center;gap:8rpx;box-shadow:0 4rpx 12rpx rgba(15,23,42,.04);transition:all .18s}.preset .preset-name.data-v-a9d4f6cc{font-size:28rpx;font-weight:700;color:#0f172a;letter-spacing:2rpx}.preset .preset-bpm.data-v-a9d4f6cc{font-size:22rpx;color:#475569;font-weight:600;font-variant-numeric:tabular-nums}.preset .preset-desc.data-v-a9d4f6cc{font-size:18rpx;color:#94a3b8;letter-spacing:1rpx;margin-top:2rpx}.preset.data-v-a9d4f6cc:active{transform:scale(.97)}.preset.active.data-v-a9d4f6cc{background:#d1fae5;border-color:#10b981;box-shadow:0 8rpx 20rpx rgba(16,185,129,.18),inset 0 0 0 2rpx rgba(16,185,129,.4)}.preset.active .preset-name.data-v-a9d4f6cc,.preset.active .preset-bpm.data-v-a9d4f6cc{color:#047857}.preset.active .preset-desc.data-v-a9d4f6cc{color:#10b981}.custom-section.data-v-a9d4f6cc{width:100%;margin-top:12rpx}.custom-header.data-v-a9d4f6cc{width:100%;padding:16rpx 6rpx;display:flex;align-items:center;justify-content:center}.custom-header .custom-title.data-v-a9d4f6cc{font-size:22rpx;color:#94a3b8;letter-spacing:.5rpx}.custom-header .custom-title.data-v-a9d4f6cc:active{color:#475569}.custom-content.data-v-a9d4f6cc{width:100%;background:#fff;border:2rpx solid rgba(245,158,11,.25);border-radius:24rpx;box-shadow:0 6rpx 18rpx rgba(245,158,11,.08);padding:20rpx 24rpx 22rpx;display:flex;flex-direction:column;gap:16rpx;margin-top:8rpx}.custom-warn.data-v-a9d4f6cc{display:flex;align-items:center;gap:8rpx;margin-bottom:4rpx}.custom-warn .warn-dot.data-v-a9d4f6cc{font-size:18rpx;color:#f59e0b}.custom-warn .warn-text.data-v-a9d4f6cc{font-size:22rpx;color:#b45309;letter-spacing:.5rpx;font-weight:600}.row.data-v-a9d4f6cc{display:flex;align-items:center;justify-content:space-between;gap:12rpx}.row .row-label.data-v-a9d4f6cc{font-size:24rpx;color:#475569;font-weight:600;letter-spacing:1rpx;flex-shrink:0;width:70rpx}.bpm-stepper.data-v-a9d4f6cc{display:flex;align-items:center;gap:6rpx;flex:1;justify-content:flex-end}.bpm-stepper .step-btn.data-v-a9d4f6cc{min-width:56rpx;height:52rpx;line-height:52rpx;text-align:center;font-size:22rpx;color:#475569;background:#f1f5f9;border-radius:10rpx;font-weight:600;padding:0 10rpx;font-variant-numeric:tabular-nums}.bpm-stepper .step-btn.data-v-a9d4f6cc:active{background:#e2e8f0;transform:scale(.94)}.bpm-stepper .step-val.data-v-a9d4f6cc{min-width:84rpx;height:52rpx;line-height:52rpx;text-align:center;font-size:30rpx;font-weight:800;color:#0f172a;font-variant-numeric:tabular-nums;background:#fef3c7;border-radius:10rpx}.meter-tabs.data-v-a9d4f6cc{display:flex;gap:8rpx}.meter-tabs .meter-tab.data-v-a9d4f6cc{height:52rpx;line-height:52rpx;padding:0 18rpx;font-size:22rpx;color:#475569;background:#f1f5f9;border-radius:10rpx;font-weight:600;letter-spacing:1rpx}.meter-tabs .meter-tab.active.data-v-a9d4f6cc{background:#f59e0b;color:#fff;box-shadow:0 4rpx 10rpx rgba(245,158,11,.3)}.meter-tabs .meter-tab.data-v-a9d4f6cc:active{transform:scale(.94)}.bottom-row.data-v-a9d4f6cc{width:100%;margin-top:6rpx;display:flex;align-items:center;justify-content:space-between;padding:0 6rpx}.bottom-link.data-v-a9d4f6cc{font-size:22rpx;color:#94a3b8;letter-spacing:.5rpx;padding:8rpx 4rpx}.bottom-link.data-v-a9d4f6cc:active{color:#475569}.bottom-hint.data-v-a9d4f6cc{font-size:22rpx;color:#94a3b8;letter-spacing:.5rpx}
|
||||
File diff suppressed because one or more lines are too long
@@ -0,0 +1,7 @@
|
||||
{
|
||||
"navigationBarTitleText": "瑜伽环训练",
|
||||
"navigationBarBackgroundColor": "#f8fafc",
|
||||
"navigationBarTextStyle": "black",
|
||||
"backgroundColor": "#f8fafc",
|
||||
"usingComponents": {}
|
||||
}
|
||||
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
+1
@@ -0,0 +1 @@
|
||||
"use strict";const t=require("../../../../common/vendor.js"),e={name:"UniIcons",emits:["click"],props:{type:{type:String,default:""},color:{type:String,default:"#333333"},size:{type:[Number,String],default:16},customPrefix:{type:String,default:""},fontFamily:{type:String,default:""}},data:()=>({icons:t.fontData}),computed:{unicode(){let t=this.icons.find(t=>t.font_class===this.type);return t?t.unicode:""},iconSize(){return"number"==typeof(t=this.size)||/^[0-9]*$/g.test(t)?t+"px":t;var t},styleObj(){return""!==this.fontFamily?`color: ${this.color}; font-size: ${this.iconSize}; font-family: ${this.fontFamily};`:`color: ${this.color}; font-size: ${this.iconSize};`}},methods:{_onClick(){this.$emit("click")}}};const i=t._export_sfc(e,[["render",function(e,i,o,n,s,c){return{a:t.s(c.styleObj),b:t.n("uniui-"+o.type),c:t.n(o.customPrefix),d:t.n(o.customPrefix?o.type:""),e:t.o((...t)=>c._onClick&&c._onClick(...t))}}]]);wx.createComponent(i);
|
||||
Vendored
+4
@@ -0,0 +1,4 @@
|
||||
{
|
||||
"component": true,
|
||||
"usingComponents": {}
|
||||
}
|
||||
Vendored
+1
@@ -0,0 +1 @@
|
||||
<text style="{{a}}" class="{{['uni-icons', b, c, d]}}" bindtap="{{e}}"><slot></slot></text>
|
||||
Vendored
+1
File diff suppressed because one or more lines are too long
@@ -1,6 +1,6 @@
|
||||
import App from './App'
|
||||
|
||||
var baseUrl = 'https://admin.zhenyangtang.com.cn/'
|
||||
var baseUrl = 'https://xt.zhenyangtang.com.cn/'
|
||||
|
||||
function joinApiUrl(base, path) {
|
||||
const b = String(base || '').replace(/\/+$/, '')
|
||||
|
||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user