# Appointment type UI changes User clarification applied: this change displays the existing appointment types. It does not add an offline / 线下面诊 option or alter the default video selection. ## Delivered - `consumer/prescription/guahao.vue`: explicit 挂号类型 column and edit-field label, using the shared description helper. - `first_visit/my_patients/index.vue`: 挂号类型 column; patients without an appointment show `—`. - Diagnosis desktop and H5: each booking displays its own type. Desktop multi-booking type entries include doctor and time so types remain attributable. The fallback row preserves appointment type. - Appointment desktop and H5: 面诊类型 in the list/card and detail view. Non-video bookings open 图文沟通. Chat signature requests and the chat dialog receive the selected appointment ID. - Shared booking drawer: 挂号类型 label, with the existing video and text options retained. - Video QR and video observation entries reject non-video bookings. Diagnosis selection finds an active video booking for video-only actions, retaining its actual appointment ID, type, doctor, and time. Normal diagnosis QR continues to support any active booking, including text. - H5 type labels have enough width; multi-booking cards wrap type onto its own line. ## Verification - Vue compiler SFC parse, script compilation, and template compilation passed for all seven edited Vue files. - Executed the actual diagnosis helper declarations extracted via the TypeScript AST for desktop and H5. Both passed: unbooked patient has no video; active text keeps normal diagnosis QR but has no video; legacy null type preserves video compatibility; mixed text / completed video / active video selects the active video appointment and its doctor, ID, and time; phone is not eligible for video. - `git diff --check` passed for the edited UI files. - No live API calls, QR generation requests, or video calls were made. Browser visual verification and integrated checks remain with the parent task. ## Coordination notes - Depends on the parent task's `canAppointmentVideoCall` utility and backend appointment type fields / appointment ID enforcement. - Inspected `DiagnosisLogic::generateMiniProgramQrcode`: login QR explicitly uses `doctor_id` as the scene ID; `appointment_id` is not consumed. Existing QR payload semantics are preserved. The selected video booking supplies the correct doctor. - `.trellis/` is absent in this checkout, as noted by the parent task. No subagents were spawned.