This commit is contained in:
Your Name
2026-08-11 17:41:36 +08:00
parent cfe4c82c90
commit 03fe4ddf9d
18771 changed files with 3617239 additions and 0 deletions
@@ -0,0 +1,150 @@
"use strict";
const common_vendor = require("../../common/vendor.js");
if (!Array) {
const _easycom_uni_icons2 = common_vendor.resolveComponent("uni-icons");
_easycom_uni_icons2();
}
const _easycom_uni_icons = () => "../../uni_modules/uni-icons/components/uni-icons/uni-icons.js";
if (!Math) {
_easycom_uni_icons();
}
const _sfc_main = {
__name: "Card",
setup(__props) {
const { proxy } = common_vendor.getCurrentInstance();
const cardList = common_vendor.ref([]);
const loading = common_vendor.ref(false);
common_vendor.onMounted(() => {
loadCardList();
});
common_vendor.onShow(() => {
loadCardList();
});
const loadCardList = async () => {
var _a;
loading.value = true;
try {
const token = common_vendor.index.getStorageSync("token");
if (!token) {
common_vendor.index.showToast({ title: "请先登录", icon: "none" });
return;
}
const userData = common_vendor.index.getStorageSync("userData");
const patientId = (_a = userData == null ? void 0 : userData.diagnosis) == null ? void 0 : _a.patient_id;
if (!patientId) {
return;
}
const res = await proxy.apiUrl({
url: "/api/tcm/getCardList",
method: "GET",
data: {
patient_id: patientId
}
});
if (res.code === 1) {
cardList.value = res.data || [];
} else {
common_vendor.index.showToast({ title: res.msg || "获取失败", icon: "none" });
}
} catch (err) {
common_vendor.index.__f__("error", "at pages/Card/Card.vue:139", "加载就诊卡列表失败:", err);
} finally {
loading.value = false;
}
};
const viewCardDetail = (card) => {
common_vendor.index.navigateTo({
url: `/pages/Card/edit_card?id=${card.id}`
});
};
const viewDailyRecord = (card) => {
const url = `/tongji/pages/index?diagnosis_id=${card.id}&patient_id=${card.patient_id || ""}&patient_name=${encodeURIComponent(card.patient_name || "")}&age=${card.age || ""}&gender=${card.gender || ""}`;
common_vendor.index.navigateTo({ url });
};
const createCard = () => {
const token = common_vendor.index.getStorageSync("token");
if (!token) {
common_vendor.index.showToast({ title: "请先登录", icon: "none" });
return;
}
common_vendor.index.navigateTo({
url: "/pages/Card/edit_card?add=1"
});
};
const getStatusText = (status) => {
return status === 1 ? "启用" : "禁用";
};
const getStatusClass = (status) => {
return status === 1 ? "status-confirmed" : "status-pending";
};
const diagnosisTypeMap = {
"first_visit": "初诊",
"follow_up": "复诊",
"consultation": "会诊"
};
const syndromeTypeMap = {
"qi_deficiency": "气虚",
"blood_deficiency": "血虚",
"yin_deficiency": "阴虚",
"yang_deficiency": "阳虚",
"qi_stagnation": "气滞",
"blood_stasis": "血瘀",
"phlegm_dampness": "痰湿",
"damp_heat": "湿热",
"cold_dampness": "寒湿",
"wind_cold": "风寒",
"wind_heat": "风热"
};
const getDiagnosisTypeName = (type) => {
return diagnosisTypeMap[type] || type || "-";
};
const getSyndromeTypeName = (type) => {
return syndromeTypeMap[type] || type || "-";
};
const formatDate = (timestamp) => {
if (!timestamp)
return "-";
const date = new Date(timestamp * 1e3);
const year = date.getFullYear();
const month = String(date.getMonth() + 1).padStart(2, "0");
const day = String(date.getDate()).padStart(2, "0");
return `${year}-${month}-${day}`;
};
return (_ctx, _cache) => {
return common_vendor.e({
a: common_vendor.f(cardList.value, (card, k0, i0) => {
return {
a: common_vendor.t(card.id),
b: common_vendor.t(card.status_desc || getStatusText(card.status)),
c: common_vendor.n(getStatusClass(card.status)),
d: common_vendor.t(card.patient_name || "-"),
e: common_vendor.t(card.gender_desc || "-"),
f: common_vendor.t(card.age),
g: common_vendor.t(getDiagnosisTypeName(card.diagnosis_type)),
h: common_vendor.t(getSyndromeTypeName(card.syndrome_type)),
i: common_vendor.t(card.diagnosis_date_text || formatDate(card.diagnosis_date)),
j: common_vendor.t(card.create_time || "-"),
k: common_vendor.o(($event) => viewDailyRecord(card), card.id),
l: common_vendor.o(($event) => viewCardDetail(card), card.id),
m: card.id,
n: common_vendor.o(($event) => viewCardDetail(card), card.id)
};
}),
b: !loading.value && cardList.value.length === 0
}, !loading.value && cardList.value.length === 0 ? {
c: common_vendor.p({
type: "wallet",
size: "80",
color: "#1890ff"
}),
d: common_vendor.o(createCard, "df")
} : {}, {
e: loading.value
}, loading.value ? {} : {});
};
}
};
const MiniProgramPage = /* @__PURE__ */ common_vendor._export_sfc(_sfc_main, [["__scopeId", "data-v-f80331d8"]]);
_sfc_main.__runtimeHooks = 2;
wx.createPage(MiniProgramPage);
//# sourceMappingURL=../../../.sourcemap/mp-weixin/pages/Card/Card.js.map
@@ -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-f80331d8"><view class="card-list data-v-f80331d8"><view wx:for="{{a}}" wx:for-item="card" wx:key="m" class="card-item data-v-f80331d8" bindtap="{{card.n}}"><view class="card-header data-v-f80331d8"><view class="card-id data-v-f80331d8"><text class="label data-v-f80331d8">诊单编号:</text><text class="value data-v-f80331d8">{{card.a}}</text></view><view class="{{['data-v-f80331d8', 'status-badge', card.c]}}">{{card.b}}</view></view><view class="card-info data-v-f80331d8"><view class="info-row data-v-f80331d8"><text class="info-label data-v-f80331d8">患者姓名:</text><text class="info-value data-v-f80331d8">{{card.d}}</text></view><view class="info-row data-v-f80331d8"><text class="info-label data-v-f80331d8">性别年龄:</text><text class="info-value data-v-f80331d8">{{card.e}} / {{card.f}}岁</text></view><view class="info-row data-v-f80331d8"><text class="info-label data-v-f80331d8">诊断类型:</text><text class="info-value data-v-f80331d8">{{card.g}}</text></view><view class="info-row data-v-f80331d8"><text class="info-label data-v-f80331d8">证型:</text><text class="info-value data-v-f80331d8">{{card.h}}</text></view></view><view class="card-footer data-v-f80331d8"><view class="time-info data-v-f80331d8"><text class="time-label data-v-f80331d8">诊断日期:</text><text class="time-value data-v-f80331d8">{{card.i}}</text></view><view class="time-info data-v-f80331d8"><text class="time-label data-v-f80331d8">创建时间:</text><text class="time-value data-v-f80331d8">{{card.j}}</text></view></view><view class="card-actions data-v-f80331d8"><view class="card-action-btn primary data-v-f80331d8" catchtap="{{card.k}}"><text class="card-action-icon data-v-f80331d8">📈</text><text class="card-action-text data-v-f80331d8">日常记录</text></view><view class="card-action-btn data-v-f80331d8" catchtap="{{card.l}}"><text class="card-action-icon data-v-f80331d8">📝</text><text class="card-action-text data-v-f80331d8">查看 / 编辑</text></view></view></view><view wx:if="{{b}}" class="empty-state data-v-f80331d8"><uni-icons wx:if="{{c}}" class="data-v-f80331d8" u-i="f80331d8-0" bind:__l="__l" u-p="{{c}}"></uni-icons><text class="empty-text data-v-f80331d8">暂无就诊卡</text><view class="add-card-btn data-v-f80331d8" bindtap="{{d}}">新建就诊卡</view></view><view wx:if="{{e}}" class="loading-state data-v-f80331d8"><text class="loading-text data-v-f80331d8">加载中...</text></view></view></view>
@@ -0,0 +1,189 @@
/* 适老化设计:50-80岁 - 大字号、高对比、大触控区 */
.card-container.data-v-f80331d8 {
min-height: 100vh;
background: linear-gradient(180deg, #e8f0fa 0%, #ffffff 100%);
padding-bottom: 56rpx;
}
.header.data-v-f80331d8 {
background: #ffffff;
padding: 48rpx 40rpx;
box-shadow: 0 2rpx 12rpx rgba(0, 0, 0, 0.06);
}
.header .header-title.data-v-f80331d8 {
font-size: 48rpx;
font-weight: bold;
color: #1890ff;
}
.card-list.data-v-f80331d8 {
padding: 40rpx;
}
.card-item.data-v-f80331d8 {
background: #ffffff;
border-radius: 28rpx;
padding: 44rpx;
margin-bottom: 36rpx;
box-shadow: 0 4rpx 20rpx rgba(0, 0, 0, 0.08);
transition: all 0.3s;
min-height: 200rpx;
}
.card-item.data-v-f80331d8:active {
transform: scale(0.98);
box-shadow: 0 2rpx 12rpx rgba(0, 0, 0, 0.1);
}
.card-header.data-v-f80331d8 {
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-f80331d8 {
font-size: 34rpx;
color: #555;
}
.card-id .value.data-v-f80331d8 {
font-size: 40rpx;
font-weight: bold;
color: #1a1a1a;
}
.status-badge.data-v-f80331d8 {
padding: 12rpx 28rpx;
border-radius: 28rpx;
font-size: 32rpx;
font-weight: 500;
}
.status-badge.status-confirmed.data-v-f80331d8 {
background: #f6ffed;
color: #204e2b;
border: 4rpx solid #204e2b;
}
.status-badge.status-pending.data-v-f80331d8 {
background: #fff7e6;
color: #fa8c16;
border: 4rpx solid #ffd591;
}
.card-info.data-v-f80331d8 {
margin-bottom: 28rpx;
}
.info-row.data-v-f80331d8 {
display: flex;
align-items: center;
margin-bottom: 24rpx;
}
.info-row .info-label.data-v-f80331d8 {
font-size: 34rpx;
color: #555;
min-width: 200rpx;
}
.info-row .info-value.data-v-f80331d8 {
font-size: 36rpx;
color: #1a1a1a;
font-weight: 500;
}
.card-footer.data-v-f80331d8 {
padding-top: 28rpx;
border-top: 4rpx solid #e8eaed;
}
.card-actions.data-v-f80331d8 {
display: flex;
gap: 20rpx;
margin-top: 28rpx;
padding-top: 28rpx;
border-top: 4rpx solid #e8eaed;
}
.card-action-btn.data-v-f80331d8 {
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 0.2s;
}
.card-action-btn.data-v-f80331d8:active {
transform: scale(0.98);
opacity: 0.85;
}
.card-action-btn.primary.data-v-f80331d8 {
background: linear-gradient(135deg, #1890ff, #0ea5a4);
border-color: transparent;
}
.card-action-btn.primary .card-action-icon.data-v-f80331d8,
.card-action-btn.primary .card-action-text.data-v-f80331d8 {
color: #ffffff;
}
.card-action-icon.data-v-f80331d8 {
font-size: 36rpx;
color: #1890ff;
}
.card-action-text.data-v-f80331d8 {
font-size: 30rpx;
color: #1890ff;
font-weight: 500;
}
.time-info.data-v-f80331d8 {
display: flex;
align-items: center;
margin-bottom: 20rpx;
}
.time-info .time-label.data-v-f80331d8 {
font-size: 30rpx;
color: #555;
min-width: 180rpx;
}
.time-info .time-value.data-v-f80331d8 {
font-size: 32rpx;
color: #555;
}
.view-count.data-v-f80331d8 {
display: flex;
align-items: center;
margin-top: 12rpx;
}
.view-count .count-icon.data-v-f80331d8 {
font-size: 34rpx;
margin-right: 12rpx;
}
.view-count .count-text.data-v-f80331d8 {
font-size: 30rpx;
color: #555;
}
.empty-state.data-v-f80331d8 {
display: flex;
flex-direction: column;
align-items: center;
justify-content: center;
padding: 160rpx 0;
}
.empty-state .empty-icon.data-v-f80331d8 {
font-size: 140rpx;
margin-bottom: 40rpx;
}
.empty-state .empty-text.data-v-f80331d8 {
font-size: 40rpx;
color: #555;
margin-bottom: 56rpx;
}
.add-card-btn.data-v-f80331d8 {
padding: 36rpx 88rpx;
background: #1890ff;
color: #ffffff;
font-size: 40rpx;
font-weight: 500;
border-radius: 56rpx;
min-height: 100rpx;
}
.loading-state.data-v-f80331d8 {
display: flex;
justify-content: center;
padding: 120rpx 0;
}
.loading-state .loading-text.data-v-f80331d8 {
font-size: 36rpx;
color: #555;
}
@@ -0,0 +1,46 @@
"use strict";
const common_vendor = require("../../common/vendor.js");
const _sfc_main = {
__name: "contact",
setup(__props) {
const { proxy } = common_vendor.getCurrentInstance();
const data = common_vendor.ref({});
const loading = common_vendor.ref(false);
const type = common_vendor.ref("");
common_vendor.onMounted(() => {
loadCardList();
});
const loadCardList = async () => {
loading.value = true;
try {
const pages = getCurrentPages();
const currentPage = pages[pages.length - 1];
type.value = currentPage.options.type;
const res = await proxy.apiUrl({
url: "/api/index/policy",
method: "GET",
data: {
type: type.value
}
});
data.value = res.data;
common_vendor.index.setNavigationBarTitle({
title: res.data.title
});
} catch (err) {
common_vendor.index.__f__("error", "at pages/Card/contact.vue:54", "加载就诊卡列表失败:", err);
} finally {
loading.value = false;
}
};
return (_ctx, _cache) => {
return {
a: common_vendor.t(data.value.title),
b: data.value.content
};
};
}
};
const MiniProgramPage = /* @__PURE__ */ common_vendor._export_sfc(_sfc_main, [["__scopeId", "data-v-9c9e5aa4"]]);
wx.createPage(MiniProgramPage);
//# sourceMappingURL=../../../.sourcemap/mp-weixin/pages/Card/contact.js.map
@@ -0,0 +1,4 @@
{
"navigationBarTitleText": "服务",
"usingComponents": {}
}
@@ -0,0 +1 @@
<view class="card-container data-v-9c9e5aa4"><view class="header data-v-9c9e5aa4"><text class="header-title data-v-9c9e5aa4">{{a}}</text></view><view class="card-list data-v-9c9e5aa4"><rich-text class="data-v-9c9e5aa4" nodes="{{b}}"/></view></view>
@@ -0,0 +1,136 @@
.card-container.data-v-9c9e5aa4 {
min-height: 100vh;
background: linear-gradient(180deg, #f0f7ff 0%, #ffffff 100%);
padding-bottom: 40rpx;
}
.header.data-v-9c9e5aa4 {
background: #ffffff;
padding: 40rpx 30rpx;
box-shadow: 0 2rpx 8rpx rgba(0, 0, 0, 0.05);
}
.header .header-title.data-v-9c9e5aa4 {
font-size: 40rpx;
font-weight: bold;
color: #1890ff;
}
.card-list.data-v-9c9e5aa4 {
padding: 30rpx;
}
.card-item.data-v-9c9e5aa4 {
background: #ffffff;
border-radius: 20rpx;
padding: 30rpx;
margin-bottom: 24rpx;
box-shadow: 0 4rpx 12rpx rgba(0, 0, 0, 0.08);
transition: all 0.3s;
}
.card-item.data-v-9c9e5aa4:active {
transform: scale(0.98);
box-shadow: 0 2rpx 8rpx rgba(0, 0, 0, 0.1);
}
.card-header.data-v-9c9e5aa4 {
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-9c9e5aa4 {
font-size: 28rpx;
color: #666666;
}
.card-id .value.data-v-9c9e5aa4 {
font-size: 32rpx;
font-weight: bold;
color: #333333;
}
.status-badge.data-v-9c9e5aa4 {
padding: 8rpx 20rpx;
border-radius: 20rpx;
font-size: 24rpx;
font-weight: 500;
}
.status-badge.status-confirmed.data-v-9c9e5aa4 {
background: #f6ffed;
color: #52c41a;
border: 2rpx solid #b7eb8f;
}
.status-badge.status-pending.data-v-9c9e5aa4 {
background: #fff7e6;
color: #fa8c16;
border: 2rpx solid #ffd591;
}
.card-info.data-v-9c9e5aa4 {
margin-bottom: 20rpx;
}
.info-row.data-v-9c9e5aa4 {
display: flex;
align-items: center;
margin-bottom: 16rpx;
}
.info-row .info-label.data-v-9c9e5aa4 {
font-size: 28rpx;
color: #666666;
min-width: 160rpx;
}
.info-row .info-value.data-v-9c9e5aa4 {
font-size: 30rpx;
color: #333333;
font-weight: 500;
}
.card-footer.data-v-9c9e5aa4 {
padding-top: 20rpx;
border-top: 2rpx solid #f0f0f0;
}
.time-info.data-v-9c9e5aa4 {
display: flex;
align-items: center;
margin-bottom: 12rpx;
}
.time-info .time-label.data-v-9c9e5aa4 {
font-size: 24rpx;
color: #999999;
min-width: 140rpx;
}
.time-info .time-value.data-v-9c9e5aa4 {
font-size: 26rpx;
color: #666666;
}
.view-count.data-v-9c9e5aa4 {
display: flex;
align-items: center;
margin-top: 8rpx;
}
.view-count .count-icon.data-v-9c9e5aa4 {
font-size: 28rpx;
margin-right: 8rpx;
}
.view-count .count-text.data-v-9c9e5aa4 {
font-size: 24rpx;
color: #999999;
}
.empty-state.data-v-9c9e5aa4 {
display: flex;
flex-direction: column;
align-items: center;
justify-content: center;
padding: 120rpx 0;
}
.empty-state .empty-icon.data-v-9c9e5aa4 {
font-size: 120rpx;
margin-bottom: 30rpx;
}
.empty-state .empty-text.data-v-9c9e5aa4 {
font-size: 32rpx;
color: #999999;
}
.loading-state.data-v-9c9e5aa4 {
display: flex;
justify-content: center;
padding: 80rpx 0;
}
.loading-state .loading-text.data-v-9c9e5aa4 {
font-size: 28rpx;
color: #999999;
}
@@ -0,0 +1,857 @@
"use strict";
const common_vendor = require("../../common/vendor.js");
if (!Array) {
const _easycom_uni_icons2 = common_vendor.resolveComponent("uni-icons");
_easycom_uni_icons2();
}
const _easycom_uni_icons = () => "../../uni_modules/uni-icons/components/uni-icons/uni-icons.js";
if (!Math) {
_easycom_uni_icons();
}
const _sfc_main = {
__name: "edit_card",
setup(__props) {
const { proxy } = common_vendor.getCurrentInstance();
const loading = common_vendor.ref(false);
const submitting = common_vendor.ref(false);
const agreedToTerms = common_vendor.ref(true);
const showDatePicker = common_vendor.ref(false);
const diagnosisId = common_vendor.ref(null);
const patientId = common_vendor.ref(null);
const isAddMode = common_vendor.ref(false);
const returnUrl = common_vendor.ref("");
const formData = common_vendor.ref({
patient_name: "",
id_card: "",
gender: 1,
age: "",
// 生命体征
height: "",
weight: "",
systolic_pressure: "",
diastolic_pressure: "",
fasting_blood_sugar: "",
// 主诉
diabetes_discovery_year: "",
local_hospital_diagnosis: [],
local_hospital_name: "",
local_hospital_visit_date: "",
// 诊断信息
diagnosis_date: "",
diagnosis_type: "",
syndrome_type: "",
diabetes_type: "",
// 现病史
appetite: "",
water_intake: "",
diet_condition: [],
weight_change: "",
body_feeling: [],
sleep_condition: [],
eye_condition: [],
head_feeling: [],
sweat_condition: [],
skin_condition: [],
urine_condition: [],
stool_condition: [],
kidney_condition: [],
fatty_liver_degree: "",
// 既往史
past_history: [],
trauma_history: 0,
surgery_history: 0,
allergy_history: 0,
family_history: 0,
pregnancy_history: 0,
// 临床信息
symptoms: "",
tongue_coating: "",
tongue_images: [],
report_files: [],
pulse: "",
treatment_principle: "",
prescription: "",
doctor_advice: "",
remark: ""
});
const diagnosisTypeOptions = common_vendor.ref([]);
const syndromeTypeOptions = common_vendor.ref([]);
const diabetesTypeOptions = common_vendor.ref([]);
const pastHistoryOptions = common_vendor.ref([]);
const appetiteOptions = common_vendor.ref([]);
const waterIntakeOptions = common_vendor.ref([]);
const dietConditionOptions = common_vendor.ref([]);
const weightChangeOptions = common_vendor.ref([]);
const bodyFeelingOptions = common_vendor.ref([]);
const sleepConditionOptions = common_vendor.ref([]);
const eyeConditionOptions = common_vendor.ref([]);
const headFeelingOptions = common_vendor.ref([]);
const sweatConditionOptions = common_vendor.ref([]);
const skinConditionOptions = common_vendor.ref([]);
const urineConditionOptions = common_vendor.ref([]);
const stoolConditionOptions = common_vendor.ref([]);
const kidneyConditionOptions = common_vendor.ref([]);
const fattyLiverDegreeOptions = common_vendor.ref([]);
const datePickerValue = common_vendor.ref([0, 0, 0]);
const yearRange = common_vendor.ref([]);
const monthRange = common_vendor.ref(Array.from({ length: 12 }, (_, i) => i + 1));
const dayRange = common_vendor.ref(Array.from({ length: 31 }, (_, i) => i + 1));
common_vendor.onMounted(() => {
loadDictOptions();
loadCardDetail();
initDatePicker();
});
const loadDictOptions = async () => {
try {
const dictTypes = [
"diagnosis_type",
"syndrome_type",
"diabetes_type",
"past_history",
"appetite",
"water_intake",
"diet_condition",
"weight_change",
"body_feeling",
"sleep_condition",
"eye_condition",
"head_feeling",
"sweat_condition",
"skin_condition",
"urine_condition",
"stool_condition",
"kidney_condition",
"fatty_liver_degree"
];
const results = await Promise.all(
dictTypes.map(
(type) => proxy.apiUrl({
url: "/api/tcm/getDict",
method: "GET",
data: { type }
})
)
);
results.forEach((res, index) => {
const type = dictTypes[index];
if (res.code === 1 && res.data) {
const data = res.data[type] || [];
const options = Array.isArray(data) ? data : Object.entries(data).map(([key, value]) => ({
value: key,
name: value
}));
switch (type) {
case "diagnosis_type":
diagnosisTypeOptions.value = options;
break;
case "syndrome_type":
syndromeTypeOptions.value = options;
break;
case "diabetes_type":
diabetesTypeOptions.value = options;
break;
case "past_history":
pastHistoryOptions.value = options;
break;
case "appetite":
appetiteOptions.value = options;
break;
case "water_intake":
waterIntakeOptions.value = options;
break;
case "diet_condition":
dietConditionOptions.value = options;
break;
case "weight_change":
weightChangeOptions.value = options;
break;
case "body_feeling":
bodyFeelingOptions.value = options;
break;
case "sleep_condition":
sleepConditionOptions.value = options;
break;
case "eye_condition":
eyeConditionOptions.value = options;
break;
case "head_feeling":
headFeelingOptions.value = options;
break;
case "sweat_condition":
sweatConditionOptions.value = options;
break;
case "skin_condition":
skinConditionOptions.value = options;
break;
case "urine_condition":
urineConditionOptions.value = options;
break;
case "stool_condition":
stoolConditionOptions.value = options;
break;
case "kidney_condition":
kidneyConditionOptions.value = options;
break;
case "fatty_liver_degree":
fattyLiverDegreeOptions.value = options;
break;
}
}
});
} catch (err) {
common_vendor.index.__f__("error", "at pages/Card/edit_card.vue:979", "加载字典数据失败:", err);
}
};
const initDatePicker = () => {
const currentYear = (/* @__PURE__ */ new Date()).getFullYear();
yearRange.value = Array.from({ length: 100 }, (_, i) => currentYear - 50 + i);
};
const initDatePickerValue = (dateStr) => {
if (!dateStr)
return;
try {
const parts = dateStr.split("-");
if (parts.length !== 3)
return;
const year = parseInt(parts[0]);
const month = parseInt(parts[1]);
const day = parseInt(parts[2]);
const yearIndex = yearRange.value.indexOf(year);
if (yearIndex === -1)
return;
const monthIndex = month - 1;
const dayIndex = day - 1;
datePickerValue.value = [yearIndex, monthIndex, dayIndex];
} catch (err) {
common_vendor.index.__f__("error", "at pages/Card/edit_card.vue:1014", "初始化日期选择器失败:", err);
}
};
const loadCardDetail = async () => {
var _a;
loading.value = true;
try {
const pages = getCurrentPages();
const currentPage = pages[pages.length - 1];
const options = currentPage.options || {};
diagnosisId.value = options.id;
isAddMode.value = options.add === "1" || options.add === 1;
if (options.returnUrl) {
try {
returnUrl.value = decodeURIComponent(String(options.returnUrl));
} catch (e) {
returnUrl.value = String(options.returnUrl);
}
}
const userData = common_vendor.index.getStorageSync("userData");
patientId.value = (_a = userData == null ? void 0 : userData.diagnosis) == null ? void 0 : _a.patient_id;
if (isAddMode.value) {
const token = common_vendor.index.getStorageSync("token");
if (!token) {
common_vendor.index.showToast({ title: "请先登录", icon: "none" });
setTimeout(() => common_vendor.index.redirectTo({ url: "/tongji/pages/weekly" }), 1500);
return;
}
loading.value = false;
return;
}
if (!patientId.value) {
common_vendor.index.showToast({ title: "请先登录", icon: "none" });
setTimeout(() => common_vendor.index.redirectTo({ url: "/tongji/pages/weekly" }), 1500);
return;
}
if (!diagnosisId.value) {
common_vendor.index.showToast({ title: "诊单ID不存在", icon: "none" });
setTimeout(() => common_vendor.index.navigateBack(), 1500);
return;
}
const res = await proxy.apiUrl({
url: "/api/tcm/diagnosisDetail",
method: "GET",
data: {
id: diagnosisId.value,
user_id: patientId.value
}
});
if (res.code === 1) {
const diagnosis = res.data;
const arrayFields = ["diet_condition", "body_feeling", "sleep_condition", "eye_condition", "head_feeling", "sweat_condition", "skin_condition", "urine_condition", "stool_condition", "kidney_condition", "past_history", "local_hospital_diagnosis", "report_files", "tongue_images"];
arrayFields.forEach((field) => {
if (typeof diagnosis[field] === "string" && diagnosis[field]) {
diagnosis[field] = diagnosis[field].split(",");
} else if (!diagnosis[field]) {
diagnosis[field] = [];
}
});
formData.value = diagnosis;
const ddy = diagnosis.diabetes_discovery_year;
formData.value.diabetes_discovery_year = ddy == null || ddy === "" ? "" : String(ddy);
if (!diagnosis.local_hospital_visit_date && diagnosis.diagnosis_date) {
formData.value.local_hospital_visit_date = diagnosis.diagnosis_date;
}
if (formData.value.local_hospital_visit_date) {
initDatePickerValue(formData.value.local_hospital_visit_date);
}
} else {
common_vendor.index.showToast({ title: res.msg || "获取失败", icon: "none" });
setTimeout(() => common_vendor.index.navigateBack(), 1500);
}
} catch (err) {
common_vendor.index.__f__("error", "at pages/Card/edit_card.vue:1109", "加载诊单详情失败:", err);
common_vendor.index.showToast({ title: "加载失败", icon: "none" });
setTimeout(() => common_vendor.index.navigateBack(), 1500);
} finally {
loading.value = false;
}
};
const toggleMultiCheckbox = (field, value) => {
const index = formData.value[field].indexOf(value);
if (index > -1) {
formData.value[field].splice(index, 1);
} else {
formData.value[field].push(value);
}
};
const calculateAgeFromIdCard = (idCard) => {
if (!idCard || idCard.length !== 18) {
return "";
}
const year = parseInt(idCard.substring(6, 10));
const month = parseInt(idCard.substring(10, 12));
const day = parseInt(idCard.substring(12, 14));
const today = /* @__PURE__ */ new Date();
const currentYear = today.getFullYear();
const currentMonth = today.getMonth() + 1;
const currentDay = today.getDate();
let age = currentYear - year;
if (currentMonth < month || currentMonth === month && currentDay < day) {
age--;
}
return age;
};
const handleIdCardChange = () => {
if (formData.value.id_card && formData.value.id_card.length === 18) {
const age = calculateAgeFromIdCard(formData.value.id_card);
if (age) {
formData.value.age = age;
}
}
};
const onDateChange = (e) => {
datePickerValue.value = e.detail.value;
};
const confirmDate = () => {
const year = yearRange.value[datePickerValue.value[0]];
const month = String(monthRange.value[datePickerValue.value[1]]).padStart(2, "0");
const day = String(dayRange.value[datePickerValue.value[2]]).padStart(2, "0");
formData.value.local_hospital_visit_date = `${year}-${month}-${day}`;
showDatePicker.value = false;
};
const openAgreement = (type) => {
common_vendor.index.navigateTo({
url: "/pages/Card/contact?type=" + type
});
};
const submitForm = async () => {
var _a;
if (!agreedToTerms.value) {
common_vendor.index.showToast({ title: "请先阅读并同意相关协议", icon: "none" });
return;
}
if (!formData.value.patient_name) {
common_vendor.index.showToast({ title: "患者姓名不能为空", icon: "none" });
return;
}
if (formData.value.gender === null || formData.value.gender === void 0) {
common_vendor.index.showToast({ title: "请选择性别", icon: "none" });
return;
}
if (!formData.value.weight) {
common_vendor.index.showToast({ title: "体重不能为空", icon: "none" });
return;
}
if (!formData.value.height) {
common_vendor.index.showToast({ title: "身高不能为空", icon: "none" });
return;
}
if (!formData.value.fasting_blood_sugar) {
common_vendor.index.showToast({ title: "空腹血糖不能为空", icon: "none" });
return;
}
if (!String(formData.value.diabetes_discovery_year ?? "").trim()) {
common_vendor.index.showToast({ title: "发现糖尿病患病史不能为空", icon: "none" });
return;
}
if (String(formData.value.diabetes_discovery_year).trim().length > 50) {
common_vendor.index.showToast({ title: "发现糖尿病患病史最多50个字", icon: "none" });
return;
}
if (!formData.value.local_hospital_diagnosis || formData.value.local_hospital_diagnosis.length === 0) {
common_vendor.index.showToast({ title: "当地医院诊断结果不能为空", icon: "none" });
return;
}
if (!formData.value.local_hospital_name) {
common_vendor.index.showToast({ title: "当地就诊医院名称不能为空", icon: "none" });
return;
}
if (!formData.value.local_hospital_visit_date) {
common_vendor.index.showToast({ title: "当地医院就诊时间不能为空", icon: "none" });
return;
}
submitting.value = true;
try {
const submitData = { ...formData.value };
submitData.diabetes_discovery_year = String(submitData.diabetes_discovery_year ?? "").trim();
const arrayFields = ["diet_condition", "body_feeling", "sleep_condition", "eye_condition", "head_feeling", "sweat_condition", "skin_condition", "urine_condition", "stool_condition", "kidney_condition", "past_history", "local_hospital_diagnosis", "report_files", "tongue_images"];
arrayFields.forEach((field) => {
if (Array.isArray(submitData[field])) {
submitData[field] = submitData[field].join(",");
}
});
if (submitData.local_hospital_visit_date) {
submitData.diagnosis_date = submitData.local_hospital_visit_date;
}
const apiUrl = isAddMode.value ? "/api/tcm/addCard" : "/api/tcm/updateCard";
const apiData = isAddMode.value ? { ...submitData, ...patientId.value ? { patient_id: patientId.value } : {} } : { id: diagnosisId.value, patient_id: patientId.value, ...submitData };
const res = await proxy.apiUrl({
url: apiUrl,
method: "POST",
data: apiData
});
if (res.code === 1) {
if (isAddMode.value && ((_a = res.data) == null ? void 0 : _a.patient_id)) {
const userData = common_vendor.index.getStorageSync("userData") || {};
if (!userData.diagnosis)
userData.diagnosis = {};
userData.diagnosis.patient_id = res.data.patient_id;
common_vendor.index.setStorageSync("userData", userData);
}
common_vendor.index.showToast({ title: isAddMode.value ? "创建成功" : "保存成功", icon: "success" });
setTimeout(() => {
const back = returnUrl.value;
if (back && back.startsWith("/")) {
common_vendor.index.redirectTo({ url: back });
} else {
common_vendor.index.navigateBack();
}
}, 1500);
} else {
common_vendor.index.showToast({ title: res.msg || "保存失败", icon: "none" });
}
} catch (err) {
common_vendor.index.__f__("error", "at pages/Card/edit_card.vue:1324", "保存失败:", err);
common_vendor.index.showToast({ title: "保存失败", icon: "none" });
} finally {
submitting.value = false;
}
};
const uploadTonguePhoto = () => {
var _a;
const maxCount = 9 - (((_a = formData.value.tongue_images) == null ? void 0 : _a.length) || 0);
common_vendor.index.chooseImage({
count: maxCount,
sizeType: ["compressed"],
sourceType: ["album", "camera"],
success: async (res) => {
const tempFilePaths = res.tempFilePaths;
try {
common_vendor.index.showLoading({ title: "上传中..." });
const token = common_vendor.index.getStorageSync("token");
const $url = proxy.$url;
if (!formData.value.tongue_images) {
formData.value.tongue_images = [];
}
for (let i = 0; i < tempFilePaths.length; i++) {
const uploadRes = await new Promise((resolve, reject) => {
common_vendor.index.uploadFile({
url: $url + "/api/upload/image",
filePath: tempFilePaths[i],
name: "file",
header: {
token,
"content-type": "multipart/form-data"
},
success: (res2) => {
const data = JSON.parse(res2.data);
resolve(data);
},
fail: (err) => {
reject(err);
}
});
});
if (uploadRes.code === 1) {
formData.value.tongue_images.push(uploadRes.data.uri || uploadRes.data);
common_vendor.index.__f__("log", "at pages/Card/edit_card.vue:1377", "-", formData);
}
}
common_vendor.index.hideLoading();
common_vendor.index.showToast({ title: "上传成功", icon: "success" });
} catch (err) {
common_vendor.index.hideLoading();
common_vendor.index.__f__("error", "at pages/Card/edit_card.vue:1385", "上传照片失败:", err);
common_vendor.index.showToast({ title: "上传失败", icon: "none" });
}
},
fail: (err) => {
common_vendor.index.__f__("error", "at pages/Card/edit_card.vue:1390", "选择图片失败:", err);
common_vendor.index.showToast({ title: "选择图片失败", icon: "none" });
}
});
};
const deleteTonguePhoto = (index) => {
common_vendor.index.showModal({
title: "提示",
content: "确定要删除这张舌苔照片吗?",
success: (res) => {
if (res.confirm) {
formData.value.tongue_images.splice(index, 1);
common_vendor.index.showToast({ title: "已删除", icon: "success" });
}
}
});
};
const uploadExaminationReport = () => {
var _a;
const maxCount = 9 - (((_a = formData.value.report_files) == null ? void 0 : _a.length) || 0);
common_vendor.index.chooseImage({
count: maxCount,
sizeType: ["compressed"],
sourceType: ["album", "camera"],
success: async (res) => {
const tempFilePaths = res.tempFilePaths;
try {
common_vendor.index.showLoading({ title: "上传中..." });
const token = common_vendor.index.getStorageSync("token");
const $url = proxy.$url;
if (!formData.value.report_files) {
formData.value.report_files = [];
}
for (let i = 0; i < tempFilePaths.length; i++) {
const uploadRes = await new Promise((resolve, reject) => {
common_vendor.index.uploadFile({
url: $url + "/api/upload/image",
filePath: tempFilePaths[i],
name: "file",
header: {
token,
"content-type": "multipart/form-data"
},
success: (res2) => {
const data = JSON.parse(res2.data);
resolve(data);
},
fail: (err) => {
reject(err);
}
});
});
if (uploadRes.code === 1) {
formData.value.report_files.push(uploadRes.data.uri || uploadRes.data);
}
}
common_vendor.index.hideLoading();
common_vendor.index.showToast({ title: "上传成功", icon: "success" });
} catch (err) {
common_vendor.index.hideLoading();
common_vendor.index.__f__("error", "at pages/Card/edit_card.vue:1471", "上传检查报告失败:", err);
common_vendor.index.showToast({ title: "上传失败", icon: "none" });
}
},
fail: (err) => {
common_vendor.index.__f__("error", "at pages/Card/edit_card.vue:1476", "选择图片失败:", err);
common_vendor.index.showToast({ title: "选择图片失败", icon: "none" });
}
});
};
const deleteExaminationReport = (index) => {
common_vendor.index.showModal({
title: "提示",
content: "确定要删除这张图片吗?",
success: (res) => {
if (res.confirm) {
formData.value.report_files.splice(index, 1);
common_vendor.index.showToast({ title: "已删除", icon: "success" });
}
}
});
};
const previewImages = (urls, current) => {
common_vendor.index.previewImage({
urls,
current
});
};
return (_ctx, _cache) => {
return common_vendor.e({
a: loading.value
}, loading.value ? {} : common_vendor.e({
b: formData.value.patient_name,
c: common_vendor.o(($event) => formData.value.patient_name = $event.detail.value, "d0"),
d: common_vendor.t(formData.value.gender === 1 ? "✓" : ""),
e: formData.value.gender === 1 ? 1 : "",
f: common_vendor.o(($event) => formData.value.gender = 1, "38"),
g: common_vendor.t(formData.value.gender === 0 ? "✓" : ""),
h: formData.value.gender === 0 ? 1 : "",
i: common_vendor.o(($event) => formData.value.gender = 0, "0f"),
j: common_vendor.o(handleIdCardChange, "47"),
k: formData.value.id_card,
l: common_vendor.o(($event) => formData.value.id_card = $event.detail.value, "f0"),
m: formData.value.age,
n: common_vendor.o(($event) => formData.value.age = $event.detail.value, "ef"),
o: formData.value.weight,
p: common_vendor.o(common_vendor.m(($event) => formData.value.weight = $event.detail.value, {
number: true
}), "f1"),
q: formData.value.height,
r: common_vendor.o(common_vendor.m(($event) => formData.value.height = $event.detail.value, {
number: true
}), "7f"),
s: formData.value.systolic_pressure,
t: common_vendor.o(common_vendor.m(($event) => formData.value.systolic_pressure = $event.detail.value, {
number: true
}), "52"),
v: formData.value.diastolic_pressure,
w: common_vendor.o(common_vendor.m(($event) => formData.value.diastolic_pressure = $event.detail.value, {
number: true
}), "7e"),
x: formData.value.fasting_blood_sugar,
y: common_vendor.o(common_vendor.m(($event) => formData.value.fasting_blood_sugar = $event.detail.value, {
number: true
}), "75"),
z: formData.value.diabetes_discovery_year,
A: common_vendor.o(($event) => formData.value.diabetes_discovery_year = $event.detail.value, "f7"),
B: formData.value.local_hospital_diagnosis.includes("糖尿病") ? 1 : "",
C: common_vendor.o(($event) => toggleMultiCheckbox("local_hospital_diagnosis", "糖尿病"), "e0"),
D: formData.value.local_hospital_diagnosis.includes("消渴病") ? 1 : "",
E: common_vendor.o(($event) => toggleMultiCheckbox("local_hospital_diagnosis", "消渴病"), "79"),
F: formData.value.local_hospital_diagnosis.includes("糖尿病前期") ? 1 : "",
G: common_vendor.o(($event) => toggleMultiCheckbox("local_hospital_diagnosis", "糖尿病前期"), "f6"),
H: formData.value.local_hospital_name,
I: common_vendor.o(($event) => formData.value.local_hospital_name = $event.detail.value, "20"),
J: common_vendor.t(formData.value.local_hospital_visit_date || "请选择确诊时间"),
K: common_vendor.o(($event) => showDatePicker.value = true, "1b"),
L: common_vendor.f(appetiteOptions.value, (item, k0, i0) => {
return {
a: common_vendor.t(item.name),
b: item.value,
c: formData.value.appetite === item.value ? 1 : "",
d: common_vendor.o(($event) => formData.value.appetite = item.value, item.value)
};
}),
M: common_vendor.f(dietConditionOptions.value, (item, k0, i0) => {
return {
a: common_vendor.t(item.name),
b: item.value,
c: formData.value.diet_condition.includes(item.value) ? 1 : "",
d: common_vendor.o(($event) => toggleMultiCheckbox("diet_condition", item.value), item.value)
};
}),
N: common_vendor.f(waterIntakeOptions.value, (item, k0, i0) => {
return {
a: common_vendor.t(item.name),
b: item.value,
c: formData.value.water_intake === item.value ? 1 : "",
d: common_vendor.o(($event) => formData.value.water_intake = item.value, item.value)
};
}),
O: common_vendor.f(weightChangeOptions.value, (item, k0, i0) => {
return {
a: common_vendor.t(item.name),
b: item.value,
c: formData.value.weight_change === item.value ? 1 : "",
d: common_vendor.o(($event) => formData.value.weight_change = item.value, item.value)
};
}),
P: common_vendor.f(fattyLiverDegreeOptions.value, (item, k0, i0) => {
return {
a: common_vendor.t(item.name),
b: item.value,
c: formData.value.fatty_liver_degree === item.value ? 1 : "",
d: common_vendor.o(($event) => formData.value.fatty_liver_degree = item.value, item.value)
};
}),
Q: common_vendor.f(bodyFeelingOptions.value, (item, k0, i0) => {
return {
a: common_vendor.t(item.name),
b: item.value,
c: formData.value.body_feeling.includes(item.value) ? 1 : "",
d: common_vendor.o(($event) => toggleMultiCheckbox("body_feeling", item.value), item.value)
};
}),
R: common_vendor.f(sleepConditionOptions.value, (item, k0, i0) => {
return {
a: common_vendor.t(item.name),
b: item.value,
c: formData.value.sleep_condition.includes(item.value) ? 1 : "",
d: common_vendor.o(($event) => toggleMultiCheckbox("sleep_condition", item.value), item.value)
};
}),
S: common_vendor.f(eyeConditionOptions.value, (item, k0, i0) => {
return {
a: common_vendor.t(item.name),
b: item.value,
c: formData.value.eye_condition.includes(item.value) ? 1 : "",
d: common_vendor.o(($event) => toggleMultiCheckbox("eye_condition", item.value), item.value)
};
}),
T: common_vendor.f(headFeelingOptions.value, (item, k0, i0) => {
return {
a: common_vendor.t(item.name),
b: item.value,
c: formData.value.head_feeling.includes(item.value) ? 1 : "",
d: common_vendor.o(($event) => toggleMultiCheckbox("head_feeling", item.value), item.value)
};
}),
U: common_vendor.f(sweatConditionOptions.value, (item, k0, i0) => {
return {
a: common_vendor.t(item.name),
b: item.value,
c: formData.value.sweat_condition.includes(item.value) ? 1 : "",
d: common_vendor.o(($event) => toggleMultiCheckbox("sweat_condition", item.value), item.value)
};
}),
V: common_vendor.f(skinConditionOptions.value, (item, k0, i0) => {
return {
a: common_vendor.t(item.name),
b: item.value,
c: formData.value.skin_condition.includes(item.value) ? 1 : "",
d: common_vendor.o(($event) => toggleMultiCheckbox("skin_condition", item.value), item.value)
};
}),
W: common_vendor.f(urineConditionOptions.value, (item, k0, i0) => {
return {
a: common_vendor.t(item.name),
b: item.value,
c: formData.value.urine_condition.includes(item.value) ? 1 : "",
d: common_vendor.o(($event) => toggleMultiCheckbox("urine_condition", item.value), item.value)
};
}),
X: common_vendor.f(stoolConditionOptions.value, (item, k0, i0) => {
return {
a: common_vendor.t(item.name),
b: item.value,
c: formData.value.stool_condition.includes(item.value) ? 1 : "",
d: common_vendor.o(($event) => toggleMultiCheckbox("stool_condition", item.value), item.value)
};
}),
Y: common_vendor.f(kidneyConditionOptions.value, (item, k0, i0) => {
return {
a: common_vendor.t(item.name),
b: item.value,
c: formData.value.kidney_condition.includes(item.value) ? 1 : "",
d: common_vendor.o(($event) => toggleMultiCheckbox("kidney_condition", item.value), item.value)
};
}),
Z: common_vendor.f(pastHistoryOptions.value, (item, k0, i0) => {
return {
a: common_vendor.t(item.name),
b: item.value,
c: formData.value.past_history.includes(item.value) ? 1 : "",
d: common_vendor.o(($event) => toggleMultiCheckbox("past_history", item.value), item.value)
};
}),
aa: formData.value.trauma_history === 1 ? 1 : "",
ab: common_vendor.o(($event) => formData.value.trauma_history = 1, "5e"),
ac: formData.value.trauma_history === 0 ? 1 : "",
ad: common_vendor.o(($event) => formData.value.trauma_history = 0, "db"),
ae: formData.value.surgery_history === 1 ? 1 : "",
af: common_vendor.o(($event) => formData.value.surgery_history = 1, "f6"),
ag: formData.value.surgery_history === 0 ? 1 : "",
ah: common_vendor.o(($event) => formData.value.surgery_history = 0, "69"),
ai: formData.value.allergy_history === 1 ? 1 : "",
aj: common_vendor.o(($event) => formData.value.allergy_history = 1, "b7"),
ak: formData.value.allergy_history === 0 ? 1 : "",
al: common_vendor.o(($event) => formData.value.allergy_history = 0, "f0"),
am: formData.value.family_history === 1 ? 1 : "",
an: common_vendor.o(($event) => formData.value.family_history = 1, "e3"),
ao: formData.value.family_history === 0 ? 1 : "",
ap: common_vendor.o(($event) => formData.value.family_history = 0, "18"),
aq: formData.value.pregnancy_history === 1 ? 1 : "",
ar: common_vendor.o(($event) => formData.value.pregnancy_history = 1, "71"),
as: formData.value.pregnancy_history === 0 ? 1 : "",
at: common_vendor.o(($event) => formData.value.pregnancy_history = 0, "a3"),
av: formData.value.tongue_images && formData.value.tongue_images.length > 0
}, formData.value.tongue_images && formData.value.tongue_images.length > 0 ? {
aw: common_vendor.f(formData.value.tongue_images, (img, index, i0) => {
return {
a: img,
b: common_vendor.o(($event) => previewImages(formData.value.tongue_images, index), index),
c: common_vendor.o(($event) => deleteTonguePhoto(index), index),
d: index
};
})
} : {}, {
ax: formData.value.tongue_images.length < 9
}, formData.value.tongue_images.length < 9 ? {
ay: common_vendor.p({
type: "camera",
size: "30"
}),
az: common_vendor.o(uploadTonguePhoto, "ec")
} : {}, {
aA: formData.value.report_files && formData.value.report_files.length > 0
}, formData.value.report_files && formData.value.report_files.length > 0 ? {
aB: common_vendor.f(formData.value.report_files, (img, index, i0) => {
return {
a: img,
b: common_vendor.o(($event) => previewImages(formData.value.report_files, index), index),
c: common_vendor.o(($event) => deleteExaminationReport(index), index),
d: index
};
})
} : {}, {
aC: formData.value.report_files.length < 9
}, formData.value.report_files.length < 9 ? {
aD: common_vendor.p({
type: "camera",
size: "30"
}),
aE: common_vendor.o(uploadExaminationReport, "6a")
} : {}, {
aF: formData.value.remark,
aG: common_vendor.o(($event) => formData.value.remark = $event.detail.value, "c8"),
aH: agreedToTerms.value
}, agreedToTerms.value ? {} : {}, {
aI: agreedToTerms.value ? 1 : "",
aJ: !agreedToTerms.value
}, !agreedToTerms.value ? {} : {}, {
aK: !agreedToTerms.value ? 1 : "",
aL: common_vendor.o(($event) => agreedToTerms.value = false, "2e"),
aM: common_vendor.o(($event) => openAgreement("service"), "98"),
aN: common_vendor.o(($event) => openAgreement("privacy"), "cc"),
aO: common_vendor.o(($event) => agreedToTerms.value = true, "db"),
aP: common_vendor.t(submitting.value ? "保存中..." : "我已确认无误,提交给医生"),
aQ: common_vendor.o(submitForm, "17"),
aR: submitting.value || !agreedToTerms.value
}), {
aS: showDatePicker.value
}, showDatePicker.value ? {
aT: common_vendor.o(($event) => showDatePicker.value = false, "4e"),
aU: common_vendor.o(confirmDate, "61"),
aV: common_vendor.f(yearRange.value, (year, k0, i0) => {
return {
a: common_vendor.t(year),
b: year
};
}),
aW: common_vendor.f(monthRange.value, (month, k0, i0) => {
return {
a: common_vendor.t(String(month).padStart(2, "0")),
b: month
};
}),
aX: common_vendor.f(dayRange.value, (day, k0, i0) => {
return {
a: common_vendor.t(String(day).padStart(2, "0")),
b: day
};
}),
aY: datePickerValue.value,
aZ: common_vendor.o(onDateChange, "78")
} : {});
};
}
};
const MiniProgramPage = /* @__PURE__ */ common_vendor._export_sfc(_sfc_main, [["__scopeId", "data-v-47b8e7b0"]]);
wx.createPage(MiniProgramPage);
//# sourceMappingURL=../../../.sourcemap/mp-weixin/pages/Card/edit_card.js.map
@@ -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
@@ -0,0 +1,858 @@
.edit-container.data-v-47b8e7b0 {
min-height: 100vh;
background: #f5f5f5;
}
.loading-state.data-v-47b8e7b0 {
display: flex;
justify-content: center;
align-items: center;
height: 100vh;
font-size: 36rpx;
color: #999999;
}
.form-wrapper.data-v-47b8e7b0 {
padding: 20rpx;
padding-bottom: 280rpx; /* 为固定按钮留出空间 */
}
.form-section.data-v-47b8e7b0 {
background: #ffffff;
border-radius: 12rpx;
padding: 24rpx;
margin-bottom: 20rpx;
}
.section-title.data-v-47b8e7b0 {
font-size: 34rpx;
font-weight: 600;
color: #333333;
margin-bottom: 20rpx;
display: block;
padding-bottom: 12rpx;
border-bottom: 1rpx solid #e8e8e8;
}
/* 行布局 */
.form-row.data-v-47b8e7b0 {
display: flex;
align-items: center;
margin-bottom: 20rpx;
gap: 20rpx;
}
.form-row-single.data-v-47b8e7b0 {
display: flex;
align-items: center;
margin-bottom: 20rpx;
flex-wrap: wrap;
}
.form-col-left.data-v-47b8e7b0 {
flex: 1;
display: flex;
align-items: center;
}
.form-col-right.data-v-47b8e7b0 {
flex: 1;
display: flex;
align-items: center;
}
.form-col-large.data-v-47b8e7b0 {
flex: 2;
display: flex;
align-items: center;
}
.form-col-small.data-v-47b8e7b0 {
flex: 1;
display: flex;
align-items: center;
}
/* 标签样式 */
.form-label.data-v-47b8e7b0 {
font-size: 28rpx;
color: #666666;
white-space: nowrap;
margin-right: 8rpx;
}
.form-labels.data-v-47b8e7b0 {
font-size: 32rpx;
color: #222222;
white-space: nowrap;
margin-right: 8rpx;
font-weight: 700;
}
.form-label-number.data-v-47b8e7b0 {
font-size: 32rpx;
color: #333333;
font-weight: 600;
margin-right: 4rpx;
}
.required.data-v-47b8e7b0 {
color: #ff4d4f;
margin-right: 4rpx;
font-size: 32rpx;
}
.form-value.data-v-47b8e7b0 {
font-size: 28rpx;
color: #333333;
}
/* 行内输入框 */
.form-input-inline.data-v-47b8e7b0 {
flex: 1;
padding: 12rpx 16rpx;
border: none;
border-bottom: 1rpx solid #e8e8e8;
font-size: 28rpx;
color: #333333;
background: transparent;
}
.form-input-inline.data-v-47b8e7b0:disabled {
color: #999999;
background: #f5f5f5;
}
.form-input-inline.data-v-47b8e7b0::-webkit-input-placeholder {
color: #cccccc;
font-size: 30rpx;
}
.form-input-inline.data-v-47b8e7b0::placeholder {
color: #cccccc;
font-size: 30rpx;
}
.form-unit.data-v-47b8e7b0 {
font-size: 30rpx;
color: #999999;
margin-left: 8rpx;
white-space: nowrap;
}
/* 性别选择 - 行内样式 */
.gender-inline.data-v-47b8e7b0 {
display: flex;
gap: 30rpx;
margin-left: 10rpx;
}
.gender-radio.data-v-47b8e7b0 {
display: flex;
align-items: center;
gap: 8rpx;
font-size: 32rpx;
color: #666666;
}
.gender-radio.active.data-v-47b8e7b0 {
color: #386641;
}
.radio-icon.data-v-47b8e7b0 {
width: 40rpx;
height: 40rpx;
border: 2rpx solid #d9d9d9;
border-radius: 50%;
display: flex;
align-items: center;
justify-content: center;
font-size: 28rpx;
color: #ffffff;
background: #ffffff;
}
.gender-radio.active .radio-icon.data-v-47b8e7b0 {
background: #386641;
border-color: #386641;
}
.form-tip.data-v-47b8e7b0 {
font-size: 28rpx;
color: #ff4d4f;
margin-top: 8rpx;
}
/* 块级表单项 */
.form-item-block.data-v-47b8e7b0 {
margin-bottom: 30rpx;
}
.form-label-block.data-v-47b8e7b0 {
display: flex;
align-items: center;
margin-bottom: 16rpx;
}
/* 按钮网格布局 */
.button-grid.data-v-47b8e7b0 {
display: grid;
grid-template-columns: 1fr 1fr;
gap: 0;
margin-bottom: 16rpx;
}
.button-grid-single.data-v-47b8e7b0 {
display: grid;
grid-template-columns: 1fr;
}
.button-grid-three.data-v-47b8e7b0 {
display: grid;
grid-template-columns: repeat(3, 1fr);
gap: 0;
}
.grid-button.data-v-47b8e7b0 {
padding: 4rpx 20rpx;
border: 2rpx solid #e8e8e8;
border-radius: 0;
text-align: center;
font-size: 32rpx;
color: #555555;
background: #ffffff;
transition: all 0.2s;
min-height: 80rpx;
display: flex;
align-items: center;
justify-content: center;
margin-left: -2rpx;
margin-bottom: 10rpx;
position: relative;
}
.grid-button.data-v-47b8e7b0:first-child {
margin-left: 0;
border-top-left-radius: 8rpx;
border-bottom-left-radius: 8rpx;
}
.grid-button.data-v-47b8e7b0:last-child {
border-top-right-radius: 8rpx;
border-bottom-right-radius: 8rpx;
}
.button-grid-three .grid-button.data-v-47b8e7b0:nth-child(3n+1) {
border-top-left-radius: 8rpx;
border-bottom-left-radius: 8rpx;
margin-left: 0;
}
.button-grid-three .grid-button.data-v-47b8e7b0:nth-child(3n) {
border-top-right-radius: 8rpx;
border-bottom-right-radius: 8rpx;
}
.button-grid-three .grid-button.data-v-47b8e7b0:nth-child(3n+2) {
border-radius: 0;
}
.grid-button.active.data-v-47b8e7b0 {
border-color: #386641;
background: #386641;
color: #ffffff;
font-weight: 500;
z-index: 1;
}
/* 选中按钮右侧的白色分隔线 */
.grid-button.active.data-v-47b8e7b0::after {
content: '';
position: absolute;
right: -2rpx;
top: 0;
bottom: 0;
width: 2rpx;
background: #ffffff;
z-index: 2;
}
/* 选中按钮左侧的白色分隔线 */
.grid-button.active.data-v-47b8e7b0::before {
content: '';
position: absolute;
left: -2rpx;
top: 0;
bottom: 0;
width: 2rpx;
background: #ffffff;
z-index: 2;
}
/* 如果是第一个按钮被选中,不显示左侧白线 */
.grid-button.active.data-v-47b8e7b0:first-child::before,
.button-grid-three .grid-button.active.data-v-47b8e7b0:nth-child(3n+1)::before {
display: none;
}
/* 如果是最后一个按钮被选中,不显示右侧白线 */
.grid-button.active.data-v-47b8e7b0:last-child::after,
.button-grid-three .grid-button.active.data-v-47b8e7b0:nth-child(3n)::after {
display: none;
}
/* 全宽输入框 */
.form-input-full.data-v-47b8e7b0 {
width: 100%;
padding: 20rpx;
border: none;
border-bottom: 1rpx solid #e8e8e8;
font-size: 32rpx;
color: #333333;
background: transparent;
box-sizing: border-box;
min-height: 80rpx;
display: block;
}
.form-input-full.data-v-47b8e7b0::-webkit-input-placeholder {
color: #cccccc;
font-size: 30rpx;
}
.form-input-full.data-v-47b8e7b0::placeholder {
color: #cccccc;
font-size: 30rpx;
}
/* 全宽日期选择器 */
.date-input-full.data-v-47b8e7b0 {
display: flex;
align-items: center;
padding: 20rpx;
border: none;
border-bottom: 1rpx solid #e8e8e8;
background: transparent;
min-height: 80rpx;
box-sizing: border-box;
}
.date-icon-left.data-v-47b8e7b0 {
font-size: 36rpx;
color: #999999;
margin-right: 12rpx;
flex-shrink: 0;
}
.date-text.data-v-47b8e7b0 {
flex: 1;
font-size: 32rpx;
color: #333333;
word-break: break-word;
}
.date-arrow.data-v-47b8e7b0 {
font-size: 40rpx;
color: #cccccc;
margin-left: 12rpx;
flex-shrink: 0;
}
/* 原有表单组样式 - 保留用于其他部分 */
.form-group.data-v-47b8e7b0 {
margin-bottom: 24rpx;
}
.form-group.data-v-47b8e7b0:last-child {
margin-bottom: 0;
}
.form-input.data-v-47b8e7b0 {
width: 100%;
padding: 24rpx;
border: 2rpx solid #386641;
border-radius: 12rpx;
font-size: 34rpx;
line-height: 1.5;
color: #333333;
background: #fffaf5;
box-sizing: border-box;
display: block;
height: auto;
min-height: 80rpx;
}
.form-input.data-v-47b8e7b0::-webkit-input-placeholder {
color: #cccccc;
font-size: 32rpx;
}
.form-input.data-v-47b8e7b0::placeholder {
color: #cccccc;
font-size: 32rpx;
}
.form-textarea.data-v-47b8e7b0 {
width: 100%;
padding: 24rpx;
border: 2rpx solid #386641;
border-radius: 12rpx;
font-size: 34rpx;
line-height: 1.6;
color: #333333;
background: #fffaf5;
box-sizing: border-box;
min-height: 180rpx;
display: block;
font-family: inherit;
}
.form-textarea.data-v-47b8e7b0::-webkit-input-placeholder {
color: #cccccc;
font-size: 32rpx;
}
.form-textarea.data-v-47b8e7b0::placeholder {
color: #cccccc;
font-size: 32rpx;
}
.gender-group.data-v-47b8e7b0 {
display: flex;
gap: 16rpx;
}
.gender-btn.data-v-47b8e7b0 {
flex: 1;
padding: 22rpx 24rpx;
border: 2rpx solid #386641;
border-radius: 12rpx;
text-align: center;
font-size: 34rpx;
line-height: 1.5;
color: #666666;
background: #fffaf5;
transition: all 0.2s;
display: flex;
align-items: center;
justify-content: center;
min-height: 80rpx;
}
.gender-btn.active.data-v-47b8e7b0 {
border-color: #386641;
background: #fff4e6;
color: #386641;
font-weight: 600;
}
.radio-group.data-v-47b8e7b0 {
display: flex;
gap: 16rpx;
}
.radio-item.data-v-47b8e7b0 {
flex: 1;
padding: 20rpx 24rpx;
border: 2rpx solid #386641;
border-radius: 12rpx;
text-align: center;
font-size: 32rpx;
color: #666666;
background: #fffaf5;
transition: all 0.2s;
min-height: 70rpx;
display: flex;
align-items: center;
justify-content: center;
}
.radio-item.active.data-v-47b8e7b0 {
border-color: #386641;
background: #fff4e6;
color: #386641;
font-weight: 600;
}
.checkbox-group.data-v-47b8e7b0 {
display: flex;
flex-wrap: wrap;
gap: 12rpx;
}
.checkbox-item.data-v-47b8e7b0 {
padding: 18rpx 28rpx;
border: 2rpx solid #386641;
border-radius: 24rpx;
font-size: 32rpx;
color: #666666;
background: #fffaf5;
transition: all 0.2s;
}
.checkbox-item.active.data-v-47b8e7b0 {
border-color: #386641;
background: #fff4e6;
color: #386641;
font-weight: 600;
}
.multi-checkbox-group.data-v-47b8e7b0 {
display: flex;
flex-wrap: wrap;
gap: 12rpx;
}
.multi-checkbox-item.data-v-47b8e7b0 {
padding: 18rpx 28rpx;
border: 2rpx solid #386641;
border-radius: 24rpx;
font-size: 32rpx;
color: #666666;
background: #fffaf5;
transition: all 0.2s;
}
.multi-checkbox-item.active.data-v-47b8e7b0 {
border-color: #386641;
background: #fff4e6;
color: #386641;
font-weight: 600;
}
.date-input.data-v-47b8e7b0 {
display: flex;
justify-content: space-between;
align-items: center;
padding: 24rpx;
border: 2rpx solid #386641;
border-radius: 12rpx;
background: #fffaf5;
font-size: 34rpx;
line-height: 1.5;
color: #333333;
min-height: 80rpx;
}
.date-icon.data-v-47b8e7b0 {
font-size: 40rpx;
margin-left: 12rpx;
color: #386641;
}
.picker-item.data-v-47b8e7b0 {
display: flex;
justify-content: center;
align-items: center;
height: 50px;
font-size: 34rpx;
color: #333333;
}
/* 上传组件样式 */
.upload-container.data-v-47b8e7b0 {
margin-top: 16rpx;
}
.upload-layout.data-v-47b8e7b0 {
display: flex;
gap: 20rpx;
margin-top: 20rpx;
align-items: flex-start;
}
.upload-left.data-v-47b8e7b0 {
flex-shrink: 0;
width: 600rpx;
}
.upload-right.data-v-47b8e7b0 {
flex: 1;
display: flex;
flex-direction: column;
justify-content: center;
gap: 12rpx;
}
.upload-label.data-v-47b8e7b0 {
font-size: 32rpx;
color: #333333;
font-weight: 600;
}
.upload-desc.data-v-47b8e7b0 {
font-size: 28rpx;
color: #999999;
line-height: 1.5;
}
.more-images.data-v-47b8e7b0 {
display: flex;
gap: 12rpx;
margin-top: 12rpx;
flex-wrap: wrap;
}
.more-item.data-v-47b8e7b0 {
width: 80rpx;
height: 80rpx;
border-radius: 8rpx;
overflow: hidden;
border: 2rpx solid #386641;
}
.more-item image.data-v-47b8e7b0 {
width: 100%;
height: 100%;
}
.upload-btn-single.data-v-47b8e7b0 {
width: 200rpx;
height: 200rpx;
display: flex;
align-items: center;
justify-content: center;
border: 2rpx dashed #386641;
border-radius: 12rpx;
background: #fffaf5;
transition: all 0.2s;
}
.upload-btn-single.data-v-47b8e7b0:active {
background: #fff4e6;
border-color: #386641;
}
.upload-btn.data-v-47b8e7b0 {
display: flex;
flex-direction: column;
align-items: center;
justify-content: center;
padding: 60rpx 40rpx;
border: 2rpx dashed #386641;
border-radius: 12rpx;
background: #fffaf5;
transition: all 0.2s;
}
.upload-btn.data-v-47b8e7b0:active {
background: #fff4e6;
border-color: #386641;
}
.upload-icon.data-v-47b8e7b0 {
font-size: 80rpx;
margin-bottom: 16rpx;
}
.upload-text.data-v-47b8e7b0 {
font-size: 28rpx;
color: #999999;
}
.upload-tip.data-v-47b8e7b0 {
font-size: 24rpx;
color: #cccccc;
margin-top: 8rpx;
}
.form-label-tip.data-v-47b8e7b0 {
font-size: 24rpx;
color: #999999;
margin-bottom: 16rpx;
display: block;
line-height: 1.5;
}
.image-preview.data-v-47b8e7b0 {
position: relative;
border-radius: 12rpx;
overflow: hidden;
border: 2rpx solid #386641;
width: 100%;
height: 100%;
}
.preview-image.data-v-47b8e7b0 {
width: 200rpx;
height: 200rpx;
display: block;
}
.image-actions.data-v-47b8e7b0 {
position: absolute;
bottom: 0;
left: 0;
right: 0;
display: flex;
justify-content: space-around;
padding: 12rpx;
background: rgba(0, 0, 0, 0.6);
gap: 8rpx;
}
.action-btn.data-v-47b8e7b0 {
padding: 8rpx 16rpx;
border-radius: 6rpx;
font-size: 24rpx;
color: #ffffff;
background: rgba(255, 140, 0, 0.8);
border: none;
transition: all 0.2s;
flex: 1;
text-align: center;
}
.action-btn.data-v-47b8e7b0:active {
background: rgba(255, 140, 0, 1);
}
.action-btn.delete.data-v-47b8e7b0 {
color: #ffffff;
background: rgba(255, 77, 79, 0.8);
}
.action-btn.delete.data-v-47b8e7b0:active {
background: rgba(255, 77, 79, 1);
}
/* 多图片列表样式 */
.image-list.data-v-47b8e7b0 {
display: grid;
grid-template-columns: repeat(3, 1fr);
gap: 16rpx;
margin-bottom: 20rpx;
}
.image-item.data-v-47b8e7b0 {
position: relative;
width: 100%;
padding-bottom: 100%;
border-radius: 12rpx;
overflow: hidden;
border: 2rpx solid #386641;
}
.item-image.data-v-47b8e7b0 {
position: absolute;
top: 0;
left: 0;
width: 100%;
height: 100%;
}
.delete-icon.data-v-47b8e7b0 {
position: absolute;
top: 8rpx;
right: 8rpx;
width: 48rpx;
height: 48rpx;
background: rgba(255, 77, 79, 0.9);
color: #ffffff;
border-radius: 50%;
display: flex;
align-items: center;
justify-content: center;
font-size: 40rpx;
line-height: 1;
font-weight: bold;
z-index: 10;
}
.upload-btn-small.data-v-47b8e7b0 {
width: 100%;
padding-bottom: 100%;
position: relative;
border: 2rpx dashed #386641;
border-radius: 12rpx;
background: #fffaf5;
display: flex;
align-items: center;
justify-content: center;
}
.upload-icon-small.data-v-47b8e7b0 {
position: absolute;
top: 50%;
left: 50%;
transform: translate(-50%, -50%);
font-size: 60rpx;
color: #386641;
}
.picker-input.data-v-47b8e7b0 {
display: flex;
justify-content: space-between;
align-items: center;
padding: 24rpx;
border: 2rpx solid #386641;
border-radius: 12rpx;
background: #fffaf5;
font-size: 34rpx;
line-height: 1.5;
color: #333333;
min-height: 80rpx;
}
.picker-icon.data-v-47b8e7b0 {
font-size: 28rpx;
color: #386641;
margin-left: 12rpx;
}
.button-group.data-v-47b8e7b0 {
display: flex;
gap: 20rpx;
margin-top: 40rpx;
margin-bottom: 40rpx;
padding: 0 20rpx;
}
.button-fixed.data-v-47b8e7b0 {
position: fixed;
bottom: 0;
left: 0;
right: 0;
padding: 12rpx 20rpx 16rpx 20rpx;
background: #ffffff;
box-shadow: 0 -4rpx 12rpx rgba(0, 0, 0, 0.1);
z-index: 100;
box-sizing: border-box;
}
.agreement-section.data-v-47b8e7b0 {
margin-bottom: 16rpx;
}
.agreement-radio-group.data-v-47b8e7b0 {
display: flex;
align-items: center;
gap: 12rpx;
flex-wrap: wrap;
}
.radio-option.data-v-47b8e7b0 {
display: flex;
align-items: center;
gap: 8rpx;
cursor: pointer;
}
.radio-icon.data-v-47b8e7b0 {
width: 36rpx;
height: 36rpx;
border: 2rpx solid #d9d9d9;
border-radius: 50%;
display: flex;
align-items: center;
justify-content: center;
flex-shrink: 0;
transition: all 0.2s;
background: #ffffff;
}
.radio-icon.checked.data-v-47b8e7b0 {
border-color: #52c41a;
}
.radio-dot.data-v-47b8e7b0 {
width: 20rpx;
height: 20rpx;
border-radius: 50%;
background: #52c41a;
}
.radio-label.data-v-47b8e7b0 {
font-size: 28rpx;
color: #333333;
font-weight: 500;
}
.agreement-text.data-v-47b8e7b0 {
font-size: 26rpx;
color: #333333;
line-height: 1.6;
}
.agreement-link.data-v-47b8e7b0 {
color: #1890ff;
text-decoration: underline;
}
.agreement-link.data-v-47b8e7b0:active {
opacity: 0.7;
}
.btn.data-v-47b8e7b0 {
width: 100%;
padding: 10rpx;
border-radius: 12rpx;
font-size: 32rpx;
font-weight: 600;
border: none;
cursor: pointer;
transition: all 0.2s;
min-height: 72rpx;
display: flex;
align-items: center;
justify-content: center;
margin-bottom: 30rpx;
}
.btn.data-v-47b8e7b0:active {
transform: scale(0.98);
}
.btn.data-v-47b8e7b0:disabled {
opacity: 0.6;
cursor: not-allowed;
}
.btn-cancel.data-v-47b8e7b0 {
background: #f5f5f5;
color: #666666;
border: 2rpx solid #e8e8e8;
}
.btn-submit.data-v-47b8e7b0 {
background: #389e0d;
color: #ffffff;
}
.btn-submit.data-v-47b8e7b0:active:not(:disabled) {
background: linear-gradient(135deg, #389e0d 0%, #237804 100%);
}
.date-picker-overlay.data-v-47b8e7b0 {
position: fixed;
top: 0;
left: 0;
right: 0;
bottom: 0;
background: rgba(0, 0, 0, 0.5);
display: flex;
flex-direction: column;
justify-content: flex-end;
z-index: 999;
}
.date-picker-container.data-v-47b8e7b0 {
background: #ffffff;
border-radius: 20rpx 20rpx 0 0;
overflow: hidden;
}
.date-picker-header.data-v-47b8e7b0 {
display: flex;
justify-content: space-between;
align-items: center;
padding: 20rpx 30rpx;
border-bottom: 2rpx solid #ffe4cc;
}
.date-btn-cancel.data-v-47b8e7b0,
.date-btn-confirm.data-v-47b8e7b0 {
font-size: 34rpx;
color: #386641;
font-weight: 600;
}
.date-picker-view.data-v-47b8e7b0 {
height: 320rpx;
}
.picker-item.data-v-47b8e7b0 {
display: flex;
justify-content: center;
align-items: center;
height: 50px;
font-size: 34rpx;
color: #333333;
}
@@ -0,0 +1,122 @@
"use strict";
const common_vendor = require("../../common/vendor.js");
const DevTrainingEntry = () => "../../components/dev-training-entry/index.js";
const TabBarDock = () => "../../components/app-tab-bar/tab-bar-dock.js";
const _sfc_main = {
name: "profileB",
components: { DevTrainingEntry, TabBarDock },
data() {
return {
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" }
// ,
// { name: '客服中心', icon: 'headphones', path: '/pages/service/index', class: 'bg-orange', desc: '在线客服' }
]
};
},
onShow() {
this.userInfo = common_vendor.index.getStorageSync("userData");
},
methods: {
navigateTo(path) {
common_vendor.index.navigateTo({ url: path });
},
showQRCode() {
}
}
};
if (!Array) {
const _easycom_uni_icons2 = common_vendor.resolveComponent("uni-icons");
const _component_dev_training_entry = common_vendor.resolveComponent("dev-training-entry");
const _component_TabBarDock = common_vendor.resolveComponent("TabBarDock");
(_easycom_uni_icons2 + _component_dev_training_entry + _component_TabBarDock)();
}
const _easycom_uni_icons = () => "../../uni_modules/uni-icons/components/uni-icons/uni-icons.js";
if (!Math) {
_easycom_uni_icons();
}
function _sfc_render(_ctx, _cache, $props, $setup, $data, $options) {
return {
a: $data.userInfo.avatar,
b: common_vendor.t($data.userInfo.nickname || "未登录"),
c: common_vendor.t($data.userInfo.balance || 0),
d: common_vendor.t($data.userInfo.points || 0),
e: common_vendor.t($data.userInfo.coupons || 0),
f: common_vendor.o(($event) => $options.navigateTo("/pages/user/userinfo"), "39"),
g: common_vendor.f($data.allServices, (item, index, i0) => {
return common_vendor.e({
a: "0f7520f0-0-" + i0,
b: common_vendor.p({
type: item.icon,
size: "28",
color: "#fff"
}),
c: common_vendor.n(item.class),
d: common_vendor.t(item.name),
e: item.desc
}, item.desc ? {
f: common_vendor.t(item.desc)
} : {}, {
g: "0f7520f0-1-" + i0,
h: index,
i: common_vendor.o(($event) => $options.navigateTo(item.path), index)
});
}),
h: common_vendor.p({
type: "right",
size: "20",
color: "#666"
}),
i: common_vendor.p({
bottom: 360
}),
j: common_vendor.p({
active: 1
})
};
}
const MiniProgramPage = /* @__PURE__ */ common_vendor._export_sfc(_sfc_main, [["render", _sfc_render], ["__scopeId", "data-v-0f7520f0"]]);
_sfc_main.__runtimeHooks = 2;
wx.createPage(MiniProgramPage);
//# sourceMappingURL=../../../.sourcemap/mp-weixin/pages/user/user.js.map
@@ -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-0f7520f0"><view class="user-card data-v-0f7520f0" bindtap="{{f}}"><view class="user-header data-v-0f7520f0"><image class="avatar data-v-0f7520f0" src="{{a}}" mode="aspectFill"/><view class="user-info data-v-0f7520f0"><text class="nickname data-v-0f7520f0">{{b}}</text></view></view><view class="stat-row data-v-0f7520f0"><view class="stat-item data-v-0f7520f0"><text class="value data-v-0f7520f0">{{c}}</text><text class="label data-v-0f7520f0">钱包(元)</text></view><view class="stat-item data-v-0f7520f0"><text class="value data-v-0f7520f0">{{d}}</text><text class="label data-v-0f7520f0">积分</text></view><view class="stat-item data-v-0f7520f0"><text class="value data-v-0f7520f0">{{e}}</text><text class="label data-v-0f7520f0">优惠券</text></view></view></view><view class="service-list data-v-0f7520f0"><view wx:for="{{g}}" wx:for-item="item" wx:key="h" class="service-item data-v-0f7520f0" bindtap="{{item.i}}"><view class="left data-v-0f7520f0"><view class="{{['service-icon', 'data-v-0f7520f0', item.c]}}"><uni-icons wx:if="{{item.b}}" class="data-v-0f7520f0" u-i="{{item.a}}" bind:__l="__l" u-p="{{item.b}}"></uni-icons></view><text class="service-name data-v-0f7520f0">{{item.d}}</text></view><view class="right data-v-0f7520f0"><text wx:if="{{item.e}}" class="desc data-v-0f7520f0">{{item.f}}</text><uni-icons wx:if="{{h}}" class="data-v-0f7520f0" u-i="{{item.g}}" bind:__l="__l" u-p="{{h}}"></uni-icons></view></view></view><dev-training-entry wx:if="{{i}}" class="data-v-0f7520f0" u-i="0f7520f0-2" bind:__l="__l" u-p="{{i}}"/><tab-bar-dock wx:if="{{j}}" class="data-v-0f7520f0" u-i="0f7520f0-3" bind:__l="__l" u-p="{{j}}"/></view>
@@ -0,0 +1,261 @@
/**
* 这里是uni-app内置的常用样式变量
*
* uni-app 官方扩展插件及插件市场(https://ext.dcloud.net.cn)上很多三方插件均使用了这些样式变量
* 如果你是插件开发者,建议你使用scss预处理,并在插件代码中直接使用这些变量(无需 import 这个文件),方便用户通过搭积木的方式开发整体风格一致的App
*
*/
/**
* 如果你是App开发者(插件使用者),你可以通过修改这些变量来定制自己的插件主题,实现自定义主题功能
*
* 如果你的项目同样使用了scss预处理,你也可以直接在你的 scss 代码中使用如下变量,同时无需 import 这个文件
*/
/* 颜色变量 */
/* 行为相关颜色 */
/* 文字基本颜色 */
/* 背景颜色 */
/* 边框颜色 */
/* 尺寸变量 */
/* 文字尺寸 */
/* 图片尺寸 */
/* Border Radius */
/* 水平间距 */
/* 垂直间距 */
/* 透明度 */
/* 文章场景相关 */
/* 适老化设计:50-80岁老人 - 大字号、高对比、大触控区 */
.mine-page.data-v-0f7520f0 {
min-height: 100vh;
background: #e8eaed;
padding: 40rpx;
padding-bottom: calc(240rpx + env(safe-area-inset-bottom));
}
.user-card.data-v-0f7520f0 {
background: #fff;
border-radius: 28rpx;
padding: 48rpx;
margin-bottom: 40rpx;
box-shadow: 0 4rpx 20rpx rgba(0, 0, 0, 0.06);
}
.user-card .user-header.data-v-0f7520f0 {
display: flex;
align-items: center;
margin-bottom: 48rpx;
}
.user-card .user-header .avatar.data-v-0f7520f0 {
width: 160rpx;
height: 160rpx;
border-radius: 80rpx;
margin-right: 36rpx;
border: 4rpx solid #e0e0e0;
}
.user-card .user-header .user-info.data-v-0f7520f0 {
flex: 1;
}
.user-card .user-header .user-info .nickname.data-v-0f7520f0 {
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-0f7520f0 {
background: linear-gradient(90deg, #FFD700 0%, #FFA500 100%);
color: #fff;
font-size: 28rpx;
padding: 6rpx 20rpx;
border-radius: 24rpx;
display: inline-block;
}
.user-card .user-header .qr-code.data-v-0f7520f0 {
width: 88rpx;
height: 88rpx;
border-radius: 44rpx;
background: #f5f6fa;
display: flex;
align-items: center;
justify-content: center;
}
.user-card .stat-row.data-v-0f7520f0 {
display: flex;
padding-top: 40rpx;
border-top: 4rpx solid #e8eaed;
}
.user-card .stat-row .stat-item.data-v-0f7520f0 {
flex: 1;
text-align: center;
min-height: 120rpx;
}
.user-card .stat-row .stat-item .value.data-v-0f7520f0 {
font-size: 52rpx;
font-weight: 600;
color: #1a1a1a;
margin-bottom: 12rpx;
display: block;
}
.user-card .stat-row .stat-item .label.data-v-0f7520f0 {
font-size: 32rpx;
color: #555;
font-weight: 500;
}
.order-card.data-v-0f7520f0 {
background: #fff;
border-radius: 24rpx;
padding: 40rpx;
margin-bottom: 30rpx;
box-shadow: 0 4rpx 16rpx rgba(0, 0, 0, 0.04);
}
.order-card .card-header.data-v-0f7520f0 {
display: flex;
justify-content: space-between;
align-items: center;
margin-bottom: 40rpx;
}
.order-card .card-header .title.data-v-0f7520f0 {
font-size: 32rpx;
font-weight: 600;
color: #333;
}
.order-card .card-header .more.data-v-0f7520f0 {
display: flex;
align-items: center;
}
.order-card .card-header .more text.data-v-0f7520f0 {
font-size: 26rpx;
color: #999;
margin-right: 8rpx;
}
.order-card .order-list.data-v-0f7520f0 {
display: flex;
justify-content: space-between;
}
.order-card .order-list .order-item.data-v-0f7520f0 {
flex: 1;
text-align: center;
}
.order-card .order-list .order-item .icon-wrapper.data-v-0f7520f0 {
width: 100rpx;
height: 100rpx;
margin: 0 auto 0;
position: relative;
display: flex;
align-items: center;
justify-content: center;
}
.order-card .order-list .order-item .icon-wrapper .count-badge.data-v-0f7520f0 {
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-0f7520f0 {
width: 56rpx;
height: 56rpx;
}
.order-card .order-list .order-item .order-name.data-v-0f7520f0 {
font-size: 26rpx;
color: #666;
}
.quick-actions.data-v-0f7520f0 {
display: grid;
grid-template-columns: repeat(4, 1fr);
gap: 30rpx;
margin-bottom: 30rpx;
}
.quick-actions .action-item.data-v-0f7520f0 {
background: #fff;
border-radius: 24rpx;
padding: 30rpx 20rpx;
text-align: center;
box-shadow: 0 4rpx 16rpx rgba(0, 0, 0, 0.04);
}
.quick-actions .action-item .action-icon.data-v-0f7520f0 {
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-0f7520f0 {
font-size: 26rpx;
color: #666;
}
.service-list.data-v-0f7520f0 {
background: #fff;
border-radius: 28rpx;
padding: 20rpx 40rpx;
box-shadow: 0 4rpx 20rpx rgba(0, 0, 0, 0.06);
}
.service-list .service-item.data-v-0f7520f0 {
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-0f7520f0:last-child {
border-bottom: none;
}
.service-list .service-item .left.data-v-0f7520f0 {
display: flex;
align-items: center;
}
.service-list .service-item .left .service-icon.data-v-0f7520f0 {
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-0f7520f0 {
font-size: 38rpx;
color: #1a1a1a;
font-weight: 500;
}
.service-list .service-item .right.data-v-0f7520f0 {
display: flex;
align-items: center;
}
.service-list .service-item .right .desc.data-v-0f7520f0 {
font-size: 30rpx;
color: #555;
margin-right: 20rpx;
}
.bg-red.data-v-0f7520f0 {
background: #ff4d4f;
}
.bg-blue.data-v-0f7520f0 {
background: #1890ff;
}
.bg-green.data-v-0f7520f0 {
background: #52c41a;
}
.bg-purple.data-v-0f7520f0 {
background: #722ed1;
}
.bg-orange.data-v-0f7520f0 {
background: #fa8c16;
}
.bg-cyan.data-v-0f7520f0 {
background: #13c2c2;
}
.bg-pink.data-v-0f7520f0 {
background: #eb2f96;
}
.bg-gray.data-v-0f7520f0 {
background: #666666;
}
@@ -0,0 +1,193 @@
"use strict";
const common_vendor = require("../../common/vendor.js");
if (!Array) {
const _easycom_uni_icons2 = common_vendor.resolveComponent("uni-icons");
_easycom_uni_icons2();
}
const _easycom_uni_icons = () => "../../uni_modules/uni-icons/components/uni-icons/uni-icons.js";
if (!Math) {
_easycom_uni_icons();
}
const _sfc_main = {
__name: "userinfo",
setup(__props) {
const { proxy } = common_vendor.getCurrentInstance();
const instance = common_vendor.getCurrentInstance();
const $url = instance.appContext.config.globalProperties.$url;
const loading = common_vendor.ref(false);
const submitting = common_vendor.ref(false);
const formData = common_vendor.ref({
avatar: "",
patient_name: "",
phone: "",
nickname: "",
sex: 1,
age: ""
});
common_vendor.onMounted(() => {
loadUserInfo();
});
const loadUserInfo = async () => {
loading.value = true;
try {
const res = await proxy.apiUrl({
url: "/api/user/info",
method: "GET",
data: {}
});
if (res.code === 1) {
const userInfo = res.data;
formData.value = {
avatar: userInfo.avatar || "",
patient_name: userInfo.patient_name || userInfo.nickname || "",
phone: userInfo.phone || "",
nickname: userInfo.nickname || "",
sex: userInfo.sex == "男" ? 1 : 2,
age: userInfo.age || ""
};
} else {
common_vendor.index.showToast({ title: res.msg || "加载失败", icon: "none" });
}
} catch (err) {
common_vendor.index.__f__("error", "at pages/user/userinfo.vue:142", "加载用户信息失败:", err);
common_vendor.index.showToast({ title: "加载失败", icon: "none" });
} finally {
loading.value = false;
}
};
const uploadAvatar = () => {
common_vendor.index.chooseImage({
count: 1,
sizeType: ["compressed"],
sourceType: ["album", "camera"],
success: async (res) => {
const tempFilePath = res.tempFilePaths[0];
try {
common_vendor.index.showLoading({ title: "上传中..." });
const token = common_vendor.index.getStorageSync("token");
const uploadRes = await new Promise((resolve, reject) => {
common_vendor.index.uploadFile({
url: $url + "/api/upload/image",
filePath: tempFilePath,
name: "file",
header: {
token,
"content-type": "multipart/form-data"
},
success: (res2) => {
const data = JSON.parse(res2.data);
resolve(data);
},
fail: (err) => {
reject(err);
}
});
});
common_vendor.index.hideLoading();
if (uploadRes.code === 1) {
formData.value.avatar = uploadRes.data.uri || uploadRes.data;
common_vendor.index.showToast({ title: "头像上传成功", icon: "success" });
} else {
common_vendor.index.showToast({ title: uploadRes.msg || "上传失败", icon: "none" });
}
} catch (err) {
common_vendor.index.hideLoading();
common_vendor.index.__f__("error", "at pages/user/userinfo.vue:195", "上传头像失败:", err);
common_vendor.index.showToast({ title: "上传失败", icon: "none" });
}
},
fail: (err) => {
common_vendor.index.__f__("error", "at pages/user/userinfo.vue:200", "选择图片失败:", err);
common_vendor.index.showToast({ title: "选择图片失败", icon: "none" });
}
});
};
const validatePhone = (phone) => {
if (!phone)
return true;
return /^1[3-9]\d{9}$/.test(phone);
};
const submitForm = async () => {
if (!formData.value.patient_name) {
common_vendor.index.showToast({ title: "姓名不能为空", icon: "none" });
return;
}
if (formData.value.phone && !validatePhone(formData.value.phone)) {
common_vendor.index.showToast({ title: "手机号格式不正确", icon: "none" });
return;
}
submitting.value = true;
try {
const res = await proxy.apiUrl({
url: "/api/user/setInfo",
method: "POST",
data: {
avatar: formData.value.avatar,
phone: formData.value.phone,
nickname: formData.value.nickname,
sex: formData.value.sex,
age: formData.value.age,
patient_name: formData.value.patient_name
}
});
if (res.code === 1) {
const userData = common_vendor.index.getStorageSync("userData");
const updatedData = {
...userData,
avatar: formData.value.avatar,
phone: formData.value.phone,
nickname: formData.value.nickname,
sex: formData.value.sex,
age: formData.value.age,
patient_name: formData.value.patient_name,
diagnosis: {
...userData.diagnosis,
patient_name: formData.value.patient_name
}
};
common_vendor.index.setStorageSync("userData", updatedData);
common_vendor.index.showToast({ title: "保存成功", icon: "success" });
setTimeout(() => {
common_vendor.index.navigateBack();
}, 1500);
} else {
common_vendor.index.showToast({ title: res.msg || "保存失败", icon: "none" });
}
} catch (err) {
common_vendor.index.__f__("error", "at pages/user/userinfo.vue:269", "保存失败:", err);
common_vendor.index.showToast({ title: "保存失败", icon: "none" });
} finally {
submitting.value = false;
}
};
return (_ctx, _cache) => {
return common_vendor.e({
a: loading.value
}, loading.value ? {} : {
b: formData.value.avatar,
c: common_vendor.p({
type: "upload-filled",
size: "24",
color: "#FFA500"
}),
d: common_vendor.o(uploadAvatar, "bf"),
e: formData.value.nickname,
f: common_vendor.o(($event) => formData.value.nickname = $event.detail.value, "6d"),
g: formData.value.sex === 1 ? 1 : "",
h: common_vendor.o(($event) => formData.value.sex = 1, "e9"),
i: formData.value.sex === 2 ? 1 : "",
j: common_vendor.o(($event) => formData.value.sex = 2, "53"),
k: formData.value.age,
l: common_vendor.o(common_vendor.m(($event) => formData.value.age = $event.detail.value, {
number: true
}), "cf"),
m: common_vendor.t(submitting.value ? "保存中..." : "保存修改"),
n: common_vendor.o(submitForm, "84"),
o: submitting.value
});
};
}
};
const MiniProgramPage = /* @__PURE__ */ common_vendor._export_sfc(_sfc_main, [["__scopeId", "data-v-103261b1"]]);
wx.createPage(MiniProgramPage);
//# sourceMappingURL=../../../.sourcemap/mp-weixin/pages/user/userinfo.js.map
@@ -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-103261b1"><view wx:if="{{a}}" class="loading-state data-v-103261b1"><text class="data-v-103261b1">加载中...</text></view><view wx:else class="form-wrapper data-v-103261b1"><view class="form-section data-v-103261b1"><view class="form-group data-v-103261b1"><text class="form-label data-v-103261b1">头像</text><view class="avatar-container data-v-103261b1"><image src="{{b}}" class="avatar-image data-v-103261b1" mode="aspectFill"/><view class="avatar-upload data-v-103261b1" bindtap="{{d}}"><uni-icons wx:if="{{c}}" class="upload-icon data-v-103261b1" u-i="103261b1-0" bind:__l="__l" u-p="{{c}}"></uni-icons><text class="upload-text data-v-103261b1">更换头像</text></view></view></view></view><view class="form-section data-v-103261b1"><text class="section-title data-v-103261b1">基本信息</text><view class="form-group data-v-103261b1"><text class="form-label data-v-103261b1">昵称</text><input class="form-input data-v-103261b1" placeholder="请输入昵称" maxlength="50" value="{{e}}" bindinput="{{f}}"/></view><view class="form-group data-v-103261b1"><text class="form-label data-v-103261b1">性别</text><view class="sex-group data-v-103261b1"><view class="{{['sex-btn', 'data-v-103261b1', g && 'active']}}" bindtap="{{h}}"> 男 </view><view class="{{['sex-btn', 'data-v-103261b1', i && 'active']}}" bindtap="{{j}}"> 女 </view></view></view><view class="form-group data-v-103261b1"><text class="form-label data-v-103261b1">年龄</text><input class="form-input data-v-103261b1" type="number" placeholder="请输入年龄" min="0" max="150" value="{{k}}" bindinput="{{l}}"/></view></view><view class="button-group data-v-103261b1"><button class="btn btn-submit data-v-103261b1" bindtap="{{n}}" disabled="{{o}}">{{m}}</button></view></view></view>
@@ -0,0 +1,188 @@
/* 适老化设计:50-80岁 - 大字号、高对比、大触控区 */
.userinfo-container.data-v-103261b1 {
min-height: 100vh;
background: #e8eaed;
}
.header.data-v-103261b1 {
display: flex;
justify-content: space-between;
align-items: center;
background: #ffffff;
padding: 24rpx 40rpx;
box-shadow: 0 2rpx 12rpx rgba(0, 0, 0, 0.06);
}
.header-back.data-v-103261b1 {
font-size: 48rpx;
color: #FFA500;
width: 88rpx;
height: 88rpx;
display: flex;
align-items: center;
justify-content: center;
}
.header-title.data-v-103261b1 {
font-size: 44rpx;
font-weight: bold;
color: #1a1a1a;
flex: 1;
text-align: center;
}
.header-placeholder.data-v-103261b1 {
width: 88rpx;
}
.loading-state.data-v-103261b1 {
display: flex;
justify-content: center;
align-items: center;
height: 100vh;
font-size: 36rpx;
color: #555;
}
.form-wrapper.data-v-103261b1 {
padding: 40rpx;
}
.form-section.data-v-103261b1 {
background: #ffffff;
border-radius: 24rpx;
padding: 40rpx;
margin-bottom: 36rpx;
box-shadow: 0 4rpx 16rpx rgba(0, 0, 0, 0.06);
}
.section-title.data-v-103261b1 {
font-size: 40rpx;
font-weight: bold;
color: #FFA500;
margin-bottom: 32rpx;
display: block;
padding-bottom: 24rpx;
border-bottom: 4rpx solid #f0f0f0;
}
.form-group.data-v-103261b1 {
margin-bottom: 36rpx;
}
.form-group.data-v-103261b1:last-child {
margin-bottom: 0;
}
.form-label.data-v-103261b1 {
display: block;
font-size: 36rpx;
color: #1a1a1a;
font-weight: 500;
margin-bottom: 20rpx;
line-height: 1.6;
}
.form-input.data-v-103261b1 {
width: 100%;
padding: 28rpx;
border: 4rpx solid #e0e0e0;
border-radius: 16rpx;
font-size: 36rpx;
line-height: 1.6;
color: #1a1a1a;
background: #ffffff;
box-sizing: border-box;
display: block;
height: auto;
min-height: 96rpx;
}
.form-input.data-v-103261b1::-webkit-input-placeholder {
color: #999;
font-size: 34rpx;
}
.form-input.data-v-103261b1::placeholder {
color: #999;
font-size: 34rpx;
}
.avatar-container.data-v-103261b1 {
display: flex;
align-items: center;
gap: 32rpx;
}
.avatar-image.data-v-103261b1 {
width: 160rpx;
height: 160rpx;
border-radius: 80rpx;
background: #f0f0f0;
border: 4rpx solid #e0e0e0;
}
.avatar-upload.data-v-103261b1 {
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-103261b1 {
font-size: 56rpx;
}
.upload-text.data-v-103261b1 {
font-size: 34rpx;
color: #FFA500;
font-weight: 500;
}
.sex-group.data-v-103261b1 {
display: flex;
gap: 28rpx;
}
.sex-btn.data-v-103261b1 {
flex: 1;
padding: 32rpx;
border: 4rpx solid #e0e0e0;
border-radius: 16rpx;
text-align: center;
font-size: 38rpx;
line-height: 1.5;
color: #555;
background: #ffffff;
transition: all 0.3s;
display: flex;
align-items: center;
justify-content: center;
min-height: 96rpx;
}
.sex-btn.active.data-v-103261b1 {
border-color: #FFA500;
background: #fff7e6;
color: #FFA500;
font-weight: bold;
}
.button-group.data-v-103261b1 {
display: flex;
gap: 28rpx;
margin-top: 56rpx;
margin-bottom: 56rpx;
}
.btn.data-v-103261b1 {
flex: 1;
padding: 36rpx;
border-radius: 20rpx;
font-size: 40rpx;
font-weight: bold;
border: none;
cursor: pointer;
transition: all 0.3s;
min-height: 100rpx;
}
.btn.data-v-103261b1:active {
transform: scale(0.98);
}
.btn.data-v-103261b1:disabled {
opacity: 0.6;
cursor: not-allowed;
}
.btn-cancel.data-v-103261b1 {
background: #f0f0f0;
color: #555;
}
.btn-submit.data-v-103261b1 {
background: #FFA500;
color: #ffffff;
}
.btn-submit.data-v-103261b1:active:not(:disabled) {
background: #e69500;
}