feat(app): 启用Expo Updates自动更新功能,优化医疗记录上传流程与API集成

This commit is contained in:
richarjiang
2025-12-05 16:09:09 +08:00
parent 3d08721474
commit 74b49efe23
10 changed files with 279 additions and 32 deletions

View File

@@ -1,6 +1,7 @@
import { MedicalRecordCard } from '@/components/health/MedicalRecordCard';
import { palette } from '@/constants/Colors';
import { useAppDispatch, useAppSelector } from '@/hooks/redux';
import { useCosUpload } from '@/hooks/useCosUpload';
import { MedicalRecordItem, MedicalRecordType } from '@/services/healthProfile';
import {
addNewMedicalRecord,
@@ -38,6 +39,11 @@ export function MedicalRecordsTab() {
const prescriptions = medicalRecords?.prescriptions || [];
const isLoading = useAppSelector(selectHealthLoading);
// COS 上传
const { upload: uploadToCos, uploading: isUploading } = useCosUpload({
prefix: 'images/health/medical-records'
});
const [activeTab, setActiveTab] = useState<MedicalRecordType>('medical_record');
const [isModalVisible, setModalVisible] = useState(false);
const [isDatePickerVisible, setDatePickerVisibility] = useState(false);
@@ -139,16 +145,29 @@ export function MedicalRecordsTab() {
setIsSubmitting(true);
try {
// 1. 上传所有图片到 COS
const uploadPromises = images.map(async (uri) => {
const result = await uploadToCos({ uri });
return result.url;
});
const uploadedUrls = await Promise.all(uploadPromises);
// 2. 创建就医资料记录
await dispatch(addNewMedicalRecord({
type: activeTab,
title,
title: title.trim(),
date: dayjs(date).format('YYYY-MM-DD'),
images,
note,
images: uploadedUrls,
note: note.trim() || undefined,
})).unwrap();
setModalVisible(false);
} catch (error) {
Alert.alert('错误', '保存失败,请重试');
resetForm();
} catch (error: any) {
console.error('保存失败:', error);
const errorMessage = error?.message || '保存失败,请重试';
Alert.alert('错误', errorMessage);
} finally {
setIsSubmitting(false);
}
@@ -275,10 +294,10 @@ export function MedicalRecordsTab() {
</Text>
<TouchableOpacity
onPress={handleSubmit}
style={[styles.modalSaveButton, isSubmitting && styles.modalSaveButtonDisabled]}
disabled={isSubmitting}
style={[styles.modalSaveButton, (isSubmitting || isUploading) && styles.modalSaveButtonDisabled]}
disabled={isSubmitting || isUploading}
>
{isSubmitting ? (
{(isSubmitting || isUploading) ? (
<ActivityIndicator size="small" color="#FFFFFF" />
) : (
<Text style={styles.modalSaveText}></Text>